Compare commits

..
50 Commits
Author SHA1 Message Date
Byroks c0dced6fe6 Merge branch 'develop' 2024-02-05 13:30:41 +01:00
Byroks c2aa466ce1 v2.4.2 2024-02-05 13:30:20 +01:00
Byroks 24426bb248 HotFix nicht öffenbare Charaktere
Changes:
 + Currency hat bei (fast) allen Items gefehlt weswegen das Charakterblatt nicht mehr öffenbar war, nachdem man Wert und Currency eingetragen hat.
 + Beachte Menge für Vermögensrechnung
 + Hort rechnung beachtet jetzt Currency
2024-02-05 13:29:29 +01:00
Byroks 5a41c4bb56 Merge branch 'develop' 2024-02-05 10:35:31 +01:00
Byroks 26b2bddc2d v2.4.1 2024-02-05 10:28:46 +01:00
9f1334da4f - Container behavior for Weapons, Def. Weapons and Armor is now the same as for items (#53)
- Fixed some Bugs

Co-authored-by: Ender <harald@drueppels.de>
Co-authored-by: Byroks <byroks@gmail.com>
Reviewed-on: #53
Reviewed-by: Byroks <byroks@gmail.com>
Co-authored-by: oskaloq <os_ka_loq@gmx.de>
Co-committed-by: oskaloq <os_ka_loq@gmx.de>
2024-01-31 18:31:32 +01:00
Byroks 454982906f Hotfix - can't open charaktersheet
Problem:
 +sometimes items had a null formula which blocked opening the sheet

Changes:
 + add ? to catch nulls
2024-01-22 22:24:12 +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 33c65735bd v2.4.0 2024-01-20 15:31:35 +01:00
Byroks 2bfd3a7d6a #46-problems-with-character-description-editor (#50)
Changes:
 + adjust height and width of the editor

WIP for #46
Closes #44

Reviewed-on: #50
2024-01-20 13:58:22 +01:00
Byroks 03b87f2df0 update url 2024-01-20 13:44:06 +01:00
Byroks 9d72b31d5f 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
2024-01-20 12:37:05 +01:00
oskaloqandEnder c13fef5103 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>
2024-01-16 11:25:39 +01:00
Byroks abf8077131 #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>
2024-01-16 08:29:14 +01:00
Byroks b5b75aa2c6 #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>
2024-01-15 14:15:30 +01:00
Byroks 7368673ba3 Update .gitea/workflows/add-issue-to-project.yaml 2024-01-08 20:42:22 +01:00
Byroks a606750b23 Update .gitea/workflows/add-issue-to-project.yaml 2024-01-08 20:41:15 +01:00
Byroks 7358b67da2 Update .gitea/workflows/add-issue-to-project.yaml 2024-01-08 20:41:05 +01:00
Byroks 2a36b8eaa1 Update .gitea/workflows/add-issue-to-project.yaml 2024-01-08 20:38:50 +01:00
Byroks f38ef8aa6d Update .gitea/workflows/add-issue-to-project.yaml 2024-01-08 16:16:04 +01:00
Byroks 2ac8a6bba4 Update .gitea/workflows/add-issue-to-project.yaml 2024-01-08 16:09:13 +01:00
Byroks 41fb1a8879 Update .gitea/workflows/add-issue-to-project.yaml 2024-01-08 16:02:37 +01:00
Byroks ff74871a0c Update .gitea/workflows/add-issue-to-project.yaml 2024-01-08 12:56:49 +01:00
Byroks f8b65c030f Update .gitea/workflows/add-issue-to-project.yaml 2024-01-08 12:39:39 +01:00
Byroks 31a4ccfda1 Update .gitea/workflows/add-issue-to-project.yaml 2024-01-08 12:37:43 +01:00
Byroks c24e2b7af2 Update .gitea/workflows/add-issue-to-project.yaml 2024-01-08 12:28:41 +01:00
cfdba0ee75 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>
2024-01-07 22:53:16 +01:00
Byroks d67de1b064 Update .gitea/workflows/add-issue-to-project.yaml 2024-01-07 16:47:12 +01:00
Byroks 718f1eab99 Update .gitea/workflows/add-issue-to-project.yaml 2024-01-07 16:38:35 +01:00
Byroks 47fd5b7763 Update .gitea/workflows/add-issue-to-project.yaml 2024-01-07 16:37:27 +01:00
Byroks ad884994dd Update .gitea/workflows/add-issue-to-project.yaml 2024-01-07 16:17:20 +01:00
Byroks b08bd195c7 Update .gitea/workflows/add-issue-to-project.yaml 2024-01-07 15:45:46 +01:00
Byroks c83cd8f079 Update .gitea/workflows/add-issue-to-project.yaml 2024-01-07 15:40:56 +01:00
Byroks b1ef88235f Update .gitea/workflows/add-issue-to-project.yaml 2024-01-07 15:37:37 +01:00
Byroks da1ae4e16e Update .gitea/workflows/add-issue-to-project.yaml 2024-01-07 15:35:54 +01:00
Byroks 840a7c1dc4 Update .gitea/workflows/add-issue-to-project.yaml 2024-01-07 15:33:26 +01:00
Byroks 4825166f87 Add .gitea/workflows/add-issue-to-project.yaml 2024-01-07 15:06:01 +01:00
Le-FriqueandByroks b8e873537c 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>
2024-01-07 14:31:20 +01:00
Byroks 975bcd1e15 #10 Kampfkunst nicht öffenbar (#11)
Änderungen:
 + auskommentierte if Bedingung wieder drin
 + if Bedingung angepasst

Reviewed-on: #11
Reviewed-by: Le-Frique <lefrique@live.de>
2024-01-07 14:29:39 +01:00
b945f22710 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>
2024-01-03 15:57:15 +01:00
Byroks 6baf9a0269 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>
2023-12-18 19:53:37 +01:00
Byroks 8a3c632c7d Merge branch 'develop' 2023-12-15 21:36:50 +01:00
Byroks 91f12b11da v2.3.1 2023-12-15 21:36:33 +01:00
ByroksandGitHub bfa51605bc Add Consumable Items (#62)
Changes:
 + add Quantity value for items
 + add plus and minus buttons for list
 + add roll button if item contains formulas
 + decrease quantity by 1 if rolled
2023-12-15 21:34:32 +01:00
ByroksandGitHub c313d3448c Add Roll Modification (#61)
Changes:
 + add roll Mod (only for attributes)
 + check for roll mods when rolling on attributes
2023-12-15 20:40:23 +01:00
ByroksandGitHub 31cfd52131 Add currency to character sheet (#60)
Changes:
 + add fields to track currency
 + show value of standard items
2023-12-15 20:39:29 +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
41 changed files with 1977 additions and 681 deletions
@@ -0,0 +1,15 @@
name: Move new issues into To Do
on:
issues:
types: [opened]
jobs:
createCard:
runs-on: ubuntu-latest
steps:
- name: Close Issue
run: >
curl -X PATCH -H "Content-Type: application/xml"
-H "Authorization: token ${{ secrets.GITEA_TOKEN }}
-d '{ "state": "To Do" }'
"${{ gitea.event.issue.url }}"
Binary file not shown.

After

Width:  |  Height:  |  Size: 173 KiB

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

After

Width:  |  Height:  |  Size: 956 B

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

After

Width:  |  Height:  |  Size: 508 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 85 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 84 KiB

Executable → Regular
BIN
View File
Binary file not shown.

Before

Width:  |  Height:  |  Size: 58 KiB

After

Width:  |  Height:  |  Size: 11 KiB

+2 -2
View File
@@ -6,7 +6,7 @@ _**Warnung:** Das System befindet sich noch in der Entwicklung._
Gehe auf die Setup-Seite deiner Foundry VTT Instanz. Klicke im Reiter **Game Systems** auf den Button **Install System**. In dem dann geöffneten Dialog, unten in der Zeile **Manifest URL** den Link zur aktuellen (oder gewünschten) Version der _system.json_ eintragen und auf **Install** klicken: Gehe auf die Setup-Seite deiner Foundry VTT Instanz. Klicke im Reiter **Game Systems** auf den Button **Install System**. In dem dann geöffneten Dialog, unten in der Zeile **Manifest URL** den Link zur aktuellen (oder gewünschten) Version der _system.json_ eintragen und auf **Install** klicken:
https://github.com/byroks/foundry-vtt-system-midgard5/releases/download/v1.3.0/system.json https://git.byroks.de/MidgardVTT-Entwicklung/foundry-vtt-system-midgard5/releases/download/v1.3.0/system.json
Danach kann eine Spielwelt mit dem System erstellt werden. Danach kann eine Spielwelt mit dem System erstellt werden.
@@ -32,7 +32,7 @@ Dieser Reiter enthält (mit Ausname von Zaubern) alle zu erlernenden Dinge des C
![Blaupausen für Gegenstände](compendium-items.de.png) ![Blaupausen für Gegenstände](compendium-items.de.png)
Es kann einfach per Drag'n'Drop die entsprechende Blaupause auf den Charakterbogen gezogen werden, um eine Fertigkeit/Fähigkeit/Sprache zu *lernen.* Alternativ kann auch der **Lernen** Button bei den **ungelernten Fertigkeiten** geklickt werden. Es kann einfach per Drag'n'Drop die entsprechende Blaupause auf den Charakterbogen gezogen werden, um eine Fertigkeit/Fähigkeit/Sprache zu _lernen._ Alternativ kann auch der **Lernen** Button bei den **ungelernten Fertigkeiten** geklickt werden.
Um den **Fertigkeitswert** und die **Leiteigenschaft** einer Fertigkeit anzupassen, kann man auf die Fertigkeit klicken. Dann geht folgender Dialog auf: Um den **Fertigkeitswert** und die **Leiteigenschaft** einer Fertigkeit anzupassen, kann man auf die Fertigkeit klicken. Dann geht folgender Dialog auf:
+1 -2
View File
@@ -1,5 +1,4 @@
{ {
"moduleName": "Midgard 5. Edition", "moduleName": "Midgard 5. Edition",
"repository": "https://github.com/Byroks/foundry-vtt-system-midgard5", "repository": "https://git.byroks.de/MidgardVTT-Entwicklung/foundry-vtt-system-midgard5"
"rawURL": "https://raw.githubusercontent.com/Byroks/foundry-vtt-system-midgard5"
} }
+1 -1
View File
@@ -423,7 +423,7 @@ const updateManifest = (cb: any) => {
cb(Error("Manifest JSON not found")); cb(Error("Manifest JSON not found"));
return; return;
} }
if (!rawURL || !repoURL) cb(Error("Repository URLs not configured in foundryconfig.json")); if (!repoURL) cb(Error("Repository URLs not configured in foundryconfig.json"));
try { try {
const version = argv.update || argv.u; const version = argv.update || argv.u;
+54 -8
View File
@@ -4,17 +4,20 @@
"ACTOR.TypeVehicle": "Transportmittel / Pferd etc.", "ACTOR.TypeVehicle": "Transportmittel / Pferd etc.",
"TYPES.Item.item": "Gegenstand", "TYPES.Item.item": "Gegenstand",
"TYPES.Item.skill": "Fertigkeit",
"TYPES.Item.weapon": "Waffe", "TYPES.Item.weapon": "Waffe",
"TYPES.Item.defensiveWeapon": "Verteidigungswaffe", "TYPES.Item.defensiveWeapon": "Verteidigungswaffe",
"TYPES.Item.armor": "Rüstung", "TYPES.Item.armor": "Rüstung",
"TYPES.Item.spell": "Zauber", "TYPES.Item.spell": "Zauber",
"TYPES.Item.effect": "Aktive Effekte", "TYPES.Item.effect": "Aktiver Effekt",
"TYPES.Item.kampfkunst": "Kampfkünste", "TYPES.Item.kampfkunst": "Kampfkunst",
"TYPES.Item.container": "Aufbewahrung",
"midgard5.phase-action": "Handlungsphase", "midgard5.phase-action": "Handlungsphase",
"midgard5.phase-movement": "Bewegungsphase", "midgard5.phase-movement": "Bewegungsphase",
"midgard5.no-encounter": "Kein Kampf", "midgard5.no-encounter": "Kein Kampf",
"midgard5.encounter-not-started": "Kein aktiver Kampf", "midgard5.encounter-not-started": "Kein aktiver Kampf",
"midgard5.initiative": "Initiative",
"midgard5.time-duration": "Dauer", "midgard5.time-duration": "Dauer",
"midgard5.time-round": "Runde(n)", "midgard5.time-round": "Runde(n)",
@@ -27,11 +30,20 @@
"midgard5.label": "Bezeichnung", "midgard5.label": "Bezeichnung",
"midgard5.description": "Beschreibung", "midgard5.description": "Beschreibung",
"midgard5.attribute": "Leiteigenschaft", "midgard5.Characteristic": "Merkmal",
"midgard5.characteristics": "Merkmale",
"midgard5.background": "Hintergrund",
"midgard5.attribute": "Eigenschaft",
"midgard5.attributes": "Eigenschaften",
"midgard5.points": "Punkte",
"midgard5.calculated-value": "Berechneter Wert",
"midgard5.calculated-values": "Sonstige Werte",
"midgard5.skill": "Fertigkeit", "midgard5.skill": "Fertigkeit",
"midgard5.skill-value": "Fertigkeitswert", "midgard5.skill-value": "Fertigkeitswert",
"midgard5.fw": "FW", "midgard5.fw": "FW",
"midgard5.bonus": "Bonus", "midgard5.bonus": "Bonus",
"midgard5.bonuses": "Boni",
"midgard5.ew": "EW", "midgard5.ew": "EW",
"midgard5.pp-short": "PP", "midgard5.pp-short": "PP",
"midgard5.pp": "Praxispunkte", "midgard5.pp": "Praxispunkte",
@@ -40,6 +52,7 @@
"midgard5.item-quantity": "Menge", "midgard5.item-quantity": "Menge",
"midgard5.item-onbody": "Am Körper", "midgard5.item-onbody": "Am Körper",
"midgard5.item-ismagic": "Ist Magisch", "midgard5.item-ismagic": "Ist Magisch",
"midgard5.item-wealth": "Vermögenswert",
"midgard5.actor-lp": "Lebenspunkte", "midgard5.actor-lp": "Lebenspunkte",
"midgard5.actor-lp-short": "LP", "midgard5.actor-lp-short": "LP",
@@ -77,8 +90,12 @@
"midgard5.spells": "Zauber", "midgard5.spells": "Zauber",
"midgard5.effects": "Aktive Effekte", "midgard5.effects": "Aktive Effekte",
"midgard5.kampfkuenste": "Kampfkünste", "midgard5.kampfkuenste": "Kampfkünste",
"midgard5.combat": "Kampf",
"midgard5.class": "Klasse",
"midgard5.actor-name": "Figur",
"midgard5.level": "Grad",
"midgard5.class": "Typ",
"midgard5.race": "Rasse", "midgard5.race": "Rasse",
"midgard5.magicUsing": "Zauberkundig", "midgard5.magicUsing": "Zauberkundig",
"midgard5.gender": "Geschlecht", "midgard5.gender": "Geschlecht",
@@ -91,6 +108,19 @@
"midgard5.origin": "Heimat", "midgard5.origin": "Heimat",
"midgard5.faith": "Glaube", "midgard5.faith": "Glaube",
"midgard5.currency": "Geld",
"midgard5.currency-gold": "Gold",
"midgard5.currency-silver": "Silber",
"midgard5.currency-copper": "Kupfer",
"midgard5.currency-wealth": "Vermögen in GS",
"midgard5.currency-available": "verfügbares Vermögen",
"midgard5.hoard": "aktueller Hort",
"midgard5.hoardMin": "benötigter Mindesthort",
"midgard5.hoard-next": "Hort für nächsten Grad",
"midgard5.hoarded": "Hort",
"midgard5.no-container": "Ohne",
"midgard5.exp-overall": "Erfahrungsschatz", "midgard5.exp-overall": "Erfahrungsschatz",
"midgard5.exp-available": "Erfahrungspunkte", "midgard5.exp-available": "Erfahrungspunkte",
"midgard5.grace": "Göttliche Gnade", "midgard5.grace": "Göttliche Gnade",
@@ -197,25 +227,39 @@
"midgard5.enduranceBonus": "Ausdauerbonus", "midgard5.enduranceBonus": "Ausdauerbonus",
"midgard5.lpProtection": "Rüstungsschutz (LP)", "midgard5.lpProtection": "Rüstungsschutz (LP)",
"midgard5.apProtection": "Rüstungsschutz (AP)", "midgard5.apProtection": "Rüstungsschutz (AP)",
"midgard5.perception" : "Wahrnehmung", "midgard5.perception": "Wahrnehmung",
"midgard5.drinking" : "Trinken", "midgard5.drinking": "Trinken",
"midgard5.new-skill": "Neue Fertigkeit", "midgard5.new-skill": "Neue Fertigkeit",
"midgard5.special": "Spezial", "midgard5.special": "Spezial",
"midgard5.learned-skill": "Gelernte Fertigkeit", "midgard5.learned-skill": "Gelernte Fertigkeit",
"midgard5.learned-skills": "Gelernte Fertigkeiten",
"midgard5.language": "Sprache", "midgard5.language": "Sprache",
"midgard5.languages": "Sprachen",
"midgard5.weapon-skill": "Waffenfertigkeit", "midgard5.weapon-skill": "Waffenfertigkeit",
"midgard5.weapon-skills": "Waffenfertigkeiten",
"midgard5.unlearned-skill": "Ungelernte Fertigkeit", "midgard5.unlearned-skill": "Ungelernte Fertigkeit",
"midgard5.innate-ability": "Angeborene Fähigkeit", "midgard5.unlearned-skills": "Ungelernte Fertigkeiten",
"midgard5.innate-ability": "Angeborene/Besondere Fertigkeit",
"midgard5.innate-abilities": "Angeborene/Besondere Fertigkeit",
"midgard5.base-damage": "Grundschaden", "midgard5.base-damage": "Grundschaden",
"midgard5.weapon": "Waffe",
"midgard5.weapons": "Waffen",
"midgard5.defensive-weapon": "Verteidigungswaffe", "midgard5.defensive-weapon": "Verteidigungswaffe",
"midgard5.defensive-weapons": "Verteidigungswaffen",
"midgard5.no-skill": "Keine Fertigkeit", "midgard5.no-skill": "Keine Fertigkeit",
"midgard5.magic": "magisch", "midgard5.magic": "magisch",
"midgard5.valuable": "Vermögen",
"midgard5.equipped": "Ausgerüstet", "midgard5.equipped": "Ausgerüstet",
"midgard5.active": "Aktiv", "midgard5.active": "Aktiv",
"midgard5.rangedWeapon": "Schusswaffe", "midgard5.rangedWeapon": "Schusswaffe",
"midgard5.assignItemToCharacter": "Füge Gegenstand einem Charakter hinzu, um Fähigkeit auwählen zu können", "midgard5.assignItemToCharacter": "Füge Gegenstand einem Charakter hinzu, um hier etwas auswählen zu können",
"midgard5.showAll": "Alle anzeigen",
"midgard5.wealthAndContainers": "Vermögen und Aufbewahrung",
"midgard5.itemsInContainers": "Gegenstände in Aufbewahrung",
"midgard5.allItems": "Alle Gegenstände",
"midgard5.pw": "Prüfwurf", "midgard5.pw": "Prüfwurf",
"midgard5.attack": "Angriff", "midgard5.attack": "Angriff",
@@ -259,6 +303,7 @@
"midgard5.kampfkunst-type": "Kampfkunst Art", "midgard5.kampfkunst-type": "Kampfkunst Art",
"midgard5.kampfkunst-variante": "Kampfkunst Variante", "midgard5.kampfkunst-variante": "Kampfkunst Variante",
"midgard5.kampfkunst-variante-short": "Var",
"midgard5.kido-type": "Kido Art", "midgard5.kido-type": "Kido Art",
"midgard5.kido-variante": "Kido Variante", "midgard5.kido-variante": "Kido Variante",
@@ -287,6 +332,7 @@
"midgard5.kido-variante-kontrollieren": "Kontrollieren", "midgard5.kido-variante-kontrollieren": "Kontrollieren",
"midgard5.mod-operation-add100": "Addieren (max 100)", "midgard5.mod-operation-add100": "Addieren (max 100)",
"midgard5.mod-operation-roll": "Wurf Modifikation",
"midgard5.mod-operation-add": "Addieren", "midgard5.mod-operation-add": "Addieren",
"midgard5.mod-operation-set": "Basiswert", "midgard5.mod-operation-set": "Basiswert",
"midgard5.mod-operation-fixed": "Fester Wert", "midgard5.mod-operation-fixed": "Fester Wert",
+1 -1
View File
@@ -1,6 +1,6 @@
{ {
"name": "foundry-system-midgard5", "name": "foundry-system-midgard5",
"version": "2.3.0", "version": "2.4.2",
"description": "", "description": "",
"main": "index.js", "main": "index.js",
"scripts": { "scripts": {
+3 -1
View File
@@ -6,12 +6,14 @@ const preloadTemplates = async (): Promise<Handlebars.TemplateDelegate<any>[]> =
// const templates = [ rootPath + "actor/actor-sheet.hbs" ] // const templates = [ rootPath + "actor/actor-sheet.hbs" ]
// This would map to our local folder of /Assets/Templates/Actor/actor-sheet.hbs // This would map to our local folder of /Assets/Templates/Actor/actor-sheet.hbs
const templates: Array<string> = [ const templates: Array<string> = [
"sheets/character/description.hbs",
"sheets/character/attribute.hbs", "sheets/character/attribute.hbs",
"sheets/character/base_values.hbs", "sheets/character/base_values.hbs",
"sheets/character/main.hbs",
"sheets/character/skills.hbs", "sheets/character/skills.hbs",
"sheets/character/gear.hbs", "sheets/character/gear.hbs",
"sheets/character/spells.hbs", "sheets/character/spells.hbs",
"sheets/character/kampfkuenste.hbs", "sheets/character/combat.hbs",
"sheets/character/effects.hbs", "sheets/character/effects.hbs",
"sheets/partial/mod.hbs", "sheets/partial/mod.hbs",
"sheets/item/rolls.hbs", "sheets/item/rolls.hbs",
+10
View File
@@ -90,6 +90,16 @@ Hooks.once("init", async () => {
return label.toLowerCase().includes(contains.toLowerCase()); 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);
Items.registerSheet("midgard5", M5ItemSheet, { makeDefault: true }); Items.registerSheet("midgard5", M5ItemSheet, { makeDefault: true });
+23 -1
View File
@@ -49,6 +49,18 @@ export interface M5RollResult extends M5RollTemplate {
css: string; css: string;
} }
export enum M5ItemType {
SKILL = "skill",
ITEM = "item",
WEAPON = "weapon",
DEFENSIVE_WEAPON = "defensiveWeapon",
ARMOR = "armor",
CONTAINER = "container",
SPELL = "spell",
KAMPFKUNST = "kampfkunst",
EFFECT = "effect",
}
export enum M5EwResult { export enum M5EwResult {
TBD = "", TBD = "",
FUMBLE = "roll-ew-result-fumble", FUMBLE = "roll-ew-result-fumble",
@@ -85,7 +97,11 @@ export enum M5Stats {
PROTECTION_LP = "lpProtection", PROTECTION_LP = "lpProtection",
PROTECTION_AP = "apProtection", PROTECTION_AP = "apProtection",
PERCEPTION = "perception", PERCEPTION = "perception",
DRINKING = "drinking" DRINKING = "drinking",
HOARD = "hoard",
HOARD_NEXT = "hoardNext",
HOARD_MIN = "hoardMin",
WEALTH = "wealth",
} }
export enum M5ModType { export enum M5ModType {
@@ -96,6 +112,7 @@ export enum M5ModType {
export enum M5ModOperation { export enum M5ModOperation {
ADD_100 = "add100", ADD_100 = "add100",
ROLL = "roll",
ADD = "add", ADD = "add",
SET = "set", SET = "set",
FIXED = "fixed", FIXED = "fixed",
@@ -172,6 +189,10 @@ export interface M5CharacterCalculatedData {
perceptionFW: number; perceptionFW: number;
drinking: M5ModResult; drinking: M5ModResult;
drinkingFW: number; drinkingFW: number;
hoard: number;
hoardNext: number;
hoardMin: number;
wealth: number;
}; };
skillMods: {}; skillMods: {};
skills: { skills: {
@@ -186,6 +207,7 @@ export interface M5CharacterCalculatedData {
defensiveWeapons: {}; defensiveWeapons: {};
armor: {}; armor: {};
items: {}; items: {};
containers: {};
effects: {}; effects: {};
}; };
spells: {}; spells: {};
+137 -6
View File
@@ -1,7 +1,6 @@
import { M5Item } from "../items/M5Item"; import { M5Item } from "../items/M5Item";
import { M5Attribute, M5CharacterCalculatedData, M5ItemMod, M5ModOperation, M5ModResult, M5RollData, M5Skill, M5SkillCalculated, M5SkillLearned } from "../M5Base"; import { M5Attribute, M5CharacterCalculatedData, M5ItemMod, M5ItemType, M5ModOperation, M5ModResult, M5RollData, M5Skill, M5SkillCalculated, M5SkillLearned } from "../M5Base";
import M5ModAggregate from "./M5ModAggregate"; import M5ModAggregate from "./M5ModAggregate";
export class M5Character extends Actor { export class M5Character extends Actor {
// constructor( // constructor(
// data: ConstructorParameters<typeof foundry.documents.BaseActor>[0], // data: ConstructorParameters<typeof foundry.documents.BaseActor>[0],
@@ -32,6 +31,7 @@ export class M5Character extends Actor {
defensiveWeapons?: boolean; defensiveWeapons?: boolean;
armor?: boolean; armor?: boolean;
items?: boolean; items?: boolean;
containers?: boolean;
spells?: boolean; spells?: boolean;
effects?: boolean; effects?: boolean;
kampfkuenste?: boolean; kampfkuenste?: boolean;
@@ -67,10 +67,11 @@ export class M5Character extends Actor {
brawlFw: 0, brawlFw: 0,
poisonResistance: { value: 0, mods: [] }, poisonResistance: { value: 0, mods: [] },
enduranceBonus: 0, enduranceBonus: 0,
perception: {value: 0, mods: []}, perception: { value: 0, mods: [] },
perceptionFW: 0, perceptionFW: 0,
drinking: {value: 0, mods: []}, drinking: { value: 0, mods: [] },
drinkingFW: 0, drinkingFW: 0,
hoard: 0,
}, },
skillMods: {}, skillMods: {},
skills: { skills: {
@@ -85,6 +86,7 @@ export class M5Character extends Actor {
defensiveWeapons: {}, defensiveWeapons: {},
armor: {}, armor: {},
items: {}, items: {},
containers: {},
effects: {}, effects: {},
}, },
spells: {}, spells: {},
@@ -97,7 +99,7 @@ export class M5Character extends Actor {
const data = (this as any).system; const data = (this as any).system;
if (!data) return null; if (!data) return null;
ret.level = M5Character.levelFromExp(data.es); ret.level = M5Character.levelFromExp(data.info.race === "Zwerg" ? Math.min(data.calc.stats?.hoard * 2 || 0, data.es) : data.es);
ret.attributes.st.value = M5Character.attributeMinMax(data.attributes.st); // TODO item effects ret.attributes.st.value = M5Character.attributeMinMax(data.attributes.st); // TODO item effects
ret.attributes.gs.value = M5Character.attributeMinMax(data.attributes.gs); ret.attributes.gs.value = M5Character.attributeMinMax(data.attributes.gs);
@@ -143,12 +145,16 @@ export class M5Character extends Actor {
ret.stats.perceptionFW = 6; ret.stats.perceptionFW = 6;
ret.stats.drinking = this.modResult(0); ret.stats.drinking = this.modResult(0);
ret.stats.drinkingFW = Math.floor(ret.attributes.ko.value / 10); ret.stats.drinkingFW = Math.floor(ret.attributes.ko.value / 10);
ret.stats.hoardMin = M5Character.levelThreshold.at(ret.level - 1) / 2;
ret.stats.hoardNext = M5Character.levelThreshold.at(ret.level) / 2;
ret.stats.wealth = parseFloat((data.info.gold + data.info.silver / 10 + data.info.copper / 100).toPrecision(3));
ret.stats.hoard = 0;
if (!skip?.mods) { if (!skip?.mods) {
const aggregate = new M5ModAggregate(data, ret); const aggregate = new M5ModAggregate(data, ret);
context.items context.items
?.filter((item) => (item.type === "item" || item.type === "effect" || item.type === "armor") && item.system.equipped) ?.filter((item) => (item.type === "item" || item.type === "effect" || item.type === "armor" || item.type === "container") && 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)
@@ -171,12 +177,73 @@ export class M5Character extends Actor {
if (item.system.magic) { if (item.system.magic) {
label += "*"; label += "*";
} }
if (item.system.valuable) {
ret.stats.wealth += this.calculateValue(item.system.value * item.system.quantity, item.system.currency);
}
if (item.system.hoarded) {
ret.stats.hoard += this.calculateValue(item.system.value * item.system.quantity, item.system.currency);
}
let icon = item.img;
let rollable = false;
for (let key in item.system.rolls.formulas) {
rollable = item.system.rolls.formulas[key]?.enabled;
if (rollable) {
break;
}
}
ret.gear.items[item.id] = { ret.gear.items[item.id] = {
label: label, label: label,
icon: icon,
magic: item.system.magic, magic: item.system.magic,
calc: item.system.calc, calc: item.system.calc,
equipped: item.system?.equipped, equipped: item.system?.equipped,
valuable: item.system?.valuable,
hoarded: item.system?.hoarded,
weight: item.system.weight || 0,
containerId: item.system.containerId || "",
value: item.system.value || 0,
currency: item.system.currency || "",
quantity: item.system.quantity || 0,
rollExist: rollable,
};
});
}
if (!skip?.containers) {
context.items
?.filter((item) => item.type === "container")
.forEach((item) => {
item.prepareDerivedData();
let label = item.name;
if (item.system.magic) {
label += "*";
}
let icon = item.img;
let rollable = false;
for (let key in item.system.rolls.formulas) {
rollable = item.system.rolls.formulas[key]?.enabled;
if (rollable) {
break;
}
}
ret.gear.containers[item.id] = {
label: label,
icon: icon,
magic: item.system.magic,
valuable: item.system?.valuable,
hoarded: item.system?.hoarded,
calc: item.system.calc,
equipped: item.system?.equipped,
weight: item.system.weight || 0,
value: item.system.value || 0,
currency: item.system.currency || "",
quantity: item.system.quantity || 0,
rollExist: rollable,
}; };
}); });
} }
@@ -235,12 +302,26 @@ export class M5Character extends Actor {
item.system.stats.damageBonus + item.system.stats.damageBonus +
")"; ")";
} }
if (item.system.valuable) {
ret.stats.wealth += this.calculateValue(item.system.value * item.system.quantity, item.system.currency);
}
if (item.system.hoarded) {
ret.stats.hoard += this.calculateValue(item.system.value * item.system.quantity, item.system.currency);
}
ret.gear.weapons[item.id] = { ret.gear.weapons[item.id] = {
label: label, label: label,
skillId: item.system.skillId, skillId: item.system.skillId,
magic: item.system.magic, magic: item.system.magic,
valuable: item.system?.valuable,
hoarded: item.system?.hoarded,
value: item.system.value || 0,
currency: item.system.currency || "",
calc: item.system.calc, calc: item.system.calc,
special: item.system.special,
damageBase: item.system.damageBase,
equipped: item.system?.equipped,
containerId: item.system.containerId || "",
}; };
}); });
} }
@@ -255,12 +336,25 @@ export class M5Character extends Actor {
if (item.system.magic) { if (item.system.magic) {
label += "*(" + (item.system.stats.defenseBonus < 0 ? "" : "+") + item.system.stats.defenseBonus + ")"; label += "*(" + (item.system.stats.defenseBonus < 0 ? "" : "+") + item.system.stats.defenseBonus + ")";
} }
if (item.system.valuable) {
ret.stats.wealth += this.calculateValue(item.system.value * item.system.quantity, item.system.currency);
}
if (item.system.hoarded) {
ret.stats.hoard += this.calculateValue(item.system.value * item.system.quantity, item.system.currency);
}
ret.gear.defensiveWeapons[item.id] = { ret.gear.defensiveWeapons[item.id] = {
label: label, label: label,
skillId: item.system.skillId, skillId: item.system.skillId,
magic: item.system.magic, magic: item.system.magic,
valuable: item.system?.valuable,
hoarded: item.system?.hoarded,
value: item.system.value || 0,
currency: item.system.currency || "",
defenseBonus: item.system.stats.defenseBonus,
calc: item.system.calc, calc: item.system.calc,
equipped: item.system?.equipped,
containerId: item.system.containerId || "",
}; };
}); });
} }
@@ -275,12 +369,24 @@ export class M5Character extends Actor {
if (item.system.magic) { if (item.system.magic) {
label += "*"; label += "*";
} }
if (item.system.valuable) {
ret.stats.wealth += this.calculateValue(item.system.value * item.system.quantity, item.system.currency);
}
if (item.system.hoarded) {
ret.stats.hoard += this.calculateValue(item.system.value * item.system.quantity, item.system.currency);
}
ret.gear.armor[item.id] = { ret.gear.armor[item.id] = {
label: label, label: label,
magic: item.system.magic, magic: item.system.magic,
valuable: item.system?.valuable,
hoarded: item.system?.hoarded,
value: item.system.value || 0,
currency: item.system.currency || "",
lpProtection: item.system.lpProtection,
calc: item.system.calc, calc: item.system.calc,
equipped: item.system?.equipped, equipped: item.system?.equipped,
containerId: item.system.containerId || "",
}; };
}); });
} }
@@ -417,11 +523,36 @@ export class M5Character extends Actor {
}); });
} }
createItem(itemName: string, itemType: M5ItemType): Promise<M5Item> {
const itemData = {
name: itemName,
type: itemType,
};
return (this as any).createEmbeddedDocuments("Item", [itemData]).then((docs) => {
const item = docs[0];
return item;
});
}
getItem(itemId: string): any { getItem(itemId: string): any {
if (!(this as any).items) return null; if (!(this as any).items) return null;
return (this as any).getEmbeddedDocument("Item", itemId); return (this as any).getEmbeddedDocument("Item", itemId);
} }
private calculateValue(value: number, currency: string): number {
switch (currency) {
case "gold":
return value;
case "silver":
return parseFloat((value / 10).toPrecision(3));
case "copper":
return parseFloat((value / 100).toPrecision(3));
default:
return 0;
}
}
private modResult(value: number): M5ModResult { private modResult(value: number): M5ModResult {
return { return {
value: value, value: value,
+47 -2
View File
@@ -14,7 +14,22 @@ export class M5Item extends Item {
const itemData = (this as any).system; const itemData = (this as any).system;
const calc = itemData.calc; const calc = itemData.calc;
if (itemType === "skill") { if (itemType === "item") {
calc.containers = null;
if (actor) {
const actorCalc = actor.derivedData({ weapons: true, defensiveWeapons: true, armor: true, items: true, spells: true, effects: true, kampfkuenste: true });
if (actorCalc) {
calc.containers = actorCalc.gear.containers;
}
const container = character.getItem(itemData.containerId);
//console.log("M5Item.prepareDerivedData:containers", itemData, container?.system)
if (container) {
container.prepareDerivedData();
const containerData = container.system;
}
}
} else if (itemType === "skill") {
calc.fw = itemData.fw; calc.fw = itemData.fw;
calc.bonus = 0; calc.bonus = 0;
@@ -64,12 +79,21 @@ export class M5Item extends Item {
calc.special = itemData.special ? 2 : 0; calc.special = itemData.special ? 2 : 0;
calc.ew = calc.special + itemData.stats.attackBonus; calc.ew = calc.special + itemData.stats.attackBonus;
calc.combatSkills = null; calc.combatSkills = null;
calc.containers = null;
if (actor) { if (actor) {
const actorCalc = character.derivedData({ weapons: true, defensiveWeapons: true, armor: true, items: true, spells: true, effects: true, kampfkuenste: true }); const actorCalc = character.derivedData({ weapons: true, defensiveWeapons: true, armor: true, items: true, spells: true, effects: true, kampfkuenste: 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;
calc.containers = actorCalc.gear.containers;
}
const container = character.getItem(itemData.containerId);
//console.log("M5Item.prepareDerivedData:containers", itemData, container?.system)
if (container) {
container.prepareDerivedData();
const containerData = container.system;
} }
const skill = character.getItem(itemData.skillId); const skill = character.getItem(itemData.skillId);
@@ -88,12 +112,21 @@ export class M5Item extends Item {
calc.special = itemData.special ? 2 : 0; calc.special = itemData.special ? 2 : 0;
calc.ew = calc.special + itemData.stats.defenseBonus; calc.ew = calc.special + itemData.stats.defenseBonus;
calc.combatSkills = null; calc.combatSkills = null;
calc.containers = null;
if (actor) { if (actor) {
const actorCalc = character.derivedData({ weapons: true, defensiveWeapons: true, armor: true, items: true, spells: true, effects: true, kampfkuenste: true }); const actorCalc = character.derivedData({ weapons: true, defensiveWeapons: true, armor: true, items: true, spells: true, effects: true, kampfkuenste: 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;
calc.containers = actorCalc.gear.containers;
}
const container = character.getItem(itemData.containerId);
//console.log("M5Item.prepareDerivedData:containers", itemData, container?.system)
if (container) {
container.prepareDerivedData();
const containerData = container.system;
} }
const skill = character.getItem(itemData.skillId); const skill = character.getItem(itemData.skillId);
@@ -113,6 +146,19 @@ export class M5Item extends Item {
itemData.mods[3] = { type: "attribute", id: "gw", operation: "add100", value: itemData.attributeMod.gw }; itemData.mods[3] = { type: "attribute", id: "gw", operation: "add100", value: itemData.attributeMod.gw };
itemData.mods[4] = { type: "stat", id: "lpProtection", operation: "set", value: itemData.lpProtection }; itemData.mods[4] = { type: "stat", id: "lpProtection", operation: "set", value: itemData.lpProtection };
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;
if (actor) {
const actorCalc = actor.derivedData({ weapons: true, defensiveWeapons: true, armor: true, items: true, spells: true, effects: true, kampfkuenste: true });
if (actorCalc) {
calc.containers = actorCalc.gear.containers;
}
const container = character.getItem(itemData.containerId);
//console.log("M5Item.prepareDerivedData:containers", itemData, container?.system)
if (container) {
container.prepareDerivedData();
const containerData = container.system;
}
}
} else if (itemType === "spell") { } else if (itemType === "spell") {
calc.fw = 0; calc.fw = 0;
if (actor) { if (actor) {
@@ -258,7 +304,6 @@ export class M5Item extends Item {
} }
const roll = new M5Roll(rollData, this.actor, item.name); const roll = new M5Roll(rollData, this.actor, item.name);
console.log(roll);
return roll.toMessage(); return roll.toMessage();
} else { } else {
ChatMessage.create({ ChatMessage.create({
+11 -22
View File
@@ -1,6 +1,6 @@
import { Evaluated } from "@league-of-foundry-developers/foundry-vtt-types/src/foundry/client/dice/roll"; import { Evaluated } from "@league-of-foundry-developers/foundry-vtt-types/src/foundry/client/dice/roll";
import { M5Character } from "../actors/M5Character"; import { M5Character } from "../actors/M5Character";
import { M5EwResult, M5RollData, M5RollResult, M5SkillUnlearned, M5Stats } from "../M5Base"; import { M5EwResult, M5ModOperation, M5ModType, M5RollData, M5RollResult, M5SkillUnlearned, M5Stats } from "../M5Base";
import { stat } from "fs"; import { stat } from "fs";
export class M5Roll { export class M5Roll {
@@ -115,31 +115,20 @@ export class M5Roll {
return ChatMessage.create(chatData); return ChatMessage.create(chatData);
} }
static fromAttribute(actor: any, attributeKey: string) {
const character = actor as M5Character;
const attribute = character.attribute(attributeKey);
const rollData = actor.getRollData() as M5RollData;
rollData.i = attribute.value + attribute.bonus;
rollData.rolls["0"] = {
formula: "@i - 1d100",
enabled: true,
label: (game as Game).i18n.localize("midgard5.pw"),
result: "",
total: 0,
totalStr: "",
dice: {},
css: "",
} as M5RollResult;
return new M5Roll(rollData, actor, (game as Game).i18n.localize(`midgard5.actor-${attributeKey}-long`));
}
static fromAttributeValue(actor: any, attributeKey: string, attributeValue: number) { static fromAttributeValue(actor: any, attributeKey: string, attributeValue: number) {
const rollData = actor.getRollData() as M5RollData; const rollData = actor.getRollData() as M5RollData;
const itemData = actor.items.filter((x) => x.type === "effect").map((y) => y.system.mods);
rollData.c = 0;
for (let effectKey in itemData) {
for (let modkey in itemData[effectKey])
if (itemData[effectKey][modkey].type === M5ModType.ATTRIBUTE && itemData[effectKey][modkey].operation === M5ModOperation.ROLL) {
rollData.c += itemData[effectKey][modkey].value;
}
}
rollData.i = attributeValue; rollData.i = attributeValue;
rollData.rolls["0"] = { rollData.rolls["0"] = {
formula: "@i - 1d100", formula: "@i - 1d100 - @c",
enabled: true, enabled: true,
label: (game as Game).i18n.localize("midgard5.pw"), label: (game as Game).i18n.localize("midgard5.pw"),
result: "", result: "",
+174 -3
View File
@@ -1,14 +1,14 @@
import Logger from "../../utils/Logger"; import Logger from "../../utils/Logger";
import { M5Character } from "../actors/M5Character"; import { M5Character } from "../actors/M5Character";
import { M5Item } from "../items/M5Item"; import { M5Item } from "../items/M5Item";
import { M5SkillLearned, M5SkillUnlearned } from "../M5Base"; import { M5ItemType, M5SkillLearned, M5SkillUnlearned } from "../M5Base";
import { M5Roll } from "../rolls/M5Roll"; 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", template: "systems/midgard5/templates/sheets/character/main.hbs",
width: 800, width: 1000,
height: 800, height: 800,
classes: ["midgard5", "sheet", "character"], classes: ["midgard5", "sheet", "character"],
tabs: [{ navSelector: ".sheet-navigation", contentSelector: ".sheet-content", initial: "base_values" }], tabs: [{ navSelector: ".sheet-navigation", contentSelector: ".sheet-content", initial: "base_values" }],
@@ -97,6 +97,72 @@ export default class M5CharacterSheet extends ActorSheet {
item.sheet.render(true); item.sheet.render(true);
}); });
html.find(".quantity-increase").on("click", async (event) => {
let row = event.target.parentElement;
let itemId = row.dataset["item"];
while (!itemId) {
row = row.parentElement;
if (!row) return;
itemId = row.dataset["item"];
}
const context = this.actor as any;
const item = context.items.get(itemId);
if (!item.system.quantity) {
item.system.quantity = 0;
}
item.update({
data: {
quantity: item.system.quantity + 1,
},
});
this.render();
});
html.find(".quantity-decrease").on("click", async (event) => {
let row = event.target.parentElement;
let itemId = row.dataset["item"];
while (!itemId) {
row = row.parentElement;
if (!row) return;
itemId = row.dataset["item"];
}
const context = this.actor as any;
const item = context.items.get(itemId);
if (item.system.quantity > 0) {
item.update({
data: {
quantity: item.system.quantity - 1,
},
});
}
this.render();
});
html.find(".roll-consumable-item").on("click", async (event) => {
let row = event.target.parentElement;
let itemId = row.dataset["item"];
while (!itemId) {
row = row.parentElement;
if (!row) return;
itemId = row.dataset["item"];
}
const context = this.actor as any;
const item = context.items.get(itemId);
if (item.system.quantity > 0) {
item.update({
data: {
quantity: item.system.quantity - 1,
},
});
}
await item.roll();
this.render();
});
html.find(".item-delete").on("click", async (event) => { html.find(".item-delete").on("click", async (event) => {
let row = event.target.parentElement; let row = event.target.parentElement;
let itemId = row.dataset["item"]; let itemId = row.dataset["item"];
@@ -192,6 +258,111 @@ export default class M5CharacterSheet extends ActorSheet {
const roll = M5Roll.resistanceBody(this.actor); const roll = M5Roll.resistanceBody(this.actor);
await roll.toMessage(); await roll.toMessage();
}); });
html.find(".change-equipped").on("click", async (event) => {
let row = event.target.parentElement;
let itemId = row.dataset["item"];
while (!itemId) {
row = row.parentElement;
if (!row) return;
itemId = row.dataset["item"];
}
const context = this.actor as any;
const item = context.items.get(itemId);
if (item.system.equipped === true) {
item.system.equipped = false;
} else {
item.system.equipped = true;
}
this.render();
});
html.find(".add-item").on("click", async (event) => {
const data = this.actor.system;
const character = this.actor as M5Character;
character.createItem((game as Game).i18n.localize("TYPES.Item.item"), M5ItemType.ITEM).then((i) => {
const item = i as any;
item.update({
data: {
quantity: 1,
},
});
});
});
html.find(".add-weapon").on("click", async (event) => {
const data = this.actor.system;
const character = this.actor as M5Character;
character.createItem((game as Game).i18n.localize("TYPES.Item.weapon"), M5ItemType.WEAPON);
});
html.find(".add-defensiveWeapon").on("click", async (event) => {
const data = this.actor.system;
const character = this.actor as M5Character;
character.createItem((game as Game).i18n.localize("TYPES.Item.defensiveWeapon"), M5ItemType.DEFENSIVE_WEAPON);
});
html.find(".add-armor").on("click", async (event) => {
const data = this.actor.system;
const character = this.actor as M5Character;
character.createItem((game as Game).i18n.localize("TYPES.Item.armor"), M5ItemType.ARMOR);
});
html.find(".add-container").on("click", async (event) => {
const data = this.actor.system;
const character = this.actor as M5Character;
character.createItem((game as Game).i18n.localize("TYPES.Item.container"), M5ItemType.CONTAINER).then((i) => {
const item = i as any;
item.update({
data: {
quantity: 1,
},
});
});
});
html.find(".add-spell").on("click", async (event) => {
const data = this.actor.system;
const character = this.actor as M5Character;
character.createItem((game as Game).i18n.localize("TYPES.Item.spell"), M5ItemType.SPELL).then((i) => {
const item = i as any;
item.update({
data: {
process: "none",
},
});
});
});
html.find(".add-kampfkunst").on("click", async (event) => {
const data = this.actor.system;
const character = this.actor as M5Character;
character.createItem((game as Game).i18n.localize("TYPES.Item.kampfkunst"), M5ItemType.KAMPFKUNST).then((i) => {
const item = i as any;
item.update({
data: {
type: "angriff",
variante: "anstuermen",
},
});
});
});
html.find(".add-effect").on("click", async (event) => {
const data = this.actor.system;
const character = this.actor as M5Character;
character.createItem((game as Game).i18n.localize("TYPES.Item.effect"), M5ItemType.EFFECT);
});
// Drag & Drop // Drag & Drop
const dragDrop = new DragDrop({ const dragDrop = new DragDrop({
dragSelector: ".items-list .item", dragSelector: ".items-list .item",
@@ -216,7 +387,7 @@ export default class M5CharacterSheet extends ActorSheet {
const item = this.actor.items.get(li.dataset.itemId); const item = this.actor.items.get(li.dataset.itemId);
// limit transfer on personal weapons/armour/gear // limit transfer on personal weapons/armour/gear
if (["skill", "item", "weapon", "defensiveWeapon", "armor", "spell", "effect", "kampfkunst"].includes(item.type)) { if (["skill", "item", "weapon", "defensiveWeapon", "armor", "spell", "effect", "kampfkunst", "container"].includes(item.type)) {
const dragData = { const dragData = {
type: "Transfer", type: "Transfer",
actorId: this.actor.id, actorId: this.actor.id,
+143 -19
View File
@@ -3,16 +3,98 @@
@attributeBorderColor: rgba(0, 0, 0, 0.5); @attributeBorderColor: rgba(0, 0, 0, 0.5);
.midgard5 { .midgard5 {
.flexbox {
display: flex;
flex-direction: row;
flex-wrap: wrap;
}
.flexcolumn {
flex-wrap: wrap;
flex-direction: column;
}
.flexcolumn-1 {
flex-basis: 100%;
flex-wrap: wrap;
}
.flexcolumn-2 {
flex-basis: 50%;
flex-wrap: wrap;
}
.flexcolumn-3 {
flex-basis: 33%;
flex-wrap: wrap;
}
.flexcolumn-4 {
flex-basis: 25%;
flex-wrap: wrap;
}
.flexcolumn-5 {
flex-basis: 20%;
flex-wrap: wrap;
}
.flexpart {
gap: 0;
padding: 0;
margin: 2px;
background-color: beige;
border-collapse: separate;
border-radius: 10px;
border: 2px solid black;
}
.flexpart-header {
font-weight: bold;
font-size: large;
text-align: center;
color: black;
}
.flexpart-icon {
height: 2rem;
float: left;
border: 0px solid transparent;
}
.flexrow { .flexrow {
align-items: center; align-items: center;
} }
h3 { h3 {
padding: 0.5rem 0.5rem 0.5rem 0.5rem; padding: 0.5rem 0.5rem 0.5rem 0.5rem;
margin-top: 0.5rem;
margin-bottom: 0;
text-align: left; text-align: left;
font-weight: bold; font-weight: bold;
background-color: dimgray; background-color: #eeede0;
color: white; color: black;
border-collapse: separate;
border: 2px solid black;
border-radius: 10px;
}
.profile-img {
display: block;
margin-left: auto;
margin-right: auto;
height: 100%;
width: auto;
border: 0px solid black;
}
.profile-img {
display: block;
margin-left: auto;
margin-right: auto;
height: 100%;
width: auto;
border: 0px solid black;
} }
.sheet.character { .sheet.character {
@@ -31,12 +113,6 @@
} }
} }
.profile-img {
max-width: 128px;
height: 160px;
border: 0px solid black;
}
.description { .description {
flex: 0 0 100%; flex: 0 0 100%;
margin: 0; margin: 0;
@@ -68,6 +144,14 @@
table { table {
background-color: beige; background-color: beige;
border: 0px solid transparent;
&.bordered {
border-collapse: separate;
border: 2px solid black;
border-radius: 10px;
font-size: larger;
font-weight: bolder;
}
} }
td, td,
@@ -104,8 +188,23 @@
padding: 0.5rem 0.5rem 0.5rem 0.5rem; padding: 0.5rem 0.5rem 0.5rem 0.5rem;
text-align: left; text-align: left;
font-weight: bold; font-weight: bold;
background-color: dimgray;
} }
&.highlight {
font-weight: bold;
font-style: italic;
}
}
.table-icon {
height: 1rem;
width: 1rem;
float: left;
border: 0px solid transparent;
}
input {
border: 0px solid black;
} }
input.skill { input.skill {
@@ -116,22 +215,34 @@
width: 5rem; width: 5rem;
} }
input.checkbox {
width: 1rem;
height: 1rem;
}
.new-skill { .new-skill {
font-style: italic; font-style: italic;
background: rgba(0, 0, 0, 0.3); background: rgba(0, 0, 0, 0.3);
color: rgba(255, 255, 255); color: rgba(255, 255, 255);
button {
background: rgba(255, 255, 255, 0.5);
}
} }
button.roll-button { .roll-button {
background: url(/icons/svg/d20-black.svg) no-repeat; background: url(/icons/svg/d20-black.svg) no-repeat;
background-size: 24px 24px; background-size: 1rem 1rem;
border: #000000 solid 0px; border: #000000 solid 0px;
width: 26px; width: 1rem;
height: 26px; height: 1rem;
}
.learn-button {
padding: 0;
margin: 0;
height: 1rem;
width: 4rem;
background: rgba(255, 255, 255, 0.5);
font-size: smaller;
text-align: center;
line-height: 0.8rem;
} }
span.spell-process { span.spell-process {
@@ -152,7 +263,8 @@
padding: 1px; padding: 1px;
//align-items: stretch; //align-items: stretch;
input { input,
.max-value {
flex: 0 0 2rem; flex: 0 0 2rem;
text-align: center; text-align: center;
height: 100%; height: 100%;
@@ -184,15 +296,27 @@
} }
} }
.biography {
margin: 0.5rem 0.5rem 0.5rem 0.5rem;
height: 180px;
background-color: #eaead7;
.editor {
height: 100%;
width: 100%;
}
}
.attributes { .attributes {
padding: 0.5rem 0.5rem 0.5rem 0.5rem; padding: 0.5rem 0.5rem 0.5rem 0.5rem;
display: flex; display: flex;
flex-direction: row; flex-direction: row;
margin-bottom: 0.5rem; margin-bottom: 0.5rem;
background-color: beige; background-color: beige;
flex-wrap: wrap;
justify-content: center;
.attribute { .attribute {
flex: 0 0 7rem; flex: 0 0 6rem;
margin: 0; margin: 0;
border: 1px solid @attributeBorderColor; border: 1px solid @attributeBorderColor;
//border-bottom: none; //border-bottom: none;
+9 -25
View File
@@ -3,13 +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.3.0", "version": "2.4.2",
"compatibility": { "compatibility": {
"minimum": "10", "minimum": "10",
"verified": "11", "verified": "11",
"maximum": "11" "maximum": "11"
}, },
"authors": [{"name": "Byroks"}], "authors": [{ "name": "Byroks" }, { "name": "Le-Frique" }, { "name": "Oskaloq" }],
"scripts": ["bundle.js"], "scripts": ["bundle.js"],
"styles": ["bundle.css"], "styles": ["bundle.css"],
"packs": [ "packs": [
@@ -103,41 +103,25 @@
"name": "Midgard 5", "name": "Midgard 5",
"sorting": "a", "sorting": "a",
"color": "#0000FF", "color": "#0000FF",
"packs": [ "packs": ["blaupause-spielfiguren", "tabellen-kritische-ereignisse", "makros-kritische-ereignisse", "makros-standardwurfel"],
"blaupause-spielfiguren",
"tabellen-kritische-ereignisse",
"makros-kritische-ereignisse",
"makros-standardwurfel"
],
"folders": [ "folders": [
{ {
"name": "Ausrüstung", "name": "Ausrüstung",
"sorting": "a", "sorting": "a",
"color": "#008000", "color": "#008000",
"packs": [ "packs": ["ausruestung", "ruestkammer", "waffenkammer"]
"ausruestung",
"ruestkammer",
"waffenkammer"
]
}, },
{ {
"name": "Effekte", "name": "Effekte",
"sorting": "a", "sorting": "a",
"color": "#800080", "color": "#800080",
"packs": [ "packs": ["kampfzustaende", "verletzungen", "zauberwirkungen"]
"kampfzustaende",
"verletzungen",
"zauberwirkungen"
]
}, },
{ {
"name": "Fähigkeiten", "name": "Fähigkeiten",
"sorting": "a", "sorting": "a",
"color": "#800000", "color": "#800000",
"packs": [ "packs": ["fertigkeiten", "kampf"]
"fertigkeiten",
"kampf"
]
} }
] ]
} }
@@ -153,9 +137,9 @@
"gridUnits": "m", "gridUnits": "m",
"primaryTokenAttribute": "lp", "primaryTokenAttribute": "lp",
"secondaryTokenAttribute": "ap", "secondaryTokenAttribute": "ap",
"url": "https://github.com/Byroks/foundry-vtt-system-midgard5", "url": "https://git.byroks.de/MidgardVTT-Entwicklung/foundry-vtt-system-midgard5",
"manifest": "https://github.com/Byroks/foundry-vtt-system-midgard5/releases/download/v2.3.0/system.json", "manifest": "https://git.byroks.de/MidgardVTT-Entwicklung/foundry-vtt-system-midgard5/releases/download/v2.4.2/system.json",
"download": "https://github.com/Byroks/foundry-vtt-system-midgard5/releases/download/v2.3.0/midgard5-v2.3.0.zip", "download": "https://git.byroks.de/MidgardVTT-Entwicklung/foundry-vtt-system-midgard5/releases/download/v2.4.2/midgard5-v2.4.2.zip",
"initiative": "@c.calc.attributes.gw.value", "initiative": "@c.calc.attributes.gw.value",
"license": "LICENSE.txt" "license": "LICENSE.txt"
} }
+41 -7
View File
@@ -5,9 +5,11 @@
"characterDescription": { "characterDescription": {
"info": { "info": {
"description": "", "description": "",
"background": "",
"class": "", "class": "",
"race": "", "race": "",
"magicUsing": false, "magicUsing": false,
"showAllItems": false,
"gender": "", "gender": "",
"weight": "", "weight": "",
"height": "", "height": "",
@@ -16,7 +18,10 @@
"caste": "", "caste": "",
"occupation": "", "occupation": "",
"origin": "", "origin": "",
"faith": "" "faith": "",
"gold": 0,
"silver": 0,
"copper": 0
} }
}, },
"characterBars": { "characterBars": {
@@ -137,15 +142,19 @@
"zauberkunde": { "fw": 0, "attribute": "in", "initial": 8, "pp": 0 } "zauberkunde": { "fw": 0, "attribute": "in", "initial": 8, "pp": 0 }
} }
} }
},
"gear": {
"gear": {
}
} }
}, },
"character": { "character": {
"templates": ["characterBars", "attributes", "characterDescription", "characterHeader", "skills"], "templates": ["characterBars", "attributes", "characterDescription", "characterHeader", "skills", "gear"],
"calc": {} "calc": {}
} }
}, },
"Item": { "Item": {
"types": ["skill", "weapon", "defensiveWeapon", "armor", "spell", "kampfkunst", "item", "effect"], "types": ["skill", "weapon", "defensiveWeapon", "armor", "spell", "kampfkunst", "item", "effect", "container"],
"templates": { "templates": {
"itemDescription": { "itemDescription": {
"description": "" "description": ""
@@ -195,10 +204,20 @@
}, },
"equippable": { "equippable": {
"equippable": false, "equippable": false,
"equipped": true "equipped": false
},
"valuable": {
"valuable": false,
"item-wealth": true
},
"hoarded": {
"hoarded": false,
"inHoard": true
}, },
"physical": { "physical": {
"value": 0, "value": 0,
"weight": 0,
"containerId": "",
"magic": false "magic": false
}, },
"durationSelection": { "durationSelection": {
@@ -294,6 +313,15 @@
"calc": {} "calc": {}
}, },
"item": { "item": {
"templates": ["itemDescription", "equippable", "physical","valuable","hoarded"],
"rolls": {
"formulas": {},
"output": ""
},
"mods": {},
"calc": {}
},
"container": {
"templates": ["itemDescription", "equippable", "physical"], "templates": ["itemDescription", "equippable", "physical"],
"rolls": { "rolls": {
"formulas": {}, "formulas": {},
@@ -312,9 +340,11 @@
"calc": {} "calc": {}
}, },
"weapon": { "weapon": {
"templates": ["itemDescription", "stats", "equippable", "physical"], "templates": ["itemDescription", "stats", "equippable", "physical","valuable","hoarded"],
"special": false, "special": false,
"ranged": false, "ranged": false,
"valuable": false,
"hoarded": false,
"skillId": "", "skillId": "",
"damageBase": "1d6", "damageBase": "1d6",
"rolls": { "rolls": {
@@ -335,8 +365,10 @@
"calc": {} "calc": {}
}, },
"defensiveWeapon": { "defensiveWeapon": {
"templates": ["itemDescription", "stats", "equippable", "physical"], "templates": ["itemDescription", "stats", "equippable", "physical","valuable","hoarded"],
"special": false, "special": false,
"valuable": false,
"hoarded": false,
"skillId": "", "skillId": "",
"rolls": { "rolls": {
"formulas": { "formulas": {
@@ -351,9 +383,11 @@
"calc": {} "calc": {}
}, },
"armor": { "armor": {
"templates": ["itemDescription", "stats", "equippable", "attributeMod", "physical"], "templates": ["itemDescription", "stats", "equippable", "attributeMod", "physical","valuable","hoarded"],
"lpProtection": 0, "lpProtection": 0,
"apProtection": 0, "apProtection": 0,
"valuable": false,
"hoarded": false,
"rolls": { "rolls": {
"formulas": {}, "formulas": {},
"output": "" "output": ""
+122 -160
View File
@@ -1,164 +1,126 @@
<div class="flexbox">
<table> <div class="flexpart">
<thead> <div class="flexpart-header"><img src="icons/skills/melee/maneuver-sword-katana-yellow.webp" class="flexpart-icon">{{localize "midgard5.attributes"}}</div>
<tr> <br>
<th class="title" colspan="4">Eigenschaften</th> <div class="attributes">
</tr> {{> "systems/midgard5/templates/sheets/character/attribute.hbs" attributeId="st" attribute=data.attributes.st calc=data.calc.attributes.st}}
</thead> <div class="filler"></div>
<tbody> {{> "systems/midgard5/templates/sheets/character/attribute.hbs" attributeId="gs" attribute=data.attributes.gs calc=data.calc.attributes.gs}}
<tr height = 10px></tr> <div class="filler"></div>
<tr> {{> "systems/midgard5/templates/sheets/character/attribute.hbs" attributeId="gw" attribute=data.attributes.gw calc=data.calc.attributes.gw}}
<td>{{localize "midgard5.magicUsing"}}</td> <div class="filler"></div>
<td><input id="data.info.magicUsing" type="checkbox" name="data.info.magicUsing" {{checked data.info.magicUsing}}></td> {{> "systems/midgard5/templates/sheets/character/attribute.hbs" attributeId="ko" attribute=data.attributes.ko calc=data.calc.attributes.ko}}
<td>&nbsp;</td> <div class="filler"></div>
<td>&nbsp;</td> {{> "systems/midgard5/templates/sheets/character/attribute.hbs" attributeId="in" attribute=data.attributes.in calc=data.calc.attributes.in}}
</tr> <div class="filler"></div>
<tr> {{> "systems/midgard5/templates/sheets/character/attribute.hbs" attributeId="zt" attribute=data.attributes.zt calc=data.calc.attributes.zt}}
<td>{{localize "midgard5.grace"}}</td> <div class="filler"></div>
<td><input name="data.gg" type="text" value="{{data.gg}}" data-dtype="Number" /></td> {{> "systems/midgard5/templates/sheets/character/attribute.hbs" attributeId="au" attribute=data.attributes.au calc=data.calc.attributes.au}}
<td>{{localize "midgard5.exp-overall"}}</td> <div class="filler"></div>
<td><input name="data.es" type="text" value="{{data.es}}" data-dtype="Number" /></td> {{> "systems/midgard5/templates/sheets/character/attribute.hbs" attributeId="pa" attribute=data.attributes.pa calc=data.calc.attributes.pa}}
</tr> <div class="filler"></div>
<tr> {{> "systems/midgard5/templates/sheets/character/attribute.hbs" attributeId="wk" attribute=data.attributes.wk calc=data.calc.attributes.wk}}
<td>{{localize "midgard5.destiny"}}</td> <div class="filler"></div>
<td><input name="data.sg" type="text" value="{{data.sg}}" data-dtype="Number" /></td> </div>
<td>{{localize "midgard5.exp-available"}}</td> </div>
<td><input name="data.ep" type="text" value="{{data.ep}}" data-dtype="Number" /></td>
</tr>
<tr>
<td>{{localize "midgard5.luckPoints"}}</td>
<td><input name="data.gp" type="text" value="{{data.gp}}" data-dtype="Number" /></td>
<td>{{localize "midgard5.movementRange"}}</td>
<td><input name="data.movement" type="text" value="{{data.movement}}" data-dtype="Number" /></td>
</tr>
<tr height = 10px></tr>
</tbody>
</table>
<table style="background-color: beige;"> <div class="flexcolumn-2">
<thead> <div class="flexpart">
<tr> <div class="flexpart-header"><img src="icons/skills/social/theft-pickpocket-bribery-brown.webp" class="flexpart-icon">{{localize "midgard5.points"}}</div>
<th class="title">Leiteigenschaften</th> <table>
</tr> <tbody>
</thead> <tr height = 10px></tr>
<tbody> <tr>
<tr> <td>{{localize "midgard5.grace"}}</td>
<td><div class="attributes"> <td><input name="data.gg" type="text" value="{{data.gg}}" data-dtype="Number" /></td>
{{> "systems/midgard5/templates/sheets/character/attribute.hbs" attributeId="st" attribute=data.attributes.st calc=data.calc.attributes.st}} <td>{{localize "midgard5.exp-overall"}}</td>
<div class="filler"></div> <td><input name="data.es" type="text" value="{{data.es}}" data-dtype="Number" /></td>
{{> "systems/midgard5/templates/sheets/character/attribute.hbs" attributeId="gs" attribute=data.attributes.gs calc=data.calc.attributes.gs}} </tr>
<div class="filler"></div> <tr>
{{> "systems/midgard5/templates/sheets/character/attribute.hbs" attributeId="gw" attribute=data.attributes.gw calc=data.calc.attributes.gw}} <td>{{localize "midgard5.destiny"}}</td>
<div class="filler"></div> <td><input name="data.sg" type="text" value="{{data.sg}}" data-dtype="Number" /></td>
{{> "systems/midgard5/templates/sheets/character/attribute.hbs" attributeId="ko" attribute=data.attributes.ko calc=data.calc.attributes.ko}} <td>{{localize "midgard5.exp-available"}}</td>
<div class="filler"></div> <td><input name="data.ep" type="text" value="{{data.ep}}" data-dtype="Number" /></td>
{{> "systems/midgard5/templates/sheets/character/attribute.hbs" attributeId="in" attribute=data.attributes.in calc=data.calc.attributes.in}} </tr>
</div></td> <tr>
</tr> <td>{{localize "midgard5.luckPoints"}}</td>
<tr> <td><input name="data.gp" type="text" value="{{data.gp}}" data-dtype="Number" /></td>
<td><div class="attributes"> <td></td>
<div class="filler"></div> <td></td>
{{> "systems/midgard5/templates/sheets/character/attribute.hbs" attributeId="zt" attribute=data.attributes.zt calc=data.calc.attributes.zt}} </tr>
<div class="attribute-filler-fixed"></div> <tr height = 10px></tr>
{{> "systems/midgard5/templates/sheets/character/attribute.hbs" attributeId="au" attribute=data.attributes.au calc=data.calc.attributes.au}} </tbody>
<div class="attribute-filler-fixed"></div> </table>
{{> "systems/midgard5/templates/sheets/character/attribute.hbs" attributeId="pa" attribute=data.attributes.pa calc=data.calc.attributes.pa}} </div>
<div class="attribute-filler-fixed"></div> </div>
{{> "systems/midgard5/templates/sheets/character/attribute.hbs" attributeId="wk" attribute=data.attributes.wk calc=data.calc.attributes.wk}}
<div class="filler"></div>
</div></td>
</tr>
</tbody>
</table>
<table> <div class="flexcolumn-2">
<thead> <div class="flexpart">
<tr> <div class="flexpart-header"><img src="icons/magic/time/arrows-circling-pink.webp" class="flexpart-icon">{{localize "midgard5.calculated-values"}}</div>
<th class="title" colspan="4">Berechnete Werte</th> <table>
</tr> <tbody>
</thead> <tr height = 10px></tr>
<tbody> <tr>
<tr height = 10px></tr> <td>{{localize "midgard5.magicUsing"}}</td>
<tr> <td><input id="data.info.magicUsing" type="checkbox" name="data.info.magicUsing" {{checked data.info.magicUsing}}></td>
<td>{{localize "midgard5.brawl"}}</td> <td>{{localize "midgard5.movementRange"}}</td>
<td class="fixed-value">{{data.calc.stats.brawl.value}}</td> <td><input name="data.movement" type="text" value="{{data.movement}}" data-dtype="Number" /></td>
<td>{{localize "midgard5.enduranceBonus"}}</td> </tr>
<td class="fixed-value">{{data.calc.stats.enduranceBonus}}</td> <tr>
</tr> <td>{{localize "midgard5.actor-lp-short"}}</td>
<tr> <td><input name="data.lp.max" type="text" value="{{data.lp.max}}" data-dtype="Number" /></td>
<td>{{localize "midgard5.defense"}}</td> <td>{{localize "midgard5.actor-ap-short"}}</td>
<td class="fixed-value">{{data.calc.stats.defense.value}}</td> <td><input name="data.ap.max" type="text" value="{{data.ap.max}}" data-dtype="Number" /></td>
<td>{{localize "midgard5.defenseBonus"}}</td> </tr>
<td class="fixed-value">{{data.calc.stats.defenseBonus.value}}</td> <tr>
</tr> <td>{{localize "midgard5.brawl"}}</td>
<tr> <td class="fixed-value">{{data.calc.stats.brawl.value}}</td>
<td>{{localize "midgard5.damageBonus"}}</td> <td>{{localize "midgard5.enduranceBonus"}}</td>
<td class="fixed-value">{{data.calc.stats.damageBonus.value}}</td> <td class="fixed-value">{{data.calc.stats.enduranceBonus}}</td>
<td>{{localize "midgard5.attackBonus"}}</td> </tr>
<td class="fixed-value">{{data.calc.stats.attackBonus.value}}</td> <tr>
</tr> <td>{{localize "midgard5.defense"}}</td>
<tr> <td class="fixed-value">{{data.calc.stats.defense.value}}</td>
<td>{{localize "midgard5.spellCasting"}}</td> <td>{{localize "midgard5.defenseBonus"}}</td>
<td class="fixed-value">{{data.calc.stats.spellCasting.value}}</td> <td class="fixed-value">{{data.calc.stats.defenseBonus.value}}</td>
<td>{{localize "midgard5.poisonResistance"}}</td> </tr>
<td class="fixed-value">{{data.calc.stats.poisonResistance.value}}</td> <tr>
</tr> <td>{{localize "midgard5.damageBonus"}}</td>
<tr> <td class="fixed-value">{{data.calc.stats.damageBonus.value}}</td>
<td>{{localize "midgard5.resistanceMind"}}</td> <td>{{localize "midgard5.attackBonus"}}</td>
<td class="fixed-value">{{data.calc.stats.resistanceMind.value}}</td> <td class="fixed-value">{{data.calc.stats.attackBonus.value}}</td>
<td>{{localize "midgard5.resistanceBody"}}</td> </tr>
<td class="fixed-value">{{data.calc.stats.resistanceBody.value}}</td> <tr>
</tr> <td>{{localize "midgard5.spellCasting"}}</td>
<tr> <td class="fixed-value">{{data.calc.stats.spellCasting.value}}</td>
<td>{{localize "midgard5.resistanceMind"}}</td> <td>{{localize "midgard5.poisonResistance"}}</td>
<td class="fixed-value">{{data.calc.stats.resistanceMind.value}}</td> <td class="fixed-value">{{data.calc.stats.poisonResistance.value}}</td>
<td>{{localize "midgard5.resistanceBody"}}</td> </tr>
<td class="fixed-value">{{data.calc.stats.resistanceBody.value}}</td> <tr>
</tr> <td>{{localize "midgard5.resistanceMind"}}</td>
<tr> <td class="fixed-value">{{data.calc.stats.resistanceMind.value}}</td>
<td>{{localize "midgard5.movementRange"}}</td> <td>{{localize "midgard5.resistanceBody"}}</td>
<td class="fixed-value">{{data.calc.stats.movement.value}}</td> <td class="fixed-value">{{data.calc.stats.resistanceBody.value}}</td>
<td>{{localize "midgard5.actor-git-long"}}</td> </tr>
<td class="fixed-value">{{data.calc.stats.poisonResistance.value}}</td> {{#if (eq data.info.race "Zwerg")}}
</tr> <tr>
<tr height = 10px></tr> <td>{{localize "midgard5.hoard"}}</td>
</tbody> <td class="fixed-value">{{data.calc.stats.hoard}}</td>
</table> <td></td>
<td></td>
</tr>
<tr>
<td>{{localize "midgard5.hoardMin"}}</td>
<td class="fixed-value">{{data.calc.stats.hoardMin}}</td>
<td>{{localize "midgard5.hoard-next"}}</td>
<td class="fixed-value">{{data.calc.stats.hoardNext}}</td>
</tr>
{{/if}}
<table> <tr height = 10px></tr>
<thead> </tbody>
<tr> </table>
<th class="title" colspan="4">Beschreibung</th> </div>
</tr> </div>
</thead> </div>
<tbody>
<tr height = 10px></tr>
<tr>
<td>{{localize "midgard5.origin"}}</td>
<td><input name="data.info.origin" type="text" value="{{data.info.origin}}" data-dtype="String" /></td>
<td>{{localize "midgard5.gender"}}</td>
<td><input name="data.info.gender" type="text" value="{{data.info.gender}}" data-dtype="String" /></td>
</tr>
<tr>
<td>{{localize "midgard5.weight"}}</td>
<td><input name="data.info.weight" type="text" value="{{data.info.weight}}" data-dtype="String" /></td>
<td>{{localize "midgard5.height"}}</td>
<td><input name="data.info.height" type="text" value="{{data.info.height}}" data-dtype="String" /></td>
</tr>
<tr>
<td>{{localize "midgard5.shape"}}</td>
<td><input name="data.info.shape" type="text" value="{{data.info.shape}}" data-dtype="String" /></td>
<td>{{localize "midgard5.age"}}</td>
<td><input name="data.info.age" type="text" value="{{data.info.age}}" data-dtype="String" /></td>
</tr>
<tr>
<td>{{localize "midgard5.caste"}}</td>
<td><input name="data.info.caste" type="text" value="{{data.info.caste}}" data-dtype="String" /></td>
<td>{{localize "midgard5.faith"}}</td>
<td><input name="data.info.faith" type="text" value="{{data.info.faith}}" data-dtype="String" /></td>
</tr>
<tr height = 10px></tr>
</tbody>
</table>
{{editor content=data.description target="data.description" button=true owner=owner editable=editable}}
+190
View File
@@ -0,0 +1,190 @@
<div class="flexbox">
<div class="flexcolumn-1">
<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>
<td>{{localize "midgard5.defense"}}</td>
<td class="fixed-value">{{data.calc.stats.defense.value}}</td>
<td>{{localize "midgard5.defenseBonus"}}</td>
<td class="fixed-value">{{data.calc.stats.defenseBonus.value}}</td>
</tr>
<tr>
<td>{{localize "midgard5.attackBonus"}}</td>
<td class="fixed-value">{{data.calc.stats.attackBonus.value}}</td>
<td>{{localize "midgard5.damageBonus"}}</td>
<td class="fixed-value">{{data.calc.stats.damageBonus.value}}</td>
</tr>
</table>
</div>
</div>
<div class="flexcolumn-2">
<div class="flexpart">
<div class="flexpart-header"><img src="icons/skills/melee/hand-grip-sword-white-brown.webp" class="flexpart-icon">{{localize "midgard5.attack"}}</div>
<table>
<thead>
<tr>
<th class="title">{{localize "TYPES.Item.weapon"}}</th>
<th class="title">{{localize "midgard5.ew"}}</th>
<th class="title">{{localize "midgard5.damage"}}</th>
<th class="title center"><img src="/systems/midgard5/assets/icons/icon/battle-gear.svg" class="table-icon"></th>
<th class="title"><img src="/icons/svg/d20.svg" class="table-icon"></th>
</tr>
</thead>
<tbody>
{{#each data.calc.gear.weapons as |item itemId|}}
{{#if item.equipped}}
<tr data-item="{{itemId}}">
<td class="padding edit-item {{#if item.special}}highlight{{/if}}">{{item.label}}{{#if item.special}}(*){{/if}}</td>
<td class="fixed-value">{{item.calc.ew}}</td>
<td class="fixed-value">{{item.damageBase}}</td>
<td class="change-equipped">
{{#if item.equipped}}
<i class="fa-solid fa-circle-check"></i>
{{else}}
<i class="fa-regular fa-circle"></i>
{{/if}}
</td>
<td><button class="roll-button roll-weapon-button"></button></td>
</tr>
{{/if}}
{{/each}}
<tr data-item="{{itemId}}">
<td class="padding edit-item">{{localize "midgard5.brawl"}}</td>
<td class="fixed-value">{{data.calc.stats.brawlFw}}</td>
<td class="fixed-value">1d6 -4</td>
<td>&nbsp;</td>
<td><button class="roll-button roll-brawl-button"></button></td>
</tr>
</tbody>
</table>
<table>
<thead>
<tr>
<th class="title">{{localize "TYPES.Item.kampfkunst"}}</th>
<th class="title">{{localize "midgard5.kampfkunst-variante-short"}}</th>
<th class="title">{{localize "midgard5.ew"}}</th>
<th class="title"><img src="/icons/svg/d20.svg" class="table-icon"></th>
<th class="title add-kampfkunst"><i class="fa-regular fa-plus"></i></th>
</tr>
</thead>
<tbody>
{{#each data.calc.kampfkuenste as |item itemId|}}
<tr data-item="{{itemId}}">
<td class="padding edit-item">{{item.label}}</td>
<td>
{{#if item.isKido}}
<span class="spell-process">{{localize (m5concat "midgard5.kido-type-" item.type)}}</span>
{{#unless (eq item.type "finte")}}
<span class="spell-process">({{localize (m5concat "midgard5.kido-variante-" item.variante)}})</span>
{{/unless}}
{{else}}
<span class="spell-process">{{localize (m5concat "midgard5.kampfkunst-type-" item.type)}}</span>
{{#if (eq item.type "angriff")}}
<span class="spell-process">({{localize (m5concat "midgard5.kampfkunst-variante-" item.variante)}})</span>
{{/if}}
{{/if}}
</td>
<td class="fixed-value">{{item.calc.ew}}</td>
<td><button class="roll-button roll-weapon-button" /></td>
<td><a class="item-delete" title="Delete Item"><i class="fas fa-trash"></i></a></td>
</tr>
{{/each}}
</tbody>
</table>
</div>
</div>
<div class="flexcolumn-2">
<div class="flexpart">
<div class="flexpart-header"><img src="icons/skills/melee/shield-block-gray-orange.webp" class="flexpart-icon">{{localize "midgard5.defense"}}</div>
<table>
<tr height = 10px></tr>
<tr>
<td class="padding edit-item highlight">{{localize "midgard5.defense"}}</td>
<td class="center">{{add data.calc.stats.defense.value data.calc.stats.defenseBonus.value}}</td>
<td class="fixed-value"><button class="roll-button roll-defense-button"></button></td>
</tr>
<tr>
<td class="padding edit-item highlight">{{localize "midgard5.resistanceMind"}}</td>
<td class="center">{{data.calc.stats.resistanceMind.value}}</td>
<td class="fixed-value"><button class="roll-button roll-resistanceMind-button"></button></td>
</tr>
<tr>
<td class="padding edit-item highlight">{{localize "midgard5.resistanceBody"}}</td>
<td class="center">{{data.calc.stats.resistanceBody.value}}</td>
<td class="fixed-value"><button class="roll-button roll-resistanceBody-button"></button></td>
</tr>
</table>
<table>
<thead>
<tr>
<th class="title">{{localize "TYPES.Item.defensiveWeapon"}}</th>
<th class="title">{{localize "midgard5.ew"}}</th>
<th class="title">{{localize "midgard5.defenseBonus-short"}}</th>
<th class="title center"><img src="/systems/midgard5/assets/icons/icon/battle-gear.svg" class="table-icon"></th>
<th class="title"><img src="/icons/svg/d20.svg" class="table-icon"></th>
</tr>
</thead>
<tbody>
{{#each data.calc.gear.defensiveWeapons as |item itemId|}}
{{#if item.equipped}}
<tr data-item="{{itemId}}">
<td class="padding edit-item">{{item.label}}</td>
<td class="fixed-value">{{item.calc.ew}}</td>
<td class="fixed-value">{{item.defenseBonus}}</td>
<td class="change-equipped">
{{#if item.equipped}}
<i class="fa-solid fa-circle-check"></i>
{{else}}
<i class="fa-regular fa-circle"></i>
{{/if}}
</td>
<td><button class="roll-button roll-weapon-button"></button></td>
</tr>
{{/if}}
{{/each}}
</tbody>
</table>
<table>
<thead>
<tr>
<th class="title">{{localize "TYPES.Item.armor"}}</th>
<th class="title">{{localize "midgard5.actor-lp-short"}}</th>
<th class="title center"><img src="/systems/midgard5/assets/icons/icon/battle-gear.svg" class="table-icon"></th>
</tr>
</thead>
<tbody>
{{#each data.calc.gear.armor as |item itemId|}}
{{#if item.equipped}}
<tr data-item="{{itemId}}">
<td class="padding">{{item.label}}</td>
<td class="fixed-value">{{lpProtection}}</td>
<td class="change-equipped">
{{#if item.equipped}}
<i class="fa-solid fa-circle-check"></i>
{{else}}
<i class="fa-regular fa-circle"></i>
{{/if}}
</td>
</tr>
{{/if}}
{{/each}}
</tbody>
</table>
</div>
</div>
</div>
@@ -0,0 +1,50 @@
<div class="flexbox">
<div class="flexcolumn-1">
<div class="flexpart">
<div class="flexpart-header"><img src="icons/commodities/cloth/thread-spindle-white-needle.webp" class="flexpart-icon" />{{localize "midgard5.characteristics"}}</div>
<table>
<tbody>
<tr height="10px"></tr>
<tr>
<td>{{localize "midgard5.origin"}}</td>
<td><input name="data.info.origin" type="text" value="{{data.info.origin}}" data-dtype="String" /></td>
<td>{{localize "midgard5.gender"}}</td>
<td><input name="data.info.gender" type="text" value="{{data.info.gender}}" data-dtype="String" /></td>
<td>{{localize "midgard5.shape"}}</td>
<td><input name="data.info.shape" type="text" value="{{data.info.shape}}" data-dtype="String" /></td>
<td>{{localize "midgard5.age"}}</td>
<td><input name="data.info.age" type="text" value="{{data.info.age}}" data-dtype="String" /></td>
</tr>
<tr>
<td>{{localize "midgard5.weight"}}</td>
<td><input name="data.info.weight" type="text" value="{{data.info.weight}}" data-dtype="String" /></td>
<td>{{localize "midgard5.height"}}</td>
<td><input name="data.info.height" type="text" value="{{data.info.height}}" data-dtype="String" /></td>
<td>{{localize "midgard5.caste"}}</td>
<td><input name="data.info.caste" type="text" value="{{data.info.caste}}" data-dtype="String" /></td>
<td>{{localize "midgard5.faith"}}</td>
<td><input name="data.info.faith" type="text" value="{{data.info.faith}}" data-dtype="String" /></td>
</tr>
<tr height="10px"></tr>
</tbody>
</table>
</div>
</div>
<div class="flexcolumn-1">
<div class="flexpart" style="height: 250px;">
<div class="flexpart-header"><img src="icons/environment/wilderness/mine-interior-dungeon-door.webp" class="flexpart-icon" />{{localize "midgard5.description"}}</div>
<br />
<div class="biography">{{editor content=data.info.description target="data.info.description" button=true owner=owner editable=editable}}</div>
</div>
</div>
<div class="flexcolumn-1">
<div class="flexpart" style="height: 250px;">
<div class="flexpart-header"><img src="icons/environment/people/group.webp" class="flexpart-icon" />{{localize "midgard5.background"}}</div>
<br />
<div class="biography">{{editor content=data.info.background target="data.info.background" button=true owner=owner editable=editable}}</div>
</div>
</div>
</div>
+2 -1
View File
@@ -2,7 +2,8 @@
<thead> <thead>
<tr> <tr>
<th class="title">{{localize "TYPES.Item.effect"}}</th> <th class="title">{{localize "TYPES.Item.effect"}}</th>
<th class="title"></th> <th class="title add-effect"><i class="fa-regular fa-plus"></i></th>
</tr> </tr>
</thead> </thead>
<tbody> <tbody>
+378 -118
View File
@@ -1,125 +1,385 @@
<table> <h3>{{localize "midgard5.wealthAndContainers"}}</h3>
<thead> <div class="flexbox">
<tr>
<th class="title">{{localize "TYPES.Item.weapon"}}</th>
<th class="title">{{localize "midgard5.ew"}}</th>
<th class="title"></th>
<th class="title"></th>
</tr>
</thead>
<tbody>
{{#each data.calc.gear.weapons as |item itemId|}}
<tr data-item="{{itemId}}">
<td class="padding edit-item">{{item.label}}</td>
<td class="fixed-value">{{item.calc.ew}}</td>
<td class="fixed-value"><button class="roll-button roll-weapon-button"></button></td>
<td class="fixed-value"><a class="item-delete" title="Delete Item"><i class="fas fa-trash"></i></a></td>
</tr>
{{/each}}
<tr data-item="{{itemId}}"> <div class="flexcolumn-2">
<td class="padding edit-item">{{localize "midgard5.brawl"}}</td> <div class="flexpart">
<td class="center">{{data.calc.stats.brawlFw}}</td> <div class="flexpart-header"><img src="icons/commodities/currency/coins-assorted-mix-copper-silver-gold.webp" class="flexpart-icon">{{localize "midgard5.currency"}}</div>
<td class="fixed-value"><button class="roll-button roll-brawl-button"></button></td> <table>
<td class="fixed-value"></td> <thead class="theader">
</tr> <tr>
</tbody> <th class="title" style="text-align: center">{{localize "midgard5.currency-wealth"}}</th>
</table> <th class="title" style="text-align: center">{{localize "midgard5.currency-gold"}}</th>
<th class="title" style="text-align: center">{{localize "midgard5.currency-silver"}}</th>
<th class="title" style="text-align: center">{{localize "midgard5.currency-copper"}}</th>
{{#if (eq data.info.race "Zwerg")}}
<th class="title" style="text-align: center">{{localize "midgard5.hoard"}}</th>
{{/if}}
</tr>
</thead>
<tbody>
<tr height = 10px></tr>
<tr>
<td class="fixed-value"><input type="number" name="data.info.wealth" value="{{data.calc.stats.wealth}}"></td>
<td class="fixed-value"><input type="number" name="data.info.gold" value="{{data.info.gold}}"></td>
<td class="fixed-value"><input type="number" name="data.info.silver" value="{{data.info.silver}}"></td>
<td class="fixed-value"><input type="number" name="data.info.copper" value="{{data.info.copper}}"></td>
{{#if (eq data.info.race "Zwerg")}}
<td class="fixed-value"><input type="number" name="midgard5.hoard" value="{{data.calc.stats.hoard}}"></td>
{{/if}}
</tr>
</tbody>
</table>
</div>
</div>
<table> <div class="flexcolumn-2">
<thead> <div class="flexpart">
<tr> <div class="flexpart-header"><img src="icons/containers/chest/chest-simple-box-brown.webp" class="flexpart-icon">{{localize "TYPES.Item.container"}}</div>
<th class="title">{{localize "TYPES.Item.defensiveWeapon"}}</th> <table>
<th class="title">{{localize "midgard5.ew"}}</th> <thead class="theader">
<th class="title"></th> <tr>
<th class="title"></th> <th class="title">{{localize "TYPES.Item.container"}}</th>
</tr> <th class="title center">{{localize "midgard5.item-value"}}</th>
</thead> <th class="title center"><img src="/systems/midgard5/assets/icons/icon/battle-gear.svg" class="table-icon"></th>
<tbody> <th class="title"><img src="/icons/svg/d20.svg" class="table-icon"></th>
{{#each data.calc.gear.defensiveWeapons as |item itemId|}} <th class="title add-container"><i class="fa-regular fa-plus"></i></th>
<tr data-item="{{itemId}}"> </tr>
<td class="padding edit-item">{{item.label}}</td> </thead>
<td class="fixed-value">{{item.calc.ew}}</td> <tbody>
<td class="fixed-value"><button class="roll-button roll-weapon-button"></button></td> <tr height = 10px></tr>
<td class="fixed-value"><a class="item-delete" title="Delete Item"><i class="fas fa-trash"></i></a></td> {{#each data.calc.gear.containers as |item itemId|}}
</tr> <tr data-item="{{itemId}}">
{{/each}} <td class="padding">
<span class="edit-item">{{item.label}}</span>
</td>
<td style="text-align: start">
{{#unless (or (eq item.value 0) (eq item.currency ""))}}
<span class="spell-process">{{item.value}} {{localize (m5concat "midgard5.currency-" item.currency)}}</span>
{{/unless}}
</td>
<td class="change-equipped">
{{#if item.equipped}}
<i class="fa-solid fa-circle-check"></i>
{{else}}
<i class="fa-regular fa-circle"></i>
{{/if}}
</td>
<td>{{#if item.rollExist}}<button class="roll-button roll-consumable-item"></button>{{/if}}</td>
<td><a class="item-delete" title="Delete Item"><i class="fas fa-trash"></i></a></td>
</tr>
{{/each}}
</tbody>
</table>
</div>
</div>
</div>
<tr data-item="{{itemId}}"> <h3>{{localize "midgard5.itemsInContainers"}}</h3>
<td class="padding edit-item">{{localize "midgard5.defense"}}</td> <div class="flexbox">
<td class="center">{{add data.calc.stats.defense.value data.calc.stats.defenseBonus.value}}</td> {{#each data.calc.gear.containers as |container containerId|}}
<td class="fixed-value"><button class="roll-button roll-defense-button"></button></td> <div class="flexcolumn-2">
<td class="fixed-value"></td> <div class="flexpart">
</tr> <div class="flexpart-header"><img src="{{container.icon}}" class="flexpart-icon">{{container.label}}</div>
<table>
<thead class="theader">
<tr>
<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>
<th class="title center"><img src="/systems/midgard5/assets/icons/icon/battle-gear.svg" class="table-icon"></th>
<th class="title"><img src="/icons/svg/d20.svg" class="table-icon"></th>
<th class="title">&nbsp;</th>
</tr>
</thead>
<tbody>
<tr height = 10px></tr>
{{#each ../data.calc.gear.items as |item itemId|}}
{{#if (eq item.containerId containerId)}}
<tr data-item="{{itemId}}">
<td class="padding">
<span class="edit-item">{{item.label}}</span>
</td>
<td>
<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 class="change-equipped">
{{#if item.equipped}}
<i class="fa-solid fa-circle-check"></i>
{{else}}
<i class="fa-regular fa-circle"></i>
{{/if}}
</td>
<td>{{#if item.rollExist}}<button class="roll-button roll-consumable-item"></button>{{/if}}</td>
<td><a class="item-delete" title="Delete Item"><i class="fas fa-trash"></i></a></td>
</tr>
{{/if}}
{{/each}}
{{#each ../data.calc.gear.weapons as |item itemId|}}
{{#if (eq item.containerId containerId)}}
<tr data-item="{{itemId}}">
<td class="padding">
<span class="edit-item">{{item.label}}</span>
</td>
<td></td>
<td style="text-align: start">
{{#unless (or (eq item.value 0) (eq item.currency ""))}}
<span class="spell-process">{{item.value}} {{localize (m5concat "midgard5.currency-" item.currency)}}</span>
{{/unless}}
</td>
<td class="change-equipped">
{{#if item.equipped}}
<i class="fa-solid fa-circle-check"></i>
{{else}}
<i class="fa-regular fa-circle"></i>
{{/if}}
</td>
<td>{{#if item.rollExist}}<button class="roll-button roll-consumable-item"></button>{{/if}}</td>
<td><a class="item-delete" title="Delete Item"><i class="fas fa-trash"></i></a></td>
</tr>
{{/if}}
{{/each}}
{{#each ../data.calc.gear.defensiveWeapons as |item itemId|}}
{{#if (eq item.containerId containerId)}}
<tr data-item="{{itemId}}">
<td class="padding">
<span class="edit-item">{{item.label}}</span>
</td>
<td></td>
<td style="text-align: start">
{{#unless (or (eq item.value 0) (eq item.currency ""))}}
<span class="spell-process">{{item.value}} {{localize (m5concat "midgard5.currency-" item.currency)}}</span>
{{/unless}}
</td>
<td class="change-equipped">
{{#if item.equipped}}
<i class="fa-solid fa-circle-check"></i>
{{else}}
<i class="fa-regular fa-circle"></i>
{{/if}}
</td>
<td>{{#if item.rollExist}}<button class="roll-button roll-consumable-item"></button>{{/if}}</td>
<td><a class="item-delete" title="Delete Item"><i class="fas fa-trash"></i></a></td>
</tr>
{{/if}}
{{/each}}
{{#each ../data.calc.gear.armor as |item itemId|}}
{{#if (eq item.containerId containerId)}}
<tr data-item="{{itemId}}">
<td class="padding">
<span class="edit-item">{{item.label}}</span>
</td>
<td></td>
<td style="text-align: start">
{{#unless (or (eq item.value 0) (eq item.currency ""))}}
<span class="spell-process">{{item.value}} {{localize (m5concat "midgard5.currency-" item.currency)}}</span>
{{/unless}}
</td>
<td class="change-equipped">
{{#if item.equipped}}
<i class="fa-solid fa-circle-check"></i>
{{else}}
<i class="fa-regular fa-circle"></i>
{{/if}}
</td>
<td>{{#if item.rollExist}}<button class="roll-button roll-consumable-item"></button>{{/if}}</td>
<td><a class="item-delete" title="Delete Item"><i class="fas fa-trash"></i></a></td>
</tr>
{{/if}}
{{/each}}
</tbody>
</table>
</div>
</div>
{{/each}}
</div>
<tr data-item="{{itemId}}"> <h3>
<td class="padding edit-item">{{localize "midgard5.resistanceMind"}}</td> {{localize "midgard5.allItems"}}
<td class="center">{{data.calc.stats.resistanceMind.value}}</td> <input id="data.info.showAllItems" class="checkbox" type="checkbox" name="data.info.showAllItems" {{checked data.info.showAllItems}} style="float: right;">
<td class="fixed-value"><button class="roll-button roll-resistanceMind-button"></button></td> <label for="data.info.showAllItems" style="font-size: normal; font-weight: normal; font-style: italic; float: right;">{{localize "midgard5.showAll"}}&nbsp;</label>
<td class="fixed-value"></td> </h3>
</tr> <div class="flexbox">
{{#unless (eq (count data.calc.gear.items) 0)}}
<tr data-item="{{itemId}}"> <div class="flexcolumn-2">
<td class="padding edit-item">{{localize "midgard5.resistanceBody"}}</td> <div class="flexpart">
<td class="center">{{data.calc.stats.resistanceBody.value}}</td> <div class="flexpart-header"><img src="icons/tools/hand/scale-balances-merchant-brown.webp" class="flexpart-icon">{{localize "midgard5.gear"}}</div>
<td class="fixed-value"><button class="roll-button roll-resistanceBody-button"></button></td> <table>
<td class="fixed-value"></td> <thead class="theader">
</tr> <tr>
</tbody> <th class="title">{{localize "TYPES.Item.item"}}</th>
</table> <th class="title center">{{localize "midgard5.item-quantity"}}</th>
<th class="title center">{{localize "midgard5.item-value"}}</th>
<table> <th class="title"><img src="/systems/midgard5/assets/icons/icon/battle-gear.svg" class="table-icon"></th>
<thead> <th class="title"><img src="/icons/svg/d20.svg" class="table-icon"></th></th>
<tr> <th class="title add-item"><i class="fa-regular fa-plus"></i></th>
<th class="title">{{localize "TYPES.Item.armor"}}</th> </tr>
<th class="title">{{localize "midgard5.actor-lp-short"}}</th> </thead>
<th class="title">{{localize "midgard5.actor-ap-short"}}</th> <tbody>
<th class="title">{{localize "midgard5.attackBonus-short"}}</th> <tr height = 10px></tr>
<th class="title">{{localize "midgard5.defenseBonus-short"}}</th> </tr>
<th class="title">B</th> {{#each data.calc.gear.items as |item itemId|}}
<th class="title">Gw</th> {{#if (or ../data.info.showAllItems (eq item.containerId ""))}}
<th class="title"></th> <tr data-item="{{itemId}}">
</tr> <td class="padding">
</thead> <span class="edit-item">{{item.label}}</span>
<tbody> </td>
{{#each data.calc.gear.armor as |item itemId|}} <td>
<tr data-item="{{itemId}}"> <i class="fa fa-minus-circle quantity-decrease" style="cursor: pointer"></i>
<td class="padding"> <span>{{item.quantity}}</span>
<span class="edit-item">{{item.label}}</span> <i class="fa fa-plus-circle quantity-increase" style="cursor: pointer"></i>
{{#if item.equipped}} </td>
<span class="spell-process">{{localize "midgard5.equipped"}}</span> <td style="text-align: start">
{{#unless (or (eq item.value 0) (eq item.currency ""))}}
<span class="spell-process">{{item.value}} {{localize (m5concat "midgard5.currency-" item.currency)}}</span>
{{/unless}}
</td>
<td class="change-equipped">
{{#if item.equipped}}
<i class="fa-solid fa-circle-check"></i>
{{else}}
<i class="fa-regular fa-circle"></i>
{{/if}}
</td>
<td>{{#if item.rollExist}}<button class="roll-button roll-consumable-item"></button>{{/if}}</td>
<td><a class="item-delete" title="Delete Item"><i class="fas fa-trash"></i></a></td>
</tr>
{{/if}} {{/if}}
</td> {{/each}}
<td class="fixed-value">{{actorItemValue ../actor._id itemId "lpProtection" ../actor.isToken}}</td> </tbody>
<td class="fixed-value">{{actorItemValue ../actor._id itemId "apProtection"}}</td> </table>
<td class="fixed-value">{{actorItemValue ../actor._id itemId "stats.attackBonus"}}</td> </div>
<td class="fixed-value">{{actorItemValue ../actor._id itemId "stats.defenseBonus"}}</td> </div>
<td class="fixed-value">{{actorItemValue ../actor._id itemId "stats.movementBonus"}}</td> {{/unless}}
<td class="fixed-value">{{actorItemValue ../actor._id itemId "attributeMod.gw"}}</td>
<td class="fixed-value"><a class="item-delete" title="Delete Item"><i class="fas fa-trash"></i></a></td>
</tr>
{{/each}}
</tbody>
</table>
<table> {{#unless (eq (count data.calc.gear.weapons) 0)}}
<thead> <div class="flexcolumn-2">
<tr> <div class="flexpart">
<th class="title">{{localize "TYPES.Item.item"}}</th> <div class="flexpart-header">
<th class="title"></th> <img src="icons/weapons/swords/sword-guard-engraved-worn.webp" class="flexpart-icon">{{localize "midgard5.weapons"}}</div>
</tr> <table>
</thead> <thead>
<tbody> <tr>
{{#each data.calc.gear.items as |item itemId|}} <th class="title">{{localize "TYPES.Item.weapon"}}</th>
<tr data-item="{{itemId}}"> <th class="title center">{{localize "midgard5.item-value"}}</th>
<td class="padding"> <th class="title"><img src="/systems/midgard5/assets/icons/icon/battle-gear.svg" class="table-icon"></th>
<span class="edit-item">{{item.label}}</span> <th class="title add-weapon"><i class="fa-regular fa-plus"></i></th>
{{#if item.equipped}}
<span class="spell-process">{{localize "midgard5.equipped"}}</span> </tr>
</thead>
<tbody>
{{#each data.calc.gear.weapons as |item itemId|}}
{{#if (or ../data.info.showAllItems (eq item.containerId ""))}}
<tr data-item="{{itemId}}">
<td class="padding edit-item">{{item.label}}</td>
<td style="text-align: start">
{{#unless (or (eq item.value 0) (eq item.currency ""))}}
<span class="spell-process">{{item.value}} {{localize (m5concat "midgard5.currency-" item.currency)}}</span>
{{/unless}}
</td>
<td class="change-equipped">
{{#if item.equipped}}
<i class="fa-solid fa-circle-check"></i>
{{else}}
<i class="fa-regular fa-circle"></i>
{{/if}}
</td>
<td><a class="item-delete" title="Delete Item"><i class="fas fa-trash"></i></a></td>
</tr>
{{/if}} {{/if}}
</td> {{/each}}
<td class="fixed-value"><a class="item-delete" title="Delete Item"><i class="fas fa-trash"></i></a></td> </tbody>
</tr> </table>
{{/each}} </div>
</tbody> </div>
</table> {{/unless}}
{{#unless (eq (count data.calc.gear.defensiveWeapons) 0)}}
<div class="flexcolumn-2">
<div class="flexpart">
<div class="flexpart-header"><img src="icons/equipment/shield/heater-wooden-brown-axe.webp" class="flexpart-icon">{{localize "midgard5.defensive-weapons"}}</div>
<table>
<thead>
<tr>
<th class="title">{{localize "TYPES.Item.defensiveWeapon"}}</th>
<th class="title center">{{localize "midgard5.item-value"}}</th>
<th class="title"><img src="/systems/midgard5/assets/icons/icon/battle-gear.svg" class="table-icon"></th>
<th class="title add-defensiveWeapon"><i class="fa-regular fa-plus"></i></th>
</tr>
</thead>
<tbody>
{{#each data.calc.gear.defensiveWeapons as |item itemId|}}
{{#if (or ../data.info.showAllItems (eq item.containerId ""))}}
<tr data-item="{{itemId}}">
<td class="padding edit-item">{{item.label}}</td>
<td style="text-align: start">
{{#unless (or (eq item.value 0) (eq item.currency ""))}}
<span class="spell-process">{{item.value}} {{localize (m5concat "midgard5.currency-" item.currency)}}</span>
{{/unless}}
</td>
<td class="change-equipped">
{{#if item.equipped}}
<i class="fa-solid fa-circle-check"></i>
{{else}}
<i class="fa-regular fa-circle"></i>
{{/if}}
</td>
<td><a class="item-delete" title="Delete Item"><i class="fas fa-trash"></i></a></td>
</tr>
{{/if}}
{{/each}}
</tbody>
</table>
</div>
</div>
{{/unless}}
{{#unless (eq (count data.calc.gear.armor) 0)}}
<div class="flexcolumn-2">
<div class="flexpart">
<div class="flexpart-header"><img src="icons/equipment/hand/gauntlet-armored-steel-grey.webp" class="flexpart-icon">{{localize "midgard5.armor"}}</div>
<table>
<thead>
<tr>
<th class="title">{{localize "TYPES.Item.armor"}}</th>
<th class="title center">{{localize "midgard5.item-value"}}</th>
<th class="title"><img src="/systems/midgard5/assets/icons/icon/battle-gear.svg" class="table-icon"></th>
<th class="title add-armor"><i class="fa-regular fa-plus"></i></th>
</tr>
</thead>
<tbody>
{{#each data.calc.gear.armor as |item itemId|}}
{{#if (or ../data.info.showAllItems (eq item.containerId ""))}}
<tr data-item="{{itemId}}">
<td class="padding edit-item">{{item.label}}</td>
<td style="text-align: start">
{{#unless (or (eq item.value 0) (eq item.currency ""))}}
<span class="spell-process">{{item.value}} {{localize (m5concat "midgard5.currency-" item.currency)}}</span>
{{/unless}}
</td>
<td class="change-equipped">
{{#if item.equipped}}
<i class="fa-solid fa-circle-check"></i>
{{else}}
<i class="fa-regular fa-circle"></i>
{{/if}}
</td>
<td><a class="item-delete" title="Delete Item"><i class="fas fa-trash"></i></a></td>
</tr>
{{/if}}
{{/each}}
</tbody>
</table>
</div>
</div>
{{/unless}}
</div>
@@ -1,33 +0,0 @@
<table>
<thead>
<tr>
<th class="title">{{localize "TYPES.Item.kampfkunst"}}</th>
<th class="title">{{localize "midgard5.ew"}}</th>
<th class="title"></th>
<th class="title"></th>
</tr>
</thead>
<tbody>
{{#each data.calc.kampfkuenste as |item itemId|}}
<tr data-item="{{itemId}}">
<td class="padding edit-item">
<span>{{item.label}}</span>
{{#if item.isKido}}
<span class="spell-process">{{localize (m5concat "midgard5.kido-type-" item.type)}}</span>
{{#unless (eq item.type "finte")}}
<span class="spell-process">({{localize (m5concat "midgard5.kido-variante-" item.variante)}})</span>
{{/unless}}
{{else}}
<span class="spell-process">{{localize (m5concat "midgard5.kampfkunst-type-" item.type)}}</span>
{{#if (eq item.type "angriff")}}
<span class="spell-process">({{localize (m5concat "midgard5.kampfkunst-variante-" item.variante)}})</span>
{{/if}}
{{/if}}
</td>
<td class="fixed-value">{{item.calc.ew}}</td>
<td class="fixed-value"><button class="roll-button roll-weapon-button" /></td>
<td class="fixed-value"><a class="item-delete" title="Delete Item"><i class="fas fa-trash"></i></a></td>
</tr>
{{/each}}
</tbody>
</table>
+122 -102
View File
@@ -1,101 +1,116 @@
<form class="actor-sheet {{cssClass}}" autocomplete="off"> <form class="actor-sheet {{cssClass}}" autocomplete="off">
<header class="sheet-header"> <header class="flexbox" style="background-color: beige; padding: 5px; border: 2px solid black;">
<table style="padding: 5px;">
<tr height = 5px></tr> <!-- Logo -->
<tr> <div class="flexcolumn-5" style="height: 200px;">
<td style="text-align: left;" colspan="4" rowspan="2"><img style="border: 0px solid black;" src="/systems/midgard5/assets/icons/logo/midgard.webp" alt="Midgard"></td> <img class="profile-img" src="/systems/midgard5/assets/icons/backgrounds/bg1.webp" alt="Midgard">
<td></td> </div>
<td colspan="5" style="font-size: x-large; font-weigh: bold;"><input name="name" type="text" value="{{actor.name}}" data-dtype="String" /></td>
<td style="font-size: x-large; font-weigh: bold; text-align: center; text-align-vertical: middle;" ><div style="border: 2px solid black; border-radius: 10px; background-color: white;">{{data.calc.level}}</div></td> <!-- Name, Class, Level, Race, Occupation -->
</tr> <div class="flexcolumn-2" style="margin:0px 5px 0px 5px;">
<tr> <table class="bordered">
<td></td> <tr>
<td colspan="5"><b>Name</b></td> <td >{{localize "midgard5.actor-name"}}</td>
<td style="text-align: center;"><b>Grad</b></td> <td colspan="3"><input name="name" type="text" value="{{actor.name}}" data-dtype="String" /></td>
</tr> </tr>
<tr height = 10px></tr> <tr>
<tr> <td >{{localize "midgard5.class"}}</td>
<td rowspan="8" width=128><img style="max-width: 128px; height: 160px; border: 0px solid black;" src="{{actor.img}}" data-edit="img" title="{{actor.name}}" /></td> <td><input name="data.info.class" type="text" value="{{data.info.class}}" data-dtype="String" /></td>
<td></td> <td >{{localize "midgard5.level"}}</td>
<td colspan="3"> <td>{{data.calc.level}}</td>
<input list="races" type="search" name="data.info.race" value="{{data.info.race}}" /> </table>
<datalist id="races">
<option value="Mensch"> <table style="font-weight: bold;">
<option value="Elf"> <tr height = 10px></tr>
<option value="Gnom"> <tr>
<option value="Halbling"> <td >
<option value="Zwerg"> <input list="races" type="search" name="data.info.race" value="{{data.info.race}}" />
</datalist> <datalist id="races">
</td> <option value="Mensch">
<td colspan="3"><input name="data.info.class" type="text" value="{{data.info.class}}" data-dtype="String" /></td> <option value="Elf">
<td colspan="3"><b><input name="data.info.occupation" type="text" value="{{data.info.occupation}}" data-dtype="String" /></b></td> <option value="Gnom">
</tr> <option value="Halbling">
<tr> <option value="Zwerg">
<td></td> </datalist>
<td colspan="3"><b>{{localize "midgard5.race"}}</b></td> </td>
<td colspan="3"><b>{{localize "midgard5.class"}}</b></td> <td ><input name="data.info.occupation" type="text" value="{{data.info.occupation}}" data-dtype="String" /></td>
<td colspan="3"><b>{{localize "midgard5.occupation"}}</b></td> </tr>
</tr> <tr>
<tr height = 10px></tr> <td style="text-align: center; font-size: small">{{localize "midgard5.race"}}</td>
<tr> <td style="text-align: center; font-size: small">{{localize "midgard5.occupation"}}</td>
<td style="text-align: right"><b>{{localize "midgard5.actor-lp-short"}}</b></td> </tr>
<td colspan="9"> </table>
<div class="health-bar">
<input name="data.lp.value" type="text" value="{{data.lp.value}}" data-dtype="Number" /> <table style="width: 100%;">
{{#times data.lp.max}} <tr>
{{#if (lt this ../data.lp.value)}} <td class="attribute">{{localize "midgard5.actor-st"}}</td>
<div class="lp-bar-item update-lp" data-value="{{this}}"></div> <td class="attribute">{{localize "midgard5.actor-gs"}}</td>
{{else}} <td class="attribute">{{localize "midgard5.actor-gw"}}</td>
<div class="lp-bar-item-empty update-lp" data-value="{{this}}"></div> <td class="attribute">{{localize "midgard5.actor-ko"}}</td>
{{/if}} <td class="attribute">{{localize "midgard5.actor-in"}}</td>
{{/times}} <td class="attribute">{{localize "midgard5.actor-zt"}}</td>
<input name="data.lp.max" type="text" value="{{data.lp.max}}" data-dtype="Number" /> <td class="attribute">{{localize "midgard5.actor-au"}}</td>
</div> <td class="attribute">{{localize "midgard5.actor-pa"}}</td>
</td> <td class="attribute">{{localize "midgard5.actor-wk"}}</td>
</tr> <td class="attribute">{{localize "midgard5.actor-git"}}</td>
<tr> </tr>
<td style="text-align: right"><b>{{localize "midgard5.actor-ap-short"}}</b></td> <tr>
<td colspan="9"> <td class="attribute-value roll-attribute-button" data-attribute="st" data-value="{{data.calc.attributes.st.value}}">{{data.calc.attributes.st.value}}</td>
<div class="health-bar"> <td class="attribute-value roll-attribute-button" data-attribute="gs" data-value="{{data.calc.attributes.gs.value}}">{{data.calc.attributes.gs.value}}</td>
<input name="data.ap.value" type="text" value="{{data.ap.value}}" data-dtype="Number" /> <td class="attribute-value roll-attribute-button" data-attribute="gw" data-value="{{data.calc.attributes.gw.value}}">{{data.calc.attributes.gw.value}}</td>
{{#times data.ap.max}} <td class="attribute-value roll-attribute-button" data-attribute="ko" data-value="{{data.calc.attributes.ko.value}}">{{data.calc.attributes.ko.value}}</td>
{{#if (lt this ../data.ap.value)}} <td class="attribute-value roll-attribute-button" data-attribute="in" data-value="{{data.calc.attributes.in.value}}">{{data.calc.attributes.in.value}}</td>
<div class="ap-bar-item update-ap" data-value="{{this}}"></div> <td class="attribute-value roll-attribute-button" data-attribute="zt" data-value="{{data.calc.attributes.zt.value}}">{{data.calc.attributes.zt.value}}</td>
{{else}} <td class="attribute-value roll-attribute-button" data-attribute="au" data-value="{{data.calc.attributes.au.value}}">{{data.calc.attributes.au.value}}</td>
<div class="ap-bar-item-empty update-ap" data-value="{{this}}"></div> <td class="attribute-value roll-attribute-button" data-attribute="pa" data-value="{{data.calc.attributes.pa.value}}">{{data.calc.attributes.pa.value}}</td>
{{/if}} <td class="attribute-value roll-attribute-button" data-attribute="wk" data-value="{{data.calc.attributes.wk.value}}">{{data.calc.attributes.wk.value}}</td>
{{/times}} <td class="attribute-value roll-attribute-button" data-attribute="git" data-value="{{data.calc.stats.poisonResistance.value}}">{{data.calc.stats.poisonResistance.value}}</td>
<input name="data.ap.max" type="text" value="{{data.ap.max}}" data-dtype="Number" /> </tr>
</div> </table>
</td> </div>
</tr>
<tr height = 10px></tr> <!-- Profilbild -->
<tr> <div class="flexcolumn-5" style="height: 200px;text-align: center;" >
<td class="attribute">{{localize "midgard5.actor-st"}}</td> <img class="profile-img" src="{{actor.img}}" data-edit="img" title="{{actor.name}}" />
<td class="attribute">{{localize "midgard5.actor-gs"}}</td> </div>
<td class="attribute">{{localize "midgard5.actor-gw"}}</td>
<td class="attribute">{{localize "midgard5.actor-ko"}}</td> <!-- LP + AP -->
<td class="attribute">{{localize "midgard5.actor-in"}}</td> <div class="flexcolumn-1">
<td class="attribute">{{localize "midgard5.actor-zt"}}</td> <table>
<td class="attribute">{{localize "midgard5.actor-au"}}</td> <tr>
<td class="attribute">{{localize "midgard5.actor-pa"}}</td> <td><b>{{localize "midgard5.actor-lp-short"}}</b></td>
<td class="attribute">{{localize "midgard5.actor-wk"}}</td> <td colspan="9">
<td class="attribute">{{localize "midgard5.actor-git"}}</td> <div class="health-bar">
</tr> <input name="data.lp.value" type="text" value="{{data.lp.value}}" data-dtype="Number" />
<tr> {{#times data.lp.max}}
<td class="attribute-value roll-attribute-button" data-attribute="st" data-value="{{data.calc.attributes.st.value}}">{{data.calc.attributes.st.value}}</td> {{#if (lt this ../data.lp.value)}}
<td class="attribute-value roll-attribute-button" data-attribute="gs" data-value="{{data.calc.attributes.gs.value}}">{{data.calc.attributes.gs.value}}</td> <div class="lp-bar-item update-lp" data-value="{{this}}"></div>
<td class="attribute-value roll-attribute-button" data-attribute="gw" data-value="{{data.calc.attributes.gw.value}}">{{data.calc.attributes.gw.value}}</td> {{else}}
<td class="attribute-value roll-attribute-button" data-attribute="ko" data-value="{{data.calc.attributes.ko.value}}">{{data.calc.attributes.ko.value}}</td> <div class="lp-bar-item-empty update-lp" data-value="{{this}}"></div>
<td class="attribute-value roll-attribute-button" data-attribute="in" data-value="{{data.calc.attributes.in.value}}">{{data.calc.attributes.in.value}}</td> {{/if}}
<td class="attribute-value roll-attribute-button" data-attribute="zt" data-value="{{data.calc.attributes.zt.value}}">{{data.calc.attributes.zt.value}}</td> {{/times}}
<td class="attribute-value roll-attribute-button" data-attribute="au" data-value="{{data.calc.attributes.au.value}}">{{data.calc.attributes.au.value}}</td> <div class="max-value">{{data.lp.max}}</div>
<td class="attribute-value roll-attribute-button" data-attribute="pa" data-value="{{data.calc.attributes.pa.value}}">{{data.calc.attributes.pa.value}}</td> </div>
<td class="attribute-value roll-attribute-button" data-attribute="wk" data-value="{{data.calc.attributes.wk.value}}">{{data.calc.attributes.wk.value}}</td> </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>
<tr height = 5px></tr> <td><b>{{localize "midgard5.actor-ap-short"}}</b></td>
</table> <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> </header>
{{!-- Character Sheet Navigation --}} {{!-- Character Sheet Navigation --}}
@@ -103,11 +118,12 @@
<a class="item active" data-tab="base_values">{{ localize "midgard5.base_values" }}</a> <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="skills">{{ localize "midgard5.skills" }}</a>
<a class="item" data-tab="gear">{{ localize "midgard5.gear" }}</a> <a class="item" data-tab="gear">{{ localize "midgard5.gear" }}</a>
<a class="item" data-tab="combat">{{ localize "midgard5.combat" }}</a>
{{#if actor.system.info.magicUsing }} {{#if actor.system.info.magicUsing }}
<a class="item" data-tab="spells">{{ localize "midgard5.spells" }}</a> <a class="item" data-tab="spells">{{ localize "midgard5.spells" }}</a>
{{/if}} {{/if}}
<a class="item" data-tab="kampfkuenste">{{ localize "midgard5.kampfkuenste" }}</a>
<a class="item" data-tab="effects">{{ localize "midgard5.effects" }}</a> <a class="item" data-tab="effects">{{ localize "midgard5.effects" }}</a>
<a class="item" data-tab="description">{{ localize "midgard5.description" }}</a>
</nav> </nav>
<section class="sheet-content"> <section class="sheet-content">
@@ -124,16 +140,20 @@
{{> "systems/midgard5/templates/sheets/character/gear.hbs"}} {{> "systems/midgard5/templates/sheets/character/gear.hbs"}}
</div> </div>
<div class="tab base_values flexcol" data-group="primary" data-tab="spells"> <div class="tab base_values flexcol" data-group="primary" data-tab="combat">
{{> "systems/midgard5/templates/sheets/character/spells.hbs"}} {{> "systems/midgard5/templates/sheets/character/combat.hbs"}}
</div> </div>
<div class="tab base_values flexcol" data-group="primary" data-tab="kampfkuenste"> <div class="tab base_values flexcol" data-group="primary" data-tab="spells">
{{> "systems/midgard5/templates/sheets/character/kampfkuenste.hbs"}} {{> "systems/midgard5/templates/sheets/character/spells.hbs"}}
</div> </div>
<div class="tab base_values 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 base_values flexcol" data-group="primary" data-tab="description">
{{> "systems/midgard5/templates/sheets/character/description.hbs"}}
</div>
</section> </section>
</form> </form>
+166 -148
View File
@@ -1,153 +1,171 @@
<table> <div class="flexbox">
<thead> <div class="flexcolumn-2">
<tr>
<th class="title">{{localize "midgard5.learned-skill"}}</th>
<th class="title">{{localize "midgard5.fw"}}</th>
<th class="title">{{localize "midgard5.bonus"}}</th>
<th class="title">{{localize "midgard5.ew"}}</th>
<th class="title">{{localize "midgard5.pp-short"}}</th>
<th class="title"></th>
<th class="title"></th>
</tr>
</thead>
<tbody>
{{#each data.calc.skills.general as |skill skillId|}}
<tr data-item="{{skillId}}">
<td class="padding edit-item">{{skill.label}}</td>
<td class="fixed-value">{{skill.fw}}</td>
<td class="fixed-value">{{skill.calc.bonus}}</td>
<td class="fixed-value">{{skill.calc.ew}}</td>
<td class="fixed-value">{{skill.pp}}</td>
<td class="fixed-value"><button class="roll-button roll-learned-button"></button></td>
<td class="fixed-value"><a class="item-delete" title="Delete Item"><i class="fas fa-trash"></i></a></td>
</tr>
{{/each}}
</tbody>
</table>
<table> <div class="flexpart">
<thead> <div class="flexpart-header"><img src="icons/creatures/eyes/human-single-brown.webp" class="flexpart-icon">{{localize "midgard5.innate-abilities"}}</div>
<tr> <table>
<th class="title">{{localize "midgard5.language"}}</th> <thead>
<th class="title">{{localize "midgard5.fw"}}</th> <tr>
<th class="title">{{localize "midgard5.bonus"}}</th> <th class="title">{{localize "midgard5.innate-ability"}}</th>
<th class="title">{{localize "midgard5.ew"}}</th> <th class="title">{{localize "midgard5.fw"}}</th>
<th class="title">{{localize "midgard5.pp-short"}}</th> <th class="title">{{localize "midgard5.bonus"}}</th>
<th class="title"></th> <th class="title">{{localize "midgard5.ew"}}</th>
<th class="title"></th> <th class="title"><img src="/icons/svg/d20.svg" class="table-icon"></th>
</tr> <th class="title"></th>
</thead> </tr>
<tbody> </thead>
{{#each data.calc.skills.language as |skill skillId|}} <tbody>
<tr data-item="{{skillId}}"> {{#each data.calc.skills.innate as |skill skillId|}}
<td class="padding edit-item">{{skill.label}}</td> <tr data-item="{{skillId}}">
<td class="fixed-value">{{skill.fw}}</td> <td class="padding edit-item">{{skill.label}}</td>
<td class="fixed-value">{{skill.calc.bonus}}</td> <td class="fixed-value">{{skill.fw}}</td>
<td class="fixed-value">{{skill.calc.ew}}</td> <td class="fixed-value">{{skill.calc.bonus}}</td>
<td class="fixed-value">{{skill.pp}}</td> <td class="fixed-value">{{skill.calc.ew}}</td>
<td class="fixed-value"><button class="roll-button roll-learned-button"></button></td> <td><button class="roll-button roll-learned-button"></button></td>
<td class="fixed-value"><a class="item-delete" title="Delete Item"><i class="fas fa-trash"></i></a></td> <td><a class="item-delete" title="Delete Item"><i class="fas fa-trash"></i></a></td>
</tr> </tr>
{{/each}} {{/each}}
</tbody> <tr data-item="{{itemId}}">
</table> <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="{{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>
</table>
</div>
<table> <div class="flexpart">
<thead> <div class="flexpart-header"><img src="icons/skills/trades/construction-mason-stonecutter-sculpture.webp" class="flexpart-icon">{{localize "midgard5.learned-skills"}}</div>
<tr> <table>
<th class="title">{{localize "midgard5.innate-ability"}}</th> <thead>
<th class="title">{{localize "midgard5.fw"}}</th> <tr>
<th class="title">{{localize "midgard5.bonus"}}</th> <th class="title">{{localize "midgard5.learned-skill"}}</th>
<th class="title">{{localize "midgard5.ew"}}</th> <th class="title">{{localize "midgard5.fw"}}</th>
<th class="title"></th> <th class="title">{{localize "midgard5.bonus"}}</th>
<th class="title"></th> <th class="title">{{localize "midgard5.ew"}}</th>
</tr> <th class="title">{{localize "midgard5.pp-short"}}</th>
</thead> <th class="title"><img src="/icons/svg/d20.svg" class="table-icon"></th>
<tbody> <th class="title"></th>
{{#each data.calc.skills.innate as |skill skillId|}} </tr>
<tr data-item="{{skillId}}"> </thead>
<td class="padding edit-item">{{skill.label}}</td> <tbody>
<td class="fixed-value">{{skill.fw}}</td> {{#each data.calc.skills.general as |skill skillId|}}
<td class="fixed-value">{{skill.calc.bonus}}</td> <tr data-item="{{skillId}}">
<td class="fixed-value">{{skill.calc.ew}}</td> <td class="padding edit-item">{{skill.label}}</td>
<td class="fixed-value"><button class="roll-button roll-learned-button"></button></td> <td class="fixed-value">{{skill.fw}}</td>
<td class="fixed-value"><a class="item-delete" title="Delete Item"><i class="fas fa-trash"></i></a></td> <td class="fixed-value">{{skill.calc.bonus}}</td>
</tr> <td class="fixed-value">{{skill.calc.ew}}</td>
{{/each}} <td class="fixed-value"><input name="data.skills.general.{{key}}.pp" type="text" value="{{skill.pp}}" data-dtype="Number" /></td>
<tr data-item="{{itemId}}"> <td><button class="roll-button roll-learned-button"></button></td>
<td class="padding edit-item">{{localize "midgard5.perception"}}</td> <td><a class="item-delete" title="Delete Item"><i class="fas fa-trash"></i></a></td>
<td class="fixed-value">{{data.calc.stats.perceptionFW}}</td> </tr>
<td class="fixed-value">{{data.calc.stats.perception.value}}</td> {{/each}}
<td class="fixed-value">{{add data.calc.stats.perception.value data.calc.stats.perceptionFW}}</td> </tbody>
<td class="fixed-value"><button class="roll-button roll-perception-button"></button></td> </table>
<td class="fixed-value"></td> </div>
</tr>
<tr data-item="{{itemId}}"> <div class="flexpart">
<td class="padding edit-item">{{localize "midgard5.drinking"}}</td> <div class="flexpart-header"><img src="icons/weapons/swords/swords-short.webp" class="flexpart-icon">{{localize "midgard5.weapon-skills"}}</div>
<td class="fixed-value">{{data.calc.stats.drinkingFW}}</td> <table>
<td class="fixed-value">{{data.calc.stats.drinking.value}}</td> <thead>
<td class="fixed-value">{{add data.calc.stats.drinking.value data.calc.stats.drinkingFW}}</td> <tr>
<td class="fixed-value"><button class="roll-button roll-drinking-button"></button></td> <th class="title">{{localize "midgard5.weapon-skill"}}</th>
<td class="fixed-value"></td> <th class="title">{{localize "midgard5.fw"}}</th>
</tr> <th class="title">{{localize "midgard5.bonus"}}</th>
</tbody> <th class="title">{{localize "midgard5.ew"}}</th>
</table> <th class="title">{{localize "midgard5.pp-short"}}</th>
<th class="title"><img src="/icons/svg/d20.svg" class="table-icon"></th>
<th class="title"></th>
</tr>
</thead>
<tbody>
{{#each data.calc.skills.combat as |skill skillId|}}
<tr data-item="{{skillId}}">
<td class="padding edit-item">{{skill.label}}</td>
<td class="fixed-value">{{skill.fw}}</td>
<td class="fixed-value">{{skill.calc.bonus}}</td>
<td class="fixed-value">{{skill.calc.ew}}</td>
<td class="fixed-value">{{skill.pp}}</td>
<td><button class="roll-button roll-learned-button"></button></td>
<td><a class="item-delete" title="Delete Item"><i class="fas fa-trash"></i></a></td>
</tr>
{{/each}}
</tbody>
</table>
</div>
<table> <div class="flexpart">
<thead> <div class="flexpart-header"><img src="icons/sundries/scrolls/scroll-runed-worn-tan.webp" class="flexpart-icon">{{localize "midgard5.languages"}}</div>
<tr> <table>
<th class="title">{{localize "midgard5.weapon-skill"}}</th> <thead>
<th class="title">{{localize "midgard5.fw"}}</th> <tr>
<th class="title">{{localize "midgard5.bonus"}}</th> <th class="title">{{localize "midgard5.language"}}</th>
<th class="title">{{localize "midgard5.ew"}}</th> <th class="title">{{localize "midgard5.fw"}}</th>
<th class="title">{{localize "midgard5.pp-short"}}</th> <th class="title">{{localize "midgard5.bonus"}}</th>
<th class="title"></th> <th class="title">{{localize "midgard5.ew"}}</th>
<th class="title"></th> <th class="title">{{localize "midgard5.pp-short"}}</th>
</tr> <th class="title"><img src="/icons/svg/d20.svg" class="table-icon"></th>
</thead> <th class="title"></th>
<tbody> </tr>
{{#each data.calc.skills.combat as |skill skillId|}} </thead>
<tr data-item="{{skillId}}"> <tbody>
<td class="padding edit-item">{{skill.label}}</td> {{#each data.calc.skills.language as |skill skillId|}}
<td class="fixed-value">{{skill.fw}}</td> <tr data-item="{{skillId}}">
<td class="fixed-value">{{skill.calc.bonus}}</td> <td class="padding edit-item">{{skill.label}}</td>
<td class="fixed-value">{{skill.calc.ew}}</td> <td class="fixed-value">{{skill.fw}}</td>
<td class="fixed-value">{{skill.pp}}</td> <td class="fixed-value">{{skill.calc.bonus}}</td>
<td class="fixed-value"><button class="roll-button roll-learned-button"></button></td> <td class="fixed-value">{{skill.calc.ew}}</td>
<td class="fixed-value"><a class="item-delete" title="Delete Item"><i class="fas fa-trash"></i></a></td> <td class="fixed-value">{{skill.pp}}</td>
</tr> <td><button class="roll-button roll-learned-button"></button></td>
{{/each}} <td><a class="item-delete" title="Delete Item"><i class="fas fa-trash"></i></a></td>
</tbody> </tr>
</table> {{/each}}
</tbody>
</table>
</div>
</div>
<table> <div class="flexcolumn-2">
<thead>
<tr> <div class="flexpart">
<th class="title"></th> <div class="flexpart-header"><img src="icons/sundries/gaming/dice-pair-white-green.webp" class="flexpart-icon">{{localize "midgard5.unlearned-skills"}}</div>
<th class="title">{{localize "midgard5.unlearned-skill"}}</th> <table>
<th class="title">{{localize "midgard5.fw"}}</th> <thead>
<th class="title">{{localize "midgard5.bonus"}}</th> <tr>
<th class="title">{{localize "midgard5.ew"}}</th> <th class="title"></th>
<th class="title">{{localize "midgard5.pp-short"}}</th> <th class="title">{{localize "midgard5.unlearned-skill"}}</th>
<th class="title"></th> <th class="title">{{localize "midgard5.fw"}}</th>
<th class="title"></th> <th class="title">{{localize "midgard5.bonus"}}</th>
</tr> <th class="title">{{localize "midgard5.ew"}}</th>
</thead> <th class="title"><img src="/icons/svg/d20.svg" class="table-icon"></th>
<tbody> </tr>
{{#each data.skills.general as |skill key|}} </thead>
{{#unless (isSkillInList (localizeMidgard key) ../actor.system.calc.skills.general) }} <tbody>
<tr data-skill="{{key}}"> {{#each data.skills.general as |skill key|}}
<td><button class="learn-button">{{localize "midgard5.learn"}}</button></td> {{#unless (isSkillInList (localizeMidgard key) ../actor.system.calc.skills.general) }}
<td class="padding">{{localizeMidgard key}}</td> <tr data-skill="{{key}}">
<td class="fixed-value">{{skill.fw}}</td> <td><button class="learn-button">{{localize "midgard5.learn"}}</button></td>
<td class="fixed-value">{{skillBonus ../actor._id skill}}</td> <td class="padding" style="font-style: italic;">{{localizeMidgard key}}</td>
<td class="fixed-value">{{skillEw ../actor._id skill}}</td> <td class="fixed-value">{{skill.fw}}</td>
<td class="fixed-value"><input name="data.skills.general.{{key}}.pp" type="text" value="{{skill.pp}}" data-dtype="Number" /></td> <td class="fixed-value">{{skillBonus ../actor._id skill}}</td>
<td class="fixed-value"><button class="roll-button roll-general-button"></button></td> <td class="fixed-value">{{skillEw ../actor._id skill}}</td>
<td class="fixed-value"></td> <td><button class="roll-button roll-general-button"></button></td>
</tr> </tr>
{{/unless}} {{/unless}}
{{/each}} {{/each}}
</tbody> </tbody>
</table> </table>
</div>
</div>
</div>
+1 -1
View File
@@ -4,7 +4,7 @@
<th class="title">{{localize "TYPES.Item.spell"}}</th> <th class="title">{{localize "TYPES.Item.spell"}}</th>
<th class="title">{{localize "midgard5.ew"}}</th> <th class="title">{{localize "midgard5.ew"}}</th>
<th class="title"></th> <th class="title"></th>
<th class="title"></th> <th class="title add-spell"><i class="fa-regular fa-plus"></i></th>
</tr> </tr>
</thead> </thead>
<tbody> <tbody>
+47
View File
@@ -18,6 +18,53 @@
<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.valuable" type="checkbox" name="data.valuable" {{checked data.valuable}}>
<label for="data.valuable">{{localize "midgard5.valuable"}}</label>
</span>
{{#if (eq item.parent.system.info.race "Zwerg")}}
<span>
<input id="data.hoarded" type="checkbox" name="data.hoarded" {{checked data.hoarded}}>
<label for="data.hoarded">{{localize "midgard5.hoarded"}}</label>
</span>
{{/if}}
</div>
</td>
</tr>
<tr>
<td colspan="4">
<div class="flexrow">
<span>{{localize "midgard5.item-value"}}</span>
<input name="data.value" type="number" value="{{data.value}}" data-dtype="Number" />
<select class="select-mod-operation" name="data.currency" data-type="String">
{{#select data.currency}}
<option value=""></option>
<option value="copper">{{localize "midgard5.currency-copper"}}</option>
<option value="silver">{{localize "midgard5.currency-silver"}}</option>
<option value="gold">{{localize "midgard5.currency-gold"}}</option>
{{/select}}
</select>
</div>
</td>
</tr>
<tr>
<td>
<div class="flexrow">
<span>{{localize "TYPES.Item.container"}}</span>
{{#if data.calc.containers}}
<select class="select-container" name="data.containerId" data-type="String">
{{#select data.containerId}}
<option value="">{{localize "midgard5.no-container"}}</option>
{{#each data.calc.containers as |container key|}}
<option value="{{key}}">{{container.label}}</option>
{{/each}}
{{/select}}
</select>
{{else}}
<span>{{localize "midgard5.assignItemToCharacter"}}</span>
{{/if}}
</div> </div>
</td> </td>
</tr> </tr>
+55
View File
@@ -0,0 +1,55 @@
<form class="item-sheet {{cssClass}} m5item-item" 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>
<div class="sheet-content">
<table>
<tr>
<td colspan=4>
<div class="flexrow">
<span>
<input id="data.equipped" type="checkbox" name="data.equipped" {{checked data.equipped}}>
<label for="data.equipped">{{localize "midgard5.equipped"}}</label>
</span>
<span>
<input id="data.magic" type="checkbox" name="data.magic" {{checked data.magic}}>
<label for="data.magic">{{localize "midgard5.magic"}}</label>
</span>
</div>
</td>
</tr>
<tr>
<td>
<div class="flexrow">
<span>{{localize "midgard5.item-quantity"}}</span>
<input id="data.quantity" type="number" name="data.quantity" value="{{data.quantity}}">
</div>
</td>
</tr>
<tr>
<td>
<div class="flexrow">
<span>{{localize "midgard5.item-value"}}</span>
<input name="data.value" type="number" value="{{data.value}}" data-dtype="Number" />
<select class="select-mod-operation" name="data.currency" data-type="String">
{{#select data.currency}}
<option value=""></option>
<option value="copper">{{localize "midgard5.currency-copper"}}</option>
<option value="silver">{{localize "midgard5.currency-silver"}}</option>
<option value="gold">{{localize "midgard5.currency-gold"}}</option>
{{/select}}
</select>
</div>
</td>
</tr>
</table>
{{> "systems/midgard5/templates/sheets/item/rolls.hbs"}}
{{> "systems/midgard5/templates/sheets/partial/mod.hbs" mods=data.mods calc=data.calc}}
{{editor content=data.description target="data.description" button=true owner=owner editable=editable}}
</div>
</form>
+52 -1
View File
@@ -7,8 +7,12 @@
<table> <table>
<tbody> <tbody>
<tr> <tr>
<td colspan=4> <td colspan="4">
<div class="flexrow"> <div class="flexrow">
<span>
<input id="data.equipped" type="checkbox" name="data.equipped" {{checked data.equipped}}>
<label for="data.equipped">{{localize "midgard5.equipped"}}</label>
</span>
<span> <span>
<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>
@@ -18,6 +22,53 @@
<input id="data.special" type="checkbox" name="data.special" {{checked data.special}}> <input id="data.special" type="checkbox" name="data.special" {{checked data.special}}>
<label for="data.special">{{localize "midgard5.special"}}</label> <label for="data.special">{{localize "midgard5.special"}}</label>
</span> </span>
<span>
<input id="data.valuable" type="checkbox" name="data.valuable" {{checked data.valuable}}>
<label for="data.valuable">{{localize "midgard5.valuable"}}</label>
</span>
{{#if (eq item.parent.system.info.race "Zwerg")}}
<span>
<input id="data.hoarded" type="checkbox" name="data.hoarded" {{checked data.hoarded}}>
<label for="data.hoarded">{{localize "midgard5.hoarded"}}</label>
</span>
{{/if}}
</div>
</td>
</tr>
<tr>
<td colspan="4">
<div class="flexrow">
<span>{{localize "midgard5.item-value"}}</span>
<input name="data.value" type="number" value="{{data.value}}" data-dtype="Number" />
<select class="select-mod-operation" name="data.currency" data-type="String">
{{#select data.currency}}
<option value=""></option>
<option value="copper">{{localize "midgard5.currency-copper"}}</option>
<option value="silver">{{localize "midgard5.currency-silver"}}</option>
<option value="gold">{{localize "midgard5.currency-gold"}}</option>
{{/select}}
</select>
</div>
</td>
</tr>
<tr>
<td>
<div class="flexrow">
<span>{{localize "TYPES.Item.container"}}</span>
{{#if data.calc.containers}}
<select class="select-container" name="data.containerId" data-type="String">
{{#select data.containerId}}
<option value="">{{localize "midgard5.no-container"}}</option>
{{#each data.calc.containers as |container key|}}
<option value="{{key}}">{{container.label}}</option>
{{/each}}
{{/select}}
</select>
{{else}}
<span>{{localize "midgard5.assignItemToCharacter"}}</span>
{{/if}}
</div> </div>
</td> </td>
</tr> </tr>
+51 -2
View File
@@ -6,7 +6,7 @@
<div class="sheet-content"> <div class="sheet-content">
<table> <table>
<tr> <tr>
<td colspan=4> <td colspan="4">
<div class="flexrow"> <div class="flexrow">
<span> <span>
<input id="data.equipped" type="checkbox" name="data.equipped" {{checked data.equipped}}> <input id="data.equipped" type="checkbox" name="data.equipped" {{checked data.equipped}}>
@@ -16,19 +16,68 @@
<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.valuable" type="checkbox" name="data.valuable" {{checked data.valuable}}>
<label for="data.valuable">{{localize "midgard5.valuable"}}</label>
</span>
{{#if (eq item.parent.system.info.race "Zwerg")}}
<span>
<input id="data.hoarded" type="checkbox" name="data.hoarded" {{checked data.hoarded}}>
<label for="data.hoarded">{{localize "midgard5.hoarded"}}</label>
</span>
{{/if}}
</div> </div>
</td> </td>
</tr> </tr>
<tr> <tr>
<td> <td>
<div class="flexrow">
<span>{{localize "midgard5.item-quantity"}}</span>
<input id="data.quantity" type="number" name="data.quantity" value="{{data.quantity}}">
</div>
</td>
</tr>
<tr>
<td colspan="4">
<div class="flexrow"> <div class="flexrow">
<span>{{localize "midgard5.item-value"}}</span> <span>{{localize "midgard5.item-value"}}</span>
<input name="data.value" type="text" value="{{data.value}}" data-dtype="Number" /> <input name="data.value" type="number" value="{{data.value}}" data-dtype="Number" />
<select class="select-mod-operation" name="data.currency" data-type="String">
{{#select data.currency}}
<option value=""></option>
<option value="copper">{{localize "midgard5.currency-copper"}}</option>
<option value="silver">{{localize "midgard5.currency-silver"}}</option>
<option value="gold">{{localize "midgard5.currency-gold"}}</option>
{{/select}}
</select>
</div>
</td>
</tr>
<tr>
<td>
<div class="flexrow">
<span>{{localize "TYPES.Item.container"}}</span>
{{#if data.calc.containers}}
<select class="select-container" name="data.containerId" data-type="String">
{{#select data.containerId}}
<option value="">{{localize "midgard5.no-container"}}</option>
{{#each data.calc.containers as |container key|}}
<option value="{{key}}">{{container.label}}</option>
{{/each}}
{{/select}}
</select>
{{else}}
<span>{{localize "midgard5.assignItemToCharacter"}}</span>
{{/if}}
</div> </div>
</td> </td>
</tr> </tr>
</table> </table>
{{> "systems/midgard5/templates/sheets/item/rolls.hbs"}}
{{> "systems/midgard5/templates/sheets/partial/mod.hbs" mods=data.mods calc=data.calc}} {{> "systems/midgard5/templates/sheets/partial/mod.hbs" mods=data.mods calc=data.calc}}
+1 -1
View File
@@ -76,7 +76,7 @@
</tr> </tr>
<td>{{localize "midgard5.skill"}}</td> <td>{{localize "midgard5.skill"}}</td>
<td> <td>
{{!-- {{#if data.calc.skills.general}} --}} {{#if data.calc.generalSkills}}
<select class="select-skill" name="data.skillId" data-type="String"> <select class="select-skill" name="data.skillId" data-type="String">
{{#select data.skillId}} {{#select data.skillId}}
<option value="">{{localize "midgard5.no-skill"}}</option> <option value="">{{localize "midgard5.no-skill"}}</option>
+52 -1
View File
@@ -7,8 +7,12 @@
<table> <table>
<tbody> <tbody>
<tr> <tr>
<td colspan=4> <td colspan="5">
<div class="flexrow"> <div class="flexrow">
<span>
<input id="data.equipped" type="checkbox" name="data.equipped" {{checked data.equipped}}>
<label for="data.equipped">{{localize "midgard5.equipped"}}</label>
</span>
<span> <span>
<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>
@@ -23,6 +27,53 @@
<input id="data.special" type="checkbox" name="data.special" {{checked data.special}}> <input id="data.special" type="checkbox" name="data.special" {{checked data.special}}>
<label for="data.special">{{localize "midgard5.special"}}</label> <label for="data.special">{{localize "midgard5.special"}}</label>
</span> </span>
<span>
<input id="data.valuable" type="checkbox" name="data.valuable" {{checked data.valuable}}>
<label for="data.valuable">{{localize "midgard5.valuable"}}</label>
</span>
{{#if (eq item.parent.system.info.race "Zwerg")}}
<span>
<input id="data.hoarded" type="checkbox" name="data.hoarded" {{checked data.hoarded}}>
<label for="data.hoarded">{{localize "midgard5.hoarded"}}</label>
</span>
{{/if}}
</div>
</td>
</tr>
<tr>
<td colspan="4">
<div class="flexrow">
<span>{{localize "midgard5.item-value"}}</span>
<input name="data.value" type="number" value="{{data.value}}" data-dtype="Number" />
<select class="select-mod-operation" name="data.currency" data-type="String">
{{#select data.currency}}
<option value=""></option>
<option value="copper">{{localize "midgard5.currency-copper"}}</option>
<option value="silver">{{localize "midgard5.currency-silver"}}</option>
<option value="gold">{{localize "midgard5.currency-gold"}}</option>
{{/select}}
</select>
</div>
</td>
</tr>
<tr>
<td>
<div class="flexrow">
<span>{{localize "TYPES.Item.container"}}</span>
{{#if data.calc.containers}}
<select class="select-container" name="data.containerId" data-type="String">
{{#select data.containerId}}
<option value="">{{localize "midgard5.no-container"}}</option>
{{#each data.calc.containers as |container key|}}
<option value="{{key}}">{{container.label}}</option>
{{/each}}
{{/select}}
</select>
{{else}}
<span>{{localize "midgard5.assignItemToCharacter"}}</span>
{{/if}}
</div> </div>
</td> </td>
</tr> </tr>
+2 -1
View File
@@ -36,6 +36,7 @@
{{#select mod.operation}} {{#select mod.operation}}
{{#if (eq mod.type "attribute")}} {{#if (eq mod.type "attribute")}}
<option value="add100">{{localize "midgard5.mod-operation-add100"}}</option> <option value="add100">{{localize "midgard5.mod-operation-add100"}}</option>
<option value="roll">{{localize "midgard5.mod-operation-roll"}}</option>
{{/if}} {{/if}}
<option value="add">{{localize "midgard5.mod-operation-add"}}</option> <option value="add">{{localize "midgard5.mod-operation-add"}}</option>
<option value="set">{{localize "midgard5.mod-operation-set"}}</option> <option value="set">{{localize "midgard5.mod-operation-set"}}</option>
@@ -48,7 +49,7 @@
</td> </td>
<td> <td>
<input name="data.mods.{{modId}}.value" type="text" value="{{mod.value}}" data-dtype="Number" /> <input name="data.mods.{{modId}}.value" type="number" value="{{mod.value}}" data-dtype="Number" />
</td> </td>
</tr> </tr>
{{/each}} {{/each}}