150 lines
2.5 KiB
TypeScript
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[]
|
|
}
|