diff --git a/lang/de.json b/lang/de.json
index 6e39d06..622128d 100644
--- a/lang/de.json
+++ b/lang/de.json
@@ -17,6 +17,7 @@
"midgard5.phase-movement": "Bewegungsphase",
"midgard5.no-encounter": "Kein Kampf",
"midgard5.encounter-not-started": "Kein aktiver Kampf",
+ "midgard5.initiative": "Initiative",
"midgard5.time-duration": "Dauer",
"midgard5.time-round": "Runde(n)",
@@ -36,7 +37,7 @@
"midgard5.attributes": "Eigenschaften",
"midgard5.points": "Punkte",
"midgard5.calculated-value": "Berechneter Wert",
- "midgard5.calculated-values": "Sonstige Werte",
+ "midgard5.calculated-values": "Werte und Boni",
"midgard5.skill": "Fertigkeit",
"midgard5.skill-value": "Fertigkeitswert",
@@ -239,8 +240,8 @@
"midgard5.weapon-skills": "Waffenfertigkeiten",
"midgard5.unlearned-skill": "Ungelernte Fertigkeit",
"midgard5.unlearned-skills": "Ungelernte Fertigkeiten",
- "midgard5.innate-ability": "Angeborene/Besondere Fertigkeit",
- "midgard5.innate-abilities": "Angeborene/Besondere Fertigkeit",
+ "midgard5.innate-ability": "Angeborene/Besondere Fähigkeit",
+ "midgard5.innate-abilities": "Angeborene und besondere Fähigkeiten",
"midgard5.base-damage": "Grundschaden",
"midgard5.weapon": "Waffe",
@@ -254,6 +255,11 @@
"midgard5.active": "Aktiv",
"midgard5.rangedWeapon": "Schusswaffe",
"midgard5.assignItemToCharacter": "Füge Gegenstand einem Charakter hinzu, um hier etwas auswählen zu können",
+ "midgard5.showAll": "Alle anzeigen",
+ "midgard5.wealthAndContainers": "Vermögen und Aufbewahrung",
+ "midgard5.itemsInContainers": "Gegenstände in Aufbewahrung",
+ "midgard5.allItems": "Alle Gegenstände",
+
"midgard5.pw": "Prüfwurf",
"midgard5.attack": "Angriff",
diff --git a/source/index.ts b/source/index.ts
index 42b83d9..f00d480 100644
--- a/source/index.ts
+++ b/source/index.ts
@@ -90,6 +90,16 @@ Hooks.once("init", async () => {
return label.toLowerCase().includes(contains.toLowerCase());
});
+ Handlebars.registerHelper("count", (object: any) => {
+ var length = 0;
+ for( var key in object ) {
+ if( object.hasOwnProperty(key) ) {
+ ++length;
+ }
+ }
+ return length;
+ });
+
// Default Sheet für Items definieren und das Standardsheet deaktivieren
Items.unregisterSheet("core", ItemSheet);
Items.registerSheet("midgard5", M5ItemSheet, { makeDefault: true });
diff --git a/source/module/M5Base.ts b/source/module/M5Base.ts
index 72e3358..98d7325 100644
--- a/source/module/M5Base.ts
+++ b/source/module/M5Base.ts
@@ -157,6 +157,7 @@ export interface M5AttributeCalculated extends M5ModResult {
export interface M5CharacterCalculatedData {
level: number;
+ initiative: number;
attributes: {
st: M5AttributeCalculated;
gs: M5AttributeCalculated;
diff --git a/source/module/actors/M5Character.ts b/source/module/actors/M5Character.ts
index 0ce24d6..c363383 100644
--- a/source/module/actors/M5Character.ts
+++ b/source/module/actors/M5Character.ts
@@ -39,6 +39,7 @@ export class M5Character extends Actor {
): M5CharacterCalculatedData {
let ret: M5CharacterCalculatedData = {
level: 0,
+ initiative: 0,
attributes: {
st: { value: 0, bonus: 0, mods: [] },
gs: { value: 0, bonus: 0, mods: [] },
@@ -101,6 +102,8 @@ export class M5Character extends Actor {
ret.level = M5Character.levelFromExp(data.info.race === "Zwerg" ? Math.min(data.calc.stats?.hoard * 2 || 0, data.es) : data.es);
+ ret.initiative = data.skills.general.anfuehren.fw;
+
ret.attributes.st.value = M5Character.attributeMinMax(data.attributes.st); // TODO item effects
ret.attributes.gs.value = M5Character.attributeMinMax(data.attributes.gs);
ret.attributes.gw.value = M5Character.attributeMinMax(data.attributes.gw);
diff --git a/source/style/Character-sheet.less b/source/style/Character-sheet.less
index 75a86bb..6cc4357 100644
--- a/source/style/Character-sheet.less
+++ b/source/style/Character-sheet.less
@@ -11,30 +11,31 @@
.flexcolumn {
flex-wrap: wrap;
+ flex-direction: column;
}
.flexcolumn-1 {
- flex: 100%;
+ flex-basis: 100%;
flex-wrap: wrap;
}
.flexcolumn-2 {
- flex: 50%;
+ flex-basis: 50%;
flex-wrap: wrap;
}
.flexcolumn-3 {
- flex: 33%;
+ flex-basis: 33%;
flex-wrap: wrap;
}
.flexcolumn-4 {
- flex: 25%;
+ flex-basis: 25%;
flex-wrap: wrap;
}
.flexcolumn-5 {
- flex: 20%;
+ flex-basis: 20%;
flex-wrap: wrap;
}
diff --git a/templates/sheets/character/combat.hbs b/templates/sheets/character/combat.hbs
index e26b12a..857b6dc 100644
--- a/templates/sheets/character/combat.hbs
+++ b/templates/sheets/character/combat.hbs
@@ -1,5 +1,32 @@
-
+
+
+
+
+
+
+
+ | {{localize "midgard5.initiative"}} |
+ {{data.calc.initiative}} |
+ {{localize "midgard5.movementRange"}} |
+ {{data.calc.stats.movement.value}} |
+
+ {{localize "midgard5.defense"}} |
+ {{data.calc.stats.defense.value}} |
+ {{localize "midgard5.defenseBonus"}} |
+ {{data.calc.stats.defenseBonus.value}} |
+
+
+ | {{localize "midgard5.attackBonus"}} |
+ {{data.calc.stats.attackBonus.value}} |
+ {{localize "midgard5.damageBonus"}} |
+ {{data.calc.stats.damageBonus.value}} |
+
+
+
+
+
+
@@ -78,33 +105,7 @@
-
-
-
-
-
-
- | {{localize "midgard5.movementRange"}} |
- {{data.calc.stats.movement.value}} |
- |
- |
-
- {{localize "midgard5.defense"}} |
- {{data.calc.stats.defense.value}} |
- {{localize "midgard5.defenseBonus"}} |
- {{data.calc.stats.defenseBonus.value}} |
-
-
- | {{localize "midgard5.damageBonus"}} |
- {{data.calc.stats.damageBonus.value}} |
- {{localize "midgard5.attackBonus"}} |
- {{data.calc.stats.attackBonus.value}} |
-
-
-
-
-
-
+
diff --git a/templates/sheets/character/gear.hbs b/templates/sheets/character/gear.hbs
index 6f88e2a..9e80345 100644
--- a/templates/sheets/character/gear.hbs
+++ b/templates/sheets/character/gear.hbs
@@ -1,6 +1,7 @@
+{{localize "midgard5.wealthAndContainers"}}
-
+
-
-
-
-
-
-
-
-
- {{#each data.calc.gear.items as |item itemId|}}
- {{#if (or ../data.info.showAllItems (eq item.containerId ""))}}
-
- |
- {{item.label}}
- |
-
-
- {{item.quantity}}
-
- |
-
- {{#unless (or (eq item.value 0) (eq item.currency ""))}}
- {{item.value}} {{localize (m5concat "midgard5.currency-" item.currency)}}
- {{/unless}}
- |
-
- {{#if item.equipped}}
-
- {{else}}
-
- {{/if}}
- |
- {{#if item.rollExist}}{{/if}} |
- |
-
- {{/if}}
- {{/each}}
-
-
-
-
-
-
-
-
-
- | {{localize "TYPES.Item.weapon"}} |
- {{localize "midgard5.item-value"}} |
-  |
- |
-
-
-
-
- {{#each data.calc.gear.weapons as |item itemId|}}
-
- | {{item.label}} |
-
- {{#unless (or (eq item.value 0) (eq item.currency ""))}}
- {{item.value}} {{localize (m5concat "midgard5.currency-" item.currency)}}
- {{/unless}}
- |
-
- {{#if item.equipped}}
-
- {{else}}
-
- {{/if}}
- |
- |
-
- {{/each}}
-
-
-
-
-
-
-
-
-
- | {{localize "TYPES.Item.defensiveWeapon"}} |
- {{localize "midgard5.item-value"}} |
-  |
- |
-
-
-
- {{#each data.calc.gear.defensiveWeapons as |item itemId|}}
-
- | {{item.label}} |
-
- {{#unless (or (eq item.value 0) (eq item.currency ""))}}
- {{item.value}} {{localize (m5concat "midgard5.currency-" item.currency)}}
- {{/unless}}
- |
-
- {{#if item.equipped}}
-
- {{else}}
-
- {{/if}}
- |
- |
-
- {{/each}}
-
-
-
-
-
-
-
-
-
- | {{localize "TYPES.Item.armor"}} |
- {{localize "midgard5.item-value"}} |
-  |
- |
-
-
-
- {{#each data.calc.gear.armor as |item itemId|}}
-
- | {{item.label}} |
-
- {{#unless (or (eq item.value 0) (eq item.currency ""))}}
- {{item.value}} {{localize (m5concat "midgard5.currency-" item.currency)}}
- {{/unless}}
- |
-
- {{#if item.equipped}}
-
- {{else}}
-
- {{/if}}
- |
- |
-
- {{/each}}
-
-
-
-
@@ -197,7 +42,7 @@
| {{localize "midgard5.item-value"}} |
 |
 |
- |
+ |
@@ -226,8 +71,13 @@
+
+
- {{#each data.calc.gear.containers as |container containerId|}}
+
{{localize "midgard5.itemsInContainers"}}
+
+ {{#each data.calc.gear.containers as |container containerId|}}
+
@@ -271,9 +121,265 @@
{{/if}}
{{/each}}
+ {{#each ../data.calc.gear.weapons as |item itemId|}}
+ {{#if (eq item.containerId containerId)}}
+
+ |
+ {{item.label}}
+ |
+ |
+
+ {{#unless (or (eq item.value 0) (eq item.currency ""))}}
+ {{item.value}} {{localize (m5concat "midgard5.currency-" item.currency)}}
+ {{/unless}}
+ |
+
+ {{#if item.equipped}}
+
+ {{else}}
+
+ {{/if}}
+ |
+ {{#if item.rollExist}}{{/if}} |
+ |
+
+ {{/if}}
+ {{/each}}
+ {{#each ../data.calc.gear.defensiveWeapons as |item itemId|}}
+ {{#if (eq item.containerId containerId)}}
+
+ |
+ {{item.label}}
+ |
+ |
+
+ {{#unless (or (eq item.value 0) (eq item.currency ""))}}
+ {{item.value}} {{localize (m5concat "midgard5.currency-" item.currency)}}
+ {{/unless}}
+ |
+
+ {{#if item.equipped}}
+
+ {{else}}
+
+ {{/if}}
+ |
+ {{#if item.rollExist}}{{/if}} |
+ |
+
+ {{/if}}
+ {{/each}}
+ {{#each ../data.calc.gear.armor as |item itemId|}}
+ {{#if (eq item.containerId containerId)}}
+
+ |
+ {{item.label}}
+ |
+ |
+
+ {{#unless (or (eq item.value 0) (eq item.currency ""))}}
+ {{item.value}} {{localize (m5concat "midgard5.currency-" item.currency)}}
+ {{/unless}}
+ |
+
+ {{#if item.equipped}}
+
+ {{else}}
+
+ {{/if}}
+ |
+ {{#if item.rollExist}}{{/if}} |
+ |
+
+ {{/if}}
+ {{/each}}
- {{/each}}
+ {{/each}}
+
+
+
+ {{localize "midgard5.allItems"}}
+
+
+
+
+ {{#unless (eq (count data.calc.gear.items) 0)}}
+
+
+
+
+
+
+
+
+ {{#each data.calc.gear.items as |item itemId|}}
+ {{#if (or ../data.info.showAllItems (eq item.containerId ""))}}
+
+ |
+ {{item.label}}
+ |
+
+
+ {{item.quantity}}
+
+ |
+
+ {{#unless (or (eq item.value 0) (eq item.currency ""))}}
+ {{item.value}} {{localize (m5concat "midgard5.currency-" item.currency)}}
+ {{/unless}}
+ |
+
+ {{#if item.equipped}}
+
+ {{else}}
+
+ {{/if}}
+ |
+ {{#if item.rollExist}}{{/if}} |
+ |
+
+ {{/if}}
+ {{/each}}
+
+
+
+
+ {{/unless}}
+
+ {{#unless (eq (count data.calc.gear.weapons) 0)}}
+
+
+
+
+
+
+ | {{localize "TYPES.Item.weapon"}} |
+ {{localize "midgard5.item-value"}} |
+  |
+ |
+
+
+
+
+ {{#each data.calc.gear.weapons as |item itemId|}}
+ {{#if (or ../data.info.showAllItems (eq item.containerId ""))}}
+
+ | {{item.label}} |
+
+ {{#unless (or (eq item.value 0) (eq item.currency ""))}}
+ {{item.value}} {{localize (m5concat "midgard5.currency-" item.currency)}}
+ {{/unless}}
+ |
+
+ {{#if item.equipped}}
+
+ {{else}}
+
+ {{/if}}
+ |
+ |
+
+ {{/if}}
+ {{/each}}
+
+
+
+
+ {{/unless}}
+
+ {{#unless (eq (count data.calc.gear.defensiveWeapons) 0)}}
+
+
+
+
+
+
+ | {{localize "TYPES.Item.defensiveWeapon"}} |
+ {{localize "midgard5.item-value"}} |
+  |
+ |
+
+
+
+ {{#each data.calc.gear.defensiveWeapons as |item itemId|}}
+ {{#if (or ../data.info.showAllItems (eq item.containerId ""))}}
+
+ | {{item.label}} |
+
+ {{#unless (or (eq item.value 0) (eq item.currency ""))}}
+ {{item.value}} {{localize (m5concat "midgard5.currency-" item.currency)}}
+ {{/unless}}
+ |
+
+ {{#if item.equipped}}
+
+ {{else}}
+
+ {{/if}}
+ |
+ |
+
+ {{/if}}
+ {{/each}}
+
+
+
+
+ {{/unless}}
+
+ {{#unless (eq (count data.calc.gear.armor) 0)}}
+
+
+
+
+
+
+ | {{localize "TYPES.Item.armor"}} |
+ {{localize "midgard5.item-value"}} |
+  |
+ |
+
+
+
+ {{#each data.calc.gear.armor as |item itemId|}}
+ {{#if (or ../data.info.showAllItems (eq item.containerId ""))}}
+
+ | {{item.label}} |
+
+ {{#unless (or (eq item.value 0) (eq item.currency ""))}}
+ {{item.value}} {{localize (m5concat "midgard5.currency-" item.currency)}}
+ {{/unless}}
+ |
+
+ {{#if item.equipped}}
+
+ {{else}}
+
+ {{/if}}
+ |
+ |
+
+ {{/if}}
+ {{/each}}
+
+
+
+
+ {{/unless}}
+
+
+
\ No newline at end of file