foundry-sw5e/module/config.js

991 lines
24 KiB
JavaScript
Raw Normal View History

import {ClassFeatures} from "./classFeatures.js"
// Namespace Configuration Values
2020-06-24 14:23:55 -04:00
export const SW5E = {};
// ASCII Artwork
SW5E.ASCII = `_______________________________
______ ______ _____ _____
| _ \\___ | _ \\ ___| ___|
| | | ( _ ) | | | |___ \\| |__
| | | / _ \\/\\ | | | \\ \\ __|
| |/ / (_> < |/ //\\__/ / |___
|___/ \\___/\\/___/ \\____/\\____/
_______________________________`;
2020-06-24 14:23:55 -04:00
/**
* 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"
};
2020-09-11 17:11:11 -04:00
SW5E.abilityAbbreviations = {
"str": "SW5E.AbilityStrAbbr",
"dex": "SW5E.AbilityDexAbbr",
"con": "SW5E.AbilityConAbbr",
"int": "SW5E.AbilityIntAbbr",
"wis": "SW5E.AbilityWisAbbr",
"cha": "SW5E.AbilityChaAbbr"
};
2020-06-24 14:23:55 -04:00
/* -------------------------------------------- */
/**
* Character alignment options
* @type {Object}
*/
SW5E.alignments = {
'lg': "SW5E.AlignmentLG",
'ng': "SW5E.AlignmentNG",
'cg': "SW5E.AlignmentCG",
'ln': "SW5E.AlignmentLN",
'tn': "SW5E.AlignmentTN",
'cn': "SW5E.AlignmentCN",
'le': "SW5E.AlignmentLE",
'ne': "SW5E.AlignmentNE",
'ce': "SW5E.AlignmentCE"
2020-06-24 14:23:55 -04:00
};
/* -------------------------------------------- */
/**
* 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"
};
/* -------------------------------------------- */
2020-06-24 14:23:55 -04:00
SW5E.weaponProficiencies = {
"sim": "SW5E.WeaponSimpleProficiency",
2020-09-11 17:11:11 -04:00
"mar": "SW5E.WeaponMartialProficiency"
2020-06-24 14:23:55 -04:00
};
/**
* A map of weapon item proficiency to actor item proficiency
* Used when a new player owned item is created
* @type {Object}
*/
SW5E.weaponProficienciesMap = {
"natural": true,
"simpleM": "sim",
"simpleR": "sim",
"martialM": "mar",
"martialR": "mar"
}
/**
* 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"
};
/* -------------------------------------------- */
2020-06-24 14:23:55 -04:00
SW5E.toolProficiencies = {
"art": "SW5E.ToolArtisans",
2020-06-24 14:23:55 -04:00
"disg": "SW5E.ToolDisguiseKit",
"forg": "SW5E.ToolForgeryKit",
"game": "SW5E.ToolGamingSet",
"herb": "SW5E.ToolHerbalismKit",
2020-06-24 14:23:55 -04:00
"music": "SW5E.ToolMusicalInstrument",
"navg": "SW5E.ToolNavigators",
"pois": "SW5E.ToolPoisonersKit",
"thief": "SW5E.ToolThieves",
2020-06-24 14:23:55 -04:00
"vehicle": "SW5E.ToolVehicle"
};
/**
* 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",
};
2020-06-24 14:23:55 -04:00
/* -------------------------------------------- */
/**
* This Object defines the various lengths of time which can occur
2020-06-24 14:23:55 -04:00
* @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.LegendaryActionLabel",
"lair": "SW5E.LairActionLabel",
2020-09-11 17:11:11 -04:00
"crew": "SW5E.VehicleCrewAction"
};
/* -------------------------------------------- */
SW5E.abilityConsumptionTypes = {
"ammo": "SW5E.ConsumeAmmunition",
"attribute": "SW5E.ConsumeAttribute",
"material": "SW5E.ConsumeMaterial",
"charges": "SW5E.ConsumeCharges"
2020-06-24 14:23:55 -04:00
};
2020-09-11 17:11:11 -04:00
2020-06-24 14:23:55 -04:00
/* -------------------------------------------- */
// 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",
"celestial": "SW5E.CreatureCelestial",
"construct": "SW5E.CreatureConstruct",
"dragon": "SW5E.CreatureDragon",
"elemental": "SW5E.CreatureElemental",
"fey": "SW5E.CreatureFey",
"fiend": "SW5E.CreatureFiend",
"giant": "SW5E.CreatureGiant",
"humanoid": "SW5E.CreatureHumanoid",
"monstrosity": "SW5E.CreatureMonstrosity",
"ooze": "SW5E.CreatureOoze",
"plant": "SW5E.CreaturePlant",
"undead": "SW5E.CreatureUndead"
};
2020-06-24 14:23:55 -04:00
/* -------------------------------------------- */
/**
* Classification types for item action types
* @type {Object}
*/
SW5E.itemActionTypes = {
"mwak": "SW5E.ActionMWAK",
"rwak": "SW5E.ActionRWAK",
"mpak": "SW5E.ActionMPAK",
"rpak": "SW5E.ActionRPAK",
2020-06-24 14:23:55 -04:00
"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"
};
/* -------------------------------------------- */
/**
* The set of equipment types for armor, clothing, and other objects which can be worn by the character
2020-06-24 14:23:55 -04:00
* @type {Object}
*/
SW5E.equipmentTypes = {
"light": "SW5E.EquipmentLight",
"medium": "SW5E.EquipmentMedium",
"heavy": "SW5E.EquipmentHeavy",
"bonus": "SW5E.EquipmentBonus",
"natural": "SW5E.EquipmentNatural",
"shield": "SW5E.EquipmentShield",
"clothing": "SW5E.EquipmentClothing",
2020-09-11 17:11:11 -04:00
"trinket": "SW5E.EquipmentTrinket",
"vehicle": "SW5E.EquipmentVehicle"
2020-06-24 14:23:55 -04:00
};
/* -------------------------------------------- */
/**
* 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"
};
/**
* A map of armor item proficiency to actor item proficiency
* Used when a new player owned item is created
* @type {Object}
*/
SW5E.armorProficienciesMap = {
"natural": true,
"clothing": true,
"light": "lgt",
"medium": "med",
"heavy": "hvy",
"shield": "shl"
}
2020-06-24 14:23:55 -04:00
/* -------------------------------------------- */
/**
* Enumerate the valid consumable types which are recognized by the system
* @type {Object}
*/
SW5E.consumableTypes = {
"ammo": "SW5E.ConsumableAmmunition",
"potion": "SW5E.ConsumablePotion",
2020-06-24 14:23:55 -04:00
"poison": "SW5E.ConsumablePoison",
"food": "SW5E.ConsumableFood",
"scroll": "SW5E.ConsumableScroll",
"wand": "SW5E.ConsumableWand",
"rod": "SW5E.ConsumableRod",
"trinket": "SW5E.ConsumableTrinket"
2020-06-24 14:23:55 -04:00
};
/* -------------------------------------------- */
/**
* The valid currency denominations supported by the 5e system
* @type {Object}
*/
SW5E.currencies = {
"pp": "SW5E.CurrencyPP",
"gp": "SW5E.CurrencyGP",
"ep": "SW5E.CurrencyEP",
"sp": "SW5E.CurrencySP",
"cp": "SW5E.CurrencyCP",
};
/**
* Define the upwards-conversion rules for registered currency types
* @type {{string, object}}
*/
SW5E.currencyConversion = {
cp: {into: "sp", each: 10},
sp: {into: "ep", each: 5 },
ep: {into: "gp", each: 2 },
gp: {into: "pp", each: 10}
};
2020-06-24 14:23:55 -04:00
/* -------------------------------------------- */
// Damage Types
SW5E.damageTypes = {
"acid": "SW5E.DamageAcid",
"bludgeoning": "SW5E.DamageBludgeoning",
2020-06-24 14:23:55 -04:00
"cold": "SW5E.DamageCold",
"fire": "SW5E.DamageFire",
"force": "SW5E.DamageForce",
"lightning": "SW5E.DamageLightning",
"necrotic": "SW5E.DamageNecrotic",
"piercing": "SW5E.DamagePiercing",
2020-06-24 14:23:55 -04:00
"poison": "SW5E.DamagePoison",
"psychic": "SW5E.DamagePsychic",
"radiant": "SW5E.DamageRadiant",
"slashing": "SW5E.DamageSlashing",
"thunder": "SW5E.DamageThunder"
};
// Damage Resistance Types
SW5E.damageResistanceTypes = mergeObject(foundry.utils.deepClone(SW5E.damageTypes), {
"physical": "SW5E.DamagePhysical"
});
/* -------------------------------------------- */
/**
* 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<string,string>}
*/
SW5E.movementTypes = {
"burrow": "SW5E.MovementBurrow",
"climb": "SW5E.MovementClimb",
"fly": "SW5E.MovementFly",
"swim": "SW5E.MovementSwim",
"walk": "SW5E.MovementWalk",
};
2020-06-24 14:23:55 -04:00
/**
* 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<string,string>}
*/
SW5E.movementUnits = {
"ft": "SW5E.DistFt",
"mi": "SW5E.DistMi"
};
2020-06-24 14:23:55 -04:00
/**
* 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<string,string>}
*/
2020-06-24 14:23:55 -04:00
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;
}
2020-06-24 14:23:55 -04:00
/* -------------------------------------------- */
/**
* Configure aspects of encumbrance calculation so that it could be configured by modules
* @type {Object}
*/
SW5E.encumbrance = {
currencyPerWeight: 50,
2020-09-11 17:11:11 -04:00
strMultiplier: 15,
vehicleWeightMultiplier: 2000 // 2000 lbs in a ton
2020-06-24 14:23:55 -04:00
};
/* -------------------------------------------- */
/**
* This Object defines the types of single or area targets which can be applied
2020-06-24 14:23:55 -04:00
* @type {Object}
*/
SW5E.targetTypes = {
"none": "SW5E.None",
"self": "SW5E.TargetSelf",
"creature": "SW5E.TargetCreature",
"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",
"wall": "SW5E.TargetWall"
2020-06-24 14:23:55 -04:00
};
/* -------------------------------------------- */
/**
* 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
* @type {string[]}
2020-06-24 14:23:55 -04:00
*/
SW5E.hitDieTypes = ["d6", "d8", "d10", "d12"];
2020-06-24 14:23:55 -04:00
/* -------------------------------------------- */
/**
* The set of possible sensory perception types which an Actor may have
* @enum {string}
2020-06-24 14:23:55 -04:00
*/
SW5E.senses = {
"blindsight": "SW5E.SenseBlindsight",
"darkvision": "SW5E.SenseDarkvision",
"tremorsense": "SW5E.SenseTremorsense",
"truesight": "SW5E.SenseTruesight"
2020-06-24 14:23:55 -04:00
};
/* -------------------------------------------- */
/**
* The set of skill which can be trained
2020-06-24 14:23:55 -04:00
* @type {Object}
*/
SW5E.skills = {
"acr": "SW5E.SkillAcr",
"ani": "SW5E.SkillAni",
"arc": "SW5E.SkillArc",
2020-06-24 14:23:55 -04:00
"ath": "SW5E.SkillAth",
"dec": "SW5E.SkillDec",
"his": "SW5E.SkillHis",
2020-06-24 14:23:55 -04:00
"ins": "SW5E.SkillIns",
"itm": "SW5E.SkillItm",
"inv": "SW5E.SkillInv",
"med": "SW5E.SkillMed",
"nat": "SW5E.SkillNat",
"prc": "SW5E.SkillPrc",
"prf": "SW5E.SkillPrf",
"per": "SW5E.SkillPer",
"rel": "SW5E.SkillRel",
2020-06-24 14:23:55 -04:00
"slt": "SW5E.SkillSlt",
"ste": "SW5E.SkillSte",
"sur": "SW5E.SkillSur"
2020-06-24 14:23:55 -04:00
};
/* -------------------------------------------- */
SW5E.powerPreparationModes = {
"prepared": "SW5E.PowerPrepPrepared",
"pact": "SW5E.PactMagic",
2020-06-24 14:23:55 -04:00
"always": "SW5E.PowerPrepAlways",
"atwill": "SW5E.PowerPrepAtWill",
"innate": "SW5E.PowerPrepInnate"
2020-06-24 14:23:55 -04:00
};
2020-09-11 17:11:11 -04:00
SW5E.powerUpcastModes = ["always", "pact", "prepared"];
2020-06-24 14:23:55 -04:00
SW5E.powerProgression = {
"none": "SW5E.PowerNone",
"full": "SW5E.PowerProgFull",
"half": "SW5E.PowerProgHalf",
"third": "SW5E.PowerProgThird",
"pact": "SW5E.PowerProgPact",
2020-06-24 14:23:55 -04:00
"artificer": "SW5E.PowerProgArt"
};
/* -------------------------------------------- */
/**
* The available choices for how power damage scaling may be computed
* @type {Object}
*/
SW5E.powerScalingModes = {
"none": "SW5E.PowerNone",
"cantrip": "SW5E.PowerCantrip",
2020-06-24 14:23:55 -04:00
"level": "SW5E.PowerLevel"
};
/* -------------------------------------------- */
/**
* Define the set of types which a weapon item can take
* @type {Object}
*/
2020-06-24 14:23:55 -04:00
SW5E.weaponTypes = {
"simpleM": "SW5E.WeaponSimpleM",
"simpleR": "SW5E.WeaponSimpleR",
"martialM": "SW5E.WeaponMartialM",
"martialR": "SW5E.WeaponMartialR",
2020-06-24 14:23:55 -04:00
"natural": "SW5E.WeaponNatural",
"improv": "SW5E.WeaponImprov",
"siege": "SW5E.WeaponSiege"
2020-06-24 14:23:55 -04:00
};
/* -------------------------------------------- */
/**
* Define the set of weapon property flags which can exist on a weapon
* @type {Object}
*/
SW5E.weaponProperties = {
"ada": "SW5E.WeaponPropertiesAda",
2020-06-24 14:23:55 -04:00
"amm": "SW5E.WeaponPropertiesAmm",
"fin": "SW5E.WeaponPropertiesFin",
"fir": "SW5E.WeaponPropertiesFir",
2020-06-24 14:23:55 -04:00
"foc": "SW5E.WeaponPropertiesFoc",
"hvy": "SW5E.WeaponPropertiesHvy",
2020-06-24 14:23:55 -04:00
"lgt": "SW5E.WeaponPropertiesLgt",
"lod": "SW5E.WeaponPropertiesLod",
"mgc": "SW5E.WeaponPropertiesMgc",
2020-06-24 14:23:55 -04:00
"rch": "SW5E.WeaponPropertiesRch",
"rel": "SW5E.WeaponPropertiesRel",
"ret": "SW5E.WeaponPropertiesRet",
"sil": "SW5E.WeaponPropertiesSil",
2020-06-24 14:23:55 -04:00
"spc": "SW5E.WeaponPropertiesSpc",
"thr": "SW5E.WeaponPropertiesThr",
"two": "SW5E.WeaponPropertiesTwo",
"ver": "SW5E.WeaponPropertiesVer"
2020-06-24 14:23:55 -04:00
};
// Power Components
SW5E.powerComponents = {
"V": "SW5E.ComponentVerbal",
"S": "SW5E.ComponentSomatic",
"M": "SW5E.ComponentMaterial"
};
// Power Schools
SW5E.powerSchools = {
"abj": "SW5E.SchoolAbj",
"con": "SW5E.SchoolCon",
"div": "SW5E.SchoolDiv",
"enc": "SW5E.SchoolEnc",
"evo": "SW5E.SchoolEvo",
"ill": "SW5E.SchoolIll",
"nec": "SW5E.SchoolNec",
"trs": "SW5E.SchoolTrs"
2020-06-24 14:23:55 -04:00
};
// 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"
};
// 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"
}
2020-06-24 14:23:55 -04:00
/**
* Define the standard slot progression by character level.
* The entries of this array represent the power slot progression for a full power-caster.
* @type {Array[]}
*/
SW5E.SPELL_SLOT_TABLE = [
[2],
[3],
[4, 2],
[4, 3],
[4, 3, 2],
[4, 3, 3],
[4, 3, 3, 1],
[4, 3, 3, 2],
[4, 3, 3, 3, 1],
[4, 3, 3, 3, 2],
[4, 3, 3, 3, 2, 1],
[4, 3, 3, 3, 2, 1],
[4, 3, 3, 3, 2, 1, 1],
[4, 3, 3, 3, 2, 1, 1],
[4, 3, 3, 3, 2, 1, 1, 1],
[4, 3, 3, 3, 2, 1, 1, 1],
[4, 3, 3, 3, 2, 1, 1, 1, 1],
[4, 3, 3, 3, 3, 1, 1, 1, 1],
[4, 3, 3, 3, 3, 2, 1, 1, 1],
[4, 3, 3, 3, 3, 2, 2, 1, 1]
];
/* -------------------------------------------- */
// 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"
};
/* -------------------------------------------- */
2020-09-11 17:11:11 -04:00
/**
* 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'
};
/* -------------------------------------------- */
2020-06-24 14:23:55 -04:00
// Condition Types
SW5E.conditionTypes = {
"blinded": "SW5E.ConBlinded",
"charmed": "SW5E.ConCharmed",
"deafened": "SW5E.ConDeafened",
2020-09-11 17:11:11 -04:00
"diseased": "SW5E.ConDiseased",
2020-06-24 14:23:55 -04:00
"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",
"stunned": "SW5E.ConStunned",
"unconscious": "SW5E.ConUnconscious"
};
// Languages
SW5E.languages = {
"common": "SW5E.LanguagesCommon",
"aarakocra": "SW5E.LanguagesAarakocra",
"abyssal": "SW5E.LanguagesAbyssal",
"aquan": "SW5E.LanguagesAquan",
"auran": "SW5E.LanguagesAuran",
"celestial": "SW5E.LanguagesCelestial",
"deep": "SW5E.LanguagesDeepSpeech",
"draconic": "SW5E.LanguagesDraconic",
"druidic": "SW5E.LanguagesDruidic",
"dwarvish": "SW5E.LanguagesDwarvish",
"elvish": "SW5E.LanguagesElvish",
"giant": "SW5E.LanguagesGiant",
"gith": "SW5E.LanguagesGith",
"gnomish": "SW5E.LanguagesGnomish",
"goblin": "SW5E.LanguagesGoblin",
"gnoll": "SW5E.LanguagesGnoll",
"halfling": "SW5E.LanguagesHalfling",
"ignan": "SW5E.LanguagesIgnan",
"infernal": "SW5E.LanguagesInfernal",
"orc": "SW5E.LanguagesOrc",
"primordial": "SW5E.LanguagesPrimordial",
"sylvan": "SW5E.LanguagesSylvan",
"terran": "SW5E.LanguagesTerran",
"cant": "SW5E.LanguagesThievesCant",
"undercommon": "SW5E.LanguagesUndercommon"
2020-06-24 14:23:55 -04:00
};
// 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;
2020-06-24 14:23:55 -04:00
// Configure Optional Character Flags
SW5E.characterFlags = {
"diamondSoul": {
name: "SW5E.FlagsDiamondSoul",
hint: "SW5E.FlagsDiamondSoulHint",
section: "SW5E.Feats",
2020-06-24 14:23:55 -04:00
type: Boolean
},
"elvenAccuracy": {
name: "SW5E.FlagsElvenAccuracy",
hint: "SW5E.FlagsElvenAccuracyHint",
section: "SW5E.RacialTraits",
2020-06-24 14:23:55 -04:00
type: Boolean
},
"halflingLucky": {
name: "SW5E.FlagsHalflingLucky",
hint: "SW5E.FlagsHalflingLuckyHint",
section: "SW5E.RacialTraits",
2020-06-24 14:23:55 -04:00
type: Boolean
},
"initiativeAdv": {
2020-09-11 17:11:11 -04:00
name: "SW5E.FlagsInitiativeAdv",
hint: "SW5E.FlagsInitiativeAdvHint",
section: "SW5E.Feats",
2020-06-24 14:23:55 -04:00
type: Boolean
},
"initiativeAlert": {
2020-09-11 17:11:11 -04:00
name: "SW5E.FlagsAlert",
hint: "SW5E.FlagsAlertHint",
section: "SW5E.Feats",
2020-06-24 14:23:55 -04:00
type: Boolean
},
"jackOfAllTrades": {
2020-09-11 17:11:11 -04:00
name: "SW5E.FlagsJOAT",
hint: "SW5E.FlagsJOATHint",
section: "SW5E.Feats",
2020-06-24 14:23:55 -04:00
type: Boolean
},
"observantFeat": {
2020-09-11 17:11:11 -04:00
name: "SW5E.FlagsObservant",
hint: "SW5E.FlagsObservantHint",
2020-06-24 14:23:55 -04:00
skills: ['prc','inv'],
section: "SW5E.Feats",
2020-06-24 14:23:55 -04:00
type: Boolean
},
"powerfulBuild": {
name: "SW5E.FlagsPowerfulBuild",
hint: "SW5E.FlagsPowerfulBuildHint",
section: "SW5E.RacialTraits",
type: Boolean
},
"reliableTalent": {
name: "SW5E.FlagsReliableTalent",
hint: "SW5E.FlagsReliableTalentHint",
section: "SW5E.Feats",
type: Boolean
},
"remarkableAthlete": {
2020-09-11 17:11:11 -04:00
name: "SW5E.FlagsRemarkableAthlete",
hint: "SW5E.FlagsRemarkableAthleteHint",
2020-06-24 14:23:55 -04:00
abilities: ['str','dex','con'],
section: "SW5E.Feats",
2020-06-24 14:23:55 -04:00
type: Boolean
},
"weaponCriticalThreshold": {
name: "SW5E.FlagsWeaponCritThreshold",
hint: "SW5E.FlagsWeaponCritThresholdHint",
section: "SW5E.Feats",
type: Number,
placeholder: 20
},
"powerCriticalThreshold": {
name: "SW5E.FlagsPowerCritThreshold",
hint: "SW5E.FlagsPowerCritThresholdHint",
section: "SW5E.Feats",
2020-06-24 14:23:55 -04:00
type: Number,
placeholder: 20
},
"meleeCriticalDamageDice": {
name: "SW5E.FlagsMeleeCriticalDice",
hint: "SW5E.FlagsMeleeCriticalDiceHint",
section: "SW5E.Feats",
type: Number,
placeholder: 0
},
2020-06-24 14:23:55 -04:00
};
// Configure allowed status flags
SW5E.allowedActorFlags = ["isPolymorphed", "originalActor"].concat(Object.keys(SW5E.characterFlags));