diff --git a/foundryconfig.json b/foundryconfig.json index 709c890..0b75816 100644 --- a/foundryconfig.json +++ b/foundryconfig.json @@ -1,4 +1,5 @@ { "moduleName": "Midgard 5. Edition", - "repository": "https://git.byroks.de/Byroks/foundry-vtt-system-midgard5" + "repository": "https://github.com/Byroks/foundry-vtt-system-midgard5", + "rawURL": "https://raw.githubusercontent.com/Byroks/foundry-vtt-system-midgard5" } diff --git a/lang/de.json b/lang/de.json index a9d1480..efc50fd 100644 --- a/lang/de.json +++ b/lang/de.json @@ -42,6 +42,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", @@ -97,6 +98,12 @@ "midgard5.currency-gold": "Gold", "midgard5.currency-silver": "Silber", "midgard5.currency-copper": "Kupfer", + "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.hoarded": "Hort", "midgard5.no-container": "Ohne", @@ -221,6 +228,7 @@ "midgard5.defensive-weapon": "Verteidigungswaffe", "midgard5.no-skill": "Keine Fertigkeit", "midgard5.magic": "magisch", + "midgard5.valuable": "Vermögen", "midgard5.equipped": "Ausgerüstet", "midgard5.active": "Aktiv", "midgard5.rangedWeapon": "Schusswaffe", diff --git a/source/PreloadTemplates.ts b/source/PreloadTemplates.ts index 7f5fa17..bbd4ae9 100644 --- a/source/PreloadTemplates.ts +++ b/source/PreloadTemplates.ts @@ -8,6 +8,7 @@ const preloadTemplates = async (): Promise[]> = const templates: Array = [ "sheets/character/attribute.hbs", "sheets/character/base_values.hbs", + "sheets/character/main.hbs", "sheets/character/skills.hbs", "sheets/character/gear.hbs", "sheets/character/spells.hbs", diff --git a/source/module/M5Base.ts b/source/module/M5Base.ts index 6e68710..1ab5161 100644 --- a/source/module/M5Base.ts +++ b/source/module/M5Base.ts @@ -86,6 +86,10 @@ export enum M5Stats { PROTECTION_AP = "apProtection", PERCEPTION = "perception", DRINKING = "drinking", + HOARD = "hoard", + HOARD_NEXT = "hoardNext", + HOARD_MIN = "hoardMin", + WEALTH = "wealth", } export enum M5ModType { @@ -173,6 +177,10 @@ export interface M5CharacterCalculatedData { perceptionFW: number; drinking: M5ModResult; 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 13595b4..be1be10 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], @@ -72,6 +71,7 @@ export class M5Character extends Actor { perceptionFW: 0, drinking: { value: 0, mods: [] }, drinkingFW: 0, + hoard: 0, }, skillMods: {}, skills: { @@ -99,7 +99,7 @@ export class M5Character extends Actor { const data = (this as any).system; if (!data) return null; - ret.level = M5Character.levelFromExp(data.es); + ret.level = M5Character.levelFromExp(data.info.race === "Zwerg" ? Math.min(data.calc.stats?.hoard * 2 || 0, data.es) : data.es); ret.attributes.st.value = M5Character.attributeMinMax(data.attributes.st); // TODO item effects ret.attributes.gs.value = M5Character.attributeMinMax(data.attributes.gs); @@ -145,6 +145,11 @@ 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.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; + ret.stats.hoard = 0; + if (!skip?.mods) { const aggregate = new M5ModAggregate(data, ret); @@ -172,7 +177,14 @@ export class M5Character extends Actor { let label = item.name; if (item.system.magic) { label += "*"; + }; + if (item.system.valuable) { + ret.stats.wealth += item.system.value || 0; + }; + if (item.system.hoarded) { + ret.stats.hoard += item.system.value || 0; } + let icon = item.img; let rollable = false; @@ -183,12 +195,15 @@ export class M5Character extends Actor { break; } } + ret.gear.items[item.id] = { label: label, icon: icon, magic: item.system.magic, calc: item.system.calc, equipped: item.system?.equipped, + valuable: item.system?.valuable, + hoarded: item.system?.hoarded, weight: item.system.weight || 0, containerId: item.system.containerId || "", value: item.system.value || 0, @@ -223,6 +238,8 @@ export class M5Character extends Actor { label: label, icon: icon, magic: item.system.magic, + valuable: item.system?.valuable, + hoarded: item.system?.hoarded, calc: item.system.calc, equipped: item.system?.equipped, weight: item.system.weight || 0, @@ -232,6 +249,7 @@ export class M5Character extends Actor { quantity: item.system.quantity || 0, rollExist: rollable, }; + }); } @@ -244,8 +262,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, @@ -288,12 +306,21 @@ export class M5Character extends Actor { (item.system.stats.damageBonus < 0 ? "" : "+") + item.system.stats.damageBonus + ")"; + }; + if (item.system.valuable) { + ret.stats.wealth += item.system.value || 0; + }; + if (item.system.hoarded) { + 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, + hoarded: item.system?.hoarded, + value: item.system.value || 0, calc: item.system.calc, }; }); @@ -308,12 +335,21 @@ 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) { + ret.stats.wealth += item.system.value || 0; + }; + if (item.system.hoarded) { + 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, + hoarded: item.system?.hoarded, + value: item.system.value || 0, calc: item.system.calc, }; }); @@ -328,11 +364,20 @@ export class M5Character extends Actor { let label = item.name; if (item.system.magic) { label += "*"; + }; + if (item.system.valuable) { + ret.stats.wealth += item.system.value || 0; + }; + if (item.system.hoarded) { + ret.stats.hoard += item.system.value || 0; } - + ret.gear.armor[item.id] = { label: label, magic: item.system.magic, + valuable: item.system?.valuable, + hoarded: item.system?.hoarded, + value: item.system.value || 0, calc: item.system.calc, equipped: item.system?.equipped, }; diff --git a/source/system.json b/source/system.json index 94fdfb1..27c4125 100644 --- a/source/system.json +++ b/source/system.json @@ -9,7 +9,7 @@ "verified": "11", "maximum": "11" }, - "authors": [{ "name": "Byroks" }], + "authors": [{"name": "Byroks"}], "scripts": ["bundle.js"], "styles": ["bundle.css"], "packs": [ @@ -103,25 +103,41 @@ "name": "Midgard 5", "sorting": "a", "color": "#0000FF", - "packs": ["blaupause-spielfiguren", "tabellen-kritische-ereignisse", "makros-kritische-ereignisse", "makros-standardwurfel"], + "packs": [ + "blaupause-spielfiguren", + "tabellen-kritische-ereignisse", + "makros-kritische-ereignisse", + "makros-standardwurfel" + ], "folders": [ { "name": "Ausrüstung", "sorting": "a", "color": "#008000", - "packs": ["ausruestung", "ruestkammer", "waffenkammer"] + "packs": [ + "ausruestung", + "ruestkammer", + "waffenkammer" + ] }, { "name": "Effekte", "sorting": "a", "color": "#800080", - "packs": ["kampfzustaende", "verletzungen", "zauberwirkungen"] + "packs": [ + "kampfzustaende", + "verletzungen", + "zauberwirkungen" + ] }, { "name": "Fähigkeiten", "sorting": "a", "color": "#800000", - "packs": ["fertigkeiten", "kampf"] + "packs": [ + "fertigkeiten", + "kampf" + ] } ] } @@ -137,9 +153,9 @@ "gridUnits": "m", "primaryTokenAttribute": "lp", "secondaryTokenAttribute": "ap", - "url": "https://git.byroks.de/Byroks/foundry-vtt-system-midgard5", - "manifest": "https://git.byroks.de/Byroks/foundry-vtt-system-midgard5/releases/download/v2.3.1/system.json", - "download": "https://git.byroks.de/Byroks/foundry-vtt-system-midgard5/releases/download/v2.3.1/midgard5-v2.3.1.zip", + "url": "https://github.com/Byroks/foundry-vtt-system-midgard5", + "manifest": "https://github.com/Byroks/foundry-vtt-system-midgard5/releases/download/v2.3.1/system.json", + "download": "https://github.com/Byroks/foundry-vtt-system-midgard5/releases/download/v2.3.1/midgard5-v2.3.1.zip", "initiative": "@c.calc.attributes.gw.value", "license": "LICENSE.txt" -} +} \ No newline at end of file diff --git a/source/template.json b/source/template.json index 1c9ef75..454e250 100644 --- a/source/template.json +++ b/source/template.json @@ -204,6 +204,14 @@ "equippable": false, "equipped": true }, + "valuable": { + "valuable": false, + "item-wealth": true + }, + "hoarded": { + "hoarded": false, + "inHoard": true + }, "physical": { "value": 0, "weight": 0, @@ -303,7 +311,7 @@ "calc": {} }, "item": { - "templates": ["itemDescription", "equippable", "physical"], + "templates": ["itemDescription", "equippable", "physical","valuable","hoarded"], "rolls": { "formulas": {}, "output": "" @@ -330,9 +338,11 @@ "calc": {} }, "weapon": { - "templates": ["itemDescription", "stats", "equippable", "physical"], + "templates": ["itemDescription", "stats", "equippable", "physical","valuable","hoarded"], "special": false, "ranged": false, + "valuable": false, + "hoarded": false, "skillId": "", "damageBase": "1d6", "rolls": { @@ -353,8 +363,10 @@ "calc": {} }, "defensiveWeapon": { - "templates": ["itemDescription", "stats", "equippable", "physical"], + "templates": ["itemDescription", "stats", "equippable", "physical","valuable","hoarded"], "special": false, + "valuable": false, + "hoarded": false, "skillId": "", "rolls": { "formulas": { @@ -369,9 +381,11 @@ "calc": {} }, "armor": { - "templates": ["itemDescription", "stats", "equippable", "attributeMod", "physical"], + "templates": ["itemDescription", "stats", "equippable", "attributeMod", "physical","valuable","hoarded"], "lpProtection": 0, "apProtection": 0, + "valuable": false, + "hoarded": 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 62ab4d2..e50a55e 100644 --- a/templates/sheets/character/gear.hbs +++ b/templates/sheets/character/gear.hbs @@ -6,17 +6,25 @@ + + {{#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 a250aaa..bfd17bf 100644 --- a/templates/sheets/character/main.hbs +++ b/templates/sheets/character/main.hbs @@ -7,7 +7,7 @@
{{data.calc.level}}
- + Name diff --git a/templates/sheets/item/armor.hbs b/templates/sheets/item/armor.hbs index 26eeb21..1c1c8ea 100644 --- a/templates/sheets/item/armor.hbs +++ b/templates/sheets/item/armor.hbs @@ -18,6 +18,34 @@ + + + + + + + {{#if (eq item.parent.system.info.race "Zwerg")}} + + + + + {{/if}} + + + + + +
+ {{localize "midgard5.item-value"}} + +
diff --git a/templates/sheets/item/defensiveWeapon.hbs b/templates/sheets/item/defensiveWeapon.hbs index 3bbca1c..80ead44 100644 --- a/templates/sheets/item/defensiveWeapon.hbs +++ b/templates/sheets/item/defensiveWeapon.hbs @@ -7,7 +7,7 @@ - + + + diff --git a/templates/sheets/item/item.hbs b/templates/sheets/item/item.hbs index f91f011..c55afeb 100644 --- a/templates/sheets/item/item.hbs +++ b/templates/sheets/item/item.hbs @@ -6,7 +6,7 @@
+
@@ -18,6 +18,34 @@ + + + + + + + {{#if (eq item.parent.system.info.race "Zwerg")}} + + + + + {{/if}} +
+
+
+ {{localize "midgard5.item-value"}} + +
- @@ -28,7 +39,7 @@ -
+
@@ -16,6 +16,17 @@ + + + + + + {{#if (eq item.parent.system.info.race "Zwerg")}} + + + + + {{/if}}
+
{{localize "midgard5.item-value"}} diff --git a/templates/sheets/item/weapon.hbs b/templates/sheets/item/weapon.hbs index 09e6f2b..dbd69b7 100644 --- a/templates/sheets/item/weapon.hbs +++ b/templates/sheets/item/weapon.hbs @@ -7,7 +7,7 @@ - + + +
+
@@ -23,6 +23,34 @@ + + + + + + + {{#if (eq item.parent.system.info.race "Zwerg")}} + + + + + {{/if}} +
+
+
+ {{localize "midgard5.item-value"}} + +