From 570d4c83da8f389f98f17129c929ae51beb78bf1 Mon Sep 17 00:00:00 2001 From: LeFrique Date: Thu, 14 Mar 2024 21:00:46 +0100 Subject: [PATCH 1/8] Entbehrungen + Added Deprivation for Cold, Heat and Food (Thirst & Hunger) on Base Values Page - Removed Drinking & Perception from Skills Page + Fixed Encumbrance Color Switch only above load --- lang/de.json | 15 ++++-- source/module/M5Base.ts | 15 +++--- source/module/actors/M5Character.ts | 35 ++++++++++---- source/module/actors/M5ModAggregate.ts | 5 +- source/module/rolls/M5Roll.ts | 35 ++++++++++---- source/module/sheets/M5CharacterSheet.ts | 13 +++-- source/template.json | 4 +- templates/sheets/character/base_values.hbs | 56 ++++++++++++++++++++++ templates/sheets/character/gear.hbs | 6 +-- templates/sheets/character/skills.hbs | 16 ------- 10 files changed, 146 insertions(+), 54 deletions(-) diff --git a/lang/de.json b/lang/de.json index 327c633..e586f56 100644 --- a/lang/de.json +++ b/lang/de.json @@ -211,7 +211,9 @@ "midgard5.thaumagraphie": "Thaumagraphie", "midgard5.thaumalogie": "Thaumalogie", "midgard5.tierkunde": "Tierkunde", - "midgard5.ueberleben": "Überleben", + "midgard5.ueberlebenWald": "Überleben (Wald)", + "midgard5.ueberlebenSteppe": "Überleben (Steppe)", + "midgard5.ueberlebenGebirge": "Überleben (Gebirge)", "midgard5.verfuehren": "Verführen", "midgard5.verhoeren": "Verhören", "midgard5.verstellen": "Verstellen", @@ -239,8 +241,11 @@ "midgard5.enduranceBonus": "Ausdauerbonus", "midgard5.lpProtection": "Rüstungsschutz (LP)", "midgard5.apProtection": "Rüstungsschutz (AP)", - "midgard5.perception": "Wahrnehmung", - "midgard5.drinking": "Trinken", + "midgard5.deprivation": "Entbehrung", + "midgard5.deprivations": "Entbehrungen", + "midgard5.deprivationCold": "Zähigkeit Kälte", + "midgard5.deprivationHeat": "Zähigkeit Hitze", + "midgard5.deprivationFood": "Zähigkeit Hunger & Durst", "midgard5.new-skill": "Neue Fertigkeit", "midgard5.special": "Spezial", @@ -391,8 +396,8 @@ "midgard5.mod-stat-ap": "Ausdauerpunkte", "midgard5.mod-stat-lpProtection": "Rüstungsschutz (LP)", "midgard5.mod-stat-apProtection": "Rüstungsschutz (AP)", - "midgard5.mod-stat-perception": "Wahrnehmung", - "midgard5.mod-stat-drinking": "Trinken", + "midgard5.mod-stat-deprivationCold": "Entbehrungen Kälte", + "midgard5.mod-stat-deprivationHeat": "Entbehrungen Hitze", "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 586b84f..e076f6f 100644 --- a/source/module/M5Base.ts +++ b/source/module/M5Base.ts @@ -103,8 +103,9 @@ export enum M5Stats { AP = "ap", PROTECTION_LP = "lpProtection", PROTECTION_AP = "apProtection", - PERCEPTION = "perception", - DRINKING = "drinking", + DEPRIVATION_COLD = "cold", + DEPRIVATION_HEAT = "heat", + DEPRIVATION_FOOD = "food", HOARD = "hoard", HOARD_NEXT = "hoardNext", HOARD_MIN = "hoardMin", @@ -197,10 +198,12 @@ export interface M5CharacterCalculatedData { brawlFw: number; poisonResistance: M5ModResult; enduranceBonus: number; - perception: M5ModResult; - perceptionFW: number; - drinking: M5ModResult; - drinkingFW: number; + deprivationCold: M5ModResult; + deprivationColdPw: number; + deprivationHeat: M5ModResult; + deprivationHeatPw: number; + deprivationFood: M5ModResult; + deprivationFoodPw: number; hoard: number; hoardNext: number; hoardMin: number; diff --git a/source/module/actors/M5Character.ts b/source/module/actors/M5Character.ts index 290bae8..200df12 100644 --- a/source/module/actors/M5Character.ts +++ b/source/module/actors/M5Character.ts @@ -126,10 +126,12 @@ export class M5Character extends Actor { brawlFw: 0, poisonResistance: { value: 0, mods: [] }, enduranceBonus: 0, - perception: { value: 0, mods: [] }, - perceptionFW: 0, - drinking: { value: 0, mods: [] }, - drinkingFW: 0, + deprivationCold: { value: 0, mods: [] }, + deprivationColdPw: 0, + deprivationHeat: { value: 0, mods: [] }, + deprivationHeatPw: 0, + deprivationFood: { value: 0, mods: [] }, + deprivationFoodPw: 0, hoard: 0, encumbrance: 0, load: 0, @@ -205,10 +207,12 @@ 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.perception = this.modResult(0); - ret.stats.perceptionFW = 6; - ret.stats.drinking = this.modResult(0); - ret.stats.drinkingFW = Math.floor(ret.attributes.ko.value / 10); + ret.stats.deprivationCold = this.modResult(0); + ret.stats.deprivationColdPw = Math.min(100, Math.max(0, Math.floor(ret.attributes.ko.value / 2))); + ret.stats.deprivationHeat = this.modResult(0); + ret.stats.deprivationHeatPw = Math.min(100, Math.max(0, Math.floor(ret.attributes.ko.value / 2))); + ret.stats.deprivationFood = this.modResult(0); + ret.stats.deprivationFoodPw = Math.min(100, Math.max(0, 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)); @@ -558,6 +562,21 @@ export class M5Character extends Actor { 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.value += Math.floor(item.system.fw * 5); + } + + // Adjust stat Kälte based on Überleben (Steppe) skill + if (item.name === "Überleben (Steppe)") { + ret.stats.deprivationHeat.value += Math.floor(item.system.fw * 5); + } + + // Adjust stat Durst & Hunger based on Robustheit skill + if (item.name === "Robustheit") { + ret.stats.deprivationFood.value += Math.floor(item.system.fw + 10); + } }); } diff --git a/source/module/actors/M5ModAggregate.ts b/source/module/actors/M5ModAggregate.ts index 63350eb..f1eca6b 100644 --- a/source/module/actors/M5ModAggregate.ts +++ b/source/module/actors/M5ModAggregate.ts @@ -41,8 +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.PERCEPTION, operation: M5ModOperation.SET, value: calc.stats.perception.value }, characterString); - this.push({ type: M5ModType.STAT, id: M5Stats.DRINKING, operation: M5ModOperation.SET, value: calc.stats.drinking.value }, 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/rolls/M5Roll.ts b/source/module/rolls/M5Roll.ts index 9a5f316..c14442e 100644 --- a/source/module/rolls/M5Roll.ts +++ b/source/module/rolls/M5Roll.ts @@ -56,7 +56,7 @@ export class M5Roll { //if (rollResult.type === "ew") { if (d.total === 1) rowRes = M5EwResult.FUMBLE; else if (d.total === 20) rowRes = M5EwResult.CRITICAL; - else if (d.total >= 16) rowRes = M5EwResult.HIGH; + else if (d.total === 16, 17, 18, 19) rowRes = M5EwResult.HIGH; } else if (d.faces === 100) { face100 = d.total as number; } @@ -195,13 +195,13 @@ export class M5Roll { return new M5Roll(rollData, actor, (game as Game).i18n.localize("midgard5.brawl")); } - static perception(actor: any) { + static deprivationCold (actor: any) { const rollData = actor.getRollData() as M5RollData; rollData.rolls["0"] = { - formula: "1d20 + @c.calc.stats.perception.value + @c.calc.stats.perceptionFW", + formula: "1d100 + @c.calc.stats.deprivationCold.value + @c.calc.stats.deprivationColdPw -100", enabled: true, - label: (game as Game).i18n.localize("midgard5.perception"), + label: (game as Game).i18n.localize("midgard5.deprivationCold"), result: "", total: 0, totalStr: "", @@ -209,16 +209,16 @@ export class M5Roll { css: "", } as M5RollResult; - return new M5Roll(rollData, actor, (game as Game).i18n.localize("midgard5.perception")); + return new M5Roll(rollData, actor, (game as Game).i18n.localize("midgard5.deprivationCold")); } - static drinking(actor: any) { + static deprivationHeat(actor: any) { const rollData = actor.getRollData() as M5RollData; rollData.rolls["0"] = { - formula: "1d20 + @c.calc.stats.drinking.value + @c.calc.stats.drinkingFW", + formula: "1d100 + @c.calc.stats.deprivationHeat.value + @c.calc.stats.deprivationHeatPw -100", enabled: true, - label: (game as Game).i18n.localize("midgard5.drinking"), + label: (game as Game).i18n.localize("midgard5.deprivationHeat"), result: "", total: 0, totalStr: "", @@ -226,7 +226,24 @@ export class M5Roll { css: "", } as M5RollResult; - return new M5Roll(rollData, actor, (game as Game).i18n.localize("midgard5.drinking")); + return new M5Roll(rollData, actor, (game as Game).i18n.localize("midgard5.deprivationHeat")); + } + + static deprivationFood(actor: any) { + const rollData = actor.getRollData() as M5RollData; + + rollData.rolls["0"] = { + formula: "1d100 + @c.calc.stats.deprivationFood.value + @c.calc.stats.deprivationFoodPw -100", + enabled: true, + label: (game as Game).i18n.localize("midgard5.deprivationFood"), + result: "", + total: 0, + totalStr: "", + dice: {}, + css: "", + } as M5RollResult; + + return new M5Roll(rollData, actor, (game as Game).i18n.localize("midgard5.deprivationFood")); } static defense(actor: any) { diff --git a/source/module/sheets/M5CharacterSheet.ts b/source/module/sheets/M5CharacterSheet.ts index 454a7ab..058fe3a 100644 --- a/source/module/sheets/M5CharacterSheet.ts +++ b/source/module/sheets/M5CharacterSheet.ts @@ -247,13 +247,18 @@ export default class M5CharacterSheet extends ActorSheet { await roll.toMessage(); }); - html.find(".roll-perception-button").on("click", async (event) => { - const roll = M5Roll.perception(this.actor); + html.find(".roll-deprivationCold-button").on("click", async (event) => { + const roll = M5Roll.deprivationCold(this.actor); await roll.toMessage(); }); - html.find(".roll-drinking-button").on("click", async (event) => { - const roll = M5Roll.drinking(this.actor); + html.find(".roll-deprivationHeat-button").on("click", async (event) => { + const roll = M5Roll.deprivationHeat(this.actor); + await roll.toMessage(); + }); + + html.find(".roll-deprivationFood-button").on("click", async (event) => { + const roll = M5Roll.deprivationFood(this.actor); await roll.toMessage(); }); diff --git a/source/template.json b/source/template.json index ddf875d..08dfec7 100644 --- a/source/template.json +++ b/source/template.json @@ -131,7 +131,9 @@ "tauchen": { "fw": 6, "attribute": "ko", "initial": 8, "pp": 0 }, "tanzen": { "fw": 6, "attribute": "ko", "initial": 8, "pp": 0 }, "tierkunde": { "fw": 0, "attribute": "in", "initial": 8, "pp": 0 }, - "ueberleben": { "fw": 6, "attribute": "in", "initial": 8, "pp": 0 }, + "ueberlebenWald": { "fw": 6, "attribute": "in", "initial": 8, "pp": 0 }, + "ueberlebenSteppe": { "fw": 6, "attribute": "in", "initial": 8, "pp": 0 }, + "ueberlebenGebirge": { "fw": 6, "attribute": "in", "initial": 8, "pp": 0 }, "verfuehren": { "fw": 3, "attribute": "pa", "initial": 8, "pp": 0 }, "verhoeren": { "fw": 3, "attribute": "pa", "initial": 8, "pp": 0 }, "verstellen": { "fw": 3, "attribute": "pa", "initial": 8, "pp": 0 }, diff --git a/templates/sheets/character/base_values.hbs b/templates/sheets/character/base_values.hbs index b7b9556..1a7f0a2 100644 --- a/templates/sheets/character/base_values.hbs +++ b/templates/sheets/character/base_values.hbs @@ -55,6 +55,62 @@ +
+
+
{{localize "midgard5.deprivations"}}
+ + + + + + + + + + + + + + + + + + {{#if (gt (add data.calc.stats.deprivationCold.value data.calc.stats.deprivationColdPw) 100)}} + + {{else}} + + {{/if}} + + + + + + + + {{#if (gt (add data.calc.stats.deprivationCold.value data.calc.stats.deprivationHeatPw) 100)}} + + {{else}} + + {{/if}} + + + + + + + + {{#if (gt (add data.calc.stats.deprivationFood.value data.calc.stats.deprivationFoodPw) 100)}} + + {{else}} + + {{/if}} + + + +
{{localize "midgard5.deprivation"}}{{localize "midgard5.ew"}}{{localize "midgard5.bonus"}}{{localize "midgard5.pw"}}
{{localize "midgard5.deprivationCold"}}{{data.calc.stats.deprivationCold.value}}{{data.calc.stats.deprivationColdPw}}100{{add data.calc.stats.deprivationCold.value data.calc.stats.deprivationColdPw}}
{{localize "midgard5.deprivationHeat"}}{{data.calc.stats.deprivationHeat.value}}{{data.calc.stats.deprivationHeatPw}}100{{add data.calc.stats.deprivationHeat.value data.calc.stats.deprivationHeatPw}}
{{localize "midgard5.deprivationFood"}}{{data.calc.stats.deprivationFoodPw}}{{data.calc.stats.deprivationFood.value}}100{{add data.calc.stats.deprivationFood.value data.calc.stats.deprivationFoodPw}}
+
+
+
{{localize "midgard5.calculated-values"}}
diff --git a/templates/sheets/character/gear.hbs b/templates/sheets/character/gear.hbs index d56105a..0556540 100644 --- a/templates/sheets/character/gear.hbs +++ b/templates/sheets/character/gear.hbs @@ -48,9 +48,9 @@ - - - + + + diff --git a/templates/sheets/character/skills.hbs b/templates/sheets/character/skills.hbs index bea88e2..731fb76 100644 --- a/templates/sheets/character/skills.hbs +++ b/templates/sheets/character/skills.hbs @@ -25,22 +25,6 @@ {{/each}} - - {{localize "midgard5.perception"}} - {{data.calc.stats.perceptionFW}} - {{data.calc.stats.perception.value}} - {{add data.calc.stats.perception.value data.calc.stats.perceptionFW}} - - - - - {{localize "midgard5.drinking"}} - {{data.calc.stats.drinkingFW}} - {{data.calc.stats.drinking.value}} - {{add data.calc.stats.drinking.value data.calc.stats.drinkingFW}} - - -
-- 2.40.1 From 83d5cfc51c38c5365620b4ffc0703d67a1ed78a2 Mon Sep 17 00:00:00 2001 From: LeFrique Date: Thu, 14 Mar 2024 21:20:00 +0100 Subject: [PATCH 2/8] Beautyupdate + Added Images to Entbehrungen + Cleanup spells --- lang/de.json | 2 +- templates/sheets/character/base_values.hbs | 8 ++++---- templates/sheets/character/spells.hbs | 4 ++-- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/lang/de.json b/lang/de.json index 02fda8d..9f287d8 100644 --- a/lang/de.json +++ b/lang/de.json @@ -40,7 +40,7 @@ "midgard5.background": "Hintergrund", "midgard5.attribute": "Eigenschaft", "midgard5.attributes": "Eigenschaften", - "midgard5.points": "Punkte", + "midgard5.points": "Erfahrung", "midgard5.calculated-value": "Berechneter Wert", "midgard5.calculated-values": "Werte und Boni", diff --git a/templates/sheets/character/base_values.hbs b/templates/sheets/character/base_values.hbs index 1a7f0a2..c9bf798 100644 --- a/templates/sheets/character/base_values.hbs +++ b/templates/sheets/character/base_values.hbs @@ -61,7 +61,7 @@ - + @@ -71,7 +71,7 @@ - + @@ -83,7 +83,7 @@ - + @@ -95,7 +95,7 @@ - + diff --git a/templates/sheets/character/spells.hbs b/templates/sheets/character/spells.hbs index df236c5..8d36a43 100644 --- a/templates/sheets/character/spells.hbs +++ b/templates/sheets/character/spells.hbs @@ -72,8 +72,8 @@ {{/each}} -
{{localize "midgard5.deprivation"}} {{localize "midgard5.ew"}} {{localize "midgard5.bonus"}}
{{localize "midgard5.deprivationCold"}} {{data.calc.stats.deprivationCold.value}} {{data.calc.stats.deprivationColdPw}}
{{localize "midgard5.deprivationHeat"}} {{data.calc.stats.deprivationHeat.value}} {{data.calc.stats.deprivationHeatPw}}
{{localize "midgard5.deprivationFood"}} {{data.calc.stats.deprivationFoodPw}} {{data.calc.stats.deprivationFood.value}}
- + +
-- 2.40.1 From e679b9a97203aa1520bfa4f046c611a95ac6e9b9 Mon Sep 17 00:00:00 2001 From: LeFrique Date: Sat, 16 Mar 2024 17:49:24 +0100 Subject: [PATCH 3/8] Entbehrungsupdate + Better organization --- source/module/M5Base.ts | 3 +++ source/module/actors/M5Character.ts | 24 ++++++++++++++-------- source/module/rolls/M5Roll.ts | 6 +++--- templates/sheets/character/base_values.hbs | 24 ++++++---------------- 4 files changed, 27 insertions(+), 30 deletions(-) diff --git a/source/module/M5Base.ts b/source/module/M5Base.ts index e076f6f..d1518ca 100644 --- a/source/module/M5Base.ts +++ b/source/module/M5Base.ts @@ -199,10 +199,13 @@ export interface M5CharacterCalculatedData { poisonResistance: M5ModResult; enduranceBonus: number; deprivationCold: M5ModResult; + deprivationColdBonus: M5ModResult; deprivationColdPw: number; deprivationHeat: M5ModResult; + deprivationHeatBonus: M5ModResult; deprivationHeatPw: number; deprivationFood: M5ModResult; + deprivationFoodBonus: M5ModResult; deprivationFoodPw: number; hoard: number; hoardNext: number; diff --git a/source/module/actors/M5Character.ts b/source/module/actors/M5Character.ts index cb72e9e..3ce532c 100644 --- a/source/module/actors/M5Character.ts +++ b/source/module/actors/M5Character.ts @@ -127,10 +127,13 @@ export class M5Character extends Actor { poisonResistance: { value: 0, mods: [] }, enduranceBonus: 0, deprivationCold: { value: 0, mods: [] }, + deprivationColdBonus: { value: 0, mods: [] }, deprivationColdPw: 0, deprivationHeat: { value: 0, mods: [] }, + deprivationHeatBonus: { value: 0, mods: [] }, deprivationHeatPw: 0, deprivationFood: { value: 0, mods: [] }, + deprivationFoodBonus: { value: 0, mods: [] }, deprivationFoodPw: 0, hoard: 0, encumbrance: 0, @@ -207,12 +210,15 @@ 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 = this.modResult(0); - ret.stats.deprivationColdPw = Math.min(100, Math.max(0, Math.floor(ret.attributes.ko.value / 2))); - ret.stats.deprivationHeat = this.modResult(0); - ret.stats.deprivationHeatPw = Math.min(100, Math.max(0, Math.floor(ret.attributes.ko.value / 2))); - ret.stats.deprivationFood = this.modResult(0); - ret.stats.deprivationFoodPw = Math.min(100, Math.max(0, Math.floor(40 + (ret.attributes.ko.value / 2)))); + ret.stats.deprivationCold = this.modResult(Math.floor(ret.attributes.ko.value / 2)); + ret.stats.deprivationColdBonus = this.modResult(0); + ret.stats.deprivationColdPw = Math.min(100, (ret.stats.deprivationCold.value + ret.stats.deprivationColdBonus.value)); + ret.stats.deprivationHeat = this.modResult(Math.floor(ret.attributes.ko.value / 2)); + ret.stats.deprivationHeatBonus = this.modResult(0); + ret.stats.deprivationHeatPw = Math.min(100, (ret.stats.deprivationHeat.value + ret.stats.deprivationHeatBonus.value)); + ret.stats.deprivationFood = this.modResult(Math.floor(40 + (ret.attributes.ko.value / 2))); + ret.stats.deprivationFoodBonus = this.modResult(0); + ret.stats.deprivationFoodPw = Math.min(100, (ret.stats.deprivationFood.value + ret.stats.deprivationFoodBonus.value)); 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)); @@ -554,17 +560,17 @@ export class M5Character extends Actor { // Adjust stat Kälte based on Überleben (Gebirge) skill if (item.name === "Überleben (Gebirge)") { - ret.stats.deprivationCold.value += Math.floor(item.system.fw * 5); + ret.stats.deprivationColdBonus.value += Math.floor(item.system.fw * 5); } // Adjust stat Kälte based on Überleben (Steppe) skill if (item.name === "Überleben (Steppe)") { - ret.stats.deprivationHeat.value += Math.floor(item.system.fw * 5); + ret.stats.deprivationHeatBonus.value += Math.floor(item.system.fw * 5); } // Adjust stat Durst & Hunger based on Robustheit skill if (item.name === "Robustheit") { - ret.stats.deprivationFood.value += Math.floor(item.system.fw + 10); + ret.stats.deprivationFoodBonus.value += 10; } }); } diff --git a/source/module/rolls/M5Roll.ts b/source/module/rolls/M5Roll.ts index c14442e..76b90da 100644 --- a/source/module/rolls/M5Roll.ts +++ b/source/module/rolls/M5Roll.ts @@ -199,7 +199,7 @@ export class M5Roll { const rollData = actor.getRollData() as M5RollData; rollData.rolls["0"] = { - formula: "1d100 + @c.calc.stats.deprivationCold.value + @c.calc.stats.deprivationColdPw -100", + formula: "1d100 + @c.calc.stats.deprivationCold.value + @c.calc.stats.deprivationColdBonus.value -100", enabled: true, label: (game as Game).i18n.localize("midgard5.deprivationCold"), result: "", @@ -216,7 +216,7 @@ export class M5Roll { const rollData = actor.getRollData() as M5RollData; rollData.rolls["0"] = { - formula: "1d100 + @c.calc.stats.deprivationHeat.value + @c.calc.stats.deprivationHeatPw -100", + formula: "1d100 + @c.calc.stats.deprivationHeat.value + @c.calc.stats.deprivationHeatBonus.value -100", enabled: true, label: (game as Game).i18n.localize("midgard5.deprivationHeat"), result: "", @@ -233,7 +233,7 @@ export class M5Roll { const rollData = actor.getRollData() as M5RollData; rollData.rolls["0"] = { - formula: "1d100 + @c.calc.stats.deprivationFood.value + @c.calc.stats.deprivationFoodPw -100", + formula: "1d100 + @c.calc.stats.deprivationFood.value + @c.calc.stats.deprivationFoodBonus.value -100", enabled: true, label: (game as Game).i18n.localize("midgard5.deprivationFood"), result: "", diff --git a/templates/sheets/character/base_values.hbs b/templates/sheets/character/base_values.hbs index c9bf798..c9097a2 100644 --- a/templates/sheets/character/base_values.hbs +++ b/templates/sheets/character/base_values.hbs @@ -74,36 +74,24 @@ {{localize "midgard5.deprivationCold"}} {{data.calc.stats.deprivationCold.value}} - {{data.calc.stats.deprivationColdPw}} - {{#if (gt (add data.calc.stats.deprivationCold.value data.calc.stats.deprivationColdPw) 100)}} - 100 - {{else}} - {{add data.calc.stats.deprivationCold.value data.calc.stats.deprivationColdPw}} - {{/if}} + {{data.calc.stats.deprivationColdBonus.value}} + {{add data.calc.stats.deprivationCold.value data.calc.stats.deprivationColdBonus.value}} {{localize "midgard5.deprivationHeat"}} {{data.calc.stats.deprivationHeat.value}} - {{data.calc.stats.deprivationHeatPw}} - {{#if (gt (add data.calc.stats.deprivationCold.value data.calc.stats.deprivationHeatPw) 100)}} - 100 - {{else}} - {{add data.calc.stats.deprivationHeat.value data.calc.stats.deprivationHeatPw}} - {{/if}} + {{data.calc.stats.deprivationHeatBonus.value}} + {{add data.calc.stats.deprivationHeat.value data.calc.stats.deprivationHeatBonus.value}} {{localize "midgard5.deprivationFood"}} - {{data.calc.stats.deprivationFoodPw}} {{data.calc.stats.deprivationFood.value}} - {{#if (gt (add data.calc.stats.deprivationFood.value data.calc.stats.deprivationFoodPw) 100)}} - 100 - {{else}} - {{add data.calc.stats.deprivationFood.value data.calc.stats.deprivationFoodPw}} - {{/if}} + {{data.calc.stats.deprivationFoodBonus.value}} + {{add data.calc.stats.deprivationFood.value data.calc.stats.deprivationFoodBonus.value}} -- 2.40.1 From c99dab0cdf52596d977cc6f7ecb4855b59921dd7 Mon Sep 17 00:00:00 2001 From: LeFrique Date: Sun, 17 Mar 2024 13:33:43 +0100 Subject: [PATCH 4/8] Deprivationfix & QoL + Fixed wrong calculation of deprivations + Added wealth on base_values for better look & overview (especially for dwarves) --- source/module/rolls/M5Roll.ts | 6 +++--- templates/sheets/character/base_values.hbs | 13 ++++++------- 2 files changed, 9 insertions(+), 10 deletions(-) diff --git a/source/module/rolls/M5Roll.ts b/source/module/rolls/M5Roll.ts index 76b90da..c490667 100644 --- a/source/module/rolls/M5Roll.ts +++ b/source/module/rolls/M5Roll.ts @@ -199,7 +199,7 @@ export class M5Roll { const rollData = actor.getRollData() as M5RollData; rollData.rolls["0"] = { - formula: "1d100 + @c.calc.stats.deprivationCold.value + @c.calc.stats.deprivationColdBonus.value -100", + formula: "@c.calc.stats.deprivationCold.value + @c.calc.stats.deprivationColdBonus.value -1D100", enabled: true, label: (game as Game).i18n.localize("midgard5.deprivationCold"), result: "", @@ -216,7 +216,7 @@ export class M5Roll { const rollData = actor.getRollData() as M5RollData; rollData.rolls["0"] = { - formula: "1d100 + @c.calc.stats.deprivationHeat.value + @c.calc.stats.deprivationHeatBonus.value -100", + formula: "@c.calc.stats.deprivationHeat.value + @c.calc.stats.deprivationHeatBonus.value -1D100", enabled: true, label: (game as Game).i18n.localize("midgard5.deprivationHeat"), result: "", @@ -233,7 +233,7 @@ export class M5Roll { const rollData = actor.getRollData() as M5RollData; rollData.rolls["0"] = { - formula: "1d100 + @c.calc.stats.deprivationFood.value + @c.calc.stats.deprivationFoodBonus.value -100", + formula: "@c.calc.stats.deprivationFood.value + @c.calc.stats.deprivationFoodBonus.value -1D100", enabled: true, label: (game as Game).i18n.localize("midgard5.deprivationFood"), result: "", diff --git a/templates/sheets/character/base_values.hbs b/templates/sheets/character/base_values.hbs index c9097a2..e5ab39c 100644 --- a/templates/sheets/character/base_values.hbs +++ b/templates/sheets/character/base_values.hbs @@ -46,8 +46,8 @@ {{localize "midgard5.luckPoints"}} - - + {{localize "midgard5.valuable"}} + {{data.calc.stats.wealth}} @@ -147,21 +147,20 @@ {{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}} - + {{/if}} - -- 2.40.1 From 0291228e5156ba32c0c3a1c8b8485e76ca720232 Mon Sep 17 00:00:00 2001 From: LeFrique Date: Sun, 17 Mar 2024 18:22:14 +0100 Subject: [PATCH 5/8] Capacity Bonus + Added capacity for containers (forgot to build new branch & only minor changes) --- lang/de.json | 2 +- source/module/actors/M5Character.ts | 1 + source/template.json | 1 + templates/sheets/character/gear.hbs | 6 ++++++ templates/sheets/item/container.hbs | 12 ++++++++++++ 5 files changed, 21 insertions(+), 1 deletion(-) diff --git a/lang/de.json b/lang/de.json index 9f287d8..4859009 100644 --- a/lang/de.json +++ b/lang/de.json @@ -131,7 +131,7 @@ "midgard5.heavy-load": "Schwere Last", "midgard5.thrust-load": "Schublast", "midgard5.load-max": "Höchstlast", - "midgard5.load-capacity": "Tragkraft", + "midgard5.capacity": "Tragkraft", "midgard5.exp-overall": "Erfahrungsschatz", "midgard5.exp-available": "Erfahrungspunkte", diff --git a/source/module/actors/M5Character.ts b/source/module/actors/M5Character.ts index 3ce532c..5cadd1a 100644 --- a/source/module/actors/M5Character.ts +++ b/source/module/actors/M5Character.ts @@ -276,6 +276,7 @@ export class M5Character extends Actor { calc: item.system.calc, equipped: item.system?.equipped, weight: item.system.weight || 0, + capacity: item.system.capacity || 0, value: item.system.value || 0, currency: item.system.currency || "", quantity: item.system.quantity || 0, diff --git a/source/template.json b/source/template.json index 08dfec7..191db91 100644 --- a/source/template.json +++ b/source/template.json @@ -219,6 +219,7 @@ "physical": { "value": 0, "weight": 0, + "capacity": 0, "containerId": "", "magic": false }, diff --git a/templates/sheets/character/gear.hbs b/templates/sheets/character/gear.hbs index 100521a..79efc09 100644 --- a/templates/sheets/character/gear.hbs +++ b/templates/sheets/character/gear.hbs @@ -231,6 +231,7 @@ {{localize "TYPES.Item.container"}} {{localize "midgard5.item-value"}} {{localize "midgard5.item-weight"}} + {{localize "midgard5.capacity"}} @@ -254,6 +255,11 @@ {{item.weight}} kg {{/unless}} + + {{#unless (eq item.capacity "")}} + {{item.capacity}} kg + {{/unless}} + {{#if item.equipped}} diff --git a/templates/sheets/item/container.hbs b/templates/sheets/item/container.hbs index 2add63f..13c1a87 100644 --- a/templates/sheets/item/container.hbs +++ b/templates/sheets/item/container.hbs @@ -26,6 +26,12 @@ + +
+ {{localize "midgard5.capacity"}} + +
+ @@ -42,6 +48,12 @@ + +
+ {{localize "midgard5.item-weight"}} + +
+ -- 2.40.1 From e5ace685573e2f27e628bb9ff565fb699989484c Mon Sep 17 00:00:00 2001 From: LeFrique Date: Sat, 23 Mar 2024 15:51:30 +0100 Subject: [PATCH 6/8] Fixed Deprivation - Removed deprivationBonus & Pw + Changed container to footer on baseValues + Fixed rolls, wording & images in new footer --- lang/de.json | 5 +- source/module/M5Base.ts | 13 ++-- source/module/actors/M5Character.ts | 30 +++------ source/module/actors/M5ModAggregate.ts | 6 +- source/module/rolls/M5Roll.ts | 6 +- templates/sheets/character/base_values.hbs | 73 +++++++++------------- 6 files changed, 50 insertions(+), 83 deletions(-) diff --git a/lang/de.json b/lang/de.json index 4859009..fe0a7f3 100644 --- a/lang/de.json +++ b/lang/de.json @@ -241,11 +241,12 @@ "midgard5.enduranceBonus": "Ausdauerbonus", "midgard5.lpProtection": "Rüstungsschutz (LP)", "midgard5.apProtection": "Rüstungsschutz (AP)", - "midgard5.deprivation": "Entbehrung", + "midgard5.deprivation": "Zähigkeit", "midgard5.deprivations": "Entbehrungen", "midgard5.deprivationCold": "Zähigkeit Kälte", "midgard5.deprivationHeat": "Zähigkeit Hitze", - "midgard5.deprivationFood": "Zähigkeit Hunger & Durst", + "midgard5.deprivationFood": "Zähigkeit Hunger", + "midgard5.deprivationThirst": "Zähigkeit Durst", "midgard5.new-skill": "Neue Fertigkeit", "midgard5.special": "Spezial", diff --git a/source/module/M5Base.ts b/source/module/M5Base.ts index d1518ca..1a958cb 100644 --- a/source/module/M5Base.ts +++ b/source/module/M5Base.ts @@ -106,6 +106,7 @@ export enum M5Stats { DEPRIVATION_COLD = "cold", DEPRIVATION_HEAT = "heat", DEPRIVATION_FOOD = "food", + DEPRIVATION_THIRST = "thirst", HOARD = "hoard", HOARD_NEXT = "hoardNext", HOARD_MIN = "hoardMin", @@ -198,15 +199,9 @@ export interface M5CharacterCalculatedData { brawlFw: number; poisonResistance: M5ModResult; enduranceBonus: number; - deprivationCold: M5ModResult; - deprivationColdBonus: M5ModResult; - deprivationColdPw: number; - deprivationHeat: M5ModResult; - deprivationHeatBonus: M5ModResult; - deprivationHeatPw: number; - deprivationFood: M5ModResult; - deprivationFoodBonus: M5ModResult; - deprivationFoodPw: number; + deprivationCold: number; + deprivationHeat: number; + deprivationFood: number; hoard: number; hoardNext: number; hoardMin: number; diff --git a/source/module/actors/M5Character.ts b/source/module/actors/M5Character.ts index 5cadd1a..9f32ce1 100644 --- a/source/module/actors/M5Character.ts +++ b/source/module/actors/M5Character.ts @@ -126,15 +126,9 @@ export class M5Character extends Actor { brawlFw: 0, poisonResistance: { value: 0, mods: [] }, enduranceBonus: 0, - deprivationCold: { value: 0, mods: [] }, - deprivationColdBonus: { value: 0, mods: [] }, - deprivationColdPw: 0, - deprivationHeat: { value: 0, mods: [] }, - deprivationHeatBonus: { value: 0, mods: [] }, - deprivationHeatPw: 0, - deprivationFood: { value: 0, mods: [] }, - deprivationFoodBonus: { value: 0, mods: [] }, - deprivationFoodPw: 0, + deprivationCold: 0, + deprivationHeat: 0, + deprivationFood: 0, hoard: 0, encumbrance: 0, load: 0, @@ -210,15 +204,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 = this.modResult(Math.floor(ret.attributes.ko.value / 2)); - ret.stats.deprivationColdBonus = this.modResult(0); - ret.stats.deprivationColdPw = Math.min(100, (ret.stats.deprivationCold.value + ret.stats.deprivationColdBonus.value)); - ret.stats.deprivationHeat = this.modResult(Math.floor(ret.attributes.ko.value / 2)); - ret.stats.deprivationHeatBonus = this.modResult(0); - ret.stats.deprivationHeatPw = Math.min(100, (ret.stats.deprivationHeat.value + ret.stats.deprivationHeatBonus.value)); - ret.stats.deprivationFood = this.modResult(Math.floor(40 + (ret.attributes.ko.value / 2))); - ret.stats.deprivationFoodBonus = this.modResult(0); - ret.stats.deprivationFoodPw = Math.min(100, (ret.stats.deprivationFood.value + ret.stats.deprivationFoodBonus.value)); + 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.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)); @@ -561,17 +549,17 @@ export class M5Character extends Actor { // Adjust stat Kälte based on Überleben (Gebirge) skill if (item.name === "Überleben (Gebirge)") { - ret.stats.deprivationColdBonus.value += Math.floor(item.system.fw * 5); + 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.deprivationHeatBonus.value += Math.floor(item.system.fw * 5); + ret.stats.deprivationHeat += Math.floor(item.system.fw * 5); } // Adjust stat Durst & Hunger based on Robustheit skill if (item.name === "Robustheit") { - ret.stats.deprivationFoodBonus.value += 10; + ret.stats.deprivationFood += 10; } }); } diff --git a/source/module/actors/M5ModAggregate.ts b/source/module/actors/M5ModAggregate.ts index f1eca6b..a5f881a 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.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); + 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); } push(mod: M5ItemMod, source: string) { diff --git a/source/module/rolls/M5Roll.ts b/source/module/rolls/M5Roll.ts index c490667..2bf61d5 100644 --- a/source/module/rolls/M5Roll.ts +++ b/source/module/rolls/M5Roll.ts @@ -199,7 +199,7 @@ export class M5Roll { const rollData = actor.getRollData() as M5RollData; rollData.rolls["0"] = { - formula: "@c.calc.stats.deprivationCold.value + @c.calc.stats.deprivationColdBonus.value -1D100", + formula: "@c.calc.stats.deprivationCold -1D100", enabled: true, label: (game as Game).i18n.localize("midgard5.deprivationCold"), result: "", @@ -216,7 +216,7 @@ export class M5Roll { const rollData = actor.getRollData() as M5RollData; rollData.rolls["0"] = { - formula: "@c.calc.stats.deprivationHeat.value + @c.calc.stats.deprivationHeatBonus.value -1D100", + formula: "@c.calc.stats.deprivationHeat -1D100", enabled: true, label: (game as Game).i18n.localize("midgard5.deprivationHeat"), result: "", @@ -233,7 +233,7 @@ export class M5Roll { const rollData = actor.getRollData() as M5RollData; rollData.rolls["0"] = { - formula: "@c.calc.stats.deprivationFood.value + @c.calc.stats.deprivationFoodBonus.value -1D100", + formula: "@c.calc.stats.deprivationFood -1D100", enabled: true, label: (game as Game).i18n.localize("midgard5.deprivationFood"), result: "", diff --git a/templates/sheets/character/base_values.hbs b/templates/sheets/character/base_values.hbs index e5ab39c..3cd7931 100644 --- a/templates/sheets/character/base_values.hbs +++ b/templates/sheets/character/base_values.hbs @@ -55,50 +55,6 @@ -
-
-
{{localize "midgard5.deprivations"}}
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
{{localize "midgard5.deprivation"}}{{localize "midgard5.ew"}}{{localize "midgard5.bonus"}}{{localize "midgard5.pw"}}
{{localize "midgard5.deprivationCold"}}{{data.calc.stats.deprivationCold.value}}{{data.calc.stats.deprivationColdBonus.value}}{{add data.calc.stats.deprivationCold.value data.calc.stats.deprivationColdBonus.value}}
{{localize "midgard5.deprivationHeat"}}{{data.calc.stats.deprivationHeat.value}}{{data.calc.stats.deprivationHeatBonus.value}}{{add data.calc.stats.deprivationHeat.value data.calc.stats.deprivationHeatBonus.value}}
{{localize "midgard5.deprivationFood"}}{{data.calc.stats.deprivationFood.value}}{{data.calc.stats.deprivationFoodBonus.value}}{{add data.calc.stats.deprivationFood.value data.calc.stats.deprivationFoodBonus.value}}
-
-
-
{{localize "midgard5.calculated-values"}}
@@ -166,4 +122,31 @@
- \ No newline at end of file + + +
+
+
{{localize "midgard5.deprivations"}} & {{localize "midgard5.deprivation"}}
+ + + + + + + + + + + + + + + + + + + + +
{{localize "midgard5.deprivationThirst"}}{{data.calc.stats.deprivationFood.value}}{{localize "midgard5.deprivationHeat"}}{{ data.calc.stats.deprivationHeat.value}}{{localize "midgard5.deprivationFood"}}{{data.calc.stats.deprivationFood.value}}{{localize "midgard5.deprivationCold"}}{{data.calc.stats.deprivationCold.value}}
+
+
\ No newline at end of file -- 2.40.1 From c9c2fb801dbe616225d19436b798b0d3fc8f23e9 Mon Sep 17 00:00:00 2001 From: LeFrique Date: Sun, 24 Mar 2024 16:06:31 +0100 Subject: [PATCH 7/8] Update M5Roll.ts --- source/module/rolls/M5Roll.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/module/rolls/M5Roll.ts b/source/module/rolls/M5Roll.ts index f14fa6a..7c0d219 100644 --- a/source/module/rolls/M5Roll.ts +++ b/source/module/rolls/M5Roll.ts @@ -56,7 +56,7 @@ export class M5Roll { //if (rollResult.type === "ew") { if (d.total === 1) rowRes = M5EwResult.FUMBLE; else if (d.total === 20) rowRes = M5EwResult.CRITICAL; - else if (d.total === 16, 17, 18, 19) rowRes = M5EwResult.HIGH; + else if (d.total >= 16) rowRes = M5EwResult.HIGH; } else if (d.faces === 100) { face100 = d.total as number; } -- 2.40.1 From ddbe48f93730583325baba24e4502b9799388c65 Mon Sep 17 00:00:00 2001 From: Byroks Date: Sun, 24 Mar 2024 19:45:51 +0100 Subject: [PATCH 8/8] Fix some stuff --- lang/de.json | 4 +- source/module/M5Base.ts | 22 ++---- source/module/actors/M5Character.ts | 78 +++------------------- source/module/actors/M5ModAggregate.ts | 6 +- source/module/items/M5Item.ts | 24 +++++++ source/module/rolls/M5Roll.ts | 11 +-- source/template.json | 4 +- templates/sheets/character/base_values.hbs | 38 +++++------ templates/sheets/item/class.hbs | 2 +- 9 files changed, 72 insertions(+), 117 deletions(-) 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}} -- 2.40.1
{{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}}