Compare commits

..
9 Commits
Author SHA1 Message Date
Byroks cb05c9a67b Merge branch 'develop' 2024-03-04 14:20:38 +01:00
Byroks c0dced6fe6 Merge branch 'develop' 2024-02-05 13:30:41 +01:00
Byroks 5a41c4bb56 Merge branch 'develop' 2024-02-05 10:35:31 +01:00
Byroks 7ee92f6601 Squashed commit of the following:
commit 33c65735bd
Author: Byroks <byroks@gmail.com>
Date:   Sat Jan 20 15:31:35 2024 +0100

    v2.4.0

commit 2bfd3a7d6a
Author: Byroks <byroks@gmail.com>
Date:   Sat Jan 20 13:58:22 2024 +0100

    #46-problems-with-character-description-editor (#50)

    Changes:
     + adjust height and width of the editor

    WIP for #46
    Closes #44

    Reviewed-on: #50

commit 03b87f2df0
Author: Byroks <byroks@gmail.com>
Date:   Sat Jan 20 13:44:06 2024 +0100

    update url

commit 9d72b31d5f
Author: Byroks <byroks@gmail.com>
Date:   Sat Jan 20 12:37:05 2024 +0100

    Add Items on Character Sheet

    Changes:
     + add button to add all different kind of items directly onto the character sheet
     + fix #1 by correctly updating the item

commit c13fef5103
Author: oskaloq <os_ka_loq@gmx.de>
Date:   Tue Jan 16 11:25:39 2024 +0100

    Zusammenführung-von-Fertigkeiten,-Waffen-und-Rüstungen-im-Kampf-Tab-#15 (#48)

    - Created character description tab
    - Redesigned skill, gear and combat tab
    - Weapons, defense weapons and armor is still in the gear tab. If you equip them (now directly possible via click on the equip icon), they appear in the combat tab. Reason: This holds the combat tab clean for combat stuff.

    Co-authored-by: Ender <harald@drueppels.de>
    Reviewed-on: #48
    Reviewed-by: Byroks <byroks@gmail.com>

commit abf8077131
Author: Byroks <byroks@gmail.com>
Date:   Tue Jan 16 08:29:14 2024 +0100

    #33 Wrong wealth calculation (#34)

    Changes:
     + add function to adjust item value depending on currency
    Co-authored-by: Simon Gustavs <simon.gustavs@bms-cs.de>
    Reviewed-on: #34
    Reviewed-by: oskaloq <os_ka_loq@gmx.de>

commit b5b75aa2c6
Author: Byroks <byroks@gmail.com>
Date:   Mon Jan 15 14:15:30 2024 +0100

    #18 Remove ContainerId from containers (#29)

    Changes
     + remove containerId variable from containers as it's not needed

    Reviewed-on: #29
    Reviewed-by: oskaloq <os_ka_loq@gmx.de>

commit 7368673ba3
Author: Byroks <byroks@gmail.com>
Date:   Mon Jan 8 20:42:22 2024 +0100

    Update .gitea/workflows/add-issue-to-project.yaml

commit a606750b23
Author: Byroks <byroks@gmail.com>
Date:   Mon Jan 8 20:41:15 2024 +0100

    Update .gitea/workflows/add-issue-to-project.yaml

commit 7358b67da2
Author: Byroks <byroks@gmail.com>
Date:   Mon Jan 8 20:41:05 2024 +0100

    Update .gitea/workflows/add-issue-to-project.yaml

commit 2a36b8eaa1
Author: Byroks <byroks@gmail.com>
Date:   Mon Jan 8 20:38:50 2024 +0100

    Update .gitea/workflows/add-issue-to-project.yaml

commit f38ef8aa6d
Author: Byroks <byroks@gmail.com>
Date:   Mon Jan 8 16:16:04 2024 +0100

    Update .gitea/workflows/add-issue-to-project.yaml

commit 2ac8a6bba4
Author: Byroks <byroks@gmail.com>
Date:   Mon Jan 8 16:09:13 2024 +0100

    Update .gitea/workflows/add-issue-to-project.yaml

commit 41fb1a8879
Author: Byroks <byroks@gmail.com>
Date:   Mon Jan 8 16:02:37 2024 +0100

    Update .gitea/workflows/add-issue-to-project.yaml

commit ff74871a0c
Author: Byroks <byroks@gmail.com>
Date:   Mon Jan 8 12:56:49 2024 +0100

    Update .gitea/workflows/add-issue-to-project.yaml

commit f8b65c030f
Author: Byroks <byroks@gmail.com>
Date:   Mon Jan 8 12:39:39 2024 +0100

    Update .gitea/workflows/add-issue-to-project.yaml

commit 31a4ccfda1
Author: Byroks <byroks@gmail.com>
Date:   Mon Jan 8 12:37:43 2024 +0100

    Update .gitea/workflows/add-issue-to-project.yaml

commit c24e2b7af2
Author: Byroks <byroks@gmail.com>
Date:   Mon Jan 8 12:28:41 2024 +0100

    Update .gitea/workflows/add-issue-to-project.yaml

commit cfdba0ee75
Author: oskaloq <os_ka_loq@gmx.de>
Date:   Sun Jan 7 22:53:16 2024 +0100

    Anpassung-des-Character-Sheet-Headers-#13 (#28)

    - Made character sheet header more responsive
    - Changed Logo
    - Changed "all gear items" container, that it shows items not in dedicated containers ( unless "Alle" checkbox is set)

    Co-authored-by: Ender <harald@drueppels.de>
    Co-authored-by: Byroks <byroks@gmail.com>
    Reviewed-on: #28
    Reviewed-by: Byroks <byroks@gmail.com>

commit d67de1b064
Author: Byroks <byroks@gmail.com>
Date:   Sun Jan 7 16:47:12 2024 +0100

    Update .gitea/workflows/add-issue-to-project.yaml

commit 718f1eab99
Author: Byroks <byroks@gmail.com>
Date:   Sun Jan 7 16:38:35 2024 +0100

    Update .gitea/workflows/add-issue-to-project.yaml

commit 47fd5b7763
Author: Byroks <byroks@gmail.com>
Date:   Sun Jan 7 16:37:27 2024 +0100

    Update .gitea/workflows/add-issue-to-project.yaml

commit ad884994dd
Author: Byroks <byroks@gmail.com>
Date:   Sun Jan 7 16:17:20 2024 +0100

    Update .gitea/workflows/add-issue-to-project.yaml

commit b08bd195c7
Author: Byroks <byroks@gmail.com>
Date:   Sun Jan 7 15:45:46 2024 +0100

    Update .gitea/workflows/add-issue-to-project.yaml

commit c83cd8f079
Author: Byroks <byroks@gmail.com>
Date:   Sun Jan 7 15:40:56 2024 +0100

    Update .gitea/workflows/add-issue-to-project.yaml

commit b1ef88235f
Author: Byroks <byroks@gmail.com>
Date:   Sun Jan 7 15:37:37 2024 +0100

    Update .gitea/workflows/add-issue-to-project.yaml

commit da1ae4e16e
Author: Byroks <byroks@gmail.com>
Date:   Sun Jan 7 15:35:54 2024 +0100

    Update .gitea/workflows/add-issue-to-project.yaml

commit 840a7c1dc4
Author: Byroks <byroks@gmail.com>
Date:   Sun Jan 7 15:33:26 2024 +0100

    Update .gitea/workflows/add-issue-to-project.yaml

commit 4825166f87
Author: Byroks <byroks@gmail.com>
Date:   Sun Jan 7 15:06:01 2024 +0100

    Add .gitea/workflows/add-issue-to-project.yaml

commit b8e873537c
Author: LeFrique <lefrique@live.de>
Date:   Sun Jan 7 14:31:20 2024 +0100

    Zwergenhort (#4)

    Mein Geschenk zu Weihnachten:

    Implementierung des Zwergenhort gem. KOD S. 167 mit Angabe aktueller Mindesthort für aktuellen Grad und benötigtem Hort für nächsten Grad bei Zwergen. Der Hort erscheint nur bei ausgewählter Rasse Zwerg und wird bei allen anderen Rassen versteckt. Die Anrechnung von Gold oder Gegenständen wie auch im KOD erwähnt erfordert die Implementierung eines Goldmanagements und am besten auch eine Neustrukturierung des Charakterbogens (s. weitere Issues).

    Frohe Weihnachten ;)

    Co-authored-by: Byroks <byroks@gmail.com>
    Reviewed-on: #4
    Co-authored-by: LeFrique <lefrique@live.de>
    Co-committed-by: LeFrique <lefrique@live.de>

commit 975bcd1e15
Author: Byroks <byroks@gmail.com>
Date:   Sun Jan 7 14:29:39 2024 +0100

    #10 Kampfkunst nicht öffenbar (#11)

    Änderungen:
     + auskommentierte if Bedingung wieder drin
     + if Bedingung angepasst

    Reviewed-on: #11
    Reviewed-by: Le-Frique <lefrique@live.de>

commit b945f22710
Author: oskaloq <os_ka_loq@gmx.de>
Date:   Wed Jan 3 15:57:15 2024 +0100

    Charakterbogen anpassen #7 (#9)

    - Use of flexboxes in two columns for better display
    - Introduction of item containers for the different storage of items

    Co-authored-by: Ender <harald@drueppels.de>
    Co-authored-by: Byroks <byroks@gmail.com>
    Reviewed-on: Byroks/foundry-vtt-system-midgard5#9
    Reviewed-by: Byroks <byroks@gmail.com>

