import {ClassFeatures} from "./classFeatures.js" // Namespace SW5e Configuration Values export const SW5E = {}; // ASCII Artwork SW5E.ASCII = ` ___________ ___________ / _____/ \\ / \\ ____/ ____ \\_____ \\\\ \\/\\/ /____ \\_/ __ \\ / \\\\ // \\ ___/ \\______ / \\__/\\ //______ /\\__ > \\/ \\/ \\/ \\/ `; /** * The set of Ability Scores used within the system * @type {Object} */ SW5E.abilities = { "str": "SW5E.AbilityStr", "dex": "SW5E.AbilityDex", "con": "SW5E.AbilityCon", "int": "SW5E.AbilityInt", "wis": "SW5E.AbilityWis", "cha": "SW5E.AbilityCha" }; SW5E.abilityAbbreviations = { "str": "SW5E.AbilityStrAbbr", "dex": "SW5E.AbilityDexAbbr", "con": "SW5E.AbilityConAbbr", "int": "SW5E.AbilityIntAbbr", "wis": "SW5E.AbilityWisAbbr", "cha": "SW5E.AbilityChaAbbr" }; /* -------------------------------------------- */ /** * Character alignment options * @type {Object} */ SW5E.alignments = { 'll': "SW5E.AlignmentLL", 'nl': "SW5E.AlignmentNL", 'cl': "SW5E.AlignmentCL", 'lb': "SW5E.AlignmentLB", 'bn': "SW5E.AlignmentBN", 'cb': "SW5E.AlignmentCB", 'ld': "SW5E.AlignmentLD", 'nd': "SW5E.AlignmentND", 'cd': "SW5E.AlignmentCD" }; /* -------------------------------------------- */ /** * An enumeration of item attunement types * @enum {number} */ SW5E.attunementTypes = { NONE: 0, REQUIRED: 1, ATTUNED: 2, }; /** * An enumeration of item attunement states * @type {{"0": string, "1": string, "2": string}} */ SW5E.attunements = { 0: "SW5E.AttunementNone", 1: "SW5E.AttunementRequired", 2: "SW5E.AttunementAttuned" }; /* -------------------------------------------- */ SW5E.weaponProficiencies = { "blp": "SW5E.WeaponBlasterPistolProficiency", "chk": "SW5E.WeaponChakramProficiency", "dbb": "SW5E.WeaponDoubleBladeProficiency", "dbs": "SW5E.WeaponDoubleSaberProficiency", "dsh": "SW5E.WeaponDoubleShotoProficiency", "dsw": "SW5E.WeaponDoubleSwordProficiency", "hid": "SW5E.WeaponHiddenBladeProficiency", "imp": "SW5E.WeaponImprovisedProficiency", "lfl": "SW5E.WeaponLightFoilProficiency", "lrg": "SW5E.WeaponLightRingProficiency", "mar": "SW5E.WeaponMartialProficiency", "mrb": "SW5E.WeaponMartialBlasterProficiency", "mlw": "SW5E.WeaponMartialLightweaponProficiency", "mvb": "SW5E.WeaponMartialVibroweaponProficiency", "ntl": "SW5E.WeaponNaturalProficiency", "swh": "SW5E.WeaponSaberWhipProficiency", "sim": "SW5E.WeaponSimpleProficiency", "smb": "SW5E.WeaponSimpleBlasterProficiency", "slw": "SW5E.WeaponSimpleLightweaponProficiency", "svb": "SW5E.WeaponSimpleVibroweaponProficiency", "tch": "SW5E.WeaponTechbladeProficiency", "vbr": "SW5E.WeaponVibrorapierProficiency", "vbw": "SW5E.WeaponVibrowhipProficiency" }; // TODO: Check to see if this can be used // It's not actually been used anywhere in DND5e 1.3.2 // Note name mapped to ID in compendium /** * The basic weapon types in 5e. This enables specific weapon proficiencies or * starting equipment provided by classes and backgrounds. * * @enum {string} SW5E.weaponIds = { "battleaxe": "I0WocDSuNpGJayPb", "blowgun": "wNWK6yJMHG9ANqQV", "club": "nfIRTECQIG81CvM4", "dagger": "0E565kQUBmndJ1a2", "dart": "3rCO8MTIdPGSW6IJ", "flail": "UrH3sMdnUDckIHJ6", "glaive": "rOG1OM2ihgPjOvFW", "greataxe": "1Lxk6kmoRhG8qQ0u", "greatclub": "QRCsxkCwWNwswL9o", "greatsword": "xMkP8BmFzElcsMaR", "halberd": "DMejWAc8r8YvDPP1", "handaxe": "eO7Fbv5WBk5zvGOc", "handcrossbow": "qaSro7kFhxD6INbZ", "heavycrossbow": "RmP0mYRn2J7K26rX", "javelin": "DWLMnODrnHn8IbAG", "lance": "RnuxdHUAIgxccVwj", "lightcrossbow": "ddWvQRLmnnIS0eLF", "lighthammer": "XVK6TOL4sGItssAE", "longbow": "3cymOVja8jXbzrdT", "longsword": "10ZP2Bu3vnCuYMIB", "mace": "Ajyq6nGwF7FtLhDQ", "maul": "DizirD7eqjh8n95A", "morningstar": "dX8AxCh9o0A9CkT3", "net": "aEiM49V8vWpWw7rU", "pike": "tC0kcqZT9HHAO0PD", "quarterstaff": "g2dWN7PQiMRYWzyk", "rapier": "Tobce1hexTnDk4sV", "scimitar": "fbC0Mg1a73wdFbqO", "shortsword": "osLzOwQdPtrK3rQH", "sickle": "i4NeNZ30ycwPDHMx", "spear": "OG4nBBydvmfWYXIk", "shortbow": "GJv6WkD7D2J6rP6M", "sling": "3gynWO9sN4OLGMWD", "trident": "F65ANO66ckP8FDMa", "warpick": "2YdfjN1PIIrSHZii", "warhammer": "F0Df164Xv1gWcYt0", "whip": "QKTyxoO0YDnAsbYe" }; */ /* -------------------------------------------- */ SW5E.toolProficiencies = { "armor": "SW5E.ToolArmormech", "arms": "SW5E.ToolArmstech", "arti": "SW5E.ToolArtificer", "art": "SW5E.ToolArtist", "astro": "SW5E.ToolAstrotech", "bio": "SW5E.ToolBiotech", "con": "SW5E.ToolConstructor", "cyb": "SW5E.ToolCybertech", "jew": "SW5E.ToolJeweler", "sur": "SW5E.ToolSurveyor", "syn": "SW5E.ToolSynthweaver", "tin": "SW5E.ToolTinker", "ant": "SW5E.ToolAntitoxkit", "arc": "SW5E.ToolArchaeologistKit", "aud": "SW5E.ToolAudiotechKit", "bioa": "SW5E.ToolBioanalysisKit", "brew": "SW5E.ToolBrewerKit", "chef": "SW5E.ToolChefKit", "demo": "SW5E.ToolDemolitionKit", "disg": "SW5E.ToolDisguiseKit", "forg": "SW5E.ToolForgeryKit", "mech": "SW5E.ToolMechanicKit", "game": "SW5E.ToolGamingSet", "poi": "SW5E.ToolPoisonKit", "scav": "SW5E.ToolScavengingKit", "secur": "SW5E.ToolSecurityKit", "slic": "SW5E.ToolSlicerKit", "spice": "SW5E.ToolSpiceKit", "music": "SW5E.ToolMusicalInstrument", "vehicle": "SW5E.ToolVehicle" }; // TODO: Same as weapon IDs // Also unused, and SW5E.toolProficiencies is already pretty verbose anyway /** * The basic tool types in 5e. This enables specific tool proficiencies or * starting equipment provided by classes and backgrounds. * * @enum {string} SW5E.toolIds = { "alchemist": "SztwZhbhZeCqyAes", "bagpipes": "yxHi57T5mmVt0oDr", "brewer": "Y9S75go1hLMXUD48", "calligrapher": "jhjo20QoiD5exf09", "card": "YwlHI3BVJapz4a3E", "carpenter": "8NS6MSOdXtUqD7Ib", "cartographer": "fC0lFK8P4RuhpfaU", "cobbler": "hM84pZnpCqKfi8XH", "cook": "Gflnp29aEv5Lc1ZM", "dice": "iBuTM09KD9IoM5L8", "disg": "IBhDAr7WkhWPYLVn", "drum": "69Dpr25pf4BjkHKb", "dulcimer": "NtdDkjmpdIMiX7I2", "flute": "eJOrPcAz9EcquyRQ", "forg": "cG3m4YlHfbQlLEOx", "glassblower": "rTbVrNcwApnuTz5E", "herb": "i89okN7GFTWHsvPy", "horn": "aa9KuBy4dst7WIW9", "jeweler": "YfBwELTgPFHmQdHh", "leatherworker": "PUMfwyVUbtyxgYbD", "lute": "qBydtUUIkv520DT7", "lyre": "EwG1EtmbgR3bM68U", "mason": "skUih6tBvcBbORzA", "navg": "YHCmjsiXxZ9UdUhU", "painter": "ccm5xlWhx74d6lsK", "panflute": "G5m5gYIx9VAUWC3J", "pois": "il2GNi8C0DvGLL9P", "potter": "hJS8yEVkqgJjwfWa", "shawm": "G3cqbejJpfB91VhP", "smith": "KndVe2insuctjIaj", "thief": "woWZ1sO5IUVGzo58", "tinker": "0d08g1i5WXnNrCNA", "viol": "baoe3U5BfMMMxhCU", "weaver": "ap9prThUB2y9lDyj", "woodcarver": "xKErqkLo4ASYr5EP", }; */ /* -------------------------------------------- */ /** * This Object defines the various lengths of time which can occur in SW5e * @type {Object} */ SW5E.timePeriods = { "inst": "SW5E.TimeInst", "turn": "SW5E.TimeTurn", "round": "SW5E.TimeRound", "minute": "SW5E.TimeMinute", "hour": "SW5E.TimeHour", "day": "SW5E.TimeDay", "month": "SW5E.TimeMonth", "year": "SW5E.TimeYear", "perm": "SW5E.TimePerm", "spec": "SW5E.Special" }; /* -------------------------------------------- */ /** * This describes the ways that an ability can be activated * @type {Object} */ SW5E.abilityActivationTypes = { "none": "SW5E.None", "action": "SW5E.Action", "bonus": "SW5E.BonusAction", "reaction": "SW5E.Reaction", "minute": SW5E.timePeriods.minute, "hour": SW5E.timePeriods.hour, "day": SW5E.timePeriods.day, "special": SW5E.timePeriods.spec, "legendary": "SW5E.LegAct", "lair": "SW5E.LairAct", "crew": "SW5E.VehicleCrewAction" }; /* -------------------------------------------- */ SW5E.abilityConsumptionTypes = { "ammo": "SW5E.ConsumeAmmunition", "attribute": "SW5E.ConsumeAttribute", "material": "SW5E.ConsumeMaterial", "charges": "SW5E.ConsumeCharges" }; /* -------------------------------------------- */ // Creature Sizes SW5E.actorSizes = { "tiny": "SW5E.SizeTiny", "sm": "SW5E.SizeSmall", "med": "SW5E.SizeMedium", "lg": "SW5E.SizeLarge", "huge": "SW5E.SizeHuge", "grg": "SW5E.SizeGargantuan" }; SW5E.tokenSizes = { "tiny": 1, "sm": 1, "med": 1, "lg": 2, "huge": 3, "grg": 4 }; /** * Colors used to visualize temporary and temporary maximum HP in token health bars * @enum {number} */ SW5E.tokenHPColors = { temp: 0x66CCFF, tempmax: 0x440066, negmax: 0x550000 } /* -------------------------------------------- */ /** * Creature types * @type {Object} */ SW5E.creatureTypes = { "aberration": "SW5E.CreatureAberration", "beast": "SW5E.CreatureBeast", "construct": "SW5E.CreatureConstruct", "droid": "SW5E.CreatureDroid", "force": "SW5E.CreatureForceEntity", "humanoid": "SW5E.CreatureHumanoid", "plant": "SW5E.CreaturePlant", "undead": "SW5E.CreatureUndead" }; /* -------------------------------------------- */ /** * Classification types for item action types * @type {Object} */ SW5E.itemActionTypes = { "mwak": "SW5E.ActionMWAK", "rwak": "SW5E.ActionRWAK", "mpak": "SW5E.ActionMPAK", "rpak": "SW5E.ActionRPAK", "save": "SW5E.ActionSave", "heal": "SW5E.ActionHeal", "abil": "SW5E.ActionAbil", "util": "SW5E.ActionUtil", "other": "SW5E.ActionOther" }; /* -------------------------------------------- */ SW5E.itemCapacityTypes = { "items": "SW5E.ItemContainerCapacityItems", "weight": "SW5E.ItemContainerCapacityWeight" }; /* -------------------------------------------- */ /** * Enumerate the lengths of time over which an item can have limited use ability * @type {Object} */ SW5E.limitedUsePeriods = { "sr": "SW5E.ShortRest", "lr": "SW5E.LongRest", "day": "SW5E.Day", "charges": "SW5E.Charges", "recharge": "SW5E.Recharge", "refitting": "SW5E.Refitting" }; /* -------------------------------------------- */ /** * The set of equipment types for armor, clothing, and other objects which can be worn by the character * @type {Object} */ SW5E.equipmentTypes = { "light": "SW5E.EquipmentLight", "medium": "SW5E.EquipmentMedium", "heavy": "SW5E.EquipmentHeavy", "hyper": "SW5E.EquipmentHyperdrive", "bonus": "SW5E.EquipmentBonus", "natural": "SW5E.EquipmentNatural", "powerc": "SW5E.EquipmentPowerCoupling", "reactor": "SW5E.EquipmentReactor", "shield": "SW5E.EquipmentShield", "clothing": "SW5E.EquipmentClothing", "trinket": "SW5E.EquipmentTrinket", "ssarmor": "SW5E.EquipmentStarshipArmor", "ssshield": "SW5E.EquipmentStarshipShield", "vehicle": "SW5E.EquipmentVehicle" }; /* -------------------------------------------- */ /** * The set of Armor Proficiencies which a character may have * @type {Object} */ SW5E.armorProficiencies = { "lgt": SW5E.equipmentTypes.light, "med": SW5E.equipmentTypes.medium, "hvy": SW5E.equipmentTypes.heavy, "shl": "SW5E.EquipmentShieldProficiency" }; /* -------------------------------------------- */ /** * Enumerate the valid consumable types which are recognized by the system * @type {Object} */ SW5E.consumableTypes = { "adrenal": "SW5E.ConsumableAdrenal", "poison": "SW5E.ConsumablePoison", "explosive": "SW5E.ConsumableExplosive", "food": "SW5E.ConsumableFood", "medpac": "SW5E.ConsumableMedpac", "technology": "SW5E.ConsumableTechnology", "ammo": "SW5E.ConsumableAmmunition", "trinket": "SW5E.ConsumableTrinket", "force": "SW5E.ConsumableForce", "tech": "SW5E.ConsumableTech" }; /* -------------------------------------------- */ /** * The valid currency denominations supported by the 5e system * @type {Object} */ SW5E.currencies = { "CR": "SW5E.CurrencyCR", }; /* -------------------------------------------- */ // Damage Types SW5E.damageTypes = { "acid": "SW5E.DamageAcid", "cold": "SW5E.DamageCold", "energy": "SW5E.DamageEnergy", "fire": "SW5E.DamageFire", "force": "SW5E.DamageForce", "ion": "SW5E.DamageIon", "kinetic": "SW5E.DamageKinetic", "lightning": "SW5E.DamageLightning", "necrotic": "SW5E.DamageNecrotic", "poison": "SW5E.DamagePoison", "psychic": "SW5E.DamagePsychic", "sonic": "SW5E.DamageSonic" }; // Damage Resistance Types SW5E.damageResistanceTypes = foundry.utils.deepClone(SW5E.damageTypes); /* -------------------------------------------- */ // armor Types SW5E.armorPropertiesTypes = { "Absorptive": "SW5E.ArmorProperAbsorptive", "Agile": "SW5E.ArmorProperAgile", "Anchor": "SW5E.ArmorProperAnchor", "Avoidant": "SW5E.ArmorProperAvoidant", "Barbed": "SW5E.ArmorProperBarbed", "Bulky": "SW5E.ArmorProperBulky", "Charging": "SW5E.ArmorProperCharging", "Concealing": "SW5E.ArmorProperConcealing", "Cumbersome": "SW5E.ArmorProperCumbersome", "Gauntleted": "SW5E.ArmorProperGauntleted", "Imbalanced": "SW5E.ArmorProperImbalanced", "Impermeable": "SW5E.ArmorProperImpermeable", "Insulated": "SW5E.ArmorProperInsulated", "Interlocking": "SW5E.ArmorProperInterlocking", "Lambent": "SW5E.ArmorProperLambent", "Lightweight": "SW5E.ArmorProperLightweight", "Magnetic": "SW5E.ArmorProperMagnetic", "Obscured": "SW5E.ArmorProperObscured", "Obtrusive": "SW5E.ArmorProperObtrusive", "Powered": "SW5E.ArmorProperPowered", "Reactive": "SW5E.ArmorProperReactive", "Regulated": "SW5E.ArmorProperRegulated", "Reinforced": "SW5E.ArmorProperReinforced", "Responsive": "SW5E.ArmorProperResponsive", "Rigid": "SW5E.ArmorProperRigid", "Silent": "SW5E.ArmorProperSilent", "Spiked": "SW5E.ArmorProperSpiked", "Strength": "SW5E.ArmorProperStrength", "Steadfast": "SW5E.ArmorProperSteadfast", "Versatile": "SW5E.ArmorProperVersatile" }; /** * The valid units of measure for movement distances in the game system. * By default this uses the imperial units of feet and miles. * @type {Object} */ SW5E.movementTypes = { "burrow": "SW5E.MovementBurrow", "climb": "SW5E.MovementClimb", "crawl": "SW5E.MovementCrawl", "fly": "SW5E.MovementFly", "roll": "SW5E.MovementRoll", "space": "SW5E.MovementSpace", "swim": "SW5E.MovementSwim", "turn": "SW5E.MovementTurn", "walk": "SW5E.MovementWalk", }; /** * The valid units of measure for movement distances in the game system. * By default this uses the imperial units of feet and miles. * @type {Object} */ SW5E.movementUnits = { "ft": "SW5E.DistFt", "mi": "SW5E.DistMi" }; /** * The valid units of measure for the range of an action or effect. * This object automatically includes the movement units from SW5E.movementUnits * @type {Object} */ SW5E.distanceUnits = { "none": "SW5E.None", "self": "SW5E.DistSelf", "touch": "SW5E.DistTouch", "spec": "SW5E.Special", "any": "SW5E.DistAny" }; for ( let [k, v] of Object.entries(SW5E.movementUnits) ) { SW5E.distanceUnits[k] = v; } /* -------------------------------------------- */ /** * Configure aspects of encumbrance calculation so that it could be configured by modules * @type {Object} */ SW5E.encumbrance = { currencyPerWeight: 50, strMultiplier: 15, vehicleWeightMultiplier: 2000 // 2000 lbs in a ton }; /* -------------------------------------------- */ /** * This Object defines the types of single or area targets which can be applied in SW5e * @type {Object} */ SW5E.targetTypes = { "none": "SW5E.None", "self": "SW5E.TargetSelf", "creature": "SW5E.TargetCreature", "droid": "SW5E.TargetDroid", "ally": "SW5E.TargetAlly", "enemy": "SW5E.TargetEnemy", "object": "SW5E.TargetObject", "space": "SW5E.TargetSpace", "radius": "SW5E.TargetRadius", "sphere": "SW5E.TargetSphere", "cylinder": "SW5E.TargetCylinder", "cone": "SW5E.TargetCone", "square": "SW5E.TargetSquare", "cube": "SW5E.TargetCube", "line": "SW5E.TargetLine", "starship": "SW5E.TargetStarship", "wall": "SW5E.TargetWall", "weapon": "SW5E.TargetWeapon" }; /* -------------------------------------------- */ /** * Map the subset of target types which produce a template area of effect * The keys are SW5E target types and the values are MeasuredTemplate shape types * @type {Object} */ SW5E.areaTargetTypes = { cone: "cone", cube: "rect", cylinder: "circle", line: "ray", radius: "circle", sphere: "circle", square: "rect", wall: "ray" }; /* -------------------------------------------- */ // Healing Types SW5E.healingTypes = { "healing": "SW5E.Healing", "temphp": "SW5E.HealingTemp" }; /* -------------------------------------------- */ /** * Enumerate the denominations of hit dice which can apply to classes in the SW5E system * @type {string[]} */ SW5E.hitDieTypes = ["d4", "d6", "d8", "d10", "d12", "d20"]; /* -------------------------------------------- */ /** * Enumerate the denominations of power dice which can apply to starships in the SW5E system * @enum {string} */ SW5E.powerDieTypes = [1, "d4", "d6", "d8", "d10", "d12"]; /* -------------------------------------------- */ /** * Enumerate the base stat and feature settings for starships based on size. * @type {Array.} */ SW5E.baseStarshipSettings = { "tiny": {"changes":[{"key":"data.abilities.dex.value","value":4,"mode":2,"priority":20},{"key":"data.abilities.dex.proficient","value":1,"mode":4,"priority":20}, {"key":"data.abilities.con.value","value":-4,"mode":2,"priority":20}, {"key":"data.abilities.int.proficient","value":1,"mode":4,"priority":20}], "attributes":{"crewcap":null, "hd":"1d4", "hp":{"value":4, "max":4, "temp":4, "tempmax":4}, "hsm":1, "sd":"1d4", "mods":{"open":10, "max":10}, "suites":{"open":0, "max":0}, "movement":{"fly":300, "turn":300}}}, "sm": {"changes":[{"key":"data.abilities.dex.value","value":2,"mode":2,"priority":20},{"key":"data.abilities.dex.proficient","value":1,"mode":4,"priority":20},{"key":"data.abilities.con.value","value":-2,"mode":2,"priority":20},{"key":"data.abilities.str.proficient","value":1,"mode":4,"priority":20}], "attributes":{"crewcap":1, "hd":"3d6", "hp":{"value":6, "max":6, "temp":6, "tempmax":6}, "hsm":2, "sd":"3d6", "mods":{"open":20, "max":20}, "suites":{"open":-1, "max":-1}, "movement":{"fly":300, "turn":250}}}, "med": {"attributes":{"crewcap":1, "hd":"5d8", "hp":{"value":8, "max":8, "temp":8, "tempmax":8}, "hsm":3, "sd":"5d8", "mods":{"open":30, "max":30}, "suites":{"open":3, "max":3}, "movement":{"fly":300, "turn":200}}}, "lg": {"changes":[{"key":"data.abilities.dex.value","value":-2,"mode":2,"priority":20},{"key":"data.abilities.wis.proficient","value":1,"mode":4,"priority":20},{"key":"data.abilities.con.value","value":2,"mode":2,"priority":20}], "attributes":{"crewcap":200, "hd":"7d10", "hp":{"value":10, "max":10, "temp":10, "tempmax":10}, "hsm":4, "sd":"7d10", "mods":{"open":50, "max":50}, "suites":{"open":3, "max":3}, "movement":{"fly":300, "turn":150}}}, "huge": {"changes":[{"key":"data.abilities.dex.value","value":-4,"mode":2,"priority":20},{"key":"data.abilities.wis.proficient","value":1,"mode":4,"priority":20},{"key":"data.abilities.con.value","value":4,"mode":2,"priority":20}], "attributes":{"crewcap":4000, "hd":"9d12", "hp":{"value":12, "max":12, "temp":12, "tempmax":12}, "hsm":2, "sd":"9d12", "mods":{"open":60, "max":60}, "suites":{"open":6, "max":6}, "movement":{"fly":300, "turn":100}}}, "grg": {"changes":[{"key":"data.abilities.dex.value","value":-6,"mode":2,"priority":20},{"key":"data.abilities.wis.proficient","value":1,"mode":4,"priority":20},{"key":"data.abilities.con.value","value":6,"mode":2,"priority":20}], "attributes":{"crewcap":80000, "hd":"11d20", "hp":{"value":20, "max":20, "temp":20, "tempmax":20}, "hsm":3, "sd":"11d20", "mods":{"open":70, "max":70}, "suites":{"open":10, "max":10}, "movement":{"fly":300, "turn":50}}} } /* -------------------------------------------- */ /** * The set of starship roles which can be selected in SW5e * @type {Object} */ SW5E.starshipRolestiny = { }; SW5E.starshipRolessm = { "bmbr": "SW5E.StarshipBomber", "intc": "SW5E.StarshipInterceptor", "scout": "SW5E.StarshipScout", "scrm": "SW5E.StarshipScrambler", "shtl": "SW5E.StarshipShuttle", "strf": "SW5E.StarshipStrikeFighter" }; SW5E.starshipRolesmed = { "cour": "SW5E.StarshipCourier", "frtr": "SW5E.StarshipFreighter", "gnbt": "SW5E.StarshipGunboat", "msbt": "SW5E.StarshipMissileBoat", "nvgt": "SW5E.StarshipNavigator", "yacht": "SW5E.StarshipYacht" }; SW5E.starshipRoleslg = { "ambd": "SW5E.StarshipAmbassador", "corv": "SW5E.StarshipCorvette", "crui": "SW5E.StarshipCruiser", "expl": "SW5E.StarshipExplorer", "pics": "SW5E.StarshipPicketShip", "shtd": "SW5E.StarshipShipsTender" }; SW5E.starshipRoleshuge = { "btls": "SW5E.StarshipBattleship", "carr": "SW5E.StarshipCarrier", "colo": "SW5E.StarshipColonizer", "cmds": "SW5E.StarshipCommandShip", "intd": "SW5E.StarshipInterdictor", "jugg": "SW5E.StarshipJuggernaut" }; SW5E.starshipRolesgrg = { "blks": "SW5E.StarshipBlockadeShip", "flgs": "SW5E.StarshipFlagship", "inct": "SW5E.StarshipIndustrialCenter", "mbmt": "SW5E.StarshipMobileMetropolis", "rsrc": "SW5E.StarshipResearcher", "wars": "SW5E.StarshipWarship" }; /* -------------------------------------------- */ /** * The set of starship role bonuses to starships which can be selected in SW5e * @type {Object} */ SW5E.starshipRoleBonuses = { "bmbr": {"changes":[{"key":"data.abilities.wis.value","value":1,"mode":2,"priority":20}]}, "intc": {"changes":[{"key":"data.abilities.dex.value","value":1,"mode":2,"priority":20}]}, "scout": {"changes":[{"key":"data.abilities.int.value","value":1,"mode":2,"priority":20}]}, "scrm": {"changes":[{"key":"data.abilities.cha.value","value":1,"mode":2,"priority":20}]}, "shtl": {"changes":[{"key":"data.abilities.con.value","value":1,"mode":2,"priority":20}]}, "strf": {"changes":[{"key":"data.abilities.str.value","value":1,"mode":2,"priority":20}]}, "cour": {"changes":[{"key":"data.abilities.dex.value","value":1,"mode":2,"priority":20}]}, "frtr": {"changes":[{"key":"data.abilities.con.value","value":1,"mode":2,"priority":20}]}, "gnbt": {"changes":[{"key":"data.abilities.str.value","value":1,"mode":2,"priority":20}]}, "msbt": {"changes":[{"key":"data.abilities.wis.value","value":1,"mode":2,"priority":20}]}, "nvgt": {"changes":[{"key":"data.abilities.int.value","value":1,"mode":2,"priority":20}]}, "yacht": {"changes":[{"key":"data.abilities.cha.value","value":1,"mode":2,"priority":20}]}, "ambd": {"changes":[{"key":"data.abilities.cha.value","value":1,"mode":2,"priority":20},{"key":"data.abilities.con.value","value":1,"mode":2,"priority":20}]}, "corv": {"changes":[{"key":"data.abilities.str.value","value":1,"mode":2,"priority":20},{"key":"data.abilities.dex.value","value":1,"mode":2,"priority":20}]}, "crui": {"changes":[{"key":"data.abilities.wis.value","value":1,"mode":2,"priority":20},{"key":"data.abilities.str.value","value":1,"mode":2,"priority":20}]}, "expl": {"changes":[{"key":"data.abilities.dex.value","value":1,"mode":2,"priority":20},{"key":"data.abilities.int.value","value":1,"mode":2,"priority":20}]}, "pics": {"changes":[{"key":"data.abilities.dex.value","value":1,"mode":2,"priority":20},{"key":"data.abilities.wis.value","value":1,"mode":2,"priority":20}]}, "shtd": {"changes":[{"key":"data.abilities.con.value","value":1,"mode":2,"priority":20},{"key":"data.abilities.str.value","value":1,"mode":2,"priority":20}]}, "btls": {"changes":[{"key":"data.abilities.wis.value","value":1,"mode":2,"priority":20},{"key":"data.abilities.str.value","value":1,"mode":2,"priority":20}]}, "carr": {"changes":[{"key":"data.abilities.cha.value","value":1,"mode":2,"priority":20},{"key":"data.abilities.int.value","value":1,"mode":2,"priority":20}]}, "colo": {"changes":[{"key":"data.abilities.con.value","value":1,"mode":2,"priority":20},{"key":"data.abilities.int.value","value":1,"mode":2,"priority":20}]}, "cmds": {"changes":[{"key":"data.abilities.cha.value","value":1,"mode":2,"priority":20},{"key":"data.abilities.wis.value","value":1,"mode":2,"priority":20}]}, "intd": {"changes":[{"key":"data.abilities.dex.value","value":1,"mode":2,"priority":20},{"key":"data.abilities.str.value","value":1,"mode":2,"priority":20}]}, "jugg": {"changes":[{"key":"data.abilities.con.value","value":1,"mode":2,"priority":20},{"key":"data.abilities.str.value","value":1,"mode":2,"priority":20}]}, "blks": {"changes":[{"key":"data.abilities.dex.value","value":1,"mode":2,"priority":20},{"key":"data.abilities.str.value","value":1,"mode":2,"priority":20}]}, "flgs": {"changes":[{"key":"data.abilities.cha.value","value":1,"mode":2,"priority":20},{"key":"data.abilities.wis.value","value":1,"mode":2,"priority":20}]}, "inct": {"changes":[{"key":"data.abilities.con.value","value":1,"mode":2,"priority":20},{"key":"data.abilities.str.value","value":1,"mode":2,"priority":20}]}, "mbmt": {"changes":[{"key":"data.abilities.con.value","value":1,"mode":2,"priority":20},{"key":"data.abilities.wis.value","value":1,"mode":2,"priority":20}]}, "rsrc": {"changes":[{"key":"data.abilities.int.value","value":1,"mode":2,"priority":20},{"key":"data.abilities.wis.value","value":1,"mode":2,"priority":20}]}, "wars": {"changes":[{"key":"data.abilities.wis.value","value":1,"mode":2,"priority":20},{"key":"data.abilities.str.value","value":1,"mode":2,"priority":20}]} }; /* -------------------------------------------- */ /** * The set of possible sensory perception types which an Actor may have * @type {object} */ SW5E.senses = { "blindsight": "SW5E.SenseBlindsight", "darkvision": "SW5E.SenseDarkvision", "tremorsense": "SW5E.SenseTremorsense", "truesight": "SW5E.SenseTruesight" }; /* -------------------------------------------- */ /** * The set of skill which can be trained in SW5e * @type {Object} */ SW5E.skills = { "acr": "SW5E.SkillAcr", "ani": "SW5E.SkillAni", "ath": "SW5E.SkillAth", "dec": "SW5E.SkillDec", "ins": "SW5E.SkillIns", "itm": "SW5E.SkillItm", "inv": "SW5E.SkillInv", "lor": "SW5E.SkillLor", "med": "SW5E.SkillMed", "nat": "SW5E.SkillNat", "prc": "SW5E.SkillPrc", "prf": "SW5E.SkillPrf", "per": "SW5E.SkillPer", "pil": "SW5E.SkillPil", "slt": "SW5E.SkillSlt", "ste": "SW5E.SkillSte", "sur": "SW5E.SkillSur", "tec": "SW5E.SkillTec" }; /* -------------------------------------------- */ /** * The set of starship skills which can be trained in SW5e * @type {Object} */ SW5E.starshipSkills = { "ast": "SW5E.StarshipSkillAst", "bst": "SW5E.StarshipSkillBst", "dat": "SW5E.StarshipSkillDat", "hid": "SW5E.StarshipSkillHid", "imp": "SW5E.StarshipSkillImp", "int": "SW5E.StarshipSkillInt", "man": "SW5E.StarshipSkillMan", "men": "SW5E.StarshipSkillMen", "pat": "SW5E.StarshipSkillPat", "prb": "SW5E.StarshipSkillPrb", "ram": "SW5E.StarshipSkillRam", "reg": "SW5E.StarshipSkillReg", "scn": "SW5E.StarshipSkillScn", "swn": "SW5E.StarshipSkillSwn" }; /* -------------------------------------------- */ SW5E.powerPreparationModes = { "prepared": "SW5E.PowerPrepPrepared", "always": "SW5E.PowerPrepAlways", "atwill": "SW5E.PowerPrepAtWill", "innate": "SW5E.PowerPrepInnate" }; SW5E.powerUpcastModes = ["always", "prepared"]; /** * The available choices for power progression for a character class * @type {Object} */ SW5E.powerProgression = { "none": "SW5E.PowerNone", "consular": "SW5E.PowerProgCns", "engineer": "SW5E.PowerProgEng", "guardian": "SW5E.PowerProgGrd", "scout": "SW5E.PowerProgSct", "sentinel": "SW5E.PowerProgSnt" }; /** * The max number of known powers available to each class per level */ SW5E.powersKnown = { "none": [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], "consular": [9,11,13,15,17,19,21,23,25,26,28,29,31,32,34,35,37,38,39,40], "engineer": [6,7,9,10,12,13,15,16,18,19,21,22,23,24,25,26,27,28,29,30], "guardian": [5,7,9,10,12,13,14,15,17,18,19,20,22,23,24,25,27,28,29,30], "scout": [0,4,5,6,7,8,9,10,12,13,14,15,16,17,18,19,20,21,22,23], "sentinel": [7,9,11,13,15,17,18,19,21,22,24,25,26,28,29,30,32,33,34,35] }; /** * The max number of powers cast for each power level per long rest */ SW5E.powerLimit = { "none": [0,0,0,0,0,0,0,0,0], "consular": [1000,1000,1000,1000,1000,1,1,1,1], "engineer": [1000,1000,1000,1000,1000,1,1,1,1], "guardian": [1000,1000,1000,1000,1,0,0,0,0], "scout": [1000,1000,1000,1,1,0,0,0,0], "sentinel": [1000,1000,1000,1000,1,1,1,0,0], "innate": [1000,1000,1000,1000,1000,1000,1000,1000,1000], "dual": [1000,1000,1000,1000,1000,1,1,1,1] }; /** * The max level of a known/overpowered power available to each class per level */ SW5E.powerMaxLevel = { "none": [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], "consular": [1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,9,9], "engineer": [1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,9,9], "guardian": [1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5], "scout": [0,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5], "sentinel": [1,1,2,2,2,3,3,3,4,4,5,5,5,6,6,6,7,7,7,7], "multi": [1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,9,9], "innate": [1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,9,9], "dual": [1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,9,9] }; /** * The number of base force/tech points available to each class per level */ SW5E.powerPoints = { "none": [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], "consular": [4,8,12,16,20,24,28,32,36,40,44,48,52,56,60,64,68,72,76,80], "engineer": [2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40], "guardian": [2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40], "scout": [0,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20], "sentinel": [3,6,9,12,15,18,21,24,27,30,33,36,39,42,45,48,51,54,57,60] }; /* -------------------------------------------- */ /** * The available choices for how power damage scaling may be computed * @type {Object} */ SW5E.powerScalingModes = { "none": "SW5E.PowerNone", "atwill": "SW5E.PowerAtWill", "level": "SW5E.PowerLevel" }; /* -------------------------------------------- */ /** * Define the set of types which a weapon item can take * @type {Object} */ SW5E.weaponTypes = { "ammo": "SW5E.WeaponAmmo", "improv": "SW5E.WeaponImprov", "martialVW": "SW5E.WeaponMartialVW", "martialB": "SW5E.WeaponMartialB", "martialLW": "SW5E.WeaponMartialLW", "natural": "SW5E.WeaponNatural", "siege": "SW5E.WeaponSiege", "simpleVW": "SW5E.WeaponSimpleVW", "simpleB": "SW5E.WeaponSimpleB", "simpleLW": "SW5E.WeaponSimpleLW", "primary (starship)": "SW5E.WeaponPrimarySW", "secondary (starship)": "SW5E.WeaponSecondarySW", "tertiary (starship)": "SW5E.WeaponTertiarySW", "quaternary (starship)": "SW5E.WeaponQuaternarySW" }; /* -------------------------------------------- */ /** * Define the set of weapon property flags which can exist on a weapon * @type {Object} */ SW5E.weaponProperties = { "amm": "SW5E.WeaponPropertiesAmm", "aut": "SW5E.WeaponPropertiesAut", "bur": "SW5E.WeaponPropertiesBur", "con": "SW5E.WeaponPropertiesCon", "def": "SW5E.WeaponPropertiesDef", "dex": "SW5E.WeaponPropertiesDex", "dir": "SW5E.WeaponPropertiesDir", "drm": "SW5E.WeaponPropertiesDrm", "dgd": "SW5E.WeaponPropertiesDgd", "dis": "SW5E.WeaponPropertiesDis", "dpt": "SW5E.WeaponPropertiesDpt", "dou": "SW5E.WeaponPropertiesDou", "exp": "SW5E.WeaponPropertiesExp", "fin": "SW5E.WeaponPropertiesFin", "fix": "SW5E.WeaponPropertiesFix", "foc": "SW5E.WeaponPropertiesFoc", "hvy": "SW5E.WeaponPropertiesHvy", "hid": "SW5E.WeaponPropertiesHid", "hom": "SW5E.WeaponPropertiesHom", "ion": "SW5E.WeaponPropertiesIon", "ken": "SW5E.WeaponPropertiesKen", "lgt": "SW5E.WeaponPropertiesLgt", "lum": "SW5E.WeaponPropertiesLum", "mlt": "SW5E.WeaponPropertiesMlt", "mig": "SW5E.WeaponPropertiesMig", "ovr": "SW5E.WeaponPropertiesOvr", "pic": "SW5E.WeaponPropertiesPic", "pow": "SW5E.WeaponPropertiesPow", "rap": "SW5E.WeaponPropertiesRap", "rch": "SW5E.WeaponPropertiesRch", "rel": "SW5E.WeaponPropertiesRel", "ret": "SW5E.WeaponPropertiesRet", "sat": "SW5E.WeaponPropertiesSat", "shk": "SW5E.WeaponPropertiesShk", "sil": "SW5E.WeaponPropertiesSil", "spc": "SW5E.WeaponPropertiesSpc", "str": "SW5E.WeaponPropertiesStr", "thr": "SW5E.WeaponPropertiesThr", "two": "SW5E.WeaponPropertiesTwo", "ver": "SW5E.WeaponPropertiesVer", "vic": "SW5E.WeaponPropertiesVic", "zon": "SW5E.WeaponPropertiesZon" }; /* -------------------------------------------- */ /** * Define the set of starship weapon size flags which can exist on a weapon * @type {Object} */ SW5E.weaponSizes = { "tiny": "SW5E.SizeTiny", "sm": "SW5E.SizeSmall", "med": "SW5E.SizeMedium", "lg": "SW5E.SizeLarge", "huge": "SW5E.SizeHuge", "grg": "SW5E.SizeGargantuan" }; // Power Components SW5E.powerComponents = { "V": "SW5E.ComponentVerbal", "S": "SW5E.ComponentSomatic", "M": "SW5E.ComponentMaterial" }; // Power Schools SW5E.powerSchools = { "lgt": "SW5E.SchoolLgt", "uni": "SW5E.SchoolUni", "drk": "SW5E.SchoolDrk", "tec": "SW5E.SchoolTec", "enh": "SW5E.SchoolEnh" }; // Power Levels SW5E.powerLevels = { 0: "SW5E.PowerLevel0", 1: "SW5E.PowerLevel1", 2: "SW5E.PowerLevel2", 3: "SW5E.PowerLevel3", 4: "SW5E.PowerLevel4", 5: "SW5E.PowerLevel5", 6: "SW5E.PowerLevel6", 7: "SW5E.PowerLevel7", 8: "SW5E.PowerLevel8", 9: "SW5E.PowerLevel9" }; // TODO: This is used for spell scrolls, it maps the level to the compendium ID of the item the spell would be bound to // We could use this with, say, holocrons to produce scrolls /* // Power Scroll Compendium UUIDs SW5E.powerScrollIds = { 0: "rQ6sO7HDWzqMhSI3", 1: "9GSfMg0VOA2b4uFN", 2: "XdDp6CKh9qEvPTuS", 3: "hqVKZie7x9w3Kqds", 4: "DM7hzgL836ZyUFB1", 5: "wa1VF8TXHmkrrR35", 6: "tI3rWx4bxefNCexS", 7: "mtyw4NS1s7j2EJaD", 8: "aOrinPg7yuDZEuWr", 9: "O4YbkJkLlnsgUszZ" }; */ /** * Compendium packs used for localized items. * @enum {string} */ SW5E.sourcePacks = { ITEMS: "sw5e.items" } // Polymorph options. SW5E.polymorphSettings = { keepPhysical: 'SW5E.PolymorphKeepPhysical', keepMental: 'SW5E.PolymorphKeepMental', keepSaves: 'SW5E.PolymorphKeepSaves', keepSkills: 'SW5E.PolymorphKeepSkills', mergeSaves: 'SW5E.PolymorphMergeSaves', mergeSkills: 'SW5E.PolymorphMergeSkills', keepClass: 'SW5E.PolymorphKeepClass', keepFeats: 'SW5E.PolymorphKeepFeats', keepPowers: 'SW5E.PolymorphKeepPowers', keepItems: 'SW5E.PolymorphKeepItems', keepBio: 'SW5E.PolymorphKeepBio', keepVision: 'SW5E.PolymorphKeepVision' }; /* -------------------------------------------- */ /** * Skill, ability, and tool proficiency levels * Each level provides a proficiency multiplier * @type {Object} */ SW5E.proficiencyLevels = { 0: "SW5E.NotProficient", 1: "SW5E.Proficient", 0.5: "SW5E.HalfProficient", 2: "SW5E.Expertise" }; /* -------------------------------------------- */ /** * The amount of cover provided by an object. * In cases where multiple pieces of cover are * in play, we take the highest value. */ SW5E.cover = { 0: 'SW5E.None', .5: 'SW5E.CoverHalf', .75: 'SW5E.CoverThreeQuarters', 1: 'SW5E.CoverTotal' }; /* -------------------------------------------- */ // Condition Types SW5E.conditionTypes = { "blinded": "SW5E.ConBlinded", "charmed": "SW5E.ConCharmed", "deafened": "SW5E.ConDeafened", "diseased": "SW5E.ConDiseased", "exhaustion": "SW5E.ConExhaustion", "frightened": "SW5E.ConFrightened", "grappled": "SW5E.ConGrappled", "incapacitated": "SW5E.ConIncapacitated", "invisible": "SW5E.ConInvisible", "paralyzed": "SW5E.ConParalyzed", "petrified": "SW5E.ConPetrified", "poisoned": "SW5E.ConPoisoned", "prone": "SW5E.ConProne", "restrained": "SW5E.ConRestrained", "shocked": "SW5E.ConShocked", "slowed": "SW5E.ConSlowed", "stunned": "SW5E.ConStunned", "unconscious": "SW5E.ConUnconscious" }; // Languages SW5E.languages = { "abyssin": "SW5E.LanguagesAbyssin", "aleena": "SW5E.LanguagesAleena", "antarian": "SW5E.LanguagesAntarian", "anzellan": "SW5E.LanguagesAnzellan", "aqualish": "SW5E.LanguagesAqualish", "arconese": "SW5E.LanguagesArconese", "ardennian": "SW5E.LanguagesArdennian", "arkanian": "SW5E.LanguagesArkanian", "balosur": "SW5E.LanguagesBalosur", "barabel": "SW5E.LanguagesBarabel", "basic": "SW5E.LanguagesBasic", "besalisk": "SW5E.LanguagesBesalisk", "binary": "SW5E.LanguagesBinary", "bith": "SW5E.LanguagesBith", "bocce": "SW5E.LanguagesBocce", "bothese": "SW5E.LanguagesBothese", "catharese": "SW5E.LanguagesCatharese", "cerean": "SW5E.LanguagesCerean", "chadra-fan": "SW5E.LanguagesChadra-Fan", "chagri": "SW5E.LanguagesChagri", "cheunh": "SW5E.LanguagesCheunh", "chevin": "SW5E.LanguagesChevin", "chironan": "SW5E.LanguagesChironan", "clawdite": "SW5E.LanguagesClawdite", "codruese": "SW5E.LanguagesCodruese", "colicoid": "SW5E.LanguagesColicoid", "dashadi": "SW5E.LanguagesDashadi", "defel": "SW5E.LanguagesDefel", "devaronese": "SW5E.LanguagesDevaronese", "dosh": "SW5E.LanguagesDosh", "draethos": "SW5E.LanguagesDraethos", "durese": "SW5E.LanguagesDurese", "dug": "SW5E.LanguagesDug", "ewokese": "SW5E.LanguagesEwokese", "falleen": "SW5E.LanguagesFalleen", "felucianese": "SW5E.LanguagesFelucianese", "gamorrese": "SW5E.LanguagesGamorrese", "gand": "SW5E.LanguagesGand", "geonosian": "SW5E.LanguagesGeonosian", "givin": "SW5E.LanguagesGivin", "gran": "SW5E.LanguagesGran", "gungan": "SW5E.LanguagesGungan", "hapan": "SW5E.LanguagesHapan", "harchese": "SW5E.LanguagesHarchese", "herglese": "SW5E.LanguagesHerglese", "honoghran": "SW5E.LanguagesHonoghran", "huttese": "SW5E.LanguagesHuttese", "iktotchese": "SW5E.LanguagesIktotchese", "ithorese": "SW5E.LanguagesIthorese", "jawaese": "SW5E.LanguagesJawaese", "kaleesh": "SW5E.LanguagesKaleesh", "kaminoan": "SW5E.LanguagesKaminoan", "karkaran": "SW5E.LanguagesKarkaran", "keldor": "SW5E.LanguagesKelDor", "kharan": "SW5E.LanguagesKharan", "killik": "SW5E.LanguagesKillik", "klatooinian": "SW5E.LanguagesKlatooinian", "kubazian": "SW5E.LanguagesKubazian", "kushiban": "SW5E.LanguagesKushiban", "kyuzo": "SW5E.LanguagesKyuzo", "lannik": "SW5E.LanguagesLannik", "lasat": "SW5E.LanguagesLasat", "lowickese": "SW5E.LanguagesLowickese", "lurmese": "SW5E.LanguagesLurmese", "mandoa": "SW5E.LanguagesMandoa", "miralukese": "SW5E.LanguagesMiralukese", "mirialan": "SW5E.LanguagesMirialan", "moncal": "SW5E.LanguagesMonCal", "mustafarian": "SW5E.LanguagesMustafarian", "muun": "SW5E.LanguagesMuun", "nautila": "SW5E.LanguagesNautila", "ortolan": "SW5E.LanguagesOrtolan", "pakpak": "SW5E.LanguagesPakPak", "pyke": "SW5E.LanguagesPyke", "quarrenese": "SW5E.LanguagesQuarrenese", "rakata": "SW5E.LanguagesRakata", "rattataki": "SW5E.LanguagesRattataki", "rishii": "SW5E.LanguagesRishii", "rodese": "SW5E.LanguagesRodese", "ryn": "SW5E.LanguagesRyn", "selkatha": "SW5E.LanguagesSelkatha", "semblan": "SW5E.LanguagesSemblan", "shistavanen": "SW5E.LanguagesShistavanen", "shyriiwook": "SW5E.LanguagesShyriiwook", "sith": "SW5E.LanguagesSith", "squibbian": "SW5E.LanguagesSquibbian", "sriluurian": "SW5E.LanguagesSriluurian", "ssi-ruuvi": "SW5E.LanguagesSsi-ruuvi", "sullustese": "SW5E.LanguagesSullustese", "talzzi": "SW5E.LanguagesTalzzi", "tarasinese": "SW5E.LanguagesTarasinese", "thisspiasian": "SW5E.LanguagesThisspiasian", "togorese": "SW5E.LanguagesTogorese", "togruti": "SW5E.LanguagesTogruti", "toydarian": "SW5E.LanguagesToydarian", "tusken": "SW5E.LanguagesTusken", "twi'leki": "SW5E.LanguagesTwileki", "ugnaught": "SW5E.LanguagesUgnaught", "umbaran": "SW5E.LanguagesUmbaran", "utapese": "SW5E.LanguagesUtapese", "verpine": "SW5E.LanguagesVerpine", "vong": "SW5E.LanguagesVong", "voss": "SW5E.LanguagesVoss", "yevethan": "SW5E.LanguagesYevethan", "zabraki": "SW5E.LanguagesZabraki", "zygerrian": "SW5E.LanguagesZygerrian" }; // Character Level XP Requirements SW5E.CHARACTER_EXP_LEVELS = [ 0, 300, 900, 2700, 6500, 14000, 23000, 34000, 48000, 64000, 85000, 100000, 120000, 140000, 165000, 195000, 225000, 265000, 305000, 355000] ; // Challenge Rating XP Levels SW5E.CR_EXP_LEVELS = [ 10, 200, 450, 700, 1100, 1800, 2300, 2900, 3900, 5000, 5900, 7200, 8400, 10000, 11500, 13000, 15000, 18000, 20000, 22000, 25000, 33000, 41000, 50000, 62000, 75000, 90000, 105000, 120000, 135000, 155000 ]; // Character Features Per Class And Level SW5E.classFeatures = ClassFeatures; // Configure Optional Character Flags SW5E.characterFlags = { "adaptiveResilience": { name: "SW5E.FlagsAdaptiveResilience", hint: "SW5E.FlagsAdaptiveResilienceHint", section: "SW5E.SpeciesTraits", type: Boolean }, "aggressive": { name: "SW5E.FlagsAggressive", hint: "SW5E.FlagsAggressiveHint", section: "SW5E.SpeciesTraits", type: Boolean }, "amphibious": { name: "SW5E.FlagsAmphibious", hint: "SW5E.FlagsAmphibiousHint", section: "SW5E.SpeciesTraits", type: Boolean }, "armorIntegration": { name: "SW5E.FlagsArmorIntegration", hint: "SW5E.FlagsArmorIntegrationHint", section: "SW5E.SpeciesTraits", type: Boolean }, "businessSavvy": { name: "SW5E.FlagsBusinessSavvy", hint: "SW5E.FlagsBusinessSavvyHint", section: "SW5E.SpeciesTraits", type: Boolean }, "cannibalize": { name: "SW5E.FlagsCannibalize", hint: "SW5E.FlagsCannibalizeHint", section: "SW5E.SpeciesTraits", type: Boolean }, "closedMind": { name: "SW5E.FlagsClosedMind", hint: "SW5E.FlagsClosedMindHint", section: "SW5E.SpeciesTraits", type: Boolean }, "crudeWeaponSpecialists": { name: "SW5E.FlagsCrudeWeaponSpecialists", hint: "SW5E.FlagsCrudeWeaponSpecialistsHint", section: "SW5E.SpeciesTraits", type: Boolean }, "defiant": { name: "SW5E.FlagsDefiant", hint: "SW5E.FlagsDefiantHint", section: "SW5E.SpeciesTraits", type: Boolean }, "detailOriented": { name: "SW5E.FlagsDetailOriented", hint: "SW5E.FlagsDetailOrientedHint", section: "SW5E.SpeciesTraits", type: Boolean }, "enthrallingPheromones": { name: "SW5E.FlagsEnthrallingPheromones", hint: "SW5E.FlagsEnthrallingPheromonesHint", section: "SW5E.SpeciesTraits", type: Boolean }, "extraArms": { name: "SW5E.FlagsExtraArms", hint: "SW5E.FlagsExtraArmsHint", section: "SW5E.SpeciesTraits", type: Boolean }, "forceContention": { name: "SW5E.FlagsForceContention", hint: "SW5E.FlagsForceContentionHint", section: "SW5E.SpeciesTraits", type: Boolean }, "forceInsensitive": { name: "SW5E.FlagsForceInsensitive", hint: "SW5E.FlagsForceInsensitiveHint", section: "SW5E.SpeciesTraits", type: Boolean }, "foreignBiology": { name: "SW5E.FlagsForeignBiology", hint: "SW5E.FlagsForeignBiologyHint", section: "SW5E.SpeciesTraits", type: Boolean }, "furyOfTheSmall": { name: "SW5E.FlagsFuryOfTheSmall", hint: "SW5E.FlagsFuryOfTheSmallHint", section: "SW5E.SpeciesTraits", type: Boolean }, "grovelCowerAndBeg": { name: "SW5E.FlagsGrovelCowerAndBeg", hint: "SW5E.FlagsGrovelCowerAndBegHint", section: "SW5E.SpeciesTraits", type: Boolean }, "inscrutable": { name: "SW5E.FlagsInscrutable", hint: "SW5E.FlagsInscrutableHint", section: "SW5E.SpeciesTraits", type: Boolean }, "keenSenses": { name: "SW5E.FlagsKeenSenses", hint: "SW5E.FlagsKeenSensesHint", section: "SW5E.SpeciesTraits", type: Boolean }, "longlimbed": { name: "SW5E.FlagsLongLimbed", hint: "SW5E.FlagsLongLimbedHint", section: "SW5E.SpeciesTraits", type: Boolean }, "maintenanceMode": { name: "SW5E.FlagsMaintenanceMode", hint: "SW5E.FlagsMaintenanceModeHint", section: "SW5E.SpeciesTraits", type: Boolean }, "maskOfTheWild": { name: "SW5E.FlagsMaskOfTheWild", hint: "SW5E.FlagsMaskOfTheWildHint", section: "SW5E.SpeciesTraits", type: Boolean }, "multipleHearts": { name: "SW5E.FlagsMultipleHearts", hint: "SW5E.FlagsMultipleHeartsHint", section: "SW5E.SpeciesTraits", type: Boolean }, "naturallyStealthy": { name: "SW5E.FlagsNaturallyStealthy", hint: "SW5E.FlagsNaturallyStealthyHint", section: "SW5E.SpeciesTraits", type: Boolean }, "nimbleAgility": { name: "SW5E.FlagsNimbleAgility", hint: "SW5E.FlagsNimbleAgilityHint", section: "SW5E.SpeciesTraits", type: Boolean }, "nimbleEscape": { name: "SW5E.FlagsNimbleEscape", hint: "SW5E.FlagsNimbleEscapeHint", section: "SW5E.SpeciesTraits", type: Boolean }, "nimbleness": { name: "SW5E.FlagsNimbleness", hint: "SW5E.FlagsNimblenessHint", section: "SW5E.SpeciesTraits", type: Boolean }, "pintsized": { name: "SW5E.FlagsPintsized", hint: "SW5E.FlagsPintsizedHint", section: "SW5E.SpeciesTraits", type: Boolean }, "powerfulBuild": { name: "SW5E.FlagsPowerfulBuild", hint: "SW5E.FlagsPowerfulBuildHint", section: "SW5E.SpeciesTraits", type: Boolean }, "precognition": { name: "SW5E.FlagsPrecognition", hint: "SW5E.FlagsPrecognitionHint", section: "SW5E.SpeciesTraits", type: Boolean }, "programmer": { name: "SW5E.FlagsProgrammer", hint: "SW5E.FlagsProgrammerHint", section: "SW5E.SpeciesTraits", type: Boolean }, "puny": { name: "SW5E.FlagsPuny", hint: "SW5E.FlagsPunyHint", section: "SW5E.SpeciesTraits", type: Boolean }, "rapidReconstruction": { name: "SW5E.FlagsRapidReconstruction", hint: "SW5E.FlagsRapidReconstructionHint", section: "SW5E.SpeciesTraits", type: Boolean }, "rapidlyRegenerative": { name: "SW5E.FlagsRapidlyRegenerative", hint: "SW5E.FlagsRapidlyRegenerativeHint", section: "SW5E.SpeciesTraits", type: Boolean }, "regenerative": { name: "SW5E.FlagsRegenerative", hint: "SW5E.FlagsRegenerativeHint", section: "SW5E.SpeciesTraits", type: Boolean }, "savageAttacks": { name: "SW5E.FlagsSavageAttacks", hint: "SW5E.FlagsSavageAttacksHint", section: "SW5E.SpeciesTraits", type: Boolean }, "shapechanger": { name: "SW5E.FlagsShapechanger", hint: "SW5E.FlagsShapechangerHint", section: "SW5E.SpeciesTraits", type: Boolean }, "strongLegged": { name: "SW5E.FlagsStrongLegged", hint: "SW5E.FlagsStrongLeggedHint", section: "SW5E.SpeciesTraits", type: Boolean }, "sunlightSensitivity": { name: "SW5E.FlagsSunlightSensitivity", hint: "SW5E.FlagsSunlightSensitivityHint", section: "SW5E.SpeciesTraits", type: Boolean }, "surpriseAttack": { name: "SW5E.FlagsSurpriseAttack", hint: "SW5E.FlagsSurpriseAttackHint", section: "SW5E.SpeciesTraits", type: Boolean }, "techImpaired": { name: "SW5E.FlagsTechImpaired", hint: "SW5E.FlagsTechImpairedHint", section: "SW5E.SpeciesTraits", type: Boolean }, "techResistance": { name: "SW5E.FlagsTechResistance", hint: "SW5E.FlagsTechResistanceHint", section: "SW5E.SpeciesTraits", type: Boolean }, "tinker": { name: "SW5E.FlagsTinker", hint: "SW5E.FlagsTinkerHint", section: "SW5E.SpeciesTraits", type: Boolean }, "toughness": { name: "SW5E.FlagsToughness", hint: "SW5E.FlagsToughnessHint", section: "SW5E.SpeciesTraits", type: Boolean }, "trance": { name: "SW5E.FlagsTrance", hint: "SW5E.FlagsTranceHint", section: "SW5E.SpeciesTraits", type: Boolean }, "unarmedCombatant": { name: "SW5E.FlagsUnarmedCombatant", hint: "SW5E.FlagsUnarmedCombatantHint", section: "SW5E.SpeciesTraits", type: Boolean }, "undersized": { name: "SW5E.FlagsUndersized", hint: "SW5E.FlagsUndersizedHint", section: "SW5E.SpeciesTraits", type: Boolean }, "unsettlingVisage": { name: "SW5E.FlagsUnsettlingVisage", hint: "SW5E.FlagsUnsettlingVisageHint", section: "SW5E.SpeciesTraits", type: Boolean }, "initiativeAdv": { name: "SW5E.FlagsInitiativeAdv", hint: "SW5E.FlagsInitiativeAdvHint", section: "SW5E.Features", type: Boolean }, "initiativeAlert": { name: "SW5E.FlagsAlert", hint: "SW5E.FlagsAlertHint", section: "SW5E.Features", type: Boolean }, "jackOfAllTrades": { name: "SW5E.FlagsJOAT", hint: "SW5E.FlagsJOATHint", section: "SW5E.Features", type: Boolean }, "observantFeat": { name: "SW5E.FlagsObservant", hint: "SW5E.FlagsObservantHint", skills: ['prc','inv'], section: "SW5E.Features", type: Boolean }, "reliableTalent": { name: "SW5E.FlagsReliableTalent", hint: "SW5E.FlagsReliableTalentHint", section: "SW5E.Features", type: Boolean }, "remarkableAthlete": { name: "SW5E.FlagsRemarkableAthlete", hint: "SW5E.FlagsRemarkableAthleteHint", abilities: ['str','dex','con'], section: "SW5E.Features", type: Boolean }, "weaponCriticalThreshold": { name: "SW5E.FlagsWeaponCritThreshold", hint: "SW5E.FlagsWeaponCritThresholdHint", section: "SW5E.Features", type: Number, placeholder: 20 }, "powerCriticalThreshold": { name: "SW5E.FlagsPowerCritThreshold", hint: "SW5E.FlagsPowerCritThresholdHint", section: "SW5E.Features", type: Number, placeholder: 20 }, "meleeCriticalDamageDice": { name: "SW5E.FlagsMeleeCriticalDice", hint: "SW5E.FlagsMeleeCriticalDiceHint", section: "SW5E.Features", type: Number, placeholder: 0 } }; // Configure allowed status flags SW5E.allowedActorFlags = ["isPolymorphed", "originalActor", "dataVersion"].concat(Object.keys(SW5E.characterFlags));