Merge branch 'develop' into lasten

This commit is contained in:
Byroks 2024-01-21 12:24:35 +01:00
commit fa818e963a
34 changed files with 1244 additions and 670 deletions

View File

@ -0,0 +1,15 @@
name: Move new issues into To Do
on:
issues:
types: [opened]
jobs:
createCard:
runs-on: ubuntu-latest
steps:
- name: Close Issue
run: >
curl -X PATCH -H "Content-Type: application/xml"
-H "Authorization: token ${{ secrets.GITEA_TOKEN }}
-d '{ "state": "To Do" }'
"${{ gitea.event.issue.url }}"

Binary file not shown.

After

Width:  |  Height:  |  Size: 173 KiB

View File

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" width="512" height="512"><path fill="#fff" d="M262.406 17.188c-27.22 8.822-54.017 28.012-72.375 55.53 17.544 47.898 17.544 57.26 0 105.157 19.92 15.463 40.304 24.76 60.782 27.47-2.063-25.563-3.63-51.13 1.125-76.69-13.625-1.483-23.374-5.995-37-13.874V82.563c35.866 19.096 61.84 18.777 98.813 0v32.22c-13.364 6.497-21.886 11.16-35.25 13.218 3.614 25.568 3.48 51.15 1.375 76.72 18.644-3.265 37.236-12.113 55.5-26.845-14.353-47.897-14.355-57.26 0-105.156-16.982-28.008-47.453-46.633-72.97-55.532zm-129.594 8.218c-25.906 110.414-27.35 215.33-27.4 330.922-18.84-1.537-37.582-5.12-56.027-11.12v28.554h69.066c8.715 35.025 6.472 70.052-1.036 105.078h28.13c-7.195-35.026-8.237-70.053-.872-105.078h68.904v-28.555c-18.49 4.942-37.256 8.552-56.097 10.46.082-114.94 2.496-223.068-24.667-330.26zm89.47 202.375c0 117.27 25.517 233.342 120.155 257.97C446.62 464.716 462.72 345.374 462.72 227.78H222.28z"/></svg>

After

Width:  |  Height:  |  Size: 956 B

View File

@ -1 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" width="512" height="512"><path fill="#000" d="M51.67 24.377c0 215.76 44.432 429.318 209.21 474.63 181.394-38.7 209.446-258.276 209.446-474.63H51.67zM276.482 44.79c1.448.018 2.916.13 4.375.34l.07.01c6.26.92 12.11 3.844 15.452 6.77L275.18 180.922l17.607 5.646L352.07 66.25c4.27-.31 10.41.832 16.05 3.863 5.992 3.22 10.74 8.133 12.995 12.658l-56.13 116.24 15.218 10.48 76.664-81.246c4.1 1.16 9.34 4.344 13.65 9.195 4.623 5.2 7.66 11.762 8.53 16.882L337.624 263.916l.135-.143c-14.347 14.864-16.183 38.756-12.852 68.202 3.173 28.047 11.84 62.157 23.774 100.28-25.156 24.603-55.416 40.65-85.72 47.116-28.74-10.175-50.453-19.478-72.64-39.227 20.222-52.778 24.746-101.603 23.157-140.637 6.284 2.99 12.498 5.453 18.69 7.197 15.103 4.253 30.777 3.893 44.453-4.392l-9.687-15.988c-8.748 5.3-17.79 5.74-29.7 2.387-11.91-3.355-25.99-10.902-41.486-20.733-28.876-18.32-62.683-44.228-101.223-63.307 4.407-8.026 9.135-12.05 13.983-13.96 6.228-2.456 14.186-1.912 24.166 1.56 15.198 5.29 33.493 17.21 52.21 28.808l16.007-9.14-.754-3.508c-.613-.38-1.218-.745-1.83-1.127L167.284 65.877c3.303-3.966 9.28-8.136 15.986-10.318 6.207-2.02 12.423-2.145 16.595-1.113l25.715 116.66 18.36-.543 19.59-123.007c3.058-1.567 7.08-2.622 11.513-2.756.477-.014.957-.017 1.44-.01z"/></svg>

Before

Width:  |  Height:  |  Size: 1.3 KiB

View File

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" width="512" height="512"><path fill="#000" d="M256 16C123.5 16 16 123.5 16 256c0 132.6 107.5 240 240 240 132.6 0 240-107.4 240-240S388.6 16 256 16zm0 60c99.4 0 180 80.6 180 180s-80.6 180-180 180S76 355.4 76 256 156.6 76 256 76zm91.3 64.2c-6.5 0-12.5 2.4-16.8 8.2-52 70.1-69 96.5-106 169.8-8.4-11.1-65.6-72.4-93.9-94.1-14.2-10.9-41.3 27.2-31.6 37.1C142.6 306.1 220.1 406 232.7 405c21.4-1.7 75.1-136.8 148.8-233.7 8-10.4-15-31.3-34.2-31.1z"/></svg>

After

Width:  |  Height:  |  Size: 508 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 85 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 84 KiB

View File

@ -6,7 +6,7 @@ _**Warnung:** Das System befindet sich noch in der Entwicklung._
Gehe auf die Setup-Seite deiner Foundry VTT Instanz. Klicke im Reiter **Game Systems** auf den Button **Install System**. In dem dann geöffneten Dialog, unten in der Zeile **Manifest URL** den Link zur aktuellen (oder gewünschten) Version der _system.json_ eintragen und auf **Install** klicken:
https://github.com/byroks/foundry-vtt-system-midgard5/releases/download/v1.3.0/system.json
https://git.byroks.de/MidgardVTT-Entwicklung/foundry-vtt-system-midgard5/releases/download/v1.3.0/system.json
Danach kann eine Spielwelt mit dem System erstellt werden.
@ -32,7 +32,7 @@ Dieser Reiter enthält (mit Ausname von Zaubern) alle zu erlernenden Dinge des C
![Blaupausen für Gegenstände](compendium-items.de.png)
Es kann einfach per Drag'n'Drop die entsprechende Blaupause auf den Charakterbogen gezogen werden, um eine Fertigkeit/Fähigkeit/Sprache zu *lernen.* Alternativ kann auch der **Lernen** Button bei den **ungelernten Fertigkeiten** geklickt werden.
Es kann einfach per Drag'n'Drop die entsprechende Blaupause auf den Charakterbogen gezogen werden, um eine Fertigkeit/Fähigkeit/Sprache zu _lernen._ Alternativ kann auch der **Lernen** Button bei den **ungelernten Fertigkeiten** geklickt werden.
Um den **Fertigkeitswert** und die **Leiteigenschaft** einer Fertigkeit anzupassen, kann man auf die Fertigkeit klicken. Dann geht folgender Dialog auf:

View File

@ -1,5 +1,4 @@
{
"moduleName": "Midgard 5. Edition",
"repository": "https://github.com/Byroks/foundry-vtt-system-midgard5",
"rawURL": "https://raw.githubusercontent.com/Byroks/foundry-vtt-system-midgard5"
"repository": "https://git.byroks.de/MidgardVTT-Entwicklung/foundry-vtt-system-midgard5"
}

View File