commit 6baf9a0269
Author: Byroks <byroks@gmail.com>
Date:   Mon Dec 18 19:53:37 2023 +0100

    Change git Path (#3)

    Changes:
     + change github urls to git.byroks
    Reviewed-on: Byroks/foundry-vtt-system-midgard5#3
    Reviewed-by: Le-Frique <lefrique@live.de>
2024-01-20 15:33:05 +01:00
Byroks 8a3c632c7d Merge branch 'develop' 2023-12-15 21:36:50 +01:00
Byroks 7fe52cf52a Merge branch 'develop' 2023-12-13 18:55:13 +01:00
Byroks f4a2338075 Merge branch 'develop' 2023-12-06 16:13:30 +01:00
Byroks 024f0b9c42 Squashed commit of the following:
commit 250fc499ae
Author: Byroks <byroks@gmail.com>
Date:   Thu Nov 30 16:17:04 2023 +0100

    v2.1.0

commit 28595e7dd0
Author: Byroks <byroks@gmail.com>
Date:   Thu Nov 30 15:50:59 2023 +0100

    Make Items with mods equippable (#11)

    Changes:
     + Items that can influence you stats are equippable
     + only equipped items influence your stats
     + Armor now influences your stats
     + move mods into a partial for easier changes

commit 8095785fc2
Author: Byroks <byroks@gmail.com>
Date:   Wed Nov 29 10:14:49 2023 +0100

    Movement stat (#10)

    Changes:
     + make movement stat work and be moddable by effects

commit e141839055
Merge: 14e005c 0bfa224
Author: Byroks <byroks@gmail.com>
Date:   Tue Nov 28 19:50:38 2023 +0100

    Merge branch 'main' into develop

commit 14e005cb0a
Author: Byroks <byroks@gmail.com>
Date:   Tue Nov 28 19:48:14 2023 +0100

    v2.0.0

commit c635c54f24
Author: Byroks <byroks@gmail.com>
Date:   Tue Nov 28 19:42:38 2023 +0100

    Dev Kampfkünste Items & Integration (#7)

    Changes:
     + add kampfkuenste template
     + add kampfkuenste tab
     + make kampfkuenste rollable
     + update localization

commit e27f4209e5
Author: Byroks <byroks@gmail.com>
Date:   Mon Nov 27 20:05:20 2023 +0100

    Squashed commit of the following:

    commit 0bfa224dae
    Author: Byroks <byroks@gmail.com>
    Date:   Mon Nov 27 19:56:05 2023 +0100

        V1.3.1 (#6)

        * v1.3.1

        * v1.3.1

        * update .gitingore

    commit 35a6b0fae9
    Author: Byroks <byroks@gmail.com>
    Date:   Mon Nov 27 19:48:56 2023 +0100

        v1.3.1

    commit db21ca93b0
    Author: Byroks <byroks@gmail.com>
    Date:   Sun Nov 26 13:13:13 2023 +0100

        subtract ap when casting spell

        Changes:
         + subtract AP when casting a spell
2023-11-30 16:19:25 +01:00
ByroksandGitHub 16df142d45 v2.0.0 (#8)
* Squashed commit of the following:

commit 0bfa224dae
Author: Byroks <byroks@gmail.com>
Date:   Mon Nov 27 19:56:05 2023 +0100

    V1.3.1 (#6)

    * v1.3.1

    * v1.3.1

    * update .gitingore

commit 35a6b0fae9
Author: Byroks <byroks@gmail.com>
Date:   Mon Nov 27 19:48:56 2023 +0100

    v1.3.1

commit db21ca93b0
Author: Byroks <byroks@gmail.com>
Date:   Sun Nov 26 13:13:13 2023 +0100

    subtract ap when casting spell

    Changes:
     + subtract AP when casting a spell

* Dev Kampfkünste Items & Integration (#7)

Changes:
 + add kampfkuenste template
 + add kampfkuenste tab
 + make kampfkuenste rollable
 + update localization

* v2.0.0
2023-11-28 19:50:56 +01:00
44 changed files with 771 additions and 2681 deletions
+3 -3
View File
@@ -473,8 +473,8 @@ const updateManifest = (cb: any) => {
const result = `${repoURL}/releases/download`; const result = `${repoURL}/releases/download`;
manifest.file.url = repoURL; manifest.file.url = repoURL;
manifest.file.manifest = `${result}/latest/${manifest.name}?token=2455375115b92bc8d87c93df7159eec232456f2d`; manifest.file.manifest = `${result}/v${manifest.file.version}/${manifest.name}`;
manifest.file.download = `${result}/v${manifest.file.version}/${manifest.file.name}-v${manifest.file.version}.zip?token=2455375115b92bc8d87c93df7159eec232456f2d`; manifest.file.download = `${result}/v${manifest.file.version}/${manifest.file.name}-v${manifest.file.version}.zip`;
const prettyProjectJson = stringify(manifest.file, { const prettyProjectJson = stringify(manifest.file, {
maxLength: 35, maxLength: 35,
@@ -504,7 +504,7 @@ const gitTaskBuild = (cb: gulp.TaskFunctionCallback) => {
if (!manifest) return cb(Error("could not load manifest.")); if (!manifest) return cb(Error("could not load manifest."));
return gulp return gulp
.src(`${manifest.file.name}.zip`) .src(`${manifest.file.name}-v${manifest.file.version}.zip`)
.pipe(git.checkout(`v${manifest.file.version}`, { args: "-b" })) .pipe(git.checkout(`v${manifest.file.version}`, { args: "-b" }))
.pipe(git.add({ args: "--no-all -f" })) .pipe(git.add({ args: "--no-all -f" }))
.pipe(git.commit(`v${manifest.file.version}`, { args: "-a", disableAppendPaths: true })); .pipe(git.commit(`v${manifest.file.version}`, { args: "-a", disableAppendPaths: true }));
+339 -424
View File
@@ -12,460 +12,375 @@
"TYPES.Item.effect": "Aktiver Effekt", "TYPES.Item.effect": "Aktiver Effekt",
"TYPES.Item.kampfkunst": "Kampfkunst", "TYPES.Item.kampfkunst": "Kampfkunst",
"TYPES.Item.container": "Aufbewahrung", "TYPES.Item.container": "Aufbewahrung",
"TYPES.Item.class": "Klasse",
"midgard5": { "midgard5.phase-action": "Handlungsphase",
"phase-action": "Handlungsphase", "midgard5.phase-movement": "Bewegungsphase",
"actionThisTurn": "Handlung", "midgard5.no-encounter": "Kein Kampf",
"phase-movement": "Bewegungsphase", "midgard5.encounter-not-started": "Kein aktiver Kampf",
"no-encounter": "Kein Kampf", "midgard5.initiative": "Handlungsrang",
"encounter-not-started": "Kein aktiver Kampf",
"initiative": "Initiative",
"initiativeRoll": "Initiative würfeln",
"unableToAct": "Handlungsunfähig",
"unablesToAct": "Macht handlungsunfähig",
"continue": "Weiter",
"endTurn": "Zug beenden",
"group": "Gruppe",
"leader": "Anführer",
"actionrank": "Handlungsrang",
"combat-join": "Kampf Beitreten/Handlungsrang zurücksetzen", "midgard5.combat-join": "Kampf Beitreten/Handlungsrang zurücksetzen",
"combat-ranged": "Fernangriff", "midgard5.combat-ranged": "Fernangriff",
"combat-spell": "Zaubern (10 Sec)", "midgard5.combat-spell": "Zaubern (10 Sec)",
"time-duration": "Dauer", "midgard5.time-duration": "Dauer",
"time-round": "Runde(n)", "midgard5.time-round": "Runde(n)",
"time-minute": "Minute(n)", "midgard5.time-minute": "Minute(n)",
"time-hour": "Stunde(n)", "midgard5.time-hour": "Stunde(n)",
"time-limitless": "Unbegrenzt", "midgard5.time-limitless": "Unbegrenzt",
"doRoll": "Würfeln", "midgard5.doRoll": "Würfeln",
"learn": "Lernen", "midgard5.learn": "Lernen",
"label": "Bezeichnung", "midgard5.label": "Bezeichnung",
"description": "Beschreibung", "midgard5.description": "Beschreibung",
"Characteristic": "Merkmal", "midgard5.Characteristic": "Merkmal",
"characteristics": "Merkmale", "midgard5.characteristics": "Merkmale",
"background": "Hintergrund", "midgard5.background": "Hintergrund",
"attribute": "Eigenschaft", "midgard5.attribute": "Eigenschaft",
"attributes": "Eigenschaften", "midgard5.attributes": "Eigenschaften",
"points": "Punkte", "midgard5.points": "Punkte",
"calculated-value": "Berechneter Wert", "midgard5.calculated-value": "Berechneter Wert",
"calculated-values": "Werte und Boni", "midgard5.calculated-values": "Sonstige Werte",
"skill": "Fertigkeit", "midgard5.skill": "Fertigkeit",
"skill-value": "Fertigkeitswert", "midgard5.skill-value": "Fertigkeitswert",
"fw": "FW", "midgard5.fw": "FW",
"bonus": "Bonus", "midgard5.bonus": "Bonus",
"bonuses": "Boni", "midgard5.bonuses": "Boni",
"ew": "EW", "midgard5.ew": "EW",
"pp-short": "PP", "midgard5.pp-short": "PP",
"pp": "Praxispunkte", "midgard5.pp": "Praxispunkte",
"item-value": "Wert", "midgard5.item-value": "Wert",
"item-quantity": "Menge", "midgard5.item-quantity": "Menge",
"item-onbody": "Am Körper", "midgard5.item-onbody": "Am Körper",
"item-ismagic": "Ist Magisch", "midgard5.item-ismagic": "Ist Magisch",
"item-wealth": "Vermögenswert", "midgard5.item-wealth": "Vermögenswert",
"item-weight": "Gewicht", "midgard5.item-weight": "Gewicht",
"item-abw": "ABW",
"item-abw-long": "Ausbrennwahrscheinlichkeit",
"actor-lp": "Lebenspunkte", "midgard5.actor-lp": "Lebenspunkte",
"actor-lp-short": "LP", "midgard5.actor-lp-short": "LP",
"actor-ap": "Ausdauerpunkte", "midgard5.actor-ap": "Ausdauerpunkte",
"actor-ap-short": "AP", "midgard5.actor-ap-short": "AP",
"actor-st": "St", "midgard5.actor-st": "St",
"actor-st-long": "Stärke", "midgard5.actor-st-long": "Stärke",
"actor-ko": "Ko", "midgard5.actor-ko": "Ko",
"actor-ko-long": "Konstitution", "midgard5.actor-ko-long": "Konstitution",
"actor-au": "Au", "midgard5.actor-au": "Au",
"actor-au-long": "Aussehen", "midgard5.actor-au-long": "Aussehen",
"actor-gs": "Gs", "midgard5.actor-gs": "Gs",
"actor-gs-long": "Geschicklichkeit", "midgard5.actor-gs-long": "Geschicklichkeit",
"actor-in": "In", "midgard5.actor-in": "In",
"actor-in-long": "Intelligenz", "midgard5.actor-in-long": "Intelligenz",
"actor-pa": "pA", "midgard5.actor-pa": "pA",
"actor-pa-long": "persönliche Ausstrahlung", "midgard5.actor-pa-long": "persönliche Ausstrahlung",
"actor-gw": "Gw", "midgard5.actor-gw": "Gw",
"actor-gw-long": "Gewandtheit", "midgard5.actor-gw-long": "Gewandtheit",
"actor-zt": "Zt", "midgard5.actor-zt": "Zt",
"actor-zt-long": "Zaubertalent", "midgard5.actor-zt-long": "Zaubertalent",
"actor-wk": "Wk", "midgard5.actor-wk": "Wk",
"actor-wk-long": "Willenskraft", "midgard5.actor-wk-long": "Willenskraft",
"actor-git": "GiT", "midgard5.actor-git": "GiT",
"actor-git-long": "Gifttolleranz", "midgard5.actor-git-long": "Gifttolleranz",
"aktuell": "Akt.", "midgard5.aktuell": "Akt.",
"maximum": "Max.", "midgard5.maximum": "Max.",
"attrvalue": "Wert", "midgard5.attrvalue": "Wert",
"movementRange": "Bewegungsweite", "midgard5.movementRange": "Bewegungsweite",
"movedThisTurn": "Bewegt",
"base_values": "Grundwerte", "midgard5.base_values": "Grundwerte",
"skills": "Fertigkeiten", "midgard5.skills": "Fertigkeiten",
"gear": "Ausrüstung", "midgard5.gear": "Ausrüstung",
"spells": "Zauber", "midgard5.spells": "Zauber",
"effects": "Aktive Effekte", "midgard5.effects": "Aktive Effekte",
"kampfkuenste": "Kampfkünste", "midgard5.kampfkuenste": "Kampfkünste",
"combat": "Kampf", "midgard5.combat": "Kampf",
"actor-name": "Figur", "midgard5.actor-name": "Figur",
"level": "Grad", "midgard5.level": "Grad",
"class": "Typ", "midgard5.class": "Typ",
"race": "Rasse", "midgard5.race": "Rasse",
"magicUsing": "Zauberkundig", "midgard5.magicUsing": "Zauberkundig",
"gender": "Geschlecht", "midgard5.gender": "Geschlecht",
"weight": "Gewicht", "midgard5.weight": "Gewicht",
"height": "Größe", "midgard5.height": "Größe",
"shape": "Gestalt", "midgard5.shape": "Gestalt",
"age": "Alter", "midgard5.age": "Alter",
"caste": "Stand", "midgard5.caste": "Stand",
"occupation": "Beruf", "midgard5.occupation": "Beruf",
"origin": "Heimat", "midgard5.origin": "Heimat",
"faith": "Glaube", "midgard5.faith": "Glaube",
"currency": "Geld", "midgard5.currency": "Geld",
"currency-gold": "Gold", "midgard5.currency-gold": "Gold",
"currency-silver": "Silber", "midgard5.currency-silver": "Silber",
"currency-copper": "Kupfer", "midgard5.currency-copper": "Kupfer",
"currency-wealth": "Vermögen in GS", "midgard5.currency-wealth": "Vermögen in GS",
"currency-available": "verfügbares Vermögen", "midgard5.currency-available": "verfügbares Vermögen",
"hoard": "aktueller Hort", "midgard5.hoard": "aktueller Hort",
"hoardMin": "benötigter Mindesthort", "midgard5.hoardMin": "benötigter Mindesthort",
"hoard-next": "Hort für nächsten Grad", "midgard5.hoard-next": "Hort für nächsten Grad",
"hoarded": "Hort", "midgard5.hoarded": "Hort",
"no-container": "Ohne", "midgard5.no-container": "Ohne",
"encumbrance": "Getragene Last", "midgard5.encumbrance": "Getragene Last",
"load": "Normallast", "midgard5.load": "Normallast",
"heavy-load": "Schwere Last", "midgard5.heavy-load": "Schwere Last",
"thrust-load": "Schublast", "midgard5.thrust-load": "Schublast",
"load-max": "Höchstlast", "midgard5.load-max": "Höchstlast",
"capacity": "Tragkraft", "midgard5.load-capacity": "Tragkraft",
"exp-overall": "Erfahrungsschatz", "midgard5.exp-overall": "Erfahrungsschatz",
"exp-available": "Erfahrungspunkte", "midgard5.exp-available": "Erfahrungspunkte",
"grace": "Göttliche Gnade", "midgard5.grace": "Göttliche Gnade",
"destiny": "Schicksalsgunst", "midgard5.destiny": "Schicksalsgunst",
"luckPoints": "Glückspunkte", "midgard5.luckPoints": "Glückspunkte",
"abrichten": "Abrichten", "midgard5.abrichten": "Abrichten",
"akrobatik": "Akrobatik", "midgard5.akrobatik": "Akrobatik",
"alchimie": "Alchimie", "midgard5.alchimie": "Alchimie",
"anfuehren": "Anführen", "midgard5.anfuehren": "Anführen",
"askese": "Askese", "midgard5.askese": "Askese",
"astrologie": "Astrologie", "midgard5.astrologie": "Astrologie",
"athletik": "Athletik", "midgard5.athletik": "Athletik",
"balancieren": "Balancieren", "midgard5.balancieren": "Balancieren",
"beidhaendigerKampf": "Beidhändiger Kampf", "midgard5.beidhaendigerKampf": "Beidhändiger Kampf",
"bergreiten": "Bergreiten", "midgard5.bergreiten": "Bergreiten",
"beredsamkeit": "Beredsamkeit", "midgard5.beredsamkeit": "Beredsamkeit",
"betaeuben": "Betäuben", "midgard5.betaeuben": "Betäuben",
"betaeubungsgriff": "Betäubungsgriff", "midgard5.betaeubungsgriff": "Betäubungsgriff",
"bootfahren": "Bootfahren", "midgard5.bootfahren": "Bootfahren",
"dickhaeuterLenken": "Dickhäuter lenken", "midgard5.dickhaeuterLenken": "Dickhäuter lenken",
"ersteHilfe": "Erste Hilfe", "midgard5.ersteHilfe": "Erste Hilfe",
"etikette": "Etikette", "midgard5.etikette": "Etikette",
"fallenEntdecken": "Fallen entdecken", "midgard5.fallenEntdecken": "Fallen entdecken",
"fallenmechanik": "Fallenmechanik", "midgard5.fallenmechanik": "Fallenmechanik",
"faelschen": "Fälschen", "midgard5.faelschen": "Fälschen",
"fangen": "Fangen", "midgard5.fangen": "Fangen",
"fechten": "Fechten", "midgard5.fechten": "Fechten",
"fechtkunst": "Fechtkunst", "midgard5.feueralchimie": "Feueralchimie",
"feueralchimie": "Feueralchimie", "midgard5.gassenwissen": "Gassenwissen",
"gassenwissen": "Gassenwissen", "midgard5.gaukeln": "Gaukeln",
"gaukeln": "Gaukeln", "midgard5.gelaendelauf": "Geländelauf",
"gelaendelauf": "Geländelauf", "midgard5.geraetekunde": "Gerätekunde",
"geraetekunde": "Gerätekunde", "midgard5.geschaeftssinn": "Geschäftssinn",
"geschaeftssinn": "Geschäftssinn", "midgard5.gluecksspiel": "Glücksspiel",
"gluecksspiel": "Glücksspiel", "midgard5.heilkunde": "Heilkunde",
"heilkunde": "Heilkunde", "midgard5.kampfInVollruestung": "Kampf in Vollrüstung",
"kampfInVollruestung": "Kampf in Vollrüstung", "midgard5.kampfInSchlachtreihe": "Kampf in Schlachtreihe",
"kampfInSchlachtreihe": "Kampf in Schlachtreihe", "midgard5.kampfkunst": "Kampfkunst",
"kampfkunst": "Kampfkunst", "midgard5.kido": "Kido",
"kido": "Kido", "midgard5.klettern": "Klettern",
"klettern": "Klettern", "midgard5.landeskunde": "Landeskunde",
"landeskunde": "Landeskunde", "midgard5.laufen": "Laufen",
"laufen": "Laufen", "midgard5.lesenVonZauberschrift": "Lesen von Zauberschrift",
"lesenVonZauberschrift": "Lesen von Zauberschrift", "midgard5.lesenVonZauberrunen": "Lesen von Zauberrunen",
"lesenVonZauberrunen": "Lesen von Zauberrunen", "midgard5.meditieren": "Meditieren",
"meditieren": "Meditieren", "midgard5.menschenkenntnis": "Menschenkenntnis",
"menschenkenntnis": "Menschenkenntnis", "midgard5.meucheln": "Meucheln",
"meucheln": "Meucheln", "midgard5.musizieren": "Musizieren",
"musizierenFloete": "Musizieren (Flöten)", "midgard5.naturkunde": "Naturkunde",
"musizierenBlas": "Musizieren (Blasinstrumente)", "midgard5.ninjutsu": "NinJutsu",
"musizierenRythmus": "Musizieren (Rythmusinstrumente)", "midgard5.orakelkunst": "Orakelkunst",
"musizierenStreich": "Musizieren (Streichinstrumente)", "midgard5.pflanzenkunde": "Pflanzenkunde",
"musizierenZupf": "Musizieren (Zupfinstrumente)", "midgard5.raunen": "Raunen",
"naturkunde": "Naturkunde", "midgard5.reiten": "Reiten",
"ninjutsu": "NinJutsu", "midgard5.reiterkampf": "Reiterkampf",
"orakelkunst": "Orakelkunst", "midgard5.rutengehen": "Rutengehen",
"pflanzenkunde": "Pflanzenkunde", "midgard5.scharfschiessen": "Scharfschießen",
"raunen": "Raunen", "midgard5.schiesskunst": "Schießkunst",
"reiten": "Reiten", "midgard5.schleichen": "Schleichen",
"reiterkampf": "Reiterkampf", "midgard5.schloesserOeffnen": "Schlösser öffnen",
"rutengehen": "Rutengehen", "midgard5.schmerzErtragen": "Schmerzen ertragen",
"scharfschiessen": "Scharfschießen", "midgard5.schwimmen": "Schwimmen",
"schiesskunst": "Schießkunst", "midgard5.seilkunst": "Seilkunst",
"schleichen": "Schleichen", "midgard5.selbstkontrolle": "Selbstkontrolle",
"schloesserOeffnen": "Schlösser öffnen", "midgard5.singen": "Singen",
"schmerzErtragen": "Schmerzen ertragen", "midgard5.skifahren": "Skifahren",
"schwimmen": "Schwimmen", "midgard5.spinnengang": "Spinnengang",
"seilkunst": "Seilkunst", "midgard5.speerfechten": "Speerfechten",
"selbstkontrolle": "Selbstkontrolle", "midgard5.spurensuche": "Spurensuche",
"singen": "Singen", "midgard5.stehlen": "Stehlen",
"skifahren": "Skifahren", "midgard5.taitschi": "TaiTschi",
"spinnengang": "Spinnengang", "midgard5.tarnen": "Tarnen",
"speerfechten": "Speerfechten", "midgard5.tanzen": "Tanzen",
"spurensuche": "Spurensuche", "midgard5.tauchen": "Tauchen",
"stehlen": "Stehlen", "midgard5.thaumagraphie": "Thaumagraphie",
"taitschi": "TaiTschi", "midgard5.thaumalogie": "Thaumalogie",
"tarnen": "Tarnen", "midgard5.tierkunde": "Tierkunde",
"tanzen": "Tanzen", "midgard5.ueberleben": "Überleben",
"tauchen": "Tauchen", "midgard5.verfuehren": "Verführen",
"thaumagraphie": "Thaumagraphie", "midgard5.verhoeren": "Verhören",
"thaumalogie": "Thaumalogie", "midgard5.verstellen": "Verstellen",
"tierkunde": "Tierkunde", "midgard5.volkstanz": "Volkstanz",
"ueberlebenWald": "Überleben (Wald)", "midgard5.wagenlenken": "Wagenlenken",
"ueberlebenSteppe": "Überleben (Steppe)", "midgard5.wahrsagen": "Wahrsagen",
"ueberlebenGebirge": "Überleben (Gebirge)", "midgard5.wasserkampf": "Wasserkampf",
"verfuehren": "Verführen", "midgard5.zauberkunde": "Zauberkunde",
"verhoeren": "Verhören",
"verstellen": "Verstellen",
"volkstanz": "Volkstanz",
"wagenlenken": "Wagenlenken",
"wahrsagen": "Wahrsagen",
"wasserkampf": "Wasserkampf",
"zauberkunde": "Zauberkunde",
"armor": "Rüstung", "midgard5.armor": "Rüstung",
"defense": "Abwehr", "midgard5.defense": "Abwehr",
"damageBonus": "Schadensbonus", "midgard5.damageBonus": "Schadensbonus",
"damageBonus-short": "SchB", "midgard5.damageBonus-short": "SchB",
"attackBonus": "Angriffsbonus", "midgard5.attackBonus": "Angriffsbonus",
"attackBonus-short": "AnB", "midgard5.attackBonus-short": "AnB",
"defenseBonus": "Abwehrbonus", "midgard5.defenseBonus": "Abwehrbonus",
"defenseBonus-short": "AbB", "midgard5.defenseBonus-short": "AbB",
"movementBonus": "Bewegunsbonus", "midgard5.movementBonus": "Bewegunsbonus",
"resistanceMind": "Resistenz Geist", "midgard5.resistanceMind": "Resistenz Geist",
"resistanceBody": "Resistenz Körper", "midgard5.resistanceBody": "Resistenz Körper",
"spellCasting": "Zaubern", "midgard5.spellCasting": "Zaubern",
"spellBonus": "Zauberbonus", "midgard5.spellBonus": "Zauberbonus",
"brawl": "Raufen", "midgard5.brawl": "Raufen",
"poisonResistance": "Gifttolleranz", "midgard5.poisonResistance": "Gifttolleranz",
"enduranceBonus": "Ausdauerbonus", "midgard5.enduranceBonus": "Ausdauerbonus",
"lpProtection": "Rüstungsschutz (LP)", "midgard5.lpProtection": "Rüstungsschutz (LP)",
"apProtection": "Rüstungsschutz (AP)", "midgard5.apProtection": "Rüstungsschutz (AP)",
"deprivation": "Zähigkeit", "midgard5.perception": "Wahrnehmung",
"deprivations": "Entbehrungen", "midgard5.drinking": "Trinken",
"deprivationCold": "Zähigkeit Kälte",
"deprivationHeat": "Zähigkeit Hitze",
"deprivationFood": "Zähigkeit Durst/Hunger",
"new-skill": "Neue Fertigkeit", "midgard5.new-skill": "Neue Fertigkeit",
"special": "Spezial", "midgard5.special": "Spezial",
"learned-skill": "Gelernte Fertigkeit", "midgard5.learned-skill": "Gelernte Fertigkeit",
"learned-skills": "Gelernte Fertigkeiten", "midgard5.learned-skills": "Gelernte Fertigkeiten",
"language": "Sprache", "midgard5.language": "Sprache",
"languages": "Sprachen", "midgard5.languages": "Sprachen",
"writings": "Schriften", "midgard5.weapon-skill": "Waffenfertigkeit",
"weapon-skill": "Waffenfertigkeit", "midgard5.weapon-skills": "Waffenfertigkeiten",
"weapon-skills": "Waffenfertigkeiten", "midgard5.unlearned-skill": "Ungelernte Fertigkeit",
"unlearned-skill": "Ungelernte Fertigkeit", "midgard5.unlearned-skills": "Ungelernte Fertigkeiten",
"unlearned-skills": "Ungelernte Fertigkeiten", "midgard5.innate-ability": "Angeborene/Besondere Fertigkeit",
"innate-ability": "Angeborene/Besondere Fähigkeit", "midgard5.innate-abilities": "Angeborene/Besondere Fertigkeit",
"innate-abilities": "Angeborene und besondere Fähigkeiten",
"base-damage": "Grundschaden", "midgard5.base-damage": "Grundschaden",
"weapon": "Waffe", "midgard5.weapon": "Waffe",
"weapons": "Waffen", "midgard5.weapons": "Waffen",
"defensive-weapon": "Verteidigungswaffe", "midgard5.defensive-weapon": "Verteidigungswaffe",
"defensive-weapons": "Verteidigungswaffen", "midgard5.defensive-weapons": "Verteidigungswaffen",
"no-skill": "Keine Fertigkeit", "midgard5.no-skill": "Keine Fertigkeit",
"magic": "Magisch", "midgard5.magic": "magisch",
"valuable": "Vermögen", "midgard5.valuable": "Vermögen",
"equipped": "Ausgerüstet", "midgard5.equipped": "Ausgerüstet",
"active": "Aktiv", "midgard5.active": "Aktiv",
"rangedWeapon": "Schusswaffe", "midgard5.rangedWeapon": "Schusswaffe",
"assignItemToCharacter": "Füge Gegenstand einem Charakter hinzu, um hier etwas auswählen zu können", "midgard5.assignItemToCharacter": "Füge Gegenstand einem Charakter hinzu, um hier etwas auswählen zu können",
"showAll": "Alle anzeigen", "midgard5.showAll": "Alle anzeigen",
"showUnlearned": "Ungelernte Fertigkeiten", "midgard5.wealthAndWeight": "Vermögen und Lasten",
"wealthAndWeight": "Vermögen und Lasten", "midgard5.itemsInContainers": "Gegenstände in Aufbewahrung",
"itemsInContainers": "Gegenstände in Aufbewahrung", "midgard5.allItems": "Alle Gegenstände",
"allItems": "Alle Gegenstände",
"pw": "Prüfwurf", "midgard5.pw": "Prüfwurf",
"attack": "Angriff", "midgard5.attack": "Angriff",
"damage": "Schaden", "midgard5.damage": "Schaden",
"skill-goup-alltag": "Alltag", "midgard5.spell-process-none": "Ohne",
"skill-goup-freiland": "Freiland", "midgard5.spell-process-beherrschen": "Beherrschen",
"skill-goup-halbwelt": "Halbwelt", "midgard5.spell-process-bewegen": "Bewegen",
"skill-goup-kampf": "Kampf", "midgard5.spell-process-blutzauber": "Blutmagie",
"skill-goup-koerper": "Körper", "midgard5.spell-process-chaoswunder": "Chaoswunder",
"skill-goup-sozial": "Sozial", "midgard5.spell-process-erkennen": "Erkennen",
"skill-goup-unterwelt": "Unterwelt", "midgard5.spell-process-erschaffen": "Erschaffen",
"skill-goup-waffen": "Waffen", "midgard5.spell-process-formen": "Formen",
"skill-goup-wissen": "Wissen", "midgard5.spell-process-finstere_magie": "Finstere Magie",
"midgard5.spell-process-veraendern": "Verändern",
"midgard5.spell-process-zerstoeren": "Zerstören",
"midgard5.spell-process-wundertat": "Wundertat",
"midgard5.spell-process-dweomer": "Dweomer",
"midgard5.spell-process-wilder_Dweomer": "Wilder Dweomer",
"midgard5.spell-process-zauberlied": "Zauberlied",
"midgard5.spell-process-salz": "Salz",
"midgard5.spell-process-thaumagraphie": "Thaumagraphie",
"midgard5.spell-process-beschwoeren": "Beschwören",
"midgard5.spell-process-nekromantie": "Nekromantie",
"midgard5.spell-process-thaumatherapie": "Thaumatherapie",
"midgard5.spell-process-zaubermittel": "Zaubermittel",
"midgard5.spell-process-zauberschutz": "Zauberschutz",
"midgard5.spell-process-zauberrunen": "Zauberrunen",
"midgard5.spell-process-zaubersiegel": "Zaubersiegel",
"spell-process-none": "Ohne", "midgard5.spell-type-gedanke": "Gedanke",
"spell-process-artefakte": "Artefakte", "midgard5.spell-type-geste": "Geste",
"spell-process-beherrschen": "Beherrschen", "midgard5.spell-type-wort": "Wort",
"spell-process-bewegen": "Bewegen",
"spell-process-beschwoeren": "Beschwören",
"spell-process-blutmagie": "Blutmagie",
"spell-process-chaoswunder": "Chaoswunder",
"spell-process-dweomer": "Dweomer",
"spell-process-erkennen": "Erkennen",
"spell-process-erschaffen": "Erschaffen",
"spell-process-erhaltung": "Erhaltung",
"spell-process-formen": "Formen",
"spell-process-finstere_magie": "Finstere Magie",
"spell-process-kampfverse": "Kampfverse",
"spell-process-namensmagie": "Namensmagie",
"spell-process-nekromantie": "Nekromantie",
"spell-process-runenstaebe": "Runenstäbe",
"spell-process-thaumatherapie": "Thaumatherapie",
"spell-process-thaumagraphie": "Thaumagraphie",
"spell-process-veraendern": "Verändern",
"spell-process-vigilsignien": "Vigilsignien",
"spell-process-wundertat": "Wundertat",
"spell-process-wilder_dweomer": "Wilder Dweomer",
"spell-process-zerstoeren": "Zerstören",
"spell-process-zauberlied": "Zauberlieder",
"spell-process-zaubersalz": "Zaubersalze",
"spell-process-zaubermittel": "Zaubermittel",
"spell-process-zauberschutz": "Zauberschutz",
"spell-process-zauberrunen": "Zauberrunen",
"spell-process-zaubersiegel": "Zaubersiegel",
"spell-process-zaubertaenze": "Zaubertänze",
"spell-process-zauberblaetter": "Zauberblätter",
"spell-type-gedanke": "Gedanke", "midgard5.spell-target-umgebung": "Umgebung",
"spell-type-geste": "Geste", "midgard5.spell-target-geist": "Geist",
"spell-type-wort": "Wort", "midgard5.spell-target-koerper": "Körper",
"spell-target-umgebung": "Umgebung", "midgard5.spell-type": "Art",
"spell-target-geist": "Geist", "midgard5.spell-process": "Prozess",
"spell-target-koerper": "Körper", "midgard5.spell-castDuration": "Zauberdauer",
"midgard5.spell-range": "Reichweite",
"midgard5.spell-effectTarget": "Wirkunsziel",
"midgard5.spell-effectArea": "Wirkungsbereich",
"midgard5.spell-effectDuration": "Wirkungsdauer",
"midgard5.spell-origin": "Ursprung",
"midgard5.spell-agens": "Agens",
"midgard5.spell-reagens": "Reagens",
"midgard5.spell-material": "Zaubermaterial",
"spell-type": "Art", "midgard5.kampfkunst-type": "Kampfkunst Art",
"spell-process": "Prozess", "midgard5.kampfkunst-variante": "Kampfkunst Variante",
"spell-castDuration": "Zauberdauer", "midgard5.kampfkunst-variante-short": "Var",
"spell-castDuration-short": "Zd", "midgard5.kido-type": "Kido Art",
"spell-range": "Reichweite", "midgard5.kido-variante": "Kido Variante",
"spell-range-short": "Rw",
"spell-effectTarget": "Wirkunsziel",
"spell-effectTarget-short": "Wz",
"spell-effectArea": "Wirkungsbereich",
"spell-effectArea-short": "Wb",
"spell-effectDuration": "Wirkungsdauer",
"spell-effectDuration-short": "Wd",
"spell-origin": "Ursprung",
"spell-agens": "Agens",
"spell-reagens": "Reagens",
"spell-material": "Zaubermaterial",
"spell-rank": "Stufe",
"kampfkunst-type": "Form", "midgard5.kampfkunst-type-angriff": "Angriffstechnik",
"kampfkunst-variante": "Variante", "midgard5.kampfkunst-type-verteidigung": "Verteidigungstechnik",
"kampfkunst-variante-short": "Var", "midgard5.kampfkunst-type-finte": "Finte",
"kampfkunst-ep": "Erfahrungspunkte", "midgard5.kampfkunst-type-geist": "Geistestechnik",
"kampfkunst-rank": "Stufe der Technik", "midgard5.kampfkunst-type-schießkunst": "Schießkunst",
"kampfkunst-weapon": "Waffengruppe", "midgard5.kampfkunst-type-fechten": "Fechtkunst",
"kampfkunst-enemy": "Einschränkungen durch Art der Gegner", "midgard5.kido-type-angriff": "Kido Angriffstechnik",
"midgard5.kido-type-verteidigung": "Kido Verteidigungstechnik",
"midgard5.kido-type-finte": "Kido Finte",
"midgard5.kido-type-leib": "Kido Leibestechnik",
"kampfkunst-type-angriff": "Angriff", "midgard5.kampfkunst-variante-anstuermen": "Anstürmen",
"kampfkunst-type-verteidigung": "Verteidigung", "midgard5.kampfkunst-variante-attackieren": "Attackieren",
"kampfkunst-type-finte": "Finte", "midgard5.kampfkunst-variante-entwaffnen": "Entwaffnen",
"kampfkunst-type-geist": "Geistestechnik",
"kampfkunst-type-schießkunst": "Schießkunst",
"kampfkunst-type-fechtkunst": "Fechtkunst",
"kampfkunst-variante-anstuermen": "Anstürmen", "midgard5.kido-variante-anspringen": "Anspringen",
"kampfkunst-variante-attackieren": "Attackieren", "midgard5.kido-variante-attackieren": "Attackieren",
"kampfkunst-variante-entwaffnen": "Entwaffnen", "midgard5.kido-variante-entwaffnen": "Entwaffnen",
"kampfkunst-variante-fechten": "Fechten", "midgard5.kido-variante-werfen": "Werfen",
"kampfkunst-variante-schusstechnik": "Schusstechnik", "midgard5.kido-variante-ausweichen": "Ausweichen",
"kampfkunst-variante-finten": "Finten", "midgard5.kido-variante-blockieren": "Blockieren",
"kampfkunst-variante-geistestechnik": "Geistestechnik", "midgard5.kido-variante-bewegen": "Bewegen",
"kampfkunst-variante-verteidigung": "Verteidigung", "midgard5.kido-variante-kontrollieren": "Kontrollieren",
"kido-type": "KiDo Form", "midgard5.mod-operation-add100": "Addieren (max 100)",
"kido-variante": "KiDo Variante", "midgard5.mod-operation-roll": "Wurf Modifikation",
"kido-color": "Kampfstilfarbe", "midgard5.mod-operation-add": "Addieren",
"kido-style": "Art der Technik", "midgard5.mod-operation-set": "Basiswert",
"kido-rank": "Stufe der Technik", "midgard5.mod-operation-fixed": "Fester Wert",
"kido-grade": "Ausbildungsgrad", "midgard5.mod-operation-subtract": "Subtrahieren",
"kido-enemy": "Einschränkungen durch Art der Gegner", "midgard5.mod-operation-multiply": "Multiplizieren",
"kido-weapon": "Waffengruppe", "midgard5.mod-operation-division": "Dividieren",
"kido-type-angriff": "Kido Angriff", "midgard5.mod-stat-defenseBonus": "Abwehrbonus",
"kido-type-verteidigung": "Kido Verteidigung", "midgard5.mod-stat-attackBonus": "Angriffsbonus",
"kido-type-finte": "Kido Finte", "midgard5.mod-stat-damageBonus": "Schadensbonus",
"kido-type-leib": "Kido Leibestechnik", "midgard5.mod-stat-movement": "Bewegung",
"midgard5.mod-stat-resistanceMind": "Resistenz Geist",
"midgard5.mod-stat-resistanceBody": "Resistenz Körper",
"midgard5.mod-stat-spellCasting": "Zaubern",
"midgard5.mod-stat-brawl": "Raufen",
"midgard5.mod-stat-poisonResistance": "Gifttolleranz",
"midgard5.mod-stat-lp": "Lebenspunkte",
"midgard5.mod-stat-ap": "Ausdauerpunkte",
"midgard5.mod-stat-lpProtection": "Rüstungsschutz (LP)",
"midgard5.mod-stat-apProtection": "Rüstungsschutz (AP)",
"midgard5.mod-stat-perception": "Wahrnehmung",
"midgard5.mod-stat-drinking": "Trinken",
"kido-variante-anspringen": "Anspringen", "midgard5.mod-type": "Typ der Modifikation",
"kido-variante-attackieren": "Attackieren", "midgard5.mod-id": "Was soll modifiziert werden",
"kido-variante-entwaffnen": "Entwaffnen", "midgard5.mod-operation": "Wie soll modifiziert werden",
"kido-variante-werfen": "Werfen", "midgard5.mod-value": "Wert",
"kido-variante-ausweichen": "Ausweichen",
"kido-variante-blockieren": "Blockieren",
"kido-variante-bewegen": "Bewegen",
"kido-variante-kontrollieren": "Kontrollieren",
"kido-variante-finte": "Finte",
"mod-operation-add100": "Addieren (max 100)", "midgard5.type": "Typ",
"mod-operation-roll": "Wurf Modifikation", "midgard5.formula": "Formel",
"mod-operation-add": "Addieren", "midgard5.roll": "Wurf"
"mod-operation-set": "Basiswert",
"mod-operation-fixed": "Fester Wert",
"mod-operation-subtract": "Subtrahieren",
"mod-operation-multiply": "Multiplizieren",
"mod-operation-division": "Dividieren",
"mod-stat-defenseBonus": "Abwehrbonus",
"mod-stat-attackBonus": "Angriffsbonus",
"mod-stat-damageBonus": "Schadensbonus",
"mod-stat-movement": "Bewegung",
"mod-stat-resistanceMind": "Resistenz Geist",
"mod-stat-resistanceBody": "Resistenz Körper",
"mod-stat-spellCasting": "Zaubern",
"mod-stat-brawl": "Raufen",
"mod-stat-poisonResistance": "Gifttolleranz",
"mod-stat-lp": "Lebenspunkte",
"mod-stat-ap": "Ausdauerpunkte",
"mod-stat-lpProtection": "Rüstungsschutz (LP)",
"mod-stat-apProtection": "Rüstungsschutz (AP)",
"mod-stat-deprivationCold": "Entbehrungen Kälte",
"mod-stat-deprivationHeat": "Entbehrungen Hitze",
"mod-stat-deprivationFood": "Entbehrungen Durst/Hunger",
"mod-type": "Typ der Modifikation",
"mod-id": "Was soll modifiziert werden",
"mod-operation": "Wie soll modifiziert werden",
"mod-value": "Wert",
"type": "Typ",
"formula": "Formel",
"roll": "Wurf",
"chat": {
"luckPoint": "Glückspunkt",
"destiny": "Schicksalsgunst",
"modify": "Nachträglich",
"cancel": "Abbrechen",
"roll": "Würfeln",
"reroll": "Neuwürfeln",
"options": {
"modifier": "Wurfmodifikator",
"difficulty": "Erfolg",
"rollMode": "Würfelmodus"
}
}
}
} }
+1 -1
View File
@@ -1,6 +1,6 @@
{ {
"name": "foundry-system-midgard5", "name": "foundry-system-midgard5",
"version": "2.6.0", "version": "2.5.0",
"description": "", "description": "",
"main": "index.js", "main": "index.js",
"scripts": { "scripts": {
-5
View File
@@ -15,11 +15,6 @@ const preloadTemplates = async (): Promise<Handlebars.TemplateDelegate<any>[]> =
"sheets/character/spells.hbs", "sheets/character/spells.hbs",
"sheets/character/combat.hbs", "sheets/character/combat.hbs",
"sheets/character/effects.hbs", "sheets/character/effects.hbs",
"sheets/npc/main.hbs",
"sheets/npc/combat.hbs",
"sheets/npc/properties.hbs",
"sheets/npc/description.hbs",
"sheets/npc/attribute.hbs",
"sheets/partial/mod.hbs", "sheets/partial/mod.hbs",
"sheets/item/rolls.hbs", "sheets/item/rolls.hbs",
"chat/roll-m5.hbs", "chat/roll-m5.hbs",
View File
-114
View File
@@ -1,114 +0,0 @@
/* global Handlebars, game, TextEditor, WOD5E */
import { M5Skill } from "./module/M5Base";
import { M5Character } from "./module/actors/M5Character";
/**
* Define any helpers necessary for working with Handlebars
* @return {Promise}
*/
export const loadHelpers = async function () {
Handlebars.registerHelper("times", (n: number, block) => {
var accum = "";
for (let i = 0; i < n; ++i) accum += block.fn(i);
return accum;
});
Handlebars.registerHelper("array", (arr: any[], index: number) => {
return arr[index];
});
Handlebars.registerHelper("m5concat", (...values) => {
const options = values.pop();
const join = options.hash?.join || "";
//return new Handlebars.SafeString(values.join(join));
return values.map((val) => val.toString()).join(join);
});
Handlebars.registerHelper("add", (...values) => {
const options = values.pop();
return values.reduce((prev, cur) => prev + cur);
});
Handlebars.registerHelper("localizeMidgard", (str: string) => {
const template = Handlebars.compile("{{localize value}}");
return template({
value: "midgard5." + str,
});
});
Handlebars.registerHelper("skillBonus", (actorId: string, skill: M5Skill) => {
const actor = (game as Game).actors.get(actorId) as M5Character;
return actor.skillBonus(skill).toString();
});
Handlebars.registerHelper("skillEw", (actorId: string, skill: M5Skill) => {
const actor = (game as Game).actors.get(actorId) as M5Character;
return actor.skillEw(skill).toString();
});
Handlebars.registerHelper("skill", (skillId: string) => {
return (game as Game).items.get(skillId);
});
Handlebars.registerHelper("itemValue", (id: string, path: string) => {
let obj = (game as Game).items.get(id);
path.split(".").forEach((p) => (obj = obj[p]));
return `${obj}`;
});
Handlebars.registerHelper("actorItemValue", (actorId: any, itemId: string, path: string, token?: boolean) => {
//console.log("actorItemValue", actorId, itemId, path)
const actor = (game as Game).actors.get(actorId);
let obj = actor.items.get(itemId)?.system;
path.split(".").forEach((p) => {
if (obj) obj = obj[p];
});
return `${obj}`;
});
Handlebars.registerHelper("icon", (relpath: string) => {
return `systems/midgard5/assets/icons/${relpath}`;
});
Handlebars.registerHelper("isSkillInList", (skillName: string, list: any) => {
for (let key in list) {
if (list[key]?.label?.toLowerCase() === skillName?.toLowerCase()) {
return true;
}
}
return false;
});
Handlebars.registerHelper("skillEwInList", (skillName: string, list: any) => {
for (let key in list) {
if (list[key]?.label?.toLowerCase() === skillName?.toLowerCase()) {
return list[key].calc.ew;
}
}
return false;
});
Handlebars.registerHelper("stripHtml", function (param) {
var regex = /(<([^>]+)>)/gi;
return param.replace(regex, "");
});
Handlebars.registerHelper("contains", (label: string, contains: string) => {
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;
});
Handlebars.registerHelper("console", (object: any) => {
console.log(object);
});
};
+100 -49
View File
@@ -2,18 +2,103 @@ import Logger from "./utils/Logger";
import M5CharacterSheet from "./module/sheets/M5CharacterSheet"; import M5CharacterSheet from "./module/sheets/M5CharacterSheet";
import preloadTemplates from "./PreloadTemplates"; import preloadTemplates from "./PreloadTemplates";
import { M5Character } from "./module/actors/M5Character"; import { M5Character } from "./module/actors/M5Character";
import { M5ModOperation, M5TimeUnit } from "./module/M5Base"; import { M5ItemMod, M5ModOperation, M5Skill, M5TimeUnit } from "./module/M5Base";
import { M5ItemSheet } from "./module/sheets/M5ItemSheet"; import { M5ItemSheet } from "./module/sheets/M5ItemSheet";
import { M5Item } from "./module/items/M5Item"; import { M5Item } from "./module/items/M5Item";
import { reroll } from "./module/rolls/reroll";
import { loadHelpers } from "./helpers";
import { loadSettings } from "./settings";
Hooks.once("init", async () => { Hooks.once("init", async () => {
Logger.log("M5 | Initialisierung Midgard 5"); Logger.log("M5 | Initialisierung Midgard 5");
// Load settings into Foundry Handlebars.registerHelper("times", (n: number, block) => {
loadSettings(); var accum = "";
for (let i = 0; i < n; ++i) accum += block.fn(i);
return accum;
});
Handlebars.registerHelper("array", (arr: any[], index: number) => {
return arr[index];
});
Handlebars.registerHelper("m5concat", (...values) => {
const options = values.pop();
const join = options.hash?.join || "";
//return new Handlebars.SafeString(values.join(join));
return values.map((val) => val.toString()).join(join);
});
Handlebars.registerHelper("add", (...values) => {
const options = values.pop();
return values.reduce((prev, cur) => prev + cur);
});
Handlebars.registerHelper("localizeMidgard", (str: string) => {
const template = Handlebars.compile("{{localize value}}");
return template({
value: "midgard5." + str,
});
});
Handlebars.registerHelper("skillBonus", (actorId: string, skill: M5Skill) => {
const actor = (game as Game).actors.get(actorId) as M5Character;
return actor.skillBonus(skill).toString();
});
Handlebars.registerHelper("skillEw", (actorId: string, skill: M5Skill) => {
const actor = (game as Game).actors.get(actorId) as M5Character;
return actor.skillEw(skill).toString();
});
Handlebars.registerHelper("skill", (skillId: string) => {
return (game as Game).items.get(skillId);
});
Handlebars.registerHelper("itemValue", (id: string, path: string) => {
let obj = (game as Game).items.get(id);
path.split(".").forEach((p) => (obj = obj[p]));
return `${obj}`;
});
Handlebars.registerHelper("actorItemValue", (actorId: any, itemId: string, path: string, token?: boolean) => {
//console.log("actorItemValue", actorId, itemId, path)
const actor = (game as Game).actors.get(actorId);
let obj = actor.items.get(itemId)?.system;
path.split(".").forEach((p) => {
if (obj) obj = obj[p];
});
return `${obj}`;
});
Handlebars.registerHelper("icon", (relpath: string) => {
return `systems/midgard5/assets/icons/${relpath}`;
});
Handlebars.registerHelper("isSkillInList", (skillName: string, list: any) => {
for (let key in list) {
if (list[key]?.label?.toLowerCase() === skillName?.toLowerCase()) {
return true;
}
}
return false;
});
Handlebars.registerHelper("stripHtml", function (param) {
var regex = /(<([^>]+)>)/gi;
return param.replace(regex, "");
});
Handlebars.registerHelper("contains", (label: string, contains: string) => {
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 // Default Sheet für Items definieren und das Standardsheet deaktivieren
Items.unregisterSheet("core", ItemSheet); Items.unregisterSheet("core", ItemSheet);
@@ -27,8 +112,6 @@ Hooks.once("init", async () => {
CONFIG.Item.documentClass = M5Item; CONFIG.Item.documentClass = M5Item;
//RegisterSettings(); //RegisterSettings();
await preloadTemplates(); await preloadTemplates();
loadHelpers();
}); });
Hooks.once("setup", () => { Hooks.once("setup", () => {
@@ -80,24 +163,10 @@ Hooks.on("getChatLogEntryContext", function (html, options) {
return (game["user"].character || game["canvas"].tokens.controlled) && damageRolls > 0; return (game["user"].character || game["canvas"].tokens.controlled) && damageRolls > 0;
}, },
callback: (li) => applyDamage(li, -2), callback: (li) => applyDamage(li, -2),
},
{
name: "Redo",
icon: '<i class="far fa-arrow-rotate-left"></i>',
condition: (li) => {
const message = (game as Game).messages.get(li.attr("data-message-id"));
// All must be true to show the reroll dialogue
return (game["user"].isGM || game["user"].character?.id === (game as Game).actors.get(message["speaker"].actor)?.id) && !message["flags"].rerolled;
},
callback: (li) => reroll(li),
} }
); );
}); });
Hooks.on("createCombatant", function () {
});
Hooks.on("updateCombat", function (combat: Combat, updateData: { round: number; turn: number }, updateOptions: { advanceTime: number; direction: number }) { Hooks.on("updateCombat", function (combat: Combat, updateData: { round: number; turn: number }, updateOptions: { advanceTime: number; direction: number }) {
if (combat.round % 2 === 0 && combat.turn !== null) { if (combat.round % 2 === 0 && combat.turn !== null) {
const tokenId = combat.current.tokenId; const tokenId = combat.current.tokenId;
@@ -143,8 +212,15 @@ Hooks.on("updateCombat", function (combat: Combat, updateData: { round: number;
}); });
Hooks.on("renderCombatTracker", (combatTracker, html, context) => { Hooks.on("renderCombatTracker", (combatTracker, html, context) => {
handleRenderCombatTracker(combatTracker, html, context); if (context.combat === null) {
}); html.find("h3.encounter-title")[0].innerHTML = game["i18n"].localize("midgard5.no-encounter");
} else if (Math.ceil(context.round / 2) === 0) {
html.find("h3.encounter-title")[0].innerHTML = game["i18n"].localize("midgard5.encounter-not-started");
} else {
html.find("h3.encounter-title")[0].innerHTML =
(context.round % 2 == 1 ? game["i18n"].localize("midgard5.phase-movement") : game["i18n"].localize("midgard5.phase-action")) + " " + Math.ceil(context.round / 2);
}
});
Hooks.once("ready", () => { Hooks.once("ready", () => {
Logger.ok("Template module is now ready."); Logger.ok("Template module is now ready.");
@@ -197,28 +273,3 @@ function limitHeal(heal: number, current: number, max: number): number {
} }
return heal; return heal;
} }
function handleRenderCombatTracker(combatTracker, html, context) {
let combatPhase = -1;
if (context.combat === null) {
combatPhase = 0;
html.find("h3.encounter-title")[0].innerHTML = game["i18n"].localize("midgard5.no-encounter");
} else if (Math.ceil(context.round / 2) === 0) {
combatPhase = 1;
html.find("h3.encounter-title")[0].innerHTML = game["i18n"].localize("midgard5.encounter-not-started");
} else if (context.round % 2 == 1) {
combatPhase = 2;
html.find("h3.encounter-title")[0].innerHTML = game["i18n"].localize("midgard5.phase-movement");
} else {
combatPhase = 3;
html.find("h3.encounter-title")[0].innerHTML = game["i18n"].localize("midgard5.phase-action") + " " + Math.ceil(context.round / 2);
}
console.log("Combat Phase: ", combatPhase);
context.combat?.setFlag('world', 'combatPhase', combatPhase);
for (const key in context.combat?.combatants.contents) {
let actorId = context.combat?.combatants.contents[key].actorId;
let actor = (game as Game).actors.get(actorId);
actor.render();
}
}
+16 -19
View File
@@ -28,9 +28,8 @@ export interface M5Attribute {
export interface M5RollData { export interface M5RollData {
c: any; c: any;
i: any; i: any;
b: any;
iType: string; iType: string;
rolls: any; rolls: {};
res: { res: {
label: string; label: string;
}; };
@@ -104,9 +103,17 @@ export enum M5Stats {
AP = "ap", AP = "ap",
PROTECTION_LP = "lpProtection", PROTECTION_LP = "lpProtection",
PROTECTION_AP = "apProtection", PROTECTION_AP = "apProtection",
DEPRIVATION_COLD = "deprivationCold", PERCEPTION = "perception",
DEPRIVATION_HEAT = "deprivationHeat", DRINKING = "drinking",
DEPRIVATION_FOOD = "deprivationFood", HOARD = "hoard",
HOARD_NEXT = "hoardNext",
HOARD_MIN = "hoardMin",
WEALTH = "wealth",
LOAD = "load",
HEAVY_LOAD = "heavyLoad",
LOAD_MAX = "loadMax",
THRUST_LOAD = "thrustLoad",
ENCUMBRANCE = "encumbrance",
} }
export enum M5ModType { export enum M5ModType {
@@ -162,16 +169,6 @@ export interface M5AttributeCalculated extends M5ModResult {
export interface M5CharacterCalculatedData { export interface M5CharacterCalculatedData {
level: number; level: number;
initiative: number;
unableToAct: {
effectId: string;
enabled: boolean;
rounds: number;
reason: string;
};
group: string;
combatPhase: number;
movement: number;
attributes: { attributes: {
st: M5AttributeCalculated; st: M5AttributeCalculated;
gs: M5AttributeCalculated; gs: M5AttributeCalculated;
@@ -183,7 +180,6 @@ export interface M5CharacterCalculatedData {
pa: M5AttributeCalculated; pa: M5AttributeCalculated;
wk: M5AttributeCalculated; wk: M5AttributeCalculated;
}; };
stats: { stats: {
lp: M5ModResult; lp: M5ModResult;
ap: M5ModResult; ap: M5ModResult;
@@ -201,9 +197,10 @@ export interface M5CharacterCalculatedData {
brawlFw: number; brawlFw: number;
poisonResistance: M5ModResult; poisonResistance: M5ModResult;
enduranceBonus: number; enduranceBonus: number;
deprivationCold: M5ModResult; perception: M5ModResult;
deprivationHeat: M5ModResult; perceptionFW: number;
deprivationFood: M5ModResult; drinking: M5ModResult;
drinkingFW: number;
hoard: number; hoard: number;
hoardNext: number; hoardNext: number;
hoardMin: number; hoardMin: number;
+87 -109
View File
@@ -1,6 +1,18 @@
import { log } from "console";
import { M5Item } from "../items/M5Item"; import { M5Item } from "../items/M5Item";
import { M5Attribute, M5CharacterCalculatedData, M5ItemMod, M5ItemType, M5ModOperation, M5ModResult, M5RollData, M5Skill, M5SkillCalculated } from "../M5Base"; import {
M5Attribute,
M5CharacterCalculatedData,
M5ItemMod,
M5ItemType,
M5ModOperation,
M5ModResult,
M5ModType,
M5RollData,
M5Skill,
M5SkillCalculated,
M5SkillLearned,
M5SkillType,
} from "../M5Base";
import M5ModAggregate from "./M5ModAggregate"; import M5ModAggregate from "./M5ModAggregate";
export class M5Character extends Actor { export class M5Character extends Actor {
// constructor( // constructor(
@@ -82,12 +94,10 @@ export class M5Character extends Actor {
containers?: boolean; containers?: boolean;
kampfkuenste?: boolean; kampfkuenste?: boolean;
encumbrance?: boolean; encumbrance?: boolean;
class?: boolean;
} = {} } = {}
): M5CharacterCalculatedData { ): M5CharacterCalculatedData {
let ret: M5CharacterCalculatedData = { let ret: M5CharacterCalculatedData = {
level: 0, level: 0,
initiative: 0,
attributes: { attributes: {
st: { value: 0, bonus: 0, mods: [] }, st: { value: 0, bonus: 0, mods: [] },
gs: { value: 0, bonus: 0, mods: [] }, gs: { value: 0, bonus: 0, mods: [] },
@@ -116,9 +126,10 @@ export class M5Character extends Actor {
brawlFw: 0, brawlFw: 0,
poisonResistance: { value: 0, mods: [] }, poisonResistance: { value: 0, mods: [] },
enduranceBonus: 0, enduranceBonus: 0,
deprivationCold: { value: 0, mods: [] }, perception: { value: 0, mods: [] },
deprivationHeat: { value: 0, mods: [] }, perceptionFW: 0,
deprivationFood: { value: 0, mods: [] }, drinking: { value: 0, mods: [] },
drinkingFW: 0,
hoard: 0, hoard: 0,
encumbrance: 0, encumbrance: 0,
load: 0, load: 0,
@@ -153,10 +164,6 @@ export class M5Character extends Actor {
if (!data) return null; if (!data) return null;
ret.level = M5Character.levelFromExp(data.info.race === "Zwerg" ? Math.min(data.calc.stats?.hoard * 2 || 0, data.es) : data.es); ret.level = M5Character.levelFromExp(data.info.race === "Zwerg" ? Math.min(data.calc.stats?.hoard * 2 || 0, data.es) : data.es);
ret.initiative = M5Character.initiativeFromAnfuehren(data.calc.skills?.general, (game as Game).i18n.localize("midgard5.anfuehren"), data.skills.general.anfuehren.fw);
ret.unableToAct = M5Character.unableToActFromEffect(data.calc.gear?.effects);
ret.group = M5Character.groupFromDisposition(this);
ret.combatPhase = M5Character.combatPhaseFromEncounter(this);
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);
@@ -187,16 +194,21 @@ export class M5Character extends Actor {
ret.stats.attackBonus = this.modResult(ret.attributes.gs.bonus); ret.stats.attackBonus = this.modResult(ret.attributes.gs.bonus);
ret.stats.defenseBonus = this.modResult(ret.attributes.gw.bonus); ret.stats.defenseBonus = this.modResult(ret.attributes.gw.bonus);
ret.stats.movement = this.modResult(data.movement); ret.stats.movement = this.modResult(data.movement);
ret.stats.resistanceMind = this.modResult(ret.stats.defense.value + (data.info.race === "Mensch" ? ret.attributes.in.bonus : this.raceBonus(data.info.race))); ret.stats.resistanceMind = this.modResult(
ret.stats.resistanceBody = this.modResult(ret.stats.defense.value + (data.info.race === "Mensch" ? ret.attributes.ko.bonus : this.raceBonus(data.info.race))); (data.info.magicUsing ? 2 : 0) + ret.stats.defense.value + (data.info.race === "Mensch" ? ret.attributes.in.bonus : this.raceBonus(data.info.race))
);
ret.stats.resistanceBody = this.modResult(
(data.info.magicUsing ? 2 : 1) + ret.stats.defense.value + (data.info.race === "Mensch" ? ret.attributes.ko.bonus : this.raceBonus(data.info.race))
);
ret.stats.spellCasting = this.modResult((data.info.magicUsing ? M5Character.spellCastingFromLevel(ret.level) : 3) + ret.attributes.zt.bonus); ret.stats.spellCasting = this.modResult((data.info.magicUsing ? M5Character.spellCastingFromLevel(ret.level) : 3) + ret.attributes.zt.bonus);
ret.stats.brawl = this.modResult(Math.floor((ret.attributes.st.value + ret.attributes.gw.value) / 20)); ret.stats.brawl = this.modResult(Math.floor((ret.attributes.st.value + ret.attributes.gw.value) / 20));
ret.stats.brawlFw = ret.stats.brawl.value + ret.stats.attackBonus.value + (data.info.race === "Zwerg" ? 1 : 0); ret.stats.brawlFw = ret.stats.brawl.value + ret.stats.attackBonus.value + (data.info.race === "Zwerg" ? 1 : 0);
ret.stats.poisonResistance = this.modResult(30 + Math.floor(ret.attributes.ko.value / 2)); ret.stats.poisonResistance = this.modResult(30 + Math.floor(ret.attributes.ko.value / 2));
ret.stats.enduranceBonus = Math.floor(ret.attributes.ko.value / 10) + Math.floor(ret.attributes.st.value / 20); ret.stats.enduranceBonus = Math.floor(ret.attributes.ko.value / 10) + Math.floor(ret.attributes.st.value / 20);
ret.stats.deprivationCold = this.modResult(Math.floor(ret.attributes.ko.value / 2)); ret.stats.perception = this.modResult(0);
ret.stats.deprivationHeat = this.modResult(Math.floor(ret.attributes.ko.value / 2)); ret.stats.perceptionFW = 6;
ret.stats.deprivationFood = this.modResult(Math.floor(40 + ret.attributes.ko.value / 2)); 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.hoardMin = M5Character.levelThreshold.at(ret.level - 1) / 2;
ret.stats.hoardNext = M5Character.levelThreshold.at(ret.level) / 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.wealth = parseFloat((data.info.gold + data.info.silver / 10 + data.info.copper / 100).toPrecision(3));
@@ -211,10 +223,7 @@ export class M5Character extends Actor {
const aggregate = new M5ModAggregate(data, ret); const aggregate = new M5ModAggregate(data, ret);
context.items context.items
?.filter( ?.filter((item) => (item.type === "item" || item.type === "effect" || item.type === "armor" || item.type === "container") && item.system.equipped)
(item) =>
(item.type === "item" || item.type === "skill" || item.type === "effect" || item.type === "armor" || item.type === "container" || item.type === "class") && item.system.equipped
)
.forEach((item) => { .forEach((item) => {
const mods = item.system.mods; const mods = item.system.mods;
//console.log("Actor item mods", mods) //console.log("Actor item mods", mods)
@@ -257,7 +266,6 @@ export class M5Character extends Actor {
calc: item.system.calc, calc: item.system.calc,
equipped: item.system?.equipped, equipped: item.system?.equipped,
weight: item.system.weight || 0, weight: item.system.weight || 0,
capacity: item.system.capacity || 0,
value: item.system.value || 0, value: item.system.value || 0,
currency: item.system.currency || "", currency: item.system.currency || "",
quantity: item.system.quantity || 0, quantity: item.system.quantity || 0,
@@ -286,7 +294,6 @@ export class M5Character extends Actor {
if (!!item.system.containerId) { if (!!item.system.containerId) {
ret.gear.containers[item.system.containerId].weight += parseFloat((item.system.weight * item.system.quantity).toPrecision(4)); ret.gear.containers[item.system.containerId].weight += parseFloat((item.system.weight * item.system.quantity).toPrecision(4));
ret.gear.containers[item.system.containerId].value += parseFloat(this.calculateValue(item.system.value * item.system.quantity, item.system.currency).toPrecision(3));
if (ret.gear.containers[item.system.containerId].equipped) { if (ret.gear.containers[item.system.containerId].equipped) {
ret.stats.encumbrance += item.system.weight * item.system.quantity; ret.stats.encumbrance += item.system.weight * item.system.quantity;
} }
@@ -309,7 +316,6 @@ export class M5Character extends Actor {
label: label, label: label,
icon: icon, icon: icon,
magic: item.system.magic, magic: item.system.magic,
abw: item.system.abw || 0,
calc: item.system.calc, calc: item.system.calc,
equipped: item.system?.equipped, equipped: item.system?.equipped,
valuable: item.system?.valuable, valuable: item.system?.valuable,
@@ -357,10 +363,8 @@ export class M5Character extends Actor {
ret.gear.weapons[item.id] = { ret.gear.weapons[item.id] = {
label: label, label: label,
icon: item.img,
skillId: item.system.skillId, skillId: item.system.skillId,
magic: item.system.magic, magic: item.system.magic,
abw: item.system.abw || 0,
valuable: item.system?.valuable, valuable: item.system?.valuable,
hoarded: item.system?.hoarded, hoarded: item.system?.hoarded,
value: item.system.value || 0, value: item.system.value || 0,
@@ -401,10 +405,8 @@ export class M5Character extends Actor {
ret.gear.defensiveWeapons[item.id] = { ret.gear.defensiveWeapons[item.id] = {
label: label, label: label,
icon: item.img,
skillId: item.system.skillId, skillId: item.system.skillId,
magic: item.system.magic, magic: item.system.magic,
abw: item.system.abw || 0,
valuable: item.system?.valuable, valuable: item.system?.valuable,
hoarded: item.system?.hoarded, hoarded: item.system?.hoarded,
value: item.system.value || 0, value: item.system.value || 0,
@@ -446,9 +448,7 @@ export class M5Character extends Actor {
ret.gear.armor[item.id] = { ret.gear.armor[item.id] = {
label: label, label: label,
icon: item.img,
magic: item.system.magic, magic: item.system.magic,
abw: item.system.abw || 0,
valuable: item.system?.valuable, valuable: item.system?.valuable,
hoarded: item.system?.hoarded, hoarded: item.system?.hoarded,
value: item.system.value || 0, value: item.system.value || 0,
@@ -460,26 +460,56 @@ export class M5Character extends Actor {
containerId: item.system.containerId || "", containerId: item.system.containerId || "",
}; };
}); });
}
if (!skip?.class) { // if (!skip?.encumbrance) {
context.items // const item = context.items.filter((x) => x.name === "Belastung");
?.filter((item) => item.type === "class") // if (ret.stats.encumbrance > ret.stats.heavyLoad) {
.sort((a, b) => b?.system.magicUsing - a?.system.magicUsing) // if (item.length === 0) {
.forEach((item, index) => { // this.createEffect("Belastung", [{ id: "movement", operation: M5ModOperation.DIVISION, type: M5ModType.STAT, value: 2 }]);
if (index !== 0) { // } else if (item.length === 1) {
item.system.equipped = false; // item[0].update({
} else { // data: {
item.system.equipped = true; // equipped: true,
data.info.magicUsing = item.system.magicUsing; // },
data.lernKostenZauber = item.system.lernKostenZauber; // });
} // } else if (item.length === 2) {
// item[1]?.delete();
// }
// } else if (ret.stats.encumbrance <= ret.stats.heavyLoad) {
// if (item.length === 1) {
// item[0]?.update({
// data: {
// equipped: false,
// },
// });
// }
// }
// }
if (typeof data.info.class === "string") { // if (!skip?.encumbrance) {
data.info.class = {}; // const item = context.items.filter((x) => x.name === "Höchstlast");
} // if (ret.stats.encumbrance > ret.stats.loadMax) {
data.info.class[item.id] = item.name; // if (item.length === 0) {
}); // this.createEffect("Höchstlast", [{ id: "ap", operation: M5ModOperation.SUBTRACT, type: M5ModType.STAT, value: 1 }]);
// } else if (item.length === 1) {
// item[0].update({
// data: {
// equipped: true,
// },
// });
// } else if (item.length === 2) {
// item[1]?.delete();
// }
// } else if (ret.stats.encumbrance <= ret.stats.loadMax) {
// if (item.length === 1) {
// item[0]?.update({
// data: {
// equipped: false,
// },
// });
// }
// }
// }
} }
if (!skip?.effects) { if (!skip?.effects) {
@@ -496,11 +526,9 @@ export class M5Character extends Actor {
ret.gear.effects[item.id] = { ret.gear.effects[item.id] = {
label: label, label: label,
icon: item.img,
magic: item.system.magic, magic: item.system.magic,
calc: item.system.calc, calc: item.system.calc,
equipped: item.system?.equipped || false, equipped: item.system?.equipped || false,
unablesToAct: item.system?.unablesToAct || false,
duration: item.system?.duration || { time: 0, unit: "" }, duration: item.system?.duration || { time: 0, unit: "" },
}; };
}); });
@@ -515,12 +543,21 @@ export class M5Character extends Actor {
const skillMap = ret.skills[item.system.type]; const skillMap = ret.skills[item.system.type];
skillMap[item.id] = { skillMap[item.id] = {
label: item.name, label: item.name,
icon: item.img,
fw: item.system.fw, fw: item.system.fw,
attribute: item.system.attribute, attribute: item.system.attribute,
pp: item.system.pp, pp: item.system.pp,
calc: item.system.calc, calc: item.system.calc,
} as M5SkillCalculated; } as M5SkillCalculated;
// Adjust attribute Aussehen based on Athletik skill
if (item.name === "Athletik") {
ret.attributes.au.value += Math.floor(item.system.fw / 3);
}
// Adjust stat Bewegungsweite based on Laufen skill
if (item.name === "Laufen") {
ret.stats.movement.value += Math.floor(item.system.fw / 3);
}
}); });
} }
@@ -533,17 +570,8 @@ export class M5Character extends Actor {
ret.spells[item.id] = { ret.spells[item.id] = {
label: item.name, label: item.name,
icon: item.img,
process: "midgard5.spell-process-" + item.system.process, process: "midgard5.spell-process-" + item.system.process,
calc: item.system.calc, calc: item.system.calc,
type: item.system.type,
castDuration: item.system.castDuration || 0,
ap: item.system.ap || 0,
range: item.system.range || 0,
effectTarget: item.system.effectTarget,
effectArea: item.system.effectArea,
effectDuration: item.system.effectDuration || 0,
equipped: item.system?.equipped || false,
}; };
}); });
} }
@@ -557,7 +585,6 @@ export class M5Character extends Actor {
ret.kampfkuenste[item.id] = { ret.kampfkuenste[item.id] = {
label: item.name, label: item.name,
icon: item.img,
isKido: item.system.isKido, isKido: item.system.isKido,
type: item.system.type, type: item.system.type,
variante: item.system.variante, variante: item.system.variante,
@@ -611,55 +638,6 @@ export class M5Character extends Actor {
return ret === -1 ? M5Character.levelThreshold.length : ret; return ret === -1 ? M5Character.levelThreshold.length : ret;
} }
static initiativeFromAnfuehren(list: object, anfuehren: string, unlearned: number): number {
for (const element in list) {
if (list[element].label.toLowerCase() === anfuehren.toLowerCase()) {
return list[element].calc.ew;
}
}
return unlearned;
}
static unableToActFromEffect(list: object): { effectId: string; enabled: boolean; rounds: number; reason: string } {
console.log("Effects:", list);
for (const element in list) {
if (list[element].unablesToAct) {
return {
effectId: list[element],
enabled: list[element].equipped,
rounds: list[element].duration.time,
reason: list[element].label,
};
}
}
return { effectId: "", enabled: false, rounds: 0, reason: "" };
}
static groupFromDisposition(actor: any): string {
// console.log("Group:", actor);
let disposition:number = 0;
if (actor.isToken) {
disposition = actor.token.disposition;
} else {
disposition = actor.prototypeToken.disposition;
}
switch ( disposition ) {
case 1: return "Spieler";
case -1: return "Gegner";
case 0: return "Gegner 2";
case 2: return "Gegner 3";
default: return "Unbekannt";
}
}
static combatPhaseFromEncounter(actor: any): any {
if (actor.inCombat) {
let combatPhase = (game as Game).combat.getFlag('world', 'combatPhase');
return combatPhase ? combatPhase : -1;
}
return -1;
}
static readonly defenseThreshold: Array<[number, number]> = [ static readonly defenseThreshold: Array<[number, number]> = [
[30, 18], [30, 18],
[25, 17], [25, 17],
+2 -3
View File
@@ -41,9 +41,8 @@ export default class M5ModAggregate {
this.push({ type: M5ModType.STAT, id: M5Stats.AP, operation: M5ModOperation.SET, value: calc.stats.ap.value }, characterString); this.push({ type: M5ModType.STAT, id: M5Stats.AP, operation: M5ModOperation.SET, value: calc.stats.ap.value }, characterString);
this.push({ type: M5ModType.STAT, id: M5Stats.PROTECTION_LP, operation: M5ModOperation.SET, value: calc.stats.lpProtection.value }, characterString); this.push({ type: M5ModType.STAT, id: M5Stats.PROTECTION_LP, operation: M5ModOperation.SET, value: calc.stats.lpProtection.value }, characterString);
this.push({ type: M5ModType.STAT, id: M5Stats.PROTECTION_AP, operation: M5ModOperation.SET, value: calc.stats.apProtection.value }, characterString); this.push({ type: M5ModType.STAT, id: M5Stats.PROTECTION_AP, operation: M5ModOperation.SET, value: calc.stats.apProtection.value }, characterString);
this.push({ type: M5ModType.STAT, id: M5Stats.DEPRIVATION_COLD, operation: M5ModOperation.SET, value: calc.stats.deprivationCold.value }, characterString); this.push({ type: M5ModType.STAT, id: M5Stats.PERCEPTION, operation: M5ModOperation.SET, value: calc.stats.perception.value }, characterString);
this.push({ type: M5ModType.STAT, id: M5Stats.DEPRIVATION_HEAT, operation: M5ModOperation.SET, value: calc.stats.deprivationHeat.value }, characterString); this.push({ type: M5ModType.STAT, id: M5Stats.DRINKING, operation: M5ModOperation.SET, value: calc.stats.drinking.value }, characterString);
this.push({ type: M5ModType.STAT, id: M5Stats.DEPRIVATION_FOOD, operation: M5ModOperation.SET, value: calc.stats.deprivationFood.value }, characterString);
} }
push(mod: M5ItemMod, source: string) { push(mod: M5ItemMod, source: string) {
+13 -48
View File
@@ -13,13 +13,12 @@ export class M5Item extends Item {
const character = actor as M5Character; const character = actor as M5Character;
const itemData = (this as any).system; const itemData = (this as any).system;
const calc = itemData.calc; const calc = itemData.calc;
const name = (this as any).name;
if (itemType === "item") { if (itemType === "item") {
calc.containers = null; calc.containers = null;
if (actor) { if (actor) {
const actorCalc = actor.derivedData({ containers: false, items: true, spells: true, effects: true, kampfkuenste: true, encumbrance: true, class: true }); const actorCalc = actor.derivedData({ containers: false, items: true, spells: true, effects: true, kampfkuenste: true, encumbrance: true });
if (actorCalc) { if (actorCalc) {
calc.containers = actorCalc.gear.containers; calc.containers = actorCalc.gear.containers;
} }
@@ -46,39 +45,14 @@ export class M5Item extends Item {
}, },
]; ];
// Adjust attribute Aussehen based on Athletik skill
if (name === "Athletik") {
itemData.mods[0] = { type: "attribute", id: "au", operation: "add100", value: Math.floor(calc.fw / 3) };
}
// Adjust stat Bewegungsweite based on Laufen skill
if (name === "Laufen") {
itemData.mods[0] = { type: "stat", id: "movement", operation: "add", value: Math.floor(calc.fw / 3) };
}
// Adjust stat Kälte based on Überleben (Gebirge) skill
if (name === "Überleben (Gebirge)") {
itemData.mods[0] = { type: "stat", id: "deprivationCold", operation: "add", value: Math.floor(calc.fw * 5) };
}
// // Adjust stat Kälte based on Überleben (Steppe) skill
if (name === "Überleben (Steppe)") {
itemData.mods[0] = { type: "stat", id: "deprivationHeat", operation: "add", value: Math.floor(calc.fw * 5) };
}
// // Adjust stat Durst & Hunger based on Robustheit skill
if (name === "Robustheit") {
itemData.mods[0] = { type: "stat", id: "deprivationFood", operation: "add", value: Math.floor(calc.fw * 5) };
}
if (character) { if (character) {
const actorCalc = character.derivedData({ const actorCalc = character.derivedData({
containers: true,
skills: true, skills: true,
items: true, items: true,
spells: true, spells: true,
effects: true, effects: true,
kampfkuenste: true, kampfkuenste: true,
encumbrance: true, encumbrance: true,
class: true,
}); });
if (actorCalc?.skillMods && Object.keys(actorCalc.skillMods).indexOf(itemId) !== -1) { if (actorCalc?.skillMods && Object.keys(actorCalc.skillMods).indexOf(itemId) !== -1) {
pairs = pairs.concat(actorCalc.skillMods[itemId]); pairs = pairs.concat(actorCalc.skillMods[itemId]);
@@ -115,7 +89,7 @@ export class M5Item extends Item {
calc.containers = null; calc.containers = null;
if (actor) { if (actor) {
const actorCalc = character.derivedData({ items: true, spells: true, effects: true, kampfkuenste: true, encumbrance: true, class: true }); const actorCalc = character.derivedData({ items: true, spells: true, effects: true, kampfkuenste: true, encumbrance: true });
if (actorCalc) { if (actorCalc) {
calc.ew += actorCalc.stats.attackBonus.value; calc.ew += actorCalc.stats.attackBonus.value;
calc.combatSkills = actorCalc.skills.combat; calc.combatSkills = actorCalc.skills.combat;
@@ -150,7 +124,7 @@ export class M5Item extends Item {
calc.containers = null; calc.containers = null;
if (actor) { if (actor) {
const actorCalc = character.derivedData({ items: true, spells: true, effects: true, kampfkuenste: true, encumbrance: true, class: true }); const actorCalc = character.derivedData({ items: true, spells: true, effects: true, kampfkuenste: true, encumbrance: true });
if (actorCalc) { if (actorCalc) {
calc.ew += actorCalc.stats.defense.value + actorCalc.stats.defenseBonus.value; calc.ew += actorCalc.stats.defense.value + actorCalc.stats.defenseBonus.value;
calc.combatSkills = actorCalc.skills.combat; calc.combatSkills = actorCalc.skills.combat;
@@ -183,7 +157,7 @@ export class M5Item extends Item {
itemData.mods[5] = { type: "stat", id: "apProtection", operation: "set", value: itemData.apProtection }; itemData.mods[5] = { type: "stat", id: "apProtection", operation: "set", value: itemData.apProtection };
calc.containers = null; calc.containers = null;
if (actor) { if (actor) {
const actorCalc = actor.derivedData({ items: true, spells: true, effects: true, kampfkuenste: true, encumbrance: true, class: true }); const actorCalc = actor.derivedData({ items: true, spells: true, effects: true, kampfkuenste: true, encumbrance: true });
if (actorCalc) { if (actorCalc) {
calc.containers = actorCalc.gear.containers; calc.containers = actorCalc.gear.containers;
} }
@@ -197,7 +171,7 @@ export class M5Item extends Item {
} else if (itemType === "spell") { } else if (itemType === "spell") {
calc.fw = 0; calc.fw = 0;
if (actor) { if (actor) {
const actorCalc = character.derivedData({ containers: true, items: true, spells: true, effects: true, kampfkuenste: true, encumbrance: true, class: true }); const actorCalc = character.derivedData({ items: true, spells: true, effects: true, kampfkuenste: true, encumbrance: true });
if (actorCalc) { if (actorCalc) {
calc.ew = actorCalc.stats.spellCasting.value; calc.ew = actorCalc.stats.spellCasting.value;
} }
@@ -209,7 +183,7 @@ export class M5Item extends Item {
calc.generalSkills = null; calc.generalSkills = null;
if (actor) { if (actor) {
const actorCalc = character.derivedData({ containers: true, items: true, spells: true, effects: true, kampfkuenste: true, encumbrance: true, class: true }); const actorCalc = character.derivedData({ items: true, spells: true, effects: true, kampfkuenste: true, encumbrance: true });
if (actorCalc) { if (actorCalc) {
calc.generalSkills = actorCalc.skills.general; calc.generalSkills = actorCalc.skills.general;
} }
@@ -223,9 +197,6 @@ export class M5Item extends Item {
itemData.rolls.formulas[0].label = skill.name; itemData.rolls.formulas[0].label = skill.name;
} }
} }
} else if (itemType === "class") {
itemData.mods[0] = { type: "stat", id: "resistanceBody", operation: "add", value: itemData.resistanceBody };
itemData.mods[1] = { type: "stat", id: "resistanceMind", operation: "add", value: itemData.resistanceMind };
} }
if (itemData?.mods) { if (itemData?.mods) {
calc.mods = {}; calc.mods = {};
@@ -314,7 +285,7 @@ export class M5Item extends Item {
return ret; return ret;
} }
async roll(toggleAutomatedRoll = false) { async roll() {
const item = this as any; const item = this as any;
// Initialize chat data. // Initialize chat data.
@@ -341,20 +312,14 @@ export class M5Item extends Item {
} }
}); });
const roll = new M5Roll(rollData, this.actor, item.name, item.id); if (item.type === "spell" || item.type === "kampfkunst") {
if (await roll.toMessage(toggleAutomatedRoll)) { if (this.actor["system"].ap.value >= item.system.ap) {
if (item.type === "spell" || item.type === "kampfkunst") { this.actor["system"].ap.value -= item.system.ap;
if (this.actor["system"].ap.value >= item.system.ap) {
this.actor["update"]({
data: {
ap: {
value: this.actor["system"].ap.value - item.system.ap,
},
},
});
}
} }
} }
const roll = new M5Roll(rollData, this.actor, item.name);
return roll.toMessage();
} else { } else {
ChatMessage.create({ ChatMessage.create({
speaker: speaker, speaker: speaker,
+16 -150
View File
@@ -11,7 +11,7 @@ export class M5Roll {
public _total: number = 0; public _total: number = 0;
public pool: PoolTerm = null; public pool: PoolTerm = null;
constructor(public data: M5RollData, public actor: any, public label: string, public id?: string) { constructor(public data: M5RollData, public actor: any, public label: string) {
//super(null) //super(null)
//this.data = rollData //this.data = rollData
} }
@@ -26,10 +26,10 @@ export class M5Roll {
.map((rollName, index) => { .map((rollName, index) => {
indexMap.set(index, rollName); indexMap.set(index, rollName);
const formula = this.data.rolls[rollName]; const formula = this.data.rolls[rollName];
formula.formula = index === 0 && this.id !== "-1" ? formula.formula.replace(/(\d*d\d*)/, `{$1 + ${this.data.b.modifier}}`) : formula.formula;
const roll = new Roll(formula.formula, this.data); const roll = new Roll(formula.formula, this.data);
return roll; return roll;
}); });
this.pool = PoolTerm.fromRolls(rolls); this.pool = PoolTerm.fromRolls(rolls);
console.log("evaluate", this._evaluated, this.pool); console.log("evaluate", this._evaluated, this.pool);
return this.pool.evaluate({ async: true }).then((results) => { return this.pool.evaluate({ async: true }).then((results) => {
@@ -66,7 +66,7 @@ export class M5Roll {
const parseResult = M5Roll.parseDiceSides(rollResult.formula); const parseResult = M5Roll.parseDiceSides(rollResult.formula);
//console.log("evaluate roll", parseResult) //console.log("evaluate roll", parseResult)
if (parseResult?.sides === 20) { if (parseResult?.sides === 20) {
if (roll.total < this.data.b.difficulty) { if (roll.total < 20) {
if (rowRes === M5EwResult.TBD || rowRes === M5EwResult.HIGH) rowRes = M5EwResult.FAIL; if (rowRes === M5EwResult.TBD || rowRes === M5EwResult.HIGH) rowRes = M5EwResult.FAIL;
} else { } else {
if (rowRes === M5EwResult.TBD) rowRes = M5EwResult.PASS; if (rowRes === M5EwResult.TBD) rowRes = M5EwResult.PASS;
@@ -88,50 +88,6 @@ export class M5Roll {
}); });
this.data.res.label = this.label; this.data.res.label = this.label;
if ((game as Game).settings.get("midgard5", "automatedPP") && this.data.iType !== null) {
if ((this.data.i.type === "language" || this.data.i.type === "general") && this.data.rolls[0].dice[0] >= 16) {
this.actor.items.get(this.id).update({
system: {
pp: this.data.i.pp + 1,
},
});
} else if (this.data.rolls[0].dice[0] === 20) {
if (this.data.i.type === "combat") {
// Rolling through skill
this.actor.items.get(this.id).update({
system: {
pp: this.data.i.pp + 1,
},
});
} else if (this.data.iType === "weapon") {
// Rolling through Weapon Item
const skill = this.actor.items.get(this.data.i.skillId);
skill.update({
system: {
pp: skill.system.pp + 1,
},
});
} else if (this.data.iType === "defensiveWeapon") {
// Rolling through defensiveWeapon Item
const skill = this.actor.items.get(this.data.i.skillId);
skill.update({
system: {
pp: skill.system.pp + 1,
},
});
} else if (this.data.iType === "spell") {
// Rolling through Spell Item
const klasse = this.actor.items.find((x) => x.type === "class" && x.system.equipped);
klasse.update({
system: {
lernKostenZauber: {
[this.data.i.process]: { pp: klasse.system.lernKostenZauber[this.data.i.process].pp + 1 },
},
},
});
}
}
}
this._evaluated = true; this._evaluated = true;
return this; return this;
@@ -142,25 +98,10 @@ export class M5Roll {
return renderTemplate(M5Roll.TEMPLATE_PATH, this.data); return renderTemplate(M5Roll.TEMPLATE_PATH, this.data);
} }
async toMessage(toggleAutomatedRoll = false) { async toMessage() {
let automatedRoll = (game as Game).settings.get("midgard5", "automatedRoll");
automatedRoll = toggleAutomatedRoll ? !automatedRoll : automatedRoll;
const rMode = (game as Game).settings.get("core", "rollMode");
if (!automatedRoll) {
let checkOptions = await this.popUp({ isPW: this.data.rolls[0].label === (game as Game).i18n.localize("midgard5.pw") });
if (checkOptions["cancelled"]) {
return;
} else {
const rMode = checkOptions["rollMode"];
this.data.b = checkOptions;
}
} else {
this.data.b = { difficulty: 20, modifier: 0 };
}
if (!this._evaluated) await this.evaluate(); if (!this._evaluated) await this.evaluate();
const faces = this.pool.dice.map((x) => x.faces);
const rMode = (game as Game).settings.get("core", "rollMode");
const chatData = { const chatData = {
type: CONST.CHAT_MESSAGE_TYPES.ROLL, type: CONST.CHAT_MESSAGE_TYPES.ROLL,
@@ -168,11 +109,10 @@ export class M5Roll {
speaker: ChatMessage.getSpeaker({ actor: this.actor }), speaker: ChatMessage.getSpeaker({ actor: this.actor }),
sound: CONFIG.sounds.dice, sound: CONFIG.sounds.dice,
roll: Roll.fromTerms([this.pool]), roll: Roll.fromTerms([this.pool]),
flags: { data: this.data, rerolled: false, faces: faces },
}; };
let foo = ChatMessage.applyRollMode(chatData, rMode); ChatMessage.applyRollMode(chatData, rMode);
return ChatMessage.implementation["create"](foo, { rollMode: rMode }); return ChatMessage.create(chatData);
} }
static fromAttributeValue(actor: any, attributeKey: string, attributeValue: number) { static fromAttributeValue(actor: any, attributeKey: string, attributeValue: number) {
@@ -255,13 +195,13 @@ export class M5Roll {
return new M5Roll(rollData, actor, (game as Game).i18n.localize("midgard5.brawl")); return new M5Roll(rollData, actor, (game as Game).i18n.localize("midgard5.brawl"));
} }
static deprivationCold(actor: any) { static perception(actor: any) {
const rollData = actor.getRollData() as M5RollData; const rollData = actor.getRollData() as M5RollData;
rollData.rolls["0"] = { rollData.rolls["0"] = {
formula: "@c.calc.stats.deprivationCold.value -1D100", formula: "1d20 + @c.calc.stats.perception.value + @c.calc.stats.perceptionFW",
enabled: true, enabled: true,
label: (game as Game).i18n.localize("midgard5.deprivationCold"), label: (game as Game).i18n.localize("midgard5.perception"),
result: "", result: "",
total: 0, total: 0,
totalStr: "", totalStr: "",
@@ -269,16 +209,16 @@ export class M5Roll {
css: "", css: "",
} as M5RollResult; } as M5RollResult;
return new M5Roll(rollData, actor, (game as Game).i18n.localize("midgard5.deprivationCold")); return new M5Roll(rollData, actor, (game as Game).i18n.localize("midgard5.perception"));
} }
static deprivationHeat(actor: any) { static drinking(actor: any) {
const rollData = actor.getRollData() as M5RollData; const rollData = actor.getRollData() as M5RollData;
rollData.rolls["0"] = { rollData.rolls["0"] = {
formula: "@c.calc.stats.deprivationHeat.value -1D100", formula: "1d20 + @c.calc.stats.drinking.value + @c.calc.stats.drinkingFW",
enabled: true, enabled: true,
label: (game as Game).i18n.localize("midgard5.deprivationHeat"), label: (game as Game).i18n.localize("midgard5.drinking"),
result: "", result: "",
total: 0, total: 0,
totalStr: "", totalStr: "",
@@ -286,41 +226,7 @@ export class M5Roll {
css: "", css: "",
} as M5RollResult; } as M5RollResult;
return new M5Roll(rollData, actor, (game as Game).i18n.localize("midgard5.deprivationHeat")); return new M5Roll(rollData, actor, (game as Game).i18n.localize("midgard5.drinking"));
}
static deprivationFood(actor: any) {
const rollData = actor.getRollData() as M5RollData;
rollData.rolls["0"] = {
formula: "@c.calc.stats.deprivationFood.value -1D100",
enabled: true,
label: (game as Game).i18n.localize("midgard5.deprivationFood"),
result: "",
total: 0,
totalStr: "",
dice: {},
css: "",
} as M5RollResult;
return new M5Roll(rollData, actor, (game as Game).i18n.localize("midgard5.deprivationFood"));
}
static cleanSpell(actor: any) {
const rollData = actor.getRollData() as M5RollData;
rollData.rolls["0"] = {
formula: "1d20 + @c.calc.stats.spellCasting.value",
enabled: true,
label: (game as Game).i18n.localize("midgard5.spellCasting"),
result: "",
total: 0,
totalStr: "",
dice: {},
css: "",
} as M5RollResult;
return new M5Roll(rollData, actor, (game as Game).i18n.localize("midgard5.spellCasting"));
} }
static defense(actor: any) { static defense(actor: any) {
@@ -407,46 +313,6 @@ export class M5Roll {
return null; return null;
} }
async popUp({
useFortune = false,
difficulty = 20,
modifier = 0,
rollModes = CONFIG.Dice.rollModes,
rollMode = "",
template = "systems/midgard5/templates/chat/task-check-dialog.hbs",
isPW = false,
} = {}) {
const html = await renderTemplate(template, { useFortune, difficulty, modifier, rollModes, rollMode, isPW });
return new Promise((resolve) => {
const data = {
title: (game as Game).i18n.localize("midgard5.chat.roll"),
content: html,
buttons: {
roll: {
label: (game as Game).i18n.localize("midgard5.chat.roll"),
callback: (html) => resolve(this._processTaskCheckOptions(html[0].querySelector("form"))),
},
cancel: {
label: (game as Game).i18n.localize("midgard5.chat.cancel"),
callback: (html) => resolve({ cancelled: true }),
},
},
default: "roll",
close: () => resolve({ cancelled: true }),
};
new Dialog(data, null).render(true);
});
}
_processTaskCheckOptions(form) {
return {
difficulty: parseInt(form.difficulty?.value),
modifier: parseInt(form.modifier?.value),
rollMode: form.rollMode?.value,
};
}
} }
interface FormulaParseResult { interface FormulaParseResult {
-108
View File
@@ -1,108 +0,0 @@
import { M5RollData, M5RollResult } from "../M5Base";
import { M5Roll } from "./M5Roll";
export const reroll = async (roll) => {
const message = (game as Game).messages.get(roll.attr("data-message-id"));
const actor = (game as Game).actors.get(message["speaker"].actor);
const template = "systems/midgard5/templates/chat/reroll-dialog.hbs";
const html = await renderTemplate(template, { sg: actor.system.sg, gp: actor.system.gp });
// Button defining
let buttons = {};
buttons = {
destiny: {
icon: '<i class="fas fa-rotate-left"></i>',
label: (game as Game).i18n.localize("midgard5.chat.destiny"),
callback: () => rerollDie("destiny", "sg"),
},
luckPoints: {
icon: '<i class="fas fa-rotate-left"></i>',
label: (game as Game).i18n.localize("midgard5.chat.luckPoint"),
callback: () => rerollDie("luckPoint", "gp"),
},
modify: {
icon: '<i class="fas fa-plus"></i>',
label: (game as Game).i18n.localize("midgard5.chat.modify") + " +" + (message["flags"].faces[0] === 100 ? 10 : 2),
callback: () => rerollDie("modify", "gp"),
},
cancel: {
icon: '<i class="fas fa-times"></i>',
label: (game as Game).i18n.localize("midgard5.chat.cancel"),
},
};
// Dialog object
new Dialog(
{
title: (game as Game).i18n.localize("midgard5.chat.reroll"),
content: html,
buttons,
render: function () {},
default: "luckPoints",
},
{
classes: ["midgard5"],
}
).render(true);
async function rerollDie(type, target) {
// Update the "content" field
let rollData = actor.getRollData() as M5RollData;
const flagData = message["flags"].data;
rollData.c = flagData.c;
rollData.i = flagData.i;
rollData.b = flagData.b;
rollData.iType = flagData.iType;
rollData.res.label = flagData.res.label + " (" + (game as Game).i18n.localize(`midgard5.chat.${type}`) + ")";
actor.update({
system: {
[target]: actor.system[target] - 1,
},
});
if (type !== "modify") {
for (var key in flagData.rolls) {
if (!!flagData.rolls[key]) {
rollData.rolls[key] = {
formula: flagData.rolls[key]?.formula,
enabled: flagData.rolls[key]?.enabled,
label: flagData.rolls[key]?.label,
result: "",
total: 0,
totalStr: "",
dice: {},
css: "",
} as M5RollResult;
}
}
} else {
for (var key in flagData.rolls) {
if (!!flagData.rolls[key]) {
rollData.rolls[key] = {
formula: key === "0" ? flagData.rolls[key]?.result + " + " + (message["flags"].faces[0] === 100 ? 10 : 2) : flagData.rolls[key]?.result,
enabled: flagData.rolls[key]?.enabled,
label: flagData.rolls[key]?.label,
result: "",
total: 0,
totalStr: "",
dice: {},
css: "",
} as M5RollResult;
}
}
}
const newRoll = new M5Roll(rollData, actor, rollData.res.label, "-1");
if (!newRoll._evaluated) await newRoll.evaluate();
const chatData = {
type: CONST.CHAT_MESSAGE_TYPES.ROLL,
content: await newRoll.render(),
speaker: ChatMessage.getSpeaker({ actor: actor }),
sound: CONFIG.sounds.dice,
roll: Roll.fromTerms([newRoll.pool]),
flags: { rerolled: true },
};
message.update(chatData);
}
};
+19 -98
View File
@@ -7,6 +7,7 @@ import { M5Roll } from "../rolls/M5Roll";
export default class M5CharacterSheet extends ActorSheet { export default class M5CharacterSheet extends ActorSheet {
static get defaultOptions() { static get defaultOptions() {
return mergeObject(super.defaultOptions, { return mergeObject(super.defaultOptions, {
template: "systems/midgard5/templates/sheets/character/main.hbs",
width: 1000, width: 1000,
height: 800, height: 800,
classes: ["midgard5", "sheet", "character"], classes: ["midgard5", "sheet", "character"],
@@ -20,15 +21,7 @@ export default class M5CharacterSheet extends ActorSheet {
}); });
} }
get template() { // get template() {
//console.log("M5CharacterSheet", this.actor.data.type)
if (this.actor.type === "npc") {
return "systems/midgard5/templates/sheets/npc/main.hbs";
}
else {
return "systems/midgard5/templates/sheets/character/main.hbs";
}
}
// return "systems/midgard5/templates/character_sheet/main.hbs" // return "systems/midgard5/templates/character_sheet/main.hbs"
// }Options extends ActorSheet.Options = ActorSheet.Options, Data extends object = ActorSheet.Data<Options> // }Options extends ActorSheet.Options = ActorSheet.Options, Data extends object = ActorSheet.Data<Options>
@@ -84,9 +77,9 @@ export default class M5CharacterSheet extends ActorSheet {
let target = event.target.closest("[data-attribute]") as HTMLElement; let target = event.target.closest("[data-attribute]") as HTMLElement;
let attributeValue = target ? parseInt(target.dataset.value) : null; let attributeValue = target ? parseInt(target.dataset.value) : null;
let attributeStr = target ? target.dataset.attribute : null; let attributeStr = target ? target.dataset.attribute : null;
const roll = M5Roll.fromAttributeValue(this.actor, attributeStr, attributeValue); const roll = M5Roll.fromAttributeValue(this.actor, attributeStr, attributeValue);
let toggleAutomatedRoll = (event.shiftKey) await roll.toMessage();
await roll.toMessage(toggleAutomatedRoll);
}); });
html.find(".edit-item").on("click", async (event) => { html.find(".edit-item").on("click", async (event) => {
@@ -146,8 +139,7 @@ export default class M5CharacterSheet extends ActorSheet {
}); });
} }
let toggleAutomatedRoll = (event.shiftKey) await item.roll();
await item.roll(toggleAutomatedRoll);
this.render(); this.render();
}); });
@@ -167,8 +159,7 @@ export default class M5CharacterSheet extends ActorSheet {
const actor = this.actor as any; const actor = this.actor as any;
const item = actor.items.get(skillId) as M5Item; const item = actor.items.get(skillId) as M5Item;
let toggleAutomatedRoll = (event.shiftKey) await item.roll();
await item.roll(toggleAutomatedRoll);
}); });
html.find(".roll-general-button").on("click", async (event) => { html.find(".roll-general-button").on("click", async (event) => {
@@ -179,8 +170,7 @@ export default class M5CharacterSheet extends ActorSheet {
const unlearnedSkill = data.skills.general[skillName] as M5SkillUnlearned; const unlearnedSkill = data.skills.general[skillName] as M5SkillUnlearned;
const roll = M5Roll.fromUnlearnedSkill(this.actor, unlearnedSkill, skillName); const roll = M5Roll.fromUnlearnedSkill(this.actor, unlearnedSkill, skillName);
let toggleAutomatedRoll = (event.shiftKey) await roll.toMessage();
await roll.toMessage(toggleAutomatedRoll);
}); });
html.find(".learn-button").on("click", async (event) => { html.find(".learn-button").on("click", async (event) => {
@@ -204,36 +194,6 @@ export default class M5CharacterSheet extends ActorSheet {
}); });
}); });
html.find(".pp-increase").on("click", async (event) => {
let target = event.target.closest("[data-pp-name]") as HTMLElement;
let ppName = target ? target.dataset.ppName : null;
const context = this.actor as any;
const item = context.items.find((x) => x.type === "class" && x.system.equipped);
item.update({
system: {
lernKostenZauber: {
[ppName]: { pp: context.system.lernKostenZauber[ppName].pp + 1 },
},
},
});
this.render();
});
html.find(".pp-decrease").on("click", async (event) => {
let target = event.target.closest("[data-pp-name]") as HTMLElement;
let ppName = target ? target.dataset.ppName : null;
const context = this.actor as any;
const item = context.items.find((x) => x.type === "class" && x.system.equipped);
item.update({
system: {
lernKostenZauber: {
[ppName]: { pp: context.system.lernKostenZauber[ppName].pp - 1 },
},
},
});
this.render();
});
html.find(".fw-increase").on("click", async (event) => { html.find(".fw-increase").on("click", async (event) => {
let target = event.target.closest("[data-item-id]") as HTMLElement; let target = event.target.closest("[data-item-id]") as HTMLElement;
let itemId = target ? target.dataset.itemId : null; let itemId = target ? target.dataset.itemId : null;
@@ -278,57 +238,38 @@ export default class M5CharacterSheet extends ActorSheet {
const context = this.actor as any; const context = this.actor as any;
const item = context.items.get(itemId) as M5Item; const item = context.items.get(itemId) as M5Item;
let toggleAutomatedRoll = (event.shiftKey) await item.roll();
await item.roll(toggleAutomatedRoll);
this.render(); this.render();
}); });
html.find(".roll-brawl-button").on("click", async (event) => { html.find(".roll-brawl-button").on("click", async (event) => {
const roll = M5Roll.brawl(this.actor); const roll = M5Roll.brawl(this.actor);
let toggleAutomatedRoll = (event.shiftKey) await roll.toMessage();
await roll.toMessage(toggleAutomatedRoll);
}); });
html.find(".roll-cleanSpell-button").on("click", async (event) => { html.find(".roll-perception-button").on("click", async (event) => {
const roll = M5Roll.cleanSpell(this.actor); const roll = M5Roll.perception(this.actor);
let toggleAutomatedRoll = (event.shiftKey) await roll.toMessage();
await roll.toMessage(toggleAutomatedRoll);
}); });
html.find(".roll-deprivationCold-button").on("click", async (event) => { html.find(".roll-drinking-button").on("click", async (event) => {
const roll = M5Roll.deprivationCold(this.actor); const roll = M5Roll.drinking(this.actor);
let toggleAutomatedRoll = (event.shiftKey) await roll.toMessage();
await roll.toMessage(toggleAutomatedRoll);
});
html.find(".roll-deprivationHeat-button").on("click", async (event) => {
const roll = M5Roll.deprivationHeat(this.actor);
let toggleAutomatedRoll = (event.shiftKey)
await roll.toMessage(toggleAutomatedRoll);
});
html.find(".roll-deprivationFood-button").on("click", async (event) => {
const roll = M5Roll.deprivationFood(this.actor);
let toggleAutomatedRoll = (event.shiftKey)
await roll.toMessage(toggleAutomatedRoll);
}); });
html.find(".roll-defense-button").on("click", async (event) => { html.find(".roll-defense-button").on("click", async (event) => {
const roll = M5Roll.defense(this.actor); const roll = M5Roll.defense(this.actor);
let toggleAutomatedRoll = (event.shiftKey) await roll.toMessage();
await roll.toMessage(toggleAutomatedRoll);
}); });
html.find(".roll-resistanceMind-button").on("click", async (event) => { html.find(".roll-resistanceMind-button").on("click", async (event) => {
const roll = M5Roll.resistanceMind(this.actor); const roll = M5Roll.resistanceMind(this.actor);
let toggleAutomatedRoll = (event.shiftKey) await roll.toMessage();
await roll.toMessage(toggleAutomatedRoll);
}); });
html.find(".roll-resistanceBody-button").on("click", async (event) => { html.find(".roll-resistanceBody-button").on("click", async (event) => {
const roll = M5Roll.resistanceBody(this.actor); const roll = M5Roll.resistanceBody(this.actor);
let toggleAutomatedRoll = (event.shiftKey) await roll.toMessage();
await roll.toMessage(toggleAutomatedRoll);
}); });
html.find(".change-equipped").on("click", async (event) => { html.find(".change-equipped").on("click", async (event) => {
@@ -492,14 +433,6 @@ export default class M5CharacterSheet extends ActorSheet {
} }
}); });
html.find(".class-item-edit").on("click", async (event) => {
this.actor.items.find((x) => x.type === "class").sheet.render(true);
});
html.find(".class-item-delete").on("click", async (event) => {
this.actor.items.find((x) => x.type === "class").delete();
});
// Drag & Drop // Drag & Drop
const dragDrop = new DragDrop({ const dragDrop = new DragDrop({
dragSelector: ".items-list .item", dragSelector: ".items-list .item",
@@ -546,11 +479,7 @@ export default class M5CharacterSheet extends ActorSheet {
let data = null; let data = null;
try { try {
data = JSON.parse(event.dataTransfer.getData("text/plain")); data = JSON.parse(event.dataTransfer.getData("text/plain"));
console.log("Data", data.data); data.data.system.containerId = ""; //Clean containerId
let target = event.target.closest("[data-container-id]") as HTMLElement;
let containerId = target ? target.dataset.containerId : "";
console.log("Container ID", containerId);
data.data.system.containerId = containerId; //Update containerId
if (data.type !== "Transfer") return false; if (data.type !== "Transfer") return false;
} catch (err) { } catch (err) {
return false; return false;
@@ -559,14 +488,6 @@ export default class M5CharacterSheet extends ActorSheet {
if (!data.data) return false; if (!data.data) return false;
if (data.actorId === this.actor.id) { if (data.actorId === this.actor.id) {
let itemId=data.data._id;
const context = this.actor as any;
const item = context.items.get(itemId);
item.update({
data: {
containerId: data.data.system.containerId,
},
});
return this._onSortItem(event, data.data); return this._onSortItem(event, data.data);
} }
-7
View File
@@ -7,13 +7,6 @@ export class M5ItemSheet extends ItemSheet {
width: 640, width: 640,
height: 480, height: 480,
classes: ["midgard5", "sheet", "item"], classes: ["midgard5", "sheet", "item"],
tabs: [
{
navSelector: ".sheet-navigation",
contentSelector: ".sheet-content",
initial: "base_values",
},
],
}); });
} }
-25
View File
@@ -1,25 +0,0 @@
/* global game */
/**
* Define all game settings here
* @return {Promise}
*/
export const loadSettings = async function () {
(game as Game).settings.register("midgard5", "automatedPP", {
name: "Automatische Praxispunkte",
hint: "Falls aktiv, werden Praxispunkte automatisch angerechnet.",
scope: "world",
config: true,
default: true,
type: Boolean,
});
(game as Game).settings.register("midgard5", "automatedRoll", {
name: "Automatische Würfelwürfe",
hint: "Falls aktiv, wird bei Würfelwürfen kein Dialog gezeigt. Das Verhalten kann mit gleichzeitig gedrückter Shift Taste umgekehrt werden.",
scope: "world",
config: true,
default: false,
type: Boolean,
});
};
+8 -42
View File
@@ -5,7 +5,6 @@
.midgard5 { .midgard5 {
.flexbox { .flexbox {
display: flex; display: flex;
align-items: stretch;
flex-direction: row; flex-direction: row;
flex-wrap: wrap; flex-wrap: wrap;
} }
@@ -18,31 +17,26 @@
.flexcolumn-1 { .flexcolumn-1 {
flex-basis: 100%; flex-basis: 100%;
flex-wrap: wrap; flex-wrap: wrap;
flex-direction: column;
} }
.flexcolumn-2 { .flexcolumn-2 {
flex-basis: 50%; flex-basis: 50%;
flex-wrap: wrap; flex-wrap: wrap;
flex-direction: column;
} }
.flexcolumn-3 { .flexcolumn-3 {
flex-basis: 33%; flex-basis: 33%;
flex-wrap: wrap; flex-wrap: wrap;
flex-direction: column;
} }
.flexcolumn-4 { .flexcolumn-4 {
flex-basis: 25%; flex-basis: 25%;
flex-wrap: wrap; flex-wrap: wrap;
flex-direction: column;
} }
.flexcolumn-5 { .flexcolumn-5 {
flex-basis: 20%; flex-basis: 20%;
flex-wrap: wrap; flex-wrap: wrap;
flex-direction: column;
} }
.flexpart { .flexpart {
@@ -69,7 +63,7 @@
} }
.flexrow { .flexrow {
flex-direction: row; align-items: center;
} }
h3 { h3 {
@@ -85,9 +79,13 @@
border-radius: 10px; border-radius: 10px;
} }
.fixed-value { .profile-img {
width: 3rem; display: block;
text-align: center; margin-left: auto;
margin-right: auto;
height: 100%;
width: auto;
border: 0px solid black;
} }
.profile-img { .profile-img {
@@ -376,36 +374,4 @@
} }
} }
} }
.chip {
display: inline-block;
padding: 0 25px;
height: 35px;
font-size: 16px;
line-height: 35px;
border-radius: 25px;
background-color: #f1f1f1;
}
.closebtn {
padding-left: 10px;
color: #888;
font-weight: bold;
float: right;
font-size: 20px;
cursor: pointer;
}
.closebtn:hover {
color: #000;
}
.pp-listing {
margin: 0 2rem;
flex: 1 0 16%;
display: flex;
flex-direction: row;
justify-content: space-between;
align-items: baseline;
}
} }
+1 -2
View File
@@ -18,8 +18,7 @@
width: 64px; width: 64px;
} }
td, td, th {
th {
padding: 0 0.5rem 0 0.5rem; padding: 0 0.5rem 0 0.5rem;
&.center { &.center {
-23
View File
@@ -1,23 +0,0 @@
// main: midgard5.less
@borderGroove: 2px groove #eeede0;
@attributeBorderColor: rgba(0, 0, 0, 0.5);
.midgard5 {
.sheet-npc {
.attribute-header {
align-items: center;
text-align: center;
font-weight: bold;
border: 0px solid transparent;
}
.attribute-value {
align-items: center;
text-align: center;
border: 0px solid transparent;
}
.fixed-value {
width: 3rem;
text-align: center;
}
}
}
+4 -8
View File
@@ -3,17 +3,13 @@
"name": "midgard5", "name": "midgard5",
"title": "Midgard 5. Edition", "title": "Midgard 5. Edition",
"description": "The German RPG Midgard 5. Edition", "description": "The German RPG Midgard 5. Edition",
"version": "2.6.0", "version": "2.5.0",
"compatibility": { "compatibility": {
"minimum": "10", "minimum": "10",
"verified": "11", "verified": "11",
"maximum": "11" "maximum": "11"
}, },
"authors": [ "authors": [{ "name": "Byroks" }, { "name": "Le-Frique" }, { "name": "Oskaloq" }],
{"name": "Byroks"},
{"name": "Le-Frique"},
{"name": "Oskaloq"}
],
"scripts": ["bundle.js"], "scripts": ["bundle.js"],
"styles": ["bundle.css"], "styles": ["bundle.css"],
"languages": [ "languages": [
@@ -28,8 +24,8 @@
"primaryTokenAttribute": "lp", "primaryTokenAttribute": "lp",
"secondaryTokenAttribute": "ap", "secondaryTokenAttribute": "ap",
"url": "https://git.byroks.de/MidgardVTT-Entwicklung/foundry-vtt-system-midgard5", "url": "https://git.byroks.de/MidgardVTT-Entwicklung/foundry-vtt-system-midgard5",
"manifest": "https://git.byroks.de/MidgardVTT-Entwicklung/foundry-vtt-system-midgard5/releases/download/latest/system.json?token=2455375115b92bc8d87c93df7159eec232456f2d", "manifest": "https://git.byroks.de/MidgardVTT-Entwicklung/foundry-vtt-system-midgard5/releases/download/v2.5.0/system.json",
"download": "https://git.byroks.de/MidgardVTT-Entwicklung/foundry-vtt-system-midgard5/releases/download/latest/midgard5.zip?token=2455375115b92bc8d87c93df7159eec232456f2d", "download": "https://git.byroks.de/MidgardVTT-Entwicklung/foundry-vtt-system-midgard5/releases/download/v2.5.0/midgard5-v2.5.0.zip",
"initiative": "@c.calc.attributes.gw.value", "initiative": "@c.calc.attributes.gw.value",
"license": "LICENSE.txt" "license": "LICENSE.txt"
} }
+31 -228
View File
@@ -1,18 +1,15 @@
{ {
"Actor": { "Actor": {
"types": [ "types": ["character"],
"character",
"npc"
],
"templates": { "templates": {
"characterDescription": { "characterDescription": {
"info": { "info": {
"description": "", "description": "",
"background": "", "background": "",
"class": {}, "class": "",
"npc-class": "",
"race": "", "race": "",
"magicUsing": false, "magicUsing": false,
"showAllItems": false,
"gender": "", "gender": "",
"weight": "", "weight": "",
"height": "", "height": "",
@@ -22,17 +19,11 @@
"occupation": "", "occupation": "",
"origin": "", "origin": "",
"faith": "", "faith": "",
"level": 1,
"leader": false,
"gold": 0, "gold": 0,
"silver": 0, "silver": 0,
"copper": 0 "copper": 0
} }
}, },
"settings": {
"showAllItems": false,
"showUnlearned": false
},
"characterBars": { "characterBars": {
"lp": { "lp": {
"value": 15, "value": 15,
@@ -53,8 +44,6 @@
"gp": 0 "gp": 0
}, },
"attributes": { "attributes": {
"level": 1,
"movement": 24,
"attributes": { "attributes": {
"st": { "value": 50, "bonus": 0 }, "st": { "value": 50, "bonus": 0 },
"gs": { "value": 50, "bonus": 0 }, "gs": { "value": 50, "bonus": 0 },
@@ -64,8 +53,7 @@
"zt": { "value": 50, "bonus": 0 }, "zt": { "value": 50, "bonus": 0 },
"au": { "value": 50, "bonus": 0 }, "au": { "value": 50, "bonus": 0 },
"pa": { "value": 50, "bonus": 0 }, "pa": { "value": 50, "bonus": 0 },
"wk": { "value": 50, "bonus": 0 }, "wk": { "value": 50, "bonus": 0 }
"git": { "value": 50, "bonus": 0 }
} }
}, },
"skills": { "skills": {
@@ -113,11 +101,7 @@
"meditieren": { "fw": 0, "attribute": "wk", "initial": 8, "pp": 0 }, "meditieren": { "fw": 0, "attribute": "wk", "initial": 8, "pp": 0 },
"menschenkenntnis": { "fw": 3, "attribute": "in", "initial": 8, "pp": 0 }, "menschenkenntnis": { "fw": 3, "attribute": "in", "initial": 8, "pp": 0 },
"meucheln": { "fw": 0, "attribute": "gs", "initial": 8, "pp": 0 }, "meucheln": { "fw": 0, "attribute": "gs", "initial": 8, "pp": 0 },
"musizierenFloete": { "fw": 0, "attribute": "gs", "initial": 12, "pp": 0 }, "musizieren": { "fw": 0, "attribute": "gs", "initial": 12, "pp": 0 },
"musizierenBlas": { "fw": 0, "attribute": "gs", "initial": 12, "pp": 0 },
"musizierenRythmus": { "fw": 0, "attribute": "gs", "initial": 12, "pp": 0 },
"musizierenStreich": { "fw": 0, "attribute": "gs", "initial": 12, "pp": 0 },
"musizierenZupf": { "fw": 0, "attribute": "gs", "initial": 12, "pp": 0 },
"ninjutsu": { "fw": 0, "attribute": "gw", "initial": 8, "pp": 0 }, "ninjutsu": { "fw": 0, "attribute": "gw", "initial": 8, "pp": 0 },
"naturkunde": { "fw": 0, "attribute": "in", "initial": 8, "pp": 0 }, "naturkunde": { "fw": 0, "attribute": "in", "initial": 8, "pp": 0 },
"orakelkunst": { "fw": 0, "attribute": "in", "initial": 8, "pp": 0 }, "orakelkunst": { "fw": 0, "attribute": "in", "initial": 8, "pp": 0 },
@@ -147,9 +131,7 @@
"tauchen": { "fw": 6, "attribute": "ko", "initial": 8, "pp": 0 }, "tauchen": { "fw": 6, "attribute": "ko", "initial": 8, "pp": 0 },
"tanzen": { "fw": 6, "attribute": "ko", "initial": 8, "pp": 0 }, "tanzen": { "fw": 6, "attribute": "ko", "initial": 8, "pp": 0 },
"tierkunde": { "fw": 0, "attribute": "in", "initial": 8, "pp": 0 }, "tierkunde": { "fw": 0, "attribute": "in", "initial": 8, "pp": 0 },
"ueberlebenWald": { "fw": 6, "attribute": "in", "initial": 8, "pp": 0 }, "ueberleben": { "fw": 6, "attribute": "in", "initial": 8, "pp": 0 },
"ueberlebenSteppe": { "fw": 6, "attribute": "in", "initial": 8, "pp": 0 },
"ueberlebenGebirge": { "fw": 6, "attribute": "in", "initial": 8, "pp": 0 },
"verfuehren": { "fw": 3, "attribute": "pa", "initial": 8, "pp": 0 }, "verfuehren": { "fw": 3, "attribute": "pa", "initial": 8, "pp": 0 },
"verhoeren": { "fw": 3, "attribute": "pa", "initial": 8, "pp": 0 }, "verhoeren": { "fw": 3, "attribute": "pa", "initial": 8, "pp": 0 },
"verstellen": { "fw": 3, "attribute": "pa", "initial": 8, "pp": 0 }, "verstellen": { "fw": 3, "attribute": "pa", "initial": 8, "pp": 0 },
@@ -162,20 +144,17 @@
} }
}, },
"gear": { "gear": {
"gear": {} "gear": {
}
} }
}, },
"character": { "character": {
"templates": ["characterBars", "settings", "attributes", "characterDescription", "characterHeader", "skills", "gear"], "templates": ["characterBars", "attributes", "characterDescription", "characterHeader", "skills", "gear"],
"calc": {}
},
"npc": {
"templates": ["characterBars", "settings", "attributes", "characterDescription", "skills", "gear"],
"calc": {} "calc": {}
} }
}, },
"Item": { "Item": {
"types": ["skill", "weapon", "defensiveWeapon", "armor", "spell", "kampfkunst", "item", "effect", "container", "class"], "types": ["skill", "weapon", "defensiveWeapon", "armor", "spell", "kampfkunst", "item", "effect", "container"],
"templates": { "templates": {
"itemDescription": { "itemDescription": {
"description": "" "description": ""
@@ -238,10 +217,8 @@
"physical": { "physical": {
"value": 0, "value": 0,
"weight": 0, "weight": 0,
"capacity": 0,
"containerId": "", "containerId": "",
"magic": false, "magic": false
"abw": 0
}, },
"durationSelection": { "durationSelection": {
"durationSelection": { "durationSelection": {
@@ -254,36 +231,29 @@
"spellSelection": { "spellSelection": {
"spellProcessSelection": { "spellProcessSelection": {
"none": "midgard5.spell-process-none", "none": "midgard5.spell-process-none",
"artefakte": "midgard5.spell-process-artefakte",
"beherrschen": "midgard5.spell-process-beherrschen", "beherrschen": "midgard5.spell-process-beherrschen",
"bewegen": "midgard5.spell-process-bewegen", "bewegen": "midgard5.spell-process-bewegen",
"beschwoeren": "midgard5.spell-process-beschwoeren", "blutzauber": "midgard5.spell-process-blutzauber",
"blutmagie": "midgard5.spell-process-blutmagie",
"chaoswunder": "midgard5.spell-process-chaoswunder", "chaoswunder": "midgard5.spell-process-chaoswunder",
"dweomer": "midgard5.spell-process-dweomer",
"erhaltung": "midgard5.spell-process-erhaltung",
"erkennen": "midgard5.spell-process-erkennen", "erkennen": "midgard5.spell-process-erkennen",
"erschaffen": "midgard5.spell-process-erschaffen", "erschaffen": "midgard5.spell-process-erschaffen",
"formen": "midgard5.spell-process-formen", "formen": "midgard5.spell-process-formen",
"finstere_magie": "midgard5.spell-process-finstere_magie", "finstere_magie": "midgard5.spell-process-finstere_magie",
"kampfverse": "midgard5.spell-process-kampfverse",
"namensmagie": "midgard5.spell-process-namensmagie",
"nekromantie": "midgard5.spell-process-nekromantie",
"runenstaebe": "midgard5.spell-process-zauberrunen",
"thaumatherapie": "midgard5.spell-process-runenstaebe",
"veraendern": "midgard5.spell-process-veraendern", "veraendern": "midgard5.spell-process-veraendern",
"vigilsignien": "midgard5.spell-process-vigilsignien", "zerstoeren": "midgard5.spell-process-zerstoeren",
"wilder_dweomer": "midgard5.spell-process-wilder_dweomer",
"wundertat": "midgard5.spell-process-wundertat", "wundertat": "midgard5.spell-process-wundertat",
"zauberblaetter": "midgard5.spell-process-zauberblaetter", "dweomer": "midgard5.spell-process-dweomer",
"wilder_dweomer": "midgard5.spell-process-wilder_dweomer",
"zauberlied": "midgard5.spell-process-zauberlied", "zauberlied": "midgard5.spell-process-zauberlied",
"salz": "midgard5.spell-process-salz",
"thaumagraphie": "midgard5.spell-process-thaumagraphie",
"beschwoeren": "midgard5.spell-process-beschwoeren",
"nekromantie": "midgard5.spell-process-nekromantie",
"thaumatherapie": "midgard5.spell-process-thaumatherapie",
"zaubermittel": "midgard5.spell-process-zaubermittel", "zaubermittel": "midgard5.spell-process-zaubermittel",
"zauberrunen": "midgard5.spell-process-zauberrunen",
"zaubersalz": "midgard5.spell-process-zaubersalz",
"zauberschutz": "midgard5.spell-process-zauberschutz", "zauberschutz": "midgard5.spell-process-zauberschutz",
"zaubersiegel": "midgard5.spell-process-zaubersiegel", "zauberrunen": "midgard5.spell-process-zauberrunen",
"zaubertaenze": "midgard5.spell-process-zaubertaenze", "zaubersiegel": "midgard5.spell-process-siegel"
"zerstoeren": "midgard5.spell-process-zerstoeren"
}, },
"spellTypeSelection": { "spellTypeSelection": {
"gedanke": "midgard5.spell-type-gedanke", "gedanke": "midgard5.spell-type-gedanke",
@@ -294,8 +264,7 @@
"umgebung": "midgard5.spell-target-umgebung", "umgebung": "midgard5.spell-target-umgebung",
"geist": "midgard5.spell-target-geist", "geist": "midgard5.spell-target-geist",
"koerper": "midgard5.spell-target-koerper" "koerper": "midgard5.spell-target-koerper"
}, }
"spellSpecialization": "none"
}, },
"kampfkunstSelection": { "kampfkunstSelection": {
"kampfkunstTypeSelection": { "kampfkunstTypeSelection": {
@@ -304,7 +273,7 @@
"finte": "midgard5.kampfkunst-type-finte", "finte": "midgard5.kampfkunst-type-finte",
"geist": "midgard5.kampfkunst-type-geist", "geist": "midgard5.kampfkunst-type-geist",
"schießkunst": "midgard5.kampfkunst-type-schießkunst", "schießkunst": "midgard5.kampfkunst-type-schießkunst",
"fechtkunst": "midgard5.kampfkunst-type-fechtkunst" "fechten": "midgard5.kampfkunst-type-fechten"
}, },
"kidoTypeSelection": { "kidoTypeSelection": {
"angriff": "midgard5.kido-type-angriff", "angriff": "midgard5.kido-type-angriff",
@@ -315,12 +284,7 @@
"kampfkunstVarianteSelection": { "kampfkunstVarianteSelection": {
"anstuermen": "midgard5.kampfkunst-variante-anstuermen", "anstuermen": "midgard5.kampfkunst-variante-anstuermen",
"attackieren": "midgard5.kampfkunst-variante-attackieren", "attackieren": "midgard5.kampfkunst-variante-attackieren",
"entwaffnen": "midgard5.kampfkunst-variante-entwaffnen", "entwaffnen": "midgard5.kampfkunst-variante-entwaffnen"
"fechten": "midgard5.kampfkunst-variante-fechten",
"schusstechnik": "midgard5.kampfkunst-variante-schusstechnik",
"finten": "midgard5.kampfkunst-variante-finten",
"geistestechnik": "midgard5.kampfkunst-variante-geistestechnik",
"verteidigung": "midgard5.kampfkunst-variante-verteidigung"
}, },
"kidoVarianteSelection": { "kidoVarianteSelection": {
"none": "midgard5.spell-process-none", "none": "midgard5.spell-process-none",
@@ -331,8 +295,7 @@
"ausweichen": "midgard5.kido-variante-ausweichen", "ausweichen": "midgard5.kido-variante-ausweichen",
"blockieren": "midgard5.kido-variante-blockieren", "blockieren": "midgard5.kido-variante-blockieren",
"bewegen": "midgard5.kido-variante-bewegen", "bewegen": "midgard5.kido-variante-bewegen",
"kontrollieren": "midgard5.kido-variante-kontrollieren", "kontrollieren": "midgard5.kido-variante-kontrollieren"
"finte": "midgard5.kido-variante-finte"
} }
} }
}, },
@@ -340,7 +303,6 @@
"templates": ["itemDescription", "attributeSelection"], "templates": ["itemDescription", "attributeSelection"],
"fw": 0, "fw": 0,
"attribute": "st", "attribute": "st",
"equipped": true,
"skill": "", "skill": "",
"type": "general", "type": "general",
"rolls": { "rolls": {
@@ -354,11 +316,10 @@
"output": "" "output": ""
}, },
"pp": 0, "pp": 0,
"calc": {}, "calc": {}
"mods": {}
}, },
"item": { "item": {
"templates": ["itemDescription", "equippable", "physical", "valuable", "hoarded"], "templates": ["itemDescription", "equippable", "physical","valuable","hoarded"],
"rolls": { "rolls": {
"formulas": {}, "formulas": {},
"output": "" "output": ""
@@ -377,7 +338,6 @@
}, },
"effect": { "effect": {
"templates": ["itemDescription", "equippable", "physical", "durationSelection"], "templates": ["itemDescription", "equippable", "physical", "durationSelection"],
"unablesToAct": false,
"rolls": { "rolls": {
"formulas": {}, "formulas": {},
"output": "" "output": ""
@@ -386,14 +346,13 @@
"calc": {} "calc": {}
}, },
"weapon": { "weapon": {
"templates": ["itemDescription", "stats", "equippable", "physical", "valuable", "hoarded"], "templates": ["itemDescription", "stats", "equippable", "physical","valuable","hoarded"],
"special": false, "special": false,
"ranged": false, "ranged": false,
"valuable": false, "valuable": false,
"hoarded": false, "hoarded": false,
"skillId": "", "skillId": "",
"damageBase": "1d6", "damageBase": "1d6",
"ew": 5,
"rolls": { "rolls": {
"formulas": { "formulas": {
"0": { "0": {
@@ -412,7 +371,7 @@
"calc": {} "calc": {}
}, },
"defensiveWeapon": { "defensiveWeapon": {
"templates": ["itemDescription", "stats", "equippable", "physical", "valuable", "hoarded"], "templates": ["itemDescription", "stats", "equippable", "physical","valuable","hoarded"],
"special": false, "special": false,
"valuable": false, "valuable": false,
"hoarded": false, "hoarded": false,
@@ -430,7 +389,7 @@
"calc": {} "calc": {}
}, },
"armor": { "armor": {
"templates": ["itemDescription", "stats", "equippable", "attributeMod", "physical", "valuable", "hoarded"], "templates": ["itemDescription", "stats", "equippable", "attributeMod", "physical","valuable","hoarded"],
"lpProtection": 0, "lpProtection": 0,
"apProtection": 0, "apProtection": 0,
"valuable": false, "valuable": false,
@@ -458,7 +417,6 @@
"agens": "", "agens": "",
"reagens": "", "reagens": "",
"material": "", "material": "",
"rank": 0,
"rolls": { "rolls": {
"formulas": { "formulas": {
"0": { "0": {
@@ -478,13 +436,6 @@
"variante": "", "variante": "",
"isKido": false, "isKido": false,
"ap": "", "ap": "",
"weapon": "",
"ep": "",
"rank": 0,
"enemy": "",
"color": "",
"style": "",
"grade": "",
"rolls": { "rolls": {
"formulas": { "formulas": {
"0": { "0": {
@@ -496,154 +447,6 @@
"output": "" "output": ""
}, },
"calc": {} "calc": {}
},
"class": {
"templates": ["itemDescription"],
"magicUsing": false,
"equipped": true,
"resistanceBody": 1,
"resistanceMind": 0,
"calc": {},
"mods": {},
"lernKostenAllgemein": {
"alltag": 20,
"freiland": 20,
"halbwelt": 20,
"kampf": 20,
"koerper": 20,
"sozial": 20,
"unterwelt": 20,
"waffen": 20,
"wissen": 20
},
"lernKostenZauber": {
"beherrschen": {
"kosten": 0,
"pp": 0
},
"bewegen": {
"kosten": 0,
"pp": 0
},
"erkennen": {
"kosten": 0,
"pp": 0
},
"erschaffen": {
"kosten": 0,
"pp": 0
},
"formen": {
"kosten": 0,
"pp": 0
},
"veraendern": {
"kosten": 0,
"pp": 0
},
"zerstoeren": {
"kosten": 0,
"pp": 0
},
"wundertat": {
"kosten": 0,
"pp": 0
},
"dweomer": {
"kosten": 0,
"pp": 0
},
"zauberlied": {
"kosten": 0,
"pp": 0
},
"kampfverse": {
"kosten": 0,
"pp": 0
},
"zaubertaenze": {
"kosten": 0,
"pp": 0
},
"zaubersalz": {
"kosten": 0,
"pp": 0
},
"runenstaebe": {
"kosten": 0,
"pp": 0
},
"zaubersiegel": {
"kosten": 0,
"pp": 0
},
"zauberrunen": {
"kosten": 0,
"pp": 0
},
"thaumagraphie": {
"kosten": 0,
"pp": 0
},
"erhaltung": {
"kosten": 0,
"pp": 0
},
"zaubermittel": {
"kosten": 0,
"pp": 0
},
"zauberschutz": {
"kosten": 0,
"pp": 0
},
"zauberblaetter": {
"kosten": 0,
"pp": 0
},
"vigilsignien": {
"kosten": 0,
"pp": 0
},
"artefakte": {
"kosten": 0,
"pp": 0
},
"chaoswunder": {
"kosten": 0,
"pp": 0
},
"wilder_dweomer": {
"kosten": 0,
"pp": 0
},
"nekromantie": {
"kosten": 0,
"pp": 0
},
"finstere_magie": {
"kosten": 0,
"pp": 0
},
"blutmagie": {
"kosten": 0,
"pp": 0
},
"beschwoeren": {
"kosten": 0,
"pp": 0
},
"namensmagie": {
"kosten": 0,
"pp": 0
}
},
"lernKostenKamptechnik": {
"kampfkunst": 90,
"fechtkunst": 90,
"schiesskunst": 90,
"kido": 90
}
} }
} }
} }
-18
View File
@@ -1,18 +0,0 @@
<form>
<div class="window-content">
<label><b>Wahl der Kosten</b></label>
<hr />
<span class="dice-tooltip">
<div class="dice-rolls flexrow">
<div>
{{localize "midgard5.destiny"}}:
{{sg}}
</div>
<div>
{{localize "midgard5.luckPoints"}}:
{{gp}}
</div>
</div>
</span>
</div>
</form>
+9 -37
View File
@@ -64,66 +64,38 @@
<td>{{localize "midgard5.actor-ap"}}</td> <td>{{localize "midgard5.actor-ap"}}</td>
<td class="roll-spell-details">{{i.ap}}</td> <td class="roll-spell-details">{{i.ap}}</td>
</tr> </tr>
<tr>
<td>{{localize "midgard5.kampfkunst-ep"}}</td>
<td class="roll-spell-details">{{i.ep}}</td>
</tr>
<tr> <tr>
<td>{{localize "midgard5.kampfkunst-type"}}</td> <td>{{localize "midgard5.kampfkunst-type"}}</td>
<td class="roll-spell-details">{{localize (m5concat "midgard5.kampfkunst-type-" i.type)}}</td> <td class="roll-spell-details">{{localize (m5concat "midgard5.kampfkunst-type-" i.type)}}</td>
</tr> </tr>
<tr> {{#if (eq i.type "angriff")}}
<td>{{localize "midgard5.kampfkunst-variante"}}</td> <tr>
<td class="roll-spell-details">{{localize (m5concat "midgard5.kampfkunst-variante-" i.variante)}}</td> <td>{{localize "midgard5.kampfkunst-variante"}}</td>
</tr> <td class="roll-spell-details">{{localize (m5concat "midgard5.kampfkunst-variante-" i.variante)}}</td>
<tr> </tr>
<td>{{localize "midgard5.kampfkunst-enemy"}}</td> {{/if}}
<td class="roll-spell-details">{{i.enemy}}</td>
</tr>
<tr>
<td>{{localize "midgard5.kampfkunst-weapon"}}</td>
<td class="roll-spell-details">{{i.weapon}}</td>
</tr>
{{else}} {{else}}
<tr> <tr>
<td>{{localize "midgard5.actor-ap"}}</td> <td>{{localize "midgard5.actor-ap"}}</td>
<td class="roll-spell-details">{{i.ap}}</td> <td class="roll-spell-details">{{i.ap}}</td>
</tr> </tr>
<tr>
<td>{{localize "midgard5.kampfkunst-ep"}}</td>
<td class="roll-spell-details">{{i.ep}}</td>
</tr>
<tr>
<td>{{localize "midgard5.kido-color"}}</td>
<td class="roll-spell-details">{{i.color}}</td>
</tr>
<tr>
<td>{{localize "midgard5.kido-style"}}</td>
<td class="roll-spell-details">{{i.style}}</td>
</tr>
<tr> <tr>
<td>{{localize "midgard5.kido-type"}}</td> <td>{{localize "midgard5.kido-type"}}</td>
<td class="roll-spell-details">{{localize (m5concat "midgard5.kido-type-" i.type)}}</td> <td class="roll-spell-details">{{localize (m5concat "midgard5.kido-type-" i.type)}}</td>
</tr> </tr>
{{#if (eq i.type "angriff")}}
<tr> <tr>
<td>{{localize "midgard5.kido-variante"}}</td> <td>{{localize "midgard5.kido-variante"}}</td>
<td class="roll-spell-details">{{localize (m5concat "midgard5.kido-variante-" i.variante)}}</td> <td class="roll-spell-details">{{localize (m5concat "midgard5.kido-variante-" i.variante)}}</td>
</tr> </tr>
<tr> {{/if}}
<td>{{localize "midgard5.kido-enemy"}}</td>
<td class="roll-spell-details">{{i.enemy}}</td>
</tr>
<tr>
<td>{{localize "midgard5.kido-weapon"}}</td>
<td class="roll-spell-details">{{i.weapon}}</td>
</tr>
{{/unless}} {{/unless}}
{{/if}} {{/if}}
{{#each rolls as |roll index|}} {{#each rolls as |roll index|}}
{{#if roll.enabled}} {{#if roll.enabled}}
<tr class="roll-row {{roll.css}}"> <tr class="roll-row {{roll.css}}">
<td>{{roll.label}} {{#if (eq index '0')}} {{#if (gt ../b.modifier 0)}}+{{../b.modifier}}{{/if}}{{#if (gt 0 ../b.modifier)}}{{../b.modifier}}{{/if}}{{/if}}</td> <td>{{roll.label}}</td>
<td class="roll-result"> <td class="roll-result">
<span class="roll-total {{#if (contains roll.label "Schaden")}}apply damage{{/if}}{{#if (contains roll.label "Heilung")}}apply heal{{/if}}">{{roll.totalStr}}</span> <span class="roll-total {{#if (contains roll.label "Schaden")}}apply damage{{/if}}{{#if (contains roll.label "Heilung")}}apply heal{{/if}}">{{roll.totalStr}}</span>
<span class="roll-detail">{{roll.result}}</span> <span class="roll-detail">{{roll.result}}</span>
-22
View File
@@ -1,22 +0,0 @@
<form>
<div class="form-group">
<label>{{localize "midgard5.chat.options.modifier"}}</label>
<input type="number" name="modifier" value="{{modifier}}" />
</div>
{{#unless isPW}}
<div class="form-group">
<label>{{localize "midgard5.chat.options.difficulty"}}</label>
<input type="number" name="difficulty" value="{{difficulty}}" />
</div>
{{/unless}}
<div class="form-group">
<label>{{localize "midgard5.chat.options.rollMode"}}</label>
<select name="rollMode">
{{#select rollMode}}
{{#each rollModes as |label mode|}}
<option value="{{mode}}">{{localize label}}</option>
{{/each}}
{{/select}}
</select>
</div>
</form>
+16 -36
View File
@@ -46,8 +46,8 @@
<tr> <tr>
<td>{{localize "midgard5.luckPoints"}}</td> <td>{{localize "midgard5.luckPoints"}}</td>
<td><input name="data.gp" type="text" value="{{data.gp}}" data-dtype="Number" /></td> <td><input name="data.gp" type="text" value="{{data.gp}}" data-dtype="Number" /></td>
<td>{{localize "midgard5.valuable"}}</td> <td></td>
<td class="fixed-value">{{data.calc.stats.wealth}}</td> <td></td>
</tr> </tr>
<tr height = 10px></tr> <tr height = 10px></tr>
</tbody> </tbody>
@@ -63,7 +63,7 @@
<tr height = 10px></tr> <tr height = 10px></tr>
<tr> <tr>
<td>{{localize "midgard5.magicUsing"}}</td> <td>{{localize "midgard5.magicUsing"}}</td>
<td><input id="data.info.magicUsing" type="checkbox" disabled="true" name="data.info.magicUsing" {{checked data.info.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>{{localize "midgard5.movementRange"}}</td>
<td><input name="data.movement" type="text" value="{{data.movement}}" data-dtype="Number" /></td> <td><input name="data.movement" type="text" value="{{data.movement}}" data-dtype="Number" /></td>
</tr> </tr>
@@ -104,43 +104,23 @@
<td class="fixed-value">{{data.calc.stats.resistanceBody.value}}</td> <td class="fixed-value">{{data.calc.stats.resistanceBody.value}}</td>
</tr> </tr>
{{#if (eq data.info.race "Zwerg")}} {{#if (eq data.info.race "Zwerg")}}
<tr> <tr>
<td>{{localize "midgard5.hoard"}}</td> <td>{{localize "midgard5.hoard"}}</td>
<td class="fixed-value">{{data.calc.stats.hoard}}</td> <td class="fixed-value">{{data.calc.stats.hoard}}</td>
</tr> <td></td>
<tr> <td></td>
<td>{{localize "midgard5.hoardMin"}}</td> </tr>
<td class="fixed-value">{{data.calc.stats.hoardMin}}</td> <tr>
<td>{{localize "midgard5.hoard-next"}}</td> <td>{{localize "midgard5.hoardMin"}}</td>
<td class="fixed-value">{{data.calc.stats.hoardNext}}</td> <td class="fixed-value">{{data.calc.stats.hoardMin}}</td>
</tr> <td>{{localize "midgard5.hoard-next"}}</td>
<td class="fixed-value">{{data.calc.stats.hoardNext}}</td>
</tr>
{{/if}} {{/if}}
<tr height = 10px></tr> <tr height = 10px></tr>
</tbody> </tbody>
</table> </table>
</div> </div>
</div> </div>
</div> </div>
<div class="flexcolumn-1">
<div class="flexpart">
<div class="flexpart-header"><img src="icons/skills/wounds/injury-body-pain-gray.webp" class="flexpart-icon">{{localize "midgard5.deprivations"}} & {{localize "midgard5.deprivation"}}</div>
<table>
<tr height = 10px></tr>
<tr>
<td class="flexpart-img"><img src="/icons/consumables/food/plate-fish-bowl-bones-brown.webp" class="flexpart-icon"></td>
<td class="padding highlight">{{localize "midgard5.deprivationFood"}}</td>
<td class="center">{{data.calc.stats.deprivationFood.value}}</td>
<td class="fixed-value" style="border-right: 1px solid black;"><button class="roll-button roll-deprivationFood-button"></button></td>
<td class="flexpart-img"><img src="/icons/magic/fire/orb-lightning-sun.webp" class="flexpart-icon"></td>
<td class="padding highlight">{{localize "midgard5.deprivationHeat"}}</td>
<td class="center">{{ data.calc.stats.deprivationHeat.value}}</td>
<td class="fixed-value" style="border-right: 1px solid black;"><button class="roll-button roll-deprivationHeat-button"></button></td>
<td class="flexpart-img"><img src="/icons/magic/water/snowflake-ice-blue.webp" class="flexpart-icon"></td>
<td class="padding highlight">{{localize "midgard5.deprivationCold"}}</td>
<td class="center">{{data.calc.stats.deprivationCold.value}}</td>
<td class="fixed-value"><button class="roll-button roll-deprivationCold-button"></button></td>
</tr>
</table>
</div>
</div>
+5 -203
View File
@@ -1,140 +1,5 @@
<h3>{{localize "midgard5.combatPhases"}}</h3>
<div class="flexbox flexpart">
<div class="flexcolumn-2 flexpart" style="flex: 1 1 200px;">
<div class="flexpart-header"><img src="icons/magic/time/arrows-circling-pink.webp" class="flexpart-icon">{{localize "midgard5.initiative"}}</div>
<br>
<div class="flexrow">
<div style="font-weight: 800;">{{localize "midgard5.group"}}:</div>
<div class="fixed-value" style="font-weight: 800;">{{data.calc.group}}</div>
</div>
<div class="flexrow">
<div style="font-weight: 800;">{{localize "midgard5.anfuehren"}}:</div>
<div class="fixed-value" style="font-weight: 800;">{{data.calc.initiative}}</div>
</div>
<br>
{{#if data.calc.unableToAct.enabled}}
<div class="flexrow">
<div>{{localize "midgard5.unableToAct"}}</div>
<div class="fixed-value;"><input type="checkbox" name="data.calc.unableToAct.enabled" {{checked data.calc.unableToAct.enabled}} disabled="disabled"></div>
<div class="fixed-value"><button class="roll-button roll-unableToAct-button"></button></div>
</div>
<div class="flexrow">
&nbsp; &nbsp;
<div>{{localize "midgard5.time-round"}}</div>
<div class="fixed-value"><input type="number" name="data.calc.unableToAct.roundsRemaining" value="{{data.calc.unableToAct.roundsRemaining}}"></div>
</div>
{{/if}}
{{#unless data.calc.unableToAct.enabled}}
<div class="flexrow">
<div>{{localize "midgard5.leader"}}</div>
<div class="fixed-value;"><input type="checkbox" name="data.info.leader" {{checked data.info.leader}}></div>
</div>
{{#if data.info.leader}}
<div class="flexrow">
<button class="wide-button rollInitiative">{{localize "midgard5.initiativeRoll"}}</button>
</div>
{{/if}}
{{/unless}}
<div class="flexpart-header"><img src="icons/magic/time/arrows-circling-pink.webp" class="flexpart-icon">{{localize "midgard5.phase-movement"}}</div>
<br>
<div class="flexrow">
<div style="font-weight: 800;">{{localize "midgard5.movementRange"}}:</div>
<div class="fixed-value" style="font-weight: 800;">{{data.calc.stats.movement.value}}</div>
</div>
<br>
<div class="flexrow">
<div><label for="tM1">{{localize "midgard5.movedThisTurn"}}: max. 1m</label></div>
<div><input type="radio" id="tM1" name="gwModificator" value="1"></div>
</div>
<div class="flexrow">
<div><label for="tM2">{{localize "midgard5.movedThisTurn"}}: max.B/2m</label></div>
<div><input type="radio" id="tM2" name="gwModificator" value="0.5"></div>
</div>
<div class="flexrow">
<div><label for="tM3">{{localize "midgard5.movedThisTurn"}}: max. {{data.calc.stats.movement.value}}m</label></div>
<div><input type="radio" id="tm3" name="gwModificator" value="0"></div>
</div>
<div class="flexrow">
<div><label for="tM4">Eigener GW Multiplikator</label></div>
<div><input type="radio" id="tm4" name="dedicatedgwModificator" value="1"></div>
</div>
<div class="flexrow">
<div>&nbsp;&nbsp;<label for="tM5">GW Multiplikator:</label></div>
<div class="fixed-value;"><input type="float" id="tm5" name="gwModificator" value="0" ></div>
</div>
<div class="flexrow">
<button class="wide-button continueToAction">{{localize "midgard5.continue"}}</button>
</div>
</div>
<div class="flexcolumn-2 flexpart" style="flex: 1 1 200px;">
<div class="flexpart-header"><img src="icons/magic/time/arrows-circling-pink.webp" class="flexpart-icon">{{localize "midgard5.phase-action"}}</div>
<br>
<div class="flexrow">
<div style="font-weight: 800;">{{localize "midgard5.actionrank"}} :</div>
<div class="fixed-value" style="font-weight: 800;">{{data.calc.attributes.gw.value}}</div>
</div>
<br>
<div class="flexrow">
<div><label for="a1">{{localize "midgard5.actionThisTurn"}}: 10s</label></div>
<div><input type="radio" id="a1" name="gwModificator" value="1"></div>
</div>
<div class="flexrow">
<div><label for="a2">{{localize "midgard5.actionThisTurn"}}: 5s</label></div>
<div><input type="radio" id="a2" name="gwModificator" value="0.5"></div>
</div>
<div class="flexrow">
<div><label for="a3">{{localize "midgard5.actionThisTurn"}}: 1s</label></div>
<div><input type="radio" id="a3" name="gwModificator" value="0"></div>
</div>
<div class="flexrow">
<div><label for="a4">Manuelle Eingabe</label></div>
<div><input type="radio" id="a4" name="dedicatedgwModificator" value="1"></div>
</div>
<div class="flexrow">
<div>&nbsp;&nbsp;<label for="a5">{{localize "midgard5.actionrank"}}:</label></div>
<div class="fixed-value;"><input type="float" id="a5" name="midgard5.actionThisTurn" value="0" ></div>
</div>
<div class="flexrow">
<button class="wide-button endTurn">{{localize "midgard5.endTurn"}}</button>
</div>
<div class="flexpart-header"><img src="icons/magic/time/arrows-circling-pink.webp" class="flexpart-icon">{{localize "midgard5.phase-action"}}</div>
<br>
<div class="flexrow">
<div style="font-weight: 800;">{{localize "midgard5.actionrank"}} :</div>
<div class="fixed-value" style="font-weight: 800;">{{data.calc.attributes.gw.value}}</div>
</div>
<br>
<div class="flexrow">
<div><label for="a1">{{localize "midgard5.actionThisTurn"}}: 10s</label></div>
<div><input type="radio" id="a1" name="gwModificator" value="1"></div>
</div>
<div class="flexrow">
<div><label for="a2">{{localize "midgard5.actionThisTurn"}}: 5s</label></div>
<div><input type="radio" id="a2" name="gwModificator" value="0.5"></div>
</div>
<div class="flexrow">
<div><label for="a3">{{localize "midgard5.actionThisTurn"}}: 1s</label></div>
<div><input type="radio" id="a3" name="gwModificator" value="0"></div>
</div>
<div class="flexrow">
<div><label for="a4">Manuelle Eingabe</label></div>
<div><input type="radio" id="a4" name="dedicatedgwModificator" value="1"></div>
</div>
<div class="flexrow">
<div>&nbsp;&nbsp;<label for="a5">{{localize "midgard5.actionrank"}}:</label></div>
<div class="fixed-value;"><input type="float" id="a5" name="midgard5.actionThisTurn" value="0" ></div>
</div>
<div class="flexrow">
<button class="wide-button endTurn">{{localize "midgard5.endTurn"}}</button>
</div>
</div>
</div>
<h3>{{localize "midgard5.combat"}}</h3>
<div class="flexbox"> <div class="flexbox">
<div class="flexcolumn-2"> <div class="flexcolumn-2">
<div class="flexpart"> <div class="flexpart">
<div class="flexpart-header"><img src="icons/magic/time/arrows-circling-pink.webp" class="flexpart-icon">{{localize "midgard5.calculated-values"}}</div> <div class="flexpart-header"><img src="icons/magic/time/arrows-circling-pink.webp" class="flexpart-icon">{{localize "midgard5.calculated-values"}}</div>
@@ -143,22 +8,9 @@
<tr> <tr>
<td>{{localize "midgard5.movementRange"}}</td> <td>{{localize "midgard5.movementRange"}}</td>
<td class="fixed-value">{{data.calc.stats.movement.value}}</td> <td class="fixed-value">{{data.calc.stats.movement.value}}</td>
<td></td>
<td class="fixed-value"></td>
</tr>
<tr>
<td>{{localize "midgard5.initiative"}}</td> <td>{{localize "midgard5.initiative"}}</td>
<td class="fixed-value">
{{#if (isSkillInList (localizeMidgard "anfuehren") data.calc.skills.general)}}
{{skillEwInList (localizeMidgard "anfuehren") data.calc.skills.general}}
{{else}}
{{skillEw actor._id data.skills.general.anfuehren}}
{{/if}}
</td>
<td>{{localize "midgard5.actionrank"}}</td>
<td class="fixed-value"><a class="join-combat">{{data.calc.attributes.gw.value}}</a></td> <td class="fixed-value"><a class="join-combat">{{data.calc.attributes.gw.value}}</a></td>
</tr> </tr>
<tr>
<td>{{localize "midgard5.defense"}}</td> <td>{{localize "midgard5.defense"}}</td>
<td class="fixed-value">{{data.calc.stats.defense.value}}</td> <td class="fixed-value">{{data.calc.stats.defense.value}}</td>
<td>{{localize "midgard5.defenseBonus"}}</td> <td>{{localize "midgard5.defenseBonus"}}</td>
@@ -176,7 +28,7 @@
<div class="flexcolumn-2"> <div class="flexcolumn-2">
<div class="flexpart" style="padding: 0 0.5rem;"> <div class="flexpart" style="padding: 0 0.5rem;">
<div class="flexpart-header">{{localize "midgard5.actionrank"}}</div> <div class="flexpart-header">{{localize "midgard5.initiative"}}</div>
<button class="wide-button join-combat">{{localize "midgard5.combat-join"}}</button> <button class="wide-button join-combat">{{localize "midgard5.combat-join"}}</button>
<button class="wide-button ranged-combat">{{localize "midgard5.combat-ranged"}}</button> <button class="wide-button ranged-combat">{{localize "midgard5.combat-ranged"}}</button>
<button class="wide-button spell-combat">{{localize "midgard5.combat-spell"}}</button> <button class="wide-button spell-combat">{{localize "midgard5.combat-spell"}}</button>
@@ -189,7 +41,6 @@
<table> <table>
<thead> <thead>
<tr> <tr>
<th class="title"><img src="/icons/svg/eye.svg" class="table-icon"></th>
<th class="title">{{localize "TYPES.Item.weapon"}}</th> <th class="title">{{localize "TYPES.Item.weapon"}}</th>
<th class="title">{{localize "midgard5.ew"}}</th> <th class="title">{{localize "midgard5.ew"}}</th>
<th class="title">{{localize "midgard5.damage"}}</th> <th class="title">{{localize "midgard5.damage"}}</th>
@@ -201,7 +52,6 @@
{{#each data.calc.gear.weapons as |item itemId|}} {{#each data.calc.gear.weapons as |item itemId|}}
{{#if item.equipped}} {{#if item.equipped}}
<tr data-item-id="{{itemId}}" class="item"> <tr data-item-id="{{itemId}}" class="item">
<td class="flexpart-img"><img src={{item.icon}} class="flexpart-icon"></td>
<td class="padding edit-item {{#if item.special}}highlight{{/if}}">{{item.label}}{{#if item.special}}(*){{/if}}</td> <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.calc.ew}}</td>
<td class="fixed-value">{{item.damageBase}}</td> <td class="fixed-value">{{item.damageBase}}</td>
@@ -218,7 +68,6 @@
{{/each}} {{/each}}
<tr data-item-id="{{itemId}}"> <tr data-item-id="{{itemId}}">
<td class="flexpart-img"><img src="icons/skills/melee/unarmed-punch-fist-yellow-red.webp" class="flexpart-icon"></td>
<td class="padding edit-item">{{localize "midgard5.brawl"}}</td> <td class="padding edit-item">{{localize "midgard5.brawl"}}</td>
<td class="fixed-value">{{data.calc.stats.brawlFw}}</td> <td class="fixed-value">{{data.calc.stats.brawlFw}}</td>
<td class="fixed-value">1d6 -4</td> <td class="fixed-value">1d6 -4</td>
@@ -231,7 +80,6 @@
<table> <table>
<thead> <thead>
<tr> <tr>
<th class="title"><img src="/icons/svg/eye.svg" class="table-icon"></th>
<th class="title">{{localize "TYPES.Item.kampfkunst"}}</th> <th class="title">{{localize "TYPES.Item.kampfkunst"}}</th>
<th class="title">{{localize "midgard5.kampfkunst-variante-short"}}</th> <th class="title">{{localize "midgard5.kampfkunst-variante-short"}}</th>
<th class="title">{{localize "midgard5.ew"}}</th> <th class="title">{{localize "midgard5.ew"}}</th>
@@ -242,7 +90,6 @@
<tbody class="items-list"> <tbody class="items-list">
{{#each data.calc.kampfkuenste as |item itemId|}} {{#each data.calc.kampfkuenste as |item itemId|}}
<tr data-item-id="{{itemId}}" class="item"> <tr data-item-id="{{itemId}}" class="item">
<td class="flexpart-img"><img src={{item.icon}} class="flexpart-icon"></td>
<td class="padding edit-item">{{item.label}}</td> <td class="padding edit-item">{{item.label}}</td>
<td> <td>
{{#if item.isKido}} {{#if item.isKido}}
@@ -252,7 +99,9 @@
{{/unless}} {{/unless}}
{{else}} {{else}}
<span class="spell-process">{{localize (m5concat "midgard5.kampfkunst-type-" item.type)}}</span> <span class="spell-process">{{localize (m5concat "midgard5.kampfkunst-type-" item.type)}}</span>
<span class="spell-process">({{localize (m5concat "midgard5.kampfkunst-variante-" item.variante)}})</span> {{#if (eq item.type "angriff")}}
<span class="spell-process">({{localize (m5concat "midgard5.kampfkunst-variante-" item.variante)}})</span>
{{/if}}
{{/if}} {{/if}}
</td> </td>
<td class="fixed-value">{{item.calc.ew}}</td> <td class="fixed-value">{{item.calc.ew}}</td>
@@ -271,20 +120,17 @@
<table> <table>
<tr height = 10px></tr> <tr height = 10px></tr>
<tr> <tr>
<td class="flexpart-img"><img src="icons/magic/defensive/shield-barrier-glowing-blue.webp" class="flexpart-icon"></td>
<td class="padding edit-item highlight">{{localize "midgard5.defense"}}</td> <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="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"><button class="roll-button roll-defense-button"></button></td>
</tr> </tr>
<tr> <tr>
<td class="flexpart-img"><img src="icons/magic/nature/elemental-plant-humanoid.webp" class="flexpart-icon"></td>
<td class="padding edit-item highlight">{{localize "midgard5.resistanceMind"}}</td> <td class="padding edit-item highlight">{{localize "midgard5.resistanceMind"}}</td>
<td class="center">{{data.calc.stats.resistanceMind.value}}</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"><button class="roll-button roll-resistanceMind-button"></button></td>
</tr> </tr>
<tr> <tr>
<td class="flexpart-img"><img src="icons/magic/control/silhouette-hold-change-green.webp" class="flexpart-icon"></td>
<td class="padding edit-item highlight">{{localize "midgard5.resistanceBody"}}</td> <td class="padding edit-item highlight">{{localize "midgard5.resistanceBody"}}</td>
<td class="center">{{data.calc.stats.resistanceBody.value}}</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"><button class="roll-button roll-resistanceBody-button"></button></td>
@@ -294,7 +140,6 @@
<table> <table>
<thead> <thead>
<tr> <tr>
<th class="title"><img src="/icons/svg/eye.svg" class="table-icon"></th>
<th class="title">{{localize "TYPES.Item.defensiveWeapon"}}</th> <th class="title">{{localize "TYPES.Item.defensiveWeapon"}}</th>
<th class="title">{{localize "midgard5.ew"}}</th> <th class="title">{{localize "midgard5.ew"}}</th>
<th class="title">{{localize "midgard5.defenseBonus-short"}}</th> <th class="title">{{localize "midgard5.defenseBonus-short"}}</th>
@@ -306,7 +151,6 @@
{{#each data.calc.gear.defensiveWeapons as |item itemId|}} {{#each data.calc.gear.defensiveWeapons as |item itemId|}}
{{#if item.equipped}} {{#if item.equipped}}
<tr data-item-id="{{itemId}}" class="item"> <tr data-item-id="{{itemId}}" class="item">
<td class="flexpart-img"><img src={{item.icon}} class="flexpart-icon"></td>
<td class="padding edit-item">{{item.label}}</td> <td class="padding edit-item">{{item.label}}</td>
<td class="fixed-value">{{item.calc.ew}}</td> <td class="fixed-value">{{item.calc.ew}}</td>
<td class="fixed-value">{{item.defenseBonus}}</td> <td class="fixed-value">{{item.defenseBonus}}</td>
@@ -327,7 +171,6 @@
<table> <table>
<thead> <thead>
<tr> <tr>
<th class="title"><img src="/icons/svg/eye.svg" class="table-icon"></th>
<th class="title">{{localize "TYPES.Item.armor"}}</th> <th class="title">{{localize "TYPES.Item.armor"}}</th>
<th class="title">{{localize "midgard5.actor-lp-short"}}</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> <th class="title center"><img src="/systems/midgard5/assets/icons/icon/battle-gear.svg" class="table-icon"></th>
@@ -337,7 +180,6 @@
{{#each data.calc.gear.armor as |item itemId|}} {{#each data.calc.gear.armor as |item itemId|}}
{{#if item.equipped}} {{#if item.equipped}}
<tr data-item-id="{{itemId}}" class="item"> <tr data-item-id="{{itemId}}" class="item">
<td class="flexpart-img"><img src={{item.icon}} class="flexpart-icon"></td>
<td class="padding">{{item.label}}</td> <td class="padding">{{item.label}}</td>
<td class="fixed-value">{{lpProtection}}</td> <td class="fixed-value">{{lpProtection}}</td>
<td class="change-equipped"> <td class="change-equipped">
@@ -354,44 +196,4 @@
</table> </table>
</div> </div>
</div> </div>
{{#if actor.system.info.magicUsing }}
<div class="flexcolumn-2">
<div class="flexpart">
<div class="flexpart-header"><img src="icons/magic/symbols/star-inverted-yellow.webp" class="flexpart-icon">{{localize "TYPES.Item.spell"}}</div>
<table>
<thead>
<tr>
<th class="title">{{localize "TYPES.Item.spell"}}</th>
<th class="title">{{localize "midgard5.spell-castDuration"}}</th>
<th class="title">{{localize "midgard5.actor-ap"}}</th>
<th class="title">{{localize "midgard5.ew"}}</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 class="items-list">
{{#each data.calc.spells as |item itemId|}}
{{#if item.equipped}}
<tr data-item-id="{{itemId}}" class="item">
<td class="padding edit-item {{#if item.special}}highlight{{/if}}">{{item.label}}{{#if item.special}}(*){{/if}}</td>
<td class="fixed-value">{{item.castDuration}}</td>
<td class="fixed-value">{{item.ap}}</td>
<td class="fixed-value">{{item.calc.ew}}</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>
</div>
</div>
{{/if}}
</div> </div>
+1 -5
View File
@@ -1,16 +1,14 @@
<table> <table>
<thead> <thead>
<tr> <tr>
<th class="title"><img src="/icons/svg/eye.svg" class="table-icon"></th>
<th class="title">{{localize "TYPES.Item.effect"}}</th> <th class="title">{{localize "TYPES.Item.effect"}}</th>
<th><a class="title add-effect"><i class="fa-regular fa-plus"></i></a></th> <td><a class="title add-effect"><i class="fa-regular fa-plus"></i></a></th>
</tr> </tr>
</thead> </thead>
<tbody class="items-list"> <tbody class="items-list">
{{#each data.calc.gear.effects as |item itemId|}} {{#each data.calc.gear.effects as |item itemId|}}
<tr data-item-id="{{itemId}}" class="items"> <tr data-item-id="{{itemId}}" class="items">
<td class="flexpart-img"><img src={{item.icon}} class="flexpart-icon"></td>
<td class="padding"> <td class="padding">
<span class="edit-item">{{item.label}}</span> <span class="edit-item">{{item.label}}</span>
{{#if item.equipped}} {{#if item.equipped}}
@@ -20,9 +18,7 @@
{{/unless}} {{/unless}}
{{/if}} {{/if}}
</td> </td>
{{!--{{#unless (eq item.label "Belastung")}}--}}
<td class="fixed-value"><a class="item-delete" title="Delete Item"><i class="fas fa-trash"></i></a></td> <td class="fixed-value"><a class="item-delete" title="Delete Item"><i class="fas fa-trash"></i></a></td>
{{!--{{/unless}}--}}
</tr> </tr>
{{/each}} {{/each}}
</tbody> </tbody>
+17 -42
View File
@@ -48,9 +48,9 @@
<tr height = 10px></tr> <tr height = 10px></tr>
<tr> <tr>
<td class="fixed-value"><input type="number" disabled="true" name="data.info.load" value="{{data.calc.stats.load}}"></td> <td class="fixed-value"><input type="number" disabled="true" name="data.info.load" value="{{data.calc.stats.load}}"></td>
<td class="fixed-value"><input type="number" disabled="true" {{#if (gt data.calc.stats.encumbrance data.calc.stats.heavyLoad) }}style="background:#FF6666"{{/if}} name="data.info.heavyLoad" value="{{data.calc.stats.heavyLoad}}"></td> <td class="fixed-value"><input type="number" disabled="true" {{#if (gte data.calc.stats.encumbrance data.calc.stats.heavyLoad) }}style="background:#FF6666"{{/if}} name="data.info.heavyLoad" value="{{data.calc.stats.heavyLoad}}"></td>
<td class="fixed-value"><input type="number" disabled="true" {{#if (gt data.calc.stats.encumbrance data.calc.stats.loadMax) }}style="background:#FF6666"{{/if}} name="data.info.loadMax" value="{{data.calc.stats.loadMax}}"></td> <td class="fixed-value"><input type="number" disabled="true" {{#if (gte data.calc.stats.encumbrance data.calc.stats.loadMax) }}style="background:#FF6666"{{/if}} name="data.info.loadMax" value="{{data.calc.stats.loadMax}}"></td>
<td class="fixed-value"><input type="number" disabled="true" {{#if (gt data.calc.stats.encumbrance data.calc.stats.thrustLoad) }}style="background:#FF6666"{{/if}} name="data.info.thrustLoad" value="{{data.calc.stats.thrustLoad}}"></td> <td class="fixed-value"><input type="number" disabled="true" {{#if (gte data.calc.stats.encumbrance data.calc.stats.thrustLoad) }}style="background:#FF6666"{{/if}} name="data.info.thrustLoad" value="{{data.calc.stats.thrustLoad}}"></td>
<td class="fixed-value"><input type="number" disabled="true" name="data.info.encumbrance" value="{{data.calc.stats.encumbrance}}"></td> <td class="fixed-value"><input type="number" disabled="true" name="data.info.encumbrance" value="{{data.calc.stats.encumbrance}}"></td>
</tr> </tr>
</tfoot> </tfoot>
@@ -59,17 +59,15 @@
</div> </div>
</div> </div>
{{#unless (eq (count data.calc.gear.containers) 0)}}
<h3>{{localize "midgard5.itemsInContainers"}}</h3> <h3>{{localize "midgard5.itemsInContainers"}}</h3>
<div class="flexbox"> <div class="flexbox">
{{#each data.calc.gear.containers as |container containerId|}} {{#each data.calc.gear.containers as |container containerId|}}
<div class="flexcolumn-2" data-container-id="{{containerId}}"> <div class="flexcolumn-2">
<div class="flexpart"> <div class="flexpart">
<div class="flexpart-header"><img src="{{container.icon}}" class="flexpart-icon">{{container.label}}</div> <div class="flexpart-header"><img src="{{container.icon}}" class="flexpart-icon">{{container.label}}</div>
<table> <table>
<thead class="theader"> <thead class="theader">
<tr> <tr>
<th class="title"><img src="/icons/svg/eye.svg" class="table-icon"></th>
<th class="title">{{localize "TYPES.Item.item"}}</th> <th class="title">{{localize "TYPES.Item.item"}}</th>
<th class="title center">{{localize "midgard5.item-quantity"}}</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-value"}}</th>
@@ -84,7 +82,6 @@
{{#each ../data.calc.gear.items as |item itemId|}} {{#each ../data.calc.gear.items as |item itemId|}}
{{#if (eq item.containerId containerId)}} {{#if (eq item.containerId containerId)}}
<tr data-item-id="{{itemId}}" class="item"> <tr data-item-id="{{itemId}}" class="item">
<td class="flexpart-img"><img src={{item.icon}} class="flexpart-icon"></td>
<td class="padding"> <td class="padding">
<span class="edit-item">{{item.label}}</span> <span class="edit-item">{{item.label}}</span>
</td> </td>
@@ -118,7 +115,6 @@
{{#each ../data.calc.gear.weapons as |item itemId|}} {{#each ../data.calc.gear.weapons as |item itemId|}}
{{#if (eq item.containerId containerId)}} {{#if (eq item.containerId containerId)}}
<tr data-item-id="{{itemId}}" class="item"> <tr data-item-id="{{itemId}}" class="item">
<td class="flexpart-img"><img src={{item.icon}} class="flexpart-icon"></td>
<td class="padding"> <td class="padding">
<span class="edit-item">{{item.label}}</span> <span class="edit-item">{{item.label}}</span>
</td> </td>
@@ -148,7 +144,6 @@
{{#each ../data.calc.gear.defensiveWeapons as |item itemId|}} {{#each ../data.calc.gear.defensiveWeapons as |item itemId|}}
{{#if (eq item.containerId containerId)}} {{#if (eq item.containerId containerId)}}
<tr data-item-id="{{itemId}}" class="item"> <tr data-item-id="{{itemId}}" class="item">
<td class="flexpart-img"><img src={{item.icon}} class="flexpart-icon"></td>
<td class="padding"> <td class="padding">
<span class="edit-item">{{item.label}}</span> <span class="edit-item">{{item.label}}</span>
</td> </td>
@@ -178,7 +173,6 @@
{{#each ../data.calc.gear.armor as |item itemId|}} {{#each ../data.calc.gear.armor as |item itemId|}}
{{#if (eq item.containerId containerId)}} {{#if (eq item.containerId containerId)}}
<tr data-item-id="{{itemId}}" class="item"> <tr data-item-id="{{itemId}}" class="item">
<td class="flexpart-img"><img src={{item.icon}} class="flexpart-icon"></td>
<td class="padding"> <td class="padding">
<span class="edit-item">{{item.label}}</span> <span class="edit-item">{{item.label}}</span>
</td> </td>
@@ -211,14 +205,11 @@
</div> </div>
{{/each}} {{/each}}
</div> </div>
{{/unless}}
<h3> <h3>
{{localize "midgard5.allItems"}} {{localize "midgard5.allItems"}}
<input id="data.settings.showAllItems" class="checkbox" type="checkbox" name="data.settings.showAllItems" {{checked data.settings.showAllItems}} style="float: right;"> <input id="data.info.showAllItems" class="checkbox" type="checkbox" name="data.info.showAllItems" {{checked data.info.showAllItems}} style="float: right;">
<label for="data.settings.showAllItems" style="font-size: small; font-weight: normal; font-style: italic; float: right;">{{localize "midgard5.showAll"}}&nbsp;</label> <label for="data.info.showAllItems" style="font-size: small; font-weight: normal; font-style: italic; float: right;">{{localize "midgard5.showAll"}}&nbsp;</label>
</h3> </h3>
<div class="flexbox"> <div class="flexbox">
<div class="flexcolumn-2"> <div class="flexcolumn-2">
@@ -227,21 +218,18 @@
<table> <table>
<thead class="theader"> <thead class="theader">
<tr> <tr>
<th class="title"><img src="/icons/svg/eye.svg" class="table-icon"></th>
<th class="title">{{localize "TYPES.Item.container"}}</th> <th class="title">{{localize "TYPES.Item.container"}}</th>
<th class="title center">{{localize "midgard5.item-value"}}</th> <th class="title center">{{localize "midgard5.item-value"}}</th>
<th class="title center">{{localize "midgard5.item-weight"}}</th> <th class="title center">{{localize "midgard5.item-weight"}}</th>
<th class="title center">{{localize "midgard5.capacity"}}</th>
<th class="title center"><img src="/systems/midgard5/assets/icons/icon/battle-gear.svg" class="table-icon"></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"><img src="/icons/svg/d20.svg" class="table-icon"></th>
<th><a class="title add-container"><i class="fa-regular fa-plus"></i></a></th> <td><a class="title add-container"><i class="fa-regular fa-plus"></i></a></th>
</tr> </tr>
</thead> </thead>
<tbody class="items-list"> <tbody class="items-list">
<tr height = 10px></tr> <tr height = 10px></tr>
{{#each data.calc.gear.containers as |item itemId|}} {{#each data.calc.gear.containers as |item itemId|}}
<tr data-item-id="{{itemId}}" class="item"> <tr data-item-id="{{itemId}}" class="item">
<td class="flexpart-img"><img src={{item.icon}} class="flexpart-icon"></td>
<td class="padding"> <td class="padding">
<span class="edit-item">{{item.label}}</span> <span class="edit-item">{{item.label}}</span>
</td> </td>
@@ -251,13 +239,8 @@
{{/unless}} {{/unless}}
</td> </td>
<td style="text-align: start"> <td style="text-align: start">
{{#unless (or (eq item.weight 0) (eq item.equipped?))}} {{#unless (or (eq item.weight "") (eq item.equipped?))}}
<span class="spell-process">{{item.weight}}kg</span> <span class="spell-process">{{item.weight}} kg</span>
{{/unless}}
</td>
<td style="text-align: start">
{{#unless (eq item.capacity 0)}}
<span class="spell-process"{{#if (gt item.weight item.capacity) }}style="background:#FF6666"{{/if}}>{{item.capacity}}kg</span>
{{/unless}} {{/unless}}
</td> </td>
<td class="change-equipped"> <td class="change-equipped">
@@ -282,22 +265,20 @@
<table> <table>
<thead class="theader"> <thead class="theader">
<tr> <tr>
<th class="title"><img src="/icons/svg/eye.svg" class="table-icon"></th>
<th class="title">{{localize "TYPES.Item.item"}}</th> <th class="title">{{localize "TYPES.Item.item"}}</th>
<th class="title center">{{localize "midgard5.item-quantity"}}</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-value"}}</th>
<th class="title center">{{localize "midgard5.item-weight"}}</th> <th class="title center">{{localize "midgard5.item-weight"}}</th>
<th class="title"><img src="/systems/midgard5/assets/icons/icon/battle-gear.svg" class="table-icon"></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"><img src="/icons/svg/d20.svg" class="table-icon"></th></th>
<th><a class="title add-item"><i class="fa-regular fa-plus"></i></a></th> <td><a class="title add-item"><i class="fa-regular fa-plus"></i></a></th>
</tr> </tr>
</thead> </thead>
<tbody class="items-list"> <tbody class="items-list">
<tr height = 10px></tr> <tr height = 10px></tr>
{{#each data.calc.gear.items as |item itemId|}} {{#each data.calc.gear.items as |item itemId|}}
{{#if (or ../data.settings.showAllItems (eq item.containerId ""))}} {{#if (or ../data.info.showAllItems (eq item.containerId ""))}}
<tr data-item-id="{{itemId}}" class="item"> <tr data-item-id="{{itemId}}" class="item">
<td class="flexpart-img"><img src={{item.icon}} class="flexpart-icon"></td>
<td class="padding"> <td class="padding">
<span class="edit-item">{{item.label}}</span> <span class="edit-item">{{item.label}}</span>
</td> </td>
@@ -340,20 +321,18 @@
<table> <table>
<thead> <thead>
<tr> <tr>
<th class="title"><img src="/icons/svg/eye.svg" class="table-icon"></th>
<th class="title">{{localize "TYPES.Item.weapon"}}</th> <th class="title">{{localize "TYPES.Item.weapon"}}</th>
<th class="title center">{{localize "midgard5.item-value"}}</th> <th class="title center">{{localize "midgard5.item-value"}}</th>
<th class="title center">{{localize "midgard5.item-weight"}}</th> <th class="title center">{{localize "midgard5.item-weight"}}</th>
<th class="title"><img src="/systems/midgard5/assets/icons/icon/battle-gear.svg" class="table-icon"></th> <th class="title"><img src="/systems/midgard5/assets/icons/icon/battle-gear.svg" class="table-icon"></th>
<th><a class="title add-weapon"><i class="fa-regular fa-plus"></i></a></th> <td><a class="title add-weapon"><i class="fa-regular fa-plus"></i></a></th>
</tr> </tr>
</thead> </thead>
<tbody class="items-list"> <tbody class="items-list">
{{#each data.calc.gear.weapons as |item itemId|}} {{#each data.calc.gear.weapons as |item itemId|}}
{{#if (or ../data.settings.showAllItems (eq item.containerId ""))}} {{#if (or ../data.info.showAllItems (eq item.containerId ""))}}
<tr data-item-id="{{itemId}}" class="item"> <tr data-item-id="{{itemId}}" class="item">
<td class="flexpart-img"><img src={{item.icon}} class="flexpart-icon"></td>
<td class="padding edit-item">{{item.label}}</td> <td class="padding edit-item">{{item.label}}</td>
<td style="text-align: start"> <td style="text-align: start">
{{#unless (or (eq item.value 0) (eq item.currency ""))}} {{#unless (or (eq item.value 0) (eq item.currency ""))}}
@@ -387,19 +366,17 @@
<table> <table>
<thead> <thead>
<tr> <tr>
<th class="title"><img src="/icons/svg/eye.svg" class="table-icon"></th>
<th class="title">{{localize "TYPES.Item.defensiveWeapon"}}</th> <th class="title">{{localize "TYPES.Item.defensiveWeapon"}}</th>
<th class="title center">{{localize "midgard5.item-value"}}</th> <th class="title center">{{localize "midgard5.item-value"}}</th>
<th class="title center">{{localize "midgard5.item-weight"}}</th> <th class="title center">{{localize "midgard5.item-weight"}}</th>
<th class="title"><img src="/systems/midgard5/assets/icons/icon/battle-gear.svg" class="table-icon"></th> <th class="title"><img src="/systems/midgard5/assets/icons/icon/battle-gear.svg" class="table-icon"></th>
<th><a class="title add-defensiveWeapon"><i class="fa-regular fa-plus"></i></a></th> <td><a class="title add-defensiveWeapon"><i class="fa-regular fa-plus"></i></a></th>
</tr> </tr>
</thead> </thead>
<tbody class="items-list"> <tbody class="items-list">
{{#each data.calc.gear.defensiveWeapons as |item itemId|}} {{#each data.calc.gear.defensiveWeapons as |item itemId|}}
{{#if (or ../data.settings.showAllItems (eq item.containerId ""))}} {{#if (or ../data.info.showAllItems (eq item.containerId ""))}}
<tr data-item-id="{{itemId}}" class="item"> <tr data-item-id="{{itemId}}" class="item">
<td class="flexpart-img"><img src={{item.icon}} class="flexpart-icon"></td>
<td class="padding edit-item">{{item.label}}</td> <td class="padding edit-item">{{item.label}}</td>
<td style="text-align: start"> <td style="text-align: start">
{{#unless (or (eq item.value 0) (eq item.currency ""))}} {{#unless (or (eq item.value 0) (eq item.currency ""))}}
@@ -433,19 +410,17 @@
<table> <table>
<thead> <thead>
<tr> <tr>
<th class="title"><img src="/icons/svg/eye.svg" class="table-icon"></th>
<th class="title">{{localize "TYPES.Item.armor"}}</th> <th class="title">{{localize "TYPES.Item.armor"}}</th>
<th class="title center">{{localize "midgard5.item-value"}}</th> <th class="title center">{{localize "midgard5.item-value"}}</th>
<th class="title center">{{localize "midgard5.item-weight"}}</th> <th class="title center">{{localize "midgard5.item-weight"}}</th>
<th class="title"><img src="/systems/midgard5/assets/icons/icon/battle-gear.svg" class="table-icon"></th> <th class="title"><img src="/systems/midgard5/assets/icons/icon/battle-gear.svg" class="table-icon"></th>
<th><a class="title add-armor"><i class="fa-regular fa-plus"></i></a></th> <td><a class="title add-armor"><i class="fa-regular fa-plus"></i></a></th>
</tr> </tr>
</thead> </thead>
<tbody class="items-list"> <tbody class="items-list">
{{#each data.calc.gear.armor as |item itemId|}} {{#each data.calc.gear.armor as |item itemId|}}
{{#if (or ../data.settings.showAllItems (eq item.containerId ""))}} {{#if (or ../data.info.showAllItems (eq item.containerId ""))}}
<tr data-item-id="{{itemId}}" class="item"> <tr data-item-id="{{itemId}}" class="item">
<td class="flexpart-img"><img src={{item.icon}} class="flexpart-icon"></td>
<td class="padding edit-item">{{item.label}}</td> <td class="padding edit-item">{{item.label}}</td>
<td style="text-align: start"> <td style="text-align: start">
{{#unless (or (eq item.value 0) (eq item.currency ""))}} {{#unless (or (eq item.value 0) (eq item.currency ""))}}
+19 -26
View File
@@ -15,14 +15,7 @@
</tr> </tr>
<tr> <tr>
<td >{{localize "midgard5.class"}}</td> <td >{{localize "midgard5.class"}}</td>
<td > <td><input name="data.info.class" type="text" value="{{data.info.class}}" data-dtype="String" /></td>
{{#each data.info.class as |class id|}}
<div class="chip" data-item-id="{{id}}">
<a class="edit-item" name="data.info.class" type="text" disabled="true" value="" data-dtype="String">{{class}}</a>
<span><a class="closebtn item-delete" title="Delete Item"><i class="fas fa-trash"></i></a></span>
</div>
{{/each}}
</td>
<td >{{localize "midgard5.level"}}</td> <td >{{localize "midgard5.level"}}</td>
<td>{{data.calc.level}}</td> <td>{{data.calc.level}}</td>
</table> </table>
@@ -49,18 +42,6 @@
</table> </table>
<table style="width: 100%;"> <table style="width: 100%;">
<tr>
<td class="attribute-value roll-attribute-button" data-attribute="st" data-value="{{data.calc.attributes.st.value}}">{{data.calc.attributes.st.value}}</td>
<td class="attribute-value roll-attribute-button" data-attribute="gs" data-value="{{data.calc.attributes.gs.value}}">{{data.calc.attributes.gs.value}}</td>
<td class="attribute-value roll-attribute-button" data-attribute="gw" data-value="{{data.calc.attributes.gw.value}}">{{data.calc.attributes.gw.value}}</td>
<td class="attribute-value roll-attribute-button" data-attribute="ko" data-value="{{data.calc.attributes.ko.value}}">{{data.calc.attributes.ko.value}}</td>
<td class="attribute-value roll-attribute-button" data-attribute="in" data-value="{{data.calc.attributes.in.value}}">{{data.calc.attributes.in.value}}</td>
<td class="attribute-value roll-attribute-button" data-attribute="zt" data-value="{{data.calc.attributes.zt.value}}">{{data.calc.attributes.zt.value}}</td>
<td class="attribute-value roll-attribute-button" data-attribute="au" data-value="{{data.calc.attributes.au.value}}">{{data.calc.attributes.au.value}}</td>
<td class="attribute-value roll-attribute-button" data-attribute="pa" data-value="{{data.calc.attributes.pa.value}}">{{data.calc.attributes.pa.value}}</td>
<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> <tr>
<td class="attribute">{{localize "midgard5.actor-st"}}</td> <td class="attribute">{{localize "midgard5.actor-st"}}</td>
<td class="attribute">{{localize "midgard5.actor-gs"}}</td> <td class="attribute">{{localize "midgard5.actor-gs"}}</td>
@@ -73,6 +54,18 @@
<td class="attribute">{{localize "midgard5.actor-wk"}}</td> <td class="attribute">{{localize "midgard5.actor-wk"}}</td>
<td class="attribute">{{localize "midgard5.actor-git"}}</td> <td class="attribute">{{localize "midgard5.actor-git"}}</td>
</tr> </tr>
<tr>
<td class="attribute-value roll-attribute-button" data-attribute="st" data-value="{{data.calc.attributes.st.value}}">{{data.calc.attributes.st.value}}</td>
<td class="attribute-value roll-attribute-button" data-attribute="gs" data-value="{{data.calc.attributes.gs.value}}">{{data.calc.attributes.gs.value}}</td>
<td class="attribute-value roll-attribute-button" data-attribute="gw" data-value="{{data.calc.attributes.gw.value}}">{{data.calc.attributes.gw.value}}</td>
<td class="attribute-value roll-attribute-button" data-attribute="ko" data-value="{{data.calc.attributes.ko.value}}">{{data.calc.attributes.ko.value}}</td>
<td class="attribute-value roll-attribute-button" data-attribute="in" data-value="{{data.calc.attributes.in.value}}">{{data.calc.attributes.in.value}}</td>
<td class="attribute-value roll-attribute-button" data-attribute="zt" data-value="{{data.calc.attributes.zt.value}}">{{data.calc.attributes.zt.value}}</td>
<td class="attribute-value roll-attribute-button" data-attribute="au" data-value="{{data.calc.attributes.au.value}}">{{data.calc.attributes.au.value}}</td>
<td class="attribute-value roll-attribute-button" data-attribute="pa" data-value="{{data.calc.attributes.pa.value}}">{{data.calc.attributes.pa.value}}</td>
<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>
</table> </table>
</div> </div>
@@ -139,26 +132,26 @@
{{> "systems/midgard5/templates/sheets/character/base_values.hbs"}} {{> "systems/midgard5/templates/sheets/character/base_values.hbs"}}
</div> </div>
<div class="tab skills flexcol" data-group="primary" data-tab="skills"> <div class="tab base_values flexcol" data-group="primary" data-tab="skills">
{{> "systems/midgard5/templates/sheets/character/skills.hbs"}} {{> "systems/midgard5/templates/sheets/character/skills.hbs"}}
</div> </div>
<div class="tab gear flexcol" data-group="primary" data-tab="gear"> <div class="tab base_values flexcol" data-group="primary" data-tab="gear">
{{> "systems/midgard5/templates/sheets/character/gear.hbs"}} {{> "systems/midgard5/templates/sheets/character/gear.hbs"}}
</div> </div>
<div class="tab combat flexcol" data-group="primary" data-tab="combat"> <div class="tab base_values flexcol" data-group="primary" data-tab="combat">
{{> "systems/midgard5/templates/sheets/character/combat.hbs"}} {{> "systems/midgard5/templates/sheets/character/combat.hbs"}}
</div> </div>
<div class="tab spells flexcol" data-group="primary" data-tab="spells"> <div class="tab base_values flexcol" data-group="primary" data-tab="spells">
{{> "systems/midgard5/templates/sheets/character/spells.hbs"}} {{> "systems/midgard5/templates/sheets/character/spells.hbs"}}
</div> </div>
<div class="tab effects flexcol" data-group="primary" data-tab="effects"> <div class="tab base_values flexcol" data-group="primary" data-tab="effects">
{{> "systems/midgard5/templates/sheets/character/effects.hbs"}} {{> "systems/midgard5/templates/sheets/character/effects.hbs"}}
</div> </div>
<div class="tab description flexcol" data-group="primary" data-tab="description"> <div class="tab base_values flexcol" data-group="primary" data-tab="description">
{{> "systems/midgard5/templates/sheets/character/description.hbs"}} {{> "systems/midgard5/templates/sheets/character/description.hbs"}}
</div> </div>
+20 -18
View File
@@ -6,7 +6,6 @@
<table> <table>
<thead> <thead>
<tr> <tr>
<th class="title"><img src="/icons/svg/eye.svg" class="table-icon"></th>
<th class="title">{{localize "midgard5.innate-ability"}}</th> <th class="title">{{localize "midgard5.innate-ability"}}</th>
<th class="title">{{localize "midgard5.fw"}}</th> <th class="title">{{localize "midgard5.fw"}}</th>
<th class="title">{{localize "midgard5.bonus"}}</th> <th class="title">{{localize "midgard5.bonus"}}</th>
@@ -18,7 +17,6 @@
<tbody class="items-list"> <tbody class="items-list">
{{#each data.calc.skills.innate as |skill skillId|}} {{#each data.calc.skills.innate as |skill skillId|}}
<tr data-item-id="{{skillId}}" class="item"> <tr data-item-id="{{skillId}}" class="item">
<td class="flexpart-img"><img src={{skill.icon}} class="flexpart-icon"></td>
<td class="padding edit-item">{{skill.label}}</td> <td class="padding edit-item">{{skill.label}}</td>
<td class="fixed-value">{{skill.fw}}</td> <td class="fixed-value">{{skill.fw}}</td>
<td class="fixed-value">{{skill.calc.bonus}}</td> <td class="fixed-value">{{skill.calc.bonus}}</td>
@@ -27,6 +25,22 @@
<td><a class="item-delete" title="Delete Item"><i class="fas fa-trash"></i></a></td> <td><a class="item-delete" title="Delete Item"><i class="fas fa-trash"></i></a></td>
</tr> </tr>
{{/each}} {{/each}}
<tr data-item-id="{{itemId}}">
<td class="padding edit-item">{{localize "midgard5.perception"}}</td>
<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><button class="roll-button roll-perception-button"></button></td>
<td class="fixed-value"></td>
</tr>
<tr data-item-id="{{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><button class="roll-button roll-drinking-button"></button></td>
<td class="fixed-value"></td>
</tr>
</tbody> </tbody>
</table> </table>
</div> </div>
@@ -53,7 +67,7 @@
<i class="fa fa-minus-circle fw-decrease" style="cursor: pointer"></i> <i class="fa fa-minus-circle fw-decrease" style="cursor: pointer"></i>
<span>{{skill.fw}}</span> <span>{{skill.fw}}</span>
<i class="fa fa-plus-circle fw-increase" style="cursor: pointer"></i> <i class="fa fa-plus-circle fw-increase" style="cursor: pointer"></i>
</td> {{!-- {{</td><td class="fixed-value">{{skill.fw}}</td>}} --}}
<td class="fixed-value">{{skill.calc.bonus}}</td> <td class="fixed-value">{{skill.calc.bonus}}</td>
<td class="fixed-value">{{skill.calc.ew}}</td> <td class="fixed-value">{{skill.calc.ew}}</td>
<td class="fixed-value">{{skill.pp}}</td> <td class="fixed-value">{{skill.pp}}</td>
@@ -70,7 +84,6 @@
<table> <table>
<thead> <thead>
<tr> <tr>
<th class="title"><img src="/icons/svg/eye.svg" class="table-icon"></th>
<th class="title">{{localize "midgard5.weapon-skill"}}</th> <th class="title">{{localize "midgard5.weapon-skill"}}</th>
<th class="title">{{localize "midgard5.fw"}}</th> <th class="title">{{localize "midgard5.fw"}}</th>
<th class="title">{{localize "midgard5.bonus"}}</th> <th class="title">{{localize "midgard5.bonus"}}</th>
@@ -83,13 +96,8 @@
<tbody class="items-list"> <tbody class="items-list">
{{#each data.calc.skills.combat as |skill skillId|}} {{#each data.calc.skills.combat as |skill skillId|}}
<tr data-item-id="{{skillId}}" class="item"> <tr data-item-id="{{skillId}}" class="item">
<td class="flexpart-img"><img src={{skill.icon}} class="flexpart-icon"></td>
<td class="padding edit-item">{{skill.label}}</td> <td class="padding edit-item">{{skill.label}}</td>
<td> <td class="fixed-value">{{skill.fw}}</td>
<i class="fa fa-minus-circle fw-decrease" style="cursor: pointer"></i>
<span>{{skill.fw}}</span>
<i class="fa fa-plus-circle fw-increase" style="cursor: pointer"></i>
</td>
<td class="fixed-value">{{skill.calc.bonus}}</td> <td class="fixed-value">{{skill.calc.bonus}}</td>
<td class="fixed-value">{{skill.calc.ew}}</td> <td class="fixed-value">{{skill.calc.ew}}</td>
<td class="fixed-value">{{skill.pp}}</td> <td class="fixed-value">{{skill.pp}}</td>
@@ -102,11 +110,10 @@
</div> </div>
<div class="flexpart"> <div class="flexpart">
<div class="flexpart-header"><img src="icons/sundries/scrolls/scroll-runed-worn-tan.webp" class="flexpart-icon">{{localize "midgard5.languages"}} & {{localize "midgard5.writings"}}</div> <div class="flexpart-header"><img src="icons/sundries/scrolls/scroll-runed-worn-tan.webp" class="flexpart-icon">{{localize "midgard5.languages"}}</div>
<table> <table>
<thead> <thead>
<tr> <tr>
<th class="title"><img src="/icons/svg/eye.svg" class="table-icon"></th>
<th class="title">{{localize "midgard5.language"}}</th> <th class="title">{{localize "midgard5.language"}}</th>
<th class="title">{{localize "midgard5.fw"}}</th> <th class="title">{{localize "midgard5.fw"}}</th>
<th class="title">{{localize "midgard5.bonus"}}</th> <th class="title">{{localize "midgard5.bonus"}}</th>
@@ -119,13 +126,8 @@
<tbody class="items-list"> <tbody class="items-list">
{{#each data.calc.skills.language as |skill skillId|}} {{#each data.calc.skills.language as |skill skillId|}}
<tr data-item-id="{{skillId}}" class="item"> <tr data-item-id="{{skillId}}" class="item">
<td class="flexpart-img"><img src={{skill.icon}} class="flexpart-icon"></td>
<td class="padding edit-item">{{skill.label}}</td> <td class="padding edit-item">{{skill.label}}</td>
<td> <td class="fixed-value">{{skill.fw}}</td>
<i class="fa fa-minus-circle fw-decrease" style="cursor: pointer"></i>
<span>{{skill.fw}}</span>
<i class="fa fa-plus-circle fw-increase" style="cursor: pointer"></i>
</td>
<td class="fixed-value">{{skill.calc.bonus}}</td> <td class="fixed-value">{{skill.calc.bonus}}</td>
<td class="fixed-value">{{skill.calc.ew}}</td> <td class="fixed-value">{{skill.calc.ew}}</td>
<td class="fixed-value">{{skill.pp}}</td> <td class="fixed-value">{{skill.pp}}</td>
+23 -108
View File
@@ -1,108 +1,23 @@
<div class="flexbox"> <table>
<div class="flexcolumn-1"> <thead>
<div class="flexpart"> <tr>
<div class="flexpart-header"><img src="icons/magic/symbols/star-inverted-yellow.webp" class="flexpart-icon">{{localize "midgard5.spellCasting"}}</div> <th class="title">{{localize "TYPES.Item.spell"}}</th>
<table> <th class="title">{{localize "midgard5.ew"}}</th>
<tr height = 10px></tr> <th class="title"></th>
<tr> <td><a class="title add-spell"><i class="fa-regular fa-plus"></i></a></th>
<td bgcolor="#eaead7" class="padding edit-item highlight" >{{localize "midgard5.spellCasting"}}</td> </tr>
<td bgcolor="#eaead7" class="center">{{data.calc.stats.spellCasting.value}}</td> </thead>
<td bgcolor="#eaead7" class="fixed-value" style="border-right: 1px solid black;"><button class="roll-button roll-cleanSpell-button" /></td> <tbody class="items-list">
<td class="padding edit-item highlight">{{localize "midgard5.defense"}}</td> {{#each data.calc.spells as |item itemId|}}
<td class="center">{{add data.calc.stats.defense.value data.calc.stats.defenseBonus.value}}</td> <tr data-item-id="{{itemId}}" class="item">
<td class="fixed-value" style="border-right: 1px solid black;"><button class="roll-button roll-defense-button"></button></td> <td class="padding edit-item">
<td bgcolor="#eaead7" class="padding edit-item highlight">{{localize "midgard5.resistanceMind"}}</td> <span>{{item.label}}</span>
<td bgcolor="#eaead7" class="center">{{data.calc.stats.resistanceMind.value}}</td> <span class="spell-process">{{localize item.process}}</span>
<td bgcolor="#eaead7" class="fixed-value" style="border-right: 1px solid black;"><button class="roll-button roll-resistanceMind-button"></button></td> </td>
<td class="padding edit-item highlight">{{localize "midgard5.resistanceBody"}}</td> <td class="fixed-value">{{item.calc.ew}}</td>
<td class="center">{{data.calc.stats.resistanceBody.value}}</td> <td class="fixed-value"><button class="roll-button roll-weapon-button" /></td>
<td class="fixed-value"><button class="roll-button roll-resistanceBody-button"></button></td> <td class="fixed-value"><a class="item-delete" title="Delete Item"><i class="fas fa-trash"></i></a></td>
</tr> </tr>
</table> {{/each}}
</div> </tbody>
</div> </table>
<div class="flexcolumn-1">
<div class="flexpart">
<div class="flexpart-header"><img src="icons/sundries/books/book-turquoise-moon.webp" class="flexpart-icon">{{localize "TYPES.Item.spell"}}</div>
<table>
<thead>
<tr>
<th class="title"><img src="/icons/svg/eye.svg" class="table-icon"></th>
<th class="title">{{localize "TYPES.Item.spell"}}</th>
<th class="title">{{localize "midgard5.spell-type"}}</th>
<th class="title">{{localize "midgard5.spell-castDuration-short"}}</th>
<th class="title">{{localize "midgard5.actor-ap-short"}}</th>
<th class="title">{{localize "midgard5.spell-range-short"}}</th>
<th class="title">{{localize "midgard5.spell-effectTarget"}}</th>
<th class="title">{{localize "midgard5.spell-effectArea-short"}}</th>
<th class="title">{{localize "midgard5.spell-effectDuration-short"}}</th>
<th class="title">{{localize "midgard5.ew"}}</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>
<td><a class="title add-spell"><i class="fa-regular fa-plus"></i></a></th>
</tr>
</thead>
<tbody class="items-list">
{{#each data.calc.spells as |item itemId|}}
<tr data-item-id="{{itemId}}" class="item">
<td class="flexpart-img"><img src={{item.icon}} class="flexpart-icon"></td>
<td class="padding edit-item">
<span>{{item.label}}</span>
<span class="spell-process">{{localize item.process}}</span>
</td>
<td class="fixed-value">{{localize (m5concat 'midgard5.spell-type-' item.type)}}</td>
<td class="fixed-value">{{item.castDuration}}</td>
<td class="fixed-value">{{item.ap}}</td>
<td class="fixed-value">{{item.range}}</td>
<td class="fixed-value">{{localize (m5concat 'midgard5.spell-target-' item.effectTarget)}}</td>
<td class="fixed-value">{{item.effectArea}}</td>
<td class="fixed-value">{{item.effectDuration}}</td>
<td class="fixed-value">{{item.calc.ew}}</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 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>
</div>
</div>
</div>
{{#if (eq data.types.actor)}}
<div class="flexcolumn-1">
<div class="flexpart">
<div class="flexpart-header">{{localize "midgard5.pp"}} {{localize "midgard5.spells"}}</div>
<table>
<tbody>
<tr>
<td colspan="4">
<div class="flexrow">
{{#each data.lernKostenZauber as |group name|}}
<span data-pp-name="{{name}}" class="pp-listing">
<label for="data.lernKostenZauber.{{name}}">{{localize (m5concat "midgard5.spell-process-" name)}}</label>
<span >
<i class="fa fa-minus-circle pp-decrease" style="cursor: pointer"></i>
<input style="width:15px" type="number" value={{group.pp}} data-dtype="Number" />
<i class="fa fa-plus-circle pp-increase" style="cursor: pointer"></i>
</span>
</span>
{{/each}}
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
{{/if}}
</div>
+1 -7
View File
@@ -51,15 +51,9 @@
<td> <td>
<div class="flexrow"> <div class="flexrow">
<span>{{localize "midgard5.item-weight"}}</span> <span>{{localize "midgard5.item-weight"}}</span>
<input id="data.weight" type="number" name="data.weight" value="{{data.weight}}kg"> <input id="data.weight" type="number" name="data.weight" value="{{data.weight}}">
</div> </div>
</td> </td>
<td>
<div class="flexrow">
<span>{{localize "midgard5.item-abw"}}</span>
<input id="data.abw" type="number" name="data.abw" value="{{data.abw}}">
</div>
</td>
</tr> </tr>
<tr> <tr>
<td> <td>
-109
View File
@@ -1,109 +0,0 @@
<form class="" autocomplete="off">
<header class="sheet-header">
<img class="item-img" src="{{item.img}}" data-edit="img" title="{{item.name}}" />
<h1><input name="name" type="text" value="{{item.name}}" placeholder="Name" /></h1>
</header>
<nav class="sheet-navigation tabs" data-group="primary">
<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="combat">{{localize "midgard5.combat"}}</a>
{{#if data.magicUsing}}
<a class="item" data-tab="spells">{{localize "midgard5.spells"}}</a>
{{/if}}
<a class="item" data-tab="description">{{localize "midgard5.description"}}</a>
</nav>
<section class="sheet-content">
<div class="tab base_values flexcol" data-group="primary" data-tab="base_values">
<table>
<tbody>
<tr>
<td colspan="4">
<div class="flexrow">
<span>
<input id="data.magicUsing" type="checkbox" name="data.magicUsing" {{checked data.magicUsing}} />
<label for="data.magicUsing">{{localize "midgard5.magicUsing"}}</label>
</span>
</div>
</td>
</tr>
<tr>
<td>{{localize "midgard5.resistanceMind"}}</td>
<td><input style="width:35px" name="data.resistanceMind" type="number" value="{{data.resistanceMind}}" data-dtype="Number" /></td>
<td>{{localize "midgard5.resistanceBody"}}</td>
<td><input style="width:35px" name="data.resistanceBody" type="number" value="{{data.resistanceBody}}" data-dtype="Number" /></td>
</tr>
</tbody>
</table>
</div>
<div class="tab skills flexcol" data-group="primary" data-tab="skills">
<table>
<tbody>
<tr>
<td colspan="4">
<div class="flexrow">
{{#each data.lernKostenAllgemein as |wert name|}}
<span style="flex: 1 0 26%">
<label for="data.lernKostenAllgemein.{{name}}">{{localize (m5concat "midgard5.skill-goup-" name)}}</label>
<input style="width:35px" name="data.lernKostenAllgemein.{{name}}" type="number" value={{wert}} data-dtype="Number" />
</span>
{{/each}}
</div>
</td>
</tr>
</tbody>
</table>
</div>
<div class="tab combat flexcol" data-group="primary" data-tab="combat">
<table>
<tbody>
<tr>
<td colspan="4">
<div class="flexrow">
{{#each data.lernKostenKamptechnik as |wert name|}}
<span style="flex: 1 0 26%">
<label for="data.lernKostenKamptechnik.{{name}}">{{localize (m5concat "midgard5." name)}}</label>
<input style="width:35px" name="data.lernKostenKamptechnik.{{name}}" type="number" value={{wert}} data-dtype="Number" />
</span>
{{/each}}
</div>
</td>
</tr>
</tbody>
</table>
</div>
<div class="tab spells flexcol" data-group="primary" data-tab="spells">
<table>
<tbody>
<tr>
<td colspan="4">
<div class="flexrow">
{{#each data.lernKostenZauber as |wert name|}}
<span style="flex: 1 0 26%">
<label for="data.lernKostenZauber.{{name}}">{{localize (m5concat "midgard5.spell-process-" name)}}</label>
<input style="width:35px" name="data.lernKostenZauber.{{name}}.kosten" type="number" value={{wert.kosten}} data-dtype="Number" />
</span>
{{/each}}
</div>
</td>
</tr>
</tbody>
</table>
</div>
<div class="tab description flexcol" data-group="primary" data-tab="description">
{{editor content=data.description target="data.description" button=true owner=owner editable=editable}}
</div>
</section>
</form>
-18
View File
@@ -18,12 +18,6 @@
</span> </span>
</div> </div>
</td> </td>
<td>
<div class="flexrow">
<span>{{localize "midgard5.item-abw"}}</span>
<input id="data.abw" type="number" name="data.abw" value="{{data.abw}}">
</div>
</td>
</tr> </tr>
<tr> <tr>
<td> <td>
@@ -32,12 +26,6 @@
<input id="data.quantity" type="number" name="data.quantity" value="{{data.quantity}}"> <input id="data.quantity" type="number" name="data.quantity" value="{{data.quantity}}">
</div> </div>
</td> </td>
<td>
<div class="flexrow">
<span>{{localize "midgard5.capacity"}}</span>
<input id="data.capacity" type="number" name="data.capacity" value="{{data.capacity}}">
</div>
</td>
</tr> </tr>
<tr> <tr>
<td> <td>
@@ -54,12 +42,6 @@
</select> </select>
</div> </div>
</td> </td>
<td>
<div class="flexrow">
<span>{{localize "midgard5.item-weight"}}</span>
<input id="data.weight" type="number" name="data.weight" value="{{data.weight}}">
</div>
</td>
</tr> </tr>
</table> </table>
+1 -7
View File
@@ -55,15 +55,9 @@
<td> <td>
<div class="flexrow"> <div class="flexrow">
<span>{{localize "midgard5.item-weight"}}</span> <span>{{localize "midgard5.item-weight"}}</span>
<input id="data.weight" type="number" name="data.weight" value="{{data.weight}}kg"> <input id="data.weight" type="number" name="data.weight" value="{{data.weight}}">
</div> </div>
</td> </td>
<td>
<div class="flexrow">
<span>{{localize "midgard5.item-abw"}}</span>
<input id="data.abw" type="number" name="data.abw" value="{{data.abw}}">
</div>
</td>
</tr> </tr>
<tr> <tr>
<td> <td>
-5
View File
@@ -16,11 +16,6 @@
<input id="data.magic" type="checkbox" name="data.magic" {{checked data.magic}}> <input id="data.magic" type="checkbox" name="data.magic" {{checked data.magic}}>
<label for="data.magic">{{localize "midgard5.magic"}}</label> <label for="data.magic">{{localize "midgard5.magic"}}</label>
</span> </span>
<span>
<input id="data.unablesToAct" type="checkbox" name="data.unablesToAct" {{checked data.unablesToAct}}>
<label for="data.unablesToAct">{{localize "midgard5.unablesToAct"}}</label>
</span>
</div> </div>
</td> </td>
</tr> </tr>
+8 -12
View File
@@ -37,6 +37,8 @@
<input id="data.quantity" type="number" name="data.quantity" value="{{data.quantity}}"> <input id="data.quantity" type="number" name="data.quantity" value="{{data.quantity}}">
</div> </div>
</td> </td>
</tr>
<tr>
<td colspan="4"> <td colspan="4">
<div class="flexrow"> <div class="flexrow">
<span>{{localize "midgard5.item-value"}}</span> <span>{{localize "midgard5.item-value"}}</span>
@@ -51,18 +53,6 @@
</select> </select>
</div> </div>
</td> </td>
<td>
<div class="flexrow">
<span>{{localize "midgard5.item-weight"}}</span>
<input id="data.weight" type="number" name="data.weight" value="{{data.weight}}">
</div>
</td>
<td>
<div class="flexrow">
<span>{{localize "midgard5.item-abw"}}</span>
<input id="data.abw" type="number" name="data.abw" value="{{data.abw}}">
</div>
</td>
</tr> </tr>
<tr> <tr>
@@ -83,6 +73,12 @@
{{/if}} {{/if}}
</div> </div>
</td> </td>
<td>
<div class="flexrow">
<span>{{localize "midgard5.item-weight"}}</span>
<input id="data.weight" type="number" name="data.weight" value="{{data.weight}}">
</div>
</td>
</tr> </tr>
</table> </table>
+2 -28
View File
@@ -22,20 +22,6 @@
<td>{{localize "midgard5.actor-ap"}}</td> <td>{{localize "midgard5.actor-ap"}}</td>
<td><input name="data.ap" type="text" value="{{data.ap}}" data-dtype="String" /></td> <td><input name="data.ap" type="text" value="{{data.ap}}" data-dtype="String" /></td>
</tr> </tr>
<tr>
<td>{{localize "midgard5.kampfkunst-ep"}}</td>
<td><input name="data.ep" type="text" value="{{data.ep}}" data-dtype="String" /></td>
{{#unless item.system.isKido}}
<td>{{localize "midgard5.kampfkunst-rank"}}</td>
<td><input name="data.rank" type="number" value="{{data.rank}}" data-dtype="Number" /></td>
{{/unless}}
</tr>
<tr>
<td>{{localize "midgard5.kampfkunst-weapon"}}</td>
<td><input name="data.weapon" type="text" value="{{data.weapon}}" data-dtype="String" /></td>
<td>{{localize "midgard5.kampfkunst-enemy"}}</td>
<td><input name="data.enemy" type="text" value="{{data.enemy}}" data-dtype="String" /></td>
</tr>
<tr> <tr>
{{#unless item.system.isKido}} {{#unless item.system.isKido}}
<td>{{localize "midgard5.kampfkunst-type"}}</td> <td>{{localize "midgard5.kampfkunst-type"}}</td>
@@ -61,6 +47,7 @@
</td> </td>
{{/unless}} {{/unless}}
{{#unless item.system.isKido}} {{#unless item.system.isKido}}
{{#if (eq item.system.type "angriff")}}
<td>{{localize "midgard5.kampfkunst-variante"}}</td> <td>{{localize "midgard5.kampfkunst-variante"}}</td>
<td> <td>
<select class="select-variante" name="data.variante" data-type="String"> <select class="select-variante" name="data.variante" data-type="String">
@@ -71,6 +58,7 @@
{{/select}} {{/select}}
</select> </select>
</td> </td>
{{/if}}
{{else}} {{else}}
{{#unless (eq item.system.type "finte")}} {{#unless (eq item.system.type "finte")}}
<td>{{localize "midgard5.kido-variante"}}</td> <td>{{localize "midgard5.kido-variante"}}</td>
@@ -85,20 +73,6 @@
</td> </td>
{{/unless}} {{/unless}}
{{/unless}} {{/unless}}
{{#if item.system.isKido}}
<tr>
<td>{{localize "midgard5.kido-color"}}</td>
<td><input name="data.color" type="text" value="{{data.color}}" data-dtype="String" /></td>
<td>{{localize "midgard5.kido-style"}}</td>
<td><input name="data.style" type="text" value="{{data.style}}" data-dtype="String" /></td>
</tr>
<tr>
<td>{{localize "midgard5.kido-grade"}}</td>
<td><input name="data.grade" type="text" value="{{data.grade}}" data-dtype="String" /></td>
<td>{{localize "midgard5.kido-rank"}}</td>
<td><input name="data.rank" type="number" value="{{data.rank}}" data-dtype="Number" /></td>
</tr>
{{/if}}
</tr> </tr>
<td>{{localize "midgard5.skill"}}</td> <td>{{localize "midgard5.skill"}}</td>
<td> <td>
+1 -7
View File
@@ -60,15 +60,9 @@
<td> <td>
<div class="flexrow"> <div class="flexrow">
<span>{{localize "midgard5.item-weight"}}</span> <span>{{localize "midgard5.item-weight"}}</span>
<input id="data.weight" type="number" name="data.weight" value="{{data.weight}}kg"> <input id="data.weight" type="number" name="data.weight" value="{{data.weight}}">
</div> </div>
</td> </td>
<td>
<div class="flexrow">
<span>{{localize "midgard5.item-abw"}}</span>
<input id="data.abw" type="number" name="data.abw" value="{{data.abw}}">
</div>
</td>
</tr> </tr>
<tr> <tr>
<td> <td>
-4
View File
@@ -1,4 +0,0 @@
<div class="sheet-npc" style="flex: 1 0 20%" data-attribute="{{attributeId}}">
<div class="attribute-header">{{localize (m5concat "midgard5.actor-" attributeId "-long")}}</div>
<div class="attribute-value"> <input class="attribute-footer-value" name="data.attributes.{{attributeId}}.value" value="{{attribute.value}}" type="text" data-dtype="Number" /></div>
</div>
-233
View File
@@ -1,233 +0,0 @@
<div class="flexbox">
<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></td>
<td class="fixed-value"></td>
</tr>
<tr>
<td>{{localize "midgard5.initiative"}}</td>
<td class="fixed-value">
{{#if (isSkillInList (localizeMidgard "anfuehren") data.calc.skills.general)}}
{{skillEwInList (localizeMidgard "anfuehren") data.calc.skills.general}}
{{else}}
{{skillEw actor._id data.skills.general.anfuehren}}
{{/if}}
</td>
<td>{{localize "midgard5.actionrank"}}</td>
<td class="fixed-value"><a class="join-combat">{{data.calc.attributes.gw.value}}</a></td>
</tr>
</table>
</div>
</div>
<div class="flexcolumn-3">
<div class="flexpart" style="padding: 0 0.5rem;">
<div class="flexpart-header">{{localize "midgard5.actionrank"}}</div>
<button class="wide-button join-combat">{{localize "midgard5.combat-join"}}</button>
<button class="wide-button ranged-combat">{{localize "midgard5.combat-ranged"}}</button>
<button class="wide-button spell-combat">{{localize "midgard5.combat-spell"}}</button>
</div>
</div>
<div class="flexcolumn-3">
<div class="flexpart">
<div class="flexpart-header"><img src="icons/magic/life/cross-worn-green.webp" class="flexpart-icon">{{localize "TYPES.Item.effect"}}</div>
<table>
<thead>
<tr>
<th class="title"><img src="/icons/svg/eye.svg" class="table-icon"></th>
<th class="title">{{localize "TYPES.Item.effect"}}</th>
<td><a class="title add-effect"><i class="fa-regular fa-plus"></i></a></th>
</tr>
</thead>
<tbody class="items-list">
{{#each data.calc.gear.effects as |item itemId|}}
<tr data-item-id="{{itemId}}" class="items">
<td class="flexpart-img"><img src={{item.icon}} class="flexpart-icon"></td>
<td class="padding">
<span class="edit-item">{{item.label}}</span>
{{#if item.equipped}}
<span class="spell-process">{{localize "midgard5.active"}}</span>
{{#unless (or (eq item.duration.unit "") (eq item.duration.unit "limitless"))}}
<span class="spell-process">{{item.duration.time}} {{localize (concat "midgard5.time-" item.duration.unit)}}</span>
{{/unless}}
{{/if}}
</td>
{{!--{{#unless (eq item.label "Belastung")}}--}}
<td class="fixed-value"><a class="item-delete" title="Delete Item"><i class="fas fa-trash"></i></a></td>
{{!--{{/unless}}--}}
</tr>
{{/each}}
</tbody>
</table>
</div>
</div>
<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"><img src="/icons/svg/eye.svg" class="table-icon"></th>
<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"><img src="/icons/svg/d20.svg" class="table-icon"></th>
<td><a class="title add-weapon"><i class="fa-regular fa-plus"></i></a></th>
</tr>
</thead>
<tbody class="items-list">
{{#each data.calc.gear.weapons as |item itemId|}}
<tr data-item-id="{{itemId}}" class="item">
<td class="flexpart-img"><img src={{item.icon}} class="flexpart-icon"></td>
<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><button class="roll-button roll-weapon-button"></button></td>
<td><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"><img src="/icons/svg/eye.svg" class="table-icon"></th>
<th class="title">{{localize "midgard5.weapon-skill"}}</th>
<th class="title">{{localize "midgard5.ew"}}</th>
<th class="title"><img src="/icons/svg/d20.svg" class="table-icon"></th>
<th><a class="title add-combat-skill"><i class="fa-regular fa-plus"></i></th>
</tr>
</thead>
<tbody class="items-list">
{{#each data.calc.skills.combat as |skill skillId|}}
<tr data-item-id="{{skillId}}" class="item">
<td class="flexpart-img"><img src={{skill.icon}} class="flexpart-icon"></td>
<td class="padding edit-item">{{skill.label}}</td>
<td class="fixed-value">{{skill.calc.ew}}</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-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 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 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 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"><img src="/icons/svg/eye.svg" class="table-icon"></th>
<th class="title">{{localize "TYPES.Item.defensiveWeapon"}}</th>
<th class="title">{{localize "midgard5.ew"}}</th>
<th class="title"><img src="/icons/svg/d20.svg" class="table-icon"></th>
<th><a class="title add-defensiveWeapon"><i class="fa-regular fa-plus"></i></a></th>
</tr>
</thead>
<tbody class="items-list">
{{#each data.calc.gear.defensiveWeapons as |item itemId|}}
<tr data-item-id="{{itemId}}" class="item">
<td class="flexpart-img"><img src={{item.icon}} class="flexpart-icon"></td>
<td class="padding edit-item">{{item.label}}</td>
<td class="fixed-value">{{item.calc.ew}}</td>
<td><button class="roll-button roll-weapon-button"></button></td>
<td><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"><img src="/icons/svg/eye.svg" class="table-icon"></th>
<th class="title">{{localize "TYPES.Item.armor"}}</th>
<th class="title">{{localize "midgard5.actor-lp-short"}}</th>
<th><a class="title add-armor"><i class="fa-regular fa-plus"></i></a></th>
</tr>
</thead>
<tbody class="items-list">
{{#each data.calc.gear.armor as |item itemId|}}
<tr data-item-id="{{itemId}}" class="item">
<td class="flexpart-img"><img src={{item.icon}} class="flexpart-icon"></td>
<td class="padding edit-item">{{item.label}}</td>
<td class="fixed-value">{{lpProtection}}</td>
<td><a class="item-delete" title="Delete Item"><i class="fas fa-trash"></i></a></td>
</tr>
{{/each}}
</tbody>
</table>
</div>
</div>
{{#if actor.system.info.magicUsing }}
<div class="flexcolumn-3">
<div class="flexpart">
<div class="flexpart-header"><img src="icons/magic/symbols/star-inverted-yellow.webp" class="flexpart-icon">{{localize "TYPES.Item.spell"}}</div>
<table>
<tr height = 10px></tr>
<tr>
<td class="padding highlight">{{localize "midgard5.spellCasting"}}</td>
<td class="center">{{data.calc.stats.spellCasting.value}}</td>
<td class="fixed-value"><button class="roll-button roll-defense-button"></button></td>
</tr>
</table>
<table>
<thead>
<tr>
<th class="title"><img src="/icons/svg/eye.svg" class="table-icon"></th>
<th class="title">{{localize "TYPES.Item.spell"}}</th>
<th class="title">{{localize "midgard5.ew"}}</th>
<th class="title"><img src="/icons/svg/d20.svg" class="table-icon"></th>
<th><a class="title add-spell"><i class="fa-regular fa-plus"></i></a></th>
</tr>
</thead>
<tbody class="items-list">
{{#each data.calc.spells as |item itemId|}}
<tr data-item-id="{{itemId}}" class="item">
<td class="flexpart-img"><img src={{item.icon}} class="flexpart-icon"></td>
<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><button class="roll-button roll-weapon-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>
{{/if}}
</div>
-18
View File
@@ -1,18 +0,0 @@
<div class="flexbox">
<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 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 data.info.background target="data.info.background" button=true owner=owner editable=editable}}</div>
</div>
</div>
</div>
-127
View File
@@ -1,127 +0,0 @@
<form class="actor-sheet {{cssClass}}" autocomplete="off">
<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 >{{localize "midgard5.actor-name"}}</td>
<td colspan="3"><input name="name" type="text" value="{{actor.name}}" data-dtype="String" /></td>
</tr>
<tr>
<td >{{localize "midgard5.class"}}</td>
<td ><input name="data.info.npc-class" type="text" value="{{data.info.npc-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 ><input name="data.info.race" type="text" value="{{data.info.race}}" data-dtype="String" /></td>
<td ><input name="data.info.occupation" type="text" value="{{data.info.occupation}}" data-dtype="String" /></td>
</tr>
<tr>
<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>
</table>
<table style="width: 100%;">
<tr>
<td class="attribute-value roll-attribute-button" data-attribute="st" data-value="{{data.attributes.st.value}}">{{data.attributes.st.value}}</td>
<td class="attribute-value roll-attribute-button" data-attribute="gs" data-value="{{data.attributes.gs.value}}">{{data.attributes.gs.value}}</td>
<td class="attribute-value roll-attribute-button" data-attribute="gw" data-value="{{data.attributes.gw.value}}">{{data.attributes.gw.value}}</td>
<td class="attribute-value roll-attribute-button" data-attribute="ko" data-value="{{data.attributes.ko.value}}">{{data.attributes.ko.value}}</td>
<td class="attribute-value roll-attribute-button" data-attribute="in" data-value="{{data.attributes.in.value}}">{{data.attributes.in.value}}</td>
<td class="attribute-value roll-attribute-button" data-attribute="zt" data-value="{{data.attributes.zt.value}}">{{data.attributes.zt.value}}</td>
<td class="attribute-value roll-attribute-button" data-attribute="au" data-value="{{data.attributes.au.value}}">{{data.attributes.au.value}}</td>
<td class="attribute-value roll-attribute-button" data-attribute="pa" data-value="{{data.attributes.pa.value}}">{{data.attributes.pa.value}}</td>
<td class="attribute-value roll-attribute-button" data-attribute="wk" data-value="{{data.attributes.wk.value}}">{{data.attributes.wk.value}}</td>
<td class="attribute-value roll-attribute-button" data-attribute="git" data-value="{{data.attributes.git.value}}">{{data.attributes.git.value}}</td>
</tr>
<tr>
<td class="attribute">{{localize "midgard5.actor-st"}}</td>
<td class="attribute">{{localize "midgard5.actor-gs"}}</td>
<td class="attribute">{{localize "midgard5.actor-gw"}}</td>
<td class="attribute">{{localize "midgard5.actor-ko"}}</td>
<td class="attribute">{{localize "midgard5.actor-in"}}</td>
<td class="attribute">{{localize "midgard5.actor-zt"}}</td>
<td class="attribute">{{localize "midgard5.actor-au"}}</td>
<td class="attribute">{{localize "midgard5.actor-pa"}}</td>
<td class="attribute">{{localize "midgard5.actor-wk"}}</td>
<td class="attribute">{{localize "midgard5.actor-git"}}</td>
</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}}
<div class="max-value">{{data.lp.max}}</div>
</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}}
<div class="max-value">{{data.ap.max}}</div>
</div>
</td>
</tr>
</table>
</div>
</header>
{{!-- Character Sheet Navigation --}}
<nav class="sheet-navigation tabs" data-group="primary">
<a class="item active" data-tab="combat">{{ localize "midgard5.combat" }}</a>
<a class="item" data-tab="properties">{{ localize "midgard5.attributes" }}</a>
<a class="item" data-tab="description">{{ localize "midgard5.description" }}</a>
</nav>
<section class="sheet-content">
<div class="tab combat flexcol" data-group="primary" data-tab="combat">
{{> "systems/midgard5/templates/sheets/npc/combat.hbs"}}
</div>
<div class="tab properties flexcol" data-group="primary" data-tab="properties">
{{> "systems/midgard5/templates/sheets/npc/properties.hbs"}}
</div>
<div class="tab description flexcol" data-group="primary" data-tab="description">
{{> "systems/midgard5/templates/sheets/npc/description.hbs"}}
</div>
</section>
</form>
-117
View File
@@ -1,117 +0,0 @@
<div class="flexbox">
<div class="flexcolumn-1">
<div class="flexpart-header"><img src="icons/skills/melee/maneuver-sword-katana-yellow.webp" class="flexpart-icon">{{localize "midgard5.attributes"}}</div>
<div class="flexpart">
<div class="attributes">
{{> "systems/midgard5/templates/sheets/npc/attribute.hbs" attributeId="st" attribute=data.attributes.st}}
{{> "systems/midgard5/templates/sheets/npc/attribute.hbs" attributeId="gs" attribute=data.attributes.gs}}
{{> "systems/midgard5/templates/sheets/npc/attribute.hbs" attributeId="gw" attribute=data.attributes.gw}}
{{> "systems/midgard5/templates/sheets/npc/attribute.hbs" attributeId="ko" attribute=data.attributes.ko}}
{{> "systems/midgard5/templates/sheets/npc/attribute.hbs" attributeId="in" attribute=data.attributes.in}}
{{> "systems/midgard5/templates/sheets/npc/attribute.hbs" attributeId="zt" attribute=data.attributes.zt}}
{{> "systems/midgard5/templates/sheets/npc/attribute.hbs" attributeId="au" attribute=data.attributes.au}}
{{> "systems/midgard5/templates/sheets/npc/attribute.hbs" attributeId="pa" attribute=data.attributes.pa}}
{{> "systems/midgard5/templates/sheets/npc/attribute.hbs" attributeId="wk" attribute=data.attributes.wk}}
{{> "systems/midgard5/templates/sheets/npc/attribute.hbs" attributeId="git" attribute=data.attributes.git}}
<div class="sheet-npc">
<div class="attribute-header">{{localize "midgard5.movementRange"}}</div>
<div class="attribute-value"><input name="data.movement" type="text" value="{{data.calc.stats.movement.mods.0.value}}" data-dtype="Number" /></div>
</div>
<div class="sheet-npc">
<div class="attribute-header">{{localize "midgard5.exp-overall"}}</div>
<div class="attribute-value"><input name="data.es" type="text" value="{{data.es}}" data-dtype="Number" /></div>
</div>
<div class="sheet-npc">
<div class="attribute-header">{{localize "midgard5.actor-lp-short"}} {{localize "midgard5.maximum"}}</div>
<div class="attribute-value"><input name="data.lp.max" type="text" value="{{data.lp.max}}" data-dtype="Number" /></div>
</div>
<div class="sheet-npc">
<div class="attribute-header">{{localize "midgard5.actor-ap-short"}} {{localize "midgard5.maximum"}}</div>
<div class="attribute-value"><input name="data.ap.max" type="text" value="{{data.ap.max}}" data-dtype="Number" /></div>
</div>
<div class="sheet-npc">
<div class="attribute-header">{{localize "midgard5.magicUsing"}}</div>
<div class="attribute-value"><input id="data.info.magicUsing" type="checkbox" name="data.info.magicUsing" {{checked data.info.magicUsing}}></div>
</div>
</div>
</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.skills"}}</div>
<input id="data.info.showUnlearned" class="checkbox" type="checkbox" name="data.info.showUnlearned" {{checked data.info.showUnlearned}} style="float: right;">
<label for="data.info.showUnlearned" style="font-size: small; font-weight: normal; font-style: italic; float: right;">{{localize "midgard5.showUnlearned"}}&nbsp;</label>
<table>
<thead>
<tr>
<th class="title">{{localize "midgard5.skills"}}</th>
<th class="title">{{localize "midgard5.ew"}}</th>
<th class="title"><img src="/icons/svg/d20.svg" class="table-icon"></th>
<th><a class="title add-general-skill"><i class="fa-regular fa-plus"></i></a></th>
</tr>
</thead>
<tbody>
{{#each data.calc.skills.general as |skill skillId|}}
<tr data-item-id="{{skillId}}" class="item">
<td class="padding edit-item">{{skill.label}}</td>
<td class="fixed-value"><input type="text" value="{{skill.fw}}" 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}}
{{#unless (not data.info.showUnlearned)}}
{{#each data.skills.general as |skill key|}}
{{#unless (isSkillInList (localizeMidgard key) ../actor.system.calc.skills.general) }}
<tr data-skill="{{key}}">
<td class="padding" style="font-style: italic;">{{localizeMidgard key}}</td>
<td class="fixed-value"><input type="text" value="{{skill.fw}}" data-dtype="Number" /></td>
<td><button class="roll-button roll-general-button"></button></td>
<td><a class="learn-button" title="Learn Skill"><i class="fa-regular fa-plus"></i></a></td>
</tr>
{{/unless}}
{{/each}}
{{/unless}}
</tbody>
</table>
</div>
</div>
<div class="flexcolumn-2">
<div class="flexpart">
<div class="flexpart-header"><img src="icons/tools/hand/scale-balances-merchant-brown.webp" class="flexpart-icon">{{localize "midgard5.gear"}}</div>
<table>
<thead class="theader">
<tr>
<th class="title"><img src="/icons/svg/eye.svg" class="table-icon"></th>
<th class="title">{{localize "TYPES.Item.item"}}</th>
<th class="title center">{{localize "midgard5.item-quantity"}}</th>
<th class="title center">{{localize "midgard5.item-value"}}</th>
<td><a class="title add-item"><i class="fa-regular fa-plus"></i></a></th>
</tr>
</thead>
<tbody class="items-list">
<tr height = 10px></tr>
{{#each data.calc.gear.items as |item itemId|}}
<tr data-item-id="{{itemId}}" class="item">
<td class="flexpart-img"><img src={{item.icon}} class="flexpart-icon"></td>
<td class="padding">
<span class="edit-item">{{item.label}}</span>
</td>
<td>
<i class="fa fa-minus-circle quantity-decrease" style="cursor: pointer"></i>
<span>{{item.quantity}}</span>
<i class="fa fa-plus-circle quantity-increase" style="cursor: pointer"></i>
</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><a class="item-delete" title="Delete Item"><i class="fas fa-trash"></i></a></td>
</tr>
{{/each}}
</tbody>
</table>
</div>
</div>
</div>