diff --git a/lang/de.json b/lang/de.json index 81cafd8..6f95cdd 100644 --- a/lang/de.json +++ b/lang/de.json @@ -249,8 +249,7 @@ "midgard5.deprivations": "Entbehrungen", "midgard5.deprivationCold": "Zähigkeit Kälte", "midgard5.deprivationHeat": "Zähigkeit Hitze", - "midgard5.deprivationFood": "Zähigkeit Hunger", - "midgard5.deprivationThirst": "Zähigkeit Durst", + "midgard5.deprivationFood": "Zähigkeit Durst/Hunger", "midgard5.new-skill": "Neue Fertigkeit", "midgard5.special": "Spezial", @@ -411,6 +410,7 @@ "midgard5.mod-stat-apProtection": "Rüstungsschutz (AP)", "midgard5.mod-stat-deprivationCold": "Entbehrungen Kälte", "midgard5.mod-stat-deprivationHeat": "Entbehrungen Hitze", + "midgard5.mod-stat-deprivationFood": "Entbehrungen Durst/Hunger", "midgard5.mod-type": "Typ der Modifikation", "midgard5.mod-id": "Was soll modifiziert werden", diff --git a/source/module/M5Base.ts b/source/module/M5Base.ts index ddc5199..d31f2b1 100644 --- a/source/module/M5Base.ts +++ b/source/module/M5Base.ts @@ -103,19 +103,9 @@ export enum M5Stats { AP = "ap", PROTECTION_LP = "lpProtection", PROTECTION_AP = "apProtection", - DEPRIVATION_COLD = "cold", - DEPRIVATION_HEAT = "heat", - DEPRIVATION_FOOD = "food", - DEPRIVATION_THIRST = "thirst", - HOARD = "hoard", - HOARD_NEXT = "hoardNext", - HOARD_MIN = "hoardMin", - WEALTH = "wealth", - LOAD = "load", - HEAVY_LOAD = "heavyLoad", - LOAD_MAX = "loadMax", - THRUST_LOAD = "thrustLoad", - ENCUMBRANCE = "encumbrance", + DEPRIVATION_COLD = "deprivationCold", + DEPRIVATION_HEAT = "deprivationHeat", + DEPRIVATION_FOOD = "deprivationFood", } export enum M5ModType { @@ -199,9 +189,9 @@ export interface M5CharacterCalculatedData { brawlFw: number; poisonResistance: M5ModResult; enduranceBonus: number; - deprivationCold: number; - deprivationHeat: number; - deprivationFood: number; + deprivationCold: M5ModResult; + deprivationHeat: M5ModResult; + deprivationFood: M5ModResult; hoard: number; hoardNext: number; hoardMin: number; diff --git a/source/module/actors/M5Character.ts b/source/module/actors/M5Character.ts index afdf925..4b9546e 100644 --- a/source/module/actors/M5Character.ts +++ b/source/module/actors/M5Character.ts @@ -114,9 +114,9 @@ export class M5Character extends Actor { brawlFw: 0, poisonResistance: { value: 0, mods: [] }, enduranceBonus: 0, - deprivationCold: 0, - deprivationHeat: 0, - deprivationFood: 0, + deprivationCold: { value: 0, mods: [] }, + deprivationHeat: { value: 0, mods: [] }, + deprivationFood: { value: 0, mods: [] }, hoard: 0, encumbrance: 0, load: 0, @@ -188,9 +188,9 @@ export class M5Character extends Actor { ret.stats.brawlFw = ret.stats.brawl.value + ret.stats.attackBonus.value + (data.info.race === "Zwerg" ? 1 : 0); ret.stats.poisonResistance = this.modResult(30 + Math.floor(ret.attributes.ko.value / 2)); ret.stats.enduranceBonus = Math.floor(ret.attributes.ko.value / 10) + Math.floor(ret.attributes.st.value / 20); - ret.stats.deprivationCold = (Math.floor(ret.attributes.ko.value / 2)); - ret.stats.deprivationHeat = (Math.floor(ret.attributes.ko.value / 2)); - ret.stats.deprivationFood = (Math.floor(40 + (ret.attributes.ko.value / 2))); + 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)); @@ -205,7 +205,10 @@ export class M5Character extends Actor { const aggregate = new M5ModAggregate(data, ret); context.items - ?.filter((item) => (item.type === "item" || item.type === "effect" || item.type === "armor" || item.type === "container" || item.type === "class") && item.system.equipped) + ?.filter( + (item) => + (item.type === "item" || item.type === "skill" || item.type === "effect" || item.type === "armor" || item.type === "container" || item.type === "class") && item.system.equipped + ) .forEach((item) => { const mods = item.system.mods; //console.log("Actor item mods", mods) @@ -446,41 +449,7 @@ export class M5Character extends Actor { containerId: item.system.containerId || "", }; }); - - //if (!skip?.encumbrance) { - //const item = context.items.filter((x) => x.name === "Belastung"); - //if (item.length === 0) { - // this.createEffect("Belastung", [ - // { id: "movement", operation: M5ModOperation.DIVISION, type: M5ModType.STAT, value: 2 }, - // { id: "attackBonus", operation: M5ModOperation.SUBTRACT, type: M5ModType.STAT, value: 4 }, - // { id: "defenseBonus", operation: M5ModOperation.SUBTRACT, type: M5ModType.STAT, value: 4 } - // ]); - //} else if (item.length === 2) { - // item[1]?.delete(); - //} - // - //if (item.length === 1) { - // item[0]?.update({ - // img: "icons/containers/bags/sack-simple-leather-orange.webp" }); - // } - // - //if (ret.stats.encumbrance <= ret.stats.heavyLoad) { - // item[0]?.update({ - // data: { - // equipped: false, - // } - // }); - // } - // - //if (ret.stats.encumbrance > ret.stats.heavyLoad) { - // item[0].update({ - // data: { - // equipped: true, - // }, - // }); - // } - //} - } + } if (!skip?.class) { context.items @@ -539,31 +508,6 @@ export class M5Character extends Actor { pp: item.system.pp, calc: item.system.calc, } as M5SkillCalculated; - - // Adjust attribute Aussehen based on Athletik skill - if (item.name === "Athletik") { - ret.attributes.au.value += Math.floor(item.system.fw / 3); - } - - // Adjust stat Bewegungsweite based on Laufen skill - if (item.name === "Laufen") { - ret.stats.movement.value += Math.floor(item.system.fw / 3); - } - - // Adjust stat Kälte based on Überleben (Gebirge) skill - if (item.name === "Überleben (Gebirge)") { - ret.stats.deprivationCold += Math.floor(item.system.fw * 5); - } - - // Adjust stat Kälte based on Überleben (Steppe) skill - if (item.name === "Überleben (Steppe)") { - ret.stats.deprivationHeat += Math.floor(item.system.fw * 5); - } - - // Adjust stat Durst & Hunger based on Robustheit skill - if (item.name === "Robustheit") { - ret.stats.deprivationFood += 10; - } }); } diff --git a/source/module/actors/M5ModAggregate.ts b/source/module/actors/M5ModAggregate.ts index a5f881a..f1eca6b 100644 --- a/source/module/actors/M5ModAggregate.ts +++ b/source/module/actors/M5ModAggregate.ts @@ -41,9 +41,9 @@ export default class M5ModAggregate { this.push({ type: M5ModType.STAT, id: M5Stats.AP, operation: M5ModOperation.SET, value: calc.stats.ap.value }, characterString); this.push({ type: M5ModType.STAT, id: M5Stats.PROTECTION_LP, operation: M5ModOperation.SET, value: calc.stats.lpProtection.value }, characterString); this.push({ type: M5ModType.STAT, id: M5Stats.PROTECTION_AP, operation: M5ModOperation.SET, value: calc.stats.apProtection.value }, characterString); - this.push({ type: M5ModType.STAT, id: M5Stats.DEPRIVATION_COLD, operation: M5ModOperation.SET, value: calc.stats.deprivationCold }, characterString); - this.push({ type: M5ModType.STAT, id: M5Stats.DEPRIVATION_HEAT, operation: M5ModOperation.SET, value: calc.stats.deprivationHeat }, characterString); - this.push({ type: M5ModType.STAT, id: M5Stats.DEPRIVATION_FOOD, operation: M5ModOperation.SET, value: calc.stats.deprivationFood }, characterString); + this.push({ type: M5ModType.STAT, id: M5Stats.DEPRIVATION_COLD, operation: M5ModOperation.SET, value: calc.stats.deprivationCold.value }, characterString); + this.push({ type: M5ModType.STAT, id: M5Stats.DEPRIVATION_HEAT, operation: M5ModOperation.SET, value: calc.stats.deprivationHeat.value }, characterString); + this.push({ type: M5ModType.STAT, id: M5Stats.DEPRIVATION_FOOD, operation: M5ModOperation.SET, value: calc.stats.deprivationFood.value }, characterString); } push(mod: M5ItemMod, source: string) { diff --git a/source/module/items/M5Item.ts b/source/module/items/M5Item.ts index 72845cc..24b7c3f 100644 --- a/source/module/items/M5Item.ts +++ b/source/module/items/M5Item.ts @@ -13,6 +13,7 @@ export class M5Item extends Item { const character = actor as M5Character; const itemData = (this as any).system; const calc = itemData.calc; + const name = (this as any).name; if (itemType === "item") { calc.containers = null; @@ -45,6 +46,29 @@ export class M5Item extends Item { }, ]; + // Adjust attribute Aussehen based on Athletik skill + if (name === "Athletik") { + itemData.mods[0] = { type: "attribute", id: "au", operation: "add100", value: Math.floor(calc.fw / 3) }; + } + // Adjust stat Bewegungsweite based on Laufen skill + if (name === "Laufen") { + itemData.mods[0] = { type: "stat", id: "movement", operation: "add", value: Math.floor(calc.fw / 3) }; + } + + // Adjust stat Kälte based on Überleben (Gebirge) skill + if (name === "Überleben (Gebirge)") { + itemData.mods[0] = { type: "stat", id: "deprivationCold", operation: "add", value: Math.floor(calc.fw * 5) }; + } + + // // Adjust stat Kälte based on Überleben (Steppe) skill + if (name === "Überleben (Steppe)") { + itemData.mods[0] = { type: "stat", id: "deprivationHeat", operation: "add", value: Math.floor(calc.fw * 5) }; + } + // // Adjust stat Durst & Hunger based on Robustheit skill + if (name === "Robustheit") { + itemData.mods[0] = { type: "stat", id: "deprivationFood", operation: "add", value: Math.floor(calc.fw * 5) }; + } + if (character) { const actorCalc = character.derivedData({ containers: true, diff --git a/source/module/rolls/M5Roll.ts b/source/module/rolls/M5Roll.ts index 7c0d219..5e80689 100644 --- a/source/module/rolls/M5Roll.ts +++ b/source/module/rolls/M5Roll.ts @@ -88,7 +88,8 @@ export class M5Roll { }); this.data.res.label = this.label; - if ((game as Game).settings.get("midgard5", "automatedPP")) { + console.log(this.data); + if ((game as Game).settings.get("midgard5", "automatedPP") && this.data.iType !== null) { if ((this.data.i.type === "language" || this.data.i.type === "general") && this.data.rolls[0].dice[0] >= 16) { this.actor.items.get(this.id).update({ system: { @@ -239,11 +240,11 @@ export class M5Roll { return new M5Roll(rollData, actor, (game as Game).i18n.localize("midgard5.brawl")); } - static deprivationCold (actor: any) { + static deprivationCold(actor: any) { const rollData = actor.getRollData() as M5RollData; rollData.rolls["0"] = { - formula: "@c.calc.stats.deprivationCold -1D100", + formula: "@c.calc.stats.deprivationCold.value -1D100", enabled: true, label: (game as Game).i18n.localize("midgard5.deprivationCold"), result: "", @@ -260,7 +261,7 @@ export class M5Roll { const rollData = actor.getRollData() as M5RollData; rollData.rolls["0"] = { - formula: "@c.calc.stats.deprivationHeat -1D100", + formula: "@c.calc.stats.deprivationHeat.value -1D100", enabled: true, label: (game as Game).i18n.localize("midgard5.deprivationHeat"), result: "", @@ -277,7 +278,7 @@ export class M5Roll { const rollData = actor.getRollData() as M5RollData; rollData.rolls["0"] = { - formula: "@c.calc.stats.deprivationFood -1D100", + formula: "@c.calc.stats.deprivationFood.value -1D100", enabled: true, label: (game as Game).i18n.localize("midgard5.deprivationFood"), result: "", diff --git a/source/template.json b/source/template.json index efc2cc9..ba41359 100644 --- a/source/template.json +++ b/source/template.json @@ -322,6 +322,7 @@ "templates": ["itemDescription", "attributeSelection"], "fw": 0, "attribute": "st", + "equipped": true, "skill": "", "type": "general", "rolls": { @@ -335,7 +336,8 @@ "output": "" }, "pp": 0, - "calc": {} + "calc": {}, + "mods": {} }, "item": { "templates": ["itemDescription", "equippable", "physical", "valuable", "hoarded"], diff --git a/templates/sheets/character/base_values.hbs b/templates/sheets/character/base_values.hbs index 33703de..20b25b7 100644 --- a/templates/sheets/character/base_values.hbs +++ b/templates/sheets/character/base_values.hbs @@ -103,19 +103,17 @@ {{localize "midgard5.resistanceBody"}} {{data.calc.stats.resistanceBody.value}} - {{localize "midgard5.valuable"}} - {{data.calc.stats.wealth}} {{#if (eq data.info.race "Zwerg")}} - - {{localize "midgard5.hoard"}} - {{data.calc.stats.hoard}} - - - {{localize "midgard5.hoardMin"}} - {{data.calc.stats.hoardMin}} - {{localize "midgard5.hoard-next"}} - {{data.calc.stats.hoardNext}} - + + {{localize "midgard5.hoard"}} + {{data.calc.stats.hoard}} + + + {{localize "midgard5.hoardMin"}} + {{data.calc.stats.hoardMin}} + {{localize "midgard5.hoard-next"}} + {{data.calc.stats.hoardNext}} + {{/if}} @@ -130,20 +128,16 @@ - - - - + + + + - + - - - - - + diff --git a/templates/sheets/item/class.hbs b/templates/sheets/item/class.hbs index 6e657c0..2d8e4ba 100644 --- a/templates/sheets/item/class.hbs +++ b/templates/sheets/item/class.hbs @@ -89,7 +89,7 @@ {{#each data.lernKostenZauber as |wert name|}} - + {{/each}}
{{localize "midgard5.deprivationThirst"}}{{data.calc.stats.deprivationFood.value}}{{localize "midgard5.deprivationFood"}}{{data.calc.stats.deprivationFood.value}} {{localize "midgard5.deprivationHeat"}}{{localize "midgard5.deprivationHeat"}} {{ data.calc.stats.deprivationHeat.value}} {{localize "midgard5.deprivationFood"}}{{data.calc.stats.deprivationFood.value}} {{localize "midgard5.deprivationCold"}}{{localize "midgard5.deprivationCold"}} {{data.calc.stats.deprivationCold.value}}