foundry-vtt-system-midgard5/source/module/M5Base.ts

150 lines
2.5 KiB
TypeScript

export interface M5CharacterCalculatedData {
level: number
attributes: {
st: { value: number, bonus: number }
gs: { value: number, bonus: number }
gw: { value: number, bonus: number }
ko: { value: number, bonus: number }
in: { value: number, bonus: number }
zt: { value: number, bonus: number }
au: { value: number, bonus: number }
pa: { value: number, bonus: number }
wk: { value: number, bonus: number }
}
stats: {
armor: number
defense: number
damageBonus: number
attackBonus: number
defenseBonus: number
movementBonus: number
resistanceMind: number
resistanceBody: number
spellCasting: number
brawl: number
brawlEw: number
poisonResistance: number
enduranceBonus: number
}
skills: {
innate: {}
general: {}
combat: {}
language: {}
custom: {}
}
gear: {
weapons: {}
defensiveWeapons: {}
armor: {}
items: {}
}
spells: {}
}
export interface M5Skill {
fw: number
attribute: string
}
export interface M5SkillUnlearned extends M5Skill {
initial: number
}
export interface M5SkillLearned extends M5Skill {
skill: string
type: string
}
export interface M5SkillCalculated extends M5Skill {
label: string,
calc: any
}
export interface M5Attribute {
value: number
bonus: number
}
export interface M5RollData {
c: any
i: any
iType: string
rolls: {}
res: {
label: string
}
}
export interface M5RollResult {
formula: string
label: string
type: string
total: number
totalStr: string
result: string
dice: {}
css: string
}
export enum M5EwResult {
TBD = "",
FUMBLE = "roll-ew-result-fumble",
CRITICAL = "roll-ew-result-critical",
HIGH = "roll-ew-result-high",
FAIL = "roll-ew-result-fail",
PASS = "roll-ew-result-pass"
}
export enum M5Attributes {
ST = "st",
GW = "gw",
GS = "gs",
KO = "ko",
IN = "in",
ZT = "zt",
AU = "au",
PA = "pa",
WK = "wk"
}
export enum M5Stats {
DEFENSE = "defense",
ATTACK = "attack",
DAMAGE = "damage",
MOVEMENT = "movement",
RESISTANCE_MIND = "resistanceMind",
RESISTANCE_BODY = "resistanceBody",
SPELL_CASTING = "spellCasting",
BRAWL = "brawl",
POISON_RESISTANCE = "poisonResistance",
LP = "lp",
AP = "ap"
}
export enum M5ModType {
ATTRIBUTE = "attribute",
STAT = "stat",
SKILL = "skill"
}
export enum M5ModOperation {
ADD_100 = "add100",
ADD = "add",
SET = "set",
FIXED = "fixed"
}
export interface M5ItemMod {
type: M5ModType
id: string
operation: M5ModOperation
value: number
}
export function enumKeys<O extends object, K extends keyof O = keyof O>(obj: O): K[] {
return Object.keys(obj).filter(k => Number.isNaN(+k)) as K[]
}