Zwergenhort #4

Merged
Byroks merged 11 commits from lefrique into develop 2024-01-07 14:31:21 +01:00
12 changed files with 156 additions and 66 deletions
Showing only changes of commit 944895dea1 - Show all commits

View File

@ -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",
Le-Frique marked this conversation as resolved Outdated

Bitte im Style von den anderen localizations halten (hoard-next)

Bitte im Style von den anderen localizations halten (hoard-next)
"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",

View File

@ -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: {

View File

@ -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<typeof foundry.documents.BaseActor>[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;
Le-Frique marked this conversation as resolved Outdated

Das funktioniert so leider nicht ist aber ein guter Anfang. Wir können den wert aber als Eingabe neben den anderen Goldeinträgen hinzufügen um damit die Hortgröße zu bestimmen.

Das funktioniert so leider nicht ist aber ein guter Anfang. Wir können den wert aber als Eingabe neben den anderen Goldeinträgen hinzufügen um damit die Hortgröße zu bestimmen.

Hab ich jetzt so ähnlich gemacht, ziehe aber den Hort aus dem levelTreshold direkt.

Hab ich jetzt so ähnlich gemacht, ziehe aber den Hort aus dem levelTreshold direkt.
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],

View File

@ -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;
}

View File

@ -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": ""

View File

@ -109,17 +109,21 @@
<td>{{localize "midgard5.resistanceBody"}}</td>
<td class="fixed-value">{{data.calc.stats.resistanceBody.value}}</td>
</tr>
<tr>
<td>{{localize "midgard5.resistanceMind"}}</td>
<td class="fixed-value">{{data.calc.stats.resistanceMind.value}}</td>
<td>{{localize "midgard5.resistanceBody"}}</td>
<td class="fixed-value">{{data.calc.stats.resistanceBody.value}}</td>
</tr>
<tr>
<td>{{localize "midgard5.movementRange"}}</td>
<td class="fixed-value">{{data.calc.stats.movement.value}}</td>
<td>{{localize "midgard5.actor-git-long"}}</td>
<td class="fixed-value">{{data.calc.stats.poisonResistance.value}}</td>
{{#if (eq data.info.race "Zwerg")}}
<td>{{localize "midgard5.hoard"}}</td>
<td class="fixed-value">{{data.calc.stats.hoard}}</td>
{{/if}}
</tr>
<tr>
{{#if (eq data.info.race "Zwerg")}}
<td>{{localize "midgard5.hoardMin"}}</td>
<td class="fixed-value">{{data.calc.stats.hoardMin}}</td>
<td>{{localize "midgard5.hoard-next"}}</td>
<td class="fixed-value">{{data.calc.stats.hoardNext}}</td>
{{/if}}
</tr>
<tr height = 10px></tr>
</tbody>

View File

@ -1,16 +1,24 @@
<table>
<thead>
<tr>
<th class="title" style="text-align: center">{{localize "midgard5.currency-wealth"}}</th>
<th class="title" style="text-align: center">{{localize "midgard5.currency-gold"}}</th>
<th class="title" style="text-align: center">{{localize "midgard5.currency-silver"}}</th>
<th class="title" style="text-align: center">{{localize "midgard5.currency-copper"}}</th>
{{#if (eq data.info.race "Zwerg")}}
<th class="title" style="text-align: center">{{localize "midgard5.hoard"}}</th>
{{/if}}
</tr>
</thead>
<tbody>
<tr>
<td class="fixed-value"><input type="number" name="data.info.wealth" value="{{data.calc.stats.wealth}}"></td>
<td class="fixed-value"><input type="number" name="data.info.gold" value="{{data.info.gold}}"></td>
<td class="fixed-value"><input type="number" name="data.info.silver" value="{{data.info.silver}}"></td>
<td class="fixed-value"><input type="number" name="data.info.copper" value="{{data.info.copper}}"></td>
{{#if (eq data.info.race "Zwerg")}}
<td class="fixed-value"><input type="number" name="midgard5.hoard" value="{{data.calc.stats.hoard}}"></td>
{{/if}}
</tr>
</tbody>
</table>

View File

@ -4,24 +4,15 @@
<tr height = 5px></tr>
<tr>
<td style="text-align: left;" colspan="4" rowspan="2"><img style="border: 0px solid black;" src="/systems/midgard5/assets/icons/logo/midgard.webp" alt="Midgard"></td>
<td></td>
<td colspan="5" style="font-size: x-large; font-weigh: bold;"><input name="name" type="text" value="{{actor.name}}" data-dtype="String" /></td>
<td style="font-size: x-large; font-weigh: bold; text-align: center; text-align-vertical: middle;" ><div style="border: 2px solid black; border-radius: 10px; background-color: white;">{{data.calc.level}}</div></td>
Le-Frique marked this conversation as resolved Outdated

Bricht leider den abstand bei den Prüfwürfen, allgemein finde ich das etwas sehr groß.
Ist das vielleicht bei den Berechneten Werten unten besser aufgehoben? Dort steht gerade eh 2 mal Gifttolleranz. Man könnte es dann entweder als:

Hort: x von y --> x der Aktuelle Hort und y der ES/2
Hort: x benötigt für nächsten Grad --> x wäre in dem fall der noch benötigte aka rest von ES/2 - Aktueller Hort
oder
(Gesamt)Hort für nächsten Grad: x --> Einfach nur ES/2

Und oben dann etwas kleiner nur den aktuellen Hort anzeigen

Bricht leider den abstand bei den Prüfwürfen, allgemein finde ich das etwas sehr groß. Ist das vielleicht bei den Berechneten Werten unten besser aufgehoben? Dort steht gerade eh 2 mal Gifttolleranz. Man könnte es dann entweder als: `Hort: x von y` --> x der Aktuelle Hort und y der ES/2 `Hort: x benötigt für nächsten Grad` --> x wäre in dem fall der noch benötigte aka rest von ES/2 - Aktueller Hort oder `(Gesamt)Hort für nächsten Grad: x` --> Einfach nur ES/2 Und oben dann etwas kleiner nur den aktuellen Hort anzeigen

So umgesetzt und Vermögensmanagment aktuellen Hort dort auch platziert, es waren auch Resi doppelt.

So umgesetzt und Vermögensmanagment aktuellen Hort dort auch platziert, es waren auch Resi doppelt.
{{#if (eq data.info.race "Zwerg")}}
<td style="font-size: x-large; font-weigh: bold; text-align: center; text-align-vertical: middle;">
<div style="border: 2px solid black; border-radius: 10px; background-color: white; background-image: url('icons/commodities/currency/coins-wheat-stack-copper.webp');background-size: cover; background-position: center;">
<span class="hoard">{{data.calc.stats.hoard}} GS</span><br>
<span class="hoardNext">Hort für nächsten Grad: <br>{{data.calc.stats.hoardNext}} GS</span>
</div>
</td>
{{/if}}
</tr>
</tr>
<tr>
<td></td>
<td colspan="5"><b>Name</b></td>
<td style="text-align: center;"><b>Grad</b></td>
{{#if (eq data.info.race "Zwerg")}}
<td style="text-align: center;"><b>Hort</b></td>
{{/if}}
</tr>
</tr>
<tr height = 10px></tr>
<tr>
<td rowspan="8" width=128><img style="max-width: 128px; height: 160px; border: 0px solid black;" src="{{actor.img}}" data-edit="img" title="{{actor.name}}" /></td>

View File

@ -18,6 +18,27 @@
<input id="data.magic" type="checkbox" name="data.magic" {{checked data.magic}} />
<label for="data.magic">{{localize "midgard5.magic"}}</label>
</span>
<span>
<input id="data.valuable" type="checkbox" name="data.valuable" {{checked data.valuable}}>
<label for="data.valuable">{{localize "midgard5.valuable"}}</label>
</span>
</div>
</td>
</tr>
<tr>
<td colspan="4">
<div class="flexrow">
<span>{{localize "midgard5.item-value"}}</span>
<input name="data.value" type="number" value="{{data.value}}" data-dtype="Number" />
<select class="select-mod-operation" name="data.currency" data-type="String">
{{#select data.currency}}
<option value=""></option>
<option value="copper">{{localize "midgard5.currency-copper"}}</option>
<option value="silver">{{localize "midgard5.currency-silver"}}</option>
<option value="gold">{{localize "midgard5.currency-gold"}}</option>
{{/select}}
</select>
</div>
</td>
</tr>

View File

@ -18,6 +18,27 @@
<input id="data.special" type="checkbox" name="data.special" {{checked data.special}}>
<label for="data.special">{{localize "midgard5.special"}}</label>
</span>
<span>
<input id="data.valuable" type="checkbox" name="data.valuable" {{checked data.valuable}}>
<label for="data.valuable">{{localize "midgard5.valuable"}}</label>
</span>
</div>
</td>
</tr>
<tr>
<td colspan="4">
<div class="flexrow">
<span>{{localize "midgard5.item-value"}}</span>
<input name="data.value" type="number" value="{{data.value}}" data-dtype="Number" />
<select class="select-mod-operation" name="data.currency" data-type="String">
{{#select data.currency}}
<option value=""></option>
<option value="copper">{{localize "midgard5.currency-copper"}}</option>
<option value="silver">{{localize "midgard5.currency-silver"}}</option>
<option value="gold">{{localize "midgard5.currency-gold"}}</option>
{{/select}}
</select>
</div>
</td>
</tr>

View File

@ -16,6 +16,10 @@
<input id="data.magic" type="checkbox" name="data.magic" {{checked data.magic}}>
<label for="data.magic">{{localize "midgard5.magic"}}</label>
</span>
<span>
<input id="data.valuable" type="checkbox" name="data.valuable" {{checked data.valuable}}>
<label for="data.valuable">{{localize "midgard5.valuable"}}</label>
</span>
</div>
</td>
</tr>
@ -28,7 +32,7 @@
</td>
</tr>
<tr>
<td>
<td colspan="4">
<div class="flexrow">
<span>{{localize "midgard5.item-value"}}</span>
<input name="data.value" type="number" value="{{data.value}}" data-dtype="Number" />

View File

@ -23,6 +23,27 @@
<input id="data.special" type="checkbox" name="data.special" {{checked data.special}}>
<label for="data.special">{{localize "midgard5.special"}}</label>
</span>
<span>
<input id="data.valuable" type="checkbox" name="data.valuable" {{checked data.valuable}}>
<label for="data.valuable">{{localize "midgard5.valuable"}}</label>
</span>
</div>
</td>
</tr>
<tr>
<td colspan="4">
<div class="flexrow">
<span>{{localize "midgard5.item-value"}}</span>
<input name="data.value" type="number" value="{{data.value}}" data-dtype="Number" />
<select class="select-mod-operation" name="data.currency" data-type="String">
{{#select data.currency}}
<option value=""></option>
<option value="copper">{{localize "midgard5.currency-copper"}}</option>
<option value="silver">{{localize "midgard5.currency-silver"}}</option>
<option value="gold">{{localize "midgard5.currency-gold"}}</option>
{{/select}}
</select>
</div>
</td>
</tr>