diff --git a/source/module/actors/M5Character.ts b/source/module/actors/M5Character.ts index e745fcb..9f1f863 100644 --- a/source/module/actors/M5Character.ts +++ b/source/module/actors/M5Character.ts @@ -152,6 +152,7 @@ export class M5Character extends Actor { ret.level = M5Character.levelFromExp(data.info.race === "Zwerg" ? Math.min(data.calc.stats?.hoard * 2 || 0, data.es) : data.es); + //Set all values that are not dependent on another Value ret.attributes.st.value = M5Character.attributeMinMax(data.attributes.st); // TODO item effects ret.attributes.gs.value = M5Character.attributeMinMax(data.attributes.gs); ret.attributes.gw.value = M5Character.attributeMinMax(data.attributes.gw); @@ -172,6 +173,17 @@ export class M5Character extends Actor { ret.attributes.pa.bonus = M5Character.attributeBonus(data.attributes.pa); ret.attributes.wk.bonus = M5Character.attributeBonus(data.attributes.wk); + ret.stats.lp = this.modResult(data.lp); + ret.stats.ap = this.modResult(data.ap); + ret.stats.lpProtection = this.modResult(0); + ret.stats.apProtection = this.modResult(0); + ret.stats.movement = this.modResult(data.movement); + ret.stats.hoardMin = M5Character.levelThreshold.at(ret.level - 1) / 2; + ret.stats.hoardNext = M5Character.levelThreshold.at(ret.level) / 2; + ret.stats.wealth = parseFloat((data.info.gold + data.info.silver / 10 + data.info.copper / 100).toPrecision(3)); + ret.stats.hoard = 0; + ret.stats.encumbrance = 0; + if (!skip?.mods) { const aggregate = new M5ModAggregate(data, ret); @@ -192,15 +204,10 @@ export class M5Character extends Actor { ret.skillMods = aggregate.calculate(); } - ret.stats.lp = this.modResult(data.lp); - ret.stats.ap = this.modResult(data.ap); - ret.stats.lpProtection = this.modResult(0); - ret.stats.apProtection = this.modResult(0); ret.stats.defense = this.modResult(M5Character.defenseFromLevel(ret.level)); ret.stats.damageBonus = this.modResult(Math.floor(ret.attributes.st.value / 20) + Math.floor(ret.attributes.gs.value / 30) - 3); ret.stats.attackBonus = this.modResult(ret.attributes.gs.bonus); ret.stats.defenseBonus = this.modResult(ret.attributes.gw.bonus); - ret.stats.movement = this.modResult(data.movement); ret.stats.resistanceMind = this.modResult(ret.stats.defense.value + (data.info.race === "Mensch" ? ret.attributes.in.bonus : this.raceBonus(data.info.race))); ret.stats.resistanceBody = this.modResult(ret.stats.defense.value + (data.info.race === "Mensch" ? ret.attributes.ko.bonus : this.raceBonus(data.info.race))); ret.stats.spellCasting = this.modResult((data.info.magicUsing ? M5Character.spellCastingFromLevel(ret.level) : 3) + ret.attributes.zt.bonus); @@ -211,15 +218,10 @@ export class M5Character extends Actor { ret.stats.deprivationCold = this.modResult(Math.floor(ret.attributes.ko.value / 2)); ret.stats.deprivationHeat = this.modResult(Math.floor(ret.attributes.ko.value / 2)); ret.stats.deprivationFood = this.modResult(Math.floor(40 + ret.attributes.ko.value / 2)); - ret.stats.hoardMin = M5Character.levelThreshold.at(ret.level - 1) / 2; - ret.stats.hoardNext = M5Character.levelThreshold.at(ret.level) / 2; - ret.stats.wealth = parseFloat((data.info.gold + data.info.silver / 10 + data.info.copper / 100).toPrecision(3)); - ret.stats.hoard = 0; ret.stats.load = M5Character.loadValue(data.attributes.st); ret.stats.heavyLoad = M5Character.heavyLoadValue(data.attributes.st); ret.stats.loadMax = M5Character.maxLoadValue(data.attributes.st); ret.stats.thrustLoad = M5Character.thrustLoadValue(data.attributes.st); - ret.stats.encumbrance = 0; if (!skip?.containers) { context.items diff --git a/templates/sheets/character/base_values.hbs b/templates/sheets/character/base_values.hbs index 20b25b7..e4ecbc7 100644 --- a/templates/sheets/character/base_values.hbs +++ b/templates/sheets/character/base_values.hbs @@ -35,7 +35,7 @@