From 944895dea1a2efc8ab621f156fde20371a469387 Mon Sep 17 00:00:00 2001 From: LeFrique Date: Sat, 30 Dec 2023 19:20:40 +0100 Subject: [PATCH] Zwergenhort revised --- lang/de.json | 9 ++- source/module/M5Base.ts | 4 ++ source/module/actors/M5Character.ts | 67 ++++++++++++++-------- source/style/Character-sheet.less | 13 ----- source/template.json | 15 +++-- templates/sheets/character/base_values.hbs | 20 ++++--- templates/sheets/character/gear.hbs | 8 +++ templates/sheets/character/main.hbs | 17 ++---- templates/sheets/item/armor.hbs | 21 +++++++ templates/sheets/item/defensiveWeapon.hbs | 21 +++++++ templates/sheets/item/item.hbs | 6 +- templates/sheets/item/weapon.hbs | 21 +++++++ 12 files changed, 156 insertions(+), 66 deletions(-) diff --git a/lang/de.json b/lang/de.json index 15d8532..133089a 100644 --- a/lang/de.json +++ b/lang/de.json @@ -40,6 +40,7 @@ "midgard5.item-quantity": "Menge", "midgard5.item-onbody": "Am Körper", "midgard5.item-ismagic": "Ist Magisch", + "midgard5.item-wealth": "Vermögenswert", "midgard5.actor-lp": "Lebenspunkte", "midgard5.actor-lp-short": "LP", @@ -94,8 +95,11 @@ "midgard5.currency-gold": "Gold", "midgard5.currency-silver": "Silber", "midgard5.currency-copper": "Kupfer", - "midgard5.hoard": "Hort", - "midgard5.hoardNext": "Hort für nächsten Grad", + "midgard5.currency-wealth": "Vermögen in GS", + "midgard5.currency-available": "verfügbares Vermögen", + "midgard5.hoard": "aktueller Hort", + "midgard5.hoardMin": "benötigter Mindesthort", + "midgard5.hoard-next": "Hort für nächsten Grad", "midgard5.exp-overall": "Erfahrungsschatz", "midgard5.exp-available": "Erfahrungspunkte", @@ -218,6 +222,7 @@ "midgard5.defensive-weapon": "Verteidigungswaffe", "midgard5.no-skill": "Keine Fertigkeit", "midgard5.magic": "magisch", + "midgard5.valuable": "Vermögenswert", "midgard5.equipped": "Ausgerüstet", "midgard5.active": "Aktiv", "midgard5.rangedWeapon": "Schusswaffe", diff --git a/source/module/M5Base.ts b/source/module/M5Base.ts index 44c5114..5d6ec1a 100644 --- a/source/module/M5Base.ts +++ b/source/module/M5Base.ts @@ -88,6 +88,8 @@ export enum M5Stats { DRINKING = "drinking", HOARD = "hoard", HOARD_NEXT = "hoardNext", + HOARD_MIN = "hoardMin", + WEALTH = "wealth", } export enum M5ModType { @@ -177,6 +179,8 @@ export interface M5CharacterCalculatedData { drinkingFW: number; hoard: number; hoardNext: number; + hoardMin: number; + wealth: number; }; skillMods: {}; skills: { diff --git a/source/module/actors/M5Character.ts b/source/module/actors/M5Character.ts index 5316239..715063b 100644 --- a/source/module/actors/M5Character.ts +++ b/source/module/actors/M5Character.ts @@ -1,7 +1,6 @@ import { M5Item } from "../items/M5Item"; import { M5Attribute, M5CharacterCalculatedData, M5ItemMod, M5ModOperation, M5ModResult, M5RollData, M5Skill, M5SkillCalculated, M5SkillLearned } from "../M5Base"; import M5ModAggregate from "./M5ModAggregate"; - export class M5Character extends Actor { // constructor( // data: ConstructorParameters[0], @@ -144,8 +143,10 @@ export class M5Character extends Actor { ret.stats.perceptionFW = 6; ret.stats.drinking = this.modResult(0); ret.stats.drinkingFW = Math.floor(ret.attributes.ko.value / 10); - ret.stats.hoard = M5Character.hoardFromExp(data.es); - ret.stats.hoardNext = M5Character.hoardNextFromExp(data.es); + ret.stats.hoardMin = M5Character.levelThreshold.at (ret.level - 1)/2; + ret.stats.hoardNext = M5Character.levelThreshold.at (ret.level)/2; + ret.stats.wealth = data.info.gold + data.info.silver/10 + data.info.copper/100 - (data.info.race === "Zwerg" ? (ret.stats.hoardMin) : 0); + ret.stats.hoard = ret.stats.wealth + (data.info.race === "Zwerg" ? (ret.stats.hoardMin) : 0); if (!skip?.mods) { const aggregate = new M5ModAggregate(data, ret); @@ -173,7 +174,13 @@ export class M5Character extends Actor { let label = item.name; if (item.system.magic) { label += "*"; + }; + if (item.system.valuable) { + label += "€"; + ret.stats.wealth += item.system.value || 0; + ret.stats.hoard += item.system.value || 0; } + let rollable = false; // console.log(item.system.rolls.formulas.map((p) => p.enabled)); @@ -183,9 +190,11 @@ export class M5Character extends Actor { break; } } + ret.gear.items[item.id] = { label: label, magic: item.system.magic, + valuable: item.system?.valuable, calc: item.system.calc, equipped: item.system?.equipped, value: item.system.value || 0, @@ -193,6 +202,7 @@ export class M5Character extends Actor { quantity: item.system.quantity || 0, rollExist: rollable, }; + }); } @@ -205,8 +215,8 @@ export class M5Character extends Actor { let label = item.name; if (item.system.magic) { label += "*"; - } - + }; + ret.gear.effects[item.id] = { label: label, magic: item.system.magic, @@ -249,12 +259,19 @@ export class M5Character extends Actor { (item.system.stats.damageBonus < 0 ? "" : "+") + item.system.stats.damageBonus + ")"; - } - + }; + if (item.system.valuable) { + label += "€"; + ret.stats.wealth += item.system.value || 0; + ret.stats.hoard += item.system.value || 0; + } + ret.gear.weapons[item.id] = { label: label, skillId: item.system.skillId, magic: item.system.magic, + valuable: item.system?.valuable, + value: item.system.value || 0, calc: item.system.calc, }; }); @@ -269,12 +286,19 @@ export class M5Character extends Actor { let label = item.name; if (item.system.magic) { label += "*(" + (item.system.stats.defenseBonus < 0 ? "" : "+") + item.system.stats.defenseBonus + ")"; + }; + if (item.system.valuable) { + label += "€"; + ret.stats.wealth += item.system.value || 0; + ret.stats.hoard += item.system.value || 0; } - + ret.gear.defensiveWeapons[item.id] = { label: label, skillId: item.system.skillId, magic: item.system.magic, + valuable: item.system?.valuable, + value: item.system.value || 0, calc: item.system.calc, }; }); @@ -289,11 +313,18 @@ export class M5Character extends Actor { let label = item.name; if (item.system.magic) { label += "*"; - } - + }; + if (item.system.valuable) { + label += "€"; + ret.stats.wealth += item.system.value || 0; + ret.stats.hoard += item.system.value || 0; + } + ret.gear.armor[item.id] = { label: label, magic: item.system.magic, + valuable: item.system?.valuable, + value: item.system.value || 0, calc: item.system.calc, equipped: item.system?.equipped, }; @@ -374,21 +405,7 @@ export class M5Character extends Actor { const ret = M5Character.levelThreshold.findIndex((val) => val > exp); return ret === -1 ? M5Character.levelThreshold.length : ret; } - - static hoardFromExp(exp: number): number { - const ret = M5Character.levelThreshold.findIndex((val) => val > exp); - const hoard = Math.floor(exp / 2) - return hoard; - } - - static hoardNextFromExp(exp: number): number { - const ret = M5Character.levelThreshold.findIndex((val) => val > exp); - const currentLevel = ret === -1 ? M5Character.levelThreshold.length : ret; - const nextLevelExp = M5Character.levelThreshold[currentLevel]; - const hoardNext = (nextLevelExp /2); - return hoardNext; - } - + static readonly defenseThreshold: Array<[number, number]> = [ [30, 18], [25, 17], diff --git a/source/style/Character-sheet.less b/source/style/Character-sheet.less index 4f5a0f0..c1a8895 100644 --- a/source/style/Character-sheet.less +++ b/source/style/Character-sheet.less @@ -66,19 +66,6 @@ font-weight: bold; } - .hoard { - text-align: center; - color: rgb(255, 255, 0); - font-weight: bold; - font-size: larger; - } - .hoardNext { - text-align: center; - color: rgb(255, 255, 255); - font-weight: bold; - font-size: medium; - } - table { background-color: beige; } diff --git a/source/template.json b/source/template.json index f1665f5..4d5072f 100644 --- a/source/template.json +++ b/source/template.json @@ -200,6 +200,10 @@ "equippable": false, "equipped": true }, + "valuable": { + "valuable": false, + "item-wealth": true + }, "physical": { "value": 0, "magic": false @@ -297,7 +301,7 @@ "calc": {} }, "item": { - "templates": ["itemDescription", "equippable", "physical"], + "templates": ["itemDescription", "equippable", "physical","valuable"], "rolls": { "formulas": {}, "output": "" @@ -315,9 +319,10 @@ "calc": {} }, "weapon": { - "templates": ["itemDescription", "stats", "equippable", "physical"], + "templates": ["itemDescription", "stats", "equippable", "physical","valuable"], "special": false, "ranged": false, + "valuable": false, "skillId": "", "damageBase": "1d6", "rolls": { @@ -338,8 +343,9 @@ "calc": {} }, "defensiveWeapon": { - "templates": ["itemDescription", "stats", "equippable", "physical"], + "templates": ["itemDescription", "stats", "equippable", "physical","valuable"], "special": false, + "valuable": false, "skillId": "", "rolls": { "formulas": { @@ -354,9 +360,10 @@ "calc": {} }, "armor": { - "templates": ["itemDescription", "stats", "equippable", "attributeMod", "physical"], + "templates": ["itemDescription", "stats", "equippable", "attributeMod", "physical","valuable"], "lpProtection": 0, "apProtection": 0, + "valuable": false, "rolls": { "formulas": {}, "output": "" diff --git a/templates/sheets/character/base_values.hbs b/templates/sheets/character/base_values.hbs index a199a50..ad10c13 100644 --- a/templates/sheets/character/base_values.hbs +++ b/templates/sheets/character/base_values.hbs @@ -109,17 +109,21 @@ {{localize "midgard5.resistanceBody"}} {{data.calc.stats.resistanceBody.value}} - - {{localize "midgard5.resistanceMind"}} - {{data.calc.stats.resistanceMind.value}} - {{localize "midgard5.resistanceBody"}} - {{data.calc.stats.resistanceBody.value}} - {{localize "midgard5.movementRange"}} {{data.calc.stats.movement.value}} - {{localize "midgard5.actor-git-long"}} - {{data.calc.stats.poisonResistance.value}} + {{#if (eq data.info.race "Zwerg")}} + {{localize "midgard5.hoard"}} + {{data.calc.stats.hoard}} + {{/if}} + + + {{#if (eq data.info.race "Zwerg")}} + {{localize "midgard5.hoardMin"}} + {{data.calc.stats.hoardMin}} + {{localize "midgard5.hoard-next"}} + {{data.calc.stats.hoardNext}} + {{/if}} diff --git a/templates/sheets/character/gear.hbs b/templates/sheets/character/gear.hbs index e2dc767..ee1a73e 100644 --- a/templates/sheets/character/gear.hbs +++ b/templates/sheets/character/gear.hbs @@ -1,16 +1,24 @@ + + {{#if (eq data.info.race "Zwerg")}} + + {{/if}} + + {{#if (eq data.info.race "Zwerg")}} + + {{/if}}
{{localize "midgard5.currency-wealth"}} {{localize "midgard5.currency-gold"}} {{localize "midgard5.currency-silver"}} {{localize "midgard5.currency-copper"}}{{localize "midgard5.hoard"}}
diff --git a/templates/sheets/character/main.hbs b/templates/sheets/character/main.hbs index be68643..bef079b 100644 --- a/templates/sheets/character/main.hbs +++ b/templates/sheets/character/main.hbs @@ -4,24 +4,15 @@ Midgard +
{{data.calc.level}}
- {{#if (eq data.info.race "Zwerg")}} - -
- {{data.calc.stats.hoard}} GS
- Hort für nächsten Grad:
{{data.calc.stats.hoardNext}} GS
-
- - {{/if}} - + + Name Grad - {{#if (eq data.info.race "Zwerg")}} - Hort - {{/if}} - + diff --git a/templates/sheets/item/armor.hbs b/templates/sheets/item/armor.hbs index 26eeb21..dadcaf5 100644 --- a/templates/sheets/item/armor.hbs +++ b/templates/sheets/item/armor.hbs @@ -18,6 +18,27 @@ + + + + + + + + + + +
+ {{localize "midgard5.item-value"}} + +
diff --git a/templates/sheets/item/defensiveWeapon.hbs b/templates/sheets/item/defensiveWeapon.hbs index 3bbca1c..07e5c00 100644 --- a/templates/sheets/item/defensiveWeapon.hbs +++ b/templates/sheets/item/defensiveWeapon.hbs @@ -18,6 +18,27 @@ + + + + + + + + + + +
+ {{localize "midgard5.item-value"}} + +
diff --git a/templates/sheets/item/item.hbs b/templates/sheets/item/item.hbs index 2add63f..fdeb4c1 100644 --- a/templates/sheets/item/item.hbs +++ b/templates/sheets/item/item.hbs @@ -16,6 +16,10 @@ + + + + @@ -28,7 +32,7 @@ - +
{{localize "midgard5.item-value"}} diff --git a/templates/sheets/item/weapon.hbs b/templates/sheets/item/weapon.hbs index 09e6f2b..e92a19c 100644 --- a/templates/sheets/item/weapon.hbs +++ b/templates/sheets/item/weapon.hbs @@ -23,6 +23,27 @@ + + + + + +
+ + + + +
+ {{localize "midgard5.item-value"}} + +