+ Added Zwergenhort

This commit is contained in:
LeFrique 2023-12-22 20:45:24 +01:00
parent 6baf9a0269
commit 8e3db3b223
5 changed files with 48 additions and 5 deletions

View File

@ -94,6 +94,8 @@
"midgard5.currency-gold": "Gold", "midgard5.currency-gold": "Gold",
"midgard5.currency-silver": "Silber", "midgard5.currency-silver": "Silber",
"midgard5.currency-copper": "Kupfer", "midgard5.currency-copper": "Kupfer",
"midgard5.hoard": "Hort",
"midgard5.hoardNext": "Hort für nächsten Grad",
"midgard5.exp-overall": "Erfahrungsschatz", "midgard5.exp-overall": "Erfahrungsschatz",
"midgard5.exp-available": "Erfahrungspunkte", "midgard5.exp-available": "Erfahrungspunkte",

View File

@ -86,6 +86,8 @@ export enum M5Stats {
PROTECTION_AP = "apProtection", PROTECTION_AP = "apProtection",
PERCEPTION = "perception", PERCEPTION = "perception",
DRINKING = "drinking", DRINKING = "drinking",
HOARD = "hoard",
HOARD_NEXT = "hoardNext",
} }
export enum M5ModType { export enum M5ModType {
@ -173,6 +175,8 @@ export interface M5CharacterCalculatedData {
perceptionFW: number; perceptionFW: number;
drinking: M5ModResult; drinking: M5ModResult;
drinkingFW: number; drinkingFW: number;
hoard: number;
hoardNext: number;
}; };
skillMods: {}; skillMods: {};
skills: { skills: {

View File

@ -1,3 +1,4 @@
import { valueInArray } from "@league-of-foundry-developers/foundry-vtt-types/src/foundry/common/data/validators.mjs";
import { M5Item } from "../items/M5Item"; import { M5Item } from "../items/M5Item";
import { M5Attribute, M5CharacterCalculatedData, M5ItemMod, M5ModOperation, M5ModResult, M5RollData, M5Skill, M5SkillCalculated, M5SkillLearned } from "../M5Base"; import { M5Attribute, M5CharacterCalculatedData, M5ItemMod, M5ModOperation, M5ModResult, M5RollData, M5Skill, M5SkillCalculated, M5SkillLearned } from "../M5Base";
import M5ModAggregate from "./M5ModAggregate"; import M5ModAggregate from "./M5ModAggregate";
@ -71,6 +72,7 @@ export class M5Character extends Actor {
perceptionFW: 0, perceptionFW: 0,
drinking: { value: 0, mods: [] }, drinking: { value: 0, mods: [] },
drinkingFW: 0, drinkingFW: 0,
hoard: 0,
}, },
skillMods: {}, skillMods: {},
skills: { skills: {
@ -98,7 +100,7 @@ export class M5Character extends Actor {
if (!data) return null; if (!data) return null;
ret.level = M5Character.levelFromExp(data.es); ret.level = M5Character.levelFromExp(data.es);
ret.attributes.st.value = M5Character.attributeMinMax(data.attributes.st); // TODO item effects ret.attributes.st.value = M5Character.attributeMinMax(data.attributes.st); // TODO item effects
ret.attributes.gs.value = M5Character.attributeMinMax(data.attributes.gs); ret.attributes.gs.value = M5Character.attributeMinMax(data.attributes.gs);
ret.attributes.gw.value = M5Character.attributeMinMax(data.attributes.gw); ret.attributes.gw.value = M5Character.attributeMinMax(data.attributes.gw);
@ -143,7 +145,9 @@ export class M5Character extends Actor {
ret.stats.perceptionFW = 6; ret.stats.perceptionFW = 6;
ret.stats.drinking = this.modResult(0); ret.stats.drinking = this.modResult(0);
ret.stats.drinkingFW = Math.floor(ret.attributes.ko.value / 10); ret.stats.drinkingFW = Math.floor(ret.attributes.ko.value / 10);
ret.stats.hoard = M5Character.hoardFromExp(data.es);
ret.stats.hoardNext = M5Character.hoardNextFromExp(data.es);
if (!skip?.mods) { if (!skip?.mods) {
const aggregate = new M5ModAggregate(data, ret); const aggregate = new M5ModAggregate(data, ret);
@ -371,6 +375,18 @@ export class M5Character extends Actor {
const ret = M5Character.levelThreshold.findIndex((val) => val > exp); const ret = M5Character.levelThreshold.findIndex((val) => val > exp);
return ret === -1 ? M5Character.levelThreshold.length : ret; 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]> = [ static readonly defenseThreshold: Array<[number, number]> = [
[30, 18], [30, 18],

View File

@ -65,6 +65,18 @@
text-align: right; text-align: right;
font-weight: bold; font-weight: bold;
} }
.hoard {
text-align: center;
color: rgb(255, 230, 0);
font-weight: bold;
font-size: larger;
}
.hoardNext {
text-align: center;
color: rgb(255, 255, 255);
font-weight: bold;
font-size: medium;
}
table { table {
background-color: beige; background-color: beige;

View File

@ -4,14 +4,23 @@
<tr height = 5px></tr> <tr height = 5px></tr>
<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 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 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> <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>
{{#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: {{data.calc.stats.hoardNext}} GS</span>
</div>
</td>
{{/if}}
</tr> </tr>
<tr> <tr>
<td></td>
<td colspan="5"><b>Name</b></td> <td colspan="5"><b>Name</b></td>
<td style="text-align: center;"><b>Grad</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 height = 10px></tr>
<tr> <tr>