forked from GitHub-Mirrors/foundry-sw5e
1269 lines
33 KiB
JavaScript
1269 lines
33 KiB
JavaScript
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 = {
|
|
sim: "SW5E.WeaponSimpleProficiency",
|
|
mar: "SW5E.WeaponMartialProficiency"
|
|
};
|
|
|
|
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"
|
|
};
|
|
|
|
/* -------------------------------------------- */
|
|
|
|
/**
|
|
* 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
|
|
};
|
|
|
|
/* -------------------------------------------- */
|
|
|
|
/**
|
|
* 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"
|
|
};
|
|
|
|
/* -------------------------------------------- */
|
|
|
|
/**
|
|
* The set of equipment types for armor, clothing, and other objects which can ber worn by the character
|
|
* @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",
|
|
trinket: "SW5E.EquipmentTrinket",
|
|
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 = duplicate(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<string,string>}
|
|
*/
|
|
SW5E.movementTypes = {
|
|
burrow: "SW5E.MovementBurrow",
|
|
climb: "SW5E.MovementClimb",
|
|
fly: "SW5E.MovementFly",
|
|
swim: "SW5E.MovementSwim",
|
|
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<string,string>}
|
|
*/
|
|
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<string,string>}
|
|
*/
|
|
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",
|
|
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 {Array.<string>}
|
|
*/
|
|
SW5E.hitDieTypes = ["d4", "d6", "d8", "d10", "d12", "d20"];
|
|
|
|
/* -------------------------------------------- */
|
|
|
|
/**
|
|
* 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"
|
|
};
|
|
|
|
/* -------------------------------------------- */
|
|
|
|
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 = {
|
|
simpleVW: "SW5E.WeaponSimpleVW",
|
|
simpleB: "SW5E.WeaponSimpleB",
|
|
simpleLW: "SW5E.WeaponSimpleLW",
|
|
martialVW: "SW5E.WeaponMartialVW",
|
|
martialB: "SW5E.WeaponMartialB",
|
|
martialLW: "SW5E.WeaponMartialLW",
|
|
natural: "SW5E.WeaponNatural",
|
|
improv: "SW5E.WeaponImprov",
|
|
ammo: "SW5E.WeaponAmmo",
|
|
siege: "SW5E.WeaponSiege"
|
|
};
|
|
|
|
/* -------------------------------------------- */
|
|
|
|
/**
|
|
* 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",
|
|
def: "SW5E.WeaponPropertiesDef",
|
|
dex: "SW5E.WeaponPropertiesDex",
|
|
dir: "SW5E.WeaponPropertiesDir",
|
|
drm: "SW5E.WeaponPropertiesDrm",
|
|
dgd: "SW5E.WeaponPropertiesDgd",
|
|
dis: "SW5E.WeaponPropertiesDis",
|
|
dpt: "SW5E.WeaponPropertiesDpt",
|
|
dou: "SW5E.WeaponPropertiesDou",
|
|
fin: "SW5E.WeaponPropertiesFin",
|
|
fix: "SW5E.WeaponPropertiesFix",
|
|
foc: "SW5E.WeaponPropertiesFoc",
|
|
hvy: "SW5E.WeaponPropertiesHvy",
|
|
hid: "SW5E.WeaponPropertiesHid",
|
|
ken: "SW5E.WeaponPropertiesKen",
|
|
lgt: "SW5E.WeaponPropertiesLgt",
|
|
lum: "SW5E.WeaponPropertiesLum",
|
|
mig: "SW5E.WeaponPropertiesMig",
|
|
pic: "SW5E.WeaponPropertiesPic",
|
|
rap: "SW5E.WeaponPropertiesRap",
|
|
rch: "SW5E.WeaponPropertiesRch",
|
|
rel: "SW5E.WeaponPropertiesRel",
|
|
ret: "SW5E.WeaponPropertiesRet",
|
|
shk: "SW5E.WeaponPropertiesShk",
|
|
sil: "SW5E.WeaponPropertiesSil",
|
|
spc: "SW5E.WeaponPropertiesSpc",
|
|
str: "SW5E.WeaponPropertiesStr",
|
|
thr: "SW5E.WeaponPropertiesThr",
|
|
two: "SW5E.WeaponPropertiesTwo",
|
|
ver: "SW5E.WeaponPropertiesVer",
|
|
vic: "SW5E.WeaponPropertiesVic"
|
|
};
|
|
|
|
// 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"
|
|
};
|
|
|
|
// 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",
|
|
0.5: "SW5E.CoverHalf",
|
|
0.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));
|