@ -423,7 +423,7 @@ const updateManifest = (cb: any) => {
cb(Error("Manifest JSON not found"));
return;
}
if (!rawURL || !repoURL) cb(Error("Repository URLs not configured in foundryconfig.json"));
if (!repoURL) cb(Error("Repository URLs not configured in foundryconfig.json"));
try {
const version = argv.update || argv.u;

View File

@ -29,11 +29,20 @@
"midgard5.label": "Bezeichnung",
"midgard5.description": "Beschreibung",
"midgard5.attribute": "Leiteigenschaft",
"midgard5.Characteristic": "Merkmal",
"midgard5.characteristics": "Merkmale",
"midgard5.background": "Hintergrund",
"midgard5.attribute": "Eigenschaft",
"midgard5.attributes": "Eigenschaften",
"midgard5.points": "Punkte",
"midgard5.calculated-value": "Berechneter Wert",
"midgard5.calculated-values": "Sonstige Werte",
"midgard5.skill": "Fertigkeit",
"midgard5.skill-value": "Fertigkeitswert",
"midgard5.fw": "FW",
"midgard5.bonus": "Bonus",
"midgard5.bonuses": "Boni",
"midgard5.ew": "EW",
"midgard5.pp-short": "PP",
"midgard5.pp": "Praxispunkte",
@ -81,8 +90,12 @@
"midgard5.spells": "Zauber",
"midgard5.effects": "Aktive Effekte",
"midgard5.kampfkuenste": "Kampfkünste",
"midgard5.combat": "Kampf",
"midgard5.class": "Klasse",
"midgard5.actor-name": "Figur",
"midgard5.level": "Grad",
"midgard5.class": "Typ",
"midgard5.race": "Rasse",
"midgard5.magicUsing": "Zauberkundig",
"midgard5.gender": "Geschlecht",
@ -227,13 +240,21 @@
"midgard5.new-skill": "Neue Fertigkeit",
"midgard5.special": "Spezial",
"midgard5.learned-skill": "Gelernte Fertigkeit",
"midgard5.learned-skills": "Gelernte Fertigkeiten",
"midgard5.language": "Sprache",
"midgard5.languages": "Sprachen",
"midgard5.weapon-skill": "Waffenfertigkeit",
"midgard5.weapon-skills": "Waffenfertigkeiten",
"midgard5.unlearned-skill": "Ungelernte Fertigkeit",
"midgard5.innate-ability": "Angeborene Fähigkeit",
"midgard5.unlearned-skills": "Ungelernte Fertigkeiten",
"midgard5.innate-ability": "Angeborene/Besondere Fertigkeit",
"midgard5.innate-abilities": "Angeborene/Besondere Fertigkeit",
"midgard5.base-damage": "Grundschaden",
"midgard5.weapon": "Waffe",
"midgard5.weapons": "Waffen",
"midgard5.defensive-weapon": "Verteidigungswaffe",
"midgard5.defensive-weapons": "Verteidigungswaffen",
"midgard5.no-skill": "Keine Fertigkeit",
"midgard5.magic": "magisch",
"midgard5.valuable": "Vermögen",
@ -284,6 +305,7 @@
"midgard5.kampfkunst-type": "Kampfkunst Art",
"midgard5.kampfkunst-variante": "Kampfkunst Variante",
"midgard5.kampfkunst-variante-short": "Var",
"midgard5.kido-type": "Kido Art",
"midgard5.kido-variante": "Kido Variante",

View File

@ -1,6 +1,6 @@
{
"name": "foundry-system-midgard5",
"version": "2.3.1",
"version": "2.4.0",
"description": "",
"main": "index.js",
"scripts": {

View File

@ -6,13 +6,14 @@ const preloadTemplates = async (): Promise<Handlebars.TemplateDelegate<any>[]> =
// const templates = [ rootPath + "actor/actor-sheet.hbs" ]
// This would map to our local folder of /Assets/Templates/Actor/actor-sheet.hbs
const templates: Array<string> = [
"sheets/character/description.hbs",
"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",
"sheets/character/kampfkuenste.hbs",
"sheets/character/combat.hbs",
"sheets/character/effects.hbs",
"sheets/partial/mod.hbs",
"sheets/item/rolls.hbs",

View File

@ -49,6 +49,18 @@ export interface M5RollResult extends M5RollTemplate {
css: string;
}
export enum M5ItemType {
SKILL = "skill",
ITEM = "item",
WEAPON = "weapon",
DEFENSIVE_WEAPON = "defensiveWeapon",
ARMOR = "armor",
CONTAINER = "container",
SPELL = "spell",
KAMPFKUNST = "kampfkunst",
EFFECT = "effect",
}
export enum M5EwResult {
TBD = "",
FUMBLE = "roll-ew-result-fumble",

View File

@ -1,5 +1,5 @@
import { M5Item } from "../items/M5Item";
import { M5Attribute, M5Attributes, M5CharacterCalculatedData, M5ItemMod, M5ModOperation, M5ModResult, M5RollData, M5Skill, M5SkillCalculated, M5SkillLearned, M5Stats } from "../M5Base";
import { M5Attribute, M5CharacterCalculatedData, M5ItemMod, M5ItemType, M5ModOperation, M5ModResult, M5RollData, M5Skill, M5SkillCalculated, M5SkillLearned } from "../M5Base";
import M5ModAggregate from "./M5ModAggregate";
export class M5Character extends Actor {
// constructor(
@ -198,9 +198,9 @@ 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.hoardMin = M5Character.levelThreshold.at(ret.level - 1) / 2;
ret.stats.hoardNext = M5Character.levelThreshold.at(ret.level) / 2;
ret.stats.wealth = parseFloat((data.info.gold + data.info.silver / 10 + data.info.copper / 100).toPrecision(3));
ret.stats.hoard = 0;
ret.stats.load = M5Character.loadValue(data.attributes.st);
ret.stats.heavyLoad = M5Character.heavyLoadValue(data.attributes.st);
@ -251,13 +251,13 @@ 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;
};
ret.stats.wealth += this.calculateValue(item.system.value, item.system.currency);
}
if (item.system.hoarded) {
ret.stats.hoard += item.system.value || 0;
};
}
if (item.system.equipped) {
ret.stats.encumbrance += item.system.weight || 0;
}
@ -320,13 +320,11 @@ export class M5Character extends Actor {
calc: item.system.calc,
equipped: item.system?.equipped,
weight: item.system.weight || 0,
containerId: item.system.containerId || "",
value: item.system.value || 0,
currency: item.system.currency || "",
quantity: item.system.quantity || 0,
rollExist: rollable,
};
});
}
@ -339,7 +337,7 @@ export class M5Character extends Actor {
let label = item.name;
if (item.system.magic) {
label += "*";
};
}
ret.gear.effects[item.id] = {
label: label,
@ -383,13 +381,13 @@ 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;
};
ret.stats.wealth += this.calculateValue(item.system.value, item.system.currency);
}
if (item.system.hoarded) {
ret.stats.hoard += item.system.value || 0;
};
}
if (item.system.equipped) {
ret.stats.encumbrance += item.system.weight || 0;
}
@ -402,6 +400,10 @@ export class M5Character extends Actor {
hoarded: item.system?.hoarded,
value: item.system.value || 0,
calc: item.system.calc,
special: item.system.special,
damageBase: item.system.damageBase,
equipped: item.system?.equipped,
containerId: item.system.containerId || "",
};
});
}
@ -415,13 +417,13 @@ 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;
};
ret.stats.wealth += this.calculateValue(item.system.value, item.system.currency);
}
if (item.system.hoarded) {
ret.stats.hoard += item.system.value || 0;
};
}
if (item.system.equipped) {
ret.stats.encumbrance += item.system.weight || 0;
}
@ -433,7 +435,10 @@ export class M5Character extends Actor {
valuable: item.system?.valuable,
hoarded: item.system?.hoarded,
value: item.system.value || 0,
defenseBonus: item.system.stats.defenseBonus,
calc: item.system.calc,
equipped: item.system?.equipped,
containerId: item.system.containerId || "",
};
});
}
@ -447,16 +452,18 @@ 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;
};
ret.stats.wealth += this.calculateValue(item.system.value, item.system.currency);
}
if (item.system.hoarded) {
ret.stats.hoard += item.system.value || 0;
};
}
if (item.system.equipped) {
ret.stats.encumbrance += 0;
} else {ret.stats.encumbrance += item.system.weight || 0}
} else {
ret.stats.encumbrance += item.system.weight || 0;
}
ret.gear.armor[item.id] = {
label: label,
@ -464,8 +471,10 @@ export class M5Character extends Actor {
valuable: item.system?.valuable,
hoarded: item.system?.hoarded,
value: item.system.value || 0,
lpProtection: item.system.lpProtection,
calc: item.system.calc,
equipped: item.system?.equipped,
containerId: item.system.containerId || "",
};
});
}
@ -602,11 +611,36 @@ export class M5Character extends Actor {
});
}
createItem(itemName: string, itemType: M5ItemType): Promise<M5Item> {
const itemData = {
name: itemName,
type: itemType,
};
return (this as any).createEmbeddedDocuments("Item", [itemData]).then((docs) => {
const item = docs[0];
return item;
});
}
getItem(itemId: string): any {
if (!(this as any).items) return null;
return (this as any).getEmbeddedDocument("Item", itemId);
}
private calculateValue(value: number, currency: string): number {
switch (currency) {
case "gold":
return value;
case "silver":
return parseFloat((value / 10).toPrecision(3));
case "copper":
return parseFloat((value / 100).toPrecision(3));
default:
return 0;
}
}
private modResult(value: number): M5ModResult {
return {
value: value,

View File

@ -79,12 +79,21 @@ export class M5Item extends Item {
calc.special = itemData.special ? 2 : 0;
calc.ew = calc.special + itemData.stats.attackBonus;
calc.combatSkills = null;
calc.containers = null;
if (actor) {
const actorCalc = character.derivedData({ weapons: true, defensiveWeapons: true, armor: true, items: true, spells: true, effects: true, kampfkuenste: true });
if (actorCalc) {
calc.ew += actorCalc.stats.attackBonus.value;
calc.combatSkills = actorCalc.skills.combat;
calc.containers = actorCalc.gear.containers;
}
const container = character.getItem(itemData.containerId);
//console.log("M5Item.prepareDerivedData:containers", itemData, container?.system)
if (container) {
container.prepareDerivedData();
const containerData = container.system;
}
const skill = character.getItem(itemData.skillId);
@ -103,12 +112,21 @@ export class M5Item extends Item {
calc.special = itemData.special ? 2 : 0;
calc.ew = calc.special + itemData.stats.defenseBonus;
calc.combatSkills = null;
calc.containers = null;
if (actor) {
const actorCalc = character.derivedData({ weapons: true, defensiveWeapons: true, armor: true, items: true, spells: true, effects: true, kampfkuenste: true });
if (actorCalc) {
calc.ew += actorCalc.stats.defense.value + actorCalc.stats.defenseBonus.value;
calc.combatSkills = actorCalc.skills.combat;
calc.containers = actorCalc.gear.containers;
}
const container = character.getItem(itemData.containerId);
//console.log("M5Item.prepareDerivedData:containers", itemData, container?.system)
if (container) {
container.prepareDerivedData();
const containerData = container.system;
}
const skill = character.getItem(itemData.skillId);
@ -128,6 +146,19 @@ export class M5Item extends Item {
itemData.mods[3] = { type: "attribute", id: "gw", operation: "add100", value: itemData.attributeMod.gw };
itemData.mods[4] = { type: "stat", id: "lpProtection", operation: "set", value: itemData.lpProtection };
itemData.mods[5] = { type: "stat", id: "apProtection", operation: "set", value: itemData.apProtection };
calc.containers = null;
if (actor) {
const actorCalc = actor.derivedData({ weapons: true, defensiveWeapons: true, armor: true, items: true, spells: true, effects: true, kampfkuenste: true });
if (actorCalc) {
calc.containers = actorCalc.gear.containers;
}
const container = character.getItem(itemData.containerId);
//console.log("M5Item.prepareDerivedData:containers", itemData, container?.system)
if (container) {
container.prepareDerivedData();
const containerData = container.system;
}
}
} else if (itemType === "spell") {
calc.fw = 0;
if (actor) {

View File

@ -1,14 +1,14 @@
import Logger from "../../utils/Logger";
import { M5Character } from "../actors/M5Character";
import { M5Item } from "../items/M5Item";
import { M5SkillLearned, M5SkillUnlearned } from "../M5Base";
import { M5ItemType, M5SkillLearned, M5SkillUnlearned } from "../M5Base";
import { M5Roll } from "../rolls/M5Roll";
export default class M5CharacterSheet extends ActorSheet {
static get defaultOptions() {
return mergeObject(super.defaultOptions, {
template: "systems/midgard5/templates/sheets/character/main.hbs",
width: 1200,
width: 1000,
height: 800,
classes: ["midgard5", "sheet", "character"],
tabs: [{ navSelector: ".sheet-navigation", contentSelector: ".sheet-content", initial: "base_values" }],
@ -111,7 +111,11 @@ export default class M5CharacterSheet extends ActorSheet {
if (!item.system.quantity) {
item.system.quantity = 0;
}
item.system.quantity += 1;
item.update({
data: {
quantity: item.system.quantity + 1,
},
});
this.render();
});
@ -127,7 +131,11 @@ export default class M5CharacterSheet extends ActorSheet {
const context = this.actor as any;
const item = context.items.get(itemId);
if (item.system.quantity > 0) {
item.system.quantity -= 1;
item.update({
data: {
quantity: item.system.quantity - 1,
},
});
}
this.render();
});
@ -144,7 +152,11 @@ export default class M5CharacterSheet extends ActorSheet {
const context = this.actor as any;
const item = context.items.get(itemId);
if (item.system.quantity > 0) {
item.system.quantity -= 1;
item.update({
data: {
quantity: item.system.quantity - 1,
},
});
}
await item.roll();
@ -246,6 +258,111 @@ export default class M5CharacterSheet extends ActorSheet {
const roll = M5Roll.resistanceBody(this.actor);
await roll.toMessage();
});
html.find(".change-equipped").on("click", async (event) => {
let row = event.target.parentElement;
let itemId = row.dataset["item"];
while (!itemId) {
row = row.parentElement;
if (!row) return;
itemId = row.dataset["item"];
}
const context = this.actor as any;
const item = context.items.get(itemId);
if (item.system.equipped === true) {
item.system.equipped = false;
} else {
item.system.equipped = true;
}
this.render();
});
html.find(".add-item").on("click", async (event) => {
const data = this.actor.system;
const character = this.actor as M5Character;
character.createItem((game as Game).i18n.localize("TYPES.Item.item"), M5ItemType.ITEM).then((i) => {
const item = i as any;
item.update({
data: {
quantity: 1,
},
});
});
});
html.find(".add-weapon").on("click", async (event) => {
const data = this.actor.system;
const character = this.actor as M5Character;
character.createItem((game as Game).i18n.localize("TYPES.Item.weapon"), M5ItemType.WEAPON);
});
html.find(".add-defensiveWeapon").on("click", async (event) => {
const data = this.actor.system;
const character = this.actor as M5Character;
character.createItem((game as Game).i18n.localize("TYPES.Item.defensiveWeapon"), M5ItemType.DEFENSIVE_WEAPON);
});
html.find(".add-armor").on("click", async (event) => {
const data = this.actor.system;
const character = this.actor as M5Character;
character.createItem((game as Game).i18n.localize("TYPES.Item.armor"), M5ItemType.ARMOR);
});
html.find(".add-container").on("click", async (event) => {
const data = this.actor.system;
const character = this.actor as M5Character;
character.createItem((game as Game).i18n.localize("TYPES.Item.container"), M5ItemType.CONTAINER).then((i) => {
const item = i as any;
item.update({
data: {
quantity: 1,
},
});
});
});
html.find(".add-spell").on("click", async (event) => {
const data = this.actor.system;
const character = this.actor as M5Character;
character.createItem((game as Game).i18n.localize("TYPES.Item.spell"), M5ItemType.SPELL).then((i) => {
const item = i as any;
item.update({
data: {
process: "none",
},
});
});
});
html.find(".add-kampfkunst").on("click", async (event) => {
const data = this.actor.system;
const character = this.actor as M5Character;
character.createItem((game as Game).i18n.localize("TYPES.Item.kampfkunst"), M5ItemType.KAMPFKUNST).then((i) => {
const item = i as any;
item.update({
data: {
type: "angriff",
variante: "anstuermen",
},
});
});
});
html.find(".add-effect").on("click", async (event) => {
const data = this.actor.system;
const character = this.actor as M5Character;
character.createItem((game as Game).i18n.localize("TYPES.Item.effect"), M5ItemType.EFFECT);
});
// Drag & Drop
const dragDrop = new DragDrop({
dragSelector: ".items-list .item",

View File

@ -6,17 +6,42 @@
.flexbox {
display: flex;
flex-direction: row;
flex-wrap: wrap
flex-wrap: wrap;
}
.flexcolumn {
flex-wrap: wrap;
}
.flexcolumn-1 {
flex: 100%;
flex-wrap: wrap;
}
.flexcolumn-2 {
flex: 50%;
flex-wrap: wrap;
}
.flexcolumn-3 {
flex: 33%;
flex-wrap: wrap;
}
.flexcolumn-4 {
flex: 25%;
flex-wrap: wrap;
}
.flexcolumn-5 {
flex: 20%;
flex-wrap: wrap;
}
.flexpart {
gap: 0;
padding: 0;
margin: 10px;
margin: 5px;
background-color: beige;
border: 2px solid black;
}
@ -46,6 +71,15 @@
color: white;
}
.profile-img {
display: block;
margin-left: auto;
margin-right: auto;
height: 100%;
width: auto;
border: 0px solid black;
}
.sheet.character {
form {
display: flex;
@ -62,12 +96,6 @@
}
}
.profile-img {
max-width: 128px;
height: 128px;
border: 0px solid black;
}
.description {
flex: 0 0 100%;
margin: 0;
@ -100,6 +128,13 @@
table {
background-color: beige;
border: 0px solid transparent;
&.bordered {
border-collapse: separate;
border: 2px solid black;
border-radius: 10px;
font-size: larger;
font-weight: bolder;
}
}
td,
@ -137,6 +172,11 @@
text-align: left;
font-weight: bold;
}
&.highlight {
font-weight: bold;
font-style: italic;
}
}
.table-icon {
@ -146,6 +186,10 @@
border: 0px solid transparent;
}
input {
border: 0px solid black;
}
input.skill {
width: 5rem;
}
@ -154,22 +198,34 @@
width: 5rem;
}
input.checkbox {
width: 1rem;
height: 1rem;
}
.new-skill {
font-style: italic;
background: rgba(0, 0, 0, 0.3);
color: rgba(255, 255, 255);
button {
background: rgba(255, 255, 255, 0.5);
}
}
button.roll-button {
.roll-button {
background: url(/icons/svg/d20-black.svg) no-repeat;
background-size: 24px 24px;
background-size: 1rem 1rem;
border: #000000 solid 0px;
width: 26px;
height: 26px;
width: 1rem;
height: 1rem;
}
.learn-button {
padding: 0;
margin: 0;
height: 1rem;
width: 4rem;
background: rgba(255, 255, 255, 0.5);
font-size: smaller;
text-align: center;
line-height: 0.8rem;
}
span.spell-process {
@ -222,15 +278,27 @@
}
}
.biography {
margin: 0.5rem 0.5rem 0.5rem 0.5rem;
height: 180px;
background-color: #eaead7;
.editor {
height: 100%;
width: 100%;
}
}
.attributes {
padding: 0.5rem 0.5rem 0.5rem 0.5rem;
display: flex;
flex-direction: row;
margin-bottom: 0.5rem;
background-color: beige;
flex-wrap: wrap;
justify-content: center;
.attribute {
flex: 0 0 7rem;
flex: 0 0 6rem;
margin: 0;
border: 1px solid @attributeBorderColor;
//border-bottom: none;

View File

@ -3,13 +3,17 @@
"name": "midgard5",
"title": "Midgard 5. Edition",
"description": "The German RPG Midgard 5. Edition",
"version": "2.3.1",
"version": "2.4.0",
"compatibility": {
"minimum": "10",
"verified": "11",
"maximum": "11"
},
"authors": [{"name": "Byroks"}],
"authors": [
{"name": "Byroks"},
{"name": "Le-Frique"},
{"name": "Oskaloq"}
],
"scripts": ["bundle.js"],
"styles": ["bundle.css"],
"packs": [
@ -153,9 +157,9 @@
"gridUnits": "m",
"primaryTokenAttribute": "lp",
"secondaryTokenAttribute": "ap",
"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",
"url": "https://git.byroks.de/MidgardVTT-Entwicklung/foundry-vtt-system-midgard5",
"manifest": "https://git.byroks.de/MidgardVTT-Entwicklung/foundry-vtt-system-midgard5/releases/download/v2.4.0/system.json",
"download": "https://git.byroks.de/MidgardVTT-Entwicklung/foundry-vtt-system-midgard5/releases/download/v2.4.0/midgard5-v2.4.0.zip",
"initiative": "@c.calc.attributes.gw.value",
"license": "LICENSE.txt"
}

View File

@ -5,9 +5,11 @@
"characterDescription": {
"info": {
"description": "",
"background": "",
"class": "",
"race": "",
"magicUsing": false,
"showAllItems": false,
"gender": "",
"weight": "",
"height": "",
@ -202,7 +204,7 @@
},
"equippable": {
"equippable": false,
"equipped": true
"equipped": false
},
"valuable": {
"valuable": false,

View File

@ -1,18 +1,36 @@
<div class="flexbox">
<table>
<thead>
<tr>
<th class="title" colspan="4">Eigenschaften</th>
</tr>
</thead>
<div class="flexpart">
<div class="flexpart-header"><img src="icons/skills/melee/maneuver-sword-katana-yellow.webp" class="flexpart-icon">{{localize "midgard5.attributes"}}</div>
<br>
<div class="attributes">
{{> "systems/midgard5/templates/sheets/character/attribute.hbs" attributeId="st" attribute=data.attributes.st calc=data.calc.attributes.st}}
<div class="filler"></div>
{{> "systems/midgard5/templates/sheets/character/attribute.hbs" attributeId="gs" attribute=data.attributes.gs calc=data.calc.attributes.gs}}
<div class="filler"></div>
{{> "systems/midgard5/templates/sheets/character/attribute.hbs" attributeId="gw" attribute=data.attributes.gw calc=data.calc.attributes.gw}}
<div class="filler"></div>
{{> "systems/midgard5/templates/sheets/character/attribute.hbs" attributeId="ko" attribute=data.attributes.ko calc=data.calc.attributes.ko}}
<div class="filler"></div>
{{> "systems/midgard5/templates/sheets/character/attribute.hbs" attributeId="in" attribute=data.attributes.in calc=data.calc.attributes.in}}
<div class="filler"></div>
{{> "systems/midgard5/templates/sheets/character/attribute.hbs" attributeId="zt" attribute=data.attributes.zt calc=data.calc.attributes.zt}}
<div class="filler"></div>
{{> "systems/midgard5/templates/sheets/character/attribute.hbs" attributeId="au" attribute=data.attributes.au calc=data.calc.attributes.au}}
<div class="filler"></div>
{{> "systems/midgard5/templates/sheets/character/attribute.hbs" attributeId="pa" attribute=data.attributes.pa calc=data.calc.attributes.pa}}
<div class="filler"></div>
{{> "systems/midgard5/templates/sheets/character/attribute.hbs" attributeId="wk" attribute=data.attributes.wk calc=data.calc.attributes.wk}}
<div class="filler"></div>
</div>
</div>
<div class="flexcolumn-2">
<div class="flexpart">
<div class="flexpart-header"><img src="icons/skills/social/theft-pickpocket-bribery-brown.webp" class="flexpart-icon">{{localize "midgard5.points"}}</div>
<table>
<tbody>
<tr height = 10px></tr>
<tr>
<td>{{localize "midgard5.magicUsing"}}</td>
<td><input id="data.info.magicUsing" type="checkbox" name="data.info.magicUsing" {{checked data.info.magicUsing}}></td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr>
<td>{{localize "midgard5.grace"}}</td>
<td><input name="data.gg" type="text" value="{{data.gg}}" data-dtype="Number" /></td>
@ -28,57 +46,27 @@
<tr>
<td>{{localize "midgard5.luckPoints"}}</td>
<td><input name="data.gp" type="text" value="{{data.gp}}" data-dtype="Number" /></td>
<td></td>
<td></td>
</tr>
<tr height = 10px></tr>
</tbody>
</table>
</div>
</div>
<div class="flexcolumn-2">
<div class="flexpart">
<div class="flexpart-header"><img src="icons/magic/time/arrows-circling-pink.webp" class="flexpart-icon">{{localize "midgard5.calculated-values"}}</div>
<table>
<tbody>
<tr height = 10px></tr>
<tr>
<td>{{localize "midgard5.magicUsing"}}</td>
<td><input id="data.info.magicUsing" type="checkbox" name="data.info.magicUsing" {{checked data.info.magicUsing}}></td>
<td>{{localize "midgard5.movementRange"}}</td>
<td><input name="data.movement" type="text" value="{{data.movement}}" data-dtype="Number" /></td>
</tr>
<tr height = 10px></tr>
</tbody>
</table>
<table style="background-color: beige;">
<thead>
<tr>
<th class="title">Leiteigenschaften</th>
</tr>
</thead>
<tbody>
<tr>
<td><div class="attributes">
{{> "systems/midgard5/templates/sheets/character/attribute.hbs" attributeId="st" attribute=data.attributes.st calc=data.calc.attributes.st}}
<div class="filler"></div>
{{> "systems/midgard5/templates/sheets/character/attribute.hbs" attributeId="gs" attribute=data.attributes.gs calc=data.calc.attributes.gs}}
<div class="filler"></div>
{{> "systems/midgard5/templates/sheets/character/attribute.hbs" attributeId="gw" attribute=data.attributes.gw calc=data.calc.attributes.gw}}
<div class="filler"></div>
{{> "systems/midgard5/templates/sheets/character/attribute.hbs" attributeId="ko" attribute=data.attributes.ko calc=data.calc.attributes.ko}}
<div class="filler"></div>
{{> "systems/midgard5/templates/sheets/character/attribute.hbs" attributeId="in" attribute=data.attributes.in calc=data.calc.attributes.in}}
</div></td>
</tr>
<tr>
<td><div class="attributes">
<div class="filler"></div>
{{> "systems/midgard5/templates/sheets/character/attribute.hbs" attributeId="zt" attribute=data.attributes.zt calc=data.calc.attributes.zt}}
<div class="attribute-filler-fixed"></div>
{{> "systems/midgard5/templates/sheets/character/attribute.hbs" attributeId="au" attribute=data.attributes.au calc=data.calc.attributes.au}}
<div class="attribute-filler-fixed"></div>
{{> "systems/midgard5/templates/sheets/character/attribute.hbs" attributeId="pa" attribute=data.attributes.pa calc=data.calc.attributes.pa}}
<div class="attribute-filler-fixed"></div>
{{> "systems/midgard5/templates/sheets/character/attribute.hbs" attributeId="wk" attribute=data.attributes.wk calc=data.calc.attributes.wk}}
<div class="filler"></div>
</div></td>
</tr>
</tbody>
</table>
<table>
<thead>
<tr>
<th class="title" colspan="4">Berechnete Werte</th>
</tr>
</thead>
<tbody>
<tr height = 10px></tr>
<tr>
<td>{{localize "midgard5.brawl"}}</td>
<td class="fixed-value">{{data.calc.stats.brawl.value}}</td>
@ -109,60 +97,24 @@
<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>
{{#if (eq data.info.race "Zwerg")}}
<tr>
<td>{{localize "midgard5.hoard"}}</td>
<td class="fixed-value">{{data.calc.stats.hoard}}</td>
{{/if}}
<td></td>
<td></td>
</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>
</tr>
{{/if}}
</tr>
<tr height = 10px></tr>
</tbody>
</table>
<table>
<thead>
<tr>
<th class="title" colspan="4">Beschreibung</th>
</tr>
</thead>
<tbody>
<tr height = 10px></tr>
<tr>
<td>{{localize "midgard5.origin"}}</td>
<td><input name="data.info.origin" type="text" value="{{data.info.origin}}" data-dtype="String" /></td>
<td>{{localize "midgard5.gender"}}</td>
<td><input name="data.info.gender" type="text" value="{{data.info.gender}}" data-dtype="String" /></td>
</tr>
<tr>
<td>{{localize "midgard5.weight"}}</td>
<td><input name="data.info.weight" type="text" value="{{data.info.weight}}" data-dtype="String" /></td>
<td>{{localize "midgard5.height"}}</td>
<td><input name="data.info.height" type="text" value="{{data.info.height}}" data-dtype="String" /></td>
</tr>
<tr>
<td>{{localize "midgard5.shape"}}</td>
<td><input name="data.info.shape" type="text" value="{{data.info.shape}}" data-dtype="String" /></td>
<td>{{localize "midgard5.age"}}</td>
<td><input name="data.info.age" type="text" value="{{data.info.age}}" data-dtype="String" /></td>
</tr>
<tr>
<td>{{localize "midgard5.caste"}}</td>
<td><input name="data.info.caste" type="text" value="{{data.info.caste}}" data-dtype="String" /></td>
<td>{{localize "midgard5.faith"}}</td>
<td><input name="data.info.faith" type="text" value="{{data.info.faith}}" data-dtype="String" /></td>
</tr>
<tr height = 10px></tr>
</tbody>
</table>
{{editor content=data.description target="data.description" button=true owner=owner editable=editable}}
</table>
</div>
</div>
</div>

View File

@ -0,0 +1,189 @@
<div class="flexbox">
<div class="flexcolumn-3">
<div class="flexpart">
<div class="flexpart-header"><img src="icons/skills/melee/hand-grip-sword-white-brown.webp" class="flexpart-icon">{{localize "midgard5.attack"}}</div>
<table>
<thead>
<tr>
<th class="title">{{localize "TYPES.Item.weapon"}}</th>
<th class="title">{{localize "midgard5.ew"}}</th>
<th class="title">{{localize "midgard5.damage"}}</th>
<th class="title center"><img src="/systems/midgard5/assets/icons/icon/battle-gear.svg" class="table-icon"></th>
<th class="title"><img src="/icons/svg/d20.svg" class="table-icon"></th>
</tr>
</thead>
<tbody>
{{#each data.calc.gear.weapons as |item itemId|}}
{{#if item.equipped}}
<tr data-item="{{itemId}}">
<td class="padding edit-item {{#if item.special}}highlight{{/if}}">{{item.label}}{{#if item.special}}(*){{/if}}</td>
<td class="fixed-value">{{item.calc.ew}}</td>
<td class="fixed-value">{{item.damageBase}}</td>
<td class="change-equipped">
{{#if item.equipped}}
<i class="fa-solid fa-circle-check"></i>
{{else}}
<i class="fa-regular fa-circle"></i>
{{/if}}
</td>
<td><button class="roll-button roll-weapon-button"></button></td>
</tr>
{{/if}}
{{/each}}
<tr data-item="{{itemId}}">
<td class="padding edit-item">{{localize "midgard5.brawl"}}</td>
<td class="fixed-value">{{data.calc.stats.brawlFw}}</td>
<td class="fixed-value">1d6 -4</td>
<td>&nbsp;</td>
<td><button class="roll-button roll-brawl-button"></button></td>
</tr>
</tbody>
</table>
<table>
<thead>
<tr>
<th class="title">{{localize "TYPES.Item.kampfkunst"}}</th>
<th class="title">{{localize "midgard5.kampfkunst-variante-short"}}</th>
<th class="title">{{localize "midgard5.ew"}}</th>
<th class="title"><img src="/icons/svg/d20.svg" class="table-icon"></th>
<th class="title add-kampfkunst"><i class="fa-regular fa-plus"></i></th>
</tr>
</thead>
<tbody>
{{#each data.calc.kampfkuenste as |item itemId|}}
<tr data-item="{{itemId}}">
<td class="padding edit-item">{{item.label}}</td>
<td>
{{#if item.isKido}}
<span class="spell-process">{{localize (m5concat "midgard5.kido-type-" item.type)}}</span>
{{#unless (eq item.type "finte")}}
<span class="spell-process">({{localize (m5concat "midgard5.kido-variante-" item.variante)}})</span>
{{/unless}}
{{else}}
<span class="spell-process">{{localize (m5concat "midgard5.kampfkunst-type-" item.type)}}</span>
{{#if (eq item.type "angriff")}}
<span class="spell-process">({{localize (m5concat "midgard5.kampfkunst-variante-" item.variante)}})</span>
{{/if}}
{{/if}}
</td>
<td class="fixed-value">{{item.calc.ew}}</td>
<td><button class="roll-button roll-weapon-button" /></td>
<td><a class="item-delete" title="Delete Item"><i class="fas fa-trash"></i></a></td>
</tr>
{{/each}}
</tbody>
</table>
</div>
</div>
<div class="flexcolumn-3">
<div class="flexpart">
<div class="flexpart-header"><img src="icons/magic/time/arrows-circling-pink.webp" class="flexpart-icon">{{localize "midgard5.calculated-values"}}</div>
<table>
<tr height = 10px></tr>
<tr>
<td>{{localize "midgard5.movementRange"}}</td>
<td class="fixed-value">{{data.calc.stats.movement.value}}</td>
<td>&nbsp;</td>
<td class="fixed-value">&nbsp;</td>
</tr>
<td>{{localize "midgard5.defense"}}</td>
<td class="fixed-value">{{data.calc.stats.defense.value}}</td>
<td>{{localize "midgard5.defenseBonus"}}</td>
<td class="fixed-value">{{data.calc.stats.defenseBonus.value}}</td>
</tr>
<tr>
<td>{{localize "midgard5.damageBonus"}}</td>
<td class="fixed-value">{{data.calc.stats.damageBonus.value}}</td>
<td>{{localize "midgard5.attackBonus"}}</td>
<td class="fixed-value">{{data.calc.stats.attackBonus.value}}</td>
</tr>
</table>
</div>
</div>
<div class="flexcolumn-3">
<div class="flexpart">
<div class="flexpart-header"><img src="icons/skills/melee/shield-block-gray-orange.webp" class="flexpart-icon">{{localize "midgard5.defense"}}</div>
<table>
<tr height = 10px></tr>
<tr>
<td class="padding edit-item highlight">{{localize "midgard5.defense"}}</td>
<td class="center">{{add data.calc.stats.defense.value data.calc.stats.defenseBonus.value}}</td>
<td class="fixed-value"><button class="roll-button roll-defense-button"></button></td>
</tr>
<tr>
<td class="padding edit-item highlight">{{localize "midgard5.resistanceMind"}}</td>
<td class="center">{{data.calc.stats.resistanceMind.value}}</td>
<td class="fixed-value"><button class="roll-button roll-resistanceMind-button"></button></td>
</tr>
<tr>
<td class="padding edit-item highlight">{{localize "midgard5.resistanceBody"}}</td>
<td class="center">{{data.calc.stats.resistanceBody.value}}</td>
<td class="fixed-value"><button class="roll-button roll-resistanceBody-button"></button></td>
</tr>
</table>
<table>
<thead>
<tr>
<th class="title">{{localize "TYPES.Item.defensiveWeapon"}}</th>
<th class="title">{{localize "midgard5.ew"}}</th>
<th class="title">{{localize "midgard5.defenseBonus-short"}}</th>
<th class="title center"><img src="/systems/midgard5/assets/icons/icon/battle-gear.svg" class="table-icon"></th>
<th class="title"><img src="/icons/svg/d20.svg" class="table-icon"></th>
</tr>
</thead>
<tbody>
{{#each data.calc.gear.defensiveWeapons as |item itemId|}}
{{#if item.equipped}}
<tr data-item="{{itemId}}">
<td class="padding edit-item">{{item.label}}</td>
<td class="fixed-value">{{item.calc.ew}}</td>
<td class="fixed-value">{{item.defenseBonus}}</td>
<td class="change-equipped">
{{#if item.equipped}}
<i class="fa-solid fa-circle-check"></i>
{{else}}
<i class="fa-regular fa-circle"></i>
{{/if}}
</td>
<td><button class="roll-button roll-weapon-button"></button></td>
</tr>
{{/if}}
{{/each}}
</tbody>
</table>
<table>
<thead>
<tr>
<th class="title">{{localize "TYPES.Item.armor"}}</th>
<th class="title">{{localize "midgard5.actor-lp-short"}}</th>
<th class="title center"><img src="/systems/midgard5/assets/icons/icon/battle-gear.svg" class="table-icon"></th>
</tr>
</thead>
<tbody>
{{#each data.calc.gear.armor as |item itemId|}}
{{#if item.equipped}}
<tr data-item="{{itemId}}">
<td class="padding">{{item.label}}</td>
<td class="fixed-value">{{lpProtection}}</td>
<td class="change-equipped">
{{#if item.equipped}}
<i class="fa-solid fa-circle-check"></i>
{{else}}
<i class="fa-regular fa-circle"></i>
{{/if}}
</td>
</tr>
{{/if}}
{{/each}}
</tbody>
</table>
</div>
</div>
</div>

View File

@ -0,0 +1,50 @@
<div class="flexbox">
<div class="flexcolumn-1">
<div class="flexpart">
<div class="flexpart-header"><img src="icons/commodities/cloth/thread-spindle-white-needle.webp" class="flexpart-icon" />{{localize "midgard5.characteristics"}}</div>
<table>
<tbody>
<tr height="10px"></tr>
<tr>
<td>{{localize "midgard5.origin"}}</td>
<td><input name="data.info.origin" type="text" value="{{data.info.origin}}" data-dtype="String" /></td>
<td>{{localize "midgard5.gender"}}</td>
<td><input name="data.info.gender" type="text" value="{{data.info.gender}}" data-dtype="String" /></td>
<td>{{localize "midgard5.shape"}}</td>
<td><input name="data.info.shape" type="text" value="{{data.info.shape}}" data-dtype="String" /></td>
<td>{{localize "midgard5.age"}}</td>
<td><input name="data.info.age" type="text" value="{{data.info.age}}" data-dtype="String" /></td>
</tr>
<tr>
<td>{{localize "midgard5.weight"}}</td>
<td><input name="data.info.weight" type="text" value="{{data.info.weight}}" data-dtype="String" /></td>
<td>{{localize "midgard5.height"}}</td>
<td><input name="data.info.height" type="text" value="{{data.info.height}}" data-dtype="String" /></td>
<td>{{localize "midgard5.caste"}}</td>
<td><input name="data.info.caste" type="text" value="{{data.info.caste}}" data-dtype="String" /></td>
<td>{{localize "midgard5.faith"}}</td>
<td><input name="data.info.faith" type="text" value="{{data.info.faith}}" data-dtype="String" /></td>
</tr>
<tr height="10px"></tr>
</tbody>
</table>
</div>
</div>
<div class="flexcolumn-1">
<div class="flexpart" style="height: 250px;">
<div class="flexpart-header"><img src="icons/environment/wilderness/mine-interior-dungeon-door.webp" class="flexpart-icon" />{{localize "midgard5.description"}}</div>
<br />
<div class="biography">{{editor content=data.info.description target="data.info.description" button=true owner=owner editable=editable}}</div>
</div>
</div>
<div class="flexcolumn-1">
<div class="flexpart" style="height: 250px;">
<div class="flexpart-header"><img src="icons/environment/people/group.webp" class="flexpart-icon" />{{localize "midgard5.background"}}</div>
<br />
<div class="biography">{{editor content=data.info.background target="data.info.background" button=true owner=owner editable=editable}}</div>
</div>
</div>
</div>

View File

@ -2,7 +2,8 @@
<thead>
<tr>
<th class="title">{{localize "TYPES.Item.effect"}}</th>
<th class="title"></th>
<th class="title add-effect"><i class="fa-regular fa-plus"></i></th>
</tr>
</thead>
<tbody>

View File

@ -2,7 +2,7 @@
<div class="flexcolumn-2">
<div class="flexpart">
<div class="flexpart-header"><img src="icons/commodities/currency/coins-assorted-mix-copper-silver-gold.webp" class="flexpart-icon">Geld</div>
<div class="flexpart-header"><img src="icons/commodities/currency/coins-assorted-mix-copper-silver-gold.webp" class="flexpart-icon">{{localize "midgard5.currency"}}</div>
<table>
<thead class="theader">
<tr>
@ -31,32 +31,32 @@
</div>
<div class="flexpart">
<div class="flexpart-header"><img src="icons/tools/hand/scale-balances-merchant-brown.webp" class="flexpart-icon">{{localize "TYPES.Item.item"}}</div>
<div class="flexpart-header">
<img src="icons/tools/hand/scale-balances-merchant-brown.webp" class="flexpart-icon">
{{localize "midgard5.gear"}}
(alle <input id="data.info.showAllItems" class="checkbox" type="checkbox" name="data.info.showAllItems" {{checked data.info.showAllItems}}>)
</div>
<table>
<thead class="theader">
<tr>
<th class="title">{{localize "TYPES.Item.item"}}</th>
<th class="title center">{{localize "midgard5.equipped"}}</th>
<th class="title center">{{localize "midgard5.item-quantity"}}</th>
<th class="title center">{{localize "midgard5.item-value"}}</th>
<th class="title center">{{localize "midgard5.item-weight"}}</th>
<th class="title"></th>
<th class="title"></th>
<th class="title"><img src="/systems/midgard5/assets/icons/icon/battle-gear.svg" class="table-icon"></th>
<th class="title"><img src="/icons/svg/d20.svg" class="table-icon"></th></th>
<th class="title add-item"><i class="fa-regular fa-plus"></i></th>
</tr>
</thead>
<tbody>
<tr height = 10px></tr>
</tr>
{{#each data.calc.gear.items as |item itemId|}}
{{#if (or ../data.info.showAllItems (eq item.containerId ""))}}
<tr data-item="{{itemId}}">
<td class="padding">
<span class="edit-item">{{item.label}}</span>
</td>
<td>
{{#if item.equipped}}
<img src="/systems/midgard5/assets/icons/icon/black-hand-shield.svg" class="table-icon">
{{/if}}
</td>
<td>
<i class="fa fa-minus-circle quantity-decrease" style="cursor: pointer"></i>
<span>{{item.quantity}}</span>
@ -72,8 +72,119 @@
<span class="spell-process">{{item.weight}} kg</span>
{{/unless}}
</td>
<td class="fixed-value">{{#if item.rollExist}}<button class="roll-button roll-consumable-item"></button>{{/if}}</td>
<td class="fixed-value"><a class="item-delete" title="Delete Item"><i class="fas fa-trash"></i></a></td>
<td class="change-equipped">
{{#if item.equipped}}
<i class="fa-solid fa-circle-check"></i>
{{else}}
<i class="fa-regular fa-circle"></i>
{{/if}}
</td>
<td>{{#if item.rollExist}}<button class="roll-button roll-consumable-item"></button>{{/if}}</td>
<td><a class="item-delete" title="Delete Item"><i class="fas fa-trash"></i></a></td>
</tr>
{{/if}}
{{/each}}
</tbody>
</table>
</div>
<div class="flexpart">
<div class="flexpart-header"><img src="icons/weapons/swords/sword-guard-engraved-worn.webp" class="flexpart-icon">{{localize "midgard5.weapons"}}</div>
<table>
<thead>
<tr>
<th class="title">{{localize "TYPES.Item.weapon"}}</th>
<th class="title center">{{localize "midgard5.item-value"}}</th>
<th class="title"><img src="/systems/midgard5/assets/icons/icon/battle-gear.svg" class="table-icon"></th>
<th class="title add-weapon"><i class="fa-regular fa-plus"></i></th>
</tr>
</thead>
<tbody>
{{#each data.calc.gear.weapons as |item itemId|}}
<tr data-item="{{itemId}}">
<td class="padding edit-item">{{item.label}}</td>
<td style="text-align: start">
{{#unless (or (eq item.value 0) (eq item.currency ""))}}
<span class="spell-process">{{item.value}} {{localize (m5concat "midgard5.currency-" item.currency)}}</span>
{{/unless}}
</td>
<td class="change-equipped">
{{#if item.equipped}}
<i class="fa-solid fa-circle-check"></i>
{{else}}
<i class="fa-regular fa-circle"></i>
{{/if}}
</td>
<td><a class="item-delete" title="Delete Item"><i class="fas fa-trash"></i></a></td>
</tr>
{{/each}}
</tbody>
</table>
</div>
<div class="flexpart">
<div class="flexpart-header"><img src="icons/equipment/shield/heater-wooden-brown-axe.webp" class="flexpart-icon">{{localize "midgard5.defensive-weapons"}}</div>
<table>
<thead>
<tr>
<th class="title">{{localize "TYPES.Item.defensiveWeapon"}}</th>
<th class="title center">{{localize "midgard5.item-value"}}</th>
<th class="title"><img src="/systems/midgard5/assets/icons/icon/battle-gear.svg" class="table-icon"></th>
<th class="title add-defensiveWeapon"><i class="fa-regular fa-plus"></i></th>
</tr>
</thead>
<tbody>
{{#each data.calc.gear.defensiveWeapons as |item itemId|}}
<tr data-item="{{itemId}}">
<td class="padding edit-item">{{item.label}}</td>
<td style="text-align: start">
{{#unless (or (eq item.value 0) (eq item.currency ""))}}
<span class="spell-process">{{item.value}} {{localize (m5concat "midgard5.currency-" item.currency)}}</span>
{{/unless}}
</td>
<td class="change-equipped">
{{#if item.equipped}}
<i class="fa-solid fa-circle-check"></i>
{{else}}
<i class="fa-regular fa-circle"></i>
{{/if}}
</td>
<td><a class="item-delete" title="Delete Item"><i class="fas fa-trash"></i></a></td>
</tr>
{{/each}}
</tbody>
</table>
</div>
<div class="flexpart">
<div class="flexpart-header"><img src="icons/equipment/hand/gauntlet-armored-steel-grey.webp" class="flexpart-icon">{{localize "midgard5.armor"}}</div>
<table>
<thead>
<tr>
<th class="title">{{localize "TYPES.Item.armor"}}</th>
<th class="title center">{{localize "midgard5.item-value"}}</th>
<th class="title"><img src="/systems/midgard5/assets/icons/icon/battle-gear.svg" class="table-icon"></th>
<th class="title add-armor"><i class="fa-regular fa-plus"></i></th>
</tr>
</thead>
<tbody>
{{#each data.calc.gear.armor as |item itemId|}}
<tr data-item="{{itemId}}">
<td class="padding edit-item">{{item.label}}</td>
<td style="text-align: start">
{{#unless (or (eq item.value 0) (eq item.currency ""))}}
<span class="spell-process">{{item.value}} {{localize (m5concat "midgard5.currency-" item.currency)}}</span>
{{/unless}}
</td>
<td class="change-equipped">
{{#if item.equipped}}
<i class="fa-solid fa-circle-check"></i>
{{else}}
<i class="fa-regular fa-circle"></i>
{{/if}}
</td>
<td><a class="item-delete" title="Delete Item"><i class="fas fa-trash"></i></a></td>
</tr>
{{/each}}
</tbody>
@ -89,26 +200,20 @@
<thead class="theader">
<tr>
<th class="title">{{localize "TYPES.Item.container"}}</th>
<th class="title center">{{localize "midgard5.equipped"}}</th>
<th class="title center">{{localize "midgard5.item-value"}}</th>
<th class="title center">{{localize "midgard5.item-weight"}}</th>
<th class="title"></th>
<th class="title"></th>
<th class="title center"><img src="/systems/midgard5/assets/icons/icon/battle-gear.svg" class="table-icon"></th>
<th class="title"><img src="/icons/svg/d20.svg" class="table-icon"></th>
<th class="title add-container"><i class="fa-regular fa-plus"></i></th>
</tr>
</thead>
<tbody>
<tr height = 10px></tr>
</tr>
{{#each data.calc.gear.containers as |item itemId|}}
<tr data-item="{{itemId}}">
<td class="padding">
<span class="edit-item">{{item.label}}</span>
</td>
<td>
{{#if item.equipped}}
<img src="/systems/midgard5/assets/icons/icon/black-hand-shield.svg" class="table-icon">
{{/if}}
</td>
<td style="text-align: start">
{{#unless (or (eq item.value 0) (eq item.currency ""))}}
<span class="spell-process">{{item.value}} {{localize (m5concat "midgard5.currency-" item.currency)}}</span>
@ -119,8 +224,15 @@
<span class="spell-process">{{item.weight}} kg</span>
{{/unless}}
</td>
<td class="fixed-value">{{#if item.rollExist}}<button class="roll-button roll-consumable-item"></button>{{/if}}</td>
<td class="fixed-value"><a class="item-delete" title="Delete Item"><i class="fas fa-trash"></i></a></td>
<td class="change-equipped">
{{#if item.equipped}}
<i class="fa-solid fa-circle-check"></i>
{{else}}
<i class="fa-regular fa-circle"></i>
{{/if}}
</td>
<td>{{#if item.rollExist}}<button class="roll-button roll-consumable-item"></button>{{/if}}</td>
<td><a class="item-delete" title="Delete Item"><i class="fas fa-trash"></i></a></td>
</tr>
{{/each}}
</tbody>
@ -134,32 +246,22 @@
<thead class="theader">
<tr>
<th class="title">{{localize "TYPES.Item.item"}}</th>
<th class="title center">{{localize "midgard5.equipped"}}</th>
<th class="title center">{{localize "TYPES.Item.container"}}</th>
<th class="title center">{{localize "midgard5.item-quantity"}}</th>
<th class="title center">{{localize "midgard5.item-value"}}</th>
<th class="title center">{{localize "midgard5.item-weight"}}</th>
<th class="title"></th>
<th class="title"></th>
<th class="title center"><img src="/systems/midgard5/assets/icons/icon/battle-gear.svg" class="table-icon"></th>
<th class="title"><img src="/icons/svg/d20.svg" class="table-icon"></th>
<th class="title">&nbsp;</th>
</tr>
</thead>
<tbody>
<tr height = 10px></tr>
</tr>
{{#each ../data.calc.gear.items as |item itemId|}}
{{#if (eq item.containerId containerId)}}
<tr data-item="{{itemId}}">
<td class="padding">
<span class="edit-item">{{item.label}}</span>
</td>
<td>
{{#if item.equipped}}
<img src="/systems/midgard5/assets/icons/icon/black-hand-shield.svg" class="table-icon">
{{/if}}
</td>
<td>
{{localize "TYPES.Item.container"}}
</td>
<td>
<i class="fa fa-minus-circle quantity-decrease" style="cursor: pointer"></i>
<span>{{item.quantity}}</span>
@ -175,8 +277,15 @@
<span class="spell-process">{{item.weight}} kg</span>
{{/unless}}
</td>
<td class="fixed-value">{{#if item.rollExist}}<button class="roll-button roll-consumable-item"></button>{{/if}}</td>
<td class="fixed-value"><a class="item-delete" title="Delete Item"><i class="fas fa-trash"></i></a></td>
<td class="change-equipped">
{{#if item.equipped}}
<i class="fa-solid fa-circle-check"></i>
{{else}}
<i class="fa-regular fa-circle"></i>
{{/if}}
</td>
<td>{{#if item.rollExist}}<button class="roll-button roll-consumable-item"></button>{{/if}}</td>
<td><a class="item-delete" title="Delete Item"><i class="fas fa-trash"></i></a></td>
</tr>
{{/if}}
{{/each}}

View File

@ -1,136 +0,0 @@
<table>
<thead>
<tr>
<th class="title">{{localize "TYPES.Item.kampfkunst"}}</th>
<th class="title">{{localize "midgard5.ew"}}</th>
<th class="title"></th>
<th class="title"></th>
</tr>
</thead>
<tbody>
{{#each data.calc.kampfkuenste as |item itemId|}}
<tr data-item="{{itemId}}">
<td class="padding edit-item">
<span>{{item.label}}</span>
{{#if item.isKido}}
<span class="spell-process">{{localize (m5concat "midgard5.kido-type-" item.type)}}</span>
{{#unless (eq item.type "finte")}}
<span class="spell-process">({{localize (m5concat "midgard5.kido-variante-" item.variante)}})</span>
{{/unless}}
{{else}}
<span class="spell-process">{{localize (m5concat "midgard5.kampfkunst-type-" item.type)}}</span>
{{#if (eq item.type "angriff")}}
<span class="spell-process">({{localize (m5concat "midgard5.kampfkunst-variante-" item.variante)}})</span>
{{/if}}
{{/if}}
</td>
<td class="fixed-value">{{item.calc.ew}}</td>
<td class="fixed-value"><button class="roll-button roll-weapon-button" /></td>
<td class="fixed-value"><a class="item-delete" title="Delete Item"><i class="fas fa-trash"></i></a></td>
</tr>
{{/each}}
</tbody>
</table>
<table>
<thead>
<tr>
<th class="title">{{localize "TYPES.Item.weapon"}}</th>
<th class="title">{{localize "midgard5.ew"}}</th>
<th class="title"></th>
<th class="title"></th>
</tr>
</thead>
<tbody>
{{#each data.calc.gear.weapons as |item itemId|}}
<tr data-item="{{itemId}}">
<td class="padding edit-item">{{item.label}}</td>
<td class="fixed-value">{{item.calc.ew}}</td>
<td class="fixed-value"><button class="roll-button roll-weapon-button"></button></td>
<td class="fixed-value"><a class="item-delete" title="Delete Item"><i class="fas fa-trash"></i></a></td>
</tr>
{{/each}}
<tr data-item="{{itemId}}">
<td class="padding edit-item">{{localize "midgard5.brawl"}}</td>
<td class="center">{{data.calc.stats.brawlFw}}</td>
<td class="fixed-value"><button class="roll-button roll-brawl-button"></button></td>
<td class="fixed-value"></td>
</tr>
</tbody>
</table>
<table>
<thead>
<tr>
<th class="title">{{localize "TYPES.Item.defensiveWeapon"}}</th>
<th class="title">{{localize "midgard5.ew"}}</th>
<th class="title"></th>
<th class="title"></th>
</tr>
</thead>
<tbody>
{{#each data.calc.gear.defensiveWeapons as |item itemId|}}
<tr data-item="{{itemId}}">
<td class="padding edit-item">{{item.label}}</td>
<td class="fixed-value">{{item.calc.ew}}</td>
<td class="fixed-value"><button class="roll-button roll-weapon-button"></button></td>
<td class="fixed-value"><a class="item-delete" title="Delete Item"><i class="fas fa-trash"></i></a></td>
</tr>
{{/each}}
<tr data-item="{{itemId}}">
<td class="padding edit-item">{{localize "midgard5.defense"}}</td>
<td class="center">{{add data.calc.stats.defense.value data.calc.stats.defenseBonus.value}}</td>
<td class="fixed-value"><button class="roll-button roll-defense-button"></button></td>
<td class="fixed-value"></td>
</tr>
<tr data-item="{{itemId}}">
<td class="padding edit-item">{{localize "midgard5.resistanceMind"}}</td>
<td class="center">{{data.calc.stats.resistanceMind.value}}</td>
<td class="fixed-value"><button class="roll-button roll-resistanceMind-button"></button></td>
<td class="fixed-value"></td>
</tr>
<tr data-item="{{itemId}}">
<td class="padding edit-item">{{localize "midgard5.resistanceBody"}}</td>
<td class="center">{{data.calc.stats.resistanceBody.value}}</td>
<td class="fixed-value"><button class="roll-button roll-resistanceBody-button"></button></td>
<td class="fixed-value"></td>
</tr>
</tbody>
</table>
<table>
<thead>
<tr>
<th class="title">{{localize "TYPES.Item.armor"}}</th>
<th class="title">{{localize "midgard5.actor-lp-short"}}</th>
<th class="title">{{localize "midgard5.actor-ap-short"}}</th>
<th class="title">{{localize "midgard5.attackBonus-short"}}</th>
<th class="title">{{localize "midgard5.defenseBonus-short"}}</th>
<th class="title">B</th>
<th class="title">Gw</th>
<th class="title"></th>
</tr>
</thead>
<tbody>
{{#each data.calc.gear.armor as |item itemId|}}
<tr data-item="{{itemId}}">
<td class="padding">
<span class="edit-item">{{item.label}}</span>
{{#if item.equipped}}
<span class="spell-process">{{localize "midgard5.equipped"}}</span>
{{/if}}
</td>
<td class="fixed-value">{{actorItemValue ../actor._id itemId "lpProtection" ../actor.isToken}}</td>
<td class="fixed-value">{{actorItemValue ../actor._id itemId "apProtection"}}</td>
<td class="fixed-value">{{actorItemValue ../actor._id itemId "stats.attackBonus"}}</td>
<td class="fixed-value">{{actorItemValue ../actor._id itemId "stats.defenseBonus"}}</td>
<td class="fixed-value">{{actorItemValue ../actor._id itemId "stats.movementBonus"}}</td>
<td class="fixed-value">{{actorItemValue ../actor._id itemId "attributeMod.gw"}}</td>
<td class="fixed-value"><a class="item-delete" title="Delete Item"><i class="fas fa-trash"></i></a></td>
</tr>
{{/each}}
</tbody>
</table>

View File

@ -1,23 +1,29 @@
<form class="actor-sheet {{cssClass}}" autocomplete="off">
<header class="sheet-header">
<table style="padding: 5px;">
<tr height = 5px></tr>
<header class="flexbox" style="background-color: beige; padding: 5px; border: 2px solid black;">
<!-- Logo -->
<div class="flexcolumn-5" style="height: 200px;">
<img class="profile-img" src="/systems/midgard5/assets/icons/backgrounds/bg1.webp" alt="Midgard">
</div>
<!-- Name, Class, Level, Race, Occupation -->
<div class="flexcolumn-2" style="margin:0px 5px 0px 5px;">
<table class="bordered">
<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>
<td >{{localize "midgard5.actor-name"}}</td>
<td colspan="3"><input name="name" type="text" value="{{actor.name}}" data-dtype="String" /></td>
</tr>
<tr>
<td></td>
<td colspan="5"><b>Name</b></td>
<td style="text-align: center;"><b>Grad</b></td>
</tr>
<td >{{localize "midgard5.class"}}</td>
<td><input name="data.info.class" type="text" value="{{data.info.class}}" data-dtype="String" /></td>
<td >{{localize "midgard5.level"}}</td>
<td>{{data.calc.level}}</td>
</table>
<table style="font-weight: bold;">
<tr height = 10px></tr>
<tr>
<td rowspan="8" width=128><img style="max-width: 128px; height: 128px; border: 0px solid black;" src="{{actor.img}}" data-edit="img" title="{{actor.name}}" /></td>
<td></td>
<td colspan="3">
<td >
<input list="races" type="search" name="data.info.race" value="{{data.info.race}}" />
<datalist id="races">
<option value="Mensch">
@ -27,49 +33,15 @@
<option value="Zwerg">
</datalist>
</td>
<td colspan="3"><input name="data.info.class" type="text" value="{{data.info.class}}" data-dtype="String" /></td>
<td colspan="3"><b><input name="data.info.occupation" type="text" value="{{data.info.occupation}}" data-dtype="String" /></b></td>
<td ><input name="data.info.occupation" type="text" value="{{data.info.occupation}}" data-dtype="String" /></td>
</tr>
<tr>
<td></td>
<td colspan="3"><b>{{localize "midgard5.race"}}</b></td>
<td colspan="3"><b>{{localize "midgard5.class"}}</b></td>
<td colspan="3"><b>{{localize "midgard5.occupation"}}</b></td>
<td style="text-align: center; font-size: small">{{localize "midgard5.race"}}</td>
<td style="text-align: center; font-size: small">{{localize "midgard5.occupation"}}</td>
</tr>
<tr height = 10px></tr>
<tr>
<td style="text-align: right"><b>{{localize "midgard5.actor-lp-short"}}</b></td>
<td colspan="9">
<div class="health-bar">
<input name="data.lp.value" type="text" value="{{data.lp.value}}" data-dtype="Number" />
{{#times data.lp.max}}
{{#if (lt this ../data.lp.value)}}
<div class="lp-bar-item update-lp" data-value="{{this}}"></div>
{{else}}
<div class="lp-bar-item-empty update-lp" data-value="{{this}}"></div>
{{/if}}
{{/times}}
<input name="data.lp.max" type="text" value="{{data.lp.max}}" data-dtype="Number" />
</div>
</td>
</tr>
<tr>
<td style="text-align: right"><b>{{localize "midgard5.actor-ap-short"}}</b></td>
<td colspan="9">
<div class="health-bar">
<input name="data.ap.value" type="text" value="{{data.ap.value}}" data-dtype="Number" />
{{#times data.ap.max}}
{{#if (lt this ../data.ap.value)}}
<div class="ap-bar-item update-ap" data-value="{{this}}"></div>
{{else}}
<div class="ap-bar-item-empty update-ap" data-value="{{this}}"></div>
{{/if}}
{{/times}}
<input name="data.ap.max" type="text" value="{{data.ap.max}}" data-dtype="Number" />
</div>
</td>
</tr>
<tr height = 10px></tr>
</table>
<table style="width: 100%;">
<tr>
<td class="attribute">{{localize "midgard5.actor-st"}}</td>
<td class="attribute">{{localize "midgard5.actor-gs"}}</td>
@ -94,8 +66,51 @@
<td class="attribute-value roll-attribute-button" data-attribute="wk" data-value="{{data.calc.attributes.wk.value}}">{{data.calc.attributes.wk.value}}</td>
<td class="attribute-value roll-attribute-button" data-attribute="git" data-value="{{data.calc.stats.poisonResistance.value}}">{{data.calc.stats.poisonResistance.value}}</td>
</tr>
<tr height = 5px></tr>
</table>
</div>
<!-- Profilbild -->
<div class="flexcolumn-5" style="height: 200px;text-align: center;" >
<img class="profile-img" src="{{actor.img}}" data-edit="img" title="{{actor.name}}" />
</div>
<!-- LP + AP -->
<div class="flexcolumn-1">
<table>
<tr>
<td><b>{{localize "midgard5.actor-lp-short"}}</b></td>
<td colspan="9">
<div class="health-bar">
<input name="data.lp.value" type="text" value="{{data.lp.value}}" data-dtype="Number" />
{{#times data.lp.max}}
{{#if (lt this ../data.lp.value)}}
<div class="lp-bar-item update-lp" data-value="{{this}}"></div>
{{else}}
<div class="lp-bar-item-empty update-lp" data-value="{{this}}"></div>
{{/if}}
{{/times}}
<input name="data.lp.max" type="text" value="{{data.lp.max}}" data-dtype="Number" />
</div>
</td>
</tr>
<tr>
<td><b>{{localize "midgard5.actor-ap-short"}}</b></td>
<td colspan="9">
<div class="health-bar">
<input name="data.ap.value" type="text" value="{{data.ap.value}}" data-dtype="Number" />
{{#times data.ap.max}}
{{#if (lt this ../data.ap.value)}}
<div class="ap-bar-item update-ap" data-value="{{this}}"></div>
{{else}}
<div class="ap-bar-item-empty update-ap" data-value="{{this}}"></div>
{{/if}}
{{/times}}
<input name="data.ap.max" type="text" value="{{data.ap.max}}" data-dtype="Number" />
</div>
</td>
</tr>
</table>
</div>
</header>
{{!-- Character Sheet Navigation --}}
@ -103,11 +118,12 @@
<a class="item active" data-tab="base_values">{{ localize "midgard5.base_values" }}</a>
<a class="item" data-tab="skills">{{ localize "midgard5.skills" }}</a>
<a class="item" data-tab="gear">{{ localize "midgard5.gear" }}</a>
<a class="item" data-tab="combat">{{ localize "midgard5.combat" }}</a>
{{#if actor.system.info.magicUsing }}
<a class="item" data-tab="spells">{{ localize "midgard5.spells" }}</a>
{{/if}}
<a class="item" data-tab="kampfkuenste">{{ localize "midgard5.kampfkuenste" }}</a>
<a class="item" data-tab="effects">{{ localize "midgard5.effects" }}</a>
<a class="item" data-tab="description">{{ localize "midgard5.description" }}</a>
</nav>
<section class="sheet-content">
@ -124,16 +140,20 @@
{{> "systems/midgard5/templates/sheets/character/gear.hbs"}}
</div>
<div class="tab base_values flexcol" data-group="primary" data-tab="spells">
{{> "systems/midgard5/templates/sheets/character/spells.hbs"}}
<div class="tab base_values flexcol" data-group="primary" data-tab="combat">
{{> "systems/midgard5/templates/sheets/character/combat.hbs"}}
</div>
<div class="tab base_values flexcol" data-group="primary" data-tab="kampfkuenste">
{{> "systems/midgard5/templates/sheets/character/kampfkuenste.hbs"}}
<div class="tab base_values flexcol" data-group="primary" data-tab="spells">
{{> "systems/midgard5/templates/sheets/character/spells.hbs"}}
</div>
<div class="tab base_values flexcol" data-group="primary" data-tab="effects">
{{> "systems/midgard5/templates/sheets/character/effects.hbs"}}
</div>
<div class="tab base_values flexcol" data-group="primary" data-tab="description">
{{> "systems/midgard5/templates/sheets/character/description.hbs"}}
</div>
</section>
</form>

View File

@ -1,65 +1,16 @@
<table>
<thead>
<tr>
<th class="title">{{localize "midgard5.learned-skill"}}</th>
<th class="title">{{localize "midgard5.fw"}}</th>
<th class="title">{{localize "midgard5.bonus"}}</th>
<th class="title">{{localize "midgard5.ew"}}</th>
<th class="title">{{localize "midgard5.pp-short"}}</th>
<th class="title"></th>
<th class="title"></th>
</tr>
</thead>
<tbody>
{{#each data.calc.skills.general as |skill skillId|}}
<tr data-item="{{skillId}}">
<td class="padding edit-item">{{skill.label}}</td>
<td class="fixed-value">{{skill.fw}}</td>
<td class="fixed-value">{{skill.calc.bonus}}</td>
<td class="fixed-value">{{skill.calc.ew}}</td>
<td class="fixed-value">{{skill.pp}}</td>
<td class="fixed-value"><button class="roll-button roll-learned-button"></button></td>
<td class="fixed-value"><a class="item-delete" title="Delete Item"><i class="fas fa-trash"></i></a></td>
</tr>
{{/each}}
</tbody>
</table>
<div class="flexbox">
<div class="flexcolumn-2">
<table>
<thead>
<tr>
<th class="title">{{localize "midgard5.language"}}</th>
<th class="title">{{localize "midgard5.fw"}}</th>
<th class="title">{{localize "midgard5.bonus"}}</th>
<th class="title">{{localize "midgard5.ew"}}</th>
<th class="title">{{localize "midgard5.pp-short"}}</th>
<th class="title"></th>
<th class="title"></th>
</tr>
</thead>
<tbody>
{{#each data.calc.skills.language as |skill skillId|}}
<tr data-item="{{skillId}}">
<td class="padding edit-item">{{skill.label}}</td>
<td class="fixed-value">{{skill.fw}}</td>
<td class="fixed-value">{{skill.calc.bonus}}</td>
<td class="fixed-value">{{skill.calc.ew}}</td>
<td class="fixed-value">{{skill.pp}}</td>
<td class="fixed-value"><button class="roll-button roll-learned-button"></button></td>
<td class="fixed-value"><a class="item-delete" title="Delete Item"><i class="fas fa-trash"></i></a></td>
</tr>
{{/each}}
</tbody>
</table>
<table>
<div class="flexpart">
<div class="flexpart-header"><img src="icons/creatures/eyes/human-single-brown.webp" class="flexpart-icon">{{localize "midgard5.innate-abilities"}}</div>
<table>
<thead>
<tr>
<th class="title">{{localize "midgard5.innate-ability"}}</th>
<th class="title">{{localize "midgard5.fw"}}</th>
<th class="title">{{localize "midgard5.bonus"}}</th>
<th class="title">{{localize "midgard5.ew"}}</th>
<th class="title"></th>
<th class="title"><img src="/icons/svg/d20.svg" class="table-icon"></th>
<th class="title"></th>
</tr>
</thead>
@ -70,8 +21,8 @@
<td class="fixed-value">{{skill.fw}}</td>
<td class="fixed-value">{{skill.calc.bonus}}</td>
<td class="fixed-value">{{skill.calc.ew}}</td>
<td class="fixed-value"><button class="roll-button roll-learned-button"></button></td>
<td class="fixed-value"><a class="item-delete" title="Delete Item"><i class="fas fa-trash"></i></a></td>
<td><button class="roll-button roll-learned-button"></button></td>
<td><a class="item-delete" title="Delete Item"><i class="fas fa-trash"></i></a></td>
</tr>
{{/each}}
<tr data-item="{{itemId}}">
@ -79,22 +30,54 @@
<td class="fixed-value">{{data.calc.stats.perceptionFW}}</td>
<td class="fixed-value">{{data.calc.stats.perception.value}}</td>
<td class="fixed-value">{{add data.calc.stats.perception.value data.calc.stats.perceptionFW}}</td>
<td class="fixed-value"><button class="roll-button roll-perception-button"></button></td>
<td><button class="roll-button roll-perception-button"></button></td>
<td class="fixed-value"></td>
</tr>
<tr data-item="{{itemId}}">
<td class="padding edit-item">{{localize "midgard5.drinking"}}</td>
<td class="fixed-value">{{data.calc.stats.drinkingFW}}</td>
<td class="fixed-value">{{data.calc.stats.drinking.value}}</td>
<td class="fixed-value">{{add data.calc.stats.drinking.value data.calc.stats.drinkingFW}}</td>
<td class="fixed-value"><button class="roll-button roll-drinking-button"></button></td>
<td><button class="roll-button roll-drinking-button"></button></td>
<td class="fixed-value"></td>
</tr>
</tbody>
</table>
</table>
</div>
<table>
<div class="flexpart">
<div class="flexpart-header"><img src="icons/skills/trades/construction-mason-stonecutter-sculpture.webp" class="flexpart-icon">{{localize "midgard5.learned-skills"}}</div>
<table>
<thead>
<tr>
<th class="title">{{localize "midgard5.learned-skill"}}</th>
<th class="title">{{localize "midgard5.fw"}}</th>
<th class="title">{{localize "midgard5.bonus"}}</th>
<th class="title">{{localize "midgard5.ew"}}</th>
<th class="title">{{localize "midgard5.pp-short"}}</th>
<th class="title"><img src="/icons/svg/d20.svg" class="table-icon"></th>
<th class="title"></th>
</tr>
</thead>
<tbody>
{{#each data.calc.skills.general as |skill skillId|}}
<tr data-item="{{skillId}}">
<td class="padding edit-item">{{skill.label}}</td>
<td class="fixed-value">{{skill.fw}}</td>
<td class="fixed-value">{{skill.calc.bonus}}</td>
<td class="fixed-value">{{skill.calc.ew}}</td>
<td class="fixed-value"><input name="data.skills.general.{{key}}.pp" type="text" value="{{skill.pp}}" data-dtype="Number" /></td>
<td><button class="roll-button roll-learned-button"></button></td>
<td><a class="item-delete" title="Delete Item"><i class="fas fa-trash"></i></a></td>
</tr>
{{/each}}
</tbody>
</table>
</div>
<div class="flexpart">
<div class="flexpart-header"><img src="icons/weapons/swords/swords-short.webp" class="flexpart-icon">{{localize "midgard5.weapon-skills"}}</div>
<table>
<thead>
<tr>
<th class="title">{{localize "midgard5.weapon-skill"}}</th>
@ -102,7 +85,7 @@
<th class="title">{{localize "midgard5.bonus"}}</th>
<th class="title">{{localize "midgard5.ew"}}</th>
<th class="title">{{localize "midgard5.pp-short"}}</th>
<th class="title"></th>
<th class="title"><img src="/icons/svg/d20.svg" class="table-icon"></th>
<th class="title"></th>
</tr>
</thead>
@ -114,14 +97,50 @@
<td class="fixed-value">{{skill.calc.bonus}}</td>
<td class="fixed-value">{{skill.calc.ew}}</td>
<td class="fixed-value">{{skill.pp}}</td>
<td class="fixed-value"><button class="roll-button roll-learned-button"></button></td>
<td class="fixed-value"><a class="item-delete" title="Delete Item"><i class="fas fa-trash"></i></a></td>
<td><button class="roll-button roll-learned-button"></button></td>
<td><a class="item-delete" title="Delete Item"><i class="fas fa-trash"></i></a></td>
</tr>
{{/each}}
</tbody>
</table>
</table>
</div>
<table>
<div class="flexpart">
<div class="flexpart-header"><img src="icons/sundries/scrolls/scroll-runed-worn-tan.webp" class="flexpart-icon">{{localize "midgard5.languages"}}</div>
<table>
<thead>
<tr>
<th class="title">{{localize "midgard5.language"}}</th>
<th class="title">{{localize "midgard5.fw"}}</th>
<th class="title">{{localize "midgard5.bonus"}}</th>
<th class="title">{{localize "midgard5.ew"}}</th>
<th class="title">{{localize "midgard5.pp-short"}}</th>
<th class="title"><img src="/icons/svg/d20.svg" class="table-icon"></th>
<th class="title"></th>
</tr>
</thead>
<tbody>
{{#each data.calc.skills.language as |skill skillId|}}
<tr data-item="{{skillId}}">
<td class="padding edit-item">{{skill.label}}</td>
<td class="fixed-value">{{skill.fw}}</td>
<td class="fixed-value">{{skill.calc.bonus}}</td>
<td class="fixed-value">{{skill.calc.ew}}</td>
<td class="fixed-value">{{skill.pp}}</td>
<td><button class="roll-button roll-learned-button"></button></td>
<td><a class="item-delete" title="Delete Item"><i class="fas fa-trash"></i></a></td>
</tr>
{{/each}}
</tbody>
</table>
</div>
</div>
<div class="flexcolumn-2">
<div class="flexpart">
<div class="flexpart-header"><img src="icons/sundries/gaming/dice-pair-white-green.webp" class="flexpart-icon">{{localize "midgard5.unlearned-skills"}}</div>
<table>
<thead>
<tr>
<th class="title"></th>
@ -129,9 +148,7 @@
<th class="title">{{localize "midgard5.fw"}}</th>
<th class="title">{{localize "midgard5.bonus"}}</th>
<th class="title">{{localize "midgard5.ew"}}</th>
<th class="title">{{localize "midgard5.pp-short"}}</th>
<th class="title"></th>
<th class="title"></th>
<th class="title"><img src="/icons/svg/d20.svg" class="table-icon"></th>
</tr>
</thead>
<tbody>
@ -139,15 +156,16 @@
{{#unless (isSkillInList (localizeMidgard key) ../actor.system.calc.skills.general) }}
<tr data-skill="{{key}}">
<td><button class="learn-button">{{localize "midgard5.learn"}}</button></td>
<td class="padding">{{localizeMidgard key}}</td>
<td class="padding" style="font-style: italic;">{{localizeMidgard key}}</td>
<td class="fixed-value">{{skill.fw}}</td>
<td class="fixed-value">{{skillBonus ../actor._id skill}}</td>
<td class="fixed-value">{{skillEw ../actor._id skill}}</td>
<td class="fixed-value"><input name="data.skills.general.{{key}}.pp" type="text" value="{{skill.pp}}" data-dtype="Number" /></td>
<td class="fixed-value"><button class="roll-button roll-general-button"></button></td>
<td class="fixed-value"></td>
<td><button class="roll-button roll-general-button"></button></td>
</tr>
{{/unless}}
{{/each}}
</tbody>
</table>
</table>
</div>
</div>
</div>

View File

@ -4,7 +4,7 @@
<th class="title">{{localize "TYPES.Item.spell"}}</th>
<th class="title">{{localize "midgard5.ew"}}</th>
<th class="title"></th>
<th class="title"></th>
<th class="title add-spell"><i class="fa-regular fa-plus"></i></th>
</tr>
</thead>
<tbody>

View File

@ -55,6 +55,25 @@
</div>
</td>
</tr>
<tr>
<td>
<div class="flexrow">
<span>{{localize "TYPES.Item.container"}}</span>
{{#if data.calc.containers}}
<select class="select-container" name="data.containerId" data-type="String">
{{#select data.containerId}}
<option value="">{{localize "midgard5.no-container"}}</option>
{{#each data.calc.containers as |container key|}}
<option value="{{key}}">{{container.label}}</option>
{{/each}}
{{/select}}
</select>
{{else}}
<span>{{localize "midgard5.assignItemToCharacter"}}</span>
{{/if}}
</div>
</td>
</tr>
<tr>
<td>{{localize "midgard5.lpProtection"}}</td>
<td><input name="data.lpProtection" type="text" value="{{data.lpProtection}}" data-dtype="Number" /></td>

View File

@ -9,6 +9,10 @@
<tr>
<td colspan="4">
<div class="flexrow">
<span>
<input id="data.equipped" type="checkbox" name="data.equipped" {{checked data.equipped}}>
<label for="data.equipped">{{localize "midgard5.equipped"}}</label>
</span>
<span>
<input id="data.magic" type="checkbox" name="data.magic" {{checked data.magic}}>
<label for="data.magic">{{localize "midgard5.magic"}}</label>
@ -55,6 +59,25 @@
</div>
</td>
</tr>
<tr>
<td>
<div class="flexrow">
<span>{{localize "TYPES.Item.container"}}</span>
{{#if data.calc.containers}}
<select class="select-container" name="data.containerId" data-type="String">
{{#select data.containerId}}
<option value="">{{localize "midgard5.no-container"}}</option>
{{#each data.calc.containers as |container key|}}
<option value="{{key}}">{{container.label}}</option>
{{/each}}
{{/select}}
</select>
{{else}}
<span>{{localize "midgard5.assignItemToCharacter"}}</span>
{{/if}}
</div>
</td>
</tr>
<tr>
<td>{{localize "midgard5.defenseBonus"}}</td>
<td><input name="data.stats.defenseBonus" type="text" value="{{data.stats.defenseBonus}}" data-dtype="Number" /></td>

View File

@ -9,6 +9,10 @@
<tr>
<td colspan="5">
<div class="flexrow">
<span>
<input id="data.equipped" type="checkbox" name="data.equipped" {{checked data.equipped}}>
<label for="data.equipped">{{localize "midgard5.equipped"}}</label>
</span>
<span>
<input id="data.magic" type="checkbox" name="data.magic" {{checked data.magic}}>
<label for="data.magic">{{localize "midgard5.magic"}}</label>
@ -60,6 +64,25 @@
</div>
</td>
</tr>
<tr>
<td>
<div class="flexrow">
<span>{{localize "TYPES.Item.container"}}</span>
{{#if data.calc.containers}}
<select class="select-container" name="data.containerId" data-type="String">
{{#select data.containerId}}
<option value="">{{localize "midgard5.no-container"}}</option>
{{#each data.calc.containers as |container key|}}
<option value="{{key}}">{{container.label}}</option>
{{/each}}
{{/select}}
</select>
{{else}}
<span>{{localize "midgard5.assignItemToCharacter"}}</span>
{{/if}}
</div>
</td>
</tr>
<tr>
<td>{{localize "midgard5.base-damage"}}</td>
<td>