Compare commits
34 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
b1e73f0761 | ||
|
|
222aa75a1d | ||
|
|
caa78d7c45 | ||
|
|
5edcaa373c | ||
|
|
08e412b32f | ||
|
|
4269946c30 | ||
|
|
607817302b | ||
|
|
dd39fa6113 | ||
|
|
d035b963de | ||
|
|
a14c26d168 | ||
|
|
b25a25a94f | ||
|
|
98ffb27db7 | ||
|
|
a6e0f60665 | ||
|
|
8488ed1bd1 | ||
|
|
dda47c51a8 | ||
|
|
a2285931b3 | ||
|
|
37b8956048 | ||
|
|
e54a105222 | ||
|
|
bee911df5e | ||
|
|
e2e533d481 | ||
|
|
2518ded84f | ||
|
|
fab88401ea | ||
|
|
7fed2f0a98 | ||
|
|
7c3ef81dec | ||
|
|
cbb52bf3aa | ||
|
|
86f73a96d0 | ||
|
|
dbba39373b | ||
|
|
30455759e8 | ||
|
|
eb675f24ea | ||
|
|
1357ec9b6d | ||
|
|
396986fefd | ||
|
|
c591cee153 | ||
|
|
54ae4fdb63 | ||
|
|
e846a0a30c |
34
CHANGELOG.md
@@ -6,13 +6,37 @@ Date format : day/month/year
|
|||||||
> - `foundry-version`: Stick to the major version of FoundryVTT.
|
> - `foundry-version`: Stick to the major version of FoundryVTT.
|
||||||
> - `system-version`: System functionalities and Fixes.
|
> - `system-version`: System functionalities and Fixes.
|
||||||
|
|
||||||
|
## 1.13.3 - 01/02/2026 - Tactical Grid & Fixes
|
||||||
|
- Updated demeanors from books up to Imperfect Land (included), thanks to Olivier Brencklé (!48).
|
||||||
|
- Added Tactical Grid Range Band, thanks to Litasa (!49).
|
||||||
|
- Fix Title advancement auto-name/icon, thanks to SagaTympana (!50).
|
||||||
|
|
||||||
|
## 1.13.2 - 18/10/2025 - Conditions Icons & Fixes
|
||||||
|
- Fix Actor Sheet for pressing key `Enter` in input trigger `no active Encounter...` message.
|
||||||
|
- Fix Compendium `Astrolab` is duplicate with `Mantis Clan` and `Children of the Five Winds`. Renamed the `cotfw` version to `Astrolabe (Unicorn)`.
|
||||||
|
- Fix 20Q autocomplete and menu css.
|
||||||
|
- Added handmade conditions icons by Nikotka (thx to rex35game for the share).
|
||||||
|
- Spanish language updated thanks to Alejabarr.
|
||||||
|
|
||||||
|
## 1.13.1 - 21/09/2025 - Conditions & Fixes
|
||||||
|
- Fix for Clicking on items doesn't show item window (#65 Thx to Litasa).
|
||||||
|
- Fix for fade configuration (#66).
|
||||||
|
- Added some Tooltips loading optimizations (#62 Thanks to KitCat).
|
||||||
|
- Added some Properties loading optimizations (#63 Thanks to KitCat).
|
||||||
|
- Conditions changes :
|
||||||
|
- Added basic token conditions (Thanks to Putty)
|
||||||
|
- Added compromised condition when strife goes beyond max (Thanks to Putty).
|
||||||
|
- Added apply incapacitated if character's fatigue goes beyond endurance (Thanks to Putty).
|
||||||
|
- Added ability to remove condition from actor sheet and show core journal on click.
|
||||||
|
- Added option to show all conditions (StatusEffect), default to false (show only l5R conditions).
|
||||||
|
|
||||||
## 1.13.0 - 24/08/2025 - Foundry v13 Compatibility (Thx to Litasa)
|
## 1.13.0 - 24/08/2025 - Foundry v13 Compatibility (Thx to Litasa)
|
||||||
__! Be certain to carefully back up any critical user data before installing this update !__
|
__! Be certain to carefully back up any critical user data before installing this update !__
|
||||||
- Updated the System to FoundryVTT v13.
|
- Updated the System to FoundryVTT v13.
|
||||||
- Compendiums
|
- Compendiums
|
||||||
- Added English compendium for `Children of the Five Winds`.
|
- Added English compendium for `Children of the Five Winds`.
|
||||||
- Added French translation for `Writ of the Wild`.
|
- Added French translation for `Writ of the Wild`.
|
||||||
- Fix Compendium Typo: "Beseech Hida's MIght" -> "Beseech Hida's Might" (!59).
|
- Fix Compendium Typo: "Beseech Hida's MIght" -> "Beseech Hida's Might" (#59).
|
||||||
- Actor sheets: Technique types are now hidden when they are not checked in locked mode.
|
- Actor sheets: Technique types are now hidden when they are not checked in locked mode.
|
||||||
- Fix 20Q: Technique message fixed (unallowed tech for School).
|
- Fix 20Q: Technique message fixed (unallowed tech for School).
|
||||||
- Switched wysiwyg editor engine to `prosemirror` for text editor (`tinymce` will be removed in Foundry v14).
|
- Switched wysiwyg editor engine to `prosemirror` for text editor (`tinymce` will be removed in Foundry v14).
|
||||||
@@ -54,12 +78,12 @@ __! Be certain to carefully back up any critical user data before installing thi
|
|||||||
## 1.11.0 - 13/12/2023 - Little fixes
|
## 1.11.0 - 13/12/2023 - Little fixes
|
||||||
- 20Q :
|
- 20Q :
|
||||||
- Starting techniques now have a limit of 6 techniques instead of 5 (see Celestial Realms : `Moshi Sun Sentinel School`).
|
- Starting techniques now have a limit of 6 techniques instead of 5 (see Celestial Realms : `Moshi Sun Sentinel School`).
|
||||||
- Enable dropping on the 'drop here' label for 20Q (thk to Litasa !34).
|
- Enable dropping on the 'drop here' label for 20Q (thk to Litasa #34).
|
||||||
- Compendiums : Added masteries and abilities from Deathly Turns.
|
- Compendiums : Added masteries and abilities from Deathly Turns.
|
||||||
|
|
||||||
## 1.10.1 - 22/08/2023 - Litasa's fixes
|
## 1.10.1 - 22/08/2023 - Litasa's fixes
|
||||||
All these changes are thanks to Litasa.
|
All these changes are thanks to Litasa.
|
||||||
- Roll-n-Keep dialog now waits for the DiceSoNice animation to finish before displaying the result when re-rolling or exploding dice (!28).
|
- Roll-n-Keep dialog now waits for the DiceSoNice animation to finish before displaying the result when re-rolling or exploding dice (#28).
|
||||||
- Adding the ability to have a different name for the custom-compendium (needed to disable the system embedded ones).
|
- Adding the ability to have a different name for the custom-compendium (needed to disable the system embedded ones).
|
||||||
- Fixes some CSS issues when the font size is not the default (#50, #51 and #52).
|
- Fixes some CSS issues when the font size is not the default (#50, #51 and #52).
|
||||||
|
|
||||||
@@ -75,8 +99,8 @@ __! Be certain to carefully back up any critical user data before installing thi
|
|||||||
|
|
||||||
## 1.9.6 - 14/05/2023 - Bragma's QoL
|
## 1.9.6 - 14/05/2023 - Bragma's QoL
|
||||||
All these changes are thanks to Bragma.
|
All these changes are thanks to Bragma.
|
||||||
- Added effects panel to both pc and npc (!26).
|
- Added effects panel to both pc and npc (#26).
|
||||||
- Added a underline on rings to show current stance (!25).
|
- Added an underline on rings to show current stance (#25).
|
||||||
- Fix Lists not showing correctly in journal (#44).
|
- Fix Lists not showing correctly in journal (#44).
|
||||||
|
|
||||||
## 1.9.5 - 11/01/2023 - Adding Modifiers
|
## 1.9.5 - 11/01/2023 - Adding Modifiers
|
||||||
|
|||||||
BIN
system/assets/icons/conditions/afflicted.webp
Normal file
|
After Width: | Height: | Size: 29 KiB |
2
system/assets/icons/conditions/artist_nikotka.txt
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
All original conditions icons was made by Nikotka.
|
||||||
|
Altered by Vlyan to be more visible in FoundryVTT.
|
||||||
BIN
system/assets/icons/conditions/bleeding.webp
Normal file
|
After Width: | Height: | Size: 11 KiB |
BIN
system/assets/icons/conditions/burning.webp
Normal file
|
After Width: | Height: | Size: 50 KiB |
BIN
system/assets/icons/conditions/centered.webp
Normal file
|
After Width: | Height: | Size: 12 KiB |
BIN
system/assets/icons/conditions/compromised.webp
Normal file
|
After Width: | Height: | Size: 26 KiB |
BIN
system/assets/icons/conditions/dazed.webp
Normal file
|
After Width: | Height: | Size: 25 KiB |
BIN
system/assets/icons/conditions/disoriented.webp
Normal file
|
After Width: | Height: | Size: 38 KiB |
BIN
system/assets/icons/conditions/dying_1.webp
Normal file
|
After Width: | Height: | Size: 21 KiB |
BIN
system/assets/icons/conditions/dying_2.webp
Normal file
|
After Width: | Height: | Size: 22 KiB |
BIN
system/assets/icons/conditions/dying_3.webp
Normal file
|
After Width: | Height: | Size: 21 KiB |
BIN
system/assets/icons/conditions/emboldened.webp
Normal file
|
After Width: | Height: | Size: 20 KiB |
BIN
system/assets/icons/conditions/enraged.webp
Normal file
|
After Width: | Height: | Size: 18 KiB |
BIN
system/assets/icons/conditions/exhausted.webp
Normal file
|
After Width: | Height: | Size: 13 KiB |
BIN
system/assets/icons/conditions/heavily_wounded.webp
Normal file
|
After Width: | Height: | Size: 14 KiB |
BIN
system/assets/icons/conditions/heavily_wounded_air.webp
Normal file
|
After Width: | Height: | Size: 38 KiB |
BIN
system/assets/icons/conditions/heavily_wounded_earth.webp
Normal file
|
After Width: | Height: | Size: 30 KiB |
BIN
system/assets/icons/conditions/heavily_wounded_fire.webp
Normal file
|
After Width: | Height: | Size: 38 KiB |
BIN
system/assets/icons/conditions/heavily_wounded_void.webp
Normal file
|
After Width: | Height: | Size: 32 KiB |
BIN
system/assets/icons/conditions/heavily_wounded_water.webp
Normal file
|
After Width: | Height: | Size: 37 KiB |
BIN
system/assets/icons/conditions/illness_coughing_illness.webp
Normal file
|
After Width: | Height: | Size: 22 KiB |
BIN
system/assets/icons/conditions/illness_fire_rash.webp
Normal file
|
After Width: | Height: | Size: 36 KiB |
BIN
system/assets/icons/conditions/illness_gut_sickness.webp
Normal file
|
After Width: | Height: | Size: 18 KiB |
BIN
system/assets/icons/conditions/illness_oozing_sore_disease.webp
Normal file
|
After Width: | Height: | Size: 19 KiB |
BIN
system/assets/icons/conditions/illness_unsteady_illness.webp
Normal file
|
After Width: | Height: | Size: 35 KiB |
BIN
system/assets/icons/conditions/immobilized.webp
Normal file
|
After Width: | Height: | Size: 12 KiB |
BIN
system/assets/icons/conditions/incapacitated.webp
Normal file
|
After Width: | Height: | Size: 12 KiB |
BIN
system/assets/icons/conditions/intoxicated.webp
Normal file
|
After Width: | Height: | Size: 26 KiB |
BIN
system/assets/icons/conditions/lightly_wounded_air.webp
Normal file
|
After Width: | Height: | Size: 30 KiB |
BIN
system/assets/icons/conditions/lightly_wounded_earth.webp
Normal file
|
After Width: | Height: | Size: 24 KiB |
BIN
system/assets/icons/conditions/lightly_wounded_fire.webp
Normal file
|
After Width: | Height: | Size: 32 KiB |
BIN
system/assets/icons/conditions/lightly_wounded_void.webp
Normal file
|
After Width: | Height: | Size: 26 KiB |
BIN
system/assets/icons/conditions/lightly_wounded_water.webp
Normal file
|
After Width: | Height: | Size: 29 KiB |
BIN
system/assets/icons/conditions/possesed.webp
Normal file
|
After Width: | Height: | Size: 48 KiB |
BIN
system/assets/icons/conditions/prone.webp
Normal file
|
After Width: | Height: | Size: 22 KiB |
BIN
system/assets/icons/conditions/silenced.webp
Normal file
|
After Width: | Height: | Size: 20 KiB |
BIN
system/assets/icons/conditions/unconscious.webp
Normal file
|
After Width: | Height: | Size: 24 KiB |
@@ -894,8 +894,8 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "Astrolabe",
|
"id": "Astrolabe (Unicorn)",
|
||||||
"name": "Astrolabe (WIP)",
|
"name": "Astrolabe (Licorne)",
|
||||||
"description": "",
|
"description": "",
|
||||||
"source_reference": {
|
"source_reference": {
|
||||||
"page": ""
|
"page": ""
|
||||||
|
|||||||
@@ -9,7 +9,7 @@
|
|||||||
"pages": {
|
"pages": {
|
||||||
"Figure: Afflicted": {
|
"Figure: Afflicted": {
|
||||||
"name": "Tourmenté - Image",
|
"name": "Tourmenté - Image",
|
||||||
"src": "icons/svg/sun.svg"
|
"src": "systems/l5r5e/assets/icons/conditions/afflicted.webp"
|
||||||
},
|
},
|
||||||
"Afflicted": {
|
"Afflicted": {
|
||||||
"name": "Tourmenté",
|
"name": "Tourmenté",
|
||||||
@@ -22,7 +22,7 @@
|
|||||||
"pages": {
|
"pages": {
|
||||||
"Figure: Bleeding": {
|
"Figure: Bleeding": {
|
||||||
"name": "En sang - Image",
|
"name": "En sang - Image",
|
||||||
"src": "icons/svg/blood.svg"
|
"src": "systems/l5r5e/assets/icons/conditions/bleeding.webp"
|
||||||
},
|
},
|
||||||
"Bleeding": {
|
"Bleeding": {
|
||||||
"name": "En sang",
|
"name": "En sang",
|
||||||
@@ -35,7 +35,7 @@
|
|||||||
"pages": {
|
"pages": {
|
||||||
"Figure: Burning": {
|
"Figure: Burning": {
|
||||||
"name": "En feu - Image",
|
"name": "En feu - Image",
|
||||||
"src": "icons/svg/fire.svg"
|
"src": "systems/l5r5e/assets/icons/conditions/burning.webp"
|
||||||
},
|
},
|
||||||
"Burning": {
|
"Burning": {
|
||||||
"name": "En feu",
|
"name": "En feu",
|
||||||
@@ -48,7 +48,7 @@
|
|||||||
"pages": {
|
"pages": {
|
||||||
"Figure: Compromised": {
|
"Figure: Compromised": {
|
||||||
"name": "Compromis - Image",
|
"name": "Compromis - Image",
|
||||||
"src": "icons/svg/terror.svg"
|
"src": "systems/l5r5e/assets/icons/conditions/compromised.webp"
|
||||||
},
|
},
|
||||||
"Compromised": {
|
"Compromised": {
|
||||||
"name": "Compromis",
|
"name": "Compromis",
|
||||||
@@ -61,7 +61,7 @@
|
|||||||
"pages": {
|
"pages": {
|
||||||
"Figure: Dazed": {
|
"Figure: Dazed": {
|
||||||
"name": "Hébété - Image",
|
"name": "Hébété - Image",
|
||||||
"src": "icons/svg/eye.svg"
|
"src": "systems/l5r5e/assets/icons/conditions/dazed.webp"
|
||||||
},
|
},
|
||||||
"Dazed": {
|
"Dazed": {
|
||||||
"name": "Hébété",
|
"name": "Hébété",
|
||||||
@@ -74,7 +74,7 @@
|
|||||||
"pages": {
|
"pages": {
|
||||||
"Figure: Disoriented": {
|
"Figure: Disoriented": {
|
||||||
"name": "Désorienté - Image",
|
"name": "Désorienté - Image",
|
||||||
"src": "icons/svg/daze.svg"
|
"src": "systems/l5r5e/assets/icons/conditions/disoriented.webp"
|
||||||
},
|
},
|
||||||
"Disoriented": {
|
"Disoriented": {
|
||||||
"name": "Désorienté",
|
"name": "Désorienté",
|
||||||
@@ -87,7 +87,7 @@
|
|||||||
"pages": {
|
"pages": {
|
||||||
"Figure: Dying [X Rounds]": {
|
"Figure: Dying [X Rounds]": {
|
||||||
"name": "Mourant (X rounds) - Image",
|
"name": "Mourant (X rounds) - Image",
|
||||||
"src": "icons/svg/skull.svg"
|
"src": "systems/l5r5e/assets/icons/conditions/dying_1.webp"
|
||||||
},
|
},
|
||||||
"Dying [X Rounds]": {
|
"Dying [X Rounds]": {
|
||||||
"name": "Mourant (X rounds)",
|
"name": "Mourant (X rounds)",
|
||||||
@@ -100,7 +100,7 @@
|
|||||||
"pages": {
|
"pages": {
|
||||||
"Figure: Enraged": {
|
"Figure: Enraged": {
|
||||||
"name": "Enragé - Image",
|
"name": "Enragé - Image",
|
||||||
"src": "icons/svg/lightning.svg"
|
"src": "systems/l5r5e/assets/icons/conditions/enraged.webp"
|
||||||
},
|
},
|
||||||
"Enraged": {
|
"Enraged": {
|
||||||
"name": "Enragé",
|
"name": "Enragé",
|
||||||
@@ -113,7 +113,7 @@
|
|||||||
"pages": {
|
"pages": {
|
||||||
"Figure: Exhausted": {
|
"Figure: Exhausted": {
|
||||||
"name": "Epuisé - Image",
|
"name": "Epuisé - Image",
|
||||||
"src": "icons/svg/sleep.svg"
|
"src": "systems/l5r5e/assets/icons/conditions/exhausted.webp"
|
||||||
},
|
},
|
||||||
"Exhausted": {
|
"Exhausted": {
|
||||||
"name": "Epuisé",
|
"name": "Epuisé",
|
||||||
@@ -126,7 +126,7 @@
|
|||||||
"pages": {
|
"pages": {
|
||||||
"Figure: Immobilized": {
|
"Figure: Immobilized": {
|
||||||
"name": "Immobilisé - Image",
|
"name": "Immobilisé - Image",
|
||||||
"src": "icons/svg/net.svg"
|
"src": "systems/l5r5e/assets/icons/conditions/immobilized.webp"
|
||||||
},
|
},
|
||||||
"Immobilized": {
|
"Immobilized": {
|
||||||
"name": "Immobilisé",
|
"name": "Immobilisé",
|
||||||
@@ -139,7 +139,7 @@
|
|||||||
"pages": {
|
"pages": {
|
||||||
"Figure: Incapacitated": {
|
"Figure: Incapacitated": {
|
||||||
"name": "Hors de combat - Image",
|
"name": "Hors de combat - Image",
|
||||||
"src": "icons/svg/downgrade.svg"
|
"src": "systems/l5r5e/assets/icons/conditions/incapacitated.webp"
|
||||||
},
|
},
|
||||||
"Incapacitated": {
|
"Incapacitated": {
|
||||||
"name": "Hors de combat",
|
"name": "Hors de combat",
|
||||||
@@ -152,7 +152,7 @@
|
|||||||
"pages": {
|
"pages": {
|
||||||
"Figure: Intoxicated": {
|
"Figure: Intoxicated": {
|
||||||
"name": "Ivre - Image",
|
"name": "Ivre - Image",
|
||||||
"src": "icons/svg/poison.svg"
|
"src": "systems/l5r5e/assets/icons/conditions/intoxicated.webp"
|
||||||
},
|
},
|
||||||
"Intoxicated": {
|
"Intoxicated": {
|
||||||
"name": "Ivre",
|
"name": "Ivre",
|
||||||
@@ -165,7 +165,7 @@
|
|||||||
"pages": {
|
"pages": {
|
||||||
"Figure: Prone": {
|
"Figure: Prone": {
|
||||||
"name": "A terre - Image",
|
"name": "A terre - Image",
|
||||||
"src": "icons/svg/falling.svg"
|
"src": "systems/l5r5e/assets/icons/conditions/prone.webp"
|
||||||
},
|
},
|
||||||
"Prone": {
|
"Prone": {
|
||||||
"name": "A terre",
|
"name": "A terre",
|
||||||
@@ -178,7 +178,7 @@
|
|||||||
"pages": {
|
"pages": {
|
||||||
"Figure: Silenced": {
|
"Figure: Silenced": {
|
||||||
"name": "Aphone - Image",
|
"name": "Aphone - Image",
|
||||||
"src": "icons/svg/silenced.svg"
|
"src": "systems/l5r5e/assets/icons/conditions/silenced.webp"
|
||||||
},
|
},
|
||||||
"Silenced": {
|
"Silenced": {
|
||||||
"name": "Aphone",
|
"name": "Aphone",
|
||||||
@@ -191,7 +191,7 @@
|
|||||||
"pages": {
|
"pages": {
|
||||||
"Figure: Unconscious": {
|
"Figure: Unconscious": {
|
||||||
"name": "Inconscient - Image",
|
"name": "Inconscient - Image",
|
||||||
"src": "icons/svg/unconscious.svg"
|
"src": "systems/l5r5e/assets/icons/conditions/unconscious.webp"
|
||||||
},
|
},
|
||||||
"Unconscious": {
|
"Unconscious": {
|
||||||
"name": "Inconscient",
|
"name": "Inconscient",
|
||||||
@@ -204,7 +204,7 @@
|
|||||||
"pages": {
|
"pages": {
|
||||||
"Figure: Wounded": {
|
"Figure: Wounded": {
|
||||||
"name": "Blessé - Image",
|
"name": "Blessé - Image",
|
||||||
"src": "icons/svg/degen.svg"
|
"src": "systems/l5r5e/assets/icons/conditions/heavily_wounded.webp"
|
||||||
},
|
},
|
||||||
"Wounded": {
|
"Wounded": {
|
||||||
"name": "Blessé",
|
"name": "Blessé",
|
||||||
@@ -217,7 +217,7 @@
|
|||||||
"pages": {
|
"pages": {
|
||||||
"Figure: Illness: Oozing Sore Disease": {
|
"Figure: Illness: Oozing Sore Disease": {
|
||||||
"name": "Maladie : Bubons purulents - Image",
|
"name": "Maladie : Bubons purulents - Image",
|
||||||
"src": "icons/svg/eye.svg"
|
"src": "systems/l5r5e/assets/icons/conditions/illness_oozing_sore_disease.webp"
|
||||||
},
|
},
|
||||||
"Illness: Oozing Sore Disease": {
|
"Illness: Oozing Sore Disease": {
|
||||||
"name": "Maladie : Bubons purulents",
|
"name": "Maladie : Bubons purulents",
|
||||||
@@ -230,7 +230,7 @@
|
|||||||
"pages": {
|
"pages": {
|
||||||
"Figure: Illness: Gut Sickness": {
|
"Figure: Illness: Gut Sickness": {
|
||||||
"name": "Maladie : Mal des entrailles - Image",
|
"name": "Maladie : Mal des entrailles - Image",
|
||||||
"src": "icons/svg/poison.svg"
|
"src": "systems/l5r5e/assets/icons/conditions/illness_gut_sickness.webp"
|
||||||
},
|
},
|
||||||
"Illness: Gut Sickness": {
|
"Illness: Gut Sickness": {
|
||||||
"name": "Maladie : Mal des entrailles",
|
"name": "Maladie : Mal des entrailles",
|
||||||
@@ -243,7 +243,7 @@
|
|||||||
"pages": {
|
"pages": {
|
||||||
"Figure: Illness: Coughing Illness": {
|
"Figure: Illness: Coughing Illness": {
|
||||||
"name": "Maladie : Mauvaise toux - Image",
|
"name": "Maladie : Mauvaise toux - Image",
|
||||||
"src": "icons/svg/poison.svg"
|
"src": "systems/l5r5e/assets/icons/conditions/illness_coughing_illness.webp"
|
||||||
},
|
},
|
||||||
"Illness: Coughing Illness": {
|
"Illness: Coughing Illness": {
|
||||||
"name": "Maladie : Mauvaise toux",
|
"name": "Maladie : Mauvaise toux",
|
||||||
@@ -256,7 +256,7 @@
|
|||||||
"pages": {
|
"pages": {
|
||||||
"Figure: Illness: Unsteady Illness": {
|
"Figure: Illness: Unsteady Illness": {
|
||||||
"name": "Maladie : Vertiges - Image",
|
"name": "Maladie : Vertiges - Image",
|
||||||
"src": "icons/svg/daze.svg"
|
"src": "systems/l5r5e/assets/icons/conditions/illness_unsteady_illness.webp"
|
||||||
},
|
},
|
||||||
"Illness: Unsteady Illness": {
|
"Illness: Unsteady Illness": {
|
||||||
"name": "Maladie : Vertiges",
|
"name": "Maladie : Vertiges",
|
||||||
@@ -269,7 +269,7 @@
|
|||||||
"pages": {
|
"pages": {
|
||||||
"Figure: Illness: Fire Rash": {
|
"Figure: Illness: Fire Rash": {
|
||||||
"name": "Maladie : Rougeurs - Image",
|
"name": "Maladie : Rougeurs - Image",
|
||||||
"src": "icons/svg/fire.svg"
|
"src": "systems/l5r5e/assets/icons/conditions/illness_fire_rash.webp"
|
||||||
},
|
},
|
||||||
"Illness: Fire Rash": {
|
"Illness: Fire Rash": {
|
||||||
"name": "Maladie : Rougeurs",
|
"name": "Maladie : Rougeurs",
|
||||||
@@ -282,7 +282,7 @@
|
|||||||
"pages": {
|
"pages": {
|
||||||
"Figure: Centered": {
|
"Figure: Centered": {
|
||||||
"name": "Centered (WIP) - Image",
|
"name": "Centered (WIP) - Image",
|
||||||
"src": "systems/l5r5e/assets/icons/social.svg"
|
"src": "systems/l5r5e/assets/icons/conditions/centered.webp"
|
||||||
},
|
},
|
||||||
"Centered": {
|
"Centered": {
|
||||||
"name": "Centered (WIP)",
|
"name": "Centered (WIP)",
|
||||||
@@ -295,7 +295,7 @@
|
|||||||
"pages": {
|
"pages": {
|
||||||
"Figure: Emboldened": {
|
"Figure: Emboldened": {
|
||||||
"name": "Emboldened (WIP) - Image",
|
"name": "Emboldened (WIP) - Image",
|
||||||
"src": "systems/l5r5e/assets/icons/social.svg"
|
"src": "systems/l5r5e/assets/icons/conditions/emboldened.webp"
|
||||||
},
|
},
|
||||||
"Emboldened": {
|
"Emboldened": {
|
||||||
"name": "Emboldened (WIP)",
|
"name": "Emboldened (WIP)",
|
||||||
@@ -308,7 +308,7 @@
|
|||||||
"pages": {
|
"pages": {
|
||||||
"Figure: Possessed": {
|
"Figure: Possessed": {
|
||||||
"name": "Possessed (WIP) - Image",
|
"name": "Possessed (WIP) - Image",
|
||||||
"src": "icons/svg/terror.svg"
|
"src": "systems/l5r5e/assets/icons/conditions/possesed.webp"
|
||||||
},
|
},
|
||||||
"Possessed": {
|
"Possessed": {
|
||||||
"name": "Possessed (WIP)",
|
"name": "Possessed (WIP)",
|
||||||
|
|||||||
@@ -21,6 +21,10 @@
|
|||||||
"SetTn1OnTypeChange": "Set TN to 1 on encounter change",
|
"SetTn1OnTypeChange": "Set TN to 1 on encounter change",
|
||||||
"SetTn1OnTypeChangeHint": "Set the TN to 1 when the encounter type is selected (Intrigue, Duel, Skirmish or Mass battle)"
|
"SetTn1OnTypeChangeHint": "Set the TN to 1 when the encounter type is selected (Intrigue, Duel, Skirmish or Mass battle)"
|
||||||
},
|
},
|
||||||
|
"ShowAllStatusEffects": {
|
||||||
|
"Title": "Show all StatusEffects",
|
||||||
|
"Hint": "If uncheck (default), only L5R conditions are shown."
|
||||||
|
},
|
||||||
"CustomTechniques": {
|
"CustomTechniques": {
|
||||||
"Title": "Use custom techniques",
|
"Title": "Use custom techniques",
|
||||||
"Hint": "Add 'Specificity' technique type to serve as a catch-all."
|
"Hint": "Add 'Specificity' technique type to serve as a catch-all."
|
||||||
@@ -80,6 +84,41 @@
|
|||||||
},
|
},
|
||||||
"l5r5e": {
|
"l5r5e": {
|
||||||
"title": "Legend of the Five Rings",
|
"title": "Legend of the Five Rings",
|
||||||
|
"conditions": {
|
||||||
|
"afflicted": "Afflicted",
|
||||||
|
"bleeding": "Bleeding",
|
||||||
|
"burning": "Burning",
|
||||||
|
"centered": "Centered",
|
||||||
|
"compromised": "Compromised",
|
||||||
|
"dazed": "Dazed",
|
||||||
|
"disoriented": "Disoriented",
|
||||||
|
"dying": "Dying",
|
||||||
|
"emboldened": "Emboldened",
|
||||||
|
"enraged": "Enraged",
|
||||||
|
"exhausted": "Exhausted",
|
||||||
|
"immobilized": "Immobilized",
|
||||||
|
"illness_coughing_illness": "Illness: Coughing Illness",
|
||||||
|
"illness_fire_rash": "Illness: Fire Rash",
|
||||||
|
"illness_gut_sickness": "Illness: Gut Sickness",
|
||||||
|
"illness_oozing_sore_disease": "Illness: Oozing Sore Disease",
|
||||||
|
"illness_unsteady_illness": "Illness: Unsteady Illness",
|
||||||
|
"incapacitated": "Incapacitated",
|
||||||
|
"intoxicated": "Intoxicated",
|
||||||
|
"possessed": "Possessed",
|
||||||
|
"prone": "Prone",
|
||||||
|
"silenced": "Silenced",
|
||||||
|
"unconscious": "Unconscious",
|
||||||
|
"lightly_wounded_fire": "Lightly Wounded (Fire)",
|
||||||
|
"lightly_wounded_water": "Lightly Wounded (Water)",
|
||||||
|
"lightly_wounded_air": "Lightly Wounded (Air)",
|
||||||
|
"lightly_wounded_earth": "Lightly Wounded (Earth)",
|
||||||
|
"lightly_wounded_void": "Lightly Wounded (Void)",
|
||||||
|
"severely_wounded_fire": "Severely Wounded (Fire)",
|
||||||
|
"severely_wounded_water": "Severely Wounded (Water)",
|
||||||
|
"severely_wounded_air": "Severely Wounded (Air)",
|
||||||
|
"severely_wounded_earth": "Severely Wounded (Earth)",
|
||||||
|
"severely_wounded_void": "Severely Wounded (Void)"
|
||||||
|
},
|
||||||
"global": {
|
"global": {
|
||||||
"edge_translation_disclaimer": "",
|
"edge_translation_disclaimer": "",
|
||||||
"add": "Add",
|
"add": "Add",
|
||||||
@@ -666,6 +705,7 @@
|
|||||||
"demeanor": {
|
"demeanor": {
|
||||||
"adaptable": "Adaptable",
|
"adaptable": "Adaptable",
|
||||||
"aggressive": "Aggressive",
|
"aggressive": "Aggressive",
|
||||||
|
"alluring": "Alluring",
|
||||||
"ambitious": "Ambitious",
|
"ambitious": "Ambitious",
|
||||||
"amiable": "Amiable",
|
"amiable": "Amiable",
|
||||||
"analytical": "Analytical",
|
"analytical": "Analytical",
|
||||||
@@ -674,6 +714,7 @@
|
|||||||
"assertive": "Assertive",
|
"assertive": "Assertive",
|
||||||
"beguiling": "Beguiling",
|
"beguiling": "Beguiling",
|
||||||
"bitter": "Bitter",
|
"bitter": "Bitter",
|
||||||
|
"bloodthirsty": "Bloodthirsty",
|
||||||
"bold": "Bold",
|
"bold": "Bold",
|
||||||
"calculating": "Calculating",
|
"calculating": "Calculating",
|
||||||
"calm": "Calm",
|
"calm": "Calm",
|
||||||
@@ -684,37 +725,68 @@
|
|||||||
"confused": "Confused",
|
"confused": "Confused",
|
||||||
"courageous": "Courageous",
|
"courageous": "Courageous",
|
||||||
"cowardly": "Cowardly",
|
"cowardly": "Cowardly",
|
||||||
|
"crestfallen": "Crestfallen",
|
||||||
"curious": "Curious",
|
"curious": "Curious",
|
||||||
|
"defensive": "Defensive",
|
||||||
"dependable": "Dependable",
|
"dependable": "Dependable",
|
||||||
"detached": "Detached",
|
"detached": "Detached",
|
||||||
|
"determined": "Determined",
|
||||||
|
"devoted": "Devoted",
|
||||||
|
"direct": "Direct",
|
||||||
"disheartened": "Disheartened",
|
"disheartened": "Disheartened",
|
||||||
|
"dour": "Dour",
|
||||||
|
"duplicitous": "Duplicitous",
|
||||||
|
"effusive": "Effusive",
|
||||||
"enraged": "Enraged",
|
"enraged": "Enraged",
|
||||||
|
"fanatical": "Fanatical",
|
||||||
"feral": "Feral",
|
"feral": "Feral",
|
||||||
|
"fervent": "Fervent",
|
||||||
"fickle": "Fickle",
|
"fickle": "Fickle",
|
||||||
"fierce": "Fierce",
|
"fierce": "Fierce",
|
||||||
"flighty": "Flighty",
|
"flighty": "Flighty",
|
||||||
"flippant": "Flippant",
|
"flippant": "Flippant",
|
||||||
"friendly": "Friendly",
|
"friendly": "Friendly",
|
||||||
"gruff": "Gruff",
|
"gruff": "Gruff",
|
||||||
|
"honorable": "Honorable",
|
||||||
|
"hubristic": "Prétentieuse",
|
||||||
"hungry": "Hungry",
|
"hungry": "Hungry",
|
||||||
|
"idealistic": "Idealistic",
|
||||||
|
"imposing": "Imposing",
|
||||||
|
"inquisitive": "Inquisitive",
|
||||||
"intense": "Intense",
|
"intense": "Intense",
|
||||||
"intimidating": "Intimidating",
|
"intimidating": "Intimidating",
|
||||||
"irritable": "Irritable",
|
"irritable": "Irritable",
|
||||||
"loyal": "Loyal",
|
"loyal": "Loyal",
|
||||||
|
"methodical": "Methodical",
|
||||||
|
"meticulous": "Meticulous",
|
||||||
"mischievous": "Mischievous",
|
"mischievous": "Mischievous",
|
||||||
|
"moon_blessed": "Moon-blessed",
|
||||||
"morose": "Morose",
|
"morose": "Morose",
|
||||||
|
"near_feral": "Near feral",
|
||||||
"nurturing": "Nurturing",
|
"nurturing": "Nurturing",
|
||||||
|
"obsessed": "Obsessed",
|
||||||
"obstinate": "Obstinate",
|
"obstinate": "Obstinate",
|
||||||
"opportunistic": "Opportunistic",
|
"opportunistic": "Opportunistic",
|
||||||
|
"otherworldly": "Otherworldly",
|
||||||
|
"outgoing": "Outgoing",
|
||||||
"passionate": "Passionate",
|
"passionate": "Passionate",
|
||||||
|
"patient": "Patient",
|
||||||
|
"personable": "Personable",
|
||||||
"playful": "Playful",
|
"playful": "Playful",
|
||||||
"power_hungry": "Power hungry",
|
"power_hungry": "Power hungry",
|
||||||
"proud": "Proud",
|
"proud": "Proud",
|
||||||
|
"refined": "Refined",
|
||||||
|
"reserved": "Reserved",
|
||||||
"restrained": "Restrained",
|
"restrained": "Restrained",
|
||||||
|
"righteous": "Righteous",
|
||||||
"scheming": "Scheming",
|
"scheming": "Scheming",
|
||||||
"serene": "Serene",
|
"serene": "Serene",
|
||||||
"serious": "Serious",
|
"serious": "Serious",
|
||||||
"shrewd": "Shrewd",
|
"shrewd": "Shrewd",
|
||||||
|
"sinister": "Sinister",
|
||||||
|
"sociable": "Sociable",
|
||||||
|
"stoic": "Stoic",
|
||||||
|
"starved": "Starved",
|
||||||
"stubborn": "Stubborn",
|
"stubborn": "Stubborn",
|
||||||
"suspicious": "Suspicious",
|
"suspicious": "Suspicious",
|
||||||
"teasing": "Teasing",
|
"teasing": "Teasing",
|
||||||
@@ -722,7 +794,12 @@
|
|||||||
"uncertain": "Uncertain",
|
"uncertain": "Uncertain",
|
||||||
"unenthused": "Unenthused",
|
"unenthused": "Unenthused",
|
||||||
"vain": "Vain",
|
"vain": "Vain",
|
||||||
"wary": "Wary"
|
"vengeful": "Vengeful",
|
||||||
|
"vindictive": "Vindictive",
|
||||||
|
"wary": "Wary",
|
||||||
|
"watchful": "Watchful",
|
||||||
|
"wrathful": "Wrathful",
|
||||||
|
"zealous": "Zealous"
|
||||||
},
|
},
|
||||||
"compendium": {
|
"compendium": {
|
||||||
"filter_rank": "Show Rank",
|
"filter_rank": "Show Rank",
|
||||||
@@ -760,6 +837,32 @@
|
|||||||
"the_scroll_or_the_blade": "The Scroll or the Blade",
|
"the_scroll_or_the_blade": "The Scroll or the Blade",
|
||||||
"legacies_of_war": "Legacies of War",
|
"legacies_of_war": "Legacies of War",
|
||||||
"children_of_the_five_winds": "Children of the Five Winds"
|
"children_of_the_five_winds": "Children of the Five Winds"
|
||||||
|
},
|
||||||
|
"tactical_grid": {
|
||||||
|
"settings": {
|
||||||
|
"title": "Tactical Grid Settings",
|
||||||
|
"label": "Tactical Grid Settings",
|
||||||
|
"hint": "Configures tactical grid range band distances (GM only) and their visual appearance colors and transparency (all users).",
|
||||||
|
"cells": "spaces",
|
||||||
|
"world": {
|
||||||
|
"enabled": "Enable Tactical Grid",
|
||||||
|
"enabled_hint": "Enables or Disable tactical grid for everyone",
|
||||||
|
"start": "Start"
|
||||||
|
},
|
||||||
|
"client": {
|
||||||
|
"color": "Color",
|
||||||
|
"alpha": "Alpha"
|
||||||
|
},
|
||||||
|
"range": "Range {index}",
|
||||||
|
"validate": {
|
||||||
|
"start-too-small": "Must be greater than Range Band {previousRangeIndex} ({previousStart})",
|
||||||
|
"start-too-large": "Must be lower then Range Band {nextRangeIndex} ({nextStart})"
|
||||||
|
},
|
||||||
|
"reset": "Reset to Default",
|
||||||
|
"submit": "Save"
|
||||||
|
},
|
||||||
|
"range_band": "Range Band {band}",
|
||||||
|
"range_abbreviation": "RB {range}"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,52 +4,56 @@
|
|||||||
"Maintainers": ["Team L5R"]
|
"Maintainers": ["Team L5R"]
|
||||||
},
|
},
|
||||||
"SETTINGS": {
|
"SETTINGS": {
|
||||||
"None": "Sin opción",
|
"None": "Sin opciones",
|
||||||
"ReverseTokenBars": {
|
"ReverseTokenBars": {
|
||||||
"Title": "Reverse tokens bar",
|
"Title": "Barra de tokens inversa",
|
||||||
"Hint": "Change the order in which the bars under the tokens are filled in",
|
"Hint": "Cambia el orden en el que se rellenan las barras debajo de los tokens",
|
||||||
"None": "None",
|
"None": "Ninguno",
|
||||||
"Fatigue": "Fatigue only",
|
"Fatigue": "Sólo Fatiga",
|
||||||
"Strife": "Strife",
|
"Strife": "Conflicto",
|
||||||
"Both": "Both Fatigue and Strife"
|
"Both": "Tanto la Fatiga como el Conflicto"
|
||||||
},
|
},
|
||||||
"RollNKeep": {
|
"RollNKeep": {
|
||||||
"DeleteOldMessage": "TyG Eliminar el mensaje anterior del chat",
|
"DeleteOldMessage": "TyG eliminar el mensaje anterior del chat",
|
||||||
"DeleteOldMessageHint": "Elige si mantener o borrar el mensaje anterior de la serie TyG"
|
"DeleteOldMessageHint": "Elige si mantener o borrar el mensaje anterior de la serie TyG"
|
||||||
},
|
},
|
||||||
"Initiative": {
|
"Initiative": {
|
||||||
"SetTn1OnTypeChange": "Poner el NO a 1 al seleccionar el tipo de encuentro",
|
"SetTn1OnTypeChange": "Poner el NO a 1 al seleccionar el tipo de encuentro",
|
||||||
"SetTn1OnTypeChangeHint": "Poner el NO a 1 cuando se elige el tipo de encuentro (Intriga, Duelo, Escaramuza o Batalla a gran escala)"
|
"SetTn1OnTypeChangeHint": "Poner el NO a 1 cuando se elige el tipo de encuentro (Intriga, Duelo, Escaramuza o Batalla a gran escala)"
|
||||||
},
|
},
|
||||||
|
"ShowAllStatusEffects": {
|
||||||
|
"Title": "Mostrar todos los efectos de estado",
|
||||||
|
"Hint": "Si se desmarca (por defecto), solo se muestran las condiciones de L5A."
|
||||||
|
},
|
||||||
"CustomTechniques": {
|
"CustomTechniques": {
|
||||||
"Title": "Use custom techniques",
|
"Title": "Usar técnicas personalizadas",
|
||||||
"Hint": "Add 'Specificity' technique type to serve as a catch-all."
|
"Hint": "Añadir el tipo de técnica 'Particularidad' para que sirva como comodín."
|
||||||
},
|
},
|
||||||
"CustomCompendiumName": {
|
"CustomCompendiumName": {
|
||||||
"Title": "Custom Compendium Name",
|
"Title": "Nombre de Compendio personalizado",
|
||||||
"Hint": "For advanced users that want to change the name of the custom compendiums (Used to disables the embedded ones).",
|
"Hint": "Permite a los usuarios avanzados cambiar el nombre de los compendios personalizados (utilizados para desactivar los compendios integrados).",
|
||||||
"Notification": "Unable set Custom Compendium: '{name}'. Is it activated and registered with Babele?"
|
"Notification": "No se puede configurar el compendio personalizado: '{name}'. ¿Está activado y registrado con Babele?"
|
||||||
},
|
},
|
||||||
"CustomItemsHeight": {
|
"CustomItemsHeight": {
|
||||||
"Title": "Default items windows height",
|
"Title": "Altura predeterminada de las ventanas de objetos",
|
||||||
"Hint": "Set the default height for 'Items' windows types (techniques, weapons...), in pixels"
|
"Hint": "Establecer la altura predeterminada para las ventanas de 'objetos' (técnicas, armas...), en píxeles."
|
||||||
},
|
},
|
||||||
"Compendium": {
|
"Compendium": {
|
||||||
"HideDisabledSources": {
|
"HideDisabledSources": {
|
||||||
"Title": "[Compendium] Hide sources filter without reference",
|
"Title": "[Compendio] Ocultar filtro de fuentes sin referencia",
|
||||||
"Hint": "Hide empty source with no elements in source filter."
|
"Hint": "Ocultar fuentes vacías sin elementos en el filtro de fuentes."
|
||||||
},
|
},
|
||||||
"HideEmptySourcesFromPlayers": {
|
"HideEmptySourcesFromPlayers": {
|
||||||
"Title": "[Compendium] Hide elements with empty reference",
|
"Title": "[Compendio] Ocultar elementos con referencias vacías",
|
||||||
"Hint": "Basically require a reference to be set in order for players to view the content in compendiums"
|
"Hint": "Requiere que se establezca una referencia para que los jugadores puedan ver el contenido de los compendios."
|
||||||
},
|
},
|
||||||
"AllowedOfficialSources": {
|
"AllowedOfficialSources": {
|
||||||
"Title": "[Compendium] Available official resources",
|
"Title": "[Compendio] Recursos oficiales disponibles",
|
||||||
"Hint": "Useful if you as a GM want to limit the available official content to only books you own"
|
"Hint": "Útil si, como DJ, quieres limitar el contenido oficial disponible solo a los libros que tienes."
|
||||||
},
|
},
|
||||||
"AllowedUnofficialSources": {
|
"AllowedUnofficialSources": {
|
||||||
"Title": "[Compendium] Available unofficial resources",
|
"Title": "[Compendio] Recursos no oficiales disponibles",
|
||||||
"Hint": "Useful if you have compendiums with custom items mixed with player facing items."
|
"Hint": "Útil si tienes compendios con objetos personalizados mezclados con objetos destinados a los jugadores.."
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@@ -79,29 +83,64 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"l5r5e": {
|
"l5r5e": {
|
||||||
"title": "Legend of the five Rings",
|
"title": "La Leyenda de los Cinco Anillos",
|
||||||
|
"conditions": {
|
||||||
|
"afflicted": "Afligido",
|
||||||
|
"bleeding": "Hemorragia",
|
||||||
|
"burning": "Ardiendo",
|
||||||
|
"centered": "Centrado",
|
||||||
|
"compromised": "Comprometido",
|
||||||
|
"dazed": "Atontado",
|
||||||
|
"disoriented": "Desorientado",
|
||||||
|
"dying": "Moribundo",
|
||||||
|
"emboldened": "Alentado",
|
||||||
|
"enraged": "Enfurecido",
|
||||||
|
"exhausted": "Agotado",
|
||||||
|
"immobilized": "Inmovilizado",
|
||||||
|
"illness_coughing_illness": "Enfermedad: tos enfermiza",
|
||||||
|
"illness_fire_rash": "Enfermedad: sarpullido de fuego",
|
||||||
|
"illness_gut_sickness": "Enfermedad: malestar intestinal",
|
||||||
|
"illness_oozing_sore_disease": "Enfermedad: llagas supurantes",
|
||||||
|
"illness_unsteady_illness": "Enfermedad: temblores",
|
||||||
|
"incapacitated": "Incapacitado",
|
||||||
|
"intoxicated": "Intoxicado",
|
||||||
|
"possessed": "Poseído",
|
||||||
|
"prone": "Tumbado",
|
||||||
|
"silenced": "Silenciado",
|
||||||
|
"unconscious": "Inconsciente",
|
||||||
|
"lightly_wounded_fire": "Herida leve (Fuego)",
|
||||||
|
"lightly_wounded_water": "Herida leve (Agua)",
|
||||||
|
"lightly_wounded_air": "Herida leve (Aire)",
|
||||||
|
"lightly_wounded_earth": "Herida leve (Tierra)",
|
||||||
|
"lightly_wounded_void": "Herida leve (Vacío)",
|
||||||
|
"severely_wounded_fire": "Herida grave (Fuego)",
|
||||||
|
"severely_wounded_water": "Herida grave (Agua)",
|
||||||
|
"severely_wounded_air": "Herida grave (Aire)",
|
||||||
|
"severely_wounded_earth": "Herida grave (Tierra)",
|
||||||
|
"severely_wounded_void": "Herida grave (Vacío)"
|
||||||
|
},
|
||||||
"global": {
|
"global": {
|
||||||
"edge_translation_disclaimer": "Edge Studio nos da su permiso para ofrecer este módulo a la comunidad, pero tanto los textos así como los códigos que lo constituyen no tienen su aprobación explícita.",
|
"edge_translation_disclaimer": "Edge Studio nos da su permiso para ofrecer este módulo a la comunidad, pero tanto los textos así como los códigos que lo constituyen no tienen su aprobación explícita.",
|
||||||
"add": "Añadir",
|
"add": "Añadir",
|
||||||
"edit": "Editar",
|
"edit": "Editar",
|
||||||
"delete_confirm": "¿Estás seguro de que quieres borrar '{name}' ?",
|
"delete_confirm": "¿Estás seguro de que quieres borrar '{name}'?",
|
||||||
"drop_here": "Dejar caer aquí",
|
"drop_here": "Dejar caer aquí",
|
||||||
"send_to_chat": "To Chat",
|
"send_to_chat": "Al Chat",
|
||||||
"locked": "Locked",
|
"locked": "Bloqueado",
|
||||||
"unlocked": "Unlocked",
|
"unlocked": "Desbloqueado",
|
||||||
"random": "Random"
|
"random": "Aleatorio"
|
||||||
},
|
},
|
||||||
"multiselect": {
|
"multiselect": {
|
||||||
"empty_tag": "<blank>",
|
"empty_tag": "<blank>",
|
||||||
"placeholder": "Filter Sources",
|
"placeholder": "Filtro de recursos",
|
||||||
"player_filter_label": "Player filter",
|
"player_filter_label": "Filtro de jugador",
|
||||||
"player_filter_tooltip": "Apply player filter",
|
"player_filter_tooltip": "Aplicar filtro de jugador",
|
||||||
"already_in_filter": "Already in filter",
|
"already_in_filter": "Ya en el filtro",
|
||||||
"sources_categories": {
|
"sources_categories": {
|
||||||
"rules": "Rules",
|
"rules": "Reglas",
|
||||||
"adventures": "Adventures",
|
"adventures": "Aventuras",
|
||||||
"supplements": "Supplements",
|
"supplements": "Suplementos",
|
||||||
"others": "Others"
|
"others": "Otros"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"logo": {
|
"logo": {
|
||||||
@@ -121,19 +160,19 @@
|
|||||||
},
|
},
|
||||||
"discord": {
|
"discord": {
|
||||||
"title": "Discord oficial de FoundryVTT",
|
"title": "Discord oficial de FoundryVTT",
|
||||||
"info": "Su navegador se abrirá el discord oficial de Foundry",
|
"info": "Tu navegador abrirá el discord oficial de Foundry",
|
||||||
"link": "https://discordapp.com/invite/DDBZUDf"
|
"link": "https://discordapp.com/invite/DDBZUDf"
|
||||||
},
|
},
|
||||||
"notes": {
|
"notes": {
|
||||||
"title": "Changelog",
|
"title": "Registro de cambios",
|
||||||
"link": "https://gitlab.com/teaml5r/l5r5e/-/blob/master/CHANGELOG.md"
|
"link": "https://gitlab.com/teaml5r/l5r5e/-/blob/master/CHANGELOG.md"
|
||||||
},
|
},
|
||||||
"issues": {
|
"issues": {
|
||||||
"title": "Issues",
|
"title": "Problemas",
|
||||||
"link": "https://gitlab.com/teaml5r/l5r5e/-/issues"
|
"link": "https://gitlab.com/teaml5r/l5r5e/-/issues"
|
||||||
},
|
},
|
||||||
"custom-compendiums": {
|
"custom-compendiums": {
|
||||||
"title": "Compendiums",
|
"title": "Compendios",
|
||||||
"link": "https://gitlab.com/teaml5r/l5r5e/-/wikis/users/custom-compendiums.md"
|
"link": "https://gitlab.com/teaml5r/l5r5e/-/wikis/users/custom-compendiums.md"
|
||||||
},
|
},
|
||||||
"wiki": {
|
"wiki": {
|
||||||
@@ -192,10 +231,10 @@
|
|||||||
"success_text": "¡Éxito!",
|
"success_text": "¡Éxito!",
|
||||||
"bonus_text": "Éxitos adicionales",
|
"bonus_text": "Éxitos adicionales",
|
||||||
"fail_text": "¡Fallo!",
|
"fail_text": "¡Fallo!",
|
||||||
"unknown_target": "Unknown target"
|
"unknown_target": "Objetivo desconocido"
|
||||||
},
|
},
|
||||||
"dicepicker": {
|
"dicepicker": {
|
||||||
"title": "Dice Picker",
|
"title": "Selector de dados",
|
||||||
"difficulty_title": "Dificultad",
|
"difficulty_title": "Dificultad",
|
||||||
"difficulty_hidden_label": "Ocultar NO",
|
"difficulty_hidden_label": "Ocultar NO",
|
||||||
"use_void_point_label": "Gasta un",
|
"use_void_point_label": "Gasta un",
|
||||||
@@ -203,7 +242,7 @@
|
|||||||
"skill_assistance_label": "Asistencia",
|
"skill_assistance_label": "Asistencia",
|
||||||
"roll_label": "Tirar",
|
"roll_label": "Tirar",
|
||||||
"bt_add_macro": "Añadir una macro",
|
"bt_add_macro": "Añadir una macro",
|
||||||
"gm_request_dp_to_players": "Roll request sent to players"
|
"gm_request_dp_to_players": "Solicitud de tirada enviada a los jugadores"
|
||||||
},
|
},
|
||||||
"roll_n_keep": {
|
"roll_n_keep": {
|
||||||
"title": "Tirar y guardar",
|
"title": "Tirar y guardar",
|
||||||
@@ -213,13 +252,13 @@
|
|||||||
"keep_drop_here": "Guardar",
|
"keep_drop_here": "Guardar",
|
||||||
"max": "Máx",
|
"max": "Máx",
|
||||||
"bt_validate": "Terminar este paso",
|
"bt_validate": "Terminar este paso",
|
||||||
"bt_strife": "Apply strife",
|
"bt_strife": "Aplicar Conflicto",
|
||||||
"undo": "[GM] Deshacer los últimos cambios"
|
"undo": "[GM] Deshacer los últimos cambios"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"gm": {
|
"gm": {
|
||||||
"toolbox": {
|
"toolbox": {
|
||||||
"title": "GM ToolBox",
|
"title": "Caja de herramientas del DJ",
|
||||||
"difficulty_hidden": "Cambiar la dificultad visible",
|
"difficulty_hidden": "Cambiar la dificultad visible",
|
||||||
"difficulty": "Cambiar dificultad (Izquierda: añadir, Derecha: sustraer, central: NO 2)",
|
"difficulty": "Cambiar dificultad (Izquierda: añadir, Derecha: sustraer, central: NO 2)",
|
||||||
"sleep": "Descanso confortable para todos los personajes (Eliminar fatiga = Agua x2. (Click Izquierdo: sólo a los personajes seleccionados. Derecho: a todos los actores)",
|
"sleep": "Descanso confortable para todos los personajes (Eliminar fatiga = Agua x2. (Click Izquierdo: sólo a los personajes seleccionados. Derecho: a todos los actores)",
|
||||||
@@ -235,7 +274,7 @@
|
|||||||
"add_selected_tokens": "Add selected tokens",
|
"add_selected_tokens": "Add selected tokens",
|
||||||
"honor_glory_status": "H/G/E",
|
"honor_glory_status": "H/G/E",
|
||||||
"focus_vigilance": "Con./Ale.",
|
"focus_vigilance": "Con./Ale.",
|
||||||
"mouse_control": "Click Izquierdo +1, Derecho: -1, middle: set to 0"
|
"mouse_control": "Click Izquierdo +1, Derecho: -1, medio: poner a 0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"weapons": {
|
"weapons": {
|
||||||
@@ -268,7 +307,7 @@
|
|||||||
"type": "Técnicas permitidas",
|
"type": "Técnicas permitidas",
|
||||||
"kata": "Kata",
|
"kata": "Kata",
|
||||||
"kiho": "Kihõ",
|
"kiho": "Kihõ",
|
||||||
"inversion": "Inversion",
|
"inversion": "Inversión",
|
||||||
"invocation": "Invocación",
|
"invocation": "Invocación",
|
||||||
"ritual": "Ritual",
|
"ritual": "Ritual",
|
||||||
"shuji": "Shuji",
|
"shuji": "Shuji",
|
||||||
@@ -278,7 +317,7 @@
|
|||||||
"school_ability": "Capacidad de escuela",
|
"school_ability": "Capacidad de escuela",
|
||||||
"mastery_ability": "Habilidad de maestría",
|
"mastery_ability": "Habilidad de maestría",
|
||||||
"title_ability": "Capacidad de título",
|
"title_ability": "Capacidad de título",
|
||||||
"specificity": "Specificity"
|
"specificity": "Particularidad"
|
||||||
},
|
},
|
||||||
"peculiarities": {
|
"peculiarities": {
|
||||||
"types": {
|
"types": {
|
||||||
@@ -301,7 +340,7 @@
|
|||||||
"status": "Estatus",
|
"status": "Estatus",
|
||||||
"ninjo": "Ninjo",
|
"ninjo": "Ninjo",
|
||||||
"giri": "Giri",
|
"giri": "Giri",
|
||||||
"past": "Past",
|
"past": "Pasado",
|
||||||
"bushido_tenets": {
|
"bushido_tenets": {
|
||||||
"title": "Preceptos del Bushidō",
|
"title": "Preceptos del Bushidō",
|
||||||
"paramount": "Más importante",
|
"paramount": "Más importante",
|
||||||
@@ -318,20 +357,20 @@
|
|||||||
"combat": "Combate",
|
"combat": "Combate",
|
||||||
"intrigue": "Intriga"
|
"intrigue": "Intriga"
|
||||||
},
|
},
|
||||||
"age": "Age",
|
"age": "Edad",
|
||||||
"children": "Children",
|
"children": "Vástagos",
|
||||||
"marital_status": {
|
"marital_status": {
|
||||||
"title": "Marital Status",
|
"title": "Estado civil",
|
||||||
"partner": "Partner",
|
"partner": "Pareja",
|
||||||
"married": "Married",
|
"married": "Casado",
|
||||||
"betrothed": "Betrothed",
|
"betrothed": "Prometido",
|
||||||
"unmarried": "Unmarried",
|
"unmarried": "Soltero",
|
||||||
"widowed": "Widowed"
|
"widowed": "Viudo"
|
||||||
},
|
},
|
||||||
"gender": {
|
"gender": {
|
||||||
"title": "Gender",
|
"title": "Género",
|
||||||
"male": "Male",
|
"male": "Masculino",
|
||||||
"female": "Female"
|
"female": "Femenino"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"skills": {
|
"skills": {
|
||||||
@@ -461,33 +500,33 @@
|
|||||||
"minion": "Esbirro"
|
"minion": "Esbirro"
|
||||||
},
|
},
|
||||||
"army": {
|
"army": {
|
||||||
"warlord": "Warlord",
|
"warlord": "Señor de la guerra",
|
||||||
"allies_backers": "Allies and Backers",
|
"allies_backers": "Aliados y apoyos",
|
||||||
"purpose_mustering": "Purpose for Mustering",
|
"purpose_mustering": "Propósito de la movilización",
|
||||||
"battle_readiness": {
|
"battle_readiness": {
|
||||||
"title": "Battle Readiness",
|
"title": "Preparación para la batalla",
|
||||||
"strength": "Strength",
|
"strength": "Fuerza",
|
||||||
"casualties": "Casualties",
|
"casualties": "Bajas",
|
||||||
"discipline": "Discipline",
|
"discipline": "Disciplina",
|
||||||
"panic": "Panic"
|
"panic": "Pánico"
|
||||||
},
|
},
|
||||||
"commander": "Commander",
|
"commander": "Comandante",
|
||||||
"commander_abilities": "Commander's relevant abilities",
|
"commander_abilities": "Habilidades relevantes del comandante",
|
||||||
"army_abilities": "Army Abilities",
|
"army_abilities": "Habilidades del ejército",
|
||||||
"commander_standing": "Commander's Standing",
|
"commander_standing": "Posición del comandante",
|
||||||
"supplies_logistics": "Supplies and Logistics",
|
"supplies_logistics": "Logística y suministros",
|
||||||
"past_battles": "Past Battles",
|
"past_battles": "Batallas anteriores",
|
||||||
"cohort": {
|
"cohort": {
|
||||||
"tab": "Cohorts",
|
"tab": "Cohortes",
|
||||||
"title": "Cohort",
|
"title": "Cohorte",
|
||||||
"leader": "Leader",
|
"leader": "Líder",
|
||||||
"abilities": "Abilities"
|
"abilities": "Habilidades"
|
||||||
},
|
},
|
||||||
"fortification": {
|
"fortification": {
|
||||||
"tab": "Fortifications",
|
"tab": "Fortificaciones",
|
||||||
"title": "Fortification Held",
|
"title": "Fortificación",
|
||||||
"difficulty": "Difficulty Value",
|
"difficulty": "Valor de dificultad",
|
||||||
"attrition_reduction": "Attrition Reduction"
|
"attrition_reduction": "Reducción del desgaste"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"twenty_questions": {
|
"twenty_questions": {
|
||||||
@@ -514,19 +553,19 @@
|
|||||||
},
|
},
|
||||||
"part1": {
|
"part1": {
|
||||||
"title": "Parte I: Identidad básica (Clan y Familia)",
|
"title": "Parte I: Identidad básica (Clan y Familia)",
|
||||||
"title_pow": "Part I: Core Identity (Region and Upbringing)",
|
"title_pow": "Parte I: Identidad básica (Región y educación)",
|
||||||
"q1": "1. ¿A qué clan pertenece tu personaje? (p. 41)",
|
"q1": "1. ¿A qué clan pertenece tu personaje? (p. 41)",
|
||||||
"q1_pow": "1. What region does your character come from? (p. 31)",
|
"q1_pow": "1. ¿De que región viene tu personaje? (p. 31)",
|
||||||
"status": "Estatus",
|
"status": "Estatus",
|
||||||
"q2": "2. ¿A qué familia pertenece tu personaje? (p. 49)",
|
"q2": "2. ¿A qué familia pertenece tu personaje? (p. 49)",
|
||||||
"q2_pow": "2. What was your character’s upbringing? (p. 43)",
|
"q2_pow": "2. ¿Cual fue la educación de tu personaje? (p. 43)",
|
||||||
"money": "Riqueza inicial en Koku",
|
"money": "Riqueza inicial en Koku",
|
||||||
"glory": "Gloria"
|
"glory": "Gloria"
|
||||||
},
|
},
|
||||||
"part2": {
|
"part2": {
|
||||||
"title": "Parte II: Función y escuela",
|
"title": "Parte II: Función y escuela",
|
||||||
"q3": "3. ¿Cuál es la escuela de tu personaje, y en qué funciones cumple esa escuela? (p. 56)",
|
"q3": "3. ¿Cuál es la escuela de tu personaje, y en qué funciones cumple esa escuela? (p. 56)",
|
||||||
"q3_pow": "3. What is your character’s school, and what are its associated roles? (p. 46)",
|
"q3_pow": "3. ¿Cuál es la escuela de tu personaje y cuáles son sus funciones asociadas? (p. 46)",
|
||||||
"school": "Escuela",
|
"school": "Escuela",
|
||||||
"role": "Funciones",
|
"role": "Funciones",
|
||||||
"honor": "Honor",
|
"honor": "Honor",
|
||||||
@@ -535,23 +574,23 @@
|
|||||||
"starting_techniques": "Técnicas iniciales (2-6)",
|
"starting_techniques": "Técnicas iniciales (2-6)",
|
||||||
"outfit": "Equipo inicial",
|
"outfit": "Equipo inicial",
|
||||||
"q4": "4. ¿De qué manera destaca tu personaje dentro de su escuela? (p. 88)",
|
"q4": "4. ¿De qué manera destaca tu personaje dentro de su escuela? (p. 88)",
|
||||||
"q4_pow": "4. What gets your character in and out of trouble? (p. 60)"
|
"q4_pow": "4. ¿Qué es lo que mete y saca a tu personaje de problemas? (p. 60)"
|
||||||
},
|
},
|
||||||
"part3": {
|
"part3": {
|
||||||
"title": "Parte III: Honor y Gloria",
|
"title": "Parte III: Honor y Gloria",
|
||||||
"title_pow": "Part III: The Past and the Future they interact and process",
|
"title_pow": "Parte III: El pasado y el futuro interactúan y se funden.",
|
||||||
"q5": "5. ¿Quién es tu señor y cuál es el deber de tu personaje hacia él? (p. 88)",
|
"q5": "5. ¿Quién es tu señor y cuál es el deber de tu personaje hacia él? (p. 88)",
|
||||||
"q5_pow": "5. What is your character’s past and how does it Affect them? (p. 60)",
|
"q5_pow": "5. ¿Cuál es el pasado de tu personaje y cómo le afecta? (p. 60)",
|
||||||
"choose_giri": "Elige un giri:",
|
"choose_giri": "Elige un giri:",
|
||||||
"choose_past": "Select past",
|
"choose_past": "Elige un pasado:",
|
||||||
"q6": "6. ¿Qué es lo que anhela tu personaje, y cómo podría esto interferir con su deber? (p. 90)",
|
"q6": "6. ¿Qué es lo que anhela tu personaje, y cómo podría esto interferir con su deber? (p. 90)",
|
||||||
"q6_pow": "6. What does your character long for, and how might their past impact their ninjō? (p. 62)",
|
"q6_pow": "6. ¿Qué anhela tu personaje y cómo podría afectar su pasado a su ninjō? (p. 62)",
|
||||||
"choose_ninjo": "Elige un ninjō:",
|
"choose_ninjo": "Elige un ninjō:",
|
||||||
"q7": "7. ¿Cuál es la relación de tu personaje con tu clan? (p. 91)",
|
"q7": "7. ¿Cuál es la relación de tu personaje con tu clan? (p. 91)",
|
||||||
"q7_pow": "7. What is your character known for? (p. 61)",
|
"q7_pow": "7. ¿Por qué es conocido tu personaje? (p. 61)",
|
||||||
"increase_glory": "Aumento de la gloria",
|
"increase_glory": "Aumento de la gloria",
|
||||||
"q8": "8. ¿Qué piensa tu personaje acerca del Bushidō? (p. 91)",
|
"q8": "8. ¿Qué piensa tu personaje acerca del Bushidō? (p. 91)",
|
||||||
"q8_pow": "8. What does your character think of Bushidō? (p. 62)",
|
"q8_pow": "8. ¿Qué piensa tu personaje acerca del Bushidō? (p. 62)",
|
||||||
"increase_honor": "Aumento del honor",
|
"increase_honor": "Aumento del honor",
|
||||||
"tenets": "Escoge un precepto del Bushidō más importante y un precepto como menos significativo (ver las opiniones de los Clanes respecto del Bushidō, página 301 del libro de reglas básicas):",
|
"tenets": "Escoge un precepto del Bushidō más importante y un precepto como menos significativo (ver las opiniones de los Clanes respecto del Bushidō, página 301 del libro de reglas básicas):",
|
||||||
"object": "Objeto (Rareza 5 o inferior)"
|
"object": "Objeto (Rareza 5 o inferior)"
|
||||||
@@ -578,22 +617,22 @@
|
|||||||
"part5": {
|
"part5": {
|
||||||
"title": "Parte V: Personalidad y Comportamiento",
|
"title": "Parte V: Personalidad y Comportamiento",
|
||||||
"q14": "14. ¿Qué es lo que advierte primero la gente al encontrarse con tu personaje? (p. 93)",
|
"q14": "14. ¿Qué es lo que advierte primero la gente al encontrarse con tu personaje? (p. 93)",
|
||||||
"q14_pow": "14. What is your character’s most prized possession? (p. 66)",
|
"q14_pow": "14. ¿Cuál es la posesión más preciada de tu personaje? (p. 66)",
|
||||||
"accoutrement": "Accesorio estético distintivo",
|
"accoutrement": "Accesorio estético distintivo",
|
||||||
"q15": "15. ¿Cómo reacciona tu personaje ante situaciones de tensión? (p. 94)",
|
"q15": "15. ¿Cómo reacciona tu personaje ante situaciones de tensión? (p. 94)",
|
||||||
"q15_pow": "15. ¿Cómo reacciona tu personaje ante situaciones de tensión? (p. 66)",
|
"q15_pow": "15. ¿Cómo reacciona tu personaje ante situaciones de tensión? (p. 66)",
|
||||||
"q16": "16. ¿Cuáles son las relaciones previas de tu personaje con otros clanes, familias, organizaciones y tradiciones? (p. 94)",
|
"q16": "16. ¿Cuáles son las relaciones previas de tu personaje con otros clanes, familias, organizaciones y tradiciones? (p. 94)",
|
||||||
"q16_pow": "16. What are your relationships to your family, the clans, peasants, and others? (p. 66)",
|
"q16_pow": "16. ¿Cómo son tus relaciones con tu familia, los clanes, los campesinos y demás? (p. 66)",
|
||||||
"object": "Objeto (Rareza 7 o inferior)"
|
"object": "Objeto (Rareza 7 o inferior)"
|
||||||
},
|
},
|
||||||
"part6": {
|
"part6": {
|
||||||
"title": "Parte VI: Ascestros y familia",
|
"title": "Parte VI: Ascestros y familia",
|
||||||
"title_pow": "Part VI: Ancestry and Bonds",
|
"title_pow": "Parte VI: Ascestros y vínculos",
|
||||||
"q17": "17. ¿Cómo describirían sus padres a tu personaje? (p. 95)",
|
"q17": "17. ¿Cómo describirían sus padres a tu personaje? (p. 95)",
|
||||||
"q17_pow": "17. What shared history do you have with your group? (p. 66)",
|
"q17_pow": "17. ¿Qué historia compartes con tu grupo? (p. 66)",
|
||||||
"bond": "Determine an appropriate bond to apply to your relationship",
|
"bond": "Determina el vínculo adecuado que debes aplicar a tu relación.",
|
||||||
"q18": "18. ¿En honor de quién se eligio el nombre de tu personaje? (p. 95)",
|
"q18": "18. ¿En honor de quién se eligio el nombre de tu personaje? (p. 95)",
|
||||||
"q18_pow": "18. Who raised you? (p. 67)",
|
"q18_pow": "18. ¿Quién te crió? (p. 67)",
|
||||||
"d10r1": "Resultado D10 (1/2)",
|
"d10r1": "Resultado D10 (1/2)",
|
||||||
"d10r1_choice": "Primer efecto de D10",
|
"d10r1_choice": "Primer efecto de D10",
|
||||||
"d10r2": "Resultado D10 (2/2)",
|
"d10r2": "Resultado D10 (2/2)",
|
||||||
@@ -613,153 +652,217 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"char_generator": {
|
"char_generator": {
|
||||||
"title": "Character Generator",
|
"title": "Generador de personajes",
|
||||||
"head_bt_title": "Char. Generator",
|
"head_bt_title": "Generador de pj",
|
||||||
"generate": "Generate",
|
"generate": "Generar",
|
||||||
"average_value": "Average value",
|
"average_value": "Valor medio",
|
||||||
"identity": "Clan, gender, age, marital status",
|
"identity": "Clan, género, edad, estado civil",
|
||||||
"attributes": "Social standing, Rings, Attributes and Skills",
|
"attributes": "Posición social, Anillos, Atributos y Habilidades",
|
||||||
"demeanor": "Demeanor & rings affinities",
|
"demeanor": "Comportamiento y afinidades con los anillos",
|
||||||
"peculiarities": "Advantages and Disadvantages",
|
"peculiarities": "Ventajas y desventajas",
|
||||||
"items": "Armors, Weapons, and Items",
|
"items": "Armaduras, armas y objetos.",
|
||||||
"narrative": "Narrative (Description)"
|
"narrative": "Historia (descripción)"
|
||||||
},
|
},
|
||||||
"roles": {
|
"roles": {
|
||||||
"title": "Funciones",
|
"title": "Funciones",
|
||||||
"artisan": "Artisan",
|
"artisan": "Artesano",
|
||||||
"bushi": "Bushi",
|
"bushi": "Bushi",
|
||||||
"courtier": "Courtier",
|
"courtier": "Cortesano",
|
||||||
"monk": "Monk",
|
"monk": "Monje",
|
||||||
"sage": "Sage",
|
"sage": "Sabio",
|
||||||
"shinobi": "Shinobi",
|
"shinobi": "Shinobi",
|
||||||
"shugenja": "Shugenja"
|
"shugenja": "Shugenja"
|
||||||
},
|
},
|
||||||
"clans": {
|
"clans": {
|
||||||
"title": "Clans",
|
"title": "Clanes",
|
||||||
"label": "Clan",
|
"label": "Clan",
|
||||||
"imperial": "Imperial",
|
"imperial": "Imperial",
|
||||||
"crab": "Crab",
|
"crab": "Cangrejo",
|
||||||
"crane": "Crane",
|
"crane": "Grulla",
|
||||||
"dragon": "Dragon",
|
"dragon": "Dragón",
|
||||||
"lion": "Lion",
|
"lion": "León",
|
||||||
"phoenix": "Phoenix",
|
"phoenix": "Fénix",
|
||||||
"scorpion": "Scorpion",
|
"scorpion": "Escorpión",
|
||||||
"unicorn": "Unicorn",
|
"unicorn": "Unicornio",
|
||||||
"mantis": "Mantis",
|
"mantis": "Mantis",
|
||||||
"ronin": "Ronin",
|
"ronin": "Ronin",
|
||||||
"badger": "Badger",
|
"badger": "Tejón",
|
||||||
"bat": "Bat",
|
"bat": "Muerciélago",
|
||||||
"boar": "Boar",
|
"boar": "Jabalí",
|
||||||
"dragonfly": "Dragonfly",
|
"dragonfly": "Libélula",
|
||||||
"firefly": "Firefly",
|
"firefly": "Luciérnaga",
|
||||||
"fox": "Fox",
|
"fox": "Zorro",
|
||||||
"hare": "Hare",
|
"hare": "Liebre",
|
||||||
"monkey": "Monkey",
|
"monkey": "Mono",
|
||||||
"oriole": "Oriole",
|
"oriole": "Oropéndula",
|
||||||
"ox": "Ox",
|
"ox": "Buey",
|
||||||
"sparrow": "Sparrow",
|
"sparrow": "Gorrión",
|
||||||
"tortoise": "Tortoise",
|
"tortoise": "Tortuga",
|
||||||
"ivory_kingdoms": "Ivory Kingdoms",
|
"ivory_kingdoms": "Reinos de Marfil",
|
||||||
"qamarist": "Qamarist",
|
"qamarist": "Qamarista",
|
||||||
"ujik": "Ujik"
|
"ujik": "Ujik"
|
||||||
},
|
},
|
||||||
"demeanor": {
|
"demeanor": {
|
||||||
"adaptable": "Adaptable",
|
"adaptable": "Adaptable",
|
||||||
"aggressive": "Aggressive",
|
"aggressive": "Agresivo",
|
||||||
"ambitious": "Ambitious",
|
"alluring": "Alluring",
|
||||||
"amiable": "Amiable",
|
"ambitious": "Ambicioso",
|
||||||
"analytical": "Analytical",
|
"amiable": "Amigable",
|
||||||
"angry": "Angry",
|
"analytical": "Analítico",
|
||||||
"arrogant": "Arrogant",
|
"angry": "Enojado",
|
||||||
"assertive": "Assertive",
|
"arrogant": "Arrogante",
|
||||||
"beguiling": "Beguiling",
|
"assertive": "Firme",
|
||||||
"bitter": "Bitter",
|
"beguiling": "Seductor",
|
||||||
"bold": "Bold",
|
"bitter": "Amargado",
|
||||||
"calculating": "Calculating",
|
"bloodthirsty": "Bloodthirsty",
|
||||||
"calm": "Calm",
|
"bold": "Atrevido",
|
||||||
"capricious": "Capricious",
|
"calculating": "Calculador",
|
||||||
"cautious": "Cautious",
|
"calm": "Calmado",
|
||||||
"clever": "Clever",
|
"capricious": "Caprichoso",
|
||||||
"compassionate": "Compassionate",
|
"cautious": "Cuidadoso",
|
||||||
"confused": "Confused",
|
"clever": "Ingenioso",
|
||||||
"courageous": "Courageous",
|
"compassionate": "Compasivo",
|
||||||
"cowardly": "Cowardly",
|
"confused": "Confuso",
|
||||||
"curious": "Curious",
|
"courageous": "Valiente",
|
||||||
"dependable": "Dependable",
|
"cowardly": "Cobarde",
|
||||||
"detached": "Detached",
|
"crestfallen": "Crestfallen",
|
||||||
"disheartened": "Disheartened",
|
"curious": "Curioso",
|
||||||
"enraged": "Enraged",
|
"defensive": "Defensive",
|
||||||
"feral": "Feral",
|
"dependable": "Fiable",
|
||||||
"fickle": "Fickle",
|
"detached": "Desapegado",
|
||||||
"fierce": "Fierce",
|
"determined": "Determined",
|
||||||
"flighty": "Flighty",
|
"devoted": "Devoted",
|
||||||
"flippant": "Flippant",
|
"direct": "Direct",
|
||||||
"friendly": "Friendly",
|
"disheartened": "Desanimado",
|
||||||
"gruff": "Gruff",
|
"dour": "Dour",
|
||||||
"hungry": "Hungry",
|
"duplicitous": "Duplicitous",
|
||||||
"intense": "Intense",
|
"effusive": "Effusive",
|
||||||
"intimidating": "Intimidating",
|
"enraged": "Furioso",
|
||||||
|
"fanatical": "Fanatical",
|
||||||
|
"feral": "Salvaje",
|
||||||
|
"fervent": "Fervent",
|
||||||
|
"fickle": "Voluble",
|
||||||
|
"fierce": "Fiero",
|
||||||
|
"flighty": "Veleidoso",
|
||||||
|
"flippant": "Frívolo",
|
||||||
|
"friendly": "Amable",
|
||||||
|
"gruff": "Hosco",
|
||||||
|
"honorable": "Honorable",
|
||||||
|
"hubristic": "Hubristic",
|
||||||
|
"hungry": "Hambriento",
|
||||||
|
"idealistic": "Idealistic",
|
||||||
|
"imposing": "Imposing",
|
||||||
|
"inquisitive": "Inquisitive",
|
||||||
|
"intense": "Intenso",
|
||||||
|
"intimidating": "Intimidante",
|
||||||
"irritable": "Irritable",
|
"irritable": "Irritable",
|
||||||
"loyal": "Loyal",
|
"loyal": "Leal",
|
||||||
"mischievous": "Mischievous",
|
"methodical": "Methodical",
|
||||||
"morose": "Morose",
|
"meticulous": "Meticulous",
|
||||||
"nurturing": "Nurturing",
|
"mischievous": "Travieso",
|
||||||
"obstinate": "Obstinate",
|
"moon_blessed": "Moon-blessed",
|
||||||
"opportunistic": "Opportunistic",
|
"morose": "Taciturno",
|
||||||
"passionate": "Passionate",
|
"near_feral": "Near feral",
|
||||||
"playful": "Playful",
|
"nurturing": "Animador",
|
||||||
"power_hungry": "Power hungry",
|
"obsessed": "Obsessed",
|
||||||
"proud": "Proud",
|
"obstinate": "Obstinado",
|
||||||
"restrained": "Restrained",
|
"opportunistic": "Oportunista",
|
||||||
"scheming": "Scheming",
|
"otherworldly": "Otherworldly",
|
||||||
"serene": "Serene",
|
"outgoing": "Outgoing",
|
||||||
"serious": "Serious",
|
"passionate": "Apasionado",
|
||||||
"shrewd": "Shrewd",
|
"patient": "Patient",
|
||||||
"stubborn": "Stubborn",
|
"personable": "Personable",
|
||||||
"suspicious": "Suspicious",
|
"playful": "Juguetón",
|
||||||
"teasing": "Teasing",
|
"power_hungry": "Ávido de poder",
|
||||||
|
"proud": "Orgulloso",
|
||||||
|
"refined": "Refined",
|
||||||
|
"reserved": "Reserved",
|
||||||
|
"restrained": "Contenido",
|
||||||
|
"righteous": "Righteous",
|
||||||
|
"scheming": "Taimado",
|
||||||
|
"serene": "Sereno",
|
||||||
|
"serious": "Serio",
|
||||||
|
"shrewd": "Artero",
|
||||||
|
"sinister": "Sinister",
|
||||||
|
"sociable": "Sociable",
|
||||||
|
"stoic": "Stoic",
|
||||||
|
"starved": "Starved",
|
||||||
|
"stubborn": "Testarudo",
|
||||||
|
"suspicious": "Suspicaz",
|
||||||
|
"teasing": "Bromista",
|
||||||
"territorial": "Territorial",
|
"territorial": "Territorial",
|
||||||
"uncertain": "Uncertain",
|
"uncertain": "Inseguro",
|
||||||
"unenthused": "Unenthused",
|
"unenthused": "Sin entusiasmo",
|
||||||
"vain": "Vain",
|
"vain": "Vanidoso",
|
||||||
"wary": "Wary"
|
"vengeful": "Vengeful",
|
||||||
|
"vindictive": "Vindictive",
|
||||||
|
"wary": "Precavido",
|
||||||
|
"watchful": "Watchful",
|
||||||
|
"wrathful": "Wrathful",
|
||||||
|
"zealous": "Zealous"
|
||||||
},
|
},
|
||||||
"compendium": {
|
"compendium": {
|
||||||
"filter_rank": "Show Rank",
|
"filter_rank": "Mostrar rango",
|
||||||
"not_for_players": "Not shown to players",
|
"not_for_players": "No mostrar a los jugadores",
|
||||||
"filter": {
|
"filter": {
|
||||||
"rank": "Rank",
|
"rank": "Rango",
|
||||||
"rarity": "Rarity",
|
"rarity": "Rareza",
|
||||||
"ring": "Ring"
|
"ring": "Anillo"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"source_reference": {
|
"source_reference": {
|
||||||
"core_rulebook": "Core Rulebook",
|
"core_rulebook": "Libro básico",
|
||||||
"emerald_empire": "Emerald Empire",
|
"emerald_empire": "La guia del Imperio Esmeralda",
|
||||||
"shadowlands": "Shadowlands",
|
"shadowlands": "Las Tierras Sombrías",
|
||||||
"court_of_stones": "Court of Stones",
|
"court_of_stones": "Cortes de piedra",
|
||||||
"path_of_waves": "Path of Waves",
|
"path_of_waves": "Path of Waves",
|
||||||
"celestial_realms": "Celestial Realms",
|
"celestial_realms": "Celestial Realms",
|
||||||
"fields_of_victory": "Fields of Victory",
|
"fields_of_victory": "Fields of Victory",
|
||||||
"writ_of_the_wild": "Writ of the Wild",
|
"writ_of_the_wild": "Writ of the Wild",
|
||||||
"gm_kit": "Game Master's Kit",
|
"gm_kit": "Pantalla del DJ",
|
||||||
"beginner_game": "Beginner Game",
|
"beginner_game": "Caja de inicio",
|
||||||
"the_mantis_clan": "The Mantis Clan",
|
"the_mantis_clan": "El Clan de la Mantis",
|
||||||
"mask_of_the_oni": "Mask of the Oni",
|
"mask_of_the_oni": "La máscara del oni",
|
||||||
"winters_embrace": "Winter's Embrace",
|
"winters_embrace": "El abrazo del invierno",
|
||||||
"sins_of_regret": "Sins of Regret",
|
"sins_of_regret": "Sins of Regret",
|
||||||
"wheel_of_judgment": "Wheel of Judgment",
|
"wheel_of_judgment": "Wheel of Judgment",
|
||||||
"blood_of_the_lioness": "Blood of the Lioness",
|
"blood_of_the_lioness": "Blood of the Lioness",
|
||||||
"imperfect_land": "Imperfect Land",
|
"imperfect_land": "Imperfect Land",
|
||||||
"in_the_palace_of_the_emerald_champion": "In the Palace of the Emerald Champion",
|
"in_the_palace_of_the_emerald_champion": "En el palacio del Campeón Esmeralda",
|
||||||
"the_highwayman": "The Highwayman",
|
"the_highwayman": "The Highwayman",
|
||||||
"wedding_at_kyotei_castle": "Wedding at Kyotei Castle",
|
"wedding_at_kyotei_castle": "Esponsales en el Castillo Kyotei",
|
||||||
"the_knotted_tails": "The Knotted Tails",
|
"the_knotted_tails": "Las Colas Anudadas",
|
||||||
"cresting_waves": "Cresting Waves",
|
"cresting_waves": "Mareas Oscuras",
|
||||||
"deathly_turns": "Deathly Turns",
|
"deathly_turns": "Deathly Turns",
|
||||||
"the_scroll_or_the_blade": "The Scroll or the Blade",
|
"the_scroll_or_the_blade": "El pergamino o la espada",
|
||||||
"legacies_of_war": "Legacies of War",
|
"legacies_of_war": "Legacies of War",
|
||||||
"children_of_the_five_winds": "Children of the Five Winds"
|
"children_of_the_five_winds": "Children of the Five Winds"
|
||||||
|
},
|
||||||
|
"tactical_grid": {
|
||||||
|
"settings": {
|
||||||
|
"title": "Tactical Grid Settings",
|
||||||
|
"label": "Tactical Grid Settings",
|
||||||
|
"hint": "Configures tactical grid range band distances (GM only) and their visual appearance colors and transparency (all users).",
|
||||||
|
"cells": "spaces",
|
||||||
|
"world": {
|
||||||
|
"enabled": "Enable Tactical Grid",
|
||||||
|
"enabled_hint": "Enables or Disable tactical grid for everyone",
|
||||||
|
"start": "Start"
|
||||||
|
},
|
||||||
|
"client": {
|
||||||
|
"color": "Color",
|
||||||
|
"alpha": "Alpha"
|
||||||
|
},
|
||||||
|
"range": "Range {index}",
|
||||||
|
"validate": {
|
||||||
|
"start-too-small": "Must be greater than Range Band {previousRangeIndex} ({previousStart})",
|
||||||
|
"start-too-large": "Must be lower then Range Band {nextRangeIndex} ({nextStart})"
|
||||||
|
},
|
||||||
|
"reset": "Reset to Default",
|
||||||
|
"submit": "Save"
|
||||||
|
},
|
||||||
|
"range_band": "Range Band {band}",
|
||||||
|
"range_abbreviation": "RB {range}"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -21,6 +21,10 @@
|
|||||||
"SetTn1OnTypeChange": "ND 1 à la sélection du type de rencontre",
|
"SetTn1OnTypeChange": "ND 1 à la sélection du type de rencontre",
|
||||||
"SetTn1OnTypeChangeHint": "Met le ND à 1 lorsqu'on modifie le type de rencontre (Intrigue, Duel, Escarmouche ou Bataille rangée)"
|
"SetTn1OnTypeChangeHint": "Met le ND à 1 lorsqu'on modifie le type de rencontre (Intrigue, Duel, Escarmouche ou Bataille rangée)"
|
||||||
},
|
},
|
||||||
|
"ShowAllStatusEffects": {
|
||||||
|
"Title": "Affiche tous les StatusEffects",
|
||||||
|
"Hint": "Si décoché (défaut), uniquement les conditions de L5R sont affichées."
|
||||||
|
},
|
||||||
"CustomTechniques": {
|
"CustomTechniques": {
|
||||||
"Title": "Utiliser les techniques personnalisées",
|
"Title": "Utiliser les techniques personnalisées",
|
||||||
"Hint": "Ajoute un type de technique 'Particularités' pour servir de fourre-tout."
|
"Hint": "Ajoute un type de technique 'Particularités' pour servir de fourre-tout."
|
||||||
@@ -79,7 +83,42 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"l5r5e": {
|
"l5r5e": {
|
||||||
"title": "Legend of the five Rings",
|
"title": "La Légende des Cinq Anneaux",
|
||||||
|
"conditions": {
|
||||||
|
"afflicted": "Tourmenté",
|
||||||
|
"bleeding": "En sang",
|
||||||
|
"burning": "En feu",
|
||||||
|
"centered": "Centered",
|
||||||
|
"compromised": "Compromis",
|
||||||
|
"dazed": "Hébété",
|
||||||
|
"disoriented": "Désorienté",
|
||||||
|
"dying": "Mourant",
|
||||||
|
"emboldened": "Emboldened",
|
||||||
|
"enraged": "Enragé",
|
||||||
|
"exhausted": "Épuisé",
|
||||||
|
"immobilized": "Immobilisé",
|
||||||
|
"illness_coughing_illness": "Maladie : Mauvaise toux",
|
||||||
|
"illness_fire_rash": "Maladie : Rougeurs",
|
||||||
|
"illness_gut_sickness": "Maladie : Mal des entrailles",
|
||||||
|
"illness_oozing_sore_disease": "Maladie : Bubons purulents",
|
||||||
|
"illness_unsteady_illness": "Maladie : Vertiges",
|
||||||
|
"incapacitated": "Hors de combat",
|
||||||
|
"intoxicated": "Ivre",
|
||||||
|
"possessed": "Possédé",
|
||||||
|
"prone": "A terre",
|
||||||
|
"silenced": "Aphone",
|
||||||
|
"unconscious": "Inconscient",
|
||||||
|
"lightly_wounded_fire": "Légèrement Blessé (Feu)",
|
||||||
|
"lightly_wounded_water": "Légèrement Blessé (Eau)",
|
||||||
|
"lightly_wounded_air": "Légèrement Blessé (Air)",
|
||||||
|
"lightly_wounded_earth": "Légèrement Blessé (Terre)",
|
||||||
|
"lightly_wounded_void": "Légèrement Blessé (Vide)",
|
||||||
|
"severely_wounded_fire": "Gravement blessé (Feu)",
|
||||||
|
"severely_wounded_water": "Gravement blessé (Eau)",
|
||||||
|
"severely_wounded_air": "Gravement blessé (Air)",
|
||||||
|
"severely_wounded_earth": "Gravement blessé (Terre)",
|
||||||
|
"severely_wounded_void": "Gravement blessé (Vide)"
|
||||||
|
},
|
||||||
"global": {
|
"global": {
|
||||||
"edge_translation_disclaimer": "",
|
"edge_translation_disclaimer": "",
|
||||||
"add": "Ajouter",
|
"add": "Ajouter",
|
||||||
@@ -664,65 +703,103 @@
|
|||||||
"ujik": "Ujik"
|
"ujik": "Ujik"
|
||||||
},
|
},
|
||||||
"demeanor": {
|
"demeanor": {
|
||||||
"adaptable": "Adaptable",
|
"adaptable": "Malléable",
|
||||||
"aggressive": "Agressive",
|
"aggressive": "Agressive",
|
||||||
|
"alluring": "Attirante",
|
||||||
"ambitious": "Ambitieuse",
|
"ambitious": "Ambitieuse",
|
||||||
"amiable": "Sympathique",
|
"amiable": "Aimable",
|
||||||
"analytical": "Réfléchie",
|
"analytical": "Analytique",
|
||||||
"angry": "Enervée",
|
"angry": "En colère",
|
||||||
"arrogant": "Arrogante",
|
"arrogant": "Arrogante",
|
||||||
"assertive": "Assurée",
|
"assertive": "Sûre de soi",
|
||||||
"beguiling": "Séduisante",
|
"beguiling": "Envoûtante",
|
||||||
"bitter": "Amère",
|
"bitter": "Amère",
|
||||||
"bold": "Audacieuse",
|
"bloodthirsty": "Sanguinaire",
|
||||||
|
"bold": "Courageuse",
|
||||||
"calculating": "Calculatrice",
|
"calculating": "Calculatrice",
|
||||||
"calm": "Calme",
|
"calm": "Calme",
|
||||||
"capricious": "Capricieuse",
|
"capricious": "Capricieuse",
|
||||||
"cautious": "Prudente",
|
"cautious": "Prudente",
|
||||||
"clever": "Astucieuse",
|
"clever": "Malicieuse",
|
||||||
"compassionate": "Compatissante",
|
"compassionate": "Compatissante",
|
||||||
"confused": "Confuse",
|
"confused": "Confuse",
|
||||||
"courageous": "Courageuse",
|
"courageous": "Courageuse",
|
||||||
"cowardly": "Lâche",
|
"cowardly": "Lâche",
|
||||||
|
"crestfallen": "Démoralisée",
|
||||||
"curious": "Curieuse",
|
"curious": "Curieuse",
|
||||||
|
"defensive": "Sur la défensive",
|
||||||
"dependable": "Fiable",
|
"dependable": "Fiable",
|
||||||
"detached": "Détachée",
|
"detached": "Détachée",
|
||||||
"disheartened": "Découragée",
|
"determined": "Déterminée",
|
||||||
|
"devoted": "Fervente",
|
||||||
|
"direct": "Directe",
|
||||||
|
"disheartened": "Abattue",
|
||||||
|
"dour": "Renfrognée",
|
||||||
|
"duplicitous": "Sournoise",
|
||||||
|
"effusive": "Communicative",
|
||||||
"enraged": "Enragée",
|
"enraged": "Enragée",
|
||||||
|
"fanatical": "Fanatique",
|
||||||
"feral": "Sauvage",
|
"feral": "Sauvage",
|
||||||
"fickle": "Inconstante",
|
"fervent": "Dévote",
|
||||||
|
"fickle": "Volatile",
|
||||||
"fierce": "Féroce",
|
"fierce": "Féroce",
|
||||||
"flighty": "Volage",
|
"flighty": "Inconstante",
|
||||||
"flippant": "Désinvolte",
|
"flippant": "Désinvolte",
|
||||||
"friendly": "Amicale",
|
"friendly": "Amicale",
|
||||||
"gruff": "Bourrue",
|
"gruff": "Bourrue",
|
||||||
|
"honorable": "Honorable",
|
||||||
|
"hubristic": "Prétentieuse",
|
||||||
"hungry": "Affamée",
|
"hungry": "Affamée",
|
||||||
"intense": "Intense",
|
"idealistic": "Idéaliste",
|
||||||
|
"imposing": "Impressionnante",
|
||||||
|
"inquisitive": "Inquisitrice",
|
||||||
|
"intense": "Excessive",
|
||||||
"intimidating": "Intimidante",
|
"intimidating": "Intimidante",
|
||||||
"irritable": "Irritable",
|
"irritable": "Colérique",
|
||||||
"loyal": "Fidèle",
|
"loyal": "Loyale",
|
||||||
"mischievous": "Malicieuse",
|
"methodical": "Méthodique",
|
||||||
|
"meticulous": "Méticuleuse",
|
||||||
|
"mischievous": "Taquine",
|
||||||
|
"moon_blessed": "Bénie par la Lune",
|
||||||
"morose": "Morose",
|
"morose": "Morose",
|
||||||
"nurturing": "Encourageante",
|
"near_feral": "Presque sauvage",
|
||||||
|
"nurturing": "Maternelle",
|
||||||
|
"obsessed": "Obsessionnelle",
|
||||||
"obstinate": "Obstinée",
|
"obstinate": "Obstinée",
|
||||||
"opportunistic": "Opportuniste",
|
"opportunistic": "Opportuniste",
|
||||||
|
"otherworldly": "Mystique",
|
||||||
|
"outgoing": "Agréable",
|
||||||
"passionate": "Passionnée",
|
"passionate": "Passionnée",
|
||||||
"playful": "Enjouée",
|
"patient": "Patiente",
|
||||||
|
"personable": "Avenante",
|
||||||
|
"playful": "Joueuse",
|
||||||
"power_hungry": "Avide de pouvoir",
|
"power_hungry": "Avide de pouvoir",
|
||||||
"proud": "Fière",
|
"proud": "Fière",
|
||||||
"restrained": "Restreinte",
|
"refined": "Raffinée",
|
||||||
"scheming": "Intrigante",
|
"restrained": "Modérée",
|
||||||
|
"reserved": "Réservée",
|
||||||
|
"righteous": "Intègre",
|
||||||
|
"scheming": "Fourbe",
|
||||||
"serene": "Sereine",
|
"serene": "Sereine",
|
||||||
"serious": "Sérieuse",
|
"serious": "Sérieuse",
|
||||||
"shrewd": "Astucieuse",
|
"shrewd": "Rusée",
|
||||||
|
"sinister": "Sinistre",
|
||||||
|
"sociable": "Affable",
|
||||||
|
"starved": "Famélique",
|
||||||
|
"stoic": "Stoïque",
|
||||||
"stubborn": "Têtue",
|
"stubborn": "Têtue",
|
||||||
"suspicious": "Soupçonneuse",
|
"suspicious": "Suspicieuse",
|
||||||
"teasing": "Taquine",
|
"teasing": "Moqueuse",
|
||||||
"territorial": "Territoriale",
|
"territorial": "Territoriale",
|
||||||
"uncertain": "Incertaine",
|
"uncertain": "Peu sûre de soi",
|
||||||
"unenthused": "Peu enthousiaste",
|
"unenthused": "Amorphe",
|
||||||
"vain": "Vaine",
|
"vain": "Orgueilleuse",
|
||||||
"wary": "Méfiante"
|
"vengeful": "Vengeuse",
|
||||||
|
"vindictive": "Vindicative",
|
||||||
|
"wary": "Méfiante",
|
||||||
|
"watchful": "Attentif",
|
||||||
|
"wrathful": "Furieuse",
|
||||||
|
"zealous": "Zélée"
|
||||||
},
|
},
|
||||||
"compendium": {
|
"compendium": {
|
||||||
"filter_rank": "Aff. Rangs",
|
"filter_rank": "Aff. Rangs",
|
||||||
@@ -760,6 +837,32 @@
|
|||||||
"the_scroll_or_the_blade": "Le Parchemin ou le Sabre",
|
"the_scroll_or_the_blade": "Le Parchemin ou le Sabre",
|
||||||
"legacies_of_war": "Les Flambeaux de la Guerre",
|
"legacies_of_war": "Les Flambeaux de la Guerre",
|
||||||
"children_of_the_five_winds": "Les Enfants des Cinq Vents"
|
"children_of_the_five_winds": "Les Enfants des Cinq Vents"
|
||||||
|
},
|
||||||
|
"tactical_grid": {
|
||||||
|
"settings": {
|
||||||
|
"title": "Plan Tactique",
|
||||||
|
"label": "Paramètres du Plan Tactique",
|
||||||
|
"hint": "Configure les Niveaux de Portée (GM uniquement), ainsi que les différentes couleurs et transparence (tous les utilisateurs).",
|
||||||
|
"cells": "cases",
|
||||||
|
"world": {
|
||||||
|
"enabled": "Activer le Plan Tactique",
|
||||||
|
"enabled_hint": "Active ou désactive le plan tactique pour tout le monde",
|
||||||
|
"start": "Début"
|
||||||
|
},
|
||||||
|
"client": {
|
||||||
|
"color": "Couleur",
|
||||||
|
"alpha": "Alpha"
|
||||||
|
},
|
||||||
|
"range": "Portée {index}",
|
||||||
|
"validate": {
|
||||||
|
"start-too-small": "Doit être supérieur à la Portée {previousRangeIndex} ({previousStart})",
|
||||||
|
"start-too-large": "Doit être inférieur à la Portée {nextRangeIndex} ({nextStart})"
|
||||||
|
},
|
||||||
|
"reset": "Réinitialiser les paramètres par défaut",
|
||||||
|
"submit": "Enregistrer"
|
||||||
|
},
|
||||||
|
"range_band": "Portée {band}",
|
||||||
|
"range_abbreviation": "NP {range}"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -21,6 +21,10 @@
|
|||||||
"SetTn1OnTypeChange": "Fissa la TN a 1 quando si cambia il conflitto",
|
"SetTn1OnTypeChange": "Fissa la TN a 1 quando si cambia il conflitto",
|
||||||
"SetTn1OnTypeChangeHint": "Fissa la TN a 1 quando si seleziona il tipo di conflitto (Intrigo, Duello, Schermaglia or Battaglia campale)"
|
"SetTn1OnTypeChangeHint": "Fissa la TN a 1 quando si seleziona il tipo di conflitto (Intrigo, Duello, Schermaglia or Battaglia campale)"
|
||||||
},
|
},
|
||||||
|
"ShowAllStatusEffects": {
|
||||||
|
"Title": "Show all StatusEffects",
|
||||||
|
"Hint": "If uncheck (default), only L5R conditions are shown."
|
||||||
|
},
|
||||||
"CustomTechniques": {
|
"CustomTechniques": {
|
||||||
"Title": "Usa tecniche custom",
|
"Title": "Usa tecniche custom",
|
||||||
"Hint": "Aggiunge il tipo 'Speciale' come termine generale."
|
"Hint": "Aggiunge il tipo 'Speciale' come termine generale."
|
||||||
@@ -80,6 +84,41 @@
|
|||||||
},
|
},
|
||||||
"l5r5e": {
|
"l5r5e": {
|
||||||
"title": "Legend of the five Rings",
|
"title": "Legend of the five Rings",
|
||||||
|
"conditions": {
|
||||||
|
"afflicted": "Afflicted",
|
||||||
|
"bleeding": "Bleeding",
|
||||||
|
"burning": "Burning",
|
||||||
|
"centered": "Centered",
|
||||||
|
"compromised": "Compromised",
|
||||||
|
"dazed": "Dazed",
|
||||||
|
"disoriented": "Disoriented",
|
||||||
|
"dying": "Dying",
|
||||||
|
"emboldened": "Emboldened",
|
||||||
|
"enraged": "Enraged",
|
||||||
|
"exhausted": "Exhausted",
|
||||||
|
"immobilized": "Immobilized",
|
||||||
|
"illness_coughing_illness": "Illness: Coughing Illness",
|
||||||
|
"illness_fire_rash": "Illness: Fire Rash",
|
||||||
|
"illness_gut_sickness": "Illness: Gut Sickness",
|
||||||
|
"illness_oozing_sore_disease": "Illness: Oozing Sore Disease",
|
||||||
|
"illness_unsteady_illness": "Illness: Unsteady Illness",
|
||||||
|
"incapacitated": "Incapacitated",
|
||||||
|
"intoxicated": "Intoxicated",
|
||||||
|
"possessed": "Possessed",
|
||||||
|
"prone": "Prone",
|
||||||
|
"silenced": "Silenced",
|
||||||
|
"unconscious": "Unconscious",
|
||||||
|
"lightly_wounded_fire": "Lightly Wounded (Fire)",
|
||||||
|
"lightly_wounded_water": "Lightly Wounded (Water)",
|
||||||
|
"lightly_wounded_air": "Lightly Wounded (Air)",
|
||||||
|
"lightly_wounded_earth": "Lightly Wounded (Earth)",
|
||||||
|
"lightly_wounded_void": "Lightly Wounded (Void)",
|
||||||
|
"severely_wounded_fire": "Severely Wounded (Fire)",
|
||||||
|
"severely_wounded_water": "Severely Wounded (Water)",
|
||||||
|
"severely_wounded_air": "Severely Wounded (Air)",
|
||||||
|
"severely_wounded_earth": "Severely Wounded (Earth)",
|
||||||
|
"severely_wounded_void": "Severely Wounded (Void)"
|
||||||
|
},
|
||||||
"global": {
|
"global": {
|
||||||
"edge_translation_disclaimer": "",
|
"edge_translation_disclaimer": "",
|
||||||
"add": "Aggiungi",
|
"add": "Aggiungi",
|
||||||
@@ -760,6 +799,32 @@
|
|||||||
"the_scroll_or_the_blade": "The Scroll or the Blade",
|
"the_scroll_or_the_blade": "The Scroll or the Blade",
|
||||||
"legacies_of_war": "Legacies of War",
|
"legacies_of_war": "Legacies of War",
|
||||||
"children_of_the_five_winds": "Children of the Five Winds"
|
"children_of_the_five_winds": "Children of the Five Winds"
|
||||||
|
},
|
||||||
|
"tactical_grid": {
|
||||||
|
"settings": {
|
||||||
|
"title": "Tactical Grid Settings",
|
||||||
|
"label": "Tactical Grid Settings",
|
||||||
|
"hint": "Configures tactical grid range band distances (GM only) and their visual appearance colors and transparency (all users).",
|
||||||
|
"cells": "spaces",
|
||||||
|
"world": {
|
||||||
|
"enabled": "Enable Tactical Grid",
|
||||||
|
"enabled_hint": "Enables or Disable tactical grid for everyone",
|
||||||
|
"start": "Start"
|
||||||
|
},
|
||||||
|
"client": {
|
||||||
|
"color": "Color",
|
||||||
|
"alpha": "Alpha"
|
||||||
|
},
|
||||||
|
"range": "Range {index}",
|
||||||
|
"validate": {
|
||||||
|
"start-too-small": "Must be greater than Range Band {previousRangeIndex} ({previousStart})",
|
||||||
|
"start-too-large": "Must be lower then Range Band {nextRangeIndex} ({nextStart})"
|
||||||
|
},
|
||||||
|
"reset": "Reset to Default",
|
||||||
|
"submit": "Save"
|
||||||
|
},
|
||||||
|
"range_band": "Range Band {band}",
|
||||||
|
"range_abbreviation": "RB {range}"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -109,7 +109,7 @@
|
|||||||
{"_id":"L5RCoreIte000111","name":"The horagai of Sacred Rains","permission":{"default":0},"type":"item","data":{"equipped":false,"quantity":1,"weight":"0","rarity":"10","zeni":"0","properties":[{"id":"L5RCorePro000010","name":"Resplendent"},{"id":"L5RCorePro000014","name":"Sacred"}],"description":"","source_reference":{"source":"celestial_realms","page":"96"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/item.svg","effects":[]}
|
{"_id":"L5RCoreIte000111","name":"The horagai of Sacred Rains","permission":{"default":0},"type":"item","data":{"equipped":false,"quantity":1,"weight":"0","rarity":"10","zeni":"0","properties":[{"id":"L5RCorePro000010","name":"Resplendent"},{"id":"L5RCorePro000014","name":"Sacred"}],"description":"","source_reference":{"source":"celestial_realms","page":"96"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/item.svg","effects":[]}
|
||||||
{"_id":"L5RCoreIte000112","name":"Daikoku's Mallet","permission":{"default":0},"type":"item","data":{"equipped":false,"quantity":1,"weight":"0","rarity":"10","zeni":"0","properties":[{"id":"L5RCorePro000015","name":"Durable"},{"id":"L5RCorePro000014","name":"Sacred"},{"id":"L5RCorePro000016","name":"Subtle"}],"description":"","source_reference":{"source":"celestial_realms","page":"96"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/item.svg","effects":[]}
|
{"_id":"L5RCoreIte000112","name":"Daikoku's Mallet","permission":{"default":0},"type":"item","data":{"equipped":false,"quantity":1,"weight":"0","rarity":"10","zeni":"0","properties":[{"id":"L5RCorePro000015","name":"Durable"},{"id":"L5RCorePro000014","name":"Sacred"},{"id":"L5RCorePro000016","name":"Subtle"}],"description":"","source_reference":{"source":"celestial_realms","page":"96"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/item.svg","effects":[]}
|
||||||
{"_id":"L5RCoreIte000113","name":"Candles of the Moth","permission":{"default":0},"type":"item","data":{"equipped":false,"quantity":1,"weight":"0","rarity":"9","zeni":"10 Koku","properties":[{"id":"L5RCorePro000002","name":"Ceremonial"},{"id":"L5RCorePro000014","name":"Sacred"},{"id":"L5RCorePro000016","name":"Subtle"}],"description":"","source_reference":{"source":"celestial_realms","page":"96"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/item.svg","effects":[]}
|
{"_id":"L5RCoreIte000113","name":"Candles of the Moth","permission":{"default":0},"type":"item","data":{"equipped":false,"quantity":1,"weight":"0","rarity":"9","zeni":"10 Koku","properties":[{"id":"L5RCorePro000002","name":"Ceremonial"},{"id":"L5RCorePro000014","name":"Sacred"},{"id":"L5RCorePro000016","name":"Subtle"}],"description":"","source_reference":{"source":"celestial_realms","page":"96"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/item.svg","effects":[]}
|
||||||
{"_id":"L5RCoreIte000114","name":"Astrolabe","permission":{"default":0},"type":"item","data":{"equipped":false,"quantity":1,"weight":"0","rarity":"8","zeni":"1 Koku","properties":[],"description":"","source_reference":{"source":"children_of_the_five_winds","page":"102"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/item.svg","effects":[]}
|
{"_id":"L5RCoreIte000114","name":"Astrolabe (Unicorn)","permission":{"default":0},"type":"item","data":{"equipped":false,"quantity":1,"weight":"0","rarity":"8","zeni":"1 Koku","properties":[],"description":"","source_reference":{"source":"children_of_the_five_winds","page":"102"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/item.svg","effects":[]}
|
||||||
{"_id":"L5RCoreIte000115","name":"Horo (Arrow Cloak)","permission":{"default":0},"type":"item","data":{"equipped":false,"quantity":1,"weight":"0","rarity":"6","zeni":"5 Koku","properties":[],"description":"","source_reference":{"source":"children_of_the_five_winds","page":"102"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/item.svg","effects":[]}
|
{"_id":"L5RCoreIte000115","name":"Horo (Arrow Cloak)","permission":{"default":0},"type":"item","data":{"equipped":false,"quantity":1,"weight":"0","rarity":"6","zeni":"5 Koku","properties":[],"description":"","source_reference":{"source":"children_of_the_five_winds","page":"102"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/item.svg","effects":[]}
|
||||||
{"_id":"L5RCoreIte000116","name":"Lantern (Personal)","permission":{"default":0},"type":"item","data":{"equipped":false,"quantity":1,"weight":"0","rarity":"2","zeni":"1 Bu","properties":[],"description":"","source_reference":{"source":"children_of_the_five_winds","page":"102"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/item.svg","effects":[]}
|
{"_id":"L5RCoreIte000116","name":"Lantern (Personal)","permission":{"default":0},"type":"item","data":{"equipped":false,"quantity":1,"weight":"0","rarity":"2","zeni":"1 Bu","properties":[],"description":"","source_reference":{"source":"children_of_the_five_winds","page":"102"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/item.svg","effects":[]}
|
||||||
{"_id":"L5RCoreIte000117","name":"Mineral-Oil Lamp","permission":{"default":0},"type":"item","data":{"equipped":false,"quantity":1,"weight":"0","rarity":"8","zeni":"6 Koku","properties":[],"description":"","source_reference":{"source":"children_of_the_five_winds","page":"102"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/item.svg","effects":[]}
|
{"_id":"L5RCoreIte000117","name":"Mineral-Oil Lamp","permission":{"default":0},"type":"item","data":{"equipped":false,"quantity":1,"weight":"0","rarity":"8","zeni":"6 Koku","properties":[],"description":"","source_reference":{"source":"children_of_the_five_winds","page":"102"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/item.svg","effects":[]}
|
||||||
|
|||||||
@@ -1,24 +1,24 @@
|
|||||||
{"_id":"L5RCoreCon000001","name":"Afflicted","content":"<blockquote>Core Rulebook p.271</blockquote>","img":"icons/svg/sun.svg","folder":null,"sort":100001,"permission":{"default":0},"flags":{}}
|
{"_id":"L5RCoreCon000001","name":"Afflicted","content":"<blockquote>Core Rulebook p.271</blockquote>","img":"systems/l5r5e/assets/icons/conditions/afflicted.webp","folder":null,"sort":100001,"permission":{"default":0},"flags":{}}
|
||||||
{"_id":"L5RCoreCon000002","name":"Bleeding","content":"<blockquote>Core Rulebook p.271</blockquote>","img":"icons/svg/blood.svg","folder":null,"sort":100001,"permission":{"default":0},"flags":{}}
|
{"_id":"L5RCoreCon000002","name":"Bleeding","content":"<blockquote>Core Rulebook p.271</blockquote>","img":"systems/l5r5e/assets/icons/conditions/bleeding.webp","folder":null,"sort":100001,"permission":{"default":0},"flags":{}}
|
||||||
{"_id":"L5RCoreCon000003","name":"Burning","content":"<blockquote>Core Rulebook p.272</blockquote>","img":"icons/svg/fire.svg","folder":null,"sort":100001,"permission":{"default":0},"flags":{}}
|
{"_id":"L5RCoreCon000003","name":"Burning","content":"<blockquote>Core Rulebook p.272</blockquote>","img":"systems/l5r5e/assets/icons/conditions/burning.webp","folder":null,"sort":100001,"permission":{"default":0},"flags":{}}
|
||||||
{"_id":"L5RCoreCon000004","name":"Compromised","content":"<blockquote>Core Rulebook p.272</blockquote>","img":"icons/svg/terror.svg","folder":null,"sort":100001,"permission":{"default":0},"flags":{}}
|
{"_id":"L5RCoreCon000004","name":"Compromised","content":"<blockquote>Core Rulebook p.272</blockquote>","img":"systems/l5r5e/assets/icons/conditions/compromised.webp","folder":null,"sort":100001,"permission":{"default":0},"flags":{}}
|
||||||
{"_id":"L5RCoreCon000005","name":"Dazed","content":"<blockquote>Core Rulebook p.272</blockquote>","img":"icons/svg/eye.svg","folder":null,"sort":100001,"permission":{"default":0},"flags":{}}
|
{"_id":"L5RCoreCon000005","name":"Dazed","content":"<blockquote>Core Rulebook p.272</blockquote>","img":"systems/l5r5e/assets/icons/conditions/dazed.webp","folder":null,"sort":100001,"permission":{"default":0},"flags":{}}
|
||||||
{"_id":"L5RCoreCon000006","name":"Disoriented","content":"<blockquote>Core Rulebook p.272</blockquote>","img":"icons/svg/daze.svg","folder":null,"sort":100001,"permission":{"default":0},"flags":{}}
|
{"_id":"L5RCoreCon000006","name":"Disoriented","content":"<blockquote>Core Rulebook p.272</blockquote>","img":"systems/l5r5e/assets/icons/conditions/disoriented.webp","folder":null,"sort":100001,"permission":{"default":0},"flags":{}}
|
||||||
{"_id":"L5RCoreCon000007","name":"Dying [X Rounds]","content":"<blockquote>Core Rulebook p.272</blockquote>","img":"icons/svg/skull.svg","folder":null,"sort":100001,"permission":{"default":0},"flags":{}}
|
{"_id":"L5RCoreCon000007","name":"Dying [X Rounds]","content":"<blockquote>Core Rulebook p.272</blockquote>","img":"systems/l5r5e/assets/icons/conditions/dying_1.webp","folder":null,"sort":100001,"permission":{"default":0},"flags":{}}
|
||||||
{"_id":"L5RCoreCon000008","name":"Enraged","content":"<blockquote>Core Rulebook p.272</blockquote>","img":"icons/svg/lightning.svg","folder":null,"sort":100001,"permission":{"default":0},"flags":{}}
|
{"_id":"L5RCoreCon000008","name":"Enraged","content":"<blockquote>Core Rulebook p.272</blockquote>","img":"systems/l5r5e/assets/icons/conditions/enraged.webp","folder":null,"sort":100001,"permission":{"default":0},"flags":{}}
|
||||||
{"_id":"L5RCoreCon000009","name":"Exhausted","content":"<blockquote>Core Rulebook p.272</blockquote>","img":"icons/svg/sleep.svg","folder":null,"sort":100001,"permission":{"default":0},"flags":{}}
|
{"_id":"L5RCoreCon000009","name":"Exhausted","content":"<blockquote>Core Rulebook p.272</blockquote>","img":"systems/l5r5e/assets/icons/conditions/exhausted.webp","folder":null,"sort":100001,"permission":{"default":0},"flags":{}}
|
||||||
{"_id":"L5RCoreCon000010","name":"Immobilized","content":"<blockquote>Core Rulebook p.272</blockquote>","img":"icons/svg/net.svg","folder":null,"sort":100001,"permission":{"default":0},"flags":{}}
|
{"_id":"L5RCoreCon000010","name":"Immobilized","content":"<blockquote>Core Rulebook p.272</blockquote>","img":"systems/l5r5e/assets/icons/conditions/immobilized.webp","folder":null,"sort":100001,"permission":{"default":0},"flags":{}}
|
||||||
{"_id":"L5RCoreCon000011","name":"Incapacitated","content":"<blockquote>Core Rulebook p.272</blockquote>","img":"icons/svg/downgrade.svg","folder":null,"sort":100001,"permission":{"default":0},"flags":{}}
|
{"_id":"L5RCoreCon000011","name":"Incapacitated","content":"<blockquote>Core Rulebook p.272</blockquote>","img":"systems/l5r5e/assets/icons/conditions/incapacitated.webp","folder":null,"sort":100001,"permission":{"default":0},"flags":{}}
|
||||||
{"_id":"L5RCoreCon000012","name":"Intoxicated","content":"<blockquote>Core Rulebook p.273</blockquote>","img":"icons/svg/poison.svg","folder":null,"sort":100001,"permission":{"default":0},"flags":{}}
|
{"_id":"L5RCoreCon000012","name":"Intoxicated","content":"<blockquote>Core Rulebook p.273</blockquote>","img":"systems/l5r5e/assets/icons/conditions/intoxicated.webp","folder":null,"sort":100001,"permission":{"default":0},"flags":{}}
|
||||||
{"_id":"L5RCoreCon000013","name":"Prone","content":"<blockquote>Core Rulebook p.273</blockquote>","img":"icons/svg/falling.svg","folder":null,"sort":100001,"permission":{"default":0},"flags":{}}
|
{"_id":"L5RCoreCon000013","name":"Prone","content":"<blockquote>Core Rulebook p.273</blockquote>","img":"systems/l5r5e/assets/icons/conditions/prone.webp","folder":null,"sort":100001,"permission":{"default":0},"flags":{}}
|
||||||
{"_id":"L5RCoreCon000014","name":"Silenced","content":"<blockquote>Core Rulebook p.273</blockquote>","img":"icons/svg/silenced.svg","folder":null,"sort":100001,"permission":{"default":0},"flags":{}}
|
{"_id":"L5RCoreCon000014","name":"Silenced","content":"<blockquote>Core Rulebook p.273</blockquote>","img":"systems/l5r5e/assets/icons/conditions/silenced.webp","folder":null,"sort":100001,"permission":{"default":0},"flags":{}}
|
||||||
{"_id":"L5RCoreCon000015","name":"Unconscious","content":"<blockquote>Core Rulebook p.273</blockquote>","img":"icons/svg/unconscious.svg","folder":null,"sort":100001,"permission":{"default":0},"flags":{}}
|
{"_id":"L5RCoreCon000015","name":"Unconscious","content":"<blockquote>Core Rulebook p.273</blockquote>","img":"systems/l5r5e/assets/icons/conditions/unconscious.webp","folder":null,"sort":100001,"permission":{"default":0},"flags":{}}
|
||||||
{"_id":"L5RCoreCon000016","name":"Wounded","content":"<blockquote>Core Rulebook p.273</blockquote>","img":"icons/svg/degen.svg","folder":null,"sort":100001,"permission":{"default":0},"flags":{}}
|
{"_id":"L5RCoreCon000016","name":"Wounded","content":"<blockquote>Core Rulebook p.273</blockquote>","img":"systems/l5r5e/assets/icons/conditions/heavily_wounded.webp","folder":null,"sort":100001,"permission":{"default":0},"flags":{}}
|
||||||
{"_id":"L5RCoreCon000017","name":"Illness: Oozing Sore Disease","content":"<blockquote>Writ of the Wild p.140</blockquote>","img":"icons/svg/eye.svg","folder":null,"sort":100001,"permission":{"default":0},"flags":{}}
|
{"_id":"L5RCoreCon000017","name":"Illness: Oozing Sore Disease","content":"<blockquote>Writ of the Wild p.140</blockquote>","img":"systems/l5r5e/assets/icons/conditions/illness_oozing_sore_disease.webp","folder":null,"sort":100001,"permission":{"default":0},"flags":{}}
|
||||||
{"_id":"L5RCoreCon000018","name":"Illness: Gut Sickness","content":"<blockquote>Writ of the Wild p.141</blockquote>","img":"icons/svg/poison.svg","folder":null,"sort":100001,"permission":{"default":0},"flags":{}}
|
{"_id":"L5RCoreCon000018","name":"Illness: Gut Sickness","content":"<blockquote>Writ of the Wild p.141</blockquote>","img":"systems/l5r5e/assets/icons/conditions/illness_gut_sickness.webp","folder":null,"sort":100001,"permission":{"default":0},"flags":{}}
|
||||||
{"_id":"L5RCoreCon000019","name":"Illness: Coughing Illness","content":"<blockquote>Writ of the Wild p.141</blockquote>","img":"icons/svg/poison.svg","folder":null,"sort":100001,"permission":{"default":0},"flags":{}}
|
{"_id":"L5RCoreCon000019","name":"Illness: Coughing Illness","content":"<blockquote>Writ of the Wild p.141</blockquote>","img":"systems/l5r5e/assets/icons/conditions/illness_coughing_illness.webp","folder":null,"sort":100001,"permission":{"default":0},"flags":{}}
|
||||||
{"_id":"L5RCoreCon000020","name":"Illness: Unsteady Illness","content":"<blockquote>Writ of the Wild p.141</blockquote>","img":"icons/svg/daze.svg","folder":null,"sort":100001,"permission":{"default":0},"flags":{}}
|
{"_id":"L5RCoreCon000020","name":"Illness: Unsteady Illness","content":"<blockquote>Writ of the Wild p.141</blockquote>","img":"systems/l5r5e/assets/icons/conditions/illness_unsteady_illness.webp","folder":null,"sort":100001,"permission":{"default":0},"flags":{}}
|
||||||
{"_id":"L5RCoreCon000021","name":"Illness: Fire Rash","content":"<blockquote>Writ of the Wild p.141</blockquote>","img":"icons/svg/fire.svg","folder":null,"sort":100001,"permission":{"default":0},"flags":{}}
|
{"_id":"L5RCoreCon000021","name":"Illness: Fire Rash","content":"<blockquote>Writ of the Wild p.141</blockquote>","img":"systems/l5r5e/assets/icons/conditions/illness_fire_rash.webp","folder":null,"sort":100001,"permission":{"default":0},"flags":{}}
|
||||||
{"_id":"L5RCoreCon000022","name":"Centered","content":"<blockquote>Children of the Five Winds p.133</blockquote>","img":"systems/l5r5e/assets/icons/social.svg","folder":null,"sort":100001,"permission":{"default":0},"flags":{}}
|
{"_id":"L5RCoreCon000022","name":"Centered","content":"<blockquote>Children of the Five Winds p.133</blockquote>","img":"systems/l5r5e/assets/icons/conditions/centered.webp","folder":null,"sort":100001,"permission":{"default":0},"flags":{}}
|
||||||
{"_id":"L5RCoreCon000023","name":"Emboldened","content":"<blockquote>Children of the Five Winds p.133</blockquote>","img":"systems/l5r5e/assets/icons/social.svg","folder":null,"sort":100001,"permission":{"default":0},"flags":{}}
|
{"_id":"L5RCoreCon000023","name":"Emboldened","content":"<blockquote>Children of the Five Winds p.133</blockquote>","img":"systems/l5r5e/assets/icons/conditions/emboldened.webp","folder":null,"sort":100001,"permission":{"default":0},"flags":{}}
|
||||||
{"_id":"L5RCoreCon000024","name":"Possessed","content":"<blockquote>Children of the Five Winds p.133</blockquote>","img":"icons/svg/terror.svg","folder":null,"sort":100001,"permission":{"default":0},"flags":{}}
|
{"_id":"L5RCoreCon000024","name":"Possessed","content":"<blockquote>Children of the Five Winds p.133</blockquote>","img":"systems/l5r5e/assets/icons/conditions/possesed.webp","folder":null,"sort":100001,"permission":{"default":0},"flags":{}}
|
||||||
|
|||||||
@@ -125,6 +125,22 @@ export class ActorL5r5e extends Actor {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** @inheritDoc */
|
||||||
|
async _preUpdate(changes, options, user) {
|
||||||
|
if (this.isCharacterType) {
|
||||||
|
// apply compromised condition if strife goes beyond max
|
||||||
|
const strife = changes.system?.strife?.value ?? this.system.strife.value;
|
||||||
|
const isCompromised = strife > this.system.composure;
|
||||||
|
// apply incapacitated if fatigue goes beyond max endurance
|
||||||
|
const fatigue = changes.system?.fatigue?.value ?? this.system.fatigue.value;
|
||||||
|
const isIncapacitated = fatigue > this.system.endurance;
|
||||||
|
await Promise.all([
|
||||||
|
this.toggleStatusEffect('compromised', {active: isCompromised}),
|
||||||
|
this.toggleStatusEffect('incapacitated', {active: isIncapacitated}),
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/** @override */
|
/** @override */
|
||||||
prepareData() {
|
prepareData() {
|
||||||
super.prepareData();
|
super.prepareData();
|
||||||
@@ -137,13 +153,16 @@ export class ActorL5r5e extends Actor {
|
|||||||
ActorL5r5e.computeDerivedAttributes(system);
|
ActorL5r5e.computeDerivedAttributes(system);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const isAfflicted = this.statuses.has("afflicted");
|
||||||
|
const isCompromised = this.statuses.has("compromised");
|
||||||
|
|
||||||
// Attributes bars
|
// Attributes bars
|
||||||
system.fatigue.max = system.endurance;
|
system.fatigue.max = system.endurance;
|
||||||
system.strife.max = system.composure;
|
system.strife.max = system.composure;
|
||||||
system.void_points.max = system.rings.void;
|
system.void_points.max = system.rings.void;
|
||||||
|
|
||||||
// if compromise, vigilance = 1
|
// if compromised or afflicted, vigilance = 1
|
||||||
system.is_compromised = system.strife.value > system.strife.max;
|
system.is_afflicted_or_compromised = isAfflicted || isCompromised;
|
||||||
|
|
||||||
// Make sure void points are never greater than max
|
// Make sure void points are never greater than max
|
||||||
if (system.void_points.value > system.void_points.max) {
|
if (system.void_points.value > system.void_points.max) {
|
||||||
@@ -188,6 +207,21 @@ export class ActorL5r5e extends Actor {
|
|||||||
return this._updateActorFromAdvancement(item, false);
|
return this._updateActorFromAdvancement(item, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @type {import("./types").Condition}
|
||||||
|
*
|
||||||
|
* Remove conditions by known string ids
|
||||||
|
* @param conditions {Set<Condition>}
|
||||||
|
* @returns {Promise<void>}
|
||||||
|
*/
|
||||||
|
async removeConditions(conditions) {
|
||||||
|
const effectsToRemove = this.statuses.intersection(conditions);
|
||||||
|
const idsToRemove = this.effects.contents
|
||||||
|
.filter(effect => effect.statuses.isSubsetOf(effectsToRemove))
|
||||||
|
.map(effect => effect.id);
|
||||||
|
await this.deleteEmbeddedDocuments("ActiveEffect", idsToRemove);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Alter Actor skill/ring from a advancement
|
* Alter Actor skill/ring from a advancement
|
||||||
* @param {Item} item
|
* @param {Item} item
|
||||||
|
|||||||
@@ -321,6 +321,73 @@ export class BaseCharacterSheetL5r5e extends BaseSheetL5r5e {
|
|||||||
|
|
||||||
// Fatigue/Strife +/-
|
// Fatigue/Strife +/-
|
||||||
html.find(".addsub-control").on("click", this._modifyFatigueOrStrife.bind(this));
|
html.find(".addsub-control").on("click", this._modifyFatigueOrStrife.bind(this));
|
||||||
|
|
||||||
|
// Effect remove/display
|
||||||
|
html.find(".effect-delete").on("click", this._removeEffectId.bind(this));
|
||||||
|
html.find(".effect-name").on("click", this._openEffectJournal.bind(this));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Remove an effect
|
||||||
|
* @param {Event} event
|
||||||
|
* @private
|
||||||
|
*/
|
||||||
|
_removeEffectId(event) {
|
||||||
|
event.preventDefault();
|
||||||
|
event.stopPropagation();
|
||||||
|
|
||||||
|
const effectId = $(event.currentTarget).data("effect-id");
|
||||||
|
if (!effectId) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
const tmpItem = this.actor.effects.get(effectId);
|
||||||
|
if (!tmpItem) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
const callback = async () => {
|
||||||
|
return this.actor.deleteEmbeddedDocuments("ActiveEffect", [effectId]);
|
||||||
|
};
|
||||||
|
|
||||||
|
// Holing Ctrl = without confirm
|
||||||
|
if (event.ctrlKey) {
|
||||||
|
return callback();
|
||||||
|
}
|
||||||
|
|
||||||
|
game.l5r5e.HelpersL5r5e.confirmDeleteDialog(
|
||||||
|
game.i18n.format("l5r5e.global.delete_confirm", { name: tmpItem.name }),
|
||||||
|
callback
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Open the core linked journal effect if exist
|
||||||
|
* @param {Event} event
|
||||||
|
* @private
|
||||||
|
*/
|
||||||
|
async _openEffectJournal(event) {
|
||||||
|
event.preventDefault();
|
||||||
|
event.stopPropagation();
|
||||||
|
|
||||||
|
const effectId = $(event.currentTarget).data("effect-id");
|
||||||
|
if (!effectId) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
const effect = this.actor.effects.get(effectId);
|
||||||
|
if (!effect?.system?.id && !effect?.system?.uuid) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
const journal = await game.l5r5e.HelpersL5r5e.getObjectGameOrPack({
|
||||||
|
id: effect.system.id,
|
||||||
|
uuid: effect.system.uuid,
|
||||||
|
type: "JournalEntry",
|
||||||
|
});
|
||||||
|
if (journal) {
|
||||||
|
journal.sheet.render(true);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -627,6 +694,12 @@ export class BaseCharacterSheetL5r5e extends BaseSheetL5r5e {
|
|||||||
_openDicePickerForSkill(event) {
|
_openDicePickerForSkill(event) {
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
event.stopPropagation();
|
event.stopPropagation();
|
||||||
|
|
||||||
|
// In Fvtt v13+ "Enter" trigger that mouse event, we ignore that below
|
||||||
|
if (event.clientX === 0 && event.clientY === 0) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
const li = $(event.currentTarget);
|
const li = $(event.currentTarget);
|
||||||
const weapon = this._getWeaponInfos(li.data("weapon-id") || null);
|
const weapon = this._getWeaponInfos(li.data("weapon-id") || null);
|
||||||
const isInitiative = li.data("initiative") || false;
|
const isInitiative = li.data("initiative") || false;
|
||||||
|
|||||||
@@ -62,7 +62,7 @@ export class CombatL5r5e extends Combat {
|
|||||||
// If the character was unprepared (such as when surprised), their base initiative value is their vigilance attribute.
|
// If the character was unprepared (such as when surprised), their base initiative value is their vigilance attribute.
|
||||||
// Minion NPCs can generate initiative value without a check, using their focus or vigilance attribute
|
// Minion NPCs can generate initiative value without a check, using their focus or vigilance attribute
|
||||||
let initiative =
|
let initiative =
|
||||||
isPrepared === "true" ? actorSystem.focus : actorSystem.is_compromised ? 1 : actorSystem.vigilance;
|
isPrepared === "true" ? actorSystem.focus : actorSystem.is_afflicted_or_compromised ? 1 : actorSystem.vigilance;
|
||||||
|
|
||||||
// Roll only for PC and Adversary
|
// Roll only for PC and Adversary
|
||||||
if (isPc || combatant.actor.isAdversary) {
|
if (isPc || combatant.actor.isAdversary) {
|
||||||
|
|||||||
@@ -14,6 +14,173 @@ export const L5R5E = {
|
|||||||
skillCostMultiplier: 2,
|
skillCostMultiplier: 2,
|
||||||
techniqueCost: 3,
|
techniqueCost: 3,
|
||||||
},
|
},
|
||||||
|
// For rings wound to be aligned, add them first
|
||||||
|
conditions: [{
|
||||||
|
id: "lightly_wounded_fire",
|
||||||
|
name: "l5r5e.conditions.lightly_wounded_fire",
|
||||||
|
img: "systems/l5r5e/assets/icons/conditions/lightly_wounded_fire.webp",
|
||||||
|
system: { id: "L5RCoreCon000016" }
|
||||||
|
},{
|
||||||
|
id: "lightly_wounded_water",
|
||||||
|
name: "l5r5e.conditions.lightly_wounded_water",
|
||||||
|
img: "systems/l5r5e/assets/icons/conditions/lightly_wounded_water.webp",
|
||||||
|
system: { id: "L5RCoreCon000016" }
|
||||||
|
},{
|
||||||
|
id: "lightly_wounded_air",
|
||||||
|
name: "l5r5e.conditions.lightly_wounded_air",
|
||||||
|
img: "systems/l5r5e/assets/icons/conditions/lightly_wounded_air.webp",
|
||||||
|
system: { id: "L5RCoreCon000016" }
|
||||||
|
},{
|
||||||
|
id: "lightly_wounded_earth",
|
||||||
|
name: "l5r5e.conditions.lightly_wounded_earth",
|
||||||
|
img: "systems/l5r5e/assets/icons/conditions/lightly_wounded_earth.webp",
|
||||||
|
system: { id: "L5RCoreCon000016" }
|
||||||
|
},{
|
||||||
|
id: "lightly_wounded_void",
|
||||||
|
name: "l5r5e.conditions.lightly_wounded_void",
|
||||||
|
img: "systems/l5r5e/assets/icons/conditions/lightly_wounded_void.webp",
|
||||||
|
system: { id: "L5RCoreCon000016" }
|
||||||
|
},{
|
||||||
|
id: "severely_wounded_fire",
|
||||||
|
name: "l5r5e.conditions.severely_wounded_fire",
|
||||||
|
img: "systems/l5r5e/assets/icons/conditions/heavily_wounded_fire.webp",
|
||||||
|
system: { id: "L5RCoreCon000016" }
|
||||||
|
},{
|
||||||
|
id: "severely_wounded_water",
|
||||||
|
name: "l5r5e.conditions.severely_wounded_water",
|
||||||
|
img: "systems/l5r5e/assets/icons/conditions/heavily_wounded_water.webp",
|
||||||
|
system: { id: "L5RCoreCon000016" }
|
||||||
|
},{
|
||||||
|
id: "severely_wounded_air",
|
||||||
|
name: "l5r5e.conditions.severely_wounded_air",
|
||||||
|
img: "systems/l5r5e/assets/icons/conditions/heavily_wounded_air.webp",
|
||||||
|
system: { id: "L5RCoreCon000016" }
|
||||||
|
},{
|
||||||
|
id: "severely_wounded_earth",
|
||||||
|
name: "l5r5e.conditions.severely_wounded_earth",
|
||||||
|
img: "systems/l5r5e/assets/icons/conditions/heavily_wounded_earth.webp",
|
||||||
|
system: { id: "L5RCoreCon000016" }
|
||||||
|
},{
|
||||||
|
id: "severely_wounded_void",
|
||||||
|
name: "l5r5e.conditions.severely_wounded_void",
|
||||||
|
img: "systems/l5r5e/assets/icons/conditions/heavily_wounded_void.webp",
|
||||||
|
system: { id: "L5RCoreCon000016" }
|
||||||
|
},{
|
||||||
|
id: "afflicted",
|
||||||
|
name: "l5r5e.conditions.afflicted",
|
||||||
|
img: "systems/l5r5e/assets/icons/conditions/afflicted.webp",
|
||||||
|
system: { id: "L5RCoreCon000001" }
|
||||||
|
},{
|
||||||
|
id: "bleeding",
|
||||||
|
name: "l5r5e.conditions.bleeding",
|
||||||
|
img: "systems/l5r5e/assets/icons/conditions/bleeding.webp",
|
||||||
|
system: { id: "L5RCoreCon000002" }
|
||||||
|
},{
|
||||||
|
id: "burning",
|
||||||
|
name: "l5r5e.conditions.burning",
|
||||||
|
img: "systems/l5r5e/assets/icons/conditions/burning.webp",
|
||||||
|
system: { id: "L5RCoreCon000003" }
|
||||||
|
},{
|
||||||
|
id: "centered",
|
||||||
|
name: "l5r5e.conditions.centered",
|
||||||
|
img: "systems/l5r5e/assets/icons/conditions/centered.webp",
|
||||||
|
system: { id: "L5RCoreCon000022" }
|
||||||
|
},{
|
||||||
|
id: "compromised",
|
||||||
|
name: "l5r5e.conditions.compromised",
|
||||||
|
img: "systems/l5r5e/assets/icons/conditions/compromised.webp",
|
||||||
|
system: { id: "L5RCoreCon000004" }
|
||||||
|
},{
|
||||||
|
id: "dazed",
|
||||||
|
name: "l5r5e.conditions.dazed",
|
||||||
|
img: "systems/l5r5e/assets/icons/conditions/dazed.webp",
|
||||||
|
system: { id: "L5RCoreCon000005" }
|
||||||
|
},{
|
||||||
|
id: "disoriented",
|
||||||
|
name: "l5r5e.conditions.disoriented",
|
||||||
|
img: "systems/l5r5e/assets/icons/conditions/disoriented.webp",
|
||||||
|
system: { id: "L5RCoreCon000006" }
|
||||||
|
},{
|
||||||
|
id: "dying",
|
||||||
|
name: "l5r5e.conditions.dying",
|
||||||
|
img: "systems/l5r5e/assets/icons/conditions/dying_1.webp",
|
||||||
|
system: { id: "L5RCoreCon000007" }
|
||||||
|
},{
|
||||||
|
id: "emboldened",
|
||||||
|
name: "l5r5e.conditions.emboldened",
|
||||||
|
img: "systems/l5r5e/assets/icons/conditions/emboldened.webp",
|
||||||
|
system: { id: "L5RCoreCon000023" }
|
||||||
|
},{
|
||||||
|
id: "enraged",
|
||||||
|
name: "l5r5e.conditions.enraged",
|
||||||
|
img: "systems/l5r5e/assets/icons/conditions/enraged.webp",
|
||||||
|
system: { id: "L5RCoreCon000008" }
|
||||||
|
},{
|
||||||
|
id: "exhausted",
|
||||||
|
name: "l5r5e.conditions.exhausted",
|
||||||
|
img: "systems/l5r5e/assets/icons/conditions/exhausted.webp",
|
||||||
|
system: { id: "L5RCoreCon000009" }
|
||||||
|
},{
|
||||||
|
id: "illness_coughing_illness",
|
||||||
|
name: "l5r5e.conditions.illness_coughing_illness",
|
||||||
|
img: "systems/l5r5e/assets/icons/conditions/illness_coughing_illness.webp",
|
||||||
|
system: { id: "L5RCoreCon000019" }
|
||||||
|
},{
|
||||||
|
id: "illness_fire_rash",
|
||||||
|
name: "l5r5e.conditions.illness_fire_rash",
|
||||||
|
img: "systems/l5r5e/assets/icons/conditions/illness_fire_rash.webp",
|
||||||
|
system: { id: "L5RCoreCon000021" }
|
||||||
|
},{
|
||||||
|
id: "illness_gut_sickness",
|
||||||
|
name: "l5r5e.conditions.illness_gut_sickness",
|
||||||
|
img: "systems/l5r5e/assets/icons/conditions/illness_gut_sickness.webp",
|
||||||
|
system: { id: "L5RCoreCon000018" }
|
||||||
|
},{
|
||||||
|
id: "illness_oozing_sore_disease",
|
||||||
|
name: "l5r5e.conditions.illness_oozing_sore_disease",
|
||||||
|
img: "systems/l5r5e/assets/icons/conditions/illness_oozing_sore_disease.webp",
|
||||||
|
system: { id: "L5RCoreCon000017" }
|
||||||
|
},{
|
||||||
|
id: "illness_unsteady_illness",
|
||||||
|
name: "l5r5e.conditions.illness_unsteady_illness",
|
||||||
|
img: "systems/l5r5e/assets/icons/conditions/illness_unsteady_illness.webp",
|
||||||
|
system: { id: "L5RCoreCon000020" }
|
||||||
|
},{
|
||||||
|
id: "immobilized",
|
||||||
|
name: "l5r5e.conditions.immobilized",
|
||||||
|
img: "systems/l5r5e/assets/icons/conditions/immobilized.webp",
|
||||||
|
system: { id: "L5RCoreCon000010" }
|
||||||
|
},{
|
||||||
|
id: "incapacitated",
|
||||||
|
name: "l5r5e.conditions.incapacitated",
|
||||||
|
img: "systems/l5r5e/assets/icons/conditions/incapacitated.webp",
|
||||||
|
system: { id: "L5RCoreCon000011" }
|
||||||
|
},{
|
||||||
|
id: "intoxicated",
|
||||||
|
name: "l5r5e.conditions.intoxicated",
|
||||||
|
img: "systems/l5r5e/assets/icons/conditions/intoxicated.webp",
|
||||||
|
system: { id: "L5RCoreCon000012" }
|
||||||
|
},{
|
||||||
|
id: "possessed",
|
||||||
|
name: "l5r5e.conditions.possessed",
|
||||||
|
img: "systems/l5r5e/assets/icons/conditions/possesed.webp",
|
||||||
|
system: { id: "L5RCoreCon000024" }
|
||||||
|
},{
|
||||||
|
id: "prone",
|
||||||
|
name: "l5r5e.conditions.prone",
|
||||||
|
img: "systems/l5r5e/assets/icons/conditions/prone.webp",
|
||||||
|
system: { id: "L5RCoreCon000013" }
|
||||||
|
},{
|
||||||
|
id: "silenced",
|
||||||
|
name: "l5r5e.conditions.silenced",
|
||||||
|
img: "systems/l5r5e/assets/icons/conditions/silenced.webp",
|
||||||
|
system: { id: "L5RCoreCon000014" }
|
||||||
|
},{
|
||||||
|
id: "unconscious",
|
||||||
|
name: "l5r5e.conditions.unconscious",
|
||||||
|
img: "systems/l5r5e/assets/icons/conditions/unconscious.webp",
|
||||||
|
system: { id: "L5RCoreCon000015" }
|
||||||
|
}],
|
||||||
regex: {
|
regex: {
|
||||||
techniqueDifficulty: /^@([TS]):([^|]+?)(?:\|(min|max)(?:\(([^)]+?)\))?)?$/,
|
techniqueDifficulty: /^@([TS]):([^|]+?)(?:\|(min|max)(?:\(([^)]+?)\))?)?$/,
|
||||||
},
|
},
|
||||||
@@ -289,6 +456,7 @@ L5R5E.demeanors = [
|
|||||||
{ id: "adaptable", mod: { water: 2, earth: -2 } },
|
{ id: "adaptable", mod: { water: 2, earth: -2 } },
|
||||||
{ id: "aggressive", mod: { fire: 2, air: -2 } },
|
{ id: "aggressive", mod: { fire: 2, air: -2 } },
|
||||||
{ id: "aggressive", mod: { fire: 2, water: -2 } },
|
{ id: "aggressive", mod: { fire: 2, water: -2 } },
|
||||||
|
{ id: "alluring", mod: { air: 2, earth: -1, fire: -1 } },
|
||||||
{ id: "ambitious", mod: { fire: 2, water: -2 } },
|
{ id: "ambitious", mod: { fire: 2, water: -2 } },
|
||||||
{ id: "amiable", mod: { air: 2, earth: -2 } },
|
{ id: "amiable", mod: { air: 2, earth: -2 } },
|
||||||
{ id: "analytical", mod: { fire: 2, air: -2 } },
|
{ id: "analytical", mod: { fire: 2, air: -2 } },
|
||||||
@@ -299,23 +467,38 @@ L5R5E.demeanors = [
|
|||||||
{ id: "beguiling", mod: { air: 2, earth: -2 } },
|
{ id: "beguiling", mod: { air: 2, earth: -2 } },
|
||||||
{ id: "beguiling", mod: { fire: 2, earth: -2 } },
|
{ id: "beguiling", mod: { fire: 2, earth: -2 } },
|
||||||
{ id: "bitter", mod: { fire: 2, air: -2 } },
|
{ id: "bitter", mod: { fire: 2, air: -2 } },
|
||||||
|
{ id: "bloodthirsty", mod: { fire: 2, water: -2 } },
|
||||||
{ id: "bold", mod: { fire: 1, earth: -1 } },
|
{ id: "bold", mod: { fire: 1, earth: -1 } },
|
||||||
{ id: "calculating", mod: { air: 2, fire: -2 } },
|
{ id: "calculating", mod: { air: 2, fire: -2 } },
|
||||||
{ id: "calm", mod: { fire: 2, air: -2 } },
|
{ id: "calm", mod: { fire: 2, air: -2 } },
|
||||||
{ id: "capricious", mod: { air: 2, earth: -2 } },
|
{ id: "capricious", mod: { air: 2, earth: -2 } },
|
||||||
{ id: "cautious", mod: { air: 2, earth: -2 } },
|
{ id: "cautious", mod: { air: 2, earth: -2 } },
|
||||||
|
{ id: "cautious", mod: { water: 1, void: -1 } },
|
||||||
{ id: "clever", mod: { air: 2, earth: -2 } },
|
{ id: "clever", mod: { air: 2, earth: -2 } },
|
||||||
{ id: "compassionate", mod: { fire: 2, air: -1, water: -1}},
|
{ id: "compassionate", mod: { fire: 2, air: -1, water: -1}},
|
||||||
|
{ id: "compassionate", mod: { water: 2, fire: -2 } },
|
||||||
|
{ id: "compassionate", mod: { water: 2, void: -2 } },
|
||||||
{ id: "confused", mod: { fire: 1, void: 1, air: -2 } },
|
{ id: "confused", mod: { fire: 1, void: 1, air: -2 } },
|
||||||
{ id: "courageous", mod: { air: 2, earth: -2 } },
|
{ id: "courageous", mod: { air: 2, earth: -2 } },
|
||||||
{ id: "cowardly", mod: { earth: 2, fire: -2 } },
|
{ id: "cowardly", mod: { earth: 2, fire: -2 } },
|
||||||
|
{ id: "crestfallen", mod: { void: 2, fire: -2 } },
|
||||||
{ id: "curious", mod: { earth: 1, void: -2 } },
|
{ id: "curious", mod: { earth: 1, void: -2 } },
|
||||||
{ id: "curious", mod: { fire: 1, void: 1, air: -2 } },
|
{ id: "curious", mod: { fire: 1, void: 1, air: -2 } },
|
||||||
|
{ id: "defensive", mod: { fire: 2, air: -2 } },
|
||||||
{ id: "dependable", mod: { fire: 1, water: 1, earth: -2 } },
|
{ id: "dependable", mod: { fire: 1, water: 1, earth: -2 } },
|
||||||
{ id: "detached", mod: { earth: 1, fire: 1, void: -2 } },
|
{ id: "detached", mod: { earth: 1, fire: 1, void: -2 } },
|
||||||
|
{ id: "determined", mod: { earth: 2, air: -2 } },
|
||||||
|
{ id: "devoted", mod: { fire: 2, earth: -2 } },
|
||||||
|
{ id: "direct", mod: { air: 2, fire: -1, water: -1 } },
|
||||||
{ id: "disheartened", mod: { fire: 1, earth: -1 } },
|
{ id: "disheartened", mod: { fire: 1, earth: -1 } },
|
||||||
|
{ id: "dour", mod: { earth: 1, water: 1, air: -1 } },
|
||||||
|
{ id: "duplicitous", mod: { water: 2, fire: -2 } },
|
||||||
|
{ id: "effusive", mod: { air: 2, earth: -2 } },
|
||||||
{ id: "enraged", mod: { air: 1, fire: -2 } },
|
{ id: "enraged", mod: { air: 1, fire: -2 } },
|
||||||
|
{ id: "fanatical", mod: { earth: 1, air: 1, fire: -2 } },
|
||||||
{ id: "feral", mod: { air: 2, fire: -2 } },
|
{ id: "feral", mod: { air: 2, fire: -2 } },
|
||||||
|
{ id: "fervent", mod: { fire: 2, earth: -2 } },
|
||||||
|
{ id: "fervent", mod: { air: 1, water: 1, fire: -1, void: -1 } },
|
||||||
{ id: "fickle", mod: { fire: 2, air: -2 } },
|
{ id: "fickle", mod: { fire: 2, air: -2 } },
|
||||||
{ id: "fierce", mod: { fire: 2, earth: -2 } },
|
{ id: "fierce", mod: { fire: 2, earth: -2 } },
|
||||||
{ id: "flighty", mod: { air: 2, fire: -2 } },
|
{ id: "flighty", mod: { air: 2, fire: -2 } },
|
||||||
@@ -323,32 +506,55 @@ L5R5E.demeanors = [
|
|||||||
{ id: "flippant", mod: { fire: 2, air: -2 } },
|
{ id: "flippant", mod: { fire: 2, air: -2 } },
|
||||||
{ id: "friendly", mod: { fire: 1, earth: -2, water: -2 } },
|
{ id: "friendly", mod: { fire: 1, earth: -2, water: -2 } },
|
||||||
{ id: "gruff", mod: { water: 2, earth: -2 } },
|
{ id: "gruff", mod: { water: 2, earth: -2 } },
|
||||||
|
{ id: "honorable", mod: { fire: 2, earth: -2 } },
|
||||||
|
{ id: "hubristic", mod: { earth: 2, air: -2 } },
|
||||||
{ id: "hungry", mod: { fire: 2, air: -2 } },
|
{ id: "hungry", mod: { fire: 2, air: -2 } },
|
||||||
|
{ id: "idealistic", mod: { water: 2, earth: -2 } },
|
||||||
|
{ id: "idealistic", mod: { earth: 1, water: -1 } },
|
||||||
|
{ id: "imposing", mod: { fire: 2, water: -2 } },
|
||||||
|
{ id: "inquisitive", mod: { earth: 2, water: -2 } },
|
||||||
{ id: "intense", mod: { air: 2, water: -2 } },
|
{ id: "intense", mod: { air: 2, water: -2 } },
|
||||||
{ id: "intense", mod: { fire: 2, water: -2 } },
|
{ id: "intense", mod: { fire: 2, water: -2 } },
|
||||||
{ id: "intimidating", mod: { fire: 2, air: -2 } },
|
{ id: "intimidating", mod: { fire: 2, air: -2 } },
|
||||||
{ id: "irritable", mod: { fire: 2, air: -1, water: -1 } },
|
{ id: "irritable", mod: { fire: 2, air: -1, water: -1 } },
|
||||||
{ id: "loyal", mod: { air: 1, earth: -2, fire: -2 } },
|
{ id: "loyal", mod: { air: 1, earth: -2, fire: -2 } },
|
||||||
{ id: "loyal", mod: { water: 2, fire: -2 } },
|
{ id: "loyal", mod: { water: 2, fire: -2 } },
|
||||||
|
{ id: "methodical", mod: { earth: 2, fire: -2 } },
|
||||||
|
{ id: "meticulous", mod: { fire: 1, water: 1, air: -1, earth: -1 } },
|
||||||
|
{ id: "meticulous", mod: { fire: 1, water: 1, earth: -2 } },
|
||||||
{ id: "mischievous", mod: { fire: 2, air: -2 } },
|
{ id: "mischievous", mod: { fire: 2, air: -2 } },
|
||||||
{ id: "mischievous", mod: { air: 2, earth: -2 } },
|
{ id: "mischievous", mod: { air: 2, earth: -2 } },
|
||||||
{ id: "mischievous", mod: { earth: 2, fire: -2 } },
|
{ id: "mischievous", mod: { earth: 2, fire: -2 } },
|
||||||
|
{ id: "moon_blessed", mod: { water: 2, fire: -2 } },
|
||||||
{ id: "morose", mod: { water: 2, fire: -2 } },
|
{ id: "morose", mod: { water: 2, fire: -2 } },
|
||||||
|
{ id: "near_feral", mod: { air: 1, fire: -1 } },
|
||||||
{ id: "nurturing", mod: { earth: 2, fire: -2 } },
|
{ id: "nurturing", mod: { earth: 2, fire: -2 } },
|
||||||
|
{ id: "obsessed", mod: { earth: 2, air: -2 } },
|
||||||
{ id: "obstinate", mod: { earth: 2, air: -2 } },
|
{ id: "obstinate", mod: { earth: 2, air: -2 } },
|
||||||
{ id: "obstinate", mod: { water: 2, air: -2 } },
|
{ id: "obstinate", mod: { water: 2, air: -2 } },
|
||||||
|
{ id: "otherworldly", mod: { water: 1, void: -1 } },
|
||||||
|
{ id: "outgoing", mod: { air: 2, earth: -2 } },
|
||||||
{ id: "opportunistic", mod: { water: 2, fire: -2 } },
|
{ id: "opportunistic", mod: { water: 2, fire: -2 } },
|
||||||
{ id: "passionate", mod: { earth: 2, air: -2 } },
|
{ id: "passionate", mod: { earth: 2, air: -2 } },
|
||||||
|
{ id: "patient", mod: { fire: 1, water: 1, air: -1, void: -1 } },
|
||||||
|
{ id: "personable", mod: { fire: 2, air: 1, void: -2 } },
|
||||||
{ id: "playful", mod: { earth: 2, water: -2 } },
|
{ id: "playful", mod: { earth: 2, water: -2 } },
|
||||||
{ id: "playful", mod: { fire: 1, air: 1, void: -2 } },
|
{ id: "playful", mod: { fire: 1, air: 1, void: -2 } },
|
||||||
{ id: "power_hungry", mod: { fire: 2, earth: -2 } },
|
{ id: "power_hungry", mod: { fire: 2, earth: -2 } },
|
||||||
{ id: "proud", mod: { fire: 2, earth: -2 } },
|
{ id: "proud", mod: { fire: 2, earth: -2 } },
|
||||||
|
{ id: "refined", mod: { earth: 1, water: 1, air: -1, fire: -1 } },
|
||||||
|
{ id: "reserved", mod: { earth: 2, water: -2 } },
|
||||||
{ id: "restrained", mod: { earth: 2, air: -2 } },
|
{ id: "restrained", mod: { earth: 2, air: -2 } },
|
||||||
|
{ id: "righteous", mod: { water: 2, fire: -1, void: -1 } },
|
||||||
{ id: "scheming", mod: { air: 2, void: -2 } },
|
{ id: "scheming", mod: { air: 2, void: -2 } },
|
||||||
{ id: "serene", mod: { fire: 2, void: -2 } },
|
{ id: "serene", mod: { fire: 2, void: -2 } },
|
||||||
{ id: "serene", mod: { void: 2, fire: -2 } },
|
{ id: "serene", mod: { void: 2, fire: -2 } },
|
||||||
{ id: "serious", mod: { fire: 2, earth: -2 } },
|
{ id: "serious", mod: { fire: 2, earth: -2 } },
|
||||||
{ id: "shrewd", mod: { air: 2, fire: -2 } },
|
{ id: "shrewd", mod: { air: 2, fire: -2 } },
|
||||||
|
{ id: "sinister", mod: { fire: 2, air: -2 } },
|
||||||
|
{ id: "sociable", mod: { air: 1, earth: 1, fire: -1, water: -1 } },
|
||||||
|
{ id: "starved", mod: { water: 2, fire: -2 } },
|
||||||
|
{ id: "stoic", mod: { earth: 2, fire: -2 } },
|
||||||
{ id: "stubborn", mod: { earth: 2, water: -2 } },
|
{ id: "stubborn", mod: { earth: 2, water: -2 } },
|
||||||
{ id: "suspicious", mod: { air: 2, earth: -2 } },
|
{ id: "suspicious", mod: { air: 2, earth: -2 } },
|
||||||
{ id: "teasing", mod: { air: 2, earth: -2 } },
|
{ id: "teasing", mod: { air: 2, earth: -2 } },
|
||||||
@@ -356,5 +562,10 @@ L5R5E.demeanors = [
|
|||||||
{ id: "uncertain", mod: { air: 2, fire: -2 } },
|
{ id: "uncertain", mod: { air: 2, fire: -2 } },
|
||||||
{ id: "unenthused", mod: { earth: 2, fire: -2 } },
|
{ id: "unenthused", mod: { earth: 2, fire: -2 } },
|
||||||
{ id: "vain", mod: { earth: 2, air: -2 } },
|
{ id: "vain", mod: { earth: 2, air: -2 } },
|
||||||
|
{ id: "vengeful", mod: { fire: 2, void: -2 } },
|
||||||
|
{ id: "vindictive", mod: { fire: 2, water: -2 } },
|
||||||
{ id: "wary", mod: { earth: 2, fire: -2 } },
|
{ id: "wary", mod: { earth: 2, fire: -2 } },
|
||||||
|
{ id: "watchful", mod: { fire: 2, earth: -1, void: -1 } },
|
||||||
|
{ id: "wrathful", mod: { fire: 2, earth: -2 } },
|
||||||
|
{ id: "zealous", mod: { earth: 2, fire: -2 } },
|
||||||
];
|
];
|
||||||
|
|||||||
@@ -205,6 +205,7 @@ export class GmToolbox extends HandlebarsApplicationMixin(ApplicationV2) {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
await actor.removeConditions(new Set(["exhausted"]));
|
||||||
}
|
}
|
||||||
|
|
||||||
GmToolbox.#uiNotification(allActors, "sleep");
|
GmToolbox.#uiNotification(allActors, "sleep");
|
||||||
@@ -216,7 +217,8 @@ export class GmToolbox extends HandlebarsApplicationMixin(ApplicationV2) {
|
|||||||
static async #onSceneEnd(event) {
|
static async #onSceneEnd(event) {
|
||||||
const allActors = event.button !== 0;
|
const allActors = event.button !== 0;
|
||||||
for await (const actor of game.actors.contents) {
|
for await (const actor of game.actors.contents) {
|
||||||
if (!GmToolbox.#updatableCharacter(allActors, actor)) {
|
if (!GmToolbox.#updatableCharacter(allActors, actor)
|
||||||
|
|| actor.statuses.has("exhausted")) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -189,12 +189,12 @@ export class HelpersL5r5e {
|
|||||||
|
|
||||||
// Unknown pack object, iterate all packs
|
// Unknown pack object, iterate all packs
|
||||||
if (!document) {
|
if (!document) {
|
||||||
for (const comp of game.packs) {
|
await Promise.all(game.packs.map(async (comp) => {
|
||||||
const tmpData = await comp.getDocument(id);
|
const tmpData = await comp.getDocument(id);
|
||||||
if (tmpData) {
|
if (tmpData) {
|
||||||
document = HelpersL5r5e.createDocumentFromCompendium({ type, data: tmpData });
|
document = HelpersL5r5e.createDocumentFromCompendium({ type, data: tmpData });
|
||||||
}
|
}
|
||||||
}
|
}));
|
||||||
}
|
}
|
||||||
|
|
||||||
// Final
|
// Final
|
||||||
|
|||||||
@@ -1,6 +1,20 @@
|
|||||||
import { L5r5eHtmlMultiSelectElement } from "./misc/l5r5e-multiselect.js";
|
import { L5r5eHtmlMultiSelectElement } from "./misc/l5r5e-multiselect.js";
|
||||||
|
|
||||||
export default class HooksL5r5e {
|
export default class HooksL5r5e {
|
||||||
|
/**
|
||||||
|
* Do initialization
|
||||||
|
*/
|
||||||
|
static async init() {
|
||||||
|
// L5R conditions
|
||||||
|
if (game.settings.get(CONFIG.l5r5e.namespace, "show-all-status-effects")) {
|
||||||
|
// Add L5R conditions to foundry conditions (don't restrict users)
|
||||||
|
CONFIG.statusEffects.push(...CONFIG.l5r5e.conditions);
|
||||||
|
} else {
|
||||||
|
// L5R conditions only
|
||||||
|
CONFIG.statusEffects = CONFIG.l5r5e.conditions;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Do anything after initialization but before ready
|
* Do anything after initialization but before ready
|
||||||
*/
|
*/
|
||||||
@@ -66,7 +80,7 @@ export default class HooksL5r5e {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
game.settings.set(CONFIG.l5r5e.namespace, "all-compendium-references", Array.from(references));
|
game.settings.set(CONFIG.l5r5e.namespace, "all-compendium-references", references);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -303,17 +317,17 @@ export default class HooksL5r5e {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Setup filters
|
// Setup filters
|
||||||
const officialContent = game.settings.get(CONFIG.l5r5e.namespace, "compendium-official-content-for-players");
|
const officialContentSet = game.settings.get(CONFIG.l5r5e.namespace, "compendium-official-content-for-players");
|
||||||
const unofficialContent = game.settings.get(CONFIG.l5r5e.namespace, "compendium-unofficial-content-for-players");
|
const unofficialContentSet = game.settings.get(CONFIG.l5r5e.namespace, "compendium-unofficial-content-for-players");
|
||||||
const allCompendiumReferences = game.settings.get(CONFIG.l5r5e.namespace, "all-compendium-references")
|
const allCompendiumReferencesSet = game.settings.get(CONFIG.l5r5e.namespace, "all-compendium-references")
|
||||||
const hideEmptySourcesFromPlayers = game.settings.get(CONFIG.l5r5e.namespace, "compendium-hide-empty-sources-from-players");
|
const hideEmptySourcesFromPlayers = game.settings.get(CONFIG.l5r5e.namespace, "compendium-hide-empty-sources-from-players");
|
||||||
|
|
||||||
const unavailableSourceForPlayers = allCompendiumReferences.filter((element) => {
|
const unavailableSourceForPlayersSet = new Set([...allCompendiumReferencesSet].filter((element) => {
|
||||||
if (CONFIG.l5r5e.sourceReference[element]) {
|
if (CONFIG.l5r5e.sourceReference[element]) {
|
||||||
return officialContent.size > 0 ? !officialContent.has(element) : false;
|
return officialContentSet.size > 0 ? !officialContentSet.has(element) : false;
|
||||||
}
|
}
|
||||||
return unofficialContent.size > 0 ? !unofficialContent.has(element) : false;
|
return unofficialContentSet.size > 0 ? !unofficialContentSet.has(element) : false;
|
||||||
});
|
}));
|
||||||
|
|
||||||
// Create filter function
|
// Create filter function
|
||||||
const applyCompendiumFilter = () => {
|
const applyCompendiumFilter = () => {
|
||||||
@@ -333,7 +347,7 @@ export default class HooksL5r5e {
|
|||||||
let shouldShow = true;
|
let shouldShow = true;
|
||||||
|
|
||||||
// Handle unavailable sources
|
// Handle unavailable sources
|
||||||
if (unavailableSourceForPlayers.has(lineSource)) {
|
if (unavailableSourceForPlayersSet.has(lineSource)) {
|
||||||
if (game.user.isGM) {
|
if (game.user.isGM) {
|
||||||
shouldShow &= true;
|
shouldShow &= true;
|
||||||
$(this)
|
$(this)
|
||||||
@@ -405,33 +419,33 @@ export default class HooksL5r5e {
|
|||||||
|
|
||||||
if (filtersToShow.source) {
|
if (filtersToShow.source) {
|
||||||
// Build the source select
|
// Build the source select
|
||||||
const selectableSources = allCompendiumReferences.map((reference) => ({
|
const selectableSourcesArray = [...allCompendiumReferencesSet].map((reference) => ({
|
||||||
value: reference,
|
value: reference,
|
||||||
label: CONFIG.l5r5e.sourceReference[reference]?.label ?? reference,
|
label: CONFIG.l5r5e.sourceReference[reference]?.label ?? reference,
|
||||||
translate: true,
|
translate: true,
|
||||||
group: CONFIG.l5r5e.sourceReference[reference]?.type.split(",")[0] ?? "l5r5e.multiselect.sources_categories.others",
|
group: CONFIG.l5r5e.sourceReference[reference]?.type.split(",")[0] ?? "l5r5e.multiselect.sources_categories.others",
|
||||||
disabled: !sourcesInThisCompendium.has(reference) || (!game.user.isGM && unavailableSourceForPlayers.has(reference))
|
disabled: !sourcesInThisCompendium.has(reference) || (!game.user.isGM && unavailableSourceForPlayersSet.has(reference))
|
||||||
}));
|
}));
|
||||||
const filterSourcesBox = L5r5eHtmlMultiSelectElement.create({
|
const filterSourcesBox = L5r5eHtmlMultiSelectElement.create({
|
||||||
name: "filter-sources",
|
name: "filter-sources",
|
||||||
options: selectableSources,
|
options: selectableSourcesArray,
|
||||||
localize: true,
|
localize: true,
|
||||||
});
|
});
|
||||||
header.append(filterSourcesBox.outerHTML);
|
header.append(filterSourcesBox.outerHTML);
|
||||||
$("l5r5e-multi-select").on("change", applyCompendiumFilter);
|
$("l5r5e-multi-select").on("change", applyCompendiumFilter);
|
||||||
|
|
||||||
// If gm add an extra button to easily filter the content to see the same stuff as a player
|
// If gm add an extra button to easily filter the content to see the same stuff as a player
|
||||||
if (game.user.isGM && unavailableSourceForPlayers.length > 0) {
|
if (game.user.isGM && unavailableSourceForPlayersSet.size > 0) {
|
||||||
const buttonHTML = `<button type="button" class="gm" data-tooltip="${game.i18n.localize('l5r5e.multiselect.player_filter_tooltip')}">`
|
const buttonHTML = `<button type="button" class="gm" data-tooltip="${game.i18n.localize('l5r5e.multiselect.player_filter_tooltip')}">`
|
||||||
+ game.i18n.localize('l5r5e.multiselect.player_filter_label')
|
+ game.i18n.localize('l5r5e.multiselect.player_filter_label')
|
||||||
+ '</button>'
|
+ '</button>'
|
||||||
|
|
||||||
const filterPlayerView = allCompendiumReferences
|
const filterPlayerViewArray = [...allCompendiumReferencesSet]
|
||||||
.filter((item) => !unavailableSourceForPlayers.has(item))
|
.filter((item) => !unavailableSourceForPlayersSet.has(item))
|
||||||
.filter((item) => sourcesInThisCompendium.has(item));
|
.filter((item) => sourcesInThisCompendium.has(item));
|
||||||
|
|
||||||
$(buttonHTML).appendTo($(header).find("l5r5e-multi-select")).click(function() {
|
$(buttonHTML).appendTo($(header).find("l5r5e-multi-select")).click(function() {
|
||||||
header.find("l5r5e-multi-select")[0].value = filterPlayerView;
|
header.find("l5r5e-multi-select")[0].value = filterPlayerViewArray;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -149,5 +149,8 @@ export class AdvancementSheetL5r5e extends ItemSheetL5r5e {
|
|||||||
xp_used: xp_used,
|
xp_used: xp_used,
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// Re-render sheet
|
||||||
|
this.render(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -56,8 +56,8 @@ export class BaseItemSheetL5r5e extends foundry.appv1.sheets.ItemSheet {
|
|||||||
sheetData.data.system.source_reference.source = game.i18n.localize(label_or_reference);
|
sheetData.data.system.source_reference.source = game.i18n.localize(label_or_reference);
|
||||||
|
|
||||||
// Translate list of available references
|
// Translate list of available references
|
||||||
const all_references = game.settings.get(CONFIG.l5r5e.namespace, "all-compendium-references");
|
const all_referencesSet = game.settings.get(CONFIG.l5r5e.namespace, "all-compendium-references");
|
||||||
sheetData.source_references = all_references.map((reference) => {
|
sheetData.source_references = [...all_referencesSet].map((reference) => {
|
||||||
const label_or_reference = CONFIG.l5r5e.sourceReference[reference]?.label ?? reference
|
const label_or_reference = CONFIG.l5r5e.sourceReference[reference]?.label ?? reference
|
||||||
return game.i18n.localize(label_or_reference)
|
return game.i18n.localize(label_or_reference)
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -37,31 +37,26 @@ export class ItemSheetL5r5e extends BaseItemSheetL5r5e {
|
|||||||
* @private
|
* @private
|
||||||
*/
|
*/
|
||||||
async _prepareProperties(sheetData) {
|
async _prepareProperties(sheetData) {
|
||||||
sheetData.data.propertiesList = [];
|
sheetData.data.propertiesList = await Promise.all((sheetData.data?.system?.properties || []).map(async (property) => {
|
||||||
|
|
||||||
if (Array.isArray(sheetData.data.system.properties)) {
|
const gameProp = await game.l5r5e.HelpersL5r5e.getObjectGameOrPack({ id: property.id, type: "Item" });
|
||||||
const props = [];
|
if (gameProp) {
|
||||||
for (const property of sheetData.data.system.properties) {
|
return gameProp;
|
||||||
const gameProp = await game.l5r5e.HelpersL5r5e.getObjectGameOrPack({ id: property.id, type: "Item" });
|
|
||||||
if (gameProp) {
|
|
||||||
sheetData.data.propertiesList.push(gameProp);
|
|
||||||
props.push({ id: gameProp.id, name: gameProp.name });
|
|
||||||
} else {
|
|
||||||
// Item not found
|
|
||||||
console.warn(`L5R5E | IS | Unknown property id[${property.id}], name[${property.name}]`);
|
|
||||||
sheetData.data.propertiesList.push({
|
|
||||||
id: property.id,
|
|
||||||
name: property.name,
|
|
||||||
type: "property",
|
|
||||||
img: "systems/l5r5e/assets/icons/items/property.svg",
|
|
||||||
removed: true,
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
sheetData.data.system.properties = props;
|
|
||||||
}
|
// Item not found
|
||||||
|
console.warn(`L5R5E | IS | Unknown property id[${property.id}], name[${property.name}]`);
|
||||||
|
return {
|
||||||
|
id: property.id,
|
||||||
|
name: property.name,
|
||||||
|
type: "property",
|
||||||
|
img: "systems/l5r5e/assets/icons/items/property.svg",
|
||||||
|
removed: true,
|
||||||
|
};
|
||||||
|
}));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Subscribe to events from the sheet.
|
* Subscribe to events from the sheet.
|
||||||
* @param {jQuery} html HTML content of the sheet.
|
* @param {jQuery} html HTML content of the sheet.
|
||||||
|
|||||||
@@ -11,6 +11,7 @@ import { ActorL5r5e } from "./actor.js";
|
|||||||
import { CharacterSheetL5r5e } from "./actors/character-sheet.js";
|
import { CharacterSheetL5r5e } from "./actors/character-sheet.js";
|
||||||
import { NpcSheetL5r5e } from "./actors/npc-sheet.js";
|
import { NpcSheetL5r5e } from "./actors/npc-sheet.js";
|
||||||
import { ArmySheetL5r5e } from "./actors/army-sheet.js";
|
import { ArmySheetL5r5e } from "./actors/army-sheet.js";
|
||||||
|
import { RulerL5r5e, TokenRulerL5r5e } from "./tatical-grid-rulers.js";
|
||||||
// Dice and rolls
|
// Dice and rolls
|
||||||
import { L5rBaseDie } from "./dice/dietype/l5r-base-die.js";
|
import { L5rBaseDie } from "./dice/dietype/l5r-base-die.js";
|
||||||
import { AbilityDie } from "./dice/dietype/ability-die.js";
|
import { AbilityDie } from "./dice/dietype/ability-die.js";
|
||||||
@@ -72,6 +73,8 @@ Hooks.once("init", async () => {
|
|||||||
CONFIG.Item.documentClass = ItemL5r5e;
|
CONFIG.Item.documentClass = ItemL5r5e;
|
||||||
CONFIG.JournalEntry.documentClass = JournalL5r5e;
|
CONFIG.JournalEntry.documentClass = JournalL5r5e;
|
||||||
CONFIG.JournalEntry.sheetClass = BaseJournalSheetL5r5e;
|
CONFIG.JournalEntry.sheetClass = BaseJournalSheetL5r5e;
|
||||||
|
CONFIG.Token.rulerClass = TokenRulerL5r5e;
|
||||||
|
CONFIG.Canvas.rulerClass = RulerL5r5e;
|
||||||
|
|
||||||
// Define custom Roll class
|
// Define custom Roll class
|
||||||
CONFIG.Dice.rolls.unshift(RollL5r5e);
|
CONFIG.Dice.rolls.unshift(RollL5r5e);
|
||||||
@@ -252,6 +255,7 @@ Hooks.once("init", async () => {
|
|||||||
/* ------------------------------------ */
|
/* ------------------------------------ */
|
||||||
Hooks.once("setup", HooksL5r5e.setup);
|
Hooks.once("setup", HooksL5r5e.setup);
|
||||||
Hooks.once("ready", HooksL5r5e.ready);
|
Hooks.once("ready", HooksL5r5e.ready);
|
||||||
|
Hooks.once("init", HooksL5r5e.init);
|
||||||
Hooks.once("diceSoNiceReady", (dice3d) => HooksL5r5e.diceSoNiceReady(dice3d));
|
Hooks.once("diceSoNiceReady", (dice3d) => HooksL5r5e.diceSoNiceReady(dice3d));
|
||||||
|
|
||||||
/* ------------------------------------ */
|
/* ------------------------------------ */
|
||||||
|
|||||||
@@ -19,6 +19,12 @@ export class L5r5ePopupManager {
|
|||||||
/** @type {HTMLElement} */
|
/** @type {HTMLElement} */
|
||||||
#container = null;
|
#container = null;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Increment number to ignore old tooltips if template is too long to load (#62)
|
||||||
|
* @type {number}
|
||||||
|
*/
|
||||||
|
#displayId = 0;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param {string|jQuery} selector - Selector or jQuery object for tooltip-bound elements.
|
* @param {string|jQuery} selector - Selector or jQuery object for tooltip-bound elements.
|
||||||
* @param {(event: MouseEvent) => Promise<string>} callback - Async function returning tooltip HTML content.
|
* @param {(event: MouseEvent) => Promise<string>} callback - Async function returning tooltip HTML content.
|
||||||
@@ -45,10 +51,24 @@ export class L5r5ePopupManager {
|
|||||||
.on("mouseenter.popup", async (event) => {
|
.on("mouseenter.popup", async (event) => {
|
||||||
$(this.#container).find("#l5r5e-tooltip-ct").remove();
|
$(this.#container).find("#l5r5e-tooltip-ct").remove();
|
||||||
|
|
||||||
|
// Memory save
|
||||||
|
if (this.#displayId >= 200) {
|
||||||
|
this.#displayId = 0;
|
||||||
|
}
|
||||||
|
const currentDisplayId = ++this.#displayId;
|
||||||
|
|
||||||
|
// Load the template, can take a while
|
||||||
const tpl = await this.#callback(event);
|
const tpl = await this.#callback(event);
|
||||||
|
|
||||||
// Abort if no content or the target element is no longer in the DOM
|
// Abort if no content or the target element is no longer in the DOM
|
||||||
if (!tpl || !document.body.contains(event.currentTarget)) return;
|
if (!tpl || !document.body.contains(event.currentTarget)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// If mismatched, that tpl is too old, the user already display another tooltip
|
||||||
|
if (this.#displayId !== currentDisplayId) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
$(this.#container).append(
|
$(this.#container).append(
|
||||||
`<div id="l5r5e-tooltip-ct" class="l5r5e-tooltip l5r5e-tooltip-ct">${tpl}</div>`
|
`<div id="l5r5e-tooltip-ct" class="l5r5e-tooltip l5r5e-tooltip-ct">${tpl}</div>`
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
import { L5r5eSetField } from "./data/l5r5e-setfield.js";
|
import { L5r5eSetField } from "./data/l5r5e-setfield.js";
|
||||||
|
import { TacticalGridSettingsL5R5E } from "./settings/tactical-grid-settings.js"
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Custom system settings register
|
* Custom system settings register
|
||||||
@@ -25,6 +26,15 @@ export const RegisterSettings = function () {
|
|||||||
type: Boolean,
|
type: Boolean,
|
||||||
default: true,
|
default: true,
|
||||||
});
|
});
|
||||||
|
game.settings.register(CONFIG.l5r5e.namespace, "show-all-status-effects", {
|
||||||
|
name: "SETTINGS.ShowAllStatusEffects.Title",
|
||||||
|
hint: "SETTINGS.ShowAllStatusEffects.Hint",
|
||||||
|
scope: "world",
|
||||||
|
config: true,
|
||||||
|
type: Boolean,
|
||||||
|
default: false,
|
||||||
|
requiresReload: true,
|
||||||
|
});
|
||||||
game.settings.register(CONFIG.l5r5e.namespace, "techniques-customs", {
|
game.settings.register(CONFIG.l5r5e.namespace, "techniques-customs", {
|
||||||
name: "SETTINGS.CustomTechniques.Title",
|
name: "SETTINGS.CustomTechniques.Title",
|
||||||
hint: "SETTINGS.CustomTechniques.Hint",
|
hint: "SETTINGS.CustomTechniques.Hint",
|
||||||
@@ -227,4 +237,29 @@ export const RegisterSettings = function () {
|
|||||||
default: [],
|
default: [],
|
||||||
onChange: () => game.l5r5e.HelpersL5r5e.refreshLocalAndSocket("l5r5e-gm-monitor"),
|
onChange: () => game.l5r5e.HelpersL5r5e.refreshLocalAndSocket("l5r5e-gm-monitor"),
|
||||||
});
|
});
|
||||||
|
|
||||||
|
/* -------------------------------------- */
|
||||||
|
/* Grid Settings (GM only) */
|
||||||
|
/* -------------------------------------- */
|
||||||
|
|
||||||
|
// UI Configuration
|
||||||
|
game.settings.register(CONFIG.l5r5e.namespace, "tactical-grid-settings-world", {
|
||||||
|
scope: "world",
|
||||||
|
config: false,
|
||||||
|
type: TacticalGridSettingsL5R5E.worldSchema,
|
||||||
|
});
|
||||||
|
|
||||||
|
game.settings.register(CONFIG.l5r5e.namespace, "tactical-grid-settings-client", {
|
||||||
|
scope: "client",
|
||||||
|
config: false,
|
||||||
|
type: TacticalGridSettingsL5R5E.clientSchema,
|
||||||
|
});
|
||||||
|
|
||||||
|
game.settings.registerMenu(CONFIG.l5r5e.namespace, "tactical-grid-settings", {
|
||||||
|
name: "l5r5e.tactical_grid.settings.title",
|
||||||
|
label: "l5r5e.tactical_grid.settings.label",
|
||||||
|
hint: "l5r5e.tactical_grid.settings.hint",
|
||||||
|
icon: "fa-solid fa-table-layout",
|
||||||
|
type: TacticalGridSettingsL5R5E
|
||||||
|
});
|
||||||
};
|
};
|
||||||
|
|||||||
351
system/scripts/settings/tactical-grid-settings.js
Normal file
@@ -0,0 +1,351 @@
|
|||||||
|
const HandlebarsApplicationMixin = foundry.applications.api.HandlebarsApplicationMixin;
|
||||||
|
const ApplicationV2 = foundry.applications.api.ApplicationV2;
|
||||||
|
const fields = foundry.data.fields;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @typedef {Object} RangeBand
|
||||||
|
* @property {number} start
|
||||||
|
*
|
||||||
|
* @typedef {Object} ClientRangeBand
|
||||||
|
* @property {string} color
|
||||||
|
* @property {number} alpha
|
||||||
|
*
|
||||||
|
* @typedef {Object} WorldSettings
|
||||||
|
* @property {boolean} enabled
|
||||||
|
* @property {Record<number, RangeBand>} ranges - Indexed 0-6
|
||||||
|
*
|
||||||
|
* @typedef {Object} ClientSettings
|
||||||
|
* @property {Record<number, ClientRangeBand>} ranges - Indexed 0-6
|
||||||
|
*/
|
||||||
|
|
||||||
|
export class TacticalGridSettingsL5R5E extends HandlebarsApplicationMixin(ApplicationV2) {
|
||||||
|
|
||||||
|
/** @inheritDoc */
|
||||||
|
static DEFAULT_OPTIONS = {
|
||||||
|
id: "tactical-grid-settings",
|
||||||
|
tag: "form",
|
||||||
|
classes: [""], // We could add l5r here but that would add styling that is not matching the default settings menu
|
||||||
|
window: {
|
||||||
|
title: "l5r5e.tactical_grid.settings.title",
|
||||||
|
contentClasses: ["standard-form"]
|
||||||
|
},
|
||||||
|
form: {
|
||||||
|
closeOnSubmit: true,
|
||||||
|
handler: TacticalGridSettingsL5R5E.#onSubmit
|
||||||
|
},
|
||||||
|
position: { width: 540 },
|
||||||
|
actions: {
|
||||||
|
reset: TacticalGridSettingsL5R5E.#onReset
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
/** @override */
|
||||||
|
static PARTS = {
|
||||||
|
form: {
|
||||||
|
template: "systems/l5r5e/templates/" + "settings/tactical-grid-settings.html",
|
||||||
|
scrollable: [""],
|
||||||
|
},
|
||||||
|
footer: {
|
||||||
|
template: "templates/generic/form-footer.hbs"
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates a SchemaField defining a world range band.
|
||||||
|
* @param {{start: number}} initial - Initial range values.
|
||||||
|
* `start` must be ≥ 0.
|
||||||
|
* * @returns {SchemaField} A schema field containing a 'start' field
|
||||||
|
*
|
||||||
|
* @private
|
||||||
|
*/
|
||||||
|
static #createWorldRangeBandSchema(initial) {
|
||||||
|
return new fields.SchemaField({
|
||||||
|
start: new fields.NumberField({ initial: initial.start, label: "l5r5e.tactical_grid.settings.world.start", min: 0, max:Infinity, nullable: false, required: true, gmOnly: true})
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates a SchemaField defining a client range band.
|
||||||
|
* @param {{color: string, alpha: number}} initial - Initial range band values.
|
||||||
|
* `color` should be a valid CSS color string and `alpha` a valid alpha value.
|
||||||
|
* @returns {SchemaField} A schema field containing `color` and `alpha` fields.
|
||||||
|
*
|
||||||
|
* @private
|
||||||
|
*/
|
||||||
|
static #createClientRangeBandSchema(initial) {
|
||||||
|
return new fields.SchemaField({
|
||||||
|
color: new fields.ColorField({initial: initial.color, label: "l5r5e.tactical_grid.settings.client.color", required: true}),
|
||||||
|
alpha: new fields.AlphaField({initial: initial.alpha, label: "l5r5e.tactical_grid.settings.client.alpha", required: true}),
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Combined Foundry VTT settings schema representing both:
|
||||||
|
* - **World (GM-controlled)** configuration
|
||||||
|
* - **Client (per-user)** visual configuration
|
||||||
|
*
|
||||||
|
* This variable serves as a single source-of-truth definition for the module’s
|
||||||
|
* tactical grid settings structure, including field types, defaults, labels, and
|
||||||
|
* validation rules for world ranges.
|
||||||
|
* @private
|
||||||
|
*/
|
||||||
|
static #schema = {
|
||||||
|
world: new fields.SchemaField({
|
||||||
|
enabled: new fields.BooleanField({ initial: true, label: "l5r5e.tactical_grid.settings.world.enabled", hint: "l5r5e.tactical_grid.settings.world.enabled_hint"}),
|
||||||
|
ranges: new fields.SchemaField({
|
||||||
|
0: TacticalGridSettingsL5R5E.#createWorldRangeBandSchema({ start: 0}),
|
||||||
|
1: TacticalGridSettingsL5R5E.#createWorldRangeBandSchema({ start: 1}),
|
||||||
|
2: TacticalGridSettingsL5R5E.#createWorldRangeBandSchema({ start: 2}),
|
||||||
|
3: TacticalGridSettingsL5R5E.#createWorldRangeBandSchema({ start: 3}),
|
||||||
|
4: TacticalGridSettingsL5R5E.#createWorldRangeBandSchema({ start: 6}),
|
||||||
|
5: TacticalGridSettingsL5R5E.#createWorldRangeBandSchema({ start: 10}),
|
||||||
|
6: TacticalGridSettingsL5R5E.#createWorldRangeBandSchema({ start: 15})
|
||||||
|
})
|
||||||
|
}, {
|
||||||
|
validate: TacticalGridSettingsL5R5E.#validateWorldRangeConfiguration
|
||||||
|
}),
|
||||||
|
client: new fields.SchemaField({
|
||||||
|
ranges: new fields.SchemaField({
|
||||||
|
0: TacticalGridSettingsL5R5E.#createClientRangeBandSchema({color: "#00FFFF", alpha: 0.5}),
|
||||||
|
1: TacticalGridSettingsL5R5E.#createClientRangeBandSchema({color: "#FF00FF", alpha: 0.5}),
|
||||||
|
2: TacticalGridSettingsL5R5E.#createClientRangeBandSchema({color: "#FFFF00", alpha: 0.5}),
|
||||||
|
3: TacticalGridSettingsL5R5E.#createClientRangeBandSchema({color: "#0000FF", alpha: 0.5}),
|
||||||
|
4: TacticalGridSettingsL5R5E.#createClientRangeBandSchema({color: "#7FFF00", alpha: 0.5}),
|
||||||
|
5: TacticalGridSettingsL5R5E.#createClientRangeBandSchema({color: "#4B0082", alpha: 0.5}),
|
||||||
|
6: TacticalGridSettingsL5R5E.#createClientRangeBandSchema({color: "#FF8800", alpha: 0.5})
|
||||||
|
})
|
||||||
|
})
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Exposes the **world (GM-controlled)** portion of the tactical grid settings schema.
|
||||||
|
* @return {SchemaField}
|
||||||
|
*/
|
||||||
|
static get worldSchema() {
|
||||||
|
return TacticalGridSettingsL5R5E.#schema.world;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Exposes the **client (per-user visual)** portion of the tactical grid settings schema.
|
||||||
|
* @return {SchemaField}
|
||||||
|
*/
|
||||||
|
static get clientSchema() {
|
||||||
|
return TacticalGridSettingsL5R5E.#schema.client;
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Holds a mutable copy of the tactical grid settings so the form can operate on current values without altering the schema. */
|
||||||
|
static #setting = null;
|
||||||
|
|
||||||
|
|
||||||
|
/** @override ApplicationV2 */
|
||||||
|
async _prepareContext(options) {
|
||||||
|
if (options.isFirstRender) {
|
||||||
|
const client = game.settings.get(CONFIG.l5r5e.namespace, "tactical-grid-settings-client");
|
||||||
|
const world = game.settings.get(CONFIG.l5r5e.namespace, "tactical-grid-settings-world");
|
||||||
|
TacticalGridSettingsL5R5E.#setting = foundry.utils.deepClone({client: client, world: world});
|
||||||
|
}
|
||||||
|
|
||||||
|
// Pre-process range bands for easier template access
|
||||||
|
const rangeBands = Object.entries(this.constructor.worldSchema.fields.ranges.fields).map(([index, field]) => ({
|
||||||
|
index: Number(index),
|
||||||
|
worldField: field,
|
||||||
|
clientFields: this.constructor.clientSchema.fields.ranges.fields[index],
|
||||||
|
worldValue: TacticalGridSettingsL5R5E.#setting.world.ranges[index],
|
||||||
|
clientValue: TacticalGridSettingsL5R5E.#setting.client.ranges[index]
|
||||||
|
}));
|
||||||
|
|
||||||
|
return {
|
||||||
|
isGm: game.user.isGM,
|
||||||
|
tactical_grid_enabled: {
|
||||||
|
field: this.constructor.worldSchema.fields.enabled,
|
||||||
|
value: TacticalGridSettingsL5R5E.#setting.world.enabled,
|
||||||
|
},
|
||||||
|
rangeBands,
|
||||||
|
buttons: [
|
||||||
|
{ type: "reset", label: "l5r5e.tactical_grid.settings.reset", icon: "fa-solid fa-arrow-rotate-left", action: "reset" },
|
||||||
|
{ type: "submit", label: "l5r5e.tactical_grid.settings.submit", icon: "fa-solid fa-floppy-disk" }
|
||||||
|
]
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/** @override ApplicationV2 */
|
||||||
|
_onChangeForm(formConfig, event) {
|
||||||
|
const formData = new foundry.applications.ux.FormDataExtended(this.form, { readonly: true });
|
||||||
|
|
||||||
|
const {
|
||||||
|
cleaned: cleanedWorldSettings,
|
||||||
|
failure: validationFailures
|
||||||
|
} = TacticalGridSettingsL5R5E.#validateAndCleanWorldSettings(formData, event);
|
||||||
|
TacticalGridSettingsL5R5E.#applyValidationState(validationFailures);
|
||||||
|
|
||||||
|
TacticalGridSettingsL5R5E.#setting.world = cleanedWorldSettings
|
||||||
|
TacticalGridSettingsL5R5E.#setting.client = foundry.utils.expandObject(formData.object).l5r5e["tactical-grid-settings-client"];
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Validates world schema ensuring range bands are properly ordered and connected.
|
||||||
|
* Note: internal field validation takes precedence, and will result in this validation potentially not running
|
||||||
|
* Checks that:
|
||||||
|
* - Sequential range bands connect properly (range[n].start < range[n+1].start)
|
||||||
|
* @param {*} value - The world settings object to validate
|
||||||
|
* @param {DataFieldValidationOptions} options - Validation options including lastElementChange
|
||||||
|
* @returns {boolean|foundry.data.validation.DataModelValidationFailure} True if valid, otherwise validation failure object
|
||||||
|
*/
|
||||||
|
static #validateWorldRangeConfiguration(value, options) {
|
||||||
|
if(!value.enabled) // don't validate if tactical_grids are disabled
|
||||||
|
return true;
|
||||||
|
|
||||||
|
let previousStart = -1;
|
||||||
|
let previousRangeIndex = null;
|
||||||
|
const failure = new foundry.data.validation.DataModelValidationFailure({ unresolved: true });
|
||||||
|
const changedElementName = options?.element?.name;
|
||||||
|
|
||||||
|
for (const [rangeIndex, range] of Object.entries(value.ranges)) {
|
||||||
|
if (range.start <= previousStart) {
|
||||||
|
let errorKey = TacticalGridSettingsL5R5E.worldSchema.fields.ranges.fields[rangeIndex].fields.start.fieldPath;
|
||||||
|
const previousErrorKey = errorKey.replace(/\.(\d+)\./, `.${previousRangeIndex}.`);
|
||||||
|
|
||||||
|
let isErrorOnPrevious = false;
|
||||||
|
|
||||||
|
// If the previous field was changed, show error there instead
|
||||||
|
if (changedElementName === previousErrorKey) {
|
||||||
|
errorKey = previousErrorKey;
|
||||||
|
isErrorOnPrevious = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
failure.fields[errorKey] = new foundry.data.validation.DataModelValidationFailure({
|
||||||
|
invalidValue: isErrorOnPrevious ? previousStart : range.start,
|
||||||
|
unresolved: true,
|
||||||
|
message: game.i18n.format(
|
||||||
|
isErrorOnPrevious
|
||||||
|
? "l5r5e.tactical_grid.settings.validate.start-too-large"
|
||||||
|
: "l5r5e.tactical_grid.settings.validate.start-too-small",
|
||||||
|
isErrorOnPrevious
|
||||||
|
? { nextRangeIndex: Number(rangeIndex), nextStart: range.start }
|
||||||
|
: { previousRangeIndex: Number(previousRangeIndex), previousStart: previousStart }
|
||||||
|
)
|
||||||
|
});
|
||||||
|
}
|
||||||
|
previousStart = range.start;
|
||||||
|
previousRangeIndex = rangeIndex;
|
||||||
|
}
|
||||||
|
|
||||||
|
return Object.keys(failure.fields).length > 0 ? failure : true;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Validates and cleans the world portion of the tactical grid settings.
|
||||||
|
*
|
||||||
|
* Expands raw form data, validates it against the schema, updates form input
|
||||||
|
* error states and tooltips, and returns a cleaned object ready to save.
|
||||||
|
*
|
||||||
|
* @param {foundry.applications.ux.FormDataExtended} formData - The submitted form data.
|
||||||
|
* @param {Event} [event] - Optional event for determining which field changed.
|
||||||
|
* @returns {WorldSettings} A cleaned and validated copy of the world settings.
|
||||||
|
* @private
|
||||||
|
*/
|
||||||
|
static #validateAndCleanWorldSettings(formData, event) {
|
||||||
|
const expanded = foundry.utils.expandObject(formData.object).l5r5e["tactical-grid-settings-world"];
|
||||||
|
const validate = TacticalGridSettingsL5R5E.#schema.world.validate(expanded, { element: event.target});
|
||||||
|
|
||||||
|
// validation from Number etc. itself has the error key just as "ranges.0.start"
|
||||||
|
// so fixing that here so that we can directly reference they html elements
|
||||||
|
const prefix = "l5r5e.tactical-grid-settings-world.";
|
||||||
|
const failures = Object.fromEntries(
|
||||||
|
Object.entries(validate?.asError()?.getAllFailures() ?? {}).map(([key, value]) => [
|
||||||
|
key.startsWith(prefix) ? key : `${prefix}${key}`,
|
||||||
|
value
|
||||||
|
])
|
||||||
|
);
|
||||||
|
|
||||||
|
// Return cleaned schema so that we have something that is somewhat correct we can save
|
||||||
|
return {
|
||||||
|
cleaned: TacticalGridSettingsL5R5E.#schema.world.clean(expanded),
|
||||||
|
failure: failures
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Applies a validation message to a form element.
|
||||||
|
*
|
||||||
|
* @param {HTMLElement} element - The element to apply validation to
|
||||||
|
* @param {string|null} message - The validation message, or null to clear
|
||||||
|
* @private
|
||||||
|
*/
|
||||||
|
static #applyValidationMessage(element, message) {
|
||||||
|
if (message) {
|
||||||
|
element.setCustomValidity(message);
|
||||||
|
element.dataset.tooltip = message;
|
||||||
|
element.ariaLabel = game.i18n.localize(element.dataset.tooltip);
|
||||||
|
game.tooltip.activate(element, {
|
||||||
|
direction: foundry.CONFIG.ux.TooltipManager.TOOLTIP_DIRECTIONS.RIGHT,
|
||||||
|
locked: true
|
||||||
|
});
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
element?.setCustomValidity("");
|
||||||
|
delete element?.dataset?.tooltip
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Applies validation state to all range band start fields.
|
||||||
|
*
|
||||||
|
* @param {Object} failures - Validation failures keyed by field name
|
||||||
|
* @private
|
||||||
|
*/
|
||||||
|
static #applyValidationState(failures) {
|
||||||
|
for (let i = 0; i < 7; i++) {
|
||||||
|
const name = `l5r5e.tactical-grid-settings-world.ranges.${i}.start`;
|
||||||
|
this.#applyValidationMessage(
|
||||||
|
document.getElementsByName(name)[0],
|
||||||
|
failures?.[name]?.message || null
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Handles form submission.
|
||||||
|
*
|
||||||
|
* @param {Event} event - The submission event
|
||||||
|
* @param {HTMLFormElement} form - The form element
|
||||||
|
* @param {foundry.applications.ux.FormDataExtended} formData - The submitted form data
|
||||||
|
* @returns {Promise<void>}
|
||||||
|
* @private
|
||||||
|
*/
|
||||||
|
static async #onSubmit(event, form, formData) {
|
||||||
|
const {
|
||||||
|
cleaned: cleanedWorldSettings,
|
||||||
|
failure: validationFailures
|
||||||
|
} = TacticalGridSettingsL5R5E.#validateAndCleanWorldSettings(formData, event);
|
||||||
|
TacticalGridSettingsL5R5E.#applyValidationState(validationFailures);
|
||||||
|
|
||||||
|
TacticalGridSettingsL5R5E.#setting.world = cleanedWorldSettings;
|
||||||
|
TacticalGridSettingsL5R5E.#setting.client = foundry.utils.expandObject(formData.object).l5r5e["tactical-grid-settings-client"];
|
||||||
|
|
||||||
|
const promises = [];
|
||||||
|
promises.push(game.settings.set(CONFIG.l5r5e.namespace, "tactical-grid-settings-world", TacticalGridSettingsL5R5E.#setting.world));
|
||||||
|
promises.push(game.settings.set(CONFIG.l5r5e.namespace, "tactical-grid-settings-client", TacticalGridSettingsL5R5E.#setting.client));
|
||||||
|
await Promise.all(promises);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Handles reset action to restore default settings.
|
||||||
|
*
|
||||||
|
* @param {Event} event - The reset event
|
||||||
|
* @returns {Promise<void>}
|
||||||
|
* @private
|
||||||
|
*/
|
||||||
|
static async #onReset(event) {
|
||||||
|
const client = TacticalGridSettingsL5R5E.clientSchema.clean();
|
||||||
|
const world = TacticalGridSettingsL5R5E.worldSchema.clean();
|
||||||
|
TacticalGridSettingsL5R5E.#setting = foundry.utils.deepClone({client: client, world: world});
|
||||||
|
|
||||||
|
await this.render({ force: false });
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
81
system/scripts/tatical-grid-rulers.js
Normal file
@@ -0,0 +1,81 @@
|
|||||||
|
function getRangeband(gridSettings, distance) {
|
||||||
|
const entries = Object.entries(gridSettings.ranges);
|
||||||
|
for (let i = entries.length - 1; i >= 0; i--) {
|
||||||
|
const [range, { start }] = entries[i];
|
||||||
|
if (distance >= start) {
|
||||||
|
return Number(range);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return NaN;
|
||||||
|
}
|
||||||
|
|
||||||
|
export class RulerL5r5e extends foundry.canvas.interaction.Ruler {
|
||||||
|
|
||||||
|
static WAYPOINT_LABEL_TEMPLATE = "systems/l5r5e/templates/" + "hud/tactical-grid-ruler.html"
|
||||||
|
|
||||||
|
/** @override */
|
||||||
|
_getWaypointLabelContext(waypoint, state) {
|
||||||
|
const context = super._getWaypointLabelContext(waypoint, state);
|
||||||
|
if (!context)
|
||||||
|
return;
|
||||||
|
|
||||||
|
const gridSettings = game.settings.get(CONFIG.l5r5e.namespace, "tactical-grid-settings-world");
|
||||||
|
if(gridSettings.enabled) {
|
||||||
|
const diagonalCost = game.canvas.grid.distance * waypoint.measurement.diagonals;
|
||||||
|
context.distance.total = waypoint.measurement.distance.toNearest(0.1) + diagonalCost; //Diagonals count twice
|
||||||
|
context.additional = {
|
||||||
|
label: game.i18n.format("l5r5e.tactical_grid.range_abbreviation", {range: getRangeband(gridSettings, waypoint.measurement.distance)})
|
||||||
|
};
|
||||||
|
}
|
||||||
|
return context;
|
||||||
|
}
|
||||||
|
|
||||||
|
/** @override */
|
||||||
|
_getSegmentStyle(waypoint) {
|
||||||
|
const context = super._getSegmentStyle(waypoint);
|
||||||
|
const client = game.settings.get(CONFIG.l5r5e.namespace, "tactical-grid-settings-client");
|
||||||
|
const gridSettings = game.settings.get(CONFIG.l5r5e.namespace, "tactical-grid-settings-world");
|
||||||
|
if(gridSettings.enabled) {
|
||||||
|
const rangeband = getRangeband(gridSettings, waypoint.measurement.distance);
|
||||||
|
context.color = client.ranges[rangeband].color;
|
||||||
|
}
|
||||||
|
return context;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export class TokenRulerL5r5e extends foundry.canvas.placeables.tokens.TokenRuler {
|
||||||
|
static WAYPOINT_LABEL_TEMPLATE = "systems/l5r5e/templates/" + "hud/tactical-grid-ruler.html"
|
||||||
|
|
||||||
|
/** @override */
|
||||||
|
_getWaypointLabelContext(waypoint, state) {
|
||||||
|
const context = super._getWaypointLabelContext(waypoint, state);
|
||||||
|
if (!context)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (!this.token.actor)
|
||||||
|
return context;
|
||||||
|
|
||||||
|
const gridSettings = game.settings.get(CONFIG.l5r5e.namespace, "tactical-grid-settings-world");
|
||||||
|
if(gridSettings.enabled) {
|
||||||
|
const diagonalCost = game.canvas.grid.distance * waypoint.measurement.diagonals;
|
||||||
|
context.cost.total = waypoint.measurement.cost.toNearest(0.1) + diagonalCost; //Diagonals count twice
|
||||||
|
context.additional = {
|
||||||
|
label: game.i18n.format("l5r5e.tactical_grid.range_abbreviation", {range: getRangeband(gridSettings, waypoint.measurement.distance)})
|
||||||
|
};
|
||||||
|
}
|
||||||
|
return context;
|
||||||
|
}
|
||||||
|
|
||||||
|
/** @override */
|
||||||
|
_getGridHighlightStyle(waypoint, offset) {
|
||||||
|
const context = super._getGridHighlightStyle(waypoint, offset);
|
||||||
|
const client = game.settings.get(CONFIG.l5r5e.namespace, "tactical-grid-settings-client");
|
||||||
|
const gridSettings = game.settings.get(CONFIG.l5r5e.namespace, "tactical-grid-settings-world");
|
||||||
|
if(gridSettings.enabled) {
|
||||||
|
const rangeband = getRangeband(gridSettings, waypoint.measurement.distance);
|
||||||
|
context.color = client.ranges[rangeband].color;
|
||||||
|
context.alpha = client.ranges[rangeband].alpha;
|
||||||
|
}
|
||||||
|
return context;
|
||||||
|
}
|
||||||
|
}
|
||||||
3
system/scripts/types.js
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
/**
|
||||||
|
* @typedef {"afflicted" | "bleeding" | "burning" | "centered" | "compromised" | "dazed" | "disoriented" | "dying" | "emboldened" | "enraged" | "exhausted" | "illness_coughing_illness" | "illness_fire_rash" | "illness_gut_sickness" | "illness_oozing_sore_disease" | "illness_unsteady_illness" | "immobilized" | "incapacitated" | "intoxicated" | "possessed" | "prone" | "silenced" | "unconscious" | "lightly_wounded_fire" | "lightly_wounded_water" | "lightly_wounded_air" | "lightly_wounded_earth" | "lightly_wounded_void" | "severely_wounded_fire" | "severely_wounded_water" | "severely_wounded_air" | "severely_wounded_earth" | "severely_wounded_void"} Condition
|
||||||
|
*/
|
||||||
@@ -20,5 +20,6 @@
|
|||||||
@import "../scss/skills";
|
@import "../scss/skills";
|
||||||
@import "../scss/items";
|
@import "../scss/items";
|
||||||
@import "../scss/twenty-questions";
|
@import "../scss/twenty-questions";
|
||||||
|
@import "../scss/tactical-grid";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -122,11 +122,6 @@ body {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Focus, Active */
|
/* Focus, Active */
|
||||||
* {
|
|
||||||
transition-property: background, color, border-color, text-shadow, box-shadow;
|
|
||||||
transition-duration: 0.5s;
|
|
||||||
transition-timing-function: ease;
|
|
||||||
}
|
|
||||||
input[type="text"]:focus,
|
input[type="text"]:focus,
|
||||||
input[type="number"]:focus,
|
input[type="number"]:focus,
|
||||||
input[type="password"]:focus,
|
input[type="password"]:focus,
|
||||||
@@ -309,4 +304,3 @@ a.compendium-link {
|
|||||||
color: #0096ff;
|
color: #0096ff;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -67,13 +67,21 @@
|
|||||||
border-radius: 4px;
|
border-radius: 4px;
|
||||||
background-color: rgba(0, 0, 0, 0.4);
|
background-color: rgba(0, 0, 0, 0.4);
|
||||||
padding: 3px;
|
padding: 3px;
|
||||||
|
display: flex;
|
||||||
|
}
|
||||||
|
.effect-delete {
|
||||||
|
width: 16px;
|
||||||
|
height: 16px;
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
background-size: contain;
|
||||||
|
text-align: end;
|
||||||
|
cursor: url("../assets/cursors/pointer.webp"), pointer;
|
||||||
}
|
}
|
||||||
.effect-icon {
|
.effect-icon {
|
||||||
width: 16px;
|
width: 16px;
|
||||||
height: 16px;
|
height: 16px;
|
||||||
background-repeat: no-repeat;
|
background-repeat: no-repeat;
|
||||||
background-size: contain;
|
background-size: contain;
|
||||||
float: left;
|
|
||||||
}
|
}
|
||||||
.effect-name {
|
.effect-name {
|
||||||
vertical-align: top;
|
vertical-align: top;
|
||||||
@@ -81,7 +89,6 @@
|
|||||||
text-overflow: ellipsis;
|
text-overflow: ellipsis;
|
||||||
white-space: nowrap;
|
white-space: nowrap;
|
||||||
color: $white;
|
color: $white;
|
||||||
float: right;
|
|
||||||
margin-left: 4px;
|
margin-left: 4px;
|
||||||
font-size: 14px;
|
font-size: 14px;
|
||||||
line-height: 16px;
|
line-height: 16px;
|
||||||
|
|||||||
32
system/styles/scss/tactical-grid.scss
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
|
||||||
|
// Set the label for in-world measurement to be the same as normal waypoint-label
|
||||||
|
@at-root #measurement .waypoint-label-additional {
|
||||||
|
color: var(--color-text-emphatic);
|
||||||
|
font-size: var(--font-size-24);
|
||||||
|
}
|
||||||
|
|
||||||
|
@at-root #tactical-grid-settings {
|
||||||
|
input[type="number"]:invalid {
|
||||||
|
background-color: red;
|
||||||
|
}
|
||||||
|
|
||||||
|
input[type="number"]:read-only {
|
||||||
|
border: none;
|
||||||
|
outline: none;
|
||||||
|
box-shadow: none;
|
||||||
|
background: transparent;
|
||||||
|
cursor: default;
|
||||||
|
pointer-events: none; /* not clickable or focusable */
|
||||||
|
user-select: none; /* text cannot be selected */
|
||||||
|
-webkit-user-select: none; /* Safari/Chrome */
|
||||||
|
-moz-user-select: none; /* Firefox */
|
||||||
|
}
|
||||||
|
|
||||||
|
.range_band {
|
||||||
|
display: flex;
|
||||||
|
flex-flow: wrap;
|
||||||
|
fieldset {
|
||||||
|
flex: 25%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -7,7 +7,7 @@
|
|||||||
width: 4rem;
|
width: 4rem;
|
||||||
height: 41.58rem;
|
height: 41.58rem;
|
||||||
margin: 1%;
|
margin: 1%;
|
||||||
line-height: 5rem;
|
line-height: 3rem;
|
||||||
padding: 0.25rem;
|
padding: 0.25rem;
|
||||||
border-bottom: 0 none;
|
border-bottom: 0 none;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -609,6 +609,7 @@ form#settings-config {
|
|||||||
|
|
||||||
|
|
||||||
.autocomplete-wrapper {
|
.autocomplete-wrapper {
|
||||||
|
position: relative;
|
||||||
.autocomplete-list {
|
.autocomplete-list {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
border: 1px solid #6e7e6b;
|
border: 1px solid #6e7e6b;
|
||||||
|
|||||||
@@ -7,8 +7,8 @@
|
|||||||
"changelog": "https://gitlab.com/teaml5r/l5r5e/-/blob/master/CHANGELOG.md",
|
"changelog": "https://gitlab.com/teaml5r/l5r5e/-/blob/master/CHANGELOG.md",
|
||||||
"license": "https://gitlab.com/teaml5r/l5r5e/-/blob/master/LICENSE.md",
|
"license": "https://gitlab.com/teaml5r/l5r5e/-/blob/master/LICENSE.md",
|
||||||
"manifest": "https://gitlab.com/teaml5r/l5r5e/-/raw/master/system/system.json",
|
"manifest": "https://gitlab.com/teaml5r/l5r5e/-/raw/master/system/system.json",
|
||||||
"download": "https://gitlab.com/teaml5r/l5r5e/-/jobs/artifacts/v1.13.0/raw/l5r5e.zip?job=build",
|
"download": "https://gitlab.com/teaml5r/l5r5e/-/jobs/artifacts/v1.13.3/raw/l5r5e.zip?job=build",
|
||||||
"version": "1.13.0",
|
"version": "1.13.3",
|
||||||
"compatibility": {
|
"compatibility": {
|
||||||
"minimum": "13",
|
"minimum": "13",
|
||||||
"verified": "13",
|
"verified": "13",
|
||||||
|
|||||||
@@ -36,10 +36,10 @@
|
|||||||
</label>
|
</label>
|
||||||
<p class="item-description"> {{localize 'l5r5e.attributes.focustip'}}</p>
|
<p class="item-description"> {{localize 'l5r5e.attributes.focustip'}}</p>
|
||||||
</li>
|
</li>
|
||||||
<li class="vigilance-content {{#if data.system.is_compromised}}compromised{{/if}}">
|
<li class="vigilance-content {{#if data.system.is_afflicted_or_compromised}}compromised{{/if}}">
|
||||||
<label class="attribute-label">
|
<label class="attribute-label">
|
||||||
<strong>{{localize 'l5r5e.attributes.vigilance'}}</strong>
|
<strong>{{localize 'l5r5e.attributes.vigilance'}}</strong>
|
||||||
{{#if data.system.is_compromised}}
|
{{#if data.system.is_afflicted_or_compromised}}
|
||||||
<input class="centered-input" type="number" value="1" disabled/>
|
<input class="centered-input" type="number" value="1" disabled/>
|
||||||
{{else}}
|
{{else}}
|
||||||
<input class="centered-input" type="number" name="system.vigilance" value="{{data.system.vigilance}}" data-dtype="Number" disabled/>
|
<input class="centered-input" type="number" name="system.vigilance" value="{{data.system.vigilance}}" data-dtype="Number" disabled/>
|
||||||
|
|||||||
@@ -2,7 +2,10 @@
|
|||||||
{{#each actor.effects as |effect|}}
|
{{#each actor.effects as |effect|}}
|
||||||
<li class="effect-container" title="{{name}}">
|
<li class="effect-container" title="{{name}}">
|
||||||
<div class="effect-icon" style="background-image: url({{effect.img}})"></div>
|
<div class="effect-icon" style="background-image: url({{effect.img}})"></div>
|
||||||
<div class="effect-name"><label>{{name}}</label></div>
|
<div data-effect-id="{{effect.id}}" class="effect-name"><label>{{name}}</label></div>
|
||||||
|
{{#if ../data.editable_not_soft_locked}}
|
||||||
|
<div data-effect-id="{{effect.id}}" class="effect-delete" title="{{localize 'Delete'}}"><i class="fas fa-remove"></i></div>
|
||||||
|
{{/if}}
|
||||||
</li>
|
</li>
|
||||||
{{/each}}
|
{{/each}}
|
||||||
</ul>
|
</ul>
|
||||||
|
|||||||
@@ -36,10 +36,10 @@
|
|||||||
</label>
|
</label>
|
||||||
<p class="item-description"> {{localize 'l5r5e.attributes.focustip'}}</p>
|
<p class="item-description"> {{localize 'l5r5e.attributes.focustip'}}</p>
|
||||||
</li>
|
</li>
|
||||||
<li class="vigilance-content {{#if data.system.is_compromised}}compromised{{/if}}">
|
<li class="vigilance-content {{#if data.system.is_afflicted_or_compromised}}compromised{{/if}}">
|
||||||
<label class="attribute-label">
|
<label class="attribute-label">
|
||||||
<strong>{{localize 'l5r5e.attributes.vigilance'}}</strong>
|
<strong>{{localize 'l5r5e.attributes.vigilance'}}</strong>
|
||||||
{{#if data.system.is_compromised}}
|
{{#if data.system.is_afflicted_or_compromised}}
|
||||||
<input class="centered-input" type="number" value="1" disabled/>
|
<input class="centered-input" type="number" value="1" disabled/>
|
||||||
{{else}}
|
{{else}}
|
||||||
<input class="centered-input" type="number" name="system.vigilance" value="{{data.system.vigilance}}" data-dtype="Number" min="0" placeholder="0" {{^if data.editable_not_soft_locked}}disabled{{/if}}/>
|
<input class="centered-input" type="number" name="system.vigilance" value="{{data.system.vigilance}}" data-dtype="Number" min="0" placeholder="0" {{^if data.editable_not_soft_locked}}disabled{{/if}}/>
|
||||||
|
|||||||
@@ -2,7 +2,10 @@
|
|||||||
{{#each actor.effects as |effect|}}
|
{{#each actor.effects as |effect|}}
|
||||||
<li class="effect-container" title="{{name}}">
|
<li class="effect-container" title="{{name}}">
|
||||||
<div class="effect-icon" style="background-image: url({{effect.img}})"></div>
|
<div class="effect-icon" style="background-image: url({{effect.img}})"></div>
|
||||||
<div class="effect-name"><label>{{name}}</label></div>
|
<div data-effect-id="{{effect.id}}" class="effect-name"><label>{{name}}</label></div>
|
||||||
|
{{#if ../data.editable_not_soft_locked}}
|
||||||
|
<div data-effect-id="{{effect.id}}" class="effect-delete" title="{{localize 'Delete'}}"><i class="fas fa-remove"></i></div>
|
||||||
|
{{/if}}
|
||||||
</li>
|
</li>
|
||||||
{{/each}}
|
{{/each}}
|
||||||
</ul>
|
</ul>
|
||||||
|
|||||||
@@ -69,7 +69,7 @@
|
|||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
{{actor.system.focus}}
|
{{actor.system.focus}}
|
||||||
/ {{#if actor.system.is_compromised}}<span class="badvalue">1</span>{{else}}{{actor.system.vigilance}}{{/if}}
|
/ {{#if actor.system.is_afflicted_or_compromised}}<span class="badvalue">1</span>{{else}}{{actor.system.vigilance}}{{/if}}
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<a title="{{localize 'l5r5e.gm.monitor.mouse_control'}}" data-actor-uuid="{{actor.uuid}}" data-type="void_points" class="actor-modify-control">
|
<a title="{{localize 'l5r5e.gm.monitor.mouse_control'}}" data-actor-uuid="{{actor.uuid}}" data-type="void_points" class="actor-modify-control">
|
||||||
|
|||||||
@@ -68,7 +68,7 @@
|
|||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
{{actor.system.focus}}
|
{{actor.system.focus}}
|
||||||
/ {{#if actor.system.is_compromised}}<span class="badvalue">1</span>{{else}}{{actor.system.vigilance}}{{/if}}
|
/ {{#if actor.system.is_afflicted_or_compromised}}<span class="badvalue">1</span>{{else}}{{actor.system.vigilance}}{{/if}}
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<a title="{{localize 'l5r5e.gm.monitor.mouse_control'}}" data-actor-uuid="{{actor.uuid}}" data-action="modify_voidPoint" class="actor-modify-control">
|
<a title="{{localize 'l5r5e.gm.monitor.mouse_control'}}" data-actor-uuid="{{actor.uuid}}" data-action="modify_voidPoint" class="actor-modify-control">
|
||||||
|
|||||||
45
system/templates/hud/tactical-grid-ruler.html
Normal file
@@ -0,0 +1,45 @@
|
|||||||
|
<div class="waypoint-label vertical {{cssClass}}">
|
||||||
|
<div>
|
||||||
|
{{#if action.icon}}
|
||||||
|
<i class="icon {{action.icon}}"></i>
|
||||||
|
{{else if action.label}}
|
||||||
|
<label class="action-label">Action: {{localize action.label}}</label>
|
||||||
|
{{/if}}
|
||||||
|
{{#if cost}}
|
||||||
|
<span class="total-measurement">{{cost.total}}</span>
|
||||||
|
{{#if cost.delta}}
|
||||||
|
<span class="delta-measurement">Cost Delta: ({{cost.delta}})</span>
|
||||||
|
{{/if}}
|
||||||
|
{{else}}
|
||||||
|
<span class="total-measurement">{{distance.total}} {{units}}</span>
|
||||||
|
{{#if distance.delta}}
|
||||||
|
<span class="delta-measurement">Total Measure: ({{distance.delta}})</span>
|
||||||
|
{{/if}}
|
||||||
|
{{/if}}
|
||||||
|
{{#if (and elevation (not elevation.hidden))}}
|
||||||
|
<i class="icon {{elevation.icon}}"></i>
|
||||||
|
<span class="total-elevation">{{elevation.total}} {{units}}</span>
|
||||||
|
{{#if elevation.delta}}
|
||||||
|
<span class="delta-elevation">({{elevation.delta}})</span>
|
||||||
|
{{/if}}
|
||||||
|
{{/if}}
|
||||||
|
{{#if secret}}
|
||||||
|
<i class="icon fa-solid fa-eye-slash"></i>
|
||||||
|
{{/if}}
|
||||||
|
</div>
|
||||||
|
{{#if additional}}
|
||||||
|
<div class="waypoint-label-additional {{additional.cssClass}}">
|
||||||
|
{{#if additional.icon}}
|
||||||
|
<i class="icon {{additional.icon}}"></i>
|
||||||
|
{{/if}}
|
||||||
|
<span class="waypoint-label-text">{{additional.label}} {{additional.cost}}</span>
|
||||||
|
{{#if additional.imgs.length}}
|
||||||
|
{{#each additional.imgs as |img|}}
|
||||||
|
<img class="icon" src="{{img}}">
|
||||||
|
{{/each}}
|
||||||
|
{{else}}
|
||||||
|
<img class="icon" src="{{additional.img}}">
|
||||||
|
{{/if}}
|
||||||
|
</div>
|
||||||
|
{{/if}}
|
||||||
|
</div>
|
||||||
37
system/templates/settings/tactical-grid-settings.html
Normal file
@@ -0,0 +1,37 @@
|
|||||||
|
<section class="standard-form scrollable">
|
||||||
|
{{!-- GM-only: Enable/Disable Tactical Grid --}}
|
||||||
|
{{#if isGm}}
|
||||||
|
<fieldset>
|
||||||
|
{{formGroup tactical_grid_enabled.field value=tactical_grid_enabled.value localize=true}}
|
||||||
|
</fieldset>
|
||||||
|
{{/if}}
|
||||||
|
|
||||||
|
{{!-- Range Band Configuration --}}
|
||||||
|
<div class="range_band">
|
||||||
|
{{#each rangeBands as |band|}}
|
||||||
|
<fieldset>
|
||||||
|
<legend>
|
||||||
|
{{localize "l5r5e.tactical_grid.range_band" band=band.worldField.name}}
|
||||||
|
</legend>
|
||||||
|
|
||||||
|
{{!-- GM-only: Range start distance --}}
|
||||||
|
{{#if @root.isGm}}
|
||||||
|
{{formGroup band.worldField.fields.start
|
||||||
|
value=band.worldValue.start
|
||||||
|
localize=true
|
||||||
|
type="number"
|
||||||
|
readonly=(eq band.index 0)}}
|
||||||
|
{{/if}}
|
||||||
|
|
||||||
|
{{!-- Client: Visual settings --}}
|
||||||
|
{{formGroup band.clientFields.fields.color
|
||||||
|
value=band.clientValue.color
|
||||||
|
localize=true}}
|
||||||
|
|
||||||
|
{{formGroup band.clientFields.fields.alpha
|
||||||
|
value=band.clientValue.alpha
|
||||||
|
localize=true}}
|
||||||
|
</fieldset>
|
||||||
|
{{/each}}
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||