Compare commits

...

34 Commits

Author SHA1 Message Date
Vlyan
e54a105222 Release v1.13.1 - Conditions & Fixes 2025-09-21 16:55:57 +02:00
Vlyan
bee911df5e Merge branch 'dev' into 'dev'
apply incapacitated if character's fatigue goes beyond endurance, simplify...

See merge request teaml5r/l5r5e!46
2025-09-11 15:35:03 +00:00
Bernhard Posselt
e2e533d481 apply incapacitated if character's fatigue goes beyond endurance, simplify update logic since composure and endurance are derived attributes which aren't persisted on the actor's data 2025-09-06 11:14:13 +02:00
Vlyan
2518ded84f only add l5r conditions instead of replacing them all 2025-09-06 09:48:02 +02:00
Vlyan
fab88401ea Merge branch 'dev' into 'dev'
Automatically add compromised condition when strife goes beyond max and remove...

See merge request teaml5r/l5r5e!45
2025-09-06 07:38:11 +00:00
Putty
7fed2f0a98 Automatically add compromised condition when strife goes beyond max and remove... 2025-09-06 07:38:10 +00:00
Vlyan
7c3ef81dec updated conditions on types 2025-09-05 10:45:09 +02:00
Vlyan
cbb52bf3aa Merge branch 'automated-exhausted-condition' into 'dev'
Automated exhausted condition

See merge request teaml5r/l5r5e!44
2025-09-05 08:34:20 +00:00
Putty
86f73a96d0 Automated exhausted condition 2025-09-05 08:34:20 +00:00
Vlyan
dbba39373b basic tooltip fix by KitCat #62 2025-09-05 10:20:55 +02:00
Vlyan
30455759e8 Properties loading optimizations by KitCat 2025-09-05 09:53:48 +02:00
Vlyan
eb675f24ea Added ability to remove condition from actor sheet + journal on click. 2025-09-04 13:18:17 +02:00
Vlyan
1357ec9b6d Merge branch 'conditions' into 'dev'
Implement token conditions

See merge request teaml5r/l5r5e!42
2025-09-04 07:53:36 +00:00
Vlyan
396986fefd Merge branch 'issue65_calling_map_on_set' into 'dev'
Fixing using map on Set causing issues. Renamed a few variables to try and...

See merge request teaml5r/l5r5e!43
2025-09-04 07:49:09 +00:00
Vlyan
c591cee153 #66 fix fade configuration css 2025-09-04 09:47:07 +02:00
Litasa
54ae4fdb63 Fixing using map on Set causing issues. Renamed a few variables to try and make it more clear what type they are 2025-09-03 20:09:39 +00:00
Bernhard Posselt
e846a0a30c implement token conditions 2025-09-03 14:11:06 +02:00
Vlyan
54aafefcf4 Release v1.13.0 2025-08-24 13:24:09 +02:00
Vlyan
c138b52c30 add chat migration 2025-08-24 10:40:55 +02:00
Vlyan
8b77966287 fixed some css & prosemirror 2025-08-22 12:47:39 +02:00
Vlyan
30e8da25a2 fixed some css 2025-08-20 17:37:01 +02:00
Vlyan
0d71accfd5 Sync internal import with CofW 2025-08-19 12:38:30 +02:00
Vlyan
02db7b6fe2 Merge branch 'children-of-the-five-winds_update' into 'dev'
Children of the five winds update

See merge request teaml5r/l5r5e!41
2025-08-18 14:55:02 +00:00
Litasa
3e75b54958 Children of the five winds update 2025-08-18 14:55:02 +00:00
Vlyan
80b9703318 Merge branch 'dev_popupmanager' into 'dev'
Moved the popup manager into its own file. Made it more robust so there should...

See merge request teaml5r/l5r5e!40
2025-07-25 15:48:22 +00:00
Litasa
6a8d25f140 Moved the popup manager into its own file. Made it more robust so there should... 2025-07-25 15:48:21 +00:00
Vlyan
e9b7b5b42f Merge branch 'v13_update_pt2' into 'dev'
V13 update pt2

See merge request teaml5r/l5r5e!39
2025-06-30 17:16:09 +00:00
Litasa
1bc01d0741 V13 update pt2 2025-06-30 17:16:09 +00:00
Vlyan
a9748bdf03 Merge branch 'v13_update' into 'dev'
Updating to v13, various changes to make it work

See merge request teaml5r/l5r5e!38
2025-05-30 08:58:14 +00:00
Litasa
1649c2b032 Updating to v13, various changes to make it work 2025-05-30 08:58:14 +00:00
Vlyan
897ccefd71 Compat FVTT v13 - adding namespaces 2025-05-01 14:41:43 +02:00
Vlyan
95fa36d7a8 Merge branch 'gm_toolbox_monitor_application_v2' into 'dev'
ApplicationV2 GM Toolbox and GM Monitor

See merge request teaml5r/l5r5e!37
2025-05-01 12:05:54 +00:00
Litasa
9d8c1431be ApplicationV2 GM Toolbox and GM Monitor 2025-05-01 12:05:54 +00:00
Vlyan
2c883d2be3 Fix Type "Beseech Hida's Might" 2025-04-02 14:50:47 +02:00
126 changed files with 3714 additions and 1888 deletions

View File

@@ -6,6 +6,29 @@ 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.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)
__! Be certain to carefully back up any critical user data before installing this update !__
- Updated the System to FoundryVTT v13.
- Compendiums
- Added English compendium for `Children of the Five Winds`.
- Added French translation for `Writ of the Wild`.
- 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.
- 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).
## 1.12.3 - 13/03/2025 - Fixes and Compendiums Filters (Thx to Litasa) ## 1.12.3 - 13/03/2025 - Fixes and Compendiums Filters (Thx to Litasa)
- Added Compendiums Filters (#41) - Added Compendiums Filters (#41)
- Separated the reference and the page number from book reference for filtering purpose. - Separated the reference and the page number from book reference for filtering purpose.
@@ -43,12 +66,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).
@@ -64,8 +87,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

View File

@@ -3,7 +3,7 @@
![Banner Legend of the Five Rings](./l5rBan.jpg) ![Banner Legend of the Five Rings](./l5rBan.jpg)
[![Buy Me a Coffee](./tags-bymecoffee.svg)](https://ko-fi.com/vlyan) [![Buy Me a Coffee](./tags-bymecoffee.svg)](https://ko-fi.com/vlyan)
[![FoundryVTT version](https://img.shields.io/badge/FVTT-v12-informational)](https://foundryvtt.com/) [![FoundryVTT version](https://img.shields.io/badge/FVTT-v13-informational)](https://foundryvtt.com/)
[![Forge Installs](https://img.shields.io/badge/dynamic/json?label=Forge%20Installs&query=package.installs&suffix=%25&url=https%3A%2F%2Fforge-vtt.com%2Fapi%2Fbazaar%2Fpackage%2Fl5r5e&colorB=4aa94a)](https://forge-vtt.com/bazaar#package=l5r5e) [![Forge Installs](https://img.shields.io/badge/dynamic/json?label=Forge%20Installs&query=package.installs&suffix=%25&url=https%3A%2F%2Fforge-vtt.com%2Fapi%2Fbazaar%2Fpackage%2Fl5r5e&colorB=4aa94a)](https://forge-vtt.com/bazaar#package=l5r5e)
[![Foundry Hub Endorsements](https://img.shields.io/endpoint?logoColor=white&url=https%3A%2F%2Fwww.foundryvtt-hub.com%2Fwp-json%2Fhubapi%2Fv1%2Fpackage%2Fl5r5e%2Fshield%2Fendorsements)](https://www.foundryvtt-hub.com/package/l5r5e/) [![Foundry Hub Endorsements](https://img.shields.io/endpoint?logoColor=white&url=https%3A%2F%2Fwww.foundryvtt-hub.com%2Fwp-json%2Fhubapi%2Fv1%2Fpackage%2Fl5r5e%2Fshield%2Fendorsements)](https://www.foundryvtt-hub.com/package/l5r5e/)
[![Foundry Hub Comments](https://img.shields.io/endpoint?logoColor=white&url=https%3A%2F%2Fwww.foundryvtt-hub.com%2Fwp-json%2Fhubapi%2Fv1%2Fpackage%2Fl5r5e%2Fshield%2Fcomments)](https://www.foundryvtt-hub.com/package/l5r5e/) [![Foundry Hub Comments](https://img.shields.io/endpoint?logoColor=white&url=https%3A%2F%2Fwww.foundryvtt-hub.com%2Fwp-json%2Fhubapi%2Fv1%2Fpackage%2Fl5r5e%2Fshield%2Fcomments)](https://www.foundryvtt-hub.com/package/l5r5e/)

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

View File

@@ -156,6 +156,30 @@
"source_reference": { "source_reference": {
"page": "97" "page": "97"
} }
},
{
"id": "Mirror Armor",
"name": "Mirror Armor (WIP)",
"description": "",
"source_reference": {
"page": ""
}
},
{
"id": "Unicorn Barding",
"name": "Unicorn Barding (WIP)",
"description": "",
"source_reference": {
"page": ""
}
},
{
"id": "Yuki: The Ancestral Armor of the Unicorn Clan [Blessed Treasure]",
"name": "Yuki: The Ancestral Armor of the Unicorn Clan [Blessed Treasure] (WIP)",
"description": "",
"source_reference": {
"page": ""
}
} }
] ]
} }

View File

@@ -148,6 +148,30 @@
"source_reference": { "source_reference": {
"page": "105" "page": "105"
} }
},
{
"id": "Ujik Horsebow Pattern",
"name": "Ujik Horsebow Pattern (WIP)",
"description": "",
"source_reference": {
"page": ""
}
},
{
"id": "Utsuko Pattern",
"name": "Utsuko Pattern (WIP)",
"description": "",
"source_reference": {
"page": ""
}
},
{
"id": "Watered Steel Pattern",
"name": "Watered Steel Pattern (WIP)",
"description": "",
"source_reference": {
"page": ""
}
} }
] ]
} }

View File

@@ -892,6 +892,86 @@
"source_reference": { "source_reference": {
"page": "96" "page": "96"
} }
},
{
"id": "Astrolabe",
"name": "Astrolabe (WIP)",
"description": "",
"source_reference": {
"page": ""
}
},
{
"id": "Horo (Arrow Cloak)",
"name": "Horo (Arrow Cloak) (WIP)",
"description": "",
"source_reference": {
"page": ""
}
},
{
"id": "Lantern (Personal)",
"name": "Lantern (Personal) (WIP)",
"description": "",
"source_reference": {
"page": ""
}
},
{
"id": "Mineral-Oil Lamp",
"name": "Mineral-Oil Lamp (WIP)",
"description": "",
"source_reference": {
"page": ""
}
},
{
"id": "Prayer Rug",
"name": "Prayer Rug (WIP)",
"description": "",
"source_reference": {
"page": ""
}
},
{
"id": "Sand Clock",
"name": "Sand Clock (WIP)",
"description": "",
"source_reference": {
"page": ""
}
},
{
"id": "Traveling Board Games",
"name": "Traveling Board Games (WIP)",
"description": "",
"source_reference": {
"page": ""
}
},
{
"id": "Word of the Prophet",
"name": "Word of the Prophet (WIP)",
"description": "",
"source_reference": {
"page": ""
}
},
{
"id": "Talisman of the Sun [Blessed Treasure]",
"name": "Talisman of the Sun [Blessed Treasure] (WIP)",
"description": "",
"source_reference": {
"page": ""
}
},
{
"id": "Fox Pipe [Blessed Treasure]",
"name": "Fox Pipe [Blessed Treasure] (WIP)",
"description": "",
"source_reference": {
"page": ""
}
} }
] ]
} }

View File

@@ -213,67 +213,106 @@
} }
}, },
"Illness: Oozing Sore Disease": { "Illness: Oozing Sore Disease": {
"name": "Illness: Oozing Sore Disease (WIP)", "name": "Maladie : Bubons purulents",
"pages": { "pages": {
"Figure: Illness: Oozing Sore Disease": { "Figure: Illness: Oozing Sore Disease": {
"name": "Illness: Oozing Sore Disease (WIP) - Image", "name": "Maladie : Bubons purulents - Image",
"src": "systems/l5r5e/assets/icons/social.svg" "src": "icons/svg/eye.svg"
}, },
"Illness: Oozing Sore Disease": { "Illness: Oozing Sore Disease": {
"name": "Illness: Oozing Sore Disease (WIP)", "name": "Maladie : Bubons purulents",
"text": "<blockquote>Les Édits de la Nature</blockquote>" "text": "<blockquote>Les Édits de la Nature p.140</blockquote>"
} }
} }
}, },
"Illness: Gut Sickness": { "Illness: Gut Sickness": {
"name": "Illness: Gut Sickness (WIP)", "name": "Maladie : Mal des entrailles",
"pages": { "pages": {
"Figure: Illness: Gut Sickness": { "Figure: Illness: Gut Sickness": {
"name": "Illness: Gut Sickness (WIP) - Image", "name": "Maladie : Mal des entrailles - Image",
"src": "systems/l5r5e/assets/icons/social.svg" "src": "icons/svg/poison.svg"
}, },
"Illness: Gut Sickness": { "Illness: Gut Sickness": {
"name": "Illness: Gut Sickness (WIP)", "name": "Maladie : Mal des entrailles",
"text": "<blockquote>Les Édits de la Nature</blockquote>" "text": "<blockquote>Les Édits de la Nature p.141</blockquote>"
} }
} }
}, },
"Illness: Coughing Illness": { "Illness: Coughing Illness": {
"name": "Illness: Coughing Illness (WIP)", "name": "Maladie : Mauvaise toux",
"pages": { "pages": {
"Figure: Illness: Coughing Illness": { "Figure: Illness: Coughing Illness": {
"name": "Illness: Coughing Illness (WIP) - Image", "name": "Maladie : Mauvaise toux - Image",
"src": "systems/l5r5e/assets/icons/social.svg" "src": "icons/svg/poison.svg"
}, },
"Illness: Coughing Illness": { "Illness: Coughing Illness": {
"name": "Illness: Coughing Illness (WIP)", "name": "Maladie : Mauvaise toux",
"text": "<blockquote>Les Édits de la Nature</blockquote>" "text": "<blockquote>Les Édits de la Nature p.141</blockquote>"
} }
} }
}, },
"Illness: Unsteady Illness": { "Illness: Unsteady Illness": {
"name": "Illness: Unsteady Illness (WIP)", "name": "Maladie : Vertiges",
"pages": { "pages": {
"Figure: Illness: Unsteady Illness": { "Figure: Illness: Unsteady Illness": {
"name": "Illness: Unsteady Illness (WIP) - Image", "name": "Maladie : Vertiges - Image",
"src": "systems/l5r5e/assets/icons/social.svg" "src": "icons/svg/daze.svg"
}, },
"Illness: Unsteady Illness": { "Illness: Unsteady Illness": {
"name": "Illness: Unsteady Illness (WIP)", "name": "Maladie : Vertiges",
"text": "<blockquote>Les Édits de la Nature</blockquote>" "text": "<blockquote>Les Édits de la Nature p.141</blockquote>"
} }
} }
}, },
"Illness: Fire Rash": { "Illness: Fire Rash": {
"name": "Illness: Fire Rash (WIP)", "name": "Maladie : Rougeurs",
"pages": { "pages": {
"Figure: Illness: Fire Rash": { "Figure: Illness: Fire Rash": {
"name": "Illness: Fire Rash (WIP) - Image", "name": "Maladie : Rougeurs - Image",
"src": "systems/l5r5e/assets/icons/social.svg" "src": "icons/svg/fire.svg"
}, },
"Illness: Fire Rash": { "Illness: Fire Rash": {
"name": "Illness: Fire Rash (WIP)", "name": "Maladie : Rougeurs",
"text": "<blockquote>Les Édits de la Nature</blockquote>" "text": "<blockquote>Les Édits de la Nature p.141</blockquote>"
}
}
},
"Centered": {
"name": "Centered (WIP)",
"pages": {
"Figure: Centered": {
"name": "Centered (WIP) - Image",
"src": "systems/l5r5e/assets/icons/social.svg"
},
"Centered": {
"name": "Centered (WIP)",
"text": "<blockquote>Les Enfants des Cinq Vents</blockquote>"
}
}
},
"Emboldened": {
"name": "Emboldened (WIP)",
"pages": {
"Figure: Emboldened": {
"name": "Emboldened (WIP) - Image",
"src": "systems/l5r5e/assets/icons/social.svg"
},
"Emboldened": {
"name": "Emboldened (WIP)",
"text": "<blockquote>Les Enfants des Cinq Vents</blockquote>"
}
}
},
"Possessed": {
"name": "Possessed (WIP)",
"pages": {
"Figure: Possessed": {
"name": "Possessed (WIP) - Image",
"src": "icons/svg/terror.svg"
},
"Possessed": {
"name": "Possessed (WIP)",
"text": "<blockquote>Les Enfants des Cinq Vents</blockquote>"
} }
} }
} }

File diff suppressed because one or more lines are too long

View File

@@ -135,15 +135,15 @@
} }
}, },
"Imbalanced (One or More Elements) Variant": { "Imbalanced (One or More Elements) Variant": {
"name": "Imbalanced (One or More Elements) Variant (WIP)", "name": "Déséquilibré (un ou plusieurs éléments) variante",
"pages": { "pages": {
"Figure: Imbalanced (One or More Elements) Variant": { "Figure: Imbalanced (One or More Elements) Variant": {
"name": "Imbalanced (One or More Elements) Variant (WIP) - Image", "name": "Déséquilibré (un ou plusieurs éléments) variante - Image",
"src": "icons/svg/stoned.svg" "src": "icons/svg/stoned.svg"
}, },
"Imbalanced (One or More Elements) Variant": { "Imbalanced (One or More Elements) Variant": {
"name": "Imbalanced (One or More Elements) Variant (WIP)", "name": "Déséquilibré (un ou plusieurs éléments) variante",
"text": "<blockquote>Les Édits de la Nature</blockquote>" "text": "<blockquote>Les Édits de la Nature p.139</blockquote>"
} }
} }
} }

View File

@@ -746,26 +746,53 @@
}, },
{ {
"id": "Insomniac", "id": "Insomniac",
"name": "Insomniac (WIP)", "name": "Insomniaque",
"types": "Mental", "types": "Mental",
"description": "", "description": "",
"source_reference": { "source_reference": {
"page": "" "page": "104"
} }
}, },
{ {
"id": "Out of Shape", "id": "Out of Shape",
"name": "Out of Shape (WIP)", "name": "Petite forme",
"types": "Physique", "types": "Physique",
"description": "", "description": "",
"source_reference": {
"page": "105"
}
},
{
"id": "Stalked by [Creature]",
"name": "Poursuivi par [une créature]",
"types": "Relations, Mental, Spirituel",
"description": "",
"source_reference": {
"page": "105"
}
},
{
"id": "Lost Family History",
"name": "Lost Family History (WIP)",
"types": "Relations, Matériel",
"description": "",
"source_reference": { "source_reference": {
"page": "" "page": ""
} }
}, },
{ {
"id": "Stalked by [Creature]", "id": "Penalty",
"name": "Stalked by [Creature] (WIP)", "name": "Penalty (WIP)",
"types": "Relations, Mental, Spirituel", "types": "Infamie, Social",
"description": "",
"source_reference": {
"page": ""
}
},
{
"id": "Schism in Status",
"name": "Schism in Status (WIP)",
"types": "Infamie, Relations",
"description": "", "description": "",
"source_reference": { "source_reference": {
"page": "" "page": ""

View File

@@ -359,7 +359,43 @@
}, },
{ {
"id": "Fear of [Common Creature]", "id": "Fear of [Common Creature]",
"name": "Fear of [Common Creature] (WIP)", "name": "Phobie des [Créature Ordinaire]",
"types": "Mental",
"description": "",
"source_reference": {
"page": "106"
}
},
{
"id": "Fear of Mediocrity",
"name": "Crainte de la médiocrité",
"types": "Relations, Mental",
"description": "",
"source_reference": {
"page": "105"
}
},
{
"id": "Fear of Poison",
"name": "Peur du poison",
"types": "Mental",
"description": "",
"source_reference": {
"page": "106"
}
},
{
"id": "Animal Signs",
"name": "Animal Signs (WIP)",
"types": "Mental, Spirituel",
"description": "",
"source_reference": {
"page": ""
}
},
{
"id": "Disdain for Urban Sprawl",
"name": "Disdain for Urban Sprawl (WIP)",
"types": "Mental", "types": "Mental",
"description": "", "description": "",
"source_reference": { "source_reference": {
@@ -367,17 +403,8 @@
} }
}, },
{ {
"id": "Fear of Mediocrity", "id": "Tip of the Tongue",
"name": "Fear of Mediocrity (WIP)", "name": "Tip of the Tongue (WIP)",
"types": "Relations, Mental",
"description": "",
"source_reference": {
"page": ""
}
},
{
"id": "Fear of Poison",
"name": "Fear of Poison (WIP)",
"types": "Mental", "types": "Mental",
"description": "", "description": "",
"source_reference": { "source_reference": {

View File

@@ -620,26 +620,53 @@
}, },
{ {
"id": "Knowledgeable Wilderness Guide", "id": "Knowledgeable Wilderness Guide",
"name": "Knowledgeable Wilderness Guide (WIP)", "name": "Guide de plein air expert",
"types": "Relations, Spirituel", "types": "Relations, Spirituel",
"description": "", "description": "",
"source_reference": { "source_reference": {
"page": "" "page": "102"
} }
}, },
{ {
"id": "Skilled Midwife", "id": "Skilled Midwife",
"name": "Skilled Midwife (WIP)", "name": "Sage-femme compétente",
"types": "Relations", "types": "Relations",
"description": "", "description": "",
"source_reference": {
"page": "102"
}
},
{
"id": "Thoughtful Arbiter",
"name": "Arbitre réfléchi",
"types": "Relations",
"description": "",
"source_reference": {
"page": "102"
}
},
{
"id": "Affinity with [Animal Type]",
"name": "Affinity with [Animal Type] (WIP)",
"types": "Renommée, Relations",
"description": "",
"source_reference": { "source_reference": {
"page": "" "page": ""
} }
}, },
{ {
"id": "Thoughtful Arbiter", "id": "Legal Scholarship",
"name": "Thoughtful Arbiter (WIP)", "name": "Legal Scholarship (WIP)",
"types": "Relations", "types": "Relations, Social",
"description": "",
"source_reference": {
"page": ""
}
},
{
"id": "Syncretic Philosophy",
"name": "Syncretic Philosophy (WIP)",
"types": "Relations, Mental",
"description": "", "description": "",
"source_reference": { "source_reference": {
"page": "" "page": ""

View File

@@ -377,17 +377,44 @@
}, },
{ {
"id": "Charity", "id": "Charity",
"name": "Charity (WIP)", "name": "Charité",
"types": "Relations, Mental", "types": "Relations, Mental",
"description": "", "description": "",
"source_reference": {
"page": "103"
}
},
{
"id": "Kintsugi",
"name": "Kintsugi",
"types": "Mental, Physique",
"description": "",
"source_reference": {
"page": "104"
}
},
{
"id": "Horse Racing",
"name": "Horse Racing (WIP)",
"types": "Physique",
"description": "",
"source_reference": { "source_reference": {
"page": "" "page": ""
} }
}, },
{ {
"id": "Kintsugi", "id": "Hot Pot",
"name": "Kintsugi (WIP)", "name": "Hot Pot (WIP)",
"types": "Mental, Physique", "types": "Relations, Physique",
"description": "",
"source_reference": {
"page": ""
}
},
{
"id": "Stargazing",
"name": "Stargazing (WIP)",
"types": "Mental, Spirituel",
"description": "", "description": "",
"source_reference": { "source_reference": {
"page": "" "page": ""

View File

@@ -276,6 +276,38 @@
"source_reference": { "source_reference": {
"page": "105" "page": "105"
} }
},
{
"id": "Ujik Horsebow Pattern",
"name": "Ujik Horsebow Pattern (WIP)",
"description": "",
"source_reference": {
"page": ""
}
},
{
"id": "Utsuko Pattern",
"name": "Utsuko Pattern (WIP)",
"description": "",
"source_reference": {
"page": ""
}
},
{
"id": "Watered Steel Pattern",
"name": "Watered Steel Pattern (WIP)",
"description": "",
"source_reference": {
"page": ""
}
},
{
"id": "Hewing",
"name": "Hewing (WIP)",
"description": "",
"source_reference": {
"page": ""
}
} }
] ]
} }

View File

@@ -604,6 +604,14 @@
"source_reference": { "source_reference": {
"page": "114" "page": "114"
} }
},
{
"id": "The World is Not Heavy",
"name": "The World is Not Heavy (WIP)",
"description": "",
"source_reference": {
"page": ""
}
} }
] ]
} }

View File

@@ -535,111 +535,183 @@
}, },
{ {
"id": "Bears Swipe Style", "id": "Bears Swipe Style",
"name": "Bears Swipe Style (WIP)", "name": "Style de la gifle de lours",
"description": "", "description": "",
"source_reference": { "source_reference": {
"page": "" "page": "114"
} }
}, },
{ {
"id": "Serpents Twist Style", "id": "Serpents Twist Style",
"name": "Serpents Twist Style (WIP)", "name": "Style de la contorsion du serpent",
"description": "", "description": "",
"source_reference": { "source_reference": {
"page": "" "page": "114"
} }
}, },
{ {
"id": "Swallows Dart Style", "id": "Swallows Dart Style",
"name": "Swallows Dart Style (WIP)", "name": "Style de la vivacité de lhirondelle",
"description": "", "description": "",
"source_reference": { "source_reference": {
"page": "" "page": "115"
} }
}, },
{ {
"id": "Tigers Lunge Style", "id": "Tigers Lunge Style",
"name": "Tigers Lunge Style (WIP)", "name": "Style de lattaque du tigre",
"description": "", "description": "",
"source_reference": { "source_reference": {
"page": "" "page": "115"
} }
}, },
{ {
"id": "Flexible Grip", "id": "Flexible Grip",
"name": "Flexible Grip (WIP)", "name": "Prise flexible",
"description": "", "description": "",
"source_reference": { "source_reference": {
"page": "" "page": "116"
} }
}, },
{ {
"id": "Howling Gale Defense", "id": "Howling Gale Defense",
"name": "Howling Gale Defense (WIP)", "name": "Défense de la bourrasque hurlante",
"description": "", "description": "",
"source_reference": { "source_reference": {
"page": "" "page": "115"
} }
}, },
{ {
"id": "Herons Grasp Style", "id": "Herons Grasp Style",
"name": "Herons Grasp Style (WIP)", "name": "Style de létreinte du héron",
"description": "", "description": "",
"source_reference": { "source_reference": {
"page": "" "page": "116"
} }
}, },
{ {
"id": "Serows Leap Style", "id": "Serows Leap Style",
"name": "Serows Leap Style (WIP)", "name": "Style du saro bondissant",
"description": "", "description": "",
"source_reference": { "source_reference": {
"page": "" "page": "116"
} }
}, },
{ {
"id": "Tumbling Oak Style", "id": "Tumbling Oak Style",
"name": "Tumbling Oak Style (WIP)", "name": "Style de la chute du chêne",
"description": "", "description": "",
"source_reference": { "source_reference": {
"page": "" "page": "116"
} }
}, },
{ {
"id": "Flight", "id": "Flight",
"name": "Flight (WIP)", "name": "Vol",
"description": "", "description": "",
"source_reference": { "source_reference": {
"page": "" "page": "118"
} }
}, },
{ {
"id": "Razor Bite", "id": "Razor Bite",
"name": "Razor Bite (WIP)", "name": "Morsure acérée",
"description": "", "description": "",
"source_reference": { "source_reference": {
"page": "" "page": "117"
} }
}, },
{ {
"id": "Owls Swoop Style", "id": "Owls Swoop Style",
"name": "Owls Swoop Style (WIP)", "name": "Style du piqué de la chouette",
"description": "", "description": "",
"source_reference": { "source_reference": {
"page": "" "page": "118"
} }
}, },
{ {
"id": "Skittering Shift", "id": "Skittering Shift",
"name": "Skittering Shift (WIP)", "name": "Déguerpissement prompt",
"description": "",
"source_reference": {
"page": "117"
}
},
{
"id": "Tail Sweep",
"name": "Balayage caudal",
"description": "",
"source_reference": {
"page": "117"
}
},
{
"id": "Cautious Tread",
"name": "Cautious Tread (WIP)",
"description": "", "description": "",
"source_reference": { "source_reference": {
"page": "" "page": ""
} }
}, },
{ {
"id": "Tail Sweep", "id": "Stalking Leopard Style",
"name": "Tail Sweep (WIP)", "name": "Stalking Leopard Style (WIP)",
"description": "",
"source_reference": {
"page": ""
}
},
{
"id": "Sudden Downpour Style",
"name": "Sudden Downpour Style (WIP)",
"description": "",
"source_reference": {
"page": ""
}
},
{
"id": "Swaying Grass Evasion",
"name": "Swaying Grass Evasion (WIP)",
"description": "",
"source_reference": {
"page": ""
}
},
{
"id": "Distracting Flurry Style",
"name": "Distracting Flurry Style (WIP)",
"description": "",
"source_reference": {
"page": ""
}
},
{
"id": "Scouring Wind Style",
"name": "Scouring Wind Style (WIP)",
"description": "",
"source_reference": {
"page": ""
}
},
{
"id": "Slashing Sandstorm Style",
"name": "Slashing Sandstorm Style (WIP)",
"description": "",
"source_reference": {
"page": ""
}
},
{
"id": "Descending Swarm Shot",
"name": "Descending Swarm Shot (WIP)",
"description": "",
"source_reference": {
"page": ""
}
},
{
"id": "Thunderbolt Style",
"name": "Thunderbolt Style (WIP)",
"description": "", "description": "",
"source_reference": { "source_reference": {
"page": "" "page": ""

View File

@@ -191,122 +191,122 @@
}, },
{ {
"id": "Mercy of the Stone Fortune", "id": "Mercy of the Stone Fortune",
"name": "Mercy of the Stone Fortune (WIP)", "name": "Pitié de la fortune de la pierre",
"description": "", "description": "",
"source_reference": { "source_reference": {
"page": "" "page": "109"
} }
}, },
{ {
"id": "Rejuvenating Breath", "id": "Rejuvenating Breath",
"name": "Rejuvenating Breath (WIP)", "name": "Souffle revigorant",
"description": "", "description": "",
"source_reference": { "source_reference": {
"page": "" "page": "109"
} }
}, },
{ {
"id": "Shadow of Ancient Peaks", "id": "Shadow of Ancient Peaks",
"name": "Shadow of Ancient Peaks (WIP)", "name": "A lombre des pics antiques",
"description": "", "description": "",
"source_reference": { "source_reference": {
"page": "" "page": "109"
} }
}, },
{ {
"id": "Cutting Wind Talons", "id": "Cutting Wind Talons",
"name": "Cutting Wind Talons (WIP)", "name": "Serres du vent tranchant",
"description": "", "description": "",
"source_reference": { "source_reference": {
"page": "" "page": "110"
} }
}, },
{ {
"id": "Grace of the Gentle Breeze", "id": "Grace of the Gentle Breeze",
"name": "Grace of the Gentle Breeze (WIP)", "name": "Grâce de la douce brise",
"description": "", "description": "",
"source_reference": { "source_reference": {
"page": "" "page": "109"
} }
}, },
{ {
"id": "Step of the Storm", "id": "Step of the Storm",
"name": "Step of the Storm (WIP)", "name": "Bond de la tempête",
"description": "", "description": "",
"source_reference": { "source_reference": {
"page": "" "page": "110"
} }
}, },
{ {
"id": "Blistering Retribution", "id": "Blistering Retribution",
"name": "Blistering Retribution (WIP)", "name": "Rétribution foudroyante",
"description": "", "description": "",
"source_reference": { "source_reference": {
"page": "" "page": "111"
} }
}, },
{ {
"id": "Dance of Fire", "id": "Dance of Fire",
"name": "Dance of Fire (WIP)", "name": "Danse du Feu",
"description": "", "description": "",
"source_reference": { "source_reference": {
"page": "" "page": "110"
} }
}, },
{ {
"id": "Volcanic Fist", "id": "Volcanic Fist",
"name": "Volcanic Fist (WIP)", "name": "Poing volcanique",
"description": "", "description": "",
"source_reference": { "source_reference": {
"page": "" "page": "110"
} }
}, },
{ {
"id": "Fist of Spreading Venom", "id": "Fist of Spreading Venom",
"name": "Fist of Spreading Venom (WIP)", "name": "Poing propagateur de poison",
"description": "", "description": "",
"source_reference": { "source_reference": {
"page": "" "page": "112"
} }
}, },
{ {
"id": "Rivers Flowing Stride", "id": "Rivers Flowing Stride",
"name": "Rivers Flowing Stride (WIP)", "name": "Allure du cours deau",
"description": "", "description": "",
"source_reference": { "source_reference": {
"page": "" "page": "112"
} }
}, },
{ {
"id": "Seeping Ki", "id": "Seeping Ki",
"name": "Seeping Ki (WIP)", "name": "Ruissellement de ki",
"description": "", "description": "",
"source_reference": { "source_reference": {
"page": "" "page": "112"
} }
}, },
{ {
"id": "Aura Awareness", "id": "Aura Awareness",
"name": "Aura Awareness (WIP)", "name": "Perception des auras",
"description": "", "description": "",
"source_reference": { "source_reference": {
"page": "" "page": "113"
} }
}, },
{ {
"id": "Essence of Stillness", "id": "Essence of Stillness",
"name": "Essence of Stillness (WIP)", "name": "Essence de limmobilité",
"description": "", "description": "",
"source_reference": { "source_reference": {
"page": "" "page": "113"
} }
}, },
{ {
"id": "Eternal Minds Gate", "id": "Eternal Minds Gate",
"name": "Eternal Minds Gate (WIP)", "name": "Portail de lesprit éternel",
"description": "", "description": "",
"source_reference": { "source_reference": {
"page": "" "page": "113"
} }
} }
] ]

View File

@@ -743,50 +743,50 @@
}, },
{ {
"id": "Whispers of the Kami", "id": "Whispers of the Kami",
"name": "Whispers of the Kami (WIP)", "name": "Murmures des kamis",
"description": "", "description": "",
"source_reference": { "source_reference": {
"page": "" "page": "96"
} }
}, },
{ {
"id": "Smiling Mountain Tradition", "id": "Smiling Mountain Tradition",
"name": "Smiling Mountain Tradition (WIP)", "name": "Tradition de la montagne Rieuse",
"description": "", "description": "",
"source_reference": { "source_reference": {
"page": "" "page": "97"
} }
}, },
{ {
"id": "Scaled Hide", "id": "Scaled Hide",
"name": "Scaled Hide (WIP)", "name": "Epaisse peau écailleuse",
"description": "", "description": "",
"source_reference": { "source_reference": {
"page": "" "page": "98"
} }
}, },
{ {
"id": "Reflexive Strike", "id": "Reflexive Strike",
"name": "Reflexive Strike (WIP)", "name": "Attaque réflexe",
"description": "", "description": "",
"source_reference": { "source_reference": {
"page": "" "page": "99"
} }
}, },
{ {
"id": "A Master of Study", "id": "A Master of Study",
"name": "A Master of Study (WIP)", "name": "Un maître de lapprentissage",
"description": "", "description": "",
"source_reference": { "source_reference": {
"page": "" "page": "100"
} }
}, },
{ {
"id": "Born to Survive", "id": "Born to Survive",
"name": "Born to Survive (WIP)", "name": "Né pour survivre",
"description": "", "description": "",
"source_reference": { "source_reference": {
"page": "" "page": "101"
} }
}, },
{ {
@@ -804,6 +804,86 @@
"source_reference": { "source_reference": {
"page": "25" "page": "25"
} }
},
{
"id": "Measured Force",
"name": "Measured Force (WIP)",
"description": "",
"source_reference": {
"page": ""
}
},
{
"id": "Student of Many Courts",
"name": "Student of Many Courts (WIP)",
"description": "",
"source_reference": {
"page": ""
}
},
{
"id": "The Noble Heart Shines Through",
"name": "The Noble Heart Shines Through (WIP)",
"description": "",
"source_reference": {
"page": ""
}
},
{
"id": "Cool Heads Prevail",
"name": "Cool Heads Prevail (WIP)",
"description": "",
"source_reference": {
"page": ""
}
},
{
"id": "Procession of Seasons",
"name": "Procession of Seasons (WIP)",
"description": "",
"source_reference": {
"page": ""
}
},
{
"id": "Lay of the Land",
"name": "Lay of the Land (WIP)",
"description": "",
"source_reference": {
"page": ""
}
},
{
"id": "Logical Conclusion",
"name": "Logical Conclusion (WIP)",
"description": "",
"source_reference": {
"page": ""
}
},
{
"id": "Spirit of the Sacred Horse",
"name": "Spirit of the Sacred Horse (WIP)",
"description": "",
"source_reference": {
"page": ""
}
},
{
"id": "Reputation Sentinel",
"name": "Reputation Sentinel (WIP)",
"description": "",
"source_reference": {
"page": ""
}
},
{
"id": "Legendary Endurance",
"name": "Legendary Endurance (WIP)",
"description": "",
"source_reference": {
"page": ""
}
} }
] ]
} }

View File

@@ -206,7 +206,7 @@
} }
}, },
{ {
"id": "Beseech Hida's MIght", "id": "Beseech Hida's Might",
"name": "Implorer la puissance de Hida", "name": "Implorer la puissance de Hida",
"description": "", "description": "",
"source_reference": { "source_reference": {
@@ -247,39 +247,95 @@
}, },
{ {
"id": "Chikushō-dōs Guile", "id": "Chikushō-dōs Guile",
"name": "Chikushō-dōs Guile (WIP)", "name": "Duplicité du Chikushō-dō",
"description": "", "description": "",
"source_reference": { "source_reference": {
"page": "" "page": "118"
} }
}, },
{ {
"id": "Guard Against the Elements", "id": "Guard Against the Elements",
"name": "Guard Against the Elements (WIP)", "name": "Protection contre les éléments",
"description": "", "description": "",
"source_reference": { "source_reference": {
"page": "" "page": "119"
} }
}, },
{ {
"id": "Cunning Snares", "id": "Cunning Snares",
"name": "Cunning Snares (WIP)", "name": "Pièges astucieux",
"description": "", "description": "",
"source_reference": { "source_reference": {
"page": "" "page": "119"
} }
}, },
{ {
"id": "Hunters Expertise", "id": "Hunters Expertise",
"name": "Hunters Expertise (WIP)", "name": "Expertise du chasseur",
"description": "",
"source_reference": {
"page": "119"
}
},
{
"id": "Trance of Lives Past",
"name": "Transe des vies antérieures",
"description": "",
"source_reference": {
"page": "120"
}
},
{
"id": "Center the World",
"name": "Center the World (WIP)",
"description": "", "description": "",
"source_reference": { "source_reference": {
"page": "" "page": ""
} }
}, },
{ {
"id": "Trance of Lives Past", "id": "Cultural Exchange",
"name": "Trance of Lives Past (WIP)", "name": "Cultural Exchange (WIP)",
"description": "",
"source_reference": {
"page": ""
}
},
{
"id": "Protection of the Flock",
"name": "Protection of the Flock (WIP)",
"description": "",
"source_reference": {
"page": ""
}
},
{
"id": "Shadow of Days",
"name": "Shadow of Days (WIP)",
"description": "",
"source_reference": {
"page": ""
}
},
{
"id": "Spiritual Survey",
"name": "Spiritual Survey (WIP)",
"description": "",
"source_reference": {
"page": ""
}
},
{
"id": "Traveler's Experience",
"name": "Traveler's Experience (WIP)",
"description": "",
"source_reference": {
"page": ""
}
},
{
"id": "Wayfinder's Instincts",
"name": "Wayfinder's Instincts (WIP)",
"description": "", "description": "",
"source_reference": { "source_reference": {
"page": "" "page": ""

View File

@@ -743,50 +743,50 @@
}, },
{ {
"id": "May the Spirits Show the Path", "id": "May the Spirits Show the Path",
"name": "May the Spirits Show the Path (WIP)", "name": "Que les esprits montrent la voie",
"description": "", "description": "",
"source_reference": { "source_reference": {
"page": "" "page": "96"
} }
}, },
{ {
"id": "Laughter Makes the Home", "id": "Laughter Makes the Home",
"name": "Laughter Makes the Home (WIP)", "name": "On rit comme chez soi",
"description": "", "description": "",
"source_reference": { "source_reference": {
"page": "" "page": "97"
} }
}, },
{ {
"id": "Bend Perception", "id": "Bend Perception",
"name": "Bend Perception (WIP)", "name": "Fausser les perceptions",
"description": "", "description": "",
"source_reference": { "source_reference": {
"page": "" "page": "98"
} }
}, },
{ {
"id": "Keen Senses", "id": "Keen Senses",
"name": "Keen Senses (WIP)", "name": "Sens Développés",
"description": "", "description": "",
"source_reference": { "source_reference": {
"page": "" "page": "99"
} }
}, },
{ {
"id": "Mind of Calm", "id": "Mind of Calm",
"name": "Mind of Calm (WIP)", "name": "Esprit de calme",
"description": "", "description": "",
"source_reference": { "source_reference": {
"page": "" "page": "100"
} }
}, },
{ {
"id": "Evolution of the Wilds", "id": "Evolution of the Wilds",
"name": "Evolution of the Wilds (WIP)", "name": "Evolution de la nature",
"description": "", "description": "",
"source_reference": { "source_reference": {
"page": "" "page": "101"
} }
}, },
{ {
@@ -804,6 +804,86 @@
"source_reference": { "source_reference": {
"page": "25" "page": "25"
} }
},
{
"id": "Moment of Certainty",
"name": "Moment of Certainty (WIP)",
"description": "",
"source_reference": {
"page": ""
}
},
{
"id": "Disarming Demeanor",
"name": "Disarming Demeanor (WIP)",
"description": "",
"source_reference": {
"page": ""
}
},
{
"id": "The Horse Lord's Favor",
"name": "The Horse Lord's Favor (WIP)",
"description": "",
"source_reference": {
"page": ""
}
},
{
"id": "Calm Counsel",
"name": "Calm Counsel (WIP)",
"description": "",
"source_reference": {
"page": ""
}
},
{
"id": "Natural Balance",
"name": "Natural Balance (WIP)",
"description": "",
"source_reference": {
"page": ""
}
},
{
"id": "Dunestrider",
"name": "Dunestrider (WIP)",
"description": "",
"source_reference": {
"page": ""
}
},
{
"id": "Methodical Observation",
"name": "Methodical Observation (WIP)",
"description": "",
"source_reference": {
"page": ""
}
},
{
"id": "Unity of Horse and Rider",
"name": "Unity of Horse and Rider (WIP)",
"description": "",
"source_reference": {
"page": ""
}
},
{
"id": "Warden of the Five Winds",
"name": "Warden of the Five Winds (WIP)",
"description": "",
"source_reference": {
"page": ""
}
},
{
"id": "Move as the Wind",
"name": "Move as the Wind (WIP)",
"description": "",
"source_reference": {
"page": ""
}
} }
] ]
} }

View File

@@ -708,6 +708,102 @@
"source_reference": { "source_reference": {
"page": "93" "page": "93"
} }
},
{
"id": "Cunning Omission",
"name": "Cunning Omission (WIP)",
"description": "",
"source_reference": {
"page": ""
}
},
{
"id": "Entice with Offerings",
"name": "Entice with Offerings (WIP)",
"description": "",
"source_reference": {
"page": ""
}
},
{
"id": "Trader's Intuition",
"name": "Trader's Intuition (WIP)",
"description": "",
"source_reference": {
"page": ""
}
},
{
"id": "Cite the Facts",
"name": "Cite the Facts (WIP)",
"description": "",
"source_reference": {
"page": ""
}
},
{
"id": "Solidify Gratitude",
"name": "Solidify Gratitude (WIP)",
"description": "",
"source_reference": {
"page": ""
}
},
{
"id": "Glorious Entrance",
"name": "Glorious Entrance (WIP)",
"description": "",
"source_reference": {
"page": ""
}
},
{
"id": "Incite Wrath",
"name": "Incite Wrath (WIP)",
"description": "",
"source_reference": {
"page": ""
}
},
{
"id": "Call to Ride",
"name": "Call to Ride (WIP)",
"description": "",
"source_reference": {
"page": ""
}
},
{
"id": "Complementary Experience",
"name": "Complementary Experience (WIP)",
"description": "",
"source_reference": {
"page": ""
}
},
{
"id": "Everyone Has a Price",
"name": "Everyone Has a Price (WIP)",
"description": "",
"source_reference": {
"page": ""
}
},
{
"id": "Horse Whisperer",
"name": "Horse Whisperer (WIP)",
"description": "",
"source_reference": {
"page": ""
}
},
{
"id": "Appreciate the Scenery",
"name": "Appreciate the Scenery (WIP)",
"description": "",
"source_reference": {
"page": ""
}
} }
] ]
} }

View File

@@ -335,34 +335,34 @@
}, },
{ {
"id": "Awakened Soul", "id": "Awakened Soul",
"name": "Awakened Soul (WIP)", "name": "Ame éveillée",
"description": "<h2>Cursus</h2><table><tr><td>Compétences Sociales</td><td>Grp. de comp.</td></tr><tr><td>Compétences Savantes</td><td>Grp. de comp.</td></tr><tr><td>Culture</td><td>Compétence</td></tr><tr><td>Méditation</td><td>Compétence</td></tr><tr><td>Survie</td><td>Compétence</td></tr><tr><td>Théologie</td><td>Compétence</td></tr><tr><td><a class=\"entity-link content-link\" draggable=\"true\" data-link=\"\" data-uuid=\"Compendium.l5r5e.core-techniques-kiho.Item.L5RCoreKih000038\" data-pack=\"l5r5e.core-techniques-kiho\" data-type=\"Item\" data-id=\"L5RCoreKih000038\">(kiho) Eternal Minds Gate (WIP)</a> (prereq)</td><td>Technique</td></tr><tr><td><a class=\"entity-link content-link\" draggable=\"true\" data-link=\"\" data-uuid=\"Compendium.l5r5e.core-techniques-rituals.Item.L5RCoreRit000035\" data-pack=\"l5r5e.core-techniques-rituals\" data-type=\"Item\" data-id=\"L5RCoreRit000035\">(ritual) Trance of Lives Past (WIP)</a> (prereq)</td><td>Technique</td></tr></table>", "description": "<h2>Cursus</h2><table><tr><td>Compétences Sociales</td><td>Grp. de comp.</td></tr><tr><td>Compétences Savantes</td><td>Grp. de comp.</td></tr><tr><td>Culture</td><td>Compétence</td></tr><tr><td>Méditation</td><td>Compétence</td></tr><tr><td>Survie</td><td>Compétence</td></tr><tr><td>Théologie</td><td>Compétence</td></tr><tr><td><a class=\"entity-link content-link\" draggable=\"true\" data-link=\"\" data-uuid=\"Compendium.l5r5e.core-techniques-kiho.Item.L5RCoreKih000038\" data-pack=\"l5r5e.core-techniques-kiho\" data-type=\"Item\" data-id=\"L5RCoreKih000038\">(kiho) Portail de lesprit éternel</a> (prereq)</td><td>Technique</td></tr><tr><td><a class=\"entity-link content-link\" draggable=\"true\" data-link=\"\" data-uuid=\"Compendium.l5r5e.core-techniques-rituals.Item.L5RCoreRit000035\" data-pack=\"l5r5e.core-techniques-rituals\" data-type=\"Item\" data-id=\"L5RCoreRit000035\">(ritual) Transe des vies antérieures</a> (prereq)</td><td>Technique</td></tr></table>",
"source_reference": { "source_reference": {
"page": "" "page": "142"
} }
}, },
{ {
"id": "Forester", "id": "Forester",
"name": "Forester (WIP)", "name": "Forestier",
"description": "<h2>Cursus</h2><table><tr><td>Compétences Sociales</td><td>Grp. de comp.</td></tr><tr><td>Compétences Savantes</td><td>Grp. de comp.</td></tr><tr><td>Courtoisie</td><td>Compétence</td></tr><tr><td>Sentiments</td><td>Compétence</td></tr><tr><td>Survie</td><td>Compétence</td></tr><tr><td>Théologie</td><td>Compétence</td></tr><tr><td><a class=\"compendium-link\" data-pack=\"l5r5e.core-techniques-invocations\">(invocation) Invocations de la Terre ou de lEau de rang 1-2</a> (prereq)</td><td>Tech. Grp.</td></tr><tr><td><a class=\"compendium-link\" data-pack=\"l5r5e.core-techniques-shuji\">(shuji) Shuji de rang 1-3</a> (prereq)</td><td>Tech. Grp.</td></tr></table>", "description": "<h2>Cursus</h2><table><tr><td>Compétences Sociales</td><td>Grp. de comp.</td></tr><tr><td>Compétences Savantes</td><td>Grp. de comp.</td></tr><tr><td>Courtoisie</td><td>Compétence</td></tr><tr><td>Sentiments</td><td>Compétence</td></tr><tr><td>Survie</td><td>Compétence</td></tr><tr><td>Théologie</td><td>Compétence</td></tr><tr><td><a class=\"compendium-link\" data-pack=\"l5r5e.core-techniques-invocations\">(invocation) Invocations de la Terre ou de lEau de rang 1-2</a> (prereq)</td><td>Tech. Grp.</td></tr><tr><td><a class=\"compendium-link\" data-pack=\"l5r5e.core-techniques-shuji\">(shuji) Shuji de rang 1-3</a> (prereq)</td><td>Tech. Grp.</td></tr></table>",
"source_reference": { "source_reference": {
"page": "" "page": "142"
} }
}, },
{ {
"id": "Temple Abbot", "id": "Temple Abbot",
"name": "Temple Abbot (WIP)", "name": "Abbé",
"description": "<h2>Cursus</h2><table><tr><td>Compétences Sociales</td><td>Grp. de comp.</td></tr><tr><td>Compétences Savantes</td><td>Grp. de comp.</td></tr><tr><td>Culture</td><td>Compétence</td></tr><tr><td>Méditation</td><td>Compétence</td></tr><tr><td>Théologie</td><td>Compétence</td></tr><tr><td><a class=\"entity-link content-link\" draggable=\"true\" data-link=\"\" data-uuid=\"Compendium.l5r5e.core-techniques-rituals.Item.L5RCoreRit000004\" data-pack=\"l5r5e.core-techniques-rituals\" data-type=\"Item\" data-id=\"L5RCoreRit000004\">(ritual) Rite de purification</a> (prereq)</td><td>Technique</td></tr><tr><td><a class=\"entity-link content-link\" draggable=\"true\" data-link=\"\" data-uuid=\"Compendium.l5r5e.core-techniques-kiho.Item.L5RCoreKih000025\" data-pack=\"l5r5e.core-techniques-kiho\" data-type=\"Item\" data-id=\"L5RCoreKih000025\">(kiho) Rejuvenating Breath (WIP)</a> (prereq)</td><td>Technique</td></tr><tr><td><a class=\"entity-link content-link\" draggable=\"true\" data-link=\"\" data-uuid=\"Compendium.l5r5e.core-techniques-shuji.Item.L5RCoreShu000011\" data-pack=\"l5r5e.core-techniques-shuji\" data-type=\"Item\" data-id=\"L5RCoreShu000011\">(shuji) Courage exemplaire</a> (prereq)</td><td>Technique</td></tr></table>", "description": "<h2>Cursus</h2><table><tr><td>Compétences Sociales</td><td>Grp. de comp.</td></tr><tr><td>Compétences Savantes</td><td>Grp. de comp.</td></tr><tr><td>Culture</td><td>Compétence</td></tr><tr><td>Méditation</td><td>Compétence</td></tr><tr><td>Théologie</td><td>Compétence</td></tr><tr><td><a class=\"entity-link content-link\" draggable=\"true\" data-link=\"\" data-uuid=\"Compendium.l5r5e.core-techniques-rituals.Item.L5RCoreRit000004\" data-pack=\"l5r5e.core-techniques-rituals\" data-type=\"Item\" data-id=\"L5RCoreRit000004\">(ritual) Rite de purification</a> (prereq)</td><td>Technique</td></tr><tr><td><a class=\"entity-link content-link\" draggable=\"true\" data-link=\"\" data-uuid=\"Compendium.l5r5e.core-techniques-kiho.Item.L5RCoreKih000025\" data-pack=\"l5r5e.core-techniques-kiho\" data-type=\"Item\" data-id=\"L5RCoreKih000025\">(kiho) Souffle revigorant</a> (prereq)</td><td>Technique</td></tr><tr><td><a class=\"entity-link content-link\" draggable=\"true\" data-link=\"\" data-uuid=\"Compendium.l5r5e.core-techniques-shuji.Item.L5RCoreShu000011\" data-pack=\"l5r5e.core-techniques-shuji\" data-type=\"Item\" data-id=\"L5RCoreShu000011\">(shuji) Courage exemplaire</a> (prereq)</td><td>Technique</td></tr></table>",
"source_reference": { "source_reference": {
"page": "" "page": "143"
} }
}, },
{ {
"id": "Yōkai Hunter", "id": "Yōkai Hunter",
"name": "Yōkai Hunter (WIP)", "name": "Chasseur de yōkai",
"description": "<h2>Cursus</h2><table><tr><td>Compétences Savantes</td><td>Grp. de comp.</td></tr><tr><td>Compétences Martiales</td><td>Grp. de comp.</td></tr><tr><td>Commandement</td><td>Compétence</td></tr><tr><td>Courtoisie</td><td>Compétence</td></tr><tr><td>Survie</td><td>Compétence</td></tr><tr><td><a class=\"entity-link content-link\" draggable=\"true\" data-link=\"\" data-uuid=\"Compendium.l5r5e.core-techniques-kiho.Item.L5RCoreKih000030\" data-pack=\"l5r5e.core-techniques-kiho\" data-type=\"Item\" data-id=\"L5RCoreKih000030\">(kiho) Blistering Retribution (WIP)</a> (prereq)</td><td>Technique</td></tr><tr><td><a class=\"entity-link content-link\" draggable=\"true\" data-link=\"\" data-uuid=\"Compendium.l5r5e.core-techniques-kata.Item.L5RCoreKat000070\" data-pack=\"l5r5e.core-techniques-kata\" data-type=\"Item\" data-id=\"L5RCoreKat000070\">(kata) Swallows Dart Style (WIP)</a> (prereq)</td><td>Technique</td></tr><tr><td><a class=\"entity-link content-link\" draggable=\"true\" data-link=\"\" data-uuid=\"Compendium.l5r5e.core-techniques-kata.Item.L5RCoreKat000071\" data-pack=\"l5r5e.core-techniques-kata\" data-type=\"Item\" data-id=\"L5RCoreKat000071\">(kata) Tigers Lunge Style (WIP)</a> (prereq)</td><td>Technique</td></tr></table>", "description": "<h2>Cursus</h2><table><tr><td>Compétences Savantes</td><td>Grp. de comp.</td></tr><tr><td>Compétences Martiales</td><td>Grp. de comp.</td></tr><tr><td>Commandement</td><td>Compétence</td></tr><tr><td>Courtoisie</td><td>Compétence</td></tr><tr><td>Survie</td><td>Compétence</td></tr><tr><td><a class=\"entity-link content-link\" draggable=\"true\" data-link=\"\" data-uuid=\"Compendium.l5r5e.core-techniques-kiho.Item.L5RCoreKih000030\" data-pack=\"l5r5e.core-techniques-kiho\" data-type=\"Item\" data-id=\"L5RCoreKih000030\">(kiho) Rétribution foudroyante</a> (prereq)</td><td>Technique</td></tr><tr><td><a class=\"entity-link content-link\" draggable=\"true\" data-link=\"\" data-uuid=\"Compendium.l5r5e.core-techniques-kata.Item.L5RCoreKat000070\" data-pack=\"l5r5e.core-techniques-kata\" data-type=\"Item\" data-id=\"L5RCoreKat000070\">(kata) Style de la vivacité de lhirondelle</a> (prereq)</td><td>Technique</td></tr><tr><td><a class=\"entity-link content-link\" draggable=\"true\" data-link=\"\" data-uuid=\"Compendium.l5r5e.core-techniques-kata.Item.L5RCoreKat000071\" data-pack=\"l5r5e.core-techniques-kata\" data-type=\"Item\" data-id=\"L5RCoreKat000071\">(kata) Style de lattaque du tigre</a> (prereq)</td><td>Technique</td></tr></table>",
"source_reference": { "source_reference": {
"page": "" "page": "143"
} }
}, },
{ {
@@ -388,6 +388,62 @@
"source_reference": { "source_reference": {
"page": "21" "page": "21"
} }
},
{
"id": "Animal Handler",
"name": "Animal Handler (WIP)",
"description": "<h2>Cursus</h2><table><tr><td>Compétences Professionnelles</td><td>Grp. de comp.</td></tr><tr><td>Arts martiaux (mains nues)</td><td>Compétence</td></tr><tr><td>Médecine</td><td>Compétence</td></tr><tr><td>Sentiments</td><td>Compétence</td></tr><tr><td><a class=\"entity-link content-link\" draggable=\"true\" data-link=\"\" data-uuid=\"Compendium.l5r5e.core-techniques-shuji.Item.L5RCoreShu000096\" data-pack=\"l5r5e.core-techniques-shuji\" data-type=\"Item\" data-id=\"L5RCoreShu000096\">(shuji) Call to Ride (WIP)</a> (prereq)</td><td>Technique</td></tr><tr><td><a class=\"entity-link content-link\" draggable=\"true\" data-link=\"\" data-uuid=\"Compendium.l5r5e.core-techniques-shuji.Item.L5RCoreShu000095\" data-pack=\"l5r5e.core-techniques-shuji\" data-type=\"Item\" data-id=\"L5RCoreShu000095\">(shuji) Incite Wrath (WIP)</a> (prereq)</td><td>Technique</td></tr><tr><td><a class=\"entity-link content-link\" draggable=\"true\" data-link=\"\" data-uuid=\"Compendium.l5r5e.core-techniques-shuji.Item.L5RCoreShu000011\" data-pack=\"l5r5e.core-techniques-shuji\" data-type=\"Item\" data-id=\"L5RCoreShu000011\">(shuji) Courage exemplaire</a> (prereq)</td><td>Technique</td></tr></table>",
"source_reference": {
"page": ""
}
},
{
"id": "Doomhunter",
"name": "Doomhunter (WIP)",
"description": "<h2>Cursus</h2><table><tr><td>Compétences Martiales</td><td>Grp. de comp.</td></tr><tr><td>Magouilles</td><td>Compétence</td></tr><tr><td>Survie</td><td>Compétence</td></tr><tr><td>Théologie</td><td>Compétence</td></tr><tr><td><a class=\"compendium-link\" data-pack=\"l5r5e.core-techniques-rituals\">(ritual) Rituels de rang 1-2</a> (prereq)</td><td>Tech. Grp.</td></tr><tr><td><a class=\"entity-link content-link\" draggable=\"true\" data-link=\"\" data-uuid=\"Compendium.l5r5e.core-techniques-ninjutsu.Item.L5RCoreNin000002\" data-pack=\"l5r5e.core-techniques-ninjutsu\" data-type=\"Item\" data-id=\"L5RCoreNin000002\">(ninjutsu) Disparition</a> (prereq)</td><td>Technique</td></tr><tr><td><a class=\"entity-link content-link\" draggable=\"true\" data-link=\"\" data-uuid=\"Compendium.l5r5e.core-techniques-kata.Item.L5RCoreKat000006\" data-pack=\"l5r5e.core-techniques-kata\" data-type=\"Item\" data-id=\"L5RCoreKat000006\">(kata) Destruction de lâme</a> (prereq)</td><td>Technique</td></tr></table>",
"source_reference": {
"page": ""
}
},
{
"id": "Imperial Peacekeeper",
"name": "Imperial Peacekeeper (WIP)",
"description": "<h2>Cursus</h2><table><tr><td>Compétences Martiales</td><td>Grp. de comp.</td></tr><tr><td>Courtoisie</td><td>Compétence</td></tr><tr><td>Commandement</td><td>Compétence</td></tr><tr><td>Sentiments</td><td>Compétence</td></tr><tr><td><a class=\"compendium-link\" data-pack=\"l5r5e.core-techniques-shuji\">(shuji) Shuji de la Terre de rang 1-2</a> (prereq)</td><td>Tech. Grp.</td></tr><tr><td><a class=\"entity-link content-link\" draggable=\"true\" data-link=\"\" data-uuid=\"Compendium.l5r5e.core-techniques-rituals.Item.L5RCoreRit000037\" data-pack=\"l5r5e.core-techniques-rituals\" data-type=\"Item\" data-id=\"L5RCoreRit000037\">(ritual) Cultural Exchange (WIP)</a> (prereq)</td><td>Technique</td></tr><tr><td><a class=\"entity-link content-link\" draggable=\"true\" data-link=\"\" data-uuid=\"Compendium.l5r5e.core-techniques-shuji.Item.L5RCoreShu000016\" data-pack=\"l5r5e.core-techniques-shuji\" data-type=\"Item\" data-id=\"L5RCoreShu000016\">(shuji) Pilier de sérénité</a> (prereq)</td><td>Technique</td></tr></table>",
"source_reference": {
"page": ""
}
},
{
"id": "Interpreter",
"name": "Interpreter (WIP)",
"description": "<h2>Cursus</h2><table><tr><td>Compétences Sociales</td><td>Grp. de comp.</td></tr><tr><td>Composition</td><td>Compétence</td></tr><tr><td>Culture</td><td>Compétence</td></tr><tr><td>Gouvernement</td><td>Compétence</td></tr><tr><td><a class=\"compendium-link\" data-pack=\"l5r5e.core-techniques-shuji\">(shuji) Shuji de rang 1</a> (prereq)</td><td>Tech. Grp.</td></tr><tr><td><a class=\"entity-link content-link\" draggable=\"true\" data-link=\"\" data-uuid=\"Compendium.l5r5e.core-techniques-rituals.Item.L5RCoreRit000037\" data-pack=\"l5r5e.core-techniques-rituals\" data-type=\"Item\" data-id=\"L5RCoreRit000037\">(ritual) Cultural Exchange (WIP)</a> (prereq)</td><td>Technique</td></tr><tr><td><a class=\"entity-link content-link\" draggable=\"true\" data-link=\"\" data-uuid=\"Compendium.l5r5e.core-techniques-rituals.Item.L5RCoreRit000041\" data-pack=\"l5r5e.core-techniques-rituals\" data-type=\"Item\" data-id=\"L5RCoreRit000041\">(ritual) Traveler's Experience (WIP)</a> (prereq)</td><td>Technique</td></tr></table>",
"source_reference": {
"page": ""
}
},
{
"id": "Scarlet Banners Ranger",
"name": "Scarlet Banners Ranger (WIP)",
"description": "<h2>Cursus</h2><table><tr><td>Compétences Martiales</td><td>Grp. de comp.</td></tr><tr><td>Compétences Professionnelles</td><td>Grp. de comp.</td></tr><tr><td>Gouvernement</td><td>Compétence</td></tr><tr><td>Sentiments</td><td>Compétence</td></tr><tr><td><a class=\"compendium-link\" data-pack=\"l5r5e.core-techniques-kata\">(kata) Kata de rang 1-2</a> (prereq)</td><td>Tech. Grp.</td></tr><tr><td><a class=\"entity-link content-link\" draggable=\"true\" data-link=\"\" data-uuid=\"Compendium.l5r5e.core-techniques-shuji.Item.L5RCoreShu000089\" data-pack=\"l5r5e.core-techniques-shuji\" data-type=\"Item\" data-id=\"L5RCoreShu000089\">(shuji) Cunning Omission (WIP)</a> (prereq)</td><td>Technique</td></tr><tr><td><a class=\"entity-link content-link\" draggable=\"true\" data-link=\"\" data-uuid=\"Compendium.l5r5e.core-techniques-kata.Item.L5RCoreKat000090\" data-pack=\"l5r5e.core-techniques-kata\" data-type=\"Item\" data-id=\"L5RCoreKat000090\">(kata) Thunderbolt Style (WIP)</a> (prereq)</td><td>Technique</td></tr></table>",
"source_reference": {
"page": ""
}
},
{
"id": "Student of Names",
"name": "Student of Names (WIP)",
"description": "<h2>Cursus</h2><table><tr><td>Commandement</td><td>Compétence</td></tr><tr><td>Culture</td><td>Compétence</td></tr><tr><td>Survie</td><td>Compétence</td></tr><tr><td>Théologie</td><td>Compétence</td></tr><tr><td><a class=\"compendium-link\" data-pack=\"l5r5e.core-techniques-invocations\">(invocation) Invocations de rang 1-2</a> (prereq)</td><td>Tech. Grp.</td></tr><tr><td><a class=\"entity-link content-link\" draggable=\"true\" data-link=\"\" data-uuid=\"Compendium.l5r5e.core-techniques-rituals.Item.L5RCoreRit000040\" data-pack=\"l5r5e.core-techniques-rituals\" data-type=\"Item\" data-id=\"L5RCoreRit000040\">(ritual) Spiritual Survey (WIP)</a> (prereq)</td><td>Technique</td></tr><tr><td><a class=\"entity-link content-link\" draggable=\"true\" data-link=\"\" data-uuid=\"Compendium.l5r5e.core-techniques-rituals.Item.L5RCoreRit000005\" data-pack=\"l5r5e.core-techniques-rituals\" data-type=\"Item\" data-id=\"L5RCoreRit000005\">(ritual) Seuil infranchissable</a> (prereq)</td><td>Technique</td></tr></table>",
"source_reference": {
"page": ""
}
},
{
"id": "White Guard Veteran",
"name": "White Guard Veteran (WIP)",
"description": "<h2>Cursus</h2><table><tr><td>Compétences Martiales</td><td>Grp. de comp.</td></tr><tr><td>Courtoisie</td><td>Compétence</td></tr><tr><td>Commandement</td><td>Compétence</td></tr><tr><td>Survie</td><td>Compétence</td></tr><tr><td>Théologie</td><td>Compétence</td></tr><tr><td><a class=\"entity-link content-link\" draggable=\"true\" data-link=\"\" data-uuid=\"Compendium.l5r5e.core-techniques-shuji.Item.L5RCoreShu000038\" data-pack=\"l5r5e.core-techniques-shuji\" data-type=\"Item\" data-id=\"L5RCoreShu000038\">(shuji) Le destin du samouraï</a> (prereq)</td><td>Technique</td></tr><tr><td><a class=\"entity-link content-link\" draggable=\"true\" data-link=\"\" data-uuid=\"Compendium.l5r5e.core-techniques-kata.Item.L5RCoreKat000083\" data-pack=\"l5r5e.core-techniques-kata\" data-type=\"Item\" data-id=\"L5RCoreKat000083\">(kata) Stalking Leopard Style (WIP)</a> (prereq)</td><td>Technique</td></tr><tr><td><a class=\"entity-link content-link\" draggable=\"true\" data-link=\"\" data-uuid=\"Compendium.l5r5e.core-techniques-kata.Item.L5RCoreKat000084\" data-pack=\"l5r5e.core-techniques-kata\" data-type=\"Item\" data-id=\"L5RCoreKat000084\">(kata) Sudden Downpour Style (WIP)</a> (prereq)</td><td>Technique</td></tr></table>",
"source_reference": {
"page": ""
}
} }
] ]
} }

View File

@@ -1173,6 +1173,116 @@
"source_reference": { "source_reference": {
"page": "100" "page": "100"
} }
},
{
"id": "Catalpa Bow",
"name": "Catalpa Bow (WIP)",
"category": "Arcs",
"grip_1": "N/A",
"grip_2": "",
"description": "",
"source_reference": {
"page": ""
}
},
{
"id": "Charging Lance",
"name": "Charging Lance (WIP)",
"category": "Armes d'Hast",
"grip_1": "N/A",
"grip_2": "",
"description": "",
"source_reference": {
"page": ""
}
},
{
"id": "Fire Lance",
"name": "Fire Lance (WIP)",
"category": "Armes d'Hast",
"grip_1": "N/A",
"grip_2": "",
"description": "",
"source_reference": {
"page": ""
}
},
{
"id": "Ganzu Ring Ax",
"name": "Ganzu Ring Ax (WIP)",
"category": "Haches",
"grip_1": "N/A",
"grip_2": "",
"description": "",
"source_reference": {
"page": ""
}
},
{
"id": "Katar (Punch Dagger)",
"name": "Katar (Punch Dagger) (WIP)",
"category": "Armes de Poing",
"grip_1": "",
"grip_2": "N/A",
"description": "",
"source_reference": {
"page": ""
}
},
{
"id": "Repeating Crossbow",
"name": "Repeating Crossbow (WIP)",
"category": "Arbalètes",
"grip_1": "N/A",
"grip_2": "",
"description": "",
"source_reference": {
"page": ""
}
},
{
"id": "Saddle Cutter",
"name": "Saddle Cutter (WIP)",
"category": "Armes d'Hast",
"grip_1": "",
"grip_2": "",
"description": "",
"source_reference": {
"page": ""
}
},
{
"id": "Ide Parasol Shield",
"name": "Ide Parasol Shield (WIP)",
"category": "Boucliers",
"grip_1": "",
"grip_2": "",
"description": "",
"source_reference": {
"page": ""
}
},
{
"id": "Standing Shield",
"name": "Standing Shield (WIP)",
"category": "Boucliers",
"grip_1": "",
"grip_2": "",
"description": "",
"source_reference": {
"page": ""
}
},
{
"id": "The Ancestral Sword of the Fox [Blessed Treasure]",
"name": "The Ancestral Sword of the Fox [Blessed Treasure] (WIP)",
"category": "Sabres",
"grip_1": "",
"grip_2": "Dangerosité +8",
"description": "",
"source_reference": {
"page": ""
}
} }
] ]
} }

View File

@@ -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."
@@ -79,6 +83,42 @@
} }
}, },
"l5r5e": { "l5r5e": {
"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",
@@ -103,16 +143,6 @@
"others": "Others" "others": "Others"
} }
}, },
"settings": {
"custom-compendiums": {
"title": "Compendiums",
"link": "https://gitlab.com/teaml5r/l5r5e/-/wikis/users/custom-compendiums.md"
},
"wiki": {
"title": "Wiki",
"link": "https://gitlab.com/teaml5r/l5r5e/-/wikis/home"
}
},
"logo": { "logo": {
"title": "Need help?", "title": "Need help?",
"src": "systems/l5r5e/assets/l5r-logo.webp", "src": "systems/l5r5e/assets/l5r-logo.webp",
@@ -132,6 +162,22 @@
"title": "FoundryVTT Official Discord", "title": "FoundryVTT Official Discord",
"info": "Your browser will open on the official Foundry discord", "info": "Your browser will open on the official Foundry discord",
"link": "https://discordapp.com/invite/DDBZUDf" "link": "https://discordapp.com/invite/DDBZUDf"
},
"notes": {
"title": "Changelog",
"link": "https://gitlab.com/teaml5r/l5r5e/-/blob/master/CHANGELOG.md"
},
"issues": {
"title": "Issues",
"link": "https://gitlab.com/teaml5r/l5r5e/-/issues"
},
"custom-compendiums": {
"title": "Compendiums",
"link": "https://gitlab.com/teaml5r/l5r5e/-/wikis/users/custom-compendiums.md"
},
"wiki": {
"title": "Wiki",
"link": "https://gitlab.com/teaml5r/l5r5e/-/wikis/home"
} }
}, },
"rings": { "rings": {
@@ -645,6 +691,7 @@
"boar": "Boar", "boar": "Boar",
"dragonfly": "Dragonfly", "dragonfly": "Dragonfly",
"firefly": "Firefly", "firefly": "Firefly",
"fox": "Fox",
"hare": "Hare", "hare": "Hare",
"monkey": "Monkey", "monkey": "Monkey",
"oriole": "Oriole", "oriole": "Oriole",
@@ -672,6 +719,7 @@
"capricious": "Capricious", "capricious": "Capricious",
"cautious": "Cautious", "cautious": "Cautious",
"clever": "Clever", "clever": "Clever",
"compassionate": "Compassionate",
"confused": "Confused", "confused": "Confused",
"courageous": "Courageous", "courageous": "Courageous",
"cowardly": "Cowardly", "cowardly": "Cowardly",
@@ -749,7 +797,8 @@
"cresting_waves": "Cresting Waves", "cresting_waves": "Cresting Waves",
"deathly_turns": "Deathly Turns", "deathly_turns": "Deathly Turns",
"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"
} }
} }
} }

View File

@@ -21,6 +21,10 @@
"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": "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."
@@ -79,6 +83,42 @@
} }
}, },
"l5r5e": { "l5r5e": {
"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 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",
@@ -103,16 +143,6 @@
"others": "Others" "others": "Others"
} }
}, },
"settings": {
"custom-compendiums": {
"title": "Compendiums",
"link": "https://gitlab.com/teaml5r/l5r5e/-/wikis/users/custom-compendiums.md"
},
"wiki": {
"title": "Wiki",
"link": "https://gitlab.com/teaml5r/l5r5e/-/wikis/home"
}
},
"logo": { "logo": {
"títle": "¿Necesitas ayuda?", "títle": "¿Necesitas ayuda?",
"src": "systems/l5r5e/assets/l5r-logo.webp", "src": "systems/l5r5e/assets/l5r-logo.webp",
@@ -132,6 +162,22 @@
"title": "Discord oficial de FoundryVTT", "title": "Discord oficial de FoundryVTT",
"info": "Su navegador se abrirá el discord oficial de Foundry", "info": "Su navegador se abrirá el discord oficial de Foundry",
"link": "https://discordapp.com/invite/DDBZUDf" "link": "https://discordapp.com/invite/DDBZUDf"
},
"notes": {
"title": "Changelog",
"link": "https://gitlab.com/teaml5r/l5r5e/-/blob/master/CHANGELOG.md"
},
"issues": {
"title": "Issues",
"link": "https://gitlab.com/teaml5r/l5r5e/-/issues"
},
"custom-compendiums": {
"title": "Compendiums",
"link": "https://gitlab.com/teaml5r/l5r5e/-/wikis/users/custom-compendiums.md"
},
"wiki": {
"title": "Wiki",
"link": "https://gitlab.com/teaml5r/l5r5e/-/wikis/home"
} }
}, },
"rings": { "rings": {
@@ -645,6 +691,7 @@
"boar": "Boar", "boar": "Boar",
"dragonfly": "Dragonfly", "dragonfly": "Dragonfly",
"firefly": "Firefly", "firefly": "Firefly",
"fox": "Fox",
"hare": "Hare", "hare": "Hare",
"monkey": "Monkey", "monkey": "Monkey",
"oriole": "Oriole", "oriole": "Oriole",
@@ -672,6 +719,7 @@
"capricious": "Capricious", "capricious": "Capricious",
"cautious": "Cautious", "cautious": "Cautious",
"clever": "Clever", "clever": "Clever",
"compassionate": "Compassionate",
"confused": "Confused", "confused": "Confused",
"courageous": "Courageous", "courageous": "Courageous",
"cowardly": "Cowardly", "cowardly": "Cowardly",
@@ -749,7 +797,8 @@
"cresting_waves": "Cresting Waves", "cresting_waves": "Cresting Waves",
"deathly_turns": "Deathly Turns", "deathly_turns": "Deathly Turns",
"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"
} }
} }
} }

View File

@@ -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,6 +83,42 @@
} }
}, },
"l5r5e": { "l5r5e": {
"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",
@@ -103,16 +143,6 @@
"others": "Autres" "others": "Autres"
} }
}, },
"settings": {
"custom-compendiums": {
"title": "Compendiums",
"link": "https://gitlab.com/teaml5r/l5r5e/-/wikis/users/custom-compendiums.md"
},
"wiki": {
"title": "Wiki",
"link": "https://gitlab.com/teaml5r/l5r5e/-/wikis/home"
}
},
"logo": { "logo": {
"title": "Besoin d'aide ?", "title": "Besoin d'aide ?",
"src": "systems/l5r5e/assets/l5r-logo.webp", "src": "systems/l5r5e/assets/l5r-logo.webp",
@@ -132,6 +162,22 @@
"title": "Rejoignez le Discord Francophone", "title": "Rejoignez le Discord Francophone",
"info": "Votre navigateur va ouvrir le discord francophone de foundry.", "info": "Votre navigateur va ouvrir le discord francophone de foundry.",
"link": "https://discord.gg/pPSDNJk" "link": "https://discord.gg/pPSDNJk"
},
"notes": {
"title": "Changelog",
"link": "https://gitlab.com/teaml5r/l5r5e/-/blob/master/CHANGELOG.md"
},
"issues": {
"title": "Issues",
"link": "https://gitlab.com/teaml5r/l5r5e/-/issues"
},
"custom-compendiums": {
"title": "Compendiums",
"link": "https://gitlab.com/teaml5r/l5r5e/-/wikis/users/custom-compendiums.md"
},
"wiki": {
"title": "Wiki",
"link": "https://gitlab.com/teaml5r/l5r5e/-/wikis/home"
} }
}, },
"rings": { "rings": {
@@ -645,6 +691,7 @@
"boar": "Sanglier", "boar": "Sanglier",
"dragonfly": "Libellule", "dragonfly": "Libellule",
"firefly": "Luciole", "firefly": "Luciole",
"fox": "Renard",
"hare": "Lièvre", "hare": "Lièvre",
"monkey": "Singe", "monkey": "Singe",
"oriole": "Loriot", "oriole": "Loriot",
@@ -672,6 +719,7 @@
"capricious": "Capricieuse", "capricious": "Capricieuse",
"cautious": "Prudente", "cautious": "Prudente",
"clever": "Astucieuse", "clever": "Astucieuse",
"compassionate": "Compatissante",
"confused": "Confuse", "confused": "Confuse",
"courageous": "Courageuse", "courageous": "Courageuse",
"cowardly": "Lâche", "cowardly": "Lâche",
@@ -749,7 +797,8 @@
"cresting_waves": "La Crête des Vagues", "cresting_waves": "La Crête des Vagues",
"deathly_turns": "Détours Mortels", "deathly_turns": "Détours Mortels",
"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"
} }
} }
} }

View File

@@ -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."
@@ -79,6 +83,42 @@
} }
}, },
"l5r5e": { "l5r5e": {
"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",
@@ -103,16 +143,6 @@
"others": "Others" "others": "Others"
} }
}, },
"settings": {
"wiki": {
"custom-compendiums": {
"title": "Compendiums",
"link": "https://gitlab.com/teaml5r/l5r5e/-/wikis/users/custom-compendiums.md"
},
"title": "Wiki",
"link": "https://gitlab.com/teaml5r/l5r5e/-/wikis/home"
}
},
"logo": { "logo": {
"title": "Bisogno di aiuto?", "title": "Bisogno di aiuto?",
"src": "systems/l5r5e/assets/l5r-logo.webp", "src": "systems/l5r5e/assets/l5r-logo.webp",
@@ -132,6 +162,22 @@
"title": "Discord Ufficiale di FoundryVTT", "title": "Discord Ufficiale di FoundryVTT",
"info": "Il tuo browser aprirà il Discord ufficiale di Foundry", "info": "Il tuo browser aprirà il Discord ufficiale di Foundry",
"link": "https://discordapp.com/invite/DDBZUDf" "link": "https://discordapp.com/invite/DDBZUDf"
},
"notes": {
"title": "Changelog",
"link": "https://gitlab.com/teaml5r/l5r5e/-/blob/master/CHANGELOG.md"
},
"issues": {
"title": "Issues",
"link": "https://gitlab.com/teaml5r/l5r5e/-/issues"
},
"custom-compendiums": {
"title": "Compendiums",
"link": "https://gitlab.com/teaml5r/l5r5e/-/wikis/users/custom-compendiums.md"
},
"wiki": {
"title": "Wiki",
"link": "https://gitlab.com/teaml5r/l5r5e/-/wikis/home"
} }
}, },
"rings": { "rings": {
@@ -645,6 +691,7 @@
"boar": "Cinghiale", "boar": "Cinghiale",
"dragonfly": "Libellula", "dragonfly": "Libellula",
"firefly": "Lucciola", "firefly": "Lucciola",
"fox": "Fox",
"hare": "Lepre", "hare": "Lepre",
"monkey": "Scimmia", "monkey": "Scimmia",
"oriole": "Oriolo", "oriole": "Oriolo",
@@ -672,6 +719,7 @@
"capricious": "Capriccioso", "capricious": "Capriccioso",
"cautious": "Cauto", "cautious": "Cauto",
"clever": "Furbo", "clever": "Furbo",
"compassionate": "Compassionate",
"confused": "Confuso", "confused": "Confuso",
"courageous": "Coraggioso", "courageous": "Coraggioso",
"cowardly": "Codardo", "cowardly": "Codardo",
@@ -749,7 +797,8 @@
"cresting_waves": "Cresting Waves", "cresting_waves": "Cresting Waves",
"deathly_turns": "Deathly Turns", "deathly_turns": "Deathly Turns",
"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"
} }
} }
} }

View File

@@ -16,4 +16,7 @@
{"_id":"L5RCoreArm000016","name":"Tosei-Gusoku","permission":{"default":0},"type":"armor","data":{"equipped":false,"quantity":1,"weight":"2","rarity":"8","zeni":"50 koku","properties":[{"id":"L5RCorePro000006","name":"Cumbersome"},{"id":"L5RCorePro000015","name":"Durable"},{"id":"L5RCorePro000011","name":"Wargear"}],"armor":{"physical":"4","supernatural":""},"description":"","source_reference":{"source":"shadowlands","page":"106"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/armor.svg","effects":[]} {"_id":"L5RCoreArm000016","name":"Tosei-Gusoku","permission":{"default":0},"type":"armor","data":{"equipped":false,"quantity":1,"weight":"2","rarity":"8","zeni":"50 koku","properties":[{"id":"L5RCorePro000006","name":"Cumbersome"},{"id":"L5RCorePro000015","name":"Durable"},{"id":"L5RCorePro000011","name":"Wargear"}],"armor":{"physical":"4","supernatural":""},"description":"","source_reference":{"source":"shadowlands","page":"106"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/armor.svg","effects":[]}
{"_id":"L5RCoreArm000017","name":"Sailor's garb","permission":{"default":0},"type":"armor","data":{"equipped":false,"quantity":1,"weight":"1","rarity":"2","zeni":"1 bu","properties":[{"id":"L5RCorePro000012","name":"Mundane"},{"id":"L5RCorePro000015","name":"Durable"}],"armor":{"physical":"1","supernatural":""},"description":"","source_reference":{"source":"the_mantis_clan","page":"9"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/keikogi.svg","effects":[]} {"_id":"L5RCoreArm000017","name":"Sailor's garb","permission":{"default":0},"type":"armor","data":{"equipped":false,"quantity":1,"weight":"1","rarity":"2","zeni":"1 bu","properties":[{"id":"L5RCorePro000012","name":"Mundane"},{"id":"L5RCorePro000015","name":"Durable"}],"armor":{"physical":"1","supernatural":""},"description":"","source_reference":{"source":"the_mantis_clan","page":"9"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/keikogi.svg","effects":[]}
{"_id":"L5RCoreArm000018","name":"Shark leather armor","permission":{"default":0},"type":"armor","data":{"equipped":false,"quantity":1,"weight":"2","rarity":"7","zeni":"25 koku","properties":[{"id":"L5RCorePro000010","name":"Resplendent"}],"armor":{"physical":"2","supernatural":""},"description":"","source_reference":{"source":"the_mantis_clan","page":"9"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/armor.svg","effects":[]} {"_id":"L5RCoreArm000018","name":"Shark leather armor","permission":{"default":0},"type":"armor","data":{"equipped":false,"quantity":1,"weight":"2","rarity":"7","zeni":"25 koku","properties":[{"id":"L5RCorePro000010","name":"Resplendent"}],"armor":{"physical":"2","supernatural":""},"description":"","source_reference":{"source":"the_mantis_clan","page":"9"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/armor.svg","effects":[]}
{"_id":"L5RCoreArm000019","name":"The Golden Obi of the Sun Goddess [Blessed Treasure]","permission":{"default":0},"type":"armor","data":{"equipped":false,"quantity":1,"weight":"1","rarity":"10","zeni":"0","properties":[{"id":"L5RCorePro000002","name":"Ceremonial"},{"id":"L5RCorePro000016","name":"Subtle"},{"id":"L5RCorePro000010","name":"Resplendent"}],"armor":{"physical":"3","supernatural":"6"},"description":"","source_reference":{"source":"celestial_realms","page":"97"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/armor.svg","effects":[]} {"_id":"L5RCoreArm000019","name":"The Golden Obi of the Sun Goddess [Blessed Treasure]","permission":{"default":0},"type":"armor","data":{"equipped":false,"quantity":1,"weight":"1","rarity":"10","zeni":"0","properties":[{"id":"L5RCorePro000002","name":"Ceremonial"},{"id":"L5RCorePro000016","name":"Subtle"},{"id":"L5RCorePro000010","name":"Resplendent"}],"armor":{"physical":"3","supernatural":"6"},"description":"","source_reference":{"source":"celestial_realms","page":"97"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/keikogi.svg","effects":[]}
{"_id":"L5RCoreArm000020","name":"Mirror Armor","permission":{"default":0},"type":"armor","data":{"equipped":false,"quantity":1,"weight":"1","rarity":"8","zeni":"40 koku","properties":[{"id":"L5RCorePro000011","name":"Wargear"}],"armor":{"physical":"3","supernatural":"1"},"description":"","source_reference":{"source":"children_of_the_five_winds","page":"103"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/armor.svg","effects":[]}
{"_id":"L5RCoreArm000021","name":"Unicorn Barding","permission":{"default":0},"type":"armor","data":{"equipped":false,"quantity":1,"weight":"1","rarity":"8","zeni":"65 koku","properties":[{"id":"L5RCorePro000002","name":"Ceremonial"},{"id":"L5RCorePro000010","name":"Resplendent"},{"id":"L5RCorePro000011","name":"Wargear"}],"armor":{"physical":"2","supernatural":""},"description":"","source_reference":{"source":"children_of_the_five_winds","page":"103"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/armor.svg","effects":[]}
{"_id":"L5RCoreArm000022","name":"Yuki: The Ancestral Armor of the Unicorn Clan [Blessed Treasure]","permission":{"default":0},"type":"armor","data":{"equipped":false,"quantity":1,"weight":"1","rarity":"10","zeni":"0","properties":[{"id":"L5RCorePro000002","name":"Ceremonial"},{"id":"L5RCorePro000006","name":"Cumbersome"},{"id":"L5RCorePro000015","name":"Durable"},{"id":"L5RCorePro000014","name":"Sacred"},{"id":"L5RCorePro000011","name":"Wargear"}],"armor":{"physical":"6","supernatural":"2"},"description":"","source_reference":{"source":"children_of_the_five_winds","page":"105"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/armor.svg","effects":[]}

View File

@@ -16,3 +16,6 @@
{"_id":"L5RCoreItp000016","name":"Ghostlands Yodhaniya Pattern","permission":{"default":0},"type":"item_pattern","data":{"in_curriculum":false,"xp_used":0,"rank":1,"bought_at_rank":0,"ring":"void","xp_cost":"6","rarity_modifier":"4","linked_property_id":"L5RCorePro000032","description":"","source_reference":{"source":"path_of_waves","page":"117"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/item_pattern.svg","effects":[]} {"_id":"L5RCoreItp000016","name":"Ghostlands Yodhaniya Pattern","permission":{"default":0},"type":"item_pattern","data":{"in_curriculum":false,"xp_used":0,"rank":1,"bought_at_rank":0,"ring":"void","xp_cost":"6","rarity_modifier":"4","linked_property_id":"L5RCorePro000032","description":"","source_reference":{"source":"path_of_waves","page":"117"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/item_pattern.svg","effects":[]}
{"_id":"L5RCoreItp000017","name":"Kökejins Heart of the Wind Pattern","permission":{"default":0},"type":"item_pattern","data":{"in_curriculum":false,"xp_used":0,"rank":1,"bought_at_rank":0,"ring":"void","xp_cost":"8","rarity_modifier":"5","linked_property_id":"L5RCorePro000033","description":"","source_reference":{"source":"path_of_waves","page":"117"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/item_pattern.svg","effects":[]} {"_id":"L5RCoreItp000017","name":"Kökejins Heart of the Wind Pattern","permission":{"default":0},"type":"item_pattern","data":{"in_curriculum":false,"xp_used":0,"rank":1,"bought_at_rank":0,"ring":"void","xp_cost":"8","rarity_modifier":"5","linked_property_id":"L5RCorePro000033","description":"","source_reference":{"source":"path_of_waves","page":"117"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/item_pattern.svg","effects":[]}
{"_id":"L5RCoreItp000018","name":"Agasha Pattern","permission":{"default":0},"type":"item_pattern","data":{"in_curriculum":false,"xp_used":0,"rank":1,"bought_at_rank":0,"ring":"void","xp_cost":"6","rarity_modifier":"4","linked_property_id":"L5RCorePro000034","description":"","source_reference":{"source":"celestial_realms","page":"105"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/item_pattern.svg","effects":[]} {"_id":"L5RCoreItp000018","name":"Agasha Pattern","permission":{"default":0},"type":"item_pattern","data":{"in_curriculum":false,"xp_used":0,"rank":1,"bought_at_rank":0,"ring":"void","xp_cost":"6","rarity_modifier":"4","linked_property_id":"L5RCorePro000034","description":"","source_reference":{"source":"celestial_realms","page":"105"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/item_pattern.svg","effects":[]}
{"_id":"L5RCoreItp000019","name":"Ujik Horsebow Pattern","permission":{"default":0},"type":"item_pattern","data":{"in_curriculum":false,"xp_used":0,"rank":1,"bought_at_rank":0,"ring":"void","xp_cost":"4","rarity_modifier":"3","linked_property_id":"L5RCorePro000035","description":"","source_reference":{"source":"children_of_the_five_winds","page":"107"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/item_pattern.svg","effects":[]}
{"_id":"L5RCoreItp000020","name":"Utsuko Pattern","permission":{"default":0},"type":"item_pattern","data":{"in_curriculum":false,"xp_used":0,"rank":1,"bought_at_rank":0,"ring":"void","xp_cost":"3","rarity_modifier":"4","linked_property_id":"L5RCorePro000036","description":"","source_reference":{"source":"children_of_the_five_winds","page":"107"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/item_pattern.svg","effects":[]}
{"_id":"L5RCoreItp000021","name":"Watered Steel Pattern","permission":{"default":0},"type":"item_pattern","data":{"in_curriculum":false,"xp_used":0,"rank":1,"bought_at_rank":0,"ring":"void","xp_cost":"8","rarity_modifier":"6","linked_property_id":"L5RCorePro000037","description":"","source_reference":{"source":"children_of_the_five_winds","page":"107"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/item_pattern.svg","effects":[]}

View File

@@ -109,3 +109,13 @@
{"_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":"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":"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":"L5RCoreIte000118","name":"Prayer Rug","permission":{"default":0},"type":"item","data":{"equipped":false,"quantity":1,"weight":"0","rarity":"9","zeni":"2 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":"L5RCoreIte000119","name":"Sand Clock","permission":{"default":0},"type":"item","data":{"equipped":false,"quantity":1,"weight":"0","rarity":"6","zeni":"2 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":"L5RCoreIte000120","name":"Traveling Board Games","permission":{"default":0},"type":"item","data":{"equipped":false,"quantity":1,"weight":"0","rarity":"4","zeni":"1 Bu","properties":[],"description":"","source_reference":{"source":"children_of_the_five_winds","page":"103"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/item.svg","effects":[]}
{"_id":"L5RCoreIte000121","name":"Word of the Prophet","permission":{"default":0},"type":"item","data":{"equipped":false,"quantity":1,"weight":"0","rarity":"9","zeni":"15 Koku","properties":[],"description":"","source_reference":{"source":"children_of_the_five_winds","page":"103"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/item.svg","effects":[]}
{"_id":"L5RCoreIte000122","name":"Talisman of the Sun [Blessed Treasure]","permission":{"default":0},"type":"item","data":{"equipped":false,"quantity":1,"weight":"0","rarity":"10","zeni":"0","properties":[],"description":"","source_reference":{"source":"children_of_the_five_winds","page":"104"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/item.svg","effects":[]}
{"_id":"L5RCoreIte000123","name":"Fox Pipe [Blessed Treasure]","permission":{"default":0},"type":"item","data":{"equipped":false,"quantity":1,"weight":"0","rarity":"10","zeni":"0","properties":[],"description":"","source_reference":{"source":"children_of_the_five_winds","page":"105"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/item.svg","effects":[]}

View File

@@ -14,8 +14,11 @@
{"_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":"icons/svg/silenced.svg","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":"icons/svg/unconscious.svg","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":"icons/svg/degen.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/social.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":"icons/svg/eye.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/social.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":"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/social.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":"icons/svg/poison.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/social.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":"icons/svg/daze.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/social.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":"icons/svg/fire.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/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/social.svg","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":{}}

File diff suppressed because one or more lines are too long

View File

@@ -83,3 +83,6 @@
{"_id":"L5RCoreAdv000083","name":"Insomniac","permission":{"default":0},"type":"peculiarity","data":{"in_curriculum":false,"xp_used":0,"rank":0,"bought_at_rank":0,"ring":"void","peculiarity_type":"adversity","types":"Mental","description":"","source_reference":{"source":"writ_of_the_wild","page":"104"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/peculiarity.svg","effects":[]} {"_id":"L5RCoreAdv000083","name":"Insomniac","permission":{"default":0},"type":"peculiarity","data":{"in_curriculum":false,"xp_used":0,"rank":0,"bought_at_rank":0,"ring":"void","peculiarity_type":"adversity","types":"Mental","description":"","source_reference":{"source":"writ_of_the_wild","page":"104"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/peculiarity.svg","effects":[]}
{"_id":"L5RCoreAdv000084","name":"Out of Shape","permission":{"default":0},"type":"peculiarity","data":{"in_curriculum":false,"xp_used":0,"rank":0,"bought_at_rank":0,"ring":"earth","peculiarity_type":"adversity","types":"Physical","description":"","source_reference":{"source":"writ_of_the_wild","page":"105"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/peculiarity.svg","effects":[]} {"_id":"L5RCoreAdv000084","name":"Out of Shape","permission":{"default":0},"type":"peculiarity","data":{"in_curriculum":false,"xp_used":0,"rank":0,"bought_at_rank":0,"ring":"earth","peculiarity_type":"adversity","types":"Physical","description":"","source_reference":{"source":"writ_of_the_wild","page":"105"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/peculiarity.svg","effects":[]}
{"_id":"L5RCoreAdv000085","name":"Stalked by [Creature]","permission":{"default":0},"type":"peculiarity","data":{"in_curriculum":false,"xp_used":0,"rank":0,"bought_at_rank":0,"ring":"earth","peculiarity_type":"adversity","types":"Interpersonal, Mental, Spiritual","description":"","source_reference":{"source":"writ_of_the_wild","page":"105"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/peculiarity.svg","effects":[]} {"_id":"L5RCoreAdv000085","name":"Stalked by [Creature]","permission":{"default":0},"type":"peculiarity","data":{"in_curriculum":false,"xp_used":0,"rank":0,"bought_at_rank":0,"ring":"earth","peculiarity_type":"adversity","types":"Interpersonal, Mental, Spiritual","description":"","source_reference":{"source":"writ_of_the_wild","page":"105"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/peculiarity.svg","effects":[]}
{"_id":"L5RCoreAdv000086","name":"Lost Family History","permission":{"default":0},"type":"peculiarity","data":{"in_curriculum":false,"xp_used":0,"rank":0,"bought_at_rank":0,"ring":"earth","peculiarity_type":"adversity","types":"Interpersonal, Material","description":"","source_reference":{"source":"children_of_the_five_winds","page":"95"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/peculiarity.svg","effects":[]}
{"_id":"L5RCoreAdv000087","name":"Penalty","permission":{"default":0},"type":"peculiarity","data":{"in_curriculum":false,"xp_used":0,"rank":0,"bought_at_rank":0,"ring":"fire","peculiarity_type":"adversity","types":"Infamy, Social","description":"","source_reference":{"source":"children_of_the_five_winds","page":"95"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/peculiarity.svg","effects":[]}
{"_id":"L5RCoreAdv000088","name":"Schism in Status","permission":{"default":0},"type":"peculiarity","data":{"in_curriculum":false,"xp_used":0,"rank":0,"bought_at_rank":0,"ring":"water","peculiarity_type":"adversity","types":"Infamy, Interpersonal","description":"","source_reference":{"source":"children_of_the_five_winds","page":"96"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/peculiarity.svg","effects":[]}

View File

@@ -40,3 +40,6 @@
{"_id":"L5RCoreAnx000040","name":"Fear of [Common Creature]","permission":{"default":0},"type":"peculiarity","data":{"in_curriculum":false,"xp_used":0,"rank":0,"bought_at_rank":0,"ring":"earth","peculiarity_type":"anxiety","types":"Mental","description":"","source_reference":{"source":"writ_of_the_wild","page":"105"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/peculiarity.svg","effects":[]} {"_id":"L5RCoreAnx000040","name":"Fear of [Common Creature]","permission":{"default":0},"type":"peculiarity","data":{"in_curriculum":false,"xp_used":0,"rank":0,"bought_at_rank":0,"ring":"earth","peculiarity_type":"anxiety","types":"Mental","description":"","source_reference":{"source":"writ_of_the_wild","page":"105"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/peculiarity.svg","effects":[]}
{"_id":"L5RCoreAnx000041","name":"Fear of Mediocrity","permission":{"default":0},"type":"peculiarity","data":{"in_curriculum":false,"xp_used":0,"rank":0,"bought_at_rank":0,"ring":"fire","peculiarity_type":"anxiety","types":"Interpersonal, Mental","description":"","source_reference":{"source":"writ_of_the_wild","page":"106"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/peculiarity.svg","effects":[]} {"_id":"L5RCoreAnx000041","name":"Fear of Mediocrity","permission":{"default":0},"type":"peculiarity","data":{"in_curriculum":false,"xp_used":0,"rank":0,"bought_at_rank":0,"ring":"fire","peculiarity_type":"anxiety","types":"Interpersonal, Mental","description":"","source_reference":{"source":"writ_of_the_wild","page":"106"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/peculiarity.svg","effects":[]}
{"_id":"L5RCoreAnx000042","name":"Fear of Poison","permission":{"default":0},"type":"peculiarity","data":{"in_curriculum":false,"xp_used":0,"rank":0,"bought_at_rank":0,"ring":"air","peculiarity_type":"anxiety","types":"Mental","description":"","source_reference":{"source":"writ_of_the_wild","page":"106"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/peculiarity.svg","effects":[]} {"_id":"L5RCoreAnx000042","name":"Fear of Poison","permission":{"default":0},"type":"peculiarity","data":{"in_curriculum":false,"xp_used":0,"rank":0,"bought_at_rank":0,"ring":"air","peculiarity_type":"anxiety","types":"Mental","description":"","source_reference":{"source":"writ_of_the_wild","page":"106"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/peculiarity.svg","effects":[]}
{"_id":"L5RCoreAnx000043","name":"Animal Signs","permission":{"default":0},"type":"peculiarity","data":{"in_curriculum":false,"xp_used":0,"rank":0,"bought_at_rank":0,"ring":"void","peculiarity_type":"anxiety","types":"Mental, Spiritual","description":"","source_reference":{"source":"children_of_the_five_winds","page":"96"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/peculiarity.svg","effects":[]}
{"_id":"L5RCoreAnx000044","name":"Disdain for Urban Sprawl","permission":{"default":0},"type":"peculiarity","data":{"in_curriculum":false,"xp_used":0,"rank":0,"bought_at_rank":0,"ring":"earth","peculiarity_type":"anxiety","types":"Mental","description":"","source_reference":{"source":"children_of_the_five_winds","page":"96"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/peculiarity.svg","effects":[]}
{"_id":"L5RCoreAnx000045","name":"Tip of the Tongue","permission":{"default":0},"type":"peculiarity","data":{"in_curriculum":false,"xp_used":0,"rank":0,"bought_at_rank":0,"ring":"air","peculiarity_type":"anxiety","types":"Mental","description":"","source_reference":{"source":"children_of_the_five_winds","page":"97"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/peculiarity.svg","effects":[]}

View File

@@ -69,3 +69,6 @@
{"_id":"L5RCoreDis000069","name":"Knowledgeable Wilderness Guide","permission":{"default":0},"type":"peculiarity","data":{"in_curriculum":false,"xp_used":0,"rank":0,"bought_at_rank":0,"ring":"void","peculiarity_type":"distinction","types":"Interpersonal, Spiritual","description":"","source_reference":{"source":"writ_of_the_wild","page":"102"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/peculiarity.svg","effects":[]} {"_id":"L5RCoreDis000069","name":"Knowledgeable Wilderness Guide","permission":{"default":0},"type":"peculiarity","data":{"in_curriculum":false,"xp_used":0,"rank":0,"bought_at_rank":0,"ring":"void","peculiarity_type":"distinction","types":"Interpersonal, Spiritual","description":"","source_reference":{"source":"writ_of_the_wild","page":"102"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/peculiarity.svg","effects":[]}
{"_id":"L5RCoreDis000070","name":"Skilled Midwife","permission":{"default":0},"type":"peculiarity","data":{"in_curriculum":false,"xp_used":0,"rank":0,"bought_at_rank":0,"ring":"fire","peculiarity_type":"distinction","types":"Interpersonal","description":"","source_reference":{"source":"writ_of_the_wild","page":"102"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/peculiarity.svg","effects":[]} {"_id":"L5RCoreDis000070","name":"Skilled Midwife","permission":{"default":0},"type":"peculiarity","data":{"in_curriculum":false,"xp_used":0,"rank":0,"bought_at_rank":0,"ring":"fire","peculiarity_type":"distinction","types":"Interpersonal","description":"","source_reference":{"source":"writ_of_the_wild","page":"102"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/peculiarity.svg","effects":[]}
{"_id":"L5RCoreDis000071","name":"Thoughtful Arbiter","permission":{"default":0},"type":"peculiarity","data":{"in_curriculum":false,"xp_used":0,"rank":0,"bought_at_rank":0,"ring":"water","peculiarity_type":"distinction","types":"Interpersonal","description":"","source_reference":{"source":"writ_of_the_wild","page":"102"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/peculiarity.svg","effects":[]} {"_id":"L5RCoreDis000071","name":"Thoughtful Arbiter","permission":{"default":0},"type":"peculiarity","data":{"in_curriculum":false,"xp_used":0,"rank":0,"bought_at_rank":0,"ring":"water","peculiarity_type":"distinction","types":"Interpersonal","description":"","source_reference":{"source":"writ_of_the_wild","page":"102"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/peculiarity.svg","effects":[]}
{"_id":"L5RCoreDis000072","name":"Affinity with [Animal Type]","permission":{"default":0},"type":"peculiarity","data":{"in_curriculum":false,"xp_used":0,"rank":0,"bought_at_rank":0,"ring":"void","peculiarity_type":"distinction","types":"Fame, Interpersonal","description":"","source_reference":{"source":"children_of_the_five_winds","page":"93"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/peculiarity.svg","effects":[]}
{"_id":"L5RCoreDis000073","name":"Legal Scholarship","permission":{"default":0},"type":"peculiarity","data":{"in_curriculum":false,"xp_used":0,"rank":0,"bought_at_rank":0,"ring":"air","peculiarity_type":"distinction","types":"Interpersonal, Social","description":"","source_reference":{"source":"children_of_the_five_winds","page":"93"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/peculiarity.svg","effects":[]}
{"_id":"L5RCoreDis000074","name":"Syncretic Philosophy","permission":{"default":0},"type":"peculiarity","data":{"in_curriculum":false,"xp_used":0,"rank":0,"bought_at_rank":0,"ring":"water","peculiarity_type":"distinction","types":"Interpersonal, Mental","description":"","source_reference":{"source":"children_of_the_five_winds","page":"93"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/peculiarity.svg","effects":[]}

View File

@@ -41,3 +41,6 @@
{"_id":"L5RCorePas000042","name":"Glorious Deeds","permission":{"default":0},"type":"peculiarity","data":{"in_curriculum":false,"xp_used":0,"rank":0,"bought_at_rank":0,"ring":"fire","peculiarity_type":"passion","types":"Martial, Social","description":"","source_reference":{"source":"fields_of_victory","page":"83"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/peculiarity.svg","effects":[]} {"_id":"L5RCorePas000042","name":"Glorious Deeds","permission":{"default":0},"type":"peculiarity","data":{"in_curriculum":false,"xp_used":0,"rank":0,"bought_at_rank":0,"ring":"fire","peculiarity_type":"passion","types":"Martial, Social","description":"","source_reference":{"source":"fields_of_victory","page":"83"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/peculiarity.svg","effects":[]}
{"_id":"L5RCorePas000043","name":"Charity","permission":{"default":0},"type":"peculiarity","data":{"in_curriculum":false,"xp_used":0,"rank":0,"bought_at_rank":0,"ring":"water","peculiarity_type":"passion","types":"Interpersonal, Mental","description":"","source_reference":{"source":"writ_of_the_wild","page":"103"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/peculiarity.svg","effects":[]} {"_id":"L5RCorePas000043","name":"Charity","permission":{"default":0},"type":"peculiarity","data":{"in_curriculum":false,"xp_used":0,"rank":0,"bought_at_rank":0,"ring":"water","peculiarity_type":"passion","types":"Interpersonal, Mental","description":"","source_reference":{"source":"writ_of_the_wild","page":"103"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/peculiarity.svg","effects":[]}
{"_id":"L5RCorePas000044","name":"Kintsugi","permission":{"default":0},"type":"peculiarity","data":{"in_curriculum":false,"xp_used":0,"rank":0,"bought_at_rank":0,"ring":"earth","peculiarity_type":"passion","types":"Mental, Physical","description":"","source_reference":{"source":"writ_of_the_wild","page":"104"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/peculiarity.svg","effects":[]} {"_id":"L5RCorePas000044","name":"Kintsugi","permission":{"default":0},"type":"peculiarity","data":{"in_curriculum":false,"xp_used":0,"rank":0,"bought_at_rank":0,"ring":"earth","peculiarity_type":"passion","types":"Mental, Physical","description":"","source_reference":{"source":"writ_of_the_wild","page":"104"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/peculiarity.svg","effects":[]}
{"_id":"L5RCorePas000045","name":"Horse Racing","permission":{"default":0},"type":"peculiarity","data":{"in_curriculum":false,"xp_used":0,"rank":0,"bought_at_rank":0,"ring":"air","peculiarity_type":"passion","types":"Physical","description":"","source_reference":{"source":"children_of_the_five_winds","page":"94"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/peculiarity.svg","effects":[]}
{"_id":"L5RCorePas000046","name":"Hot Pot","permission":{"default":0},"type":"peculiarity","data":{"in_curriculum":false,"xp_used":0,"rank":0,"bought_at_rank":0,"ring":"earth","peculiarity_type":"passion","types":"Interpersonal, Physical","description":"","source_reference":{"source":"children_of_the_five_winds","page":"94"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/peculiarity.svg","effects":[]}
{"_id":"L5RCorePas000047","name":"Stargazing","permission":{"default":0},"type":"peculiarity","data":{"in_curriculum":false,"xp_used":0,"rank":0,"bought_at_rank":0,"ring":"void","peculiarity_type":"passion","types":"Mental, Spiritual","description":"","source_reference":{"source":"children_of_the_five_winds","page":"94"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/peculiarity.svg","effects":[]}

View File

@@ -32,3 +32,7 @@
{"_id":"L5RCorePro000032","name":"Ghostlands Yodhaniya Pattern","permission":{"default":0},"type":"property","data":{"properties":[],"description":"","source_reference":{"source":"path_of_waves","page":"117"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/property.svg","effects":[]} {"_id":"L5RCorePro000032","name":"Ghostlands Yodhaniya Pattern","permission":{"default":0},"type":"property","data":{"properties":[],"description":"","source_reference":{"source":"path_of_waves","page":"117"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/property.svg","effects":[]}
{"_id":"L5RCorePro000033","name":"Kökejins Heart of the Wind Pattern","permission":{"default":0},"type":"property","data":{"properties":[],"description":"","source_reference":{"source":"path_of_waves","page":"117"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/property.svg","effects":[]} {"_id":"L5RCorePro000033","name":"Kökejins Heart of the Wind Pattern","permission":{"default":0},"type":"property","data":{"properties":[],"description":"","source_reference":{"source":"path_of_waves","page":"117"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/property.svg","effects":[]}
{"_id":"L5RCorePro000034","name":"Agasha Pattern","permission":{"default":0},"type":"property","data":{"properties":[],"description":"","source_reference":{"source":"celestial_realms","page":"105"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/property.svg","effects":[]} {"_id":"L5RCorePro000034","name":"Agasha Pattern","permission":{"default":0},"type":"property","data":{"properties":[],"description":"","source_reference":{"source":"celestial_realms","page":"105"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/property.svg","effects":[]}
{"_id":"L5RCorePro000035","name":"Ujik Horsebow Pattern","permission":{"default":0},"type":"property","data":{"properties":[],"description":"","source_reference":{"source":"children_of_the_five_winds","page":"107"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/property.svg","effects":[]}
{"_id":"L5RCorePro000036","name":"Utsuko Pattern","permission":{"default":0},"type":"property","data":{"properties":[],"description":"","source_reference":{"source":"children_of_the_five_winds","page":"107"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/property.svg","effects":[]}
{"_id":"L5RCorePro000037","name":"Watered Steel Pattern","permission":{"default":0},"type":"property","data":{"properties":[],"description":"","source_reference":{"source":"children_of_the_five_winds","page":"107"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/property.svg","effects":[]}
{"_id":"L5RCorePro000038","name":"Hewing","permission":{"default":0},"type":"property","data":{"properties":[],"description":"","source_reference":{"source":"children_of_the_five_winds","page":"116"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/property.svg","effects":[]}

View File

@@ -73,3 +73,4 @@
{"_id":"L5RCoreInv000073","name":"Rain of Ten Thousand Lotuses","permission":{"default":0},"type":"technique","data":{"in_curriculum":false,"xp_used":0,"rank":"5","bought_at_rank":0,"ring":"water","skill":"theology","difficulty":"2","technique_type":"invocation","xp_cost":"3","description":"","source_reference":{"source":"celestial_realms","page":"109"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/techs/invocation.svg","effects":[]} {"_id":"L5RCoreInv000073","name":"Rain of Ten Thousand Lotuses","permission":{"default":0},"type":"technique","data":{"in_curriculum":false,"xp_used":0,"rank":"5","bought_at_rank":0,"ring":"water","skill":"theology","difficulty":"2","technique_type":"invocation","xp_cost":"3","description":"","source_reference":{"source":"celestial_realms","page":"109"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/techs/invocation.svg","effects":[]}
{"_id":"L5RCoreInv000074","name":"Path of Beasts","permission":{"default":0},"type":"technique","data":{"in_curriculum":false,"xp_used":0,"rank":"3","bought_at_rank":0,"ring":"water","skill":"theology","difficulty":"2","technique_type":"invocation","xp_cost":"3","description":"","source_reference":{"source":"celestial_realms","page":"109"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/techs/invocation.svg","effects":[]} {"_id":"L5RCoreInv000074","name":"Path of Beasts","permission":{"default":0},"type":"technique","data":{"in_curriculum":false,"xp_used":0,"rank":"3","bought_at_rank":0,"ring":"water","skill":"theology","difficulty":"2","technique_type":"invocation","xp_cost":"3","description":"","source_reference":{"source":"celestial_realms","page":"109"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/techs/invocation.svg","effects":[]}
{"_id":"L5RCoreInv000075","name":"Essence of Jade","permission":{"default":0},"type":"technique","data":{"in_curriculum":false,"xp_used":0,"rank":"3","bought_at_rank":0,"ring":"earth","skill":"theology","difficulty":"3","technique_type":"invocation","xp_cost":"3","description":"","source_reference":{"source":"shadowlands","page":"114"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/techs/invocation.svg","effects":[]} {"_id":"L5RCoreInv000075","name":"Essence of Jade","permission":{"default":0},"type":"technique","data":{"in_curriculum":false,"xp_used":0,"rank":"3","bought_at_rank":0,"ring":"earth","skill":"theology","difficulty":"3","technique_type":"invocation","xp_cost":"3","description":"","source_reference":{"source":"shadowlands","page":"114"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/techs/invocation.svg","effects":[]}
{"_id":"L5RCoreInv000076","name":"The World is Not Heavy","permission":{"default":0},"type":"technique","data":{"in_curriculum":false,"xp_used":0,"rank":"2","bought_at_rank":0,"ring":"water","skill":"theology","difficulty":"3","technique_type":"invocation","xp_cost":"3","description":"","source_reference":{"source":"children_of_the_five_winds","page":"116"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/techs/invocation.svg","effects":[]}

View File

@@ -78,3 +78,12 @@
{"_id":"L5RCoreKat000079","name":"Owls Swoop Style","permission":{"default":0},"type":"technique","data":{"in_curriculum":false,"xp_used":0,"rank":"3","bought_at_rank":0,"ring":"void","skill":"","difficulty":"","technique_type":"kata","xp_cost":"3","description":"","source_reference":{"source":"writ_of_the_wild","page":"117"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/techs/kata.svg","effects":[]} {"_id":"L5RCoreKat000079","name":"Owls Swoop Style","permission":{"default":0},"type":"technique","data":{"in_curriculum":false,"xp_used":0,"rank":"3","bought_at_rank":0,"ring":"void","skill":"","difficulty":"","technique_type":"kata","xp_cost":"3","description":"","source_reference":{"source":"writ_of_the_wild","page":"117"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/techs/kata.svg","effects":[]}
{"_id":"L5RCoreKat000080","name":"Skittering Shift","permission":{"default":0},"type":"technique","data":{"in_curriculum":false,"xp_used":0,"rank":"3","bought_at_rank":0,"ring":"void","skill":"","difficulty":"","technique_type":"kata","xp_cost":"3","description":"","source_reference":{"source":"writ_of_the_wild","page":"118"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/techs/kata.svg","effects":[]} {"_id":"L5RCoreKat000080","name":"Skittering Shift","permission":{"default":0},"type":"technique","data":{"in_curriculum":false,"xp_used":0,"rank":"3","bought_at_rank":0,"ring":"void","skill":"","difficulty":"","technique_type":"kata","xp_cost":"3","description":"","source_reference":{"source":"writ_of_the_wild","page":"118"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/techs/kata.svg","effects":[]}
{"_id":"L5RCoreKat000081","name":"Tail Sweep","permission":{"default":0},"type":"technique","data":{"in_curriculum":false,"xp_used":0,"rank":"3","bought_at_rank":0,"ring":"void","skill":"","difficulty":"","technique_type":"kata","xp_cost":"3","description":"","source_reference":{"source":"writ_of_the_wild","page":"118"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/techs/kata.svg","effects":[]} {"_id":"L5RCoreKat000081","name":"Tail Sweep","permission":{"default":0},"type":"technique","data":{"in_curriculum":false,"xp_used":0,"rank":"3","bought_at_rank":0,"ring":"void","skill":"","difficulty":"","technique_type":"kata","xp_cost":"3","description":"","source_reference":{"source":"writ_of_the_wild","page":"118"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/techs/kata.svg","effects":[]}
{"_id":"L5RCoreKat000082","name":"Cautious Tread","permission":{"default":0},"type":"technique","data":{"in_curriculum":false,"xp_used":0,"rank":"1","bought_at_rank":0,"ring":"void","skill":"","difficulty":"","technique_type":"kata","xp_cost":"3","description":"","source_reference":{"source":"children_of_the_five_winds","page":"108"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/techs/kata.svg","effects":[]}
{"_id":"L5RCoreKat000083","name":"Stalking Leopard Style","permission":{"default":0},"type":"technique","data":{"in_curriculum":false,"xp_used":0,"rank":"2","bought_at_rank":0,"ring":"void","skill":"","difficulty":"","technique_type":"kata","xp_cost":"3","description":"","source_reference":{"source":"children_of_the_five_winds","page":"108"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/techs/kata.svg","effects":[]}
{"_id":"L5RCoreKat000084","name":"Sudden Downpour Style","permission":{"default":0},"type":"technique","data":{"in_curriculum":false,"xp_used":0,"rank":"3","bought_at_rank":0,"ring":"void","skill":"","difficulty":"","technique_type":"kata","xp_cost":"3","description":"","source_reference":{"source":"children_of_the_five_winds","page":"108"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/techs/kata.svg","effects":[]}
{"_id":"L5RCoreKat000085","name":"Swaying Grass Evasion","permission":{"default":0},"type":"technique","data":{"in_curriculum":false,"xp_used":0,"rank":"3","bought_at_rank":0,"ring":"void","skill":"","difficulty":"","technique_type":"kata","xp_cost":"3","description":"","source_reference":{"source":"children_of_the_five_winds","page":"108"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/techs/kata.svg","effects":[]}
{"_id":"L5RCoreKat000086","name":"Distracting Flurry Style","permission":{"default":0},"type":"technique","data":{"in_curriculum":false,"xp_used":0,"rank":"2","bought_at_rank":0,"ring":"void","skill":"melee,unarmed","difficulty":"","technique_type":"kata","xp_cost":"3","description":"","source_reference":{"source":"children_of_the_five_winds","page":"108"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/techs/kata.svg","effects":[]}
{"_id":"L5RCoreKat000087","name":"Scouring Wind Style","permission":{"default":0},"type":"technique","data":{"in_curriculum":false,"xp_used":0,"rank":"3","bought_at_rank":0,"ring":"void","skill":"melee,unarmed","difficulty":"","technique_type":"kata","xp_cost":"3","description":"","source_reference":{"source":"children_of_the_five_winds","page":"109"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/techs/kata.svg","effects":[]}
{"_id":"L5RCoreKat000088","name":"Slashing Sandstorm Style","permission":{"default":0},"type":"technique","data":{"in_curriculum":false,"xp_used":0,"rank":"2","bought_at_rank":0,"ring":"void","skill":"melee","difficulty":"","technique_type":"kata","xp_cost":"3","description":"","source_reference":{"source":"children_of_the_five_winds","page":"109"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/techs/kata.svg","effects":[]}
{"_id":"L5RCoreKat000089","name":"Descending Swarm Shot","permission":{"default":0},"type":"technique","data":{"in_curriculum":false,"xp_used":0,"rank":"3","bought_at_rank":0,"ring":"air","skill":"ranged","difficulty":"3","technique_type":"kata","xp_cost":"3","description":"","source_reference":{"source":"children_of_the_five_winds","page":"110"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/techs/kata.svg","effects":[]}
{"_id":"L5RCoreKat000090","name":"Thunderbolt Style","permission":{"default":0},"type":"technique","data":{"in_curriculum":false,"xp_used":0,"rank":"4","bought_at_rank":0,"ring":"void","skill":"","difficulty":"","technique_type":"kata","xp_cost":"3","description":"","source_reference":{"source":"children_of_the_five_winds","page":"110"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/techs/kata.svg","effects":[]}

View File

@@ -98,3 +98,13 @@
{"_id":"L5RCoreMas000098","name":"Born to Survive","permission":{"default":0},"type":"technique","data":{"in_curriculum":false,"xp_used":0,"rank":"6","bought_at_rank":0,"ring":"void","skill":"","difficulty":"","technique_type":"mastery_ability","xp_cost":"0","description":"","source_reference":{"source":"writ_of_the_wild","page":"101"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/techs/mastery_ability.svg","effects":[]} {"_id":"L5RCoreMas000098","name":"Born to Survive","permission":{"default":0},"type":"technique","data":{"in_curriculum":false,"xp_used":0,"rank":"6","bought_at_rank":0,"ring":"void","skill":"","difficulty":"","technique_type":"mastery_ability","xp_cost":"0","description":"","source_reference":{"source":"writ_of_the_wild","page":"101"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/techs/mastery_ability.svg","effects":[]}
{"_id":"L5RCoreMas000099","name":"Hunter of the Supernatural","permission":{"default":0},"type":"technique","data":{"in_curriculum":false,"xp_used":0,"rank":"6","bought_at_rank":0,"ring":"void","skill":"","difficulty":"","technique_type":"mastery_ability","xp_cost":"0","description":"","source_reference":{"source":"deathly_turns","page":"24"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/techs/mastery_ability.svg","effects":[]} {"_id":"L5RCoreMas000099","name":"Hunter of the Supernatural","permission":{"default":0},"type":"technique","data":{"in_curriculum":false,"xp_used":0,"rank":"6","bought_at_rank":0,"ring":"void","skill":"","difficulty":"","technique_type":"mastery_ability","xp_cost":"0","description":"","source_reference":{"source":"deathly_turns","page":"24"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/techs/mastery_ability.svg","effects":[]}
{"_id":"L5RCoreMas000100","name":"An Arrow Loosed","permission":{"default":0},"type":"technique","data":{"in_curriculum":false,"xp_used":0,"rank":"6","bought_at_rank":0,"ring":"void","skill":"","difficulty":"","technique_type":"mastery_ability","xp_cost":"0","description":"","source_reference":{"source":"deathly_turns","page":"25"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/techs/mastery_ability.svg","effects":[]} {"_id":"L5RCoreMas000100","name":"An Arrow Loosed","permission":{"default":0},"type":"technique","data":{"in_curriculum":false,"xp_used":0,"rank":"6","bought_at_rank":0,"ring":"void","skill":"","difficulty":"","technique_type":"mastery_ability","xp_cost":"0","description":"","source_reference":{"source":"deathly_turns","page":"25"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/techs/mastery_ability.svg","effects":[]}
{"_id":"L5RCoreMas000101","name":"Measured Force","permission":{"default":0},"type":"technique","data":{"in_curriculum":false,"xp_used":0,"rank":"6","bought_at_rank":0,"ring":"void","skill":"","difficulty":"","technique_type":"mastery_ability","xp_cost":"0","description":"","source_reference":{"source":"children_of_the_five_winds","page":"83"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/techs/mastery_ability.svg","effects":[]}
{"_id":"L5RCoreMas000102","name":"Student of Many Courts","permission":{"default":0},"type":"technique","data":{"in_curriculum":false,"xp_used":0,"rank":"6","bought_at_rank":0,"ring":"void","skill":"","difficulty":"","technique_type":"mastery_ability","xp_cost":"0","description":"","source_reference":{"source":"children_of_the_five_winds","page":"84"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/techs/mastery_ability.svg","effects":[]}
{"_id":"L5RCoreMas000103","name":"The Noble Heart Shines Through","permission":{"default":0},"type":"technique","data":{"in_curriculum":false,"xp_used":0,"rank":"6","bought_at_rank":0,"ring":"void","skill":"","difficulty":"","technique_type":"mastery_ability","xp_cost":"0","description":"","source_reference":{"source":"children_of_the_five_winds","page":"85"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/techs/mastery_ability.svg","effects":[]}
{"_id":"L5RCoreMas000104","name":"Cool Heads Prevail","permission":{"default":0},"type":"technique","data":{"in_curriculum":false,"xp_used":0,"rank":"6","bought_at_rank":0,"ring":"void","skill":"","difficulty":"","technique_type":"mastery_ability","xp_cost":"0","description":"","source_reference":{"source":"children_of_the_five_winds","page":"86"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/techs/mastery_ability.svg","effects":[]}
{"_id":"L5RCoreMas000105","name":"Procession of Seasons","permission":{"default":0},"type":"technique","data":{"in_curriculum":false,"xp_used":0,"rank":"6","bought_at_rank":0,"ring":"void","skill":"","difficulty":"","technique_type":"mastery_ability","xp_cost":"0","description":"","source_reference":{"source":"children_of_the_five_winds","page":"87"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/techs/mastery_ability.svg","effects":[]}
{"_id":"L5RCoreMas000106","name":"Lay of the Land","permission":{"default":0},"type":"technique","data":{"in_curriculum":false,"xp_used":0,"rank":"6","bought_at_rank":0,"ring":"void","skill":"","difficulty":"","technique_type":"mastery_ability","xp_cost":"0","description":"","source_reference":{"source":"children_of_the_five_winds","page":"88"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/techs/mastery_ability.svg","effects":[]}
{"_id":"L5RCoreMas000107","name":"Logical Conclusion","permission":{"default":0},"type":"technique","data":{"in_curriculum":false,"xp_used":0,"rank":"6","bought_at_rank":0,"ring":"void","skill":"","difficulty":"","technique_type":"mastery_ability","xp_cost":"0","description":"","source_reference":{"source":"children_of_the_five_winds","page":"89"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/techs/mastery_ability.svg","effects":[]}
{"_id":"L5RCoreMas000108","name":"Spirit of the Sacred Horse","permission":{"default":0},"type":"technique","data":{"in_curriculum":false,"xp_used":0,"rank":"6","bought_at_rank":0,"ring":"void","skill":"","difficulty":"","technique_type":"mastery_ability","xp_cost":"0","description":"","source_reference":{"source":"children_of_the_five_winds","page":"90"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/techs/mastery_ability.svg","effects":[]}
{"_id":"L5RCoreMas000109","name":"Reputation Sentinel","permission":{"default":0},"type":"technique","data":{"in_curriculum":false,"xp_used":0,"rank":"6","bought_at_rank":0,"ring":"void","skill":"","difficulty":"","technique_type":"mastery_ability","xp_cost":"0","description":"","source_reference":{"source":"children_of_the_five_winds","page":"91"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/techs/mastery_ability.svg","effects":[]}
{"_id":"L5RCoreMas000110","name":"Legendary Endurance","permission":{"default":0},"type":"technique","data":{"in_curriculum":false,"xp_used":0,"rank":"6","bought_at_rank":0,"ring":"void","skill":"","difficulty":"","technique_type":"mastery_ability","xp_cost":"0","description":"","source_reference":{"source":"children_of_the_five_winds","page":"92"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/techs/mastery_ability.svg","effects":[]}

View File

@@ -23,7 +23,7 @@
{"_id":"L5RCoreRit000023","name":"Beseech Akodo's Judgment","permission":{"default":0},"type":"technique","data":{"in_curriculum":false,"xp_used":0,"rank":"3","bought_at_rank":0,"ring":"void","skill":"tactics","difficulty":"3","technique_type":"ritual","xp_cost":"3","description":"","source_reference":{"source":"fields_of_victory","page":"96"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/techs/ritual.svg","effects":[]} {"_id":"L5RCoreRit000023","name":"Beseech Akodo's Judgment","permission":{"default":0},"type":"technique","data":{"in_curriculum":false,"xp_used":0,"rank":"3","bought_at_rank":0,"ring":"void","skill":"tactics","difficulty":"3","technique_type":"ritual","xp_cost":"3","description":"","source_reference":{"source":"fields_of_victory","page":"96"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/techs/ritual.svg","effects":[]}
{"_id":"L5RCoreRit000024","name":"Beseech Bayushi's Absolution","permission":{"default":0},"type":"technique","data":{"in_curriculum":false,"xp_used":0,"rank":"4","bought_at_rank":0,"ring":"air","skill":"sentiment","difficulty":"3","technique_type":"ritual","xp_cost":"3","description":"","source_reference":{"source":"fields_of_victory","page":"96"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/techs/ritual.svg","effects":[]} {"_id":"L5RCoreRit000024","name":"Beseech Bayushi's Absolution","permission":{"default":0},"type":"technique","data":{"in_curriculum":false,"xp_used":0,"rank":"4","bought_at_rank":0,"ring":"air","skill":"sentiment","difficulty":"3","technique_type":"ritual","xp_cost":"3","description":"","source_reference":{"source":"fields_of_victory","page":"96"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/techs/ritual.svg","effects":[]}
{"_id":"L5RCoreRit000025","name":"Beseech Doji's Wisdom","permission":{"default":0},"type":"technique","data":{"in_curriculum":false,"xp_used":0,"rank":"2","bought_at_rank":0,"ring":"void","skill":"composition","difficulty":"3","technique_type":"ritual","xp_cost":"3","description":"","source_reference":{"source":"fields_of_victory","page":"96"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/techs/ritual.svg","effects":[]} {"_id":"L5RCoreRit000025","name":"Beseech Doji's Wisdom","permission":{"default":0},"type":"technique","data":{"in_curriculum":false,"xp_used":0,"rank":"2","bought_at_rank":0,"ring":"void","skill":"composition","difficulty":"3","technique_type":"ritual","xp_cost":"3","description":"","source_reference":{"source":"fields_of_victory","page":"96"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/techs/ritual.svg","effects":[]}
{"_id":"L5RCoreRit000026","name":"Beseech Hida's MIght","permission":{"default":0},"type":"technique","data":{"in_curriculum":false,"xp_used":0,"rank":"2","bought_at_rank":0,"ring":"fire","skill":"meditation","difficulty":"2","technique_type":"ritual","xp_cost":"3","description":"","source_reference":{"source":"fields_of_victory","page":"97"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/techs/ritual.svg","effects":[]} {"_id":"L5RCoreRit000026","name":"Beseech Hida's Might","permission":{"default":0},"type":"technique","data":{"in_curriculum":false,"xp_used":0,"rank":"2","bought_at_rank":0,"ring":"fire","skill":"meditation","difficulty":"2","technique_type":"ritual","xp_cost":"3","description":"","source_reference":{"source":"fields_of_victory","page":"97"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/techs/ritual.svg","effects":[]}
{"_id":"L5RCoreRit000027","name":"Beseech Shiba's Calm","permission":{"default":0},"type":"technique","data":{"in_curriculum":false,"xp_used":0,"rank":"3","bought_at_rank":0,"ring":"void","skill":"theology","difficulty":"3","technique_type":"ritual","xp_cost":"3","description":"","source_reference":{"source":"fields_of_victory","page":"97"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/techs/ritual.svg","effects":[]} {"_id":"L5RCoreRit000027","name":"Beseech Shiba's Calm","permission":{"default":0},"type":"technique","data":{"in_curriculum":false,"xp_used":0,"rank":"3","bought_at_rank":0,"ring":"void","skill":"theology","difficulty":"3","technique_type":"ritual","xp_cost":"3","description":"","source_reference":{"source":"fields_of_victory","page":"97"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/techs/ritual.svg","effects":[]}
{"_id":"L5RCoreRit000028","name":"Beseech Shinjo's Empathy","permission":{"default":0},"type":"technique","data":{"in_curriculum":false,"xp_used":0,"rank":"2","bought_at_rank":0,"ring":"water","skill":"survival","difficulty":"@T:martialRank","technique_type":"ritual","xp_cost":"3","description":"","source_reference":{"source":"fields_of_victory","page":"97"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/techs/ritual.svg","effects":[]} {"_id":"L5RCoreRit000028","name":"Beseech Shinjo's Empathy","permission":{"default":0},"type":"technique","data":{"in_curriculum":false,"xp_used":0,"rank":"2","bought_at_rank":0,"ring":"water","skill":"survival","difficulty":"@T:martialRank","technique_type":"ritual","xp_cost":"3","description":"","source_reference":{"source":"fields_of_victory","page":"97"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/techs/ritual.svg","effects":[]}
{"_id":"L5RCoreRit000029","name":"Beseech Togashi's Vision","permission":{"default":0},"type":"technique","data":{"in_curriculum":false,"xp_used":0,"rank":"3","bought_at_rank":0,"ring":"void","skill":"meditation","difficulty":"3","technique_type":"ritual","xp_cost":"3","description":"","source_reference":{"source":"fields_of_victory","page":"98"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/techs/ritual.svg","effects":[]} {"_id":"L5RCoreRit000029","name":"Beseech Togashi's Vision","permission":{"default":0},"type":"technique","data":{"in_curriculum":false,"xp_used":0,"rank":"3","bought_at_rank":0,"ring":"void","skill":"meditation","difficulty":"3","technique_type":"ritual","xp_cost":"3","description":"","source_reference":{"source":"fields_of_victory","page":"98"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/techs/ritual.svg","effects":[]}
@@ -33,3 +33,10 @@
{"_id":"L5RCoreRit000033","name":"Cunning Snares","permission":{"default":0},"type":"technique","data":{"in_curriculum":false,"xp_used":0,"rank":"2","bought_at_rank":0,"ring":"air","skill":"survival","difficulty":"1","technique_type":"ritual","xp_cost":"3","description":"","source_reference":{"source":"writ_of_the_wild","page":"119"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/techs/ritual.svg","effects":[]} {"_id":"L5RCoreRit000033","name":"Cunning Snares","permission":{"default":0},"type":"technique","data":{"in_curriculum":false,"xp_used":0,"rank":"2","bought_at_rank":0,"ring":"air","skill":"survival","difficulty":"1","technique_type":"ritual","xp_cost":"3","description":"","source_reference":{"source":"writ_of_the_wild","page":"119"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/techs/ritual.svg","effects":[]}
{"_id":"L5RCoreRit000034","name":"Hunters Expertise","permission":{"default":0},"type":"technique","data":{"in_curriculum":false,"xp_used":0,"rank":"3","bought_at_rank":0,"ring":"air","skill":"survival","difficulty":"5","technique_type":"ritual","xp_cost":"3","description":"","source_reference":{"source":"writ_of_the_wild","page":"120"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/techs/ritual.svg","effects":[]} {"_id":"L5RCoreRit000034","name":"Hunters Expertise","permission":{"default":0},"type":"technique","data":{"in_curriculum":false,"xp_used":0,"rank":"3","bought_at_rank":0,"ring":"air","skill":"survival","difficulty":"5","technique_type":"ritual","xp_cost":"3","description":"","source_reference":{"source":"writ_of_the_wild","page":"120"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/techs/ritual.svg","effects":[]}
{"_id":"L5RCoreRit000035","name":"Trance of Lives Past","permission":{"default":0},"type":"technique","data":{"in_curriculum":false,"xp_used":0,"rank":"4","bought_at_rank":0,"ring":"void","skill":"meditation","difficulty":"4","technique_type":"ritual","xp_cost":"3","description":"","source_reference":{"source":"writ_of_the_wild","page":"120"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/techs/ritual.svg","effects":[]} {"_id":"L5RCoreRit000035","name":"Trance of Lives Past","permission":{"default":0},"type":"technique","data":{"in_curriculum":false,"xp_used":0,"rank":"4","bought_at_rank":0,"ring":"void","skill":"meditation","difficulty":"4","technique_type":"ritual","xp_cost":"3","description":"","source_reference":{"source":"writ_of_the_wild","page":"120"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/techs/ritual.svg","effects":[]}
{"_id":"L5RCoreRit000036","name":"Center the World","permission":{"default":0},"type":"technique","data":{"in_curriculum":false,"xp_used":0,"rank":"3","bought_at_rank":0,"ring":"air","skill":"survival","difficulty":"3","technique_type":"ritual","xp_cost":"3","description":"","source_reference":{"source":"children_of_the_five_winds","page":"110"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/techs/ritual.svg","effects":[]}
{"_id":"L5RCoreRit000037","name":"Cultural Exchange","permission":{"default":0},"type":"technique","data":{"in_curriculum":false,"xp_used":0,"rank":"1","bought_at_rank":0,"ring":"fire","skill":"culture","difficulty":"2","technique_type":"ritual","xp_cost":"3","description":"","source_reference":{"source":"children_of_the_five_winds","page":"110"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/techs/ritual.svg","effects":[]}
{"_id":"L5RCoreRit000038","name":"Protection of the Flock","permission":{"default":0},"type":"technique","data":{"in_curriculum":false,"xp_used":0,"rank":"2","bought_at_rank":0,"ring":"fire","skill":"survival","difficulty":"2","technique_type":"ritual","xp_cost":"3","description":"","source_reference":{"source":"children_of_the_five_winds","page":"111"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/techs/ritual.svg","effects":[]}
{"_id":"L5RCoreRit000039","name":"Shadow of Days","permission":{"default":0},"type":"technique","data":{"in_curriculum":false,"xp_used":0,"rank":"3","bought_at_rank":0,"ring":"earth","skill":"survival","difficulty":"4","technique_type":"ritual","xp_cost":"3","description":"","source_reference":{"source":"children_of_the_five_winds","page":"111"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/techs/ritual.svg","effects":[]}
{"_id":"L5RCoreRit000040","name":"Spiritual Survey","permission":{"default":0},"type":"technique","data":{"in_curriculum":false,"xp_used":0,"rank":"2","bought_at_rank":0,"ring":"void","skill":"survival","difficulty":"3","technique_type":"ritual","xp_cost":"3","description":"","source_reference":{"source":"children_of_the_five_winds","page":"111"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/techs/ritual.svg","effects":[]}
{"_id":"L5RCoreRit000041","name":"Traveler's Experience","permission":{"default":0},"type":"technique","data":{"in_curriculum":false,"xp_used":0,"rank":"2","bought_at_rank":0,"ring":"earth","skill":"culture","difficulty":"2","technique_type":"ritual","xp_cost":"3","description":"","source_reference":{"source":"children_of_the_five_winds","page":"112"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/techs/ritual.svg","effects":[]}
{"_id":"L5RCoreRit000042","name":"Wayfinder's Instincts","permission":{"default":0},"type":"technique","data":{"in_curriculum":false,"xp_used":0,"rank":"2","bought_at_rank":0,"ring":"water","skill":"survival,seafaring","difficulty":"2","technique_type":"ritual","xp_cost":"3","description":"","source_reference":{"source":"children_of_the_five_winds","page":"112"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/techs/ritual.svg","effects":[]}

View File

@@ -98,3 +98,13 @@
{"_id":"L5RCoreSch000098","name":"Evolution of the Wilds","permission":{"default":0},"type":"technique","data":{"in_curriculum":false,"xp_used":0,"rank":"1","bought_at_rank":0,"ring":"void","skill":"","difficulty":"","technique_type":"school_ability","xp_cost":"0","description":"","source_reference":{"source":"writ_of_the_wild","page":"101"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/techs/school_ability.svg","effects":[]} {"_id":"L5RCoreSch000098","name":"Evolution of the Wilds","permission":{"default":0},"type":"technique","data":{"in_curriculum":false,"xp_used":0,"rank":"1","bought_at_rank":0,"ring":"void","skill":"","difficulty":"","technique_type":"school_ability","xp_cost":"0","description":"","source_reference":{"source":"writ_of_the_wild","page":"101"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/techs/school_ability.svg","effects":[]}
{"_id":"L5RCoreSch000099","name":"Mazoku's Authority","permission":{"default":0},"type":"technique","data":{"in_curriculum":false,"xp_used":0,"rank":"1","bought_at_rank":0,"ring":"void","skill":"","difficulty":"","technique_type":"school_ability","xp_cost":"0","description":"","source_reference":{"source":"deathly_turns","page":"24"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/techs/school_ability.svg","effects":[]} {"_id":"L5RCoreSch000099","name":"Mazoku's Authority","permission":{"default":0},"type":"technique","data":{"in_curriculum":false,"xp_used":0,"rank":"1","bought_at_rank":0,"ring":"void","skill":"","difficulty":"","technique_type":"school_ability","xp_cost":"0","description":"","source_reference":{"source":"deathly_turns","page":"24"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/techs/school_ability.svg","effects":[]}
{"_id":"L5RCoreSch000100","name":"Effortless Aim","permission":{"default":0},"type":"technique","data":{"in_curriculum":false,"xp_used":0,"rank":"1","bought_at_rank":0,"ring":"void","skill":"","difficulty":"","technique_type":"school_ability","xp_cost":"0","description":"","source_reference":{"source":"deathly_turns","page":"25"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/techs/school_ability.svg","effects":[]} {"_id":"L5RCoreSch000100","name":"Effortless Aim","permission":{"default":0},"type":"technique","data":{"in_curriculum":false,"xp_used":0,"rank":"1","bought_at_rank":0,"ring":"void","skill":"","difficulty":"","technique_type":"school_ability","xp_cost":"0","description":"","source_reference":{"source":"deathly_turns","page":"25"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/techs/school_ability.svg","effects":[]}
{"_id":"L5RCoreSch000101","name":"Moment of Certainty","permission":{"default":0},"type":"technique","data":{"in_curriculum":false,"xp_used":0,"rank":"1","bought_at_rank":0,"ring":"void","skill":"","difficulty":"","technique_type":"school_ability","xp_cost":"0","description":"","source_reference":{"source":"children_of_the_five_winds","page":"83"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/techs/school_ability.svg","effects":[]}
{"_id":"L5RCoreSch000102","name":"Disarming Demeanor","permission":{"default":0},"type":"technique","data":{"in_curriculum":false,"xp_used":0,"rank":"1","bought_at_rank":0,"ring":"void","skill":"","difficulty":"","technique_type":"school_ability","xp_cost":"0","description":"","source_reference":{"source":"children_of_the_five_winds","page":"84"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/techs/school_ability.svg","effects":[]}
{"_id":"L5RCoreSch000103","name":"The Horse Lord's Favor","permission":{"default":0},"type":"technique","data":{"in_curriculum":false,"xp_used":0,"rank":"1","bought_at_rank":0,"ring":"void","skill":"","difficulty":"","technique_type":"school_ability","xp_cost":"0","description":"","source_reference":{"source":"children_of_the_five_winds","page":"85"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/techs/school_ability.svg","effects":[]}
{"_id":"L5RCoreSch000104","name":"Calm Counsel","permission":{"default":0},"type":"technique","data":{"in_curriculum":false,"xp_used":0,"rank":"1","bought_at_rank":0,"ring":"void","skill":"","difficulty":"","technique_type":"school_ability","xp_cost":"0","description":"","source_reference":{"source":"children_of_the_five_winds","page":"86"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/techs/school_ability.svg","effects":[]}
{"_id":"L5RCoreSch000105","name":"Natural Balance","permission":{"default":0},"type":"technique","data":{"in_curriculum":false,"xp_used":0,"rank":"1","bought_at_rank":0,"ring":"void","skill":"","difficulty":"","technique_type":"school_ability","xp_cost":"0","description":"","source_reference":{"source":"children_of_the_five_winds","page":"87"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/techs/school_ability.svg","effects":[]}
{"_id":"L5RCoreSch000106","name":"Dunestrider","permission":{"default":0},"type":"technique","data":{"in_curriculum":false,"xp_used":0,"rank":"1","bought_at_rank":0,"ring":"void","skill":"","difficulty":"","technique_type":"school_ability","xp_cost":"0","description":"","source_reference":{"source":"children_of_the_five_winds","page":"88"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/techs/school_ability.svg","effects":[]}
{"_id":"L5RCoreSch000107","name":"Methodical Observation","permission":{"default":0},"type":"technique","data":{"in_curriculum":false,"xp_used":0,"rank":"1","bought_at_rank":0,"ring":"void","skill":"","difficulty":"","technique_type":"school_ability","xp_cost":"0","description":"","source_reference":{"source":"children_of_the_five_winds","page":"89"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/techs/school_ability.svg","effects":[]}
{"_id":"L5RCoreSch000108","name":"Unity of Horse and Rider","permission":{"default":0},"type":"technique","data":{"in_curriculum":false,"xp_used":0,"rank":"1","bought_at_rank":0,"ring":"void","skill":"","difficulty":"","technique_type":"school_ability","xp_cost":"0","description":"","source_reference":{"source":"children_of_the_five_winds","page":"90"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/techs/school_ability.svg","effects":[]}
{"_id":"L5RCoreSch000109","name":"Warden of the Five Winds","permission":{"default":0},"type":"technique","data":{"in_curriculum":false,"xp_used":0,"rank":"1","bought_at_rank":0,"ring":"void","skill":"","difficulty":"","technique_type":"school_ability","xp_cost":"0","description":"","source_reference":{"source":"children_of_the_five_winds","page":"91"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/techs/school_ability.svg","effects":[]}
{"_id":"L5RCoreSch000110","name":"Move as the Wind","permission":{"default":0},"type":"technique","data":{"in_curriculum":false,"xp_used":0,"rank":"1","bought_at_rank":0,"ring":"void","skill":"","difficulty":"","technique_type":"school_ability","xp_cost":"0","description":"","source_reference":{"source":"children_of_the_five_winds","page":"92"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/techs/school_ability.svg","effects":[]}

View File

@@ -86,3 +86,15 @@
{"_id":"L5RCoreShu000086","name":"Moment of Glory","permission":{"default":0},"type":"technique","data":{"in_curriculum":false,"xp_used":0,"rank":"3","bought_at_rank":0,"ring":"void","skill":"meditation","difficulty":"4","technique_type":"shuji","xp_cost":"3","description":"","source_reference":{"source":"fields_of_victory","page":"104"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/techs/shuji.svg","effects":[]} {"_id":"L5RCoreShu000086","name":"Moment of Glory","permission":{"default":0},"type":"technique","data":{"in_curriculum":false,"xp_used":0,"rank":"3","bought_at_rank":0,"ring":"void","skill":"meditation","difficulty":"4","technique_type":"shuji","xp_cost":"3","description":"","source_reference":{"source":"fields_of_victory","page":"104"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/techs/shuji.svg","effects":[]}
{"_id":"L5RCoreShu000087","name":"Victory Without a Sword","permission":{"default":0},"type":"technique","data":{"in_curriculum":false,"xp_used":0,"rank":"6","bought_at_rank":0,"ring":"void","skill":"tactics","difficulty":"6","technique_type":"shuji","xp_cost":"3","description":"","source_reference":{"source":"fields_of_victory","page":"104"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/techs/shuji.svg","effects":[]} {"_id":"L5RCoreShu000087","name":"Victory Without a Sword","permission":{"default":0},"type":"technique","data":{"in_curriculum":false,"xp_used":0,"rank":"6","bought_at_rank":0,"ring":"void","skill":"tactics","difficulty":"6","technique_type":"shuji","xp_cost":"3","description":"","source_reference":{"source":"fields_of_victory","page":"104"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/techs/shuji.svg","effects":[]}
{"_id":"L5RCoreShu000088","name":"Flowering Deceptions","permission":{"default":0},"type":"technique","data":{"in_curriculum":false,"xp_used":0,"rank":"1","bought_at_rank":0,"ring":"air","skill":"courtesy,tactics","difficulty":"@T:vigilance|max","technique_type":"shuji","xp_cost":"3","description":"","source_reference":{"source":"path_of_waves","page":"93"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/techs/shuji.svg","effects":[]} {"_id":"L5RCoreShu000088","name":"Flowering Deceptions","permission":{"default":0},"type":"technique","data":{"in_curriculum":false,"xp_used":0,"rank":"1","bought_at_rank":0,"ring":"air","skill":"courtesy,tactics","difficulty":"@T:vigilance|max","technique_type":"shuji","xp_cost":"3","description":"","source_reference":{"source":"path_of_waves","page":"93"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/techs/shuji.svg","effects":[]}
{"_id":"L5RCoreShu000089","name":"Cunning Omission","permission":{"default":0},"type":"technique","data":{"in_curriculum":false,"xp_used":0,"rank":"3","bought_at_rank":0,"ring":"air","skill":"sentiment","difficulty":"","technique_type":"shuji","xp_cost":"3","description":"","source_reference":{"source":"children_of_the_five_winds","page":"112"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/techs/shuji.svg","effects":[]}
{"_id":"L5RCoreShu000090","name":"Entice with Offerings","permission":{"default":0},"type":"technique","data":{"in_curriculum":false,"xp_used":0,"rank":"3","bought_at_rank":0,"ring":"air","skill":"commerce","difficulty":"3","technique_type":"shuji","xp_cost":"3","description":"","source_reference":{"source":"children_of_the_five_winds","page":"113"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/techs/shuji.svg","effects":[]}
{"_id":"L5RCoreShu000091","name":"Trader's Intuition","permission":{"default":0},"type":"technique","data":{"in_curriculum":false,"xp_used":0,"rank":"2","bought_at_rank":0,"ring":"air","skill":"commerce","difficulty":"2","technique_type":"shuji","xp_cost":"3","description":"","source_reference":{"source":"children_of_the_five_winds","page":"113"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/techs/shuji.svg","effects":[]}
{"_id":"L5RCoreShu000092","name":"Cite the Facts","permission":{"default":0},"type":"technique","data":{"in_curriculum":false,"xp_used":0,"rank":"2","bought_at_rank":0,"ring":"earth","skill":"scholar","difficulty":"","technique_type":"shuji","xp_cost":"3","description":"","source_reference":{"source":"children_of_the_five_winds","page":"114"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/techs/shuji.svg","effects":[]}
{"_id":"L5RCoreShu000093","name":"Solidify Gratitude","permission":{"default":0},"type":"technique","data":{"in_curriculum":false,"xp_used":0,"rank":"2","bought_at_rank":0,"ring":"earth","skill":"courtesy","difficulty":"2","technique_type":"shuji","xp_cost":"3","description":"","source_reference":{"source":"children_of_the_five_winds","page":"114"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/techs/shuji.svg","effects":[]}
{"_id":"L5RCoreShu000094","name":"Glorious Entrance","permission":{"default":0},"type":"technique","data":{"in_curriculum":false,"xp_used":0,"rank":"2","bought_at_rank":0,"ring":"fire","skill":"performance","difficulty":"","technique_type":"shuji","xp_cost":"3","description":"","source_reference":{"source":"children_of_the_five_winds","page":"114"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/techs/shuji.svg","effects":[]}
{"_id":"L5RCoreShu000095","name":"Incite Wrath","permission":{"default":0},"type":"technique","data":{"in_curriculum":false,"xp_used":0,"rank":"3","bought_at_rank":0,"ring":"fire","skill":"","difficulty":"","technique_type":"shuji","xp_cost":"3","description":"","source_reference":{"source":"children_of_the_five_winds","page":"114"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/techs/shuji.svg","effects":[]}
{"_id":"L5RCoreShu000096","name":"Call to Ride","permission":{"default":0},"type":"technique","data":{"in_curriculum":false,"xp_used":0,"rank":"1","bought_at_rank":0,"ring":"water","skill":"survival","difficulty":"1","technique_type":"shuji","xp_cost":"3","description":"","source_reference":{"source":"children_of_the_five_winds","page":"115"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/techs/shuji.svg","effects":[]}
{"_id":"L5RCoreShu000097","name":"Complementary Experience","permission":{"default":0},"type":"technique","data":{"in_curriculum":false,"xp_used":0,"rank":"3","bought_at_rank":0,"ring":"water","skill":"command","difficulty":"3","technique_type":"shuji","xp_cost":"3","description":"","source_reference":{"source":"children_of_the_five_winds","page":"115"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/techs/shuji.svg","effects":[]}
{"_id":"L5RCoreShu000098","name":"Everyone Has a Price","permission":{"default":0},"type":"technique","data":{"in_curriculum":false,"xp_used":0,"rank":"4","bought_at_rank":0,"ring":"water","skill":"sentiment","difficulty":"","technique_type":"shuji","xp_cost":"3","description":"","source_reference":{"source":"children_of_the_five_winds","page":"115"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/techs/shuji.svg","effects":[]}
{"_id":"L5RCoreShu000099","name":"Horse Whisperer","permission":{"default":0},"type":"technique","data":{"in_curriculum":false,"xp_used":0,"rank":"3","bought_at_rank":0,"ring":"water","skill":"courtesy,survival","difficulty":"","technique_type":"shuji","xp_cost":"3","description":"","source_reference":{"source":"children_of_the_five_winds","page":"115"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/techs/shuji.svg","effects":[]}
{"_id":"L5RCoreShu000100","name":"Appreciate the Scenery","permission":{"default":0},"type":"technique","data":{"in_curriculum":false,"xp_used":0,"rank":"1","bought_at_rank":0,"ring":"void","skill":"","difficulty":"","technique_type":"shuji","xp_cost":"3","description":"","source_reference":{"source":"children_of_the_five_winds","page":"116"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/techs/shuji.svg","effects":[]}

View File

@@ -32,7 +32,7 @@
{"_id":"L5RCoreTit000032","name":"Quartermaster","permission":{"default":0},"type":"title","data":{"in_curriculum":false,"xp_used":0,"rank":1,"bought_at_rank":0,"ring":"void","xp_cost":"24","description":"<h2>Curriculum</h2><table><tr><td>Trade Skills</td><td>Skill Group</td></tr><tr><td>Courtesy</td><td>Skill</td></tr><tr><td>Government</td><td>Skill</td></tr><tr><td>Tactics</td><td>Skill</td></tr><tr><td><a class=\"compendium-link\" data-pack=\"l5r5e.core-techniques-shuji\">(shuji) Rank 1-2 Air Shuji</a> (prereq)</td><td>Tech. Grp.</td></tr><tr><td><a class=\"compendium-link\" data-pack=\"l5r5e.core-techniques-shuji\">(shuji) Rank 1-2 Water Shuji</a> (prereq)</td><td>Tech. Grp.</td></tr><tr><td><a class=\"entity-link content-link\" draggable=\"true\" data-link=\"\" data-uuid=\"Compendium.l5r5e.core-techniques-shuji.Item.L5RCoreShu000075\" data-pack=\"l5r5e.core-techniques-shuji\" data-type=\"Item\" data-id=\"L5RCoreShu000075\">(shuji) Fortress of Necessity</a> (prereq)</td><td>Technique</td></tr></table>","source_reference":{"source":"fields_of_victory","page":"135"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/title.svg","effects":[]} {"_id":"L5RCoreTit000032","name":"Quartermaster","permission":{"default":0},"type":"title","data":{"in_curriculum":false,"xp_used":0,"rank":1,"bought_at_rank":0,"ring":"void","xp_cost":"24","description":"<h2>Curriculum</h2><table><tr><td>Trade Skills</td><td>Skill Group</td></tr><tr><td>Courtesy</td><td>Skill</td></tr><tr><td>Government</td><td>Skill</td></tr><tr><td>Tactics</td><td>Skill</td></tr><tr><td><a class=\"compendium-link\" data-pack=\"l5r5e.core-techniques-shuji\">(shuji) Rank 1-2 Air Shuji</a> (prereq)</td><td>Tech. Grp.</td></tr><tr><td><a class=\"compendium-link\" data-pack=\"l5r5e.core-techniques-shuji\">(shuji) Rank 1-2 Water Shuji</a> (prereq)</td><td>Tech. Grp.</td></tr><tr><td><a class=\"entity-link content-link\" draggable=\"true\" data-link=\"\" data-uuid=\"Compendium.l5r5e.core-techniques-shuji.Item.L5RCoreShu000075\" data-pack=\"l5r5e.core-techniques-shuji\" data-type=\"Item\" data-id=\"L5RCoreShu000075\">(shuji) Fortress of Necessity</a> (prereq)</td><td>Technique</td></tr></table>","source_reference":{"source":"fields_of_victory","page":"135"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/title.svg","effects":[]}
{"_id":"L5RCoreTit000033","name":"Renowned Warrior","permission":{"default":0},"type":"title","data":{"in_curriculum":false,"xp_used":0,"rank":1,"bought_at_rank":0,"ring":"void","xp_cost":"16","description":"<h2>Curriculum</h2><table><tr><td>Martial Skills</td><td>Skill Group</td></tr><tr><td>Command</td><td>Skill</td></tr><tr><td>Culture</td><td>Skill</td></tr><tr><td>Performance</td><td>Skill</td></tr><tr><td><a class=\"compendium-link\" data-pack=\"l5r5e.core-techniques-kata\">(kata) Rank 1-2 Kata</a> (prereq)</td><td>Tech. Grp.</td></tr><tr><td><a class=\"entity-link content-link\" draggable=\"true\" data-link=\"\" data-uuid=\"Compendium.l5r5e.core-techniques-kata.Item.L5RCoreKat000003\" data-pack=\"l5r5e.core-techniques-kata\" data-type=\"Item\" data-id=\"L5RCoreKat000003\">(kata) Heartpiercing Strike</a> (prereq)</td><td>Technique</td></tr><tr><td><a class=\"entity-link content-link\" draggable=\"true\" data-link=\"\" data-uuid=\"Compendium.l5r5e.core-techniques-shuji.Item.L5RCoreShu000079\" data-pack=\"l5r5e.core-techniques-shuji\" data-type=\"Item\" data-id=\"L5RCoreShu000079\">(shuji) Righteous Example</a> (prereq)</td><td>Technique</td></tr></table>","source_reference":{"source":"fields_of_victory","page":"135"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/title.svg","effects":[]} {"_id":"L5RCoreTit000033","name":"Renowned Warrior","permission":{"default":0},"type":"title","data":{"in_curriculum":false,"xp_used":0,"rank":1,"bought_at_rank":0,"ring":"void","xp_cost":"16","description":"<h2>Curriculum</h2><table><tr><td>Martial Skills</td><td>Skill Group</td></tr><tr><td>Command</td><td>Skill</td></tr><tr><td>Culture</td><td>Skill</td></tr><tr><td>Performance</td><td>Skill</td></tr><tr><td><a class=\"compendium-link\" data-pack=\"l5r5e.core-techniques-kata\">(kata) Rank 1-2 Kata</a> (prereq)</td><td>Tech. Grp.</td></tr><tr><td><a class=\"entity-link content-link\" draggable=\"true\" data-link=\"\" data-uuid=\"Compendium.l5r5e.core-techniques-kata.Item.L5RCoreKat000003\" data-pack=\"l5r5e.core-techniques-kata\" data-type=\"Item\" data-id=\"L5RCoreKat000003\">(kata) Heartpiercing Strike</a> (prereq)</td><td>Technique</td></tr><tr><td><a class=\"entity-link content-link\" draggable=\"true\" data-link=\"\" data-uuid=\"Compendium.l5r5e.core-techniques-shuji.Item.L5RCoreShu000079\" data-pack=\"l5r5e.core-techniques-shuji\" data-type=\"Item\" data-id=\"L5RCoreShu000079\">(shuji) Righteous Example</a> (prereq)</td><td>Technique</td></tr></table>","source_reference":{"source":"fields_of_victory","page":"135"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/title.svg","effects":[]}
{"_id":"L5RCoreTit000034","name":"Spirit Caller","permission":{"default":0},"type":"title","data":{"in_curriculum":false,"xp_used":0,"rank":1,"bought_at_rank":0,"ring":"void","xp_cost":"38","description":"<h2>Curriculum</h2><table><tr><td>Scholar Skills</td><td>Skill Group</td></tr><tr><td>Courtesy</td><td>Skill</td></tr><tr><td>Meditation</td><td>Skill</td></tr><tr><td>Performance</td><td>Skill</td></tr><tr><td><a class=\"compendium-link\" data-pack=\"l5r5e.core-techniques-rituals\">(ritual) Rank 1-2 Rituals</a> (prereq)</td><td>Tech. Grp.</td></tr><tr><td><a class=\"entity-link content-link\" draggable=\"true\" data-link=\"\" data-uuid=\"Compendium.l5r5e.core-techniques-shuji.Item.L5RCoreShu000010\" data-pack=\"l5r5e.core-techniques-shuji\" data-type=\"Item\" data-id=\"L5RCoreShu000010\">(shuji) Ancestry Unearthed</a> (prereq)</td><td>Technique</td></tr><tr><td><a class=\"entity-link content-link\" draggable=\"true\" data-link=\"\" data-uuid=\"Compendium.l5r5e.core-techniques-shuji.Item.L5RCoreShu000083\" data-pack=\"l5r5e.core-techniques-shuji\" data-type=\"Item\" data-id=\"L5RCoreShu000083\">(shuji) Preserve Strength</a> (prereq)</td><td>Technique</td></tr></table>","source_reference":{"source":"fields_of_victory","page":"136"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/title.svg","effects":[]} {"_id":"L5RCoreTit000034","name":"Spirit Caller","permission":{"default":0},"type":"title","data":{"in_curriculum":false,"xp_used":0,"rank":1,"bought_at_rank":0,"ring":"void","xp_cost":"38","description":"<h2>Curriculum</h2><table><tr><td>Scholar Skills</td><td>Skill Group</td></tr><tr><td>Courtesy</td><td>Skill</td></tr><tr><td>Meditation</td><td>Skill</td></tr><tr><td>Performance</td><td>Skill</td></tr><tr><td><a class=\"compendium-link\" data-pack=\"l5r5e.core-techniques-rituals\">(ritual) Rank 1-2 Rituals</a> (prereq)</td><td>Tech. Grp.</td></tr><tr><td><a class=\"entity-link content-link\" draggable=\"true\" data-link=\"\" data-uuid=\"Compendium.l5r5e.core-techniques-shuji.Item.L5RCoreShu000010\" data-pack=\"l5r5e.core-techniques-shuji\" data-type=\"Item\" data-id=\"L5RCoreShu000010\">(shuji) Ancestry Unearthed</a> (prereq)</td><td>Technique</td></tr><tr><td><a class=\"entity-link content-link\" draggable=\"true\" data-link=\"\" data-uuid=\"Compendium.l5r5e.core-techniques-shuji.Item.L5RCoreShu000083\" data-pack=\"l5r5e.core-techniques-shuji\" data-type=\"Item\" data-id=\"L5RCoreShu000083\">(shuji) Preserve Strength</a> (prereq)</td><td>Technique</td></tr></table>","source_reference":{"source":"fields_of_victory","page":"136"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/title.svg","effects":[]}
{"_id":"L5RCoreTit000035","name":"Sumai Master","permission":{"default":0},"type":"title","data":{"in_curriculum":false,"xp_used":0,"rank":1,"bought_at_rank":0,"ring":"void","xp_cost":"30","description":"<h2>Curriculum</h2><table><tr><td>Social Skills</td><td>Skill Group</td></tr><tr><td>Culture</td><td>Skill</td></tr><tr><td>Martial Arts [Unarmed]</td><td>Skill</td></tr><tr><td>Theology</td><td>Skill</td></tr><tr><td><a class=\"compendium-link\" data-pack=\"l5r5e.core-techniques-kata\">(kata) Rank 1-2 Kata</a> (prereq)</td><td>Tech. Grp.</td></tr><tr><td><a class=\"entity-link content-link\" draggable=\"true\" data-link=\"\" data-uuid=\"Compendium.l5r5e.core-techniques-rituals.Item.L5RCoreRit000026\" data-pack=\"l5r5e.core-techniques-rituals\" data-type=\"Item\" data-id=\"L5RCoreRit000026\">(ritual) Beseech Hida's MIght</a> (prereq)</td><td>Technique</td></tr><tr><td><a class=\"entity-link content-link\" draggable=\"true\" data-link=\"\" data-uuid=\"Compendium.l5r5e.core-techniques-kata.Item.L5RCoreKat000065\" data-pack=\"l5r5e.core-techniques-kata\" data-type=\"Item\" data-id=\"L5RCoreKat000065\">(kata) Fierce Badger Style</a> (prereq)</td><td>Technique</td></tr></table>","source_reference":{"source":"fields_of_victory","page":"136"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/title.svg","effects":[]} {"_id":"L5RCoreTit000035","name":"Sumai Master","permission":{"default":0},"type":"title","data":{"in_curriculum":false,"xp_used":0,"rank":1,"bought_at_rank":0,"ring":"void","xp_cost":"30","description":"<h2>Curriculum</h2><table><tr><td>Social Skills</td><td>Skill Group</td></tr><tr><td>Culture</td><td>Skill</td></tr><tr><td>Martial Arts [Unarmed]</td><td>Skill</td></tr><tr><td>Theology</td><td>Skill</td></tr><tr><td><a class=\"compendium-link\" data-pack=\"l5r5e.core-techniques-kata\">(kata) Rank 1-2 Kata</a> (prereq)</td><td>Tech. Grp.</td></tr><tr><td><a class=\"entity-link content-link\" draggable=\"true\" data-link=\"\" data-uuid=\"Compendium.l5r5e.core-techniques-rituals.Item.L5RCoreRit000026\" data-pack=\"l5r5e.core-techniques-rituals\" data-type=\"Item\" data-id=\"L5RCoreRit000026\">(ritual) Beseech Hida's Might</a> (prereq)</td><td>Technique</td></tr><tr><td><a class=\"entity-link content-link\" draggable=\"true\" data-link=\"\" data-uuid=\"Compendium.l5r5e.core-techniques-kata.Item.L5RCoreKat000065\" data-pack=\"l5r5e.core-techniques-kata\" data-type=\"Item\" data-id=\"L5RCoreKat000065\">(kata) Fierce Badger Style</a> (prereq)</td><td>Technique</td></tr></table>","source_reference":{"source":"fields_of_victory","page":"136"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/title.svg","effects":[]}
{"_id":"L5RCoreTit000036","name":"Sword Saint","permission":{"default":0},"type":"title","data":{"in_curriculum":false,"xp_used":0,"rank":1,"bought_at_rank":0,"ring":"void","xp_cost":"24","description":"<h2>Curriculum</h2><table><tr><td>Martial Arts [Melee]</td><td>Skill</td></tr><tr><td>Meditation</td><td>Skill</td></tr><tr><td>Smithing</td><td>Skill</td></tr><tr><td>Tactics</td><td>Skill</td></tr><tr><td><a class=\"compendium-link\" data-pack=\"l5r5e.core-techniques-kata\">(kata) Rank 1-5 Close Combat Kata</a> (prereq)</td><td>Tech. Grp.</td></tr><tr><td><a class=\"entity-link content-link\" draggable=\"true\" data-link=\"\" data-uuid=\"Compendium.l5r5e.core-techniques-kata.Item.L5RCoreKat000006\" data-pack=\"l5r5e.core-techniques-kata\" data-type=\"Item\" data-id=\"L5RCoreKat000006\">(kata) Soul Sunder</a> (prereq)</td><td>Technique</td></tr><tr><td><a class=\"entity-link content-link\" draggable=\"true\" data-link=\"\" data-uuid=\"Compendium.l5r5e.core-techniques-shuji.Item.L5RCoreShu000087\" data-pack=\"l5r5e.core-techniques-shuji\" data-type=\"Item\" data-id=\"L5RCoreShu000087\">(shuji) Victory Without a Sword</a> (prereq)</td><td>Technique</td></tr></table>","source_reference":{"source":"fields_of_victory","page":"136"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/title.svg","effects":[]} {"_id":"L5RCoreTit000036","name":"Sword Saint","permission":{"default":0},"type":"title","data":{"in_curriculum":false,"xp_used":0,"rank":1,"bought_at_rank":0,"ring":"void","xp_cost":"24","description":"<h2>Curriculum</h2><table><tr><td>Martial Arts [Melee]</td><td>Skill</td></tr><tr><td>Meditation</td><td>Skill</td></tr><tr><td>Smithing</td><td>Skill</td></tr><tr><td>Tactics</td><td>Skill</td></tr><tr><td><a class=\"compendium-link\" data-pack=\"l5r5e.core-techniques-kata\">(kata) Rank 1-5 Close Combat Kata</a> (prereq)</td><td>Tech. Grp.</td></tr><tr><td><a class=\"entity-link content-link\" draggable=\"true\" data-link=\"\" data-uuid=\"Compendium.l5r5e.core-techniques-kata.Item.L5RCoreKat000006\" data-pack=\"l5r5e.core-techniques-kata\" data-type=\"Item\" data-id=\"L5RCoreKat000006\">(kata) Soul Sunder</a> (prereq)</td><td>Technique</td></tr><tr><td><a class=\"entity-link content-link\" draggable=\"true\" data-link=\"\" data-uuid=\"Compendium.l5r5e.core-techniques-shuji.Item.L5RCoreShu000087\" data-pack=\"l5r5e.core-techniques-shuji\" data-type=\"Item\" data-id=\"L5RCoreShu000087\">(shuji) Victory Without a Sword</a> (prereq)</td><td>Technique</td></tr></table>","source_reference":{"source":"fields_of_victory","page":"136"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/title.svg","effects":[]}
{"_id":"L5RCoreTit000037","name":"War College Graduate","permission":{"default":0},"type":"title","data":{"in_curriculum":false,"xp_used":0,"rank":1,"bought_at_rank":0,"ring":"void","xp_cost":"36","description":"<h2>Curriculum</h2><table><tr><td>Martial Skills</td><td>Skill Group</td></tr><tr><td>Command</td><td>Skill Group</td></tr><tr><td>Culture</td><td>Skill</td></tr><tr><td>Government</td><td>Skill</td></tr><tr><td><a class=\"compendium-link\" data-pack=\"l5r5e.core-techniques-kata\">(kata) Rank 1-3 Kata</a> (prereq)</td><td>Tech. Grp.</td></tr><tr><td><a class=\"compendium-link\" data-pack=\"l5r5e.core-techniques-shuji\">(shuji) Rank 1-3 Shuji</a> (prereq)</td><td>Tech. Grp.</td></tr><tr><td><a class=\"entity-link content-link\" draggable=\"true\" data-link=\"\" data-uuid=\"Compendium.l5r5e.core-techniques-rituals.Item.L5RCoreRit000023\" data-pack=\"l5r5e.core-techniques-rituals\" data-type=\"Item\" data-id=\"L5RCoreRit000023\">(ritual) Beseech Akodo's Judgment</a> (prereq)</td><td>Technique</td></tr></table>","source_reference":{"source":"fields_of_victory","page":"137"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/title.svg","effects":[]} {"_id":"L5RCoreTit000037","name":"War College Graduate","permission":{"default":0},"type":"title","data":{"in_curriculum":false,"xp_used":0,"rank":1,"bought_at_rank":0,"ring":"void","xp_cost":"36","description":"<h2>Curriculum</h2><table><tr><td>Martial Skills</td><td>Skill Group</td></tr><tr><td>Command</td><td>Skill Group</td></tr><tr><td>Culture</td><td>Skill</td></tr><tr><td>Government</td><td>Skill</td></tr><tr><td><a class=\"compendium-link\" data-pack=\"l5r5e.core-techniques-kata\">(kata) Rank 1-3 Kata</a> (prereq)</td><td>Tech. Grp.</td></tr><tr><td><a class=\"compendium-link\" data-pack=\"l5r5e.core-techniques-shuji\">(shuji) Rank 1-3 Shuji</a> (prereq)</td><td>Tech. Grp.</td></tr><tr><td><a class=\"entity-link content-link\" draggable=\"true\" data-link=\"\" data-uuid=\"Compendium.l5r5e.core-techniques-rituals.Item.L5RCoreRit000023\" data-pack=\"l5r5e.core-techniques-rituals\" data-type=\"Item\" data-id=\"L5RCoreRit000023\">(ritual) Beseech Akodo's Judgment</a> (prereq)</td><td>Technique</td></tr></table>","source_reference":{"source":"fields_of_victory","page":"137"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/title.svg","effects":[]}
{"_id":"L5RCoreTit000038","name":"In Service to a Lord","permission":{"default":0},"type":"title","data":{"in_curriculum":false,"xp_used":0,"rank":1,"bought_at_rank":0,"ring":"void","xp_cost":"24","description":"<h2>Curriculum</h2><table><tr><td>Martial Skills</td><td>Skill Group</td></tr><tr><td>Social Skills</td><td>Skill Group</td></tr><tr><td>Culture</td><td>Skill</td></tr><tr><td>Government</td><td>Skill</td></tr><tr><td><a class=\"compendium-link\" data-pack=\"l5r5e.core-techniques-kata\">(kata) Rank 1-2 Kata</a> (prereq)</td><td>Tech. Grp.</td></tr><tr><td><a class=\"entity-link content-link\" draggable=\"true\" data-link=\"\" data-uuid=\"Compendium.l5r5e.core-techniques-shuji.Item.L5RCoreShu000009\" data-pack=\"l5r5e.core-techniques-shuji\" data-type=\"Item\" data-id=\"L5RCoreShu000009\">(shuji) Wolfs Proposal</a> (prereq)</td><td>Technique</td></tr><tr><td><a class=\"entity-link content-link\" draggable=\"true\" data-link=\"\" data-uuid=\"Compendium.l5r5e.core-techniques-shuji.Item.L5RCoreShu000066\" data-pack=\"l5r5e.core-techniques-shuji\" data-type=\"Item\" data-id=\"L5RCoreShu000066\">(shuji) Fluent Bargaining</a> (prereq)</td><td>Technique</td></tr></table>","source_reference":{"source":"path_of_waves","page":"185"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/title.svg","effects":[]} {"_id":"L5RCoreTit000038","name":"In Service to a Lord","permission":{"default":0},"type":"title","data":{"in_curriculum":false,"xp_used":0,"rank":1,"bought_at_rank":0,"ring":"void","xp_cost":"24","description":"<h2>Curriculum</h2><table><tr><td>Martial Skills</td><td>Skill Group</td></tr><tr><td>Social Skills</td><td>Skill Group</td></tr><tr><td>Culture</td><td>Skill</td></tr><tr><td>Government</td><td>Skill</td></tr><tr><td><a class=\"compendium-link\" data-pack=\"l5r5e.core-techniques-kata\">(kata) Rank 1-2 Kata</a> (prereq)</td><td>Tech. Grp.</td></tr><tr><td><a class=\"entity-link content-link\" draggable=\"true\" data-link=\"\" data-uuid=\"Compendium.l5r5e.core-techniques-shuji.Item.L5RCoreShu000009\" data-pack=\"l5r5e.core-techniques-shuji\" data-type=\"Item\" data-id=\"L5RCoreShu000009\">(shuji) Wolfs Proposal</a> (prereq)</td><td>Technique</td></tr><tr><td><a class=\"entity-link content-link\" draggable=\"true\" data-link=\"\" data-uuid=\"Compendium.l5r5e.core-techniques-shuji.Item.L5RCoreShu000066\" data-pack=\"l5r5e.core-techniques-shuji\" data-type=\"Item\" data-id=\"L5RCoreShu000066\">(shuji) Fluent Bargaining</a> (prereq)</td><td>Technique</td></tr></table>","source_reference":{"source":"path_of_waves","page":"185"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/title.svg","effects":[]}
@@ -46,3 +46,10 @@
{"_id":"L5RCoreTit000046","name":"Bond with a spirit","permission":{"default":0},"type":"title","data":{"in_curriculum":false,"xp_used":0,"rank":1,"bought_at_rank":0,"ring":"void","xp_cost":"25","description":"<h2>Curriculum</h2><table><tr><td>Scholar Skills</td><td>Skill Group</td></tr><tr><td>Aesthetics</td><td>Skill</td></tr><tr><td>Games</td><td>Skill</td></tr><tr><td>Meditation</td><td>Skill</td></tr><tr><td><a class=\"compendium-link\" data-pack=\"l5r5e.core-techniques-invocations\">(invocation) Rank 1 Spirit's Elements Invocations</a> (prereq)</td><td>Tech. Grp.</td></tr><tr><td><a class=\"entity-link content-link\" draggable=\"true\" data-link=\"\" data-uuid=\"Compendium.l5r5e.core-techniques-rituals.Item.L5RCoreRit000002\" data-pack=\"l5r5e.core-techniques-rituals\" data-type=\"Item\" data-id=\"L5RCoreRit000002\">(ritual) Commune with the Spirits</a> (prereq)</td><td>Technique</td></tr><tr><td><a class=\"entity-link content-link\" draggable=\"true\" data-link=\"\" data-uuid=\"Compendium.l5r5e.core-techniques-rituals.Item.L5RCoreRit000022\" data-pack=\"l5r5e.core-techniques-rituals\" data-type=\"Item\" data-id=\"L5RCoreRit000022\">(ritual) Blessing of Fertile Fields</a> (prereq)</td><td>Technique</td></tr></table>","source_reference":{"source":"celestial_realms","page":"140"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/title.svg","effects":[]} {"_id":"L5RCoreTit000046","name":"Bond with a spirit","permission":{"default":0},"type":"title","data":{"in_curriculum":false,"xp_used":0,"rank":1,"bought_at_rank":0,"ring":"void","xp_cost":"25","description":"<h2>Curriculum</h2><table><tr><td>Scholar Skills</td><td>Skill Group</td></tr><tr><td>Aesthetics</td><td>Skill</td></tr><tr><td>Games</td><td>Skill</td></tr><tr><td>Meditation</td><td>Skill</td></tr><tr><td><a class=\"compendium-link\" data-pack=\"l5r5e.core-techniques-invocations\">(invocation) Rank 1 Spirit's Elements Invocations</a> (prereq)</td><td>Tech. Grp.</td></tr><tr><td><a class=\"entity-link content-link\" draggable=\"true\" data-link=\"\" data-uuid=\"Compendium.l5r5e.core-techniques-rituals.Item.L5RCoreRit000002\" data-pack=\"l5r5e.core-techniques-rituals\" data-type=\"Item\" data-id=\"L5RCoreRit000002\">(ritual) Commune with the Spirits</a> (prereq)</td><td>Technique</td></tr><tr><td><a class=\"entity-link content-link\" draggable=\"true\" data-link=\"\" data-uuid=\"Compendium.l5r5e.core-techniques-rituals.Item.L5RCoreRit000022\" data-pack=\"l5r5e.core-techniques-rituals\" data-type=\"Item\" data-id=\"L5RCoreRit000022\">(ritual) Blessing of Fertile Fields</a> (prereq)</td><td>Technique</td></tr></table>","source_reference":{"source":"celestial_realms","page":"140"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/title.svg","effects":[]}
{"_id":"L5RCoreTit000047","name":"Moon cultist","permission":{"default":0},"type":"title","data":{"in_curriculum":false,"xp_used":0,"rank":1,"bought_at_rank":0,"ring":"void","xp_cost":"30","description":"<h2>Curriculum</h2><table><tr><td>Scholar Skills</td><td>Skill Group</td></tr><tr><td>Composition</td><td>Skill</td></tr><tr><td>Courtesy</td><td>Skill</td></tr><tr><td>Fitness</td><td>Skill</td></tr><tr><td><a class=\"compendium-link\" data-pack=\"l5r5e.core-techniques-invocations\">(invocation) Rank 1-2 Water Invocations</a></td><td>Tech. Grp.</td></tr><tr><td><a class=\"entity-link content-link\" draggable=\"true\" data-link=\"\" data-uuid=\"Compendium.l5r5e.core-techniques-invocations.Item.L5RCoreInv000052\" data-pack=\"l5r5e.core-techniques-invocations\" data-type=\"Item\" data-id=\"L5RCoreInv000052\">(invocation) Hands of the Tides</a> (prereq)</td><td>Technique</td></tr><tr><td><a class=\"entity-link content-link\" draggable=\"true\" data-link=\"\" data-uuid=\"Compendium.l5r5e.core-techniques-rituals.Item.L5RCoreRit000010\" data-pack=\"l5r5e.core-techniques-rituals\" data-type=\"Item\" data-id=\"L5RCoreRit000010\">(ritual) Whispers to the Moon (Moon Cultist)</a> (prereq)</td><td>Technique</td></tr></table>","source_reference":{"source":"celestial_realms","page":"140"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/title.svg","effects":[]} {"_id":"L5RCoreTit000047","name":"Moon cultist","permission":{"default":0},"type":"title","data":{"in_curriculum":false,"xp_used":0,"rank":1,"bought_at_rank":0,"ring":"void","xp_cost":"30","description":"<h2>Curriculum</h2><table><tr><td>Scholar Skills</td><td>Skill Group</td></tr><tr><td>Composition</td><td>Skill</td></tr><tr><td>Courtesy</td><td>Skill</td></tr><tr><td>Fitness</td><td>Skill</td></tr><tr><td><a class=\"compendium-link\" data-pack=\"l5r5e.core-techniques-invocations\">(invocation) Rank 1-2 Water Invocations</a></td><td>Tech. Grp.</td></tr><tr><td><a class=\"entity-link content-link\" draggable=\"true\" data-link=\"\" data-uuid=\"Compendium.l5r5e.core-techniques-invocations.Item.L5RCoreInv000052\" data-pack=\"l5r5e.core-techniques-invocations\" data-type=\"Item\" data-id=\"L5RCoreInv000052\">(invocation) Hands of the Tides</a> (prereq)</td><td>Technique</td></tr><tr><td><a class=\"entity-link content-link\" draggable=\"true\" data-link=\"\" data-uuid=\"Compendium.l5r5e.core-techniques-rituals.Item.L5RCoreRit000010\" data-pack=\"l5r5e.core-techniques-rituals\" data-type=\"Item\" data-id=\"L5RCoreRit000010\">(ritual) Whispers to the Moon (Moon Cultist)</a> (prereq)</td><td>Technique</td></tr></table>","source_reference":{"source":"celestial_realms","page":"140"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/title.svg","effects":[]}
{"_id":"L5RCoreTit000048","name":"Spirits hunter","permission":{"default":0},"type":"title","data":{"in_curriculum":false,"xp_used":0,"rank":1,"bought_at_rank":0,"ring":"void","xp_cost":"12","description":"<h2>Curriculum</h2><table><tr><td>Martial Skills</td><td>Skill Group</td></tr><tr><td>Social Skills</td><td>Skill Group</td></tr><tr><td>Government</td><td>Skill</td></tr><tr><td>Theology</td><td>Skill</td></tr><tr><td><a class=\"compendium-link\" data-pack=\"l5r5e.core-techniques-rituals\">(ritual) Rank 1 Rituals</a> (prereq)</td><td>Tech. Grp.</td></tr></table>","source_reference":{"source":"deathly_turns","page":"21"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/title.svg","effects":[]} {"_id":"L5RCoreTit000048","name":"Spirits hunter","permission":{"default":0},"type":"title","data":{"in_curriculum":false,"xp_used":0,"rank":1,"bought_at_rank":0,"ring":"void","xp_cost":"12","description":"<h2>Curriculum</h2><table><tr><td>Martial Skills</td><td>Skill Group</td></tr><tr><td>Social Skills</td><td>Skill Group</td></tr><tr><td>Government</td><td>Skill</td></tr><tr><td>Theology</td><td>Skill</td></tr><tr><td><a class=\"compendium-link\" data-pack=\"l5r5e.core-techniques-rituals\">(ritual) Rank 1 Rituals</a> (prereq)</td><td>Tech. Grp.</td></tr></table>","source_reference":{"source":"deathly_turns","page":"21"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/title.svg","effects":[]}
{"_id":"L5RCoreTit000049","name":"Animal Handler","permission":{"default":0},"type":"title","data":{"in_curriculum":false,"xp_used":0,"rank":1,"bought_at_rank":0,"ring":"void","xp_cost":"24","description":"<h2>Curriculum</h2><table><tr><td>Trade Skills</td><td>Skill Group</td></tr><tr><td>Martial Arts [Unarmed]</td><td>Skill</td></tr><tr><td>Medicine</td><td>Skill</td></tr><tr><td>Sentiment</td><td>Skill</td></tr><tr><td><a class=\"entity-link content-link\" draggable=\"true\" data-link=\"\" data-uuid=\"Compendium.l5r5e.core-techniques-shuji.Item.L5RCoreShu000096\" data-pack=\"l5r5e.core-techniques-shuji\" data-type=\"Item\" data-id=\"L5RCoreShu000096\">(shuji) Call to Ride</a> (prereq)</td><td>Technique</td></tr><tr><td><a class=\"entity-link content-link\" draggable=\"true\" data-link=\"\" data-uuid=\"Compendium.l5r5e.core-techniques-shuji.Item.L5RCoreShu000095\" data-pack=\"l5r5e.core-techniques-shuji\" data-type=\"Item\" data-id=\"L5RCoreShu000095\">(shuji) Incite Wrath</a> (prereq)</td><td>Technique</td></tr><tr><td><a class=\"entity-link content-link\" draggable=\"true\" data-link=\"\" data-uuid=\"Compendium.l5r5e.core-techniques-shuji.Item.L5RCoreShu000011\" data-pack=\"l5r5e.core-techniques-shuji\" data-type=\"Item\" data-id=\"L5RCoreShu000011\">(shuji) Touchstone of Courage</a> (prereq)</td><td>Technique</td></tr></table>","source_reference":{"source":"children_of_the_five_winds","page":"134"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/title.svg","effects":[]}
{"_id":"L5RCoreTit000050","name":"Doomhunter","permission":{"default":0},"type":"title","data":{"in_curriculum":false,"xp_used":0,"rank":1,"bought_at_rank":0,"ring":"void","xp_cost":"28","description":"<h2>Curriculum</h2><table><tr><td>Martial Skills</td><td>Skill Group</td></tr><tr><td>Skulduggery</td><td>Skill</td></tr><tr><td>Survival</td><td>Skill</td></tr><tr><td>Theology</td><td>Skill</td></tr><tr><td><a class=\"compendium-link\" data-pack=\"l5r5e.core-techniques-rituals\">(ritual) Rank 1-2 Rituals</a> (prereq)</td><td>Tech. Grp.</td></tr><tr><td><a class=\"entity-link content-link\" draggable=\"true\" data-link=\"\" data-uuid=\"Compendium.l5r5e.core-techniques-ninjutsu.Item.L5RCoreNin000002\" data-pack=\"l5r5e.core-techniques-ninjutsu\" data-type=\"Item\" data-id=\"L5RCoreNin000002\">(ninjutsu) Skulk</a> (prereq)</td><td>Technique</td></tr><tr><td><a class=\"entity-link content-link\" draggable=\"true\" data-link=\"\" data-uuid=\"Compendium.l5r5e.core-techniques-kata.Item.L5RCoreKat000006\" data-pack=\"l5r5e.core-techniques-kata\" data-type=\"Item\" data-id=\"L5RCoreKat000006\">(kata) Soul Sunder</a> (prereq)</td><td>Technique</td></tr></table>","source_reference":{"source":"children_of_the_five_winds","page":"134"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/title.svg","effects":[]}
{"_id":"L5RCoreTit000051","name":"Imperial Peacekeeper","permission":{"default":0},"type":"title","data":{"in_curriculum":false,"xp_used":0,"rank":1,"bought_at_rank":0,"ring":"void","xp_cost":"18","description":"<h2>Curriculum</h2><table><tr><td>Martial Skills</td><td>Skill Group</td></tr><tr><td>Courtesy</td><td>Skill</td></tr><tr><td>Command</td><td>Skill</td></tr><tr><td>Sentiment</td><td>Skill</td></tr><tr><td><a class=\"compendium-link\" data-pack=\"l5r5e.core-techniques-shuji\">(shuji) Rank 1-2 Earth Shuji</a> (prereq)</td><td>Tech. Grp.</td></tr><tr><td><a class=\"entity-link content-link\" draggable=\"true\" data-link=\"\" data-uuid=\"Compendium.l5r5e.core-techniques-rituals.Item.L5RCoreRit000037\" data-pack=\"l5r5e.core-techniques-rituals\" data-type=\"Item\" data-id=\"L5RCoreRit000037\">(ritual) Cultural Exchange</a> (prereq)</td><td>Technique</td></tr><tr><td><a class=\"entity-link content-link\" draggable=\"true\" data-link=\"\" data-uuid=\"Compendium.l5r5e.core-techniques-shuji.Item.L5RCoreShu000016\" data-pack=\"l5r5e.core-techniques-shuji\" data-type=\"Item\" data-id=\"L5RCoreShu000016\">(shuji) Pillar of Calm</a> (prereq)</td><td>Technique</td></tr></table>","source_reference":{"source":"children_of_the_five_winds","page":"135"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/title.svg","effects":[]}
{"_id":"L5RCoreTit000052","name":"Interpreter","permission":{"default":0},"type":"title","data":{"in_curriculum":false,"xp_used":0,"rank":1,"bought_at_rank":0,"ring":"void","xp_cost":"12","description":"<h2>Curriculum</h2><table><tr><td>Social Skills</td><td>Skill Group</td></tr><tr><td>Composition</td><td>Skill</td></tr><tr><td>Culture</td><td>Skill</td></tr><tr><td>Government</td><td>Skill</td></tr><tr><td><a class=\"compendium-link\" data-pack=\"l5r5e.core-techniques-shuji\">(shuji) Rank 1 Shuji</a> (prereq)</td><td>Tech. Grp.</td></tr><tr><td><a class=\"entity-link content-link\" draggable=\"true\" data-link=\"\" data-uuid=\"Compendium.l5r5e.core-techniques-rituals.Item.L5RCoreRit000037\" data-pack=\"l5r5e.core-techniques-rituals\" data-type=\"Item\" data-id=\"L5RCoreRit000037\">(ritual) Cultural Exchange</a> (prereq)</td><td>Technique</td></tr><tr><td><a class=\"entity-link content-link\" draggable=\"true\" data-link=\"\" data-uuid=\"Compendium.l5r5e.core-techniques-rituals.Item.L5RCoreRit000041\" data-pack=\"l5r5e.core-techniques-rituals\" data-type=\"Item\" data-id=\"L5RCoreRit000041\">(ritual) Traveler's Experience</a> (prereq)</td><td>Technique</td></tr></table>","source_reference":{"source":"children_of_the_five_winds","page":"135"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/title.svg","effects":[]}
{"_id":"L5RCoreTit000053","name":"Scarlet Banners Ranger","permission":{"default":0},"type":"title","data":{"in_curriculum":false,"xp_used":0,"rank":1,"bought_at_rank":0,"ring":"void","xp_cost":"24","description":"<h2>Curriculum</h2><table><tr><td>Martial Skills</td><td>Skill Group</td></tr><tr><td>Trade Skills</td><td>Skill Group</td></tr><tr><td>Government</td><td>Skill</td></tr><tr><td>Sentiment</td><td>Skill</td></tr><tr><td><a class=\"compendium-link\" data-pack=\"l5r5e.core-techniques-kata\">(kata) Rank 1-2 Kata</a> (prereq)</td><td>Tech. Grp.</td></tr><tr><td><a class=\"entity-link content-link\" draggable=\"true\" data-link=\"\" data-uuid=\"Compendium.l5r5e.core-techniques-shuji.Item.L5RCoreShu000089\" data-pack=\"l5r5e.core-techniques-shuji\" data-type=\"Item\" data-id=\"L5RCoreShu000089\">(shuji) Cunning Omission</a> (prereq)</td><td>Technique</td></tr><tr><td><a class=\"entity-link content-link\" draggable=\"true\" data-link=\"\" data-uuid=\"Compendium.l5r5e.core-techniques-kata.Item.L5RCoreKat000090\" data-pack=\"l5r5e.core-techniques-kata\" data-type=\"Item\" data-id=\"L5RCoreKat000090\">(kata) Thunderbolt Style</a> (prereq)</td><td>Technique</td></tr></table>","source_reference":{"source":"children_of_the_five_winds","page":"136"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/title.svg","effects":[]}
{"_id":"L5RCoreTit000054","name":"Student of Names","permission":{"default":0},"type":"title","data":{"in_curriculum":false,"xp_used":0,"rank":1,"bought_at_rank":0,"ring":"void","xp_cost":"12","description":"<h2>Curriculum</h2><table><tr><td>Command</td><td>Skill</td></tr><tr><td>Culture</td><td>Skill</td></tr><tr><td>Survival</td><td>Skill</td></tr><tr><td>Theology</td><td>Skill</td></tr><tr><td><a class=\"compendium-link\" data-pack=\"l5r5e.core-techniques-invocations\">(invocation) Rank 1-2 Invocations</a> (prereq)</td><td>Tech. Grp.</td></tr><tr><td><a class=\"entity-link content-link\" draggable=\"true\" data-link=\"\" data-uuid=\"Compendium.l5r5e.core-techniques-rituals.Item.L5RCoreRit000040\" data-pack=\"l5r5e.core-techniques-rituals\" data-type=\"Item\" data-id=\"L5RCoreRit000040\">(ritual) Spiritual Survey</a> (prereq)</td><td>Technique</td></tr><tr><td><a class=\"entity-link content-link\" draggable=\"true\" data-link=\"\" data-uuid=\"Compendium.l5r5e.core-techniques-rituals.Item.L5RCoreRit000005\" data-pack=\"l5r5e.core-techniques-rituals\" data-type=\"Item\" data-id=\"L5RCoreRit000005\">(ritual) Threshold Barrier</a> (prereq)</td><td>Technique</td></tr></table>","source_reference":{"source":"children_of_the_five_winds","page":"136"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/title.svg","effects":[]}
{"_id":"L5RCoreTit000055","name":"White Guard Veteran","permission":{"default":0},"type":"title","data":{"in_curriculum":false,"xp_used":0,"rank":1,"bought_at_rank":0,"ring":"void","xp_cost":"32","description":"<h2>Curriculum</h2><table><tr><td>Martial Skills</td><td>Skill Group</td></tr><tr><td>Courtesy</td><td>Skill</td></tr><tr><td>Command</td><td>Skill</td></tr><tr><td>Survival</td><td>Skill</td></tr><tr><td>Theology</td><td>Skill</td></tr><tr><td><a class=\"entity-link content-link\" draggable=\"true\" data-link=\"\" data-uuid=\"Compendium.l5r5e.core-techniques-shuji.Item.L5RCoreShu000038\" data-pack=\"l5r5e.core-techniques-shuji\" data-type=\"Item\" data-id=\"L5RCoreShu000038\">(shuji) A Samurais Fate</a> (prereq)</td><td>Technique</td></tr><tr><td><a class=\"entity-link content-link\" draggable=\"true\" data-link=\"\" data-uuid=\"Compendium.l5r5e.core-techniques-kata.Item.L5RCoreKat000083\" data-pack=\"l5r5e.core-techniques-kata\" data-type=\"Item\" data-id=\"L5RCoreKat000083\">(kata) Stalking Leopard Style</a> (prereq)</td><td>Technique</td></tr><tr><td><a class=\"entity-link content-link\" draggable=\"true\" data-link=\"\" data-uuid=\"Compendium.l5r5e.core-techniques-kata.Item.L5RCoreKat000084\" data-pack=\"l5r5e.core-techniques-kata\" data-type=\"Item\" data-id=\"L5RCoreKat000084\">(kata) Sudden Downpour Style</a> (prereq)</td><td>Technique</td></tr></table>","source_reference":{"source":"children_of_the_five_winds","page":"137"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/title.svg","effects":[]}

View File

@@ -104,3 +104,13 @@
{"_id":"L5RCoreWea000104","name":"Mizutsumi [Blessed Treasure]","permission":{"default":0},"type":"weapon","data":{"equipped":false,"quantity":1,"weight":"1","rarity":"10","zeni":"0","properties":[{"id":"L5RCorePro000002","name":"Ceremonial"},{"id":"L5RCorePro000001","name":"Razor-Edged"},{"id":"L5RCorePro000014","name":"Sacred"}],"category":"Swords","skill":"melee","readied":false,"range":"1","damage":"4","deadliness":"5","grip_1":"","grip_2":"Deadliness +2","description":"","source_reference":{"source":"deathly_turns","page":"19"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/weapons/katana.svg","effects":[]} {"_id":"L5RCoreWea000104","name":"Mizutsumi [Blessed Treasure]","permission":{"default":0},"type":"weapon","data":{"equipped":false,"quantity":1,"weight":"1","rarity":"10","zeni":"0","properties":[{"id":"L5RCorePro000002","name":"Ceremonial"},{"id":"L5RCorePro000001","name":"Razor-Edged"},{"id":"L5RCorePro000014","name":"Sacred"}],"category":"Swords","skill":"melee","readied":false,"range":"1","damage":"4","deadliness":"5","grip_1":"","grip_2":"Deadliness +2","description":"","source_reference":{"source":"deathly_turns","page":"19"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/weapons/katana.svg","effects":[]}
{"_id":"L5RCoreWea000105","name":"The Five Akodo Daggers [Blessed Treasure]","permission":{"default":0},"type":"weapon","data":{"equipped":false,"quantity":1,"weight":"1","rarity":"10","zeni":"0","properties":[{"id":"L5RCorePro000005","name":"Concealable"},{"id":"L5RCorePro000015","name":"Durable"},{"id":"L5RCorePro000001","name":"Razor-Edged"},{"id":"L5RCorePro000014","name":"Sacred"}],"category":"Hand Weapons","skill":"melee","readied":false,"range":"","damage":"2","deadliness":"6","grip_1":"","grip_2":"Deadliness +2","description":"","source_reference":{"source":"fields_of_victory","page":"92"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/weapons/knife.svg","effects":[]} {"_id":"L5RCoreWea000105","name":"The Five Akodo Daggers [Blessed Treasure]","permission":{"default":0},"type":"weapon","data":{"equipped":false,"quantity":1,"weight":"1","rarity":"10","zeni":"0","properties":[{"id":"L5RCorePro000005","name":"Concealable"},{"id":"L5RCorePro000015","name":"Durable"},{"id":"L5RCorePro000001","name":"Razor-Edged"},{"id":"L5RCorePro000014","name":"Sacred"}],"category":"Hand Weapons","skill":"melee","readied":false,"range":"","damage":"2","deadliness":"6","grip_1":"","grip_2":"Deadliness +2","description":"","source_reference":{"source":"fields_of_victory","page":"92"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/weapons/knife.svg","effects":[]}
{"_id":"L5RCoreWea000106","name":"The blade with no name: Ancestral sword of the Dragon [Blessed Treasure]","permission":{"default":0},"type":"weapon","data":{"equipped":false,"quantity":1,"weight":"1","rarity":"10","zeni":"0","properties":[{"id":"L5RCorePro000014","name":"Sacred"}],"category":"Swords","skill":"melee","readied":false,"range":"","damage":"","deadliness":"","grip_1":"","grip_2":"","description":"","source_reference":{"source":"celestial_realms","page":"100"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/weapons/katana.svg","effects":[]} {"_id":"L5RCoreWea000106","name":"The blade with no name: Ancestral sword of the Dragon [Blessed Treasure]","permission":{"default":0},"type":"weapon","data":{"equipped":false,"quantity":1,"weight":"1","rarity":"10","zeni":"0","properties":[{"id":"L5RCorePro000014","name":"Sacred"}],"category":"Swords","skill":"melee","readied":false,"range":"","damage":"","deadliness":"","grip_1":"","grip_2":"","description":"","source_reference":{"source":"celestial_realms","page":"100"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/weapons/katana.svg","effects":[]}
{"_id":"L5RCoreWea000107","name":"Catalpa Bow","permission":{"default":0},"type":"weapon","data":{"equipped":false,"quantity":1,"weight":"1","rarity":"7","zeni":"25 koku","properties":[{"id":"L5RCorePro000002","name":"Ceremonial"},{"id":"L5RCorePro000014","name":"Sacred"}],"category":"Bows","skill":"ranged","readied":false,"range":"2-5","damage":"5","deadliness":"3","grip_1":"N/A","grip_2":"","description":"","source_reference":{"source":"children_of_the_five_winds","page":"99"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/weapons/bow.svg","effects":[]}
{"_id":"L5RCoreWea000108","name":"Charging Lance","permission":{"default":0},"type":"weapon","data":{"equipped":false,"quantity":1,"weight":"1","rarity":"6","zeni":"7 koku","properties":[{"id":"L5RCorePro000006","name":"Cumbersome"},{"id":"L5RCorePro000011","name":"Wargear"}],"category":"Polearms","skill":"melee","readied":false,"range":"1-2","damage":"4","deadliness":"3","grip_1":"N/A","grip_2":"-, (after a Move action on horseback): Damage +3, Deadliness 7, gain the Hewing item quality","description":"","source_reference":{"source":"children_of_the_five_winds","page":"99"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/weapons/bo.svg","effects":[]}
{"_id":"L5RCoreWea000109","name":"Fire Lance","permission":{"default":0},"type":"weapon","data":{"equipped":false,"quantity":1,"weight":"1","rarity":"9","zeni":"40 koku","properties":[{"id":"L5RCorePro000006","name":"Cumbersome"},{"id":"L5RCorePro000013","name":"Prepare"},{"id":"L5RCorePro000011","name":"Wargear"}],"category":"Polearms","skill":"melee","readied":false,"range":"1-2","damage":"4","deadliness":"3","grip_1":"N/A","grip_2":"-, (firework launch): Martial Arts[Ranged] Range 3-5 Damage +3 Deadliness 9","description":"","source_reference":{"source":"children_of_the_five_winds","page":"99"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/weapons/bo.svg","effects":[]}
{"_id":"L5RCoreWea000110","name":"Ganzu Ring Ax","permission":{"default":0},"type":"weapon","data":{"equipped":false,"quantity":1,"weight":"1","rarity":"9","zeni":"35 koku","properties":[{"id":"L5RCorePro000006","name":"Cumbersome"},{"id":"L5RCorePro000038","name":"Hewing"},{"id":"L5RCorePro000011","name":"Wargear"}],"category":"Axes","skill":"melee","readied":false,"range":"1-2","damage":"4","deadliness":"7","grip_1":"N/A","grip_2":"","description":"","source_reference":{"source":"children_of_the_five_winds","page":"99"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/weapons/axe.svg","effects":[]}
{"_id":"L5RCoreWea000111","name":"Katar (Punch Dagger)","permission":{"default":0},"type":"weapon","data":{"equipped":false,"quantity":1,"weight":"1","rarity":"9","zeni":"10 koku","properties":[{"id":"L5RCorePro000038","name":"Hewing"},{"id":"L5RCorePro000001","name":"Razor-Edged"}],"category":"Hand Weapons","skill":"melee","readied":false,"range":"0-1","damage":"3","deadliness":"5","grip_1":"","grip_2":"N/A","description":"","source_reference":{"source":"children_of_the_five_winds","page":"99"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/weapons/bo.svg","effects":[]}
{"_id":"L5RCoreWea000112","name":"Repeating Crossbow","permission":{"default":0},"type":"weapon","data":{"equipped":false,"quantity":1,"weight":"1","rarity":"8","zeni":"50 koku","properties":[{"id":"L5RCorePro000006","name":"Cumbersome"}],"category":"Crossbows","skill":"ranged","readied":false,"range":"2-4","damage":"5","deadliness":"3","grip_1":"N/A","grip_2":"","description":"","source_reference":{"source":"children_of_the_five_winds","page":"101"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/weapons/crossbow.svg","effects":[]}
{"_id":"L5RCoreWea000113","name":"Saddle Cutter","permission":{"default":0},"type":"weapon","data":{"equipped":false,"quantity":1,"weight":"1","rarity":"8","zeni":"15 koku","properties":[{"id":"L5RCorePro000006","name":"Cumbersome"},{"id":"L5RCorePro000011","name":"Wargear"}],"category":"Polearms","skill":"melee","readied":false,"range":"0-1","damage":"4","deadliness":"6","grip_1":"","grip_2":"","description":"","source_reference":{"source":"children_of_the_five_winds","page":"101"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/weapons/knife.svg","effects":[]}
{"_id":"L5RCoreWea000114","name":"Ide Parasol Shield","permission":{"default":0},"type":"weapon","data":{"equipped":false,"quantity":1,"weight":"1","rarity":"9","zeni":"8 koku","properties":[{"id":"L5RCorePro000005","name":"Concealable"},{"id":"L5RCorePro000006","name":"Cumbersome"}],"category":"Shields","skill":"melee","readied":false,"range":"","damage":"2","deadliness":"3","grip_1":"","grip_2":"","description":"","source_reference":{"source":"children_of_the_five_winds","page":"101"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/weapons/unarmed.svg","effects":[]}
{"_id":"L5RCoreWea000115","name":"Standing Shield","permission":{"default":0},"type":"weapon","data":{"equipped":false,"quantity":1,"weight":"1","rarity":"8","zeni":"12 koku","properties":[{"id":"L5RCorePro000006","name":"Cumbersome"},{"id":"L5RCorePro000015","name":"Durable"}],"category":"Shields","skill":"melee","readied":false,"range":"","damage":"2","deadliness":"2","grip_1":"","grip_2":"","description":"","source_reference":{"source":"children_of_the_five_winds","page":"101"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/weapons/unarmed.svg","effects":[]}
{"_id":"L5RCoreWea000116","name":"The Ancestral Sword of the Fox [Blessed Treasure]","permission":{"default":0},"type":"weapon","data":{"equipped":false,"quantity":1,"weight":"1","rarity":"10","zeni":"0","properties":[{"id":"L5RCorePro000002","name":"Ceremonial"},{"id":"L5RCorePro000006","name":"Cumbersome"},{"id":"L5RCorePro000015","name":"Durable"},{"id":"L5RCorePro000001","name":"Razor-Edged"},{"id":"L5RCorePro000014","name":"Sacred"}],"category":"Swords","skill":"melee","readied":false,"range":"1","damage":"5","deadliness":"7","grip_1":"","grip_2":"Deadliness 8","description":"","source_reference":{"source":"children_of_the_five_winds","page":"105"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/weapons/katana.svg","effects":[]}

View File

@@ -117,7 +117,6 @@ export class ActorL5r5e extends Actor {
}); });
} }
// Now using updateDocuments
return Actor.updateDocuments([docData], context).then(() => { return Actor.updateDocuments([docData], context).then(() => {
// Notify the "Gm Monitor" if this actor is watched // Notify the "Gm Monitor" if this actor is watched
if (game.settings.get(CONFIG.l5r5e.namespace, "gm-monitor-actors").some((uuid) => uuid === this.uuid)) { if (game.settings.get(CONFIG.l5r5e.namespace, "gm-monitor-actors").some((uuid) => uuid === this.uuid)) {
@@ -126,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();
@@ -138,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) {
@@ -189,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
@@ -238,7 +271,7 @@ export class ActorL5r5e extends Actor {
*/ */
async renderTextTemplate() { async renderTextTemplate() {
const sheetData = (await this.sheet?.getData()) || this; const sheetData = (await this.sheet?.getData()) || this;
const tpl = await renderTemplate(`${CONFIG.l5r5e.paths.templates}actors/actor-text.html`, sheetData); const tpl = await foundry.applications.handlebars.renderTemplate(`${CONFIG.l5r5e.paths.templates}actors/actor-text.html`, sheetData);
if (!tpl) { if (!tpl) {
return null; return null;
} }

View File

@@ -55,15 +55,15 @@ export class ArmySheetL5r5e extends BaseSheetL5r5e {
*/ */
_createDragDropHandlers() { _createDragDropHandlers() {
return [ return [
new DragDrop({ new foundry.applications.ux.DragDrop.implementation({
dropSelector: ".warlord", dropSelector: ".warlord",
callbacks: { drop: this._onDropActors.bind(this, "warlord") }, callbacks: { drop: this._onDropActors.bind(this, "warlord") },
}), }),
new DragDrop({ new foundry.applications.ux.DragDrop.implementation({
dropSelector: ".commander", dropSelector: ".commander",
callbacks: { drop: this._onDropActors.bind(this, "commander") }, callbacks: { drop: this._onDropActors.bind(this, "commander") },
}), }),
new DragDrop({ new foundry.applications.ux.DragDrop.implementation({
dropSelector: null, dropSelector: null,
callbacks: { drop: this._onDrop.bind(this) }, callbacks: { drop: this._onDrop.bind(this) },
}), }),
@@ -120,7 +120,7 @@ export class ArmySheetL5r5e extends BaseSheetL5r5e {
// Editors enrichment // Editors enrichment
for (const name of ["army_abilities", "supplies_logistics", "past_battles"]) { for (const name of ["army_abilities", "supplies_logistics", "past_battles"]) {
sheetData.data.enrichedHtml[name] = await TextEditor.enrichHTML(sheetData.data.system[name], { sheetData.data.enrichedHtml[name] = await foundry.applications.ux.TextEditor.implementation.enrichHTML(sheetData.data.system[name], {
async: true, async: true,
}); });
} }

View File

@@ -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);
}
} }
/** /**

View File

@@ -1,7 +1,7 @@
/** /**
* Base Sheet for Actor and Npc * Base Sheet for Actor and Npc
*/ */
export class BaseSheetL5r5e extends ActorSheet { export class BaseSheetL5r5e extends foundry.appv1.sheets.ActorSheet {
/** /**
* Commons options * Commons options
*/ */
@@ -81,8 +81,8 @@ export class BaseSheetL5r5e extends ActorSheet {
// Editors enrichment // Editors enrichment
sheetData.data.enrichedHtml = { sheetData.data.enrichedHtml = {
description: await TextEditor.enrichHTML(sheetData.data.system.description, { async: true }), description: await foundry.applications.ux.TextEditor.implementation.enrichHTML(sheetData.data.system.description, { async: true }),
notes: await TextEditor.enrichHTML(sheetData.data.system.notes, { async: true }), notes: await foundry.applications.ux.TextEditor.implementation.enrichHTML(sheetData.data.system.notes, { async: true }),
}; };
// Shortcut for some tests // Shortcut for some tests

View File

@@ -101,19 +101,19 @@ export class TwentyQuestionsDialog extends FormApplication {
*/ */
_createDragDropHandlers() { _createDragDropHandlers() {
return [ return [
new DragDrop({ new foundry.applications.ux.DragDrop.implementation({
dragSelector: ".item", dragSelector: ".item",
dropSelector: ".items", dropSelector: ".items",
permissions: { dragstart: this.isEditable, drop: this.isEditable }, permissions: { dragstart: this.isEditable, drop: this.isEditable },
callbacks: { dragstart: this._onDragStart.bind(this), drop: this._onDropItem.bind(this, "item") }, callbacks: { dragstart: this._onDragStart.bind(this), drop: this._onDropItem.bind(this, "item") },
}), }),
new DragDrop({ new foundry.applications.ux.DragDrop.implementation({
dragSelector: ".technique", dragSelector: ".technique",
dropSelector: ".techniques", dropSelector: ".techniques",
permissions: { dragstart: this.isEditable, drop: this.isEditable }, permissions: { dragstart: this.isEditable, drop: this.isEditable },
callbacks: { dragstart: this._onDragStart.bind(this), drop: this._onDropItem.bind(this, "technique") }, callbacks: { dragstart: this._onDragStart.bind(this), drop: this._onDropItem.bind(this, "technique") },
}), }),
new DragDrop({ new foundry.applications.ux.DragDrop.implementation({
dragSelector: ".peculiarity", dragSelector: ".peculiarity",
dropSelector: ".peculiarities", dropSelector: ".peculiarities",
permissions: { dragstart: this.isEditable, drop: this.isEditable }, permissions: { dragstart: this.isEditable, drop: this.isEditable },
@@ -122,7 +122,7 @@ export class TwentyQuestionsDialog extends FormApplication {
drop: this._onDropItem.bind(this, "peculiarity"), drop: this._onDropItem.bind(this, "peculiarity"),
}, },
}), }),
new DragDrop({ new foundry.applications.ux.DragDrop.implementation({
dragSelector: ".bond", dragSelector: ".bond",
dropSelector: ".bonds", dropSelector: ".bonds",
permissions: { dragstart: this.isEditable, drop: this.isEditable }, permissions: { dragstart: this.isEditable, drop: this.isEditable },
@@ -288,14 +288,12 @@ export class TwentyQuestionsDialog extends FormApplication {
// School Ability // School Ability
if (stepKey === "step3.school_ability") { if (stepKey === "step3.school_ability") {
if (item.system.technique_type !== "school_ability") { if (item.system.technique_type !== "school_ability") {
console.warn( console.warn(`L5R5E | 20Q | This technique is not a school ability : ${item.system.technique_type}`);
`L5R5E | 20Q | This technique is not a school ability : ${item.system.technique_type}`
);
return; return;
} else if (!this.object.data.step3.allowed_techniques?.[item.system.technique_type]) {
// Informative message : Tech not allowed
ui.notifications.info("l5r5e.techniques.not_allowed", {localize: true});
} }
} else if (!this.object.data.step3.allowed_techniques?.[item.system.technique_type]) {
// Informative message : Tech not allowed
ui.notifications.info("l5r5e.techniques.not_allowed", {localize: true});
} }
break; break;

View File

@@ -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) {

View File

@@ -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/fire-white.webp",
system: { id: "L5RCoreCon000016" }
},{
id: "lightly_wounded_water",
name: "l5r5e.conditions.lightly_wounded_water",
img: "systems/l5r5e/assets/icons/conditions/water-white.webp",
system: { id: "L5RCoreCon000016" }
},{
id: "lightly_wounded_air",
name: "l5r5e.conditions.lightly_wounded_air",
img: "systems/l5r5e/assets/icons/conditions/air-white.webp",
system: { id: "L5RCoreCon000016" }
},{
id: "lightly_wounded_earth",
name: "l5r5e.conditions.lightly_wounded_earth",
img: "systems/l5r5e/assets/icons/conditions/earth-white.webp",
system: { id: "L5RCoreCon000016" }
},{
id: "lightly_wounded_void",
name: "l5r5e.conditions.lightly_wounded_void",
img: "systems/l5r5e/assets/icons/conditions/void-white.webp",
system: { id: "L5RCoreCon000016" }
},{
id: "severely_wounded_fire",
name: "l5r5e.conditions.severely_wounded_fire",
img: "systems/l5r5e/assets/icons/conditions/fire-black.webp",
system: { id: "L5RCoreCon000016" }
},{
id: "severely_wounded_water",
name: "l5r5e.conditions.severely_wounded_water",
img: "systems/l5r5e/assets/icons/conditions/water-black.webp",
system: { id: "L5RCoreCon000016" }
},{
id: "severely_wounded_air",
name: "l5r5e.conditions.severely_wounded_air",
img: "systems/l5r5e/assets/icons/conditions/air-black.webp",
system: { id: "L5RCoreCon000016" }
},{
id: "severely_wounded_earth",
name: "l5r5e.conditions.severely_wounded_earth",
img: "systems/l5r5e/assets/icons/conditions/earth-black.webp",
system: { id: "L5RCoreCon000016" }
},{
id: "severely_wounded_void",
name: "l5r5e.conditions.severely_wounded_void",
img: "systems/l5r5e/assets/icons/conditions/void-black.webp",
system: { id: "L5RCoreCon000016" }
},{
id: "afflicted",
name: "l5r5e.conditions.afflicted",
img: "icons/magic/death/undead-ghost-scream-teal.webp",
system: { id: "L5RCoreCon000001" }
},{
id: "bleeding",
name: "l5r5e.conditions.bleeding",
img: "icons/skills/wounds/blood-drip-droplet-red.webp",
system: { id: "L5RCoreCon000002" }
},{
id: "burning",
name: "l5r5e.conditions.burning",
img: "icons/magic/fire/flame-burning-creature-skeleton.webp",
system: { id: "L5RCoreCon000003" }
},{
id: "centered",
name: "l5r5e.conditions.centered",
img: "systems/l5r5e/assets/icons/social.svg",
system: { id: "L5RCoreCon000022" }
},{
id: "compromised",
name: "l5r5e.conditions.compromised",
img: "icons/creatures/abilities/mouth-teeth-human.webp",
system: { id: "L5RCoreCon000004" }
},{
id: "dazed",
name: "l5r5e.conditions.dazed",
img: "icons/magic/light/beam-explosion-orange.webp",
system: { id: "L5RCoreCon000005" }
},{
id: "disoriented",
name: "l5r5e.conditions.disoriented",
img: "icons/magic/control/hypnosis-mesmerism-eye.webp",
system: { id: "L5RCoreCon000006" }
},{
id: "dying",
name: "l5r5e.conditions.dying",
img: "icons/magic/death/skull-humanoid-white-blue.webp",
system: { id: "L5RCoreCon000007" }
},{
id: "emboldened",
name: "l5r5e.conditions.emboldened",
img: "systems/l5r5e/assets/icons/social.svg",
system: { id: "L5RCoreCon000023" }
},{
id: "enraged",
name: "l5r5e.conditions.enraged",
img: "icons/skills/wounds/injury-face-impact-orange.webp",
system: { id: "L5RCoreCon000008" }
},{
id: "exhausted",
name: "l5r5e.conditions.exhausted",
img: "icons/magic/life/heart-glowing-red.webp",
system: { id: "L5RCoreCon000009" }
},{
id: "illness_coughing_illness",
name: "l5r5e.conditions.illness_coughing_illness",
img: "icons/svg/poison.svg",
system: { id: "L5RCoreCon000019" }
},{
id: "illness_fire_rash",
name: "l5r5e.conditions.illness_fire_rash",
img: "icons/svg/fire.svg",
system: { id: "L5RCoreCon000021" }
},{
id: "illness_gut_sickness",
name: "l5r5e.conditions.illness_gut_sickness",
img: "icons/svg/poison.svg",
system: { id: "L5RCoreCon000018" }
},{
id: "illness_oozing_sore_disease",
name: "l5r5e.conditions.illness_oozing_sore_disease",
img: "icons/svg/eye.svg",
system: { id: "L5RCoreCon000017" }
},{
id: "illness_unsteady_illness",
name: "l5r5e.conditions.illness_unsteady_illness",
img: "icons/svg/daze.svg",
system: { id: "L5RCoreCon000020" }
},{
id: "immobilized",
name: "l5r5e.conditions.immobilized",
img: "icons/magic/nature/root-vine-entangle-foot-green.webp",
system: { id: "L5RCoreCon000010" }
},{
id: "incapacitated",
name: "l5r5e.conditions.incapacitated",
img: "icons/magic/control/silhouette-hold-change-green.webp",
system: { id: "L5RCoreCon000011" }
},{
id: "intoxicated",
name: "l5r5e.conditions.intoxicated",
img: "icons/consumables/drinks/alcohol-jar-spirits-gray.webp",
system: { id: "L5RCoreCon000012" }
},{
id: "possessed",
name: "l5r5e.conditions.possessed",
img: "icons/svg/terror.svg",
system: { id: "L5RCoreCon000024" }
},{
id: "prone",
name: "l5r5e.conditions.prone",
img: "icons/magic/control/silhouette-fall-slip-prone.webp",
system: { id: "L5RCoreCon000013" }
},{
id: "silenced",
name: "l5r5e.conditions.silenced",
img: "icons/magic/control/mouth-smile-deception-purple.webp",
system: { id: "L5RCoreCon000014" }
},{
id: "unconscious",
name: "l5r5e.conditions.unconscious",
img: "icons/magic/control/sleep-bubble-purple.webp",
system: { id: "L5RCoreCon000015" }
}],
regex: { regex: {
techniqueDifficulty: /^@([TS]):([^|]+?)(?:\|(min|max)(?:\(([^)]+?)\))?)?$/, techniqueDifficulty: /^@([TS]):([^|]+?)(?:\|(min|max)(?:\(([^)]+?)\))?)?$/,
}, },
@@ -65,6 +232,11 @@ export const L5R5E = {
label: "l5r5e.source_reference.writ_of_the_wild", label: "l5r5e.source_reference.writ_of_the_wild",
type: "l5r5e.multiselect.sources_categories.rules" type: "l5r5e.multiselect.sources_categories.rules"
}, },
"children_of_the_five_winds": {
value: "children_of_the_five_winds",
label: "l5r5e.source_reference.children_of_the_five_winds",
type: "l5r5e.multiselect.sources_categories.rules"
},
"gm_kit": { "gm_kit": {
value: "gm_kit", value: "gm_kit",
label: "l5r5e.source_reference.gm_kit", label: "l5r5e.source_reference.gm_kit",
@@ -266,6 +438,7 @@ L5R5E.families.set("bat", ["Komori"]);
L5R5E.families.set("boar", ["Heichi"]); L5R5E.families.set("boar", ["Heichi"]);
L5R5E.families.set("dragonfly", ["Tonbo"]); L5R5E.families.set("dragonfly", ["Tonbo"]);
L5R5E.families.set("firefly", ["Hotaru"]); L5R5E.families.set("firefly", ["Hotaru"]);
L5R5E.families.set("fox", ["Kitsune"]);
L5R5E.families.set("hare", ["Ujina", "Usagi"]); L5R5E.families.set("hare", ["Ujina", "Usagi"]);
L5R5E.families.set("monkey", ["Toku", "Fuzake"]); L5R5E.families.set("monkey", ["Toku", "Fuzake"]);
L5R5E.families.set("oriole", ["Tsi"]); L5R5E.families.set("oriole", ["Tsi"]);
@@ -299,6 +472,7 @@ L5R5E.demeanors = [
{ 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: "clever", mod: { air: 2, earth: -2 } }, { id: "clever", mod: { air: 2, earth: -2 } },
{ id: "compassionate", mod: { fire: 2, air: -1, water: -1}},
{ 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 } },

View File

@@ -193,7 +193,7 @@ export class RollnKeepDialog extends FormApplication {
*/ */
_createDragDropHandlers() { _createDragDropHandlers() {
return [ return [
new DragDrop({ new foundry.applications.ux.DragDrop.implementation({
dragSelector: ".dice.draggable", dragSelector: ".dice.draggable",
dropSelector: ".dropbox", dropSelector: ".dropbox",
permissions: { dragstart: this.isEditable, drop: this.isEditable }, permissions: { dragstart: this.isEditable, drop: this.isEditable },
@@ -259,13 +259,13 @@ export class RollnKeepDialog extends FormApplication {
// GM Only, need to be before the editable check // GM Only, need to be before the editable check
if (game.user.isGM && this.object.currentStep > 0) { if (game.user.isGM && this.object.currentStep > 0) {
// Add Context menu to rollback choices // Add Context menu to rollback choices
new ContextMenu(html, ".l5r5e.profil", [ new foundry.applications.ux.ContextMenu.implementation(html[0], ".l5r5e.profil", [
{ {
name: game.i18n.localize("l5r5e.dice.roll_n_keep.undo"), name: game.i18n.localize("l5r5e.dice.roll_n_keep.undo"),
icon: '<i class="fas fa-undo"></i>', icon: '<i class="fas fa-undo"></i>',
callback: () => this._undoLastStepChoices(), callback: () => this._undoLastStepChoices(),
}, },
]); ], { jQuery: false });
} }
// *** Everything below here is only needed if the sheet is editable *** // *** Everything below here is only needed if the sheet is editable ***
@@ -792,7 +792,7 @@ export class RollnKeepDialog extends FormApplication {
const messageId = card.parents(".chat-message").data("message-id"); const messageId = card.parents(".chat-message").data("message-id");
// Already open ? close it // Already open ? close it
const app = Object.values(ui.windows).find((e) => e.id === `l5r5e-roll-n-keep-dialog-${messageId}`); const app = game.l5r5e.HelpersL5r5e.getApplication(`l5r5e-roll-n-keep-dialog-${messageId}`);
if (app) { if (app) {
app.close(); app.close();
} else { } else {

View File

@@ -257,7 +257,7 @@ export class RollL5r5e extends Roll {
displaySummary: contexte?.from !== "render", displaySummary: contexte?.from !== "render",
}; };
return renderTemplate(CONFIG.l5r5e.paths.templates + this.constructor.TOOLTIP_TEMPLATE, { chatData }); return foundry.applications.handlebars.renderTemplate(CONFIG.l5r5e.paths.templates + this.constructor.TOOLTIP_TEMPLATE, { chatData });
} }
/** /**
@@ -319,7 +319,7 @@ export class RollL5r5e extends Roll {
}; };
// Render the roll display template // Render the roll display template
return renderTemplate(chatOptions.template, chatData); return foundry.applications.handlebars.renderTemplate(chatOptions.template, chatData);
} }
/** /**

View File

@@ -1,102 +1,271 @@
/** import { L5r5ePopupManager } from '../misc/l5r5e-popup-manager.js';
* L5R GM Monitor Windows
* @extends {FormApplication} const HandlebarsApplicationMixin = foundry.applications.api.HandlebarsApplicationMixin;
*/ const ApplicationV2 = foundry.applications.api.ApplicationV2;
export class GmMonitor extends FormApplication {
/** export class GmMonitor extends HandlebarsApplicationMixin(ApplicationV2) {
* Settings /** @override ApplicationV2 */
*/ static get DEFAULT_OPTIONS() {
object = { return {
view: "characters", // characters|armies id: "l5r5e-gm-monitor",
actors: [], tag: "div",
window: {
contentClasses: ["l5r5e", "gm-monitor"],
title: "l5r5e.gm.monitor.title",
minimizable: true,
controls: [
{
label: game.i18n.localize("l5r5e.gm.monitor.add_selected_tokens"),
icon: "fas fa-users",
action: "add_selected_tokens",
},
{
label: game.i18n.localize("l5r5e.gm.monitor.switch_view"),
icon: "fas fa-repeat",
action: "change_view_tab"
}
],
resizable: true,
editable: true,
},
position: {
width: "600",
height: "150"
},
actions: {
add_selected_tokens: GmMonitor.#addSelectedTokens,
change_view_tab: GmMonitor.#rotateViewTab,
remove_actor: GmMonitor.#removeActor,
toggle_prepared: GmMonitor.#togglePrepared,
change_stance: {
buttons: [0, 2],
handler: GmMonitor.#changeStance,
},
modify_fatigue: {
buttons: [0, 1, 2],
handler: GmMonitor.#modifyFatigue,
},
modify_strife: {
buttons: [0, 1, 2],
handler: GmMonitor.#modifyStrife,
},
modify_voidPoint: {
buttons: [0, 1, 2],
handler: GmMonitor.#modifyVoidPoint,
},
modify_casualties: {
buttons: [0, 1, 2],
handler: GmMonitor.#modifyCasualties,
},
modify_panic: {
buttons: [0, 1, 2],
handler: GmMonitor.#modifyPanic,
}
},
dragDrop: [{ dragSelector: null, dropSelector: null }],
}
};
/** @override HandlebarsApplicationMixin */
static PARTS = {
hidden_tabs: {
template: "templates/generic/tab-navigation.hbs"
},
character: {
id: "character",
template: "systems/l5r5e/templates/" + "gm/monitor/character-view.html"
},
army: {
if: "army",
template: "systems/l5r5e/templates/" + "gm/monitor/army-view.html"
}
}; };
/** /**
* Assign the default options * @type {Record<string, string>}
* @override * @override ApplicationV2
*/ */
static get defaultOptions() { tabGroups = {
return foundry.utils.mergeObject(super.defaultOptions, { view: "character"
id: "l5r5e-gm-monitor", };
classes: ["l5r5e", "gm-monitor"],
template: CONFIG.l5r5e.paths.templates + "gm/gm-monitor.html", /**
title: game.i18n.localize("l5r5e.gm.monitor.title"), * Data that is pushed to html
width: 800, */
height: 300, context = {
resizable: true, actors: []
closeOnSubmit: false,
submitOnClose: false,
submitOnChange: false,
dragDrop: [{ dragSelector: null, dropSelector: null }],
});
} }
/** /**
* Add the Switch View button on top of sheet * hooks we act upon, saved since we need to remove them when this window is not open
* @override
*/ */
_getHeaderButtons() { #hooks = [];
let buttons = super._getHeaderButtons();
// Switch view Characters/Armies /**
buttons.unshift({ * The DragDrop instance which handles interactivity resulting from DragTransfer events.
label: game.i18n.localize("l5r5e.gm.monitor.switch_view"), * @type {DragDrop}
class: "switch-view", */
icon: "fas fa-repeat", #dragDrop;
onclick: () =>
game.l5r5e.HelpersL5r5e.debounce(
"SwitchView-" + this.object.id,
() => {
this.object.view = this.object.view === "armies" ? "characters" : "armies";
this.render(false);
},
500,
true
)(),
});
// Add selected tokens constructor() {
buttons.unshift({ super();
label: game.i18n.localize("l5r5e.gm.monitor.add_selected_tokens"), this.#initialize();
class: "add-selected-token", }
icon: "fas fa-users",
onclick: () =>
game.l5r5e.HelpersL5r5e.debounce(
"AddSelectedToken-" + this.object.id,
() => this.#addSelectedTokens(),
500,
true
)(),
});
return buttons; /** @override ApplicationV2 */
async _preClose(options) {
await super._preClose(options);
options.animate = false;
for (const hook of this.#hooks) {
Hooks.off(hook.hook, hook.fn);
}
}
/** @override ApplicationV2 */
async _onRender(context, options) {
await super._onRender(context, options);
// Todo: Move this to common l5r5e application v2
game.l5r5e.HelpersL5r5e.commonListeners($(this.element));
this.#dragDrop = new foundry.applications.ux.DragDrop.implementation({
dragSelector: null,
dropSelector: null,
callbacks: {
drop: this.#onDrop.bind(this)
}
}).bind(this.element);
// Tooltips
new L5r5ePopupManager(
$(this.element).find(".actor-infos-control"),
async (event) => {
const type = $(event.currentTarget).data("type");
if (!type) return;
if (type === "text") {
return $(event.currentTarget).data("text");
}
const uuid = $(event.currentTarget).data("actor-uuid");
if (!uuid) return;
const actor = this.context.actors.find(actor => actor.uuid === uuid);
if (!actor) return;
switch (type) {
case "armors":
return this.#getTooltipArmors(actor);
case "weapons":
return this.#getTooltipWeapons(actor);
case "global":
return actor.isArmy
? this.#getTooltipArmiesGlobal(actor)
: this.#getTooltipGlobal(actor);
}
}
);
}
/** @override ApplicationV2 */
async _prepareContext() {
return {
tabs: this.getTabs(),
}
} }
/** /**
* Constructor * @param {string} partId The part being rendered
* @param {ApplicationOptions} options * @param {ApplicationRenderContext} context Shared context provided by _prepareContext
* @returns {Promise<ApplicationRenderContext>} Context data for a specific part
*
* @override HandlebarsApplicationMixin
*/ */
constructor(options = {}) { async _preparePartContext(partId, context) {
super(options); switch (partId) {
this._initialize(); case "character":
context.characters = this.context.actors.filter((actor) => !actor.isArmy);
break;
case "army":
context.armies = this.context.actors.filter((actor) => actor.isArmy);
break;
}
return context;
} }
/** /**
* Refresh data (used from socket) * Prepare an array of form header tabs.
* @returns {Record<string, Partial<ApplicationTab>>}
*/ */
async refresh() { getTabs() {
if (!game.user.isGM) { const tabs = {
character: { id: "character", group: "view", icon: "fa-solid fa-tag", label: "REGION.SECTIONS.identity" },
army: { id: "army", group: "view", icon: "fa-solid fa-shapes", label: "REGION.SECTIONS.shapes" },
}
for (const v of Object.values(tabs)) {
v.active = this.tabGroups[v.group] === v.id;
v.cssClass = v.active ? "active" : "";
}
return tabs;
}
/**
* Handle dropped data on the Actor sheet
* @param {DragEvent} event The originating DragEvent
*/
async #onDrop(event) {
if (!this.options.window.editable) {
return; return;
} }
this._initialize();
this.render(false); const json = event.dataTransfer.getData("text/plain");
if (!json) {
return;
}
const data = JSON.parse(json);
if (!data || data.type !== "Actor" || !data.uuid || !!this.context.actors.find((a) => a.uuid === data.uuid)) {
return;
}
const actor = fromUuidSync(data.uuid);
if (!actor) {
return;
}
// Switch view to current character type
if (actor.isArmy) {
this.changeTab("army", "view");
}
else {
this.changeTab("character", "view");
}
this.context.actors.push(actor);
return this.saveActorsIds();
}
/** required for updating via our socket implementation game.l5r5e.HelpersL5r5e.refreshLocalAndSocket("l5r5e-gm-monitor")*/
async refresh() {
this.render();
} }
/** /**
* Initialize the values * Save the actors ids in setting
* @private * @private
*/ */
_initialize() { async saveActorsIds() {
return game.settings.set(
CONFIG.l5r5e.namespace,
"gm-monitor-actors",
this.context.actors.map((a) => a.uuid)
);
}
#initialize() {
let actors; let actors;
const uuidList = game.settings.get(CONFIG.l5r5e.namespace, "gm-monitor-actors"); const uuidList = game.settings.get(CONFIG.l5r5e.namespace, "gm-monitor-actors");
if (uuidList.length > 0) { if (uuidList.length > 0) {
@@ -109,12 +278,12 @@ export class GmMonitor extends FormApplication {
} }
return doc; return doc;
}) })
.filter(a => !!a); // skip null .filter(actor => !!actor); // skip null
} else { } else {
// If empty add pc with owner // If empty add pc with owner
actors = game.actors.filter((actor) => actor.type === "character" && actor.hasPlayerOwnerActive); actors = game.actors.filter((actor) => actor.type === "character" && actor.hasPlayerOwnerActive);
this._saveActorsIds(); this.saveActorsIds();
} }
// Sort by name asc // Sort by name asc
@@ -122,287 +291,328 @@ export class GmMonitor extends FormApplication {
return a.name.localeCompare(b.name); return a.name.localeCompare(b.name);
}); });
this.object.actors = actors; this.context.actors = actors;
this.#hooks.push({
hook: "updateActor",
fn: Hooks.on("updateActor", (actor) => this.#onUpdateActor(actor))
});
this.#hooks.push({
hook: "updateSetting",
fn: Hooks.on("updateSetting", (actor) => this.#onUpdateSetting(actor))
});
}
/**
* Switch between the available views in sequence
*/
static #rotateViewTab() {
const tabArray = Object.values(this.getTabs());
const activeTabIndex = tabArray.findIndex((tab) => tab.active);
const nextTabIndex = activeTabIndex + 1 < tabArray.length ? activeTabIndex + 1 : 0;
this.changeTab(tabArray[nextTabIndex].id, tabArray[nextTabIndex].group)
} }
/** /**
* Add selected token on monitor if not already present * Add selected token on monitor if not already present
*/ */
#addSelectedTokens() { static #addSelectedTokens() {
if (canvas.tokens.controlled.length > 0) { if (canvas.tokens.controlled.length > 0) {
const actors2Add = canvas.tokens.controlled const actors2Add = canvas.tokens.controlled
.map(t => t.actor) .map(t => t.actor)
.filter(t => !!t && !this.object.actors.find((a) => a.uuid === t.uuid)); .filter(t => !!t && !this.context.actors.find((a) => a.uuid === t.uuid));
if (actors2Add.length < 1) { if (actors2Add.length < 1) {
return; return;
} }
this.object.actors = [ this.context.actors = [
...this.object.actors, ...this.context.actors,
...actors2Add ...actors2Add
]; ];
this._saveActorsIds().then(() => this.render(false)); this.saveActorsIds();
} }
} }
/** /**
* Prevent non GM to render this windows * Update baseValue based on the type of event
* @override * @param {Int} baseValue The Base value we can to modify
* @param {Int} whichButton The type of click made
*/ */
render(force = false, options = {}) { static #newValue(baseValue, whichButton) {
if (!game.user.isGM) { switch (whichButton) {
return false; case 0: //Left click
return Math.max(0, baseValue + 1);
case 1: //Middle click
return 0;
case 2: //Right click
return Math.max(0, baseValue - 1);
} }
return super.render(force, options);
} }
/** /**
* Construct and return the data object used to render the HTML template for this form application. * @param {HTMLElement} target Html target to get actor information from
* @param options
* @return {Object}
* @override
*/ */
async getData(options = null) { static async #getActorValidated(target) {
return { const uuid = $(target).data("actor-uuid");
...(await super.getData(options)), if (!uuid) {
data: { console.warn("L5R5E | GMM | actor uuid not set", type);
...this.object, return {isValid: false, actor: null};
actors: this.object.actors.filter((a) => (this.object.view === "armies" ? a.isArmy : !a.isArmy)), }
}, const actor = await fromUuid(uuid);
}; if (!actor) {
console.warn("L5R5E | GMM | Actor not found", type);
return {isValid: false, actor: null};
}
return {isValid:true, actor: actor};
} }
/** /**
* Listen to html elements * @param {PointerEvent} event The originating click event
* @param {jQuery} html HTML content of the sheet. * @param {HTMLElement} target The capturing HTML element which defined a [data-action]
* @override
*/ */
activateListeners(html) { static async #modifyCasualties(event, target) {
super.activateListeners(html); const {isValid, actor} = await GmMonitor.#getActorValidated(target);
if (!isValid) {
if (!game.user.isGM) {
return; return;
} }
// Commons const casualties_strength = actor.system.battle_readiness.casualties_strength.value;
game.l5r5e.HelpersL5r5e.commonListeners(html); return actor.update({
system: {
battle_readiness: {
casualties_strength: {
value: GmMonitor.#newValue(casualties_strength, event.button),
}
},
},
});
}
// Delete /**
html.find(`.actor-remove-control`).on("click", this._removeActor.bind(this)); * @param {PointerEvent} event The originating click event
* @param {HTMLElement} target The capturing HTML element which defined a [data-action]
*/
static async #modifyPanic(event, target) {
const {isValid, actor} = await GmMonitor.#getActorValidated(target);
if (!isValid) {
return;
}
// Add/Subtract const panic_discipline = actor.system.battle_readiness.panic_discipline.value;
html.find(`.actor-modify-control`).on("mousedown", this._modifyActor.bind(this)); return actor.update({
system: {
battle_readiness: {
panic_discipline: {
value: GmMonitor.#newValue(panic_discipline, event.button),
}
},
},
});
}
// Tooltips /**
game.l5r5e.HelpersL5r5e.popupManager(html.find(".actor-infos-control"), async (event) => { * @param {PointerEvent} event The originating click event
const type = $(event.currentTarget).data("type"); * @param {HTMLElement} target The capturing HTML element which defined a [data-action]
if (!type) { */
return; static async #togglePrepared(event, target) {
} const {isValid, actor} = await GmMonitor.#getActorValidated(target);
if (type === "text") { if (!isValid) {
return $(event.currentTarget).data("text"); return;
} }
const uuid = $(event.currentTarget).data("actor-uuid"); return actor.update({
if (!uuid) { system: {
return; prepared: !actor.system.prepared
}
const actor = this.object.actors.find((a) => a.uuid === uuid);
if (!actor) {
return;
}
switch (type) {
case "armors":
return this._getTooltipArmors(actor);
case "weapons":
return this._getTooltipWeapons(actor);
case "global":
return actor.isArmy ? this._getTooltipArmiesGlobal(actor) : this._getTooltipGlobal(actor);
} }
}); });
} }
/** /**
* Handle dropped data on the Actor sheet * @param {PointerEvent} event The originating click event
* @param {DragEvent} event * @param {HTMLElement} target The capturing HTML element which defined a [data-action]
*/ */
async _onDrop(event) { static async #changeStance(event, target) {
// *** Everything below here is only needed if the sheet is editable *** const {isValid, actor} = await GmMonitor.#getActorValidated(target);
if (!this.isEditable) { if (!isValid) {
return; return;
} }
const json = event.dataTransfer.getData("text/plain"); let stanceIdx = CONFIG.l5r5e.stances.findIndex((stance) => stance === actor.system.stance) + (event.button === 0 ? 1 : -1);
if (!json) {
return;
}
const data = JSON.parse(json);
if (!data || data.type !== "Actor" || !data.uuid || !!this.object.actors.find((a) => a.uuid === data.uuid)) {
return;
}
const actor = fromUuidSync(data.uuid);
if (!actor) {
return;
}
// Switch view to current character type
this.object.view = actor.isArmy ? "armies" : "characters";
this.object.actors.push(actor);
return this._saveActorsIds();
}
/**
* Save the actors ids in settings
* @return {Promise<*>}
* @private
*/
async _saveActorsIds() {
return game.settings.set(
CONFIG.l5r5e.namespace,
"gm-monitor-actors",
this.object.actors.map((a) => a.uuid)
);
}
/**
* Remove the link to a property for the current item
* @param {Event} event
* @return {Promise<void>}
* @private
*/
async _removeActor(event) {
event.preventDefault();
event.stopPropagation();
const uuid = $(event.currentTarget).data("actor-uuid");
if (!uuid) {
return;
}
this.object.actors = this.object.actors.filter((a) => a.uuid !== uuid);
return this._saveActorsIds();
}
/**
* Add or subtract fatigue/strife/void/casualties/panic
* @param event
* @return {Promise<void>}
* @private
*/
async _modifyActor(event) {
event.preventDefault();
event.stopPropagation();
const type = $(event.currentTarget).data("type");
if (!type) {
console.warn("L5R5E | GMM | type not set", type);
return;
}
const uuid = $(event.currentTarget).data("actor-uuid");
if (!uuid) {
console.warn("L5R5E | GMM | actor uuid not set", type);
return;
}
const actor = fromUuidSync(uuid);
if (!actor) {
console.warn("L5R5E | GMM | Actor not found", type);
return;
}
// Mouse bt : middle = 0, left +1, right -1
const add = event.which === 2 ? -999 : event.which === 1 ? 1 : -1;
// Stance
let stanceIdx = CONFIG.l5r5e.stances.findIndex((s) => s === actor.system.stance) + (event.which === 1 ? 1 : -1);
if (stanceIdx < 0) { if (stanceIdx < 0) {
stanceIdx = CONFIG.l5r5e.stances.length - 1; stanceIdx = CONFIG.l5r5e.stances.length - 1;
} else if (stanceIdx > CONFIG.l5r5e.stances.length - 1) { } else if (stanceIdx > CONFIG.l5r5e.stances.length - 1) {
stanceIdx = 0; stanceIdx = 0;
} }
const updateData = {}; return actor.update({
switch (type) { system: {
// *** Characters *** stance: CONFIG.l5r5e.stances[stanceIdx]
case "fatigue": },
updateData["system.fatigue.value"] = Math.max(0, actor.system.fatigue.value + add); });
break;
case "strife":
updateData["system.strife.value"] = Math.max(0, actor.system.strife.value + add);
break;
case "void_points":
updateData["system.void_points.value"] = Math.min(
actor.system.void_points.max,
Math.max(0, actor.system.void_points.value + add)
);
break;
case "stance":
updateData["system.stance"] = CONFIG.l5r5e.stances[stanceIdx];
break;
case "prepared":
updateData["system.prepared"] = !actor.system.prepared;
break;
// *** Armies ***
case "casualties":
updateData["system.battle_readiness.casualties_strength.value"] = Math.max(
0,
actor.system.battle_readiness.casualties_strength.value + add
);
break;
case "panic":
updateData["system.battle_readiness.panic_discipline.value"] = Math.max(
0,
actor.system.battle_readiness.panic_discipline.value + add
);
break;
default:
console.warn("L5R5E | GMM | Unsupported type", type);
break;
}
if (!foundry.utils.isEmpty(updateData)) {
await actor.update(updateData);
this.render(false);
}
} }
/** /**
* @param {PointerEvent} event The originating click event
* @param {HTMLElement} target The capturing HTML element which defined a [data-action]
*/
static async #modifyFatigue(event, target) {
const {isValid, actor} = await GmMonitor.#getActorValidated(target);
if (!isValid) {
return;
}
const fatigue = actor.system.fatigue.value;
return actor.update({
system: {
fatigue: {
value: GmMonitor.#newValue(fatigue, event.button)
}
}
});
}
/**
* @param {PointerEvent} event The originating click event
* @param {HTMLElement} target The capturing HTML element which defined a [data-action]
*/
static async #modifyStrife(event, target) {
const {isValid, actor} = await GmMonitor.#getActorValidated(target);
if (!isValid) {
return;
}
const strife = actor.system.strife.value;
return actor.update({
system: {
strife: {
value: GmMonitor.#newValue(strife, event.button),
},
},
});
}
/**
* @param {PointerEvent} event The originating click event
* @param {HTMLElement} target The capturing HTML element which defined a [data-action]
*/
static async #modifyVoidPoint(event, target) {
const {isValid, actor} = await GmMonitor.#getActorValidated(target);
if (!isValid) {
return;
}
const void_points = actor.system.void_points.value;
const void_points_max = actor.system.void_points.max;
return actor.update({
system: {
void_points: {
value: Math.min(
void_points_max,
GmMonitor.#newValue(void_points, event.button)
),
},
},
});
}
/**
* @param {PointerEvent} event The originating click event
* @param {HTMLElement} target The capturing HTML element which defined a [data-action]
*/
static async #removeActor(event, target) {
const uuid = $(target).data("actor-uuid");
if (!uuid) {
return;
}
this.context.actors = this.context.actors.filter((actor) => actor.uuid !== uuid);
return this.saveActorsIds();
}
/**
* Get armors information for this actor
* @param {ActorL5r5e} actor
* @return {string}
* @private
*/
async #getTooltipArmors(actor) {
// Equipped Armors
const armors = actor.items
.filter((item) => item.type === "armor" && item.system.equipped)
.map(
(item) =>
item.name +
` (<i class="fas fa-tint">${item.system.armor.physical}</i>` +
` / <i class="fas fa-bolt">${item.system.armor.supernatural}</i>)`
);
// *** Template ***
return foundry.applications.handlebars.renderTemplate(`${CONFIG.l5r5e.paths.templates}gm/monitor/tooltips/armors.html`, {
armors,
});
}
/**
* Get weapons information for this actor
* @param {ActorL5r5e} actor
* @return {string}
* @private
*/
async #getTooltipWeapons(actor) {
const display = (weapon) => {
return (
weapon.name +
` (<i class="fas fa-arrows-alt-h"> ${weapon.system.range}</i>` +
` / <i class="fas fa-tint"> ${weapon.system.damage}</i>` +
` / <i class="fas fa-skull"> ${weapon.system.deadliness}</i>)`
);
};
// Readied Weapons
const equippedWeapons = actor.items.filter((item) => item.type === "weapon" && item.system.equipped);
const readied = equippedWeapons
.filter((weapon) => !!weapon.system.readied)
.map((weapon) => display(weapon));
// Equipped Weapons
const sheathed = equippedWeapons
.filter((weapon) => !weapon.system.readied)
.map((weapon) => display(weapon));
// *** Template ***
return foundry.applications.handlebars.renderTemplate(`${CONFIG.l5r5e.paths.templates}gm/monitor/tooltips/weapons.html`, {
readied,
sheathed,
});
}
/**
* Get tooltips information for this character * Get tooltips information for this character
* @param {ActorL5r5e} actor * @param {ActorL5r5e} actor
* @return {string} * @return {string}
* @private * @private
*/ */
async _getTooltipGlobal(actor) { async #getTooltipGlobal(actor) {
const actorData = (await actor.sheet?.getData()?.data) || actor; const actorData = (await actor.sheet?.getData()?.data) || actor;
// Peculiarities // Peculiarities
const pec = actor.items.filter((e) => e.type === "peculiarity"); const Peculiarities = actor.items.filter((e) => e.type === "peculiarity");
const adv = pec const advantages = Peculiarities
.filter((e) => ["distinction", "passion"].includes(e.system.peculiarity_type)) .filter((item) => ["distinction", "passion"].includes(item.system.peculiarity_type))
.map((e) => e.name) .map((item) => item.name)
.join(", "); .join(", ");
const dis = pec const disadvantages = Peculiarities
.filter((e) => ["adversity", "anxiety"].includes(e.system.peculiarity_type)) .filter((item) => ["adversity", "anxiety"].includes(item.system.peculiarity_type))
.map((e) => e.name) .map((item) => item.name)
.join(", "); .join(", ");
// *** Template *** // *** Template ***
return renderTemplate(`${CONFIG.l5r5e.paths.templates}gm/monitor-tooltips/global.html`, { return foundry.applications.handlebars.renderTemplate(`${CONFIG.l5r5e.paths.templates}gm/monitor/tooltips/global.html`, {
actorData: actorData, actorData: actorData,
advantages: adv, advantages: advantages,
disadvantages: dis, disadvantages: disadvantages,
suffix: actorData.system.template === "pow" ? "_pow" : "", suffix: actorData.system.template === "pow" ? "_pow" : "",
actor_type: actor.type, actor_type: actor.type,
}); });
@@ -414,68 +624,39 @@ export class GmMonitor extends FormApplication {
* @return {string} * @return {string}
* @private * @private
*/ */
async _getTooltipArmiesGlobal(actor) { async #getTooltipArmiesGlobal(actor) {
const actorData = (await actor.sheet?.getData()?.data) || actor; const actorData = (await actor.sheet?.getData()?.data) || actor;
// *** Template *** // *** Template ***
return renderTemplate(`${CONFIG.l5r5e.paths.templates}gm/monitor-tooltips/global-armies.html`, { return foundry.applications.handlebars.renderTemplate(`${CONFIG.l5r5e.paths.templates}gm/monitor/tooltips/global-armies.html`, {
actorData: actorData, actorData: actorData,
}); });
} }
/** /**
* Get weapons information for this actor * @param {ActorL5r5e} actor The actor that is being updated
* @param {ActorL5r5e} actor
* @return {string}
* @private
*/ */
async _getTooltipWeapons(actor) { #onUpdateActor(actor) {
const display = (e) => { if (this.context.actors.includes(actor)) {
return ( this.render(false);
e.name + }
` (<i class="fas fa-arrows-alt-h"> ${e.system.range}</i>` +
` / <i class="fas fa-tint"> ${e.system.damage}</i>` +
` / <i class="fas fa-skull"> ${e.system.deadliness}</i>)`
);
};
// Readied Weapons
const readied = actor.items
.filter((e) => e.type === "weapon" && e.system.equipped && !!e.system.readied)
.map((e) => display(e));
// Equipped Weapons
const sheathed = actor.items
.filter((e) => e.type === "weapon" && e.system.equipped && !e.system.readied)
.map((e) => display(e));
// *** Template ***
return renderTemplate(`${CONFIG.l5r5e.paths.templates}gm/monitor-tooltips/weapons.html`, {
readied,
sheathed,
});
} }
/** /**
* Get armors information for this actor * @param {Setting} setting The setting that is being updated
* @param {ActorL5r5e} actor
* @return {string}
* @private
*/ */
async _getTooltipArmors(actor) { #onUpdateSetting(setting) {
// Equipped Armors switch (setting.key) {
const armors = actor.items case "l5r5e.gm-monitor-actors":
.filter((e) => e.type === "armor" && e.system.equipped) this.render(false);
.map( break;
(e) => case "l5r5e.initiative-prepared-character":
e.name + case "l5r5e.initiative-prepared-adversary":
` (<i class="fas fa-tint">${e.system.armor.physical}</i>` + case "l5r5e.initiative-prepared-minion":
` / <i class="fas fa-bolt">${e.system.armor.supernatural}</i>)` this.render(false);
); break;
default:
// *** Template *** return;
return renderTemplate(`${CONFIG.l5r5e.paths.templates}gm/monitor-tooltips/armors.html`, { }
armors,
});
} }
} }

View File

@@ -1,41 +1,100 @@
/** const HandlebarsApplicationMixin = foundry.applications.api.HandlebarsApplicationMixin;
* L5R GM Toolbox dialog const ApplicationV2 = foundry.applications.api.ApplicationV2;
* @extends {FormApplication}
*/ export class GmToolbox extends HandlebarsApplicationMixin(ApplicationV2) {
export class GmToolbox extends FormApplication { /** @override ApplicationV2 */
/** static get DEFAULT_OPTIONS() { return {
* Settings id: "l5r5e-gm-toolbox",
*/ window: {
object = {}; contentClasses: ["l5r5e", "gm-toolbox", "faded-ui"],
title: "l5r5e.gm.toolbox.title",
minimizable: true,
},
position: {
width: "auto",
height: "auto"
},
actions: {
open_gm_monitor: GmToolbox.#openGmMonitor,
toggle_hide_difficulty: GmToolbox.#onToggleHideDifficulty,
// Buttons map (0: left, 1: middle, 2: right, 3: extra 1, 4: extra 2)
// Foundry v13 use middle (1) for popup and currently not bind it for custom
// See : https://github.com/foundryvtt/foundryvtt/issues/12531
change_difficulty: {
buttons: [0, 1, 2],
handler: GmToolbox.#onChangeDifficulty
},
reset_void: {
buttons: [0, 1, 2, 3, 4],
handler: GmToolbox.#onResetVoid
},
sleep: {
buttons: [0, 1, 2, 3, 4],
handler: GmToolbox.#onSleep
},
scene_end: {
buttons: [0, 1, 2, 3, 4],
handler: GmToolbox.#onSceneEnd
},
}
}};
/** @override HandlebarsApplicationMixin */
static PARTS = {
main: {
id: "gm-tool-content",
template: "systems/l5r5e/templates/" + "gm/gm-toolbox.html"
}
};
/** /**
* Assign the default options * hooks we act upon, saved since we need to remove them when this window is not open
* @override
*/ */
static get defaultOptions() { #hooks = [];
const x = $(window).width();
const y = $(window).height(); constructor() {
return foundry.utils.mergeObject(super.defaultOptions, { super();
id: "l5r5e-gm-toolbox", this.#hooks.push({
classes: ["l5r5e", "gm-toolbox"], hook: "updateSetting",
template: CONFIG.l5r5e.paths.templates + "gm/gm-toolbox.html", fn: Hooks.on("updateSetting", (setting) => this.#onUpdateSetting(setting))
title: game.i18n.localize("l5r5e.gm.toolbox.title"),
left: x - 630,
top: y - 98,
closeOnSubmit: false,
submitOnClose: false,
submitOnChange: true,
minimizable: false,
}); });
} }
/** @override ApplicationV2*/
async _prepareContext() {
return {
difficulty: game.settings.get(CONFIG.l5r5e.namespace, "initiative-difficulty-value"),
difficultyHidden: game.settings.get(CONFIG.l5r5e.namespace, "initiative-difficulty-hidden"),
};
}
/** /**
* Constructor * The ApplicationV2 always adds the close button so just remove it when redering the frame
* @param {ApplicationOptions} options * @override ApplicationV2
*/ */
constructor(options = {}) { async _renderFrame(options) {
super(options); const frame = await super._renderFrame(options);
this._initialize(); $(frame).find('button[data-action="close"]').remove();
return frame;
}
/**
* The ApplicationV2 always adds the close button so just remove it when redering the frame
* @override ApplicationV2
*/
_onFirstRender(context, options) {
//const x = $(window).width();
const y = $(window).height();
options.position.top = y - 220;
options.position.left = 220; //x - 630;
}
/**
* The GM Toolbox should not be removed when toggling the main menu with the esc key etc.
* @override ApplicationV2
*/
async close(options) {
return Promise.resolve(this);
} }
/** /**
@@ -45,210 +104,156 @@ export class GmToolbox extends FormApplication {
if (!game.user.isGM) { if (!game.user.isGM) {
return; return;
} }
this._initialize();
this.render(false); this.render(false);
} }
/** static #openGmMonitor() {
* Initialize the values const app = foundry.applications.instances.get("l5r5e-gm-monitor")
* @private if (app) {
*/ app.close();
_initialize() {
this.object = {
difficulty: game.settings.get(CONFIG.l5r5e.namespace, "initiative-difficulty-value"),
difficultyHidden: game.settings.get(CONFIG.l5r5e.namespace, "initiative-difficulty-hidden"),
};
}
/**
* Do not close this dialog
* @override
*/
async close(options = {}) {
// TODO better implementation needed : see KeyboardManager._onEscape(event, up, modifiers)
// This windows is always open, so esc key is stuck at step 2 : Object.keys(ui.windows).length > 0
// Case 3 (GM) - release controlled objects
if (canvas?.ready && game.user.isGM && Object.keys(canvas.activeLayer.controlled).length) {
canvas.activeLayer.releaseAll();
} else { } else {
// Case 4 - toggle the main menu new game.l5r5e.GmMonitor().render(true);
ui.menu.toggle();
} }
} }
/** /**
* Prevent non GM to render this windows * @param {PointerEvent} event The originating click event
* @override
*/ */
render(force = false, options = {}) { static #onChangeDifficulty(event) {
if (!game.user.isGM) { let difficulty = game.settings.get(CONFIG.l5r5e.namespace, "initiative-difficulty-value");
switch (event.button) {
case 0: // left click
difficulty = Math.min(9, difficulty + 1);
break;
case 1: // middle click
difficulty = 2;
break;
case 2: // right click
difficulty = Math.max(0, difficulty - 1);
break;
}
game.settings.set(CONFIG.l5r5e.namespace, "initiative-difficulty-value", difficulty);
}
static #onToggleHideDifficulty() {
const hiddenSetting = game.settings.get(CONFIG.l5r5e.namespace, "initiative-difficulty-hidden")
game.settings.set(CONFIG.l5r5e.namespace, "initiative-difficulty-hidden", !hiddenSetting);
}
/**
* @param {Boolean} allActors
* @param {ActorL5r5e} actor
* @returns {Boolean}
*/
static #updatableCharacter(allActors, actor) {
if (!actor.isCharacterType) {
return false; return false;
} }
this.position.width = "auto";
this.position.height = "auto";
return super.render(force, options);
}
/** if (allActors) {
* Remove the close button return true;
* @override
*/
_getHeaderButtons() {
return [];
}
/**
* Construct and return the data object used to render the HTML template for this form application.
* @param options
* @return {Object}
* @override
*/
async getData(options = null) {
return {
...(await super.getData(options)),
data: this.object,
};
}
/**
* Listen to html elements
* @param {jQuery} html HTML content of the sheet.
* @override
*/
activateListeners(html) {
super.activateListeners(html);
if (!game.user.isGM) {
return;
} }
return actor.isCharacter && actor.hasPlayerOwnerActive
// Modify difficulty hidden
html.find(`.difficulty_hidden`).on("click", (event) => {
event.preventDefault();
event.stopPropagation();
this.object.difficultyHidden = !this.object.difficultyHidden;
game.settings
.set(CONFIG.l5r5e.namespace, "initiative-difficulty-hidden", this.object.difficultyHidden)
.then(() => this.submit());
});
// Modify difficulty (TN)
html.find(`.difficulty`).on("mousedown", (event) => {
event.preventDefault();
event.stopPropagation();
switch (event.which) {
case 1:
// left clic - add 1
this.object.difficulty = Math.min(9, this.object.difficulty + 1);
break;
case 2:
// middle clic - reset to 2
this.object.difficulty = 2;
break;
case 3:
// right clic - minus 1
this.object.difficulty = Math.max(0, this.object.difficulty - 1);
break;
}
game.settings.set(CONFIG.l5r5e.namespace, "initiative-difficulty-value", this.object.difficulty).then(() => this.submit());
});
// Scene End, Sleep, Void Pts
html.find(`.gm_actor_updates`).on("mousedown", this._updatesActors.bind(this));
// GM Monitor
html.find(`.gm_monitor`).on("click", (event) => {
event.preventDefault();
event.stopPropagation();
const app = Object.values(ui.windows).find((e) => e.id === "l5r5e-gm-monitor");
if (app) {
app.close();
} else {
new game.l5r5e.GmMonitor().render(true);
}
});
} }
/** /**
* This method is called upon form submission after form data is validated * @param {Boolean} allActors
* @param event The initial triggering submission event * @param {String} type
* @param formData The object of validated form data with which to update the object
* @returns A Promise which resolves once the update operation has completed
* @override
*/ */
async _updateObject(event, formData) { static #uiNotification(allActors, type) {
this.render(false); ui.notifications.info(
` <i class="fas fa-user${allActors ? "s" : ""}"></i> ` + game.i18n.localize(`l5r5e.gm.toolbox.${type}_info`)
);
} }
/** /**
* Update all actors * @param {PointerEvent} event The originating click event
* @param {Event} event
* @private
*/ */
async _updatesActors(event) { static async #onResetVoid(event) {
if (!game.user.isGM) { const allActors = event.button !== 0;
return;
}
// Left clic: assigned characters only, others: all actors
const isAll = event.which !== 1;
const type = $(event.currentTarget).data("type");
for await (const actor of game.actors.contents) { for await (const actor of game.actors.contents) {
// Only characters types if (!GmToolbox.#updatableCharacter(allActors, actor)) {
if (!actor.isCharacterType) {
continue; continue;
} }
// Manage left/right button
if (!isAll && (!actor.isCharacter || !actor.hasPlayerOwnerActive)) {
continue;
}
switch (type) {
case "sleep":
// Remove 'water x2' fatigue points
actor.system.fatigue.value = Math.max(
0,
actor.system.fatigue.value - Math.ceil(actor.system.rings.water * 2)
);
break;
case "scene_end":
// If more than half the value => roundup half conflit & fatigue
actor.system.fatigue.value = Math.min(
actor.system.fatigue.value,
Math.ceil(actor.system.fatigue.max / 2)
);
actor.system.strife.value = Math.min(
actor.system.strife.value,
Math.ceil(actor.system.strife.max / 2)
);
break;
case "reset_void":
actor.system.void_points.value = Math.ceil(actor.system.void_points.max / 2);
break;
}
await actor.update({ await actor.update({
system: { system: {
fatigue: {
value: actor.system.fatigue.value,
},
strife: {
value: actor.system.strife.value,
},
void_points: { void_points: {
value: actor.system.void_points.value, value: Math.ceil(actor.system.void_points.max / 2),
}, },
}, },
}); });
} }
ui.notifications.info( GmToolbox.#uiNotification(allActors, "reset_void");
` <i class="fas fa-user${isAll ? "s" : ""}"></i> ` + game.i18n.localize(`l5r5e.gm.toolbox.${type}_info`) }
);
/**
* @param {PointerEvent} event The originating click event
*/
static async #onSleep(event) {
const allActors = event.button !== 0;
for await (const actor of game.actors.contents) {
if (!GmToolbox.#updatableCharacter(allActors, actor)) {
continue;
}
await actor.update({
system: {
fatigue: {
value: Math.max(0,
actor.system.fatigue.value - Math.ceil(actor.system.rings.water * 2)
),
}
},
});
await actor.removeConditions(new Set(["exhausted"]));
}
GmToolbox.#uiNotification(allActors, "sleep");
}
/**
* @param {PointerEvent} event The originating click event
*/
static async #onSceneEnd(event) {
const allActors = event.button !== 0;
for await (const actor of game.actors.contents) {
if (!GmToolbox.#updatableCharacter(allActors, actor)
|| actor.statuses.has("exhausted")) {
continue;
}
await actor.update({
system: {
fatigue: {
value: Math.min(
actor.system.fatigue.value,
Math.ceil(actor.system.fatigue.max / 2)
)
},
strife: {
value: Math.min(
actor.system.strife.value,
Math.ceil(actor.system.strife.max / 2)
)
}
}
});
}
GmToolbox.#uiNotification(allActors, "scene_end");
}
/**
* @param {Setting} setting The setting that is being updated
*/
async #onUpdateSetting(setting) {
switch (setting.key) {
case "l5r5e.initiative-difficulty-value":
case "l5r5e.initiative-difficulty-hidden":
this.render(false);
break;
default:
return;
}
} }
} }

View File

@@ -1,68 +0,0 @@
/**
* L5R Help dialog
* @extends {FormApplication}
*/
export class HelpDialog extends FormApplication {
/**
* Payload Object
*/
object = {};
/**
* Assign the default options
* @override
*/
static get defaultOptions() {
return foundry.utils.mergeObject(super.defaultOptions, {
id: "l5r5e-help-dialog",
classes: ["l5r5e", "help-dialog"],
template: CONFIG.l5r5e.paths.templates + "help/help-dialog.html",
title: game.i18n.localize("l5r5e.logo.title"),
width: 400,
height: 200,
closeOnSubmit: false,
submitOnClose: false,
submitOnChange: false,
});
}
/**
* Construct and return the data object used to render the HTML template for this form application.
* @param options
* @return {Object}
*/
async getData(options = null) {
return {
...(await super.getData(options)),
};
}
/**
* Listen to html elements
* @param {jQuery} html HTML content of the sheet.
* @override
*/
activateListeners(html) {
super.activateListeners(html);
// Buttons
html.find(`button`).on("click", (event) => {
event.preventDefault();
event.stopPropagation();
const name = $(event.currentTarget).data("type");
ui.notifications.info(`l5r5e.logo.${name}.info`, {localize: true});
window.open(game.i18n.localize(`l5r5e.logo.${name}.link`), "_blank");
});
}
/**
* This method is called upon form submission after form data is validated
* @param event {Event} The initial triggering submission event
* @param formData {Object} The object of validated form data with which to update the object
* @returns {Promise} A Promise which resolves once the update operation has completed
* @override
*/
_updateObject(event, formData) {
// Nothing, but needed to be override
}
}

View File

@@ -1,3 +1,5 @@
import { L5r5ePopupManager } from './misc/l5r5e-popup-manager.js';
/** /**
* Extends the actor to process special things from L5R. * Extends the actor to process special things from L5R.
*/ */
@@ -187,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
@@ -382,7 +384,7 @@ export class HelpersL5r5e {
const title = game.i18n.format("DOCUMENT.Create", { type: game.i18n.localize("Item") }); const title = game.i18n.format("DOCUMENT.Create", { type: game.i18n.localize("Item") });
// Render the template // Render the template
const html = await renderTemplate(`${CONFIG.l5r5e.paths.templates}dialogs/choose-item-type-dialog.html`, { const html = await foundry.applications.handlebars.renderTemplate(`${CONFIG.l5r5e.paths.templates}dialogs/choose-item-type-dialog.html`, {
type: null, type: null,
types: types.reduce((obj, t) => { types: types.reduce((obj, t) => {
const label = CONFIG.Item.typeLabels[t] ?? t; const label = CONFIG.Item.typeLabels[t] ?? t;
@@ -401,12 +403,22 @@ export class HelpersL5r5e {
}); });
} }
static getApplication(appId) {
const app = Object.values(ui.windows).find((e) => e.id === appId);
if(app)
return app;
const appV2 = foundry.applications.instances.get(appId)
if(appV2)
return appV2;
}
/** /**
* Notify Applications using Difficulty settings that the values was changed * Notify Applications using Difficulty settings that the values was changed
*/ */
static notifyDifficultyChange() { static notifyDifficultyChange() {
["l5r5e-dice-picker-dialog", "l5r5e-gm-toolbox"].forEach((appId) => { ["l5r5e-dice-picker-dialog"].forEach((appId) => {
const app = Object.values(ui.windows).find((e) => e.id === appId); const app = this.getApplication(appId);
if (app && typeof app.refresh === "function") { if (app && typeof app.refresh === "function") {
app.refresh(); app.refresh();
} }
@@ -419,9 +431,7 @@ export class HelpersL5r5e {
*/ */
static refreshLocalAndSocket(appId) { static refreshLocalAndSocket(appId) {
game.l5r5e.sockets.refreshAppId(appId); game.l5r5e.sockets.refreshAppId(appId);
Object.values(ui.windows) this.getApplication(appId)?.refresh();
.find((e) => e.id === appId)
?.refresh();
} }
/** /**
@@ -501,13 +511,16 @@ export class HelpersL5r5e {
}); });
// Item detail tooltips // Item detail tooltips
this.popupManager(html.find(".l5r5e-tooltip"), async (event) => { new L5r5ePopupManager(
const item = await HelpersL5r5e.getEmbedItemByEvent(event, actor); html.find(".l5r5e-tooltip"),
if (!item) { async (event) => {
return; const item = await HelpersL5r5e.getEmbedItemByEvent(event, actor);
if (!item) {
return;
}
return await item.renderTextTemplate();
} }
return await item.renderTextTemplate(); );
});
// Open actor sheet // Open actor sheet
html.find(".open-sheet-from-uuid").on("click", async (event) => { html.find(".open-sheet-from-uuid").on("click", async (event) => {
@@ -526,52 +539,6 @@ export class HelpersL5r5e {
}); });
} }
/**
* Do the Popup for the selected element
* @param {Selector} selector HTML Selector
* @param {function} callback Callback function(event), must return the html to display
*/
static popupManager(selector, callback) {
const popupPosition = (event, popup) => {
let left = +event.clientX + 60,
top = +event.clientY;
let maxY = window.innerHeight - popup.outerHeight();
if (top > maxY) {
top = maxY - 10;
}
let maxX = window.innerWidth - popup.outerWidth();
if (left > maxX) {
left -= popup.outerWidth() + 100;
}
return { left: left + "px", top: top + "px", visibility: "visible" };
};
selector
.on("mouseenter", async (event) => {
$(document.body).find("#l5r5e-tooltip-ct").remove();
const tpl = await callback(event);
if (!tpl) {
return;
}
$(document.body).append(
`<div id="l5r5e-tooltip-ct" class="l5r5e-tooltip l5r5e-tooltip-ct">${tpl}</div>`
);
})
.on("mousemove", (event) => {
const popup = $(document.body).find("#l5r5e-tooltip-ct");
if (popup) {
popup.css(popupPosition(event, popup));
}
})
.on("mouseleave", () => {
$(document.body).find("#l5r5e-tooltip-ct").remove();
}); // tooltips
}
/** /**
* Get a Item from a Actor Sheet * Get a Item from a Actor Sheet
* @param {Event} event HTML Event * @param {Event} event HTML Event

View File

@@ -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
*/ */
@@ -38,20 +52,15 @@ export default class HooksL5r5e {
} }
}); });
// For some reasons, not always really ready, so wait a little // For some reason, not always really ready, so wait a little
await new Promise((r) => setTimeout(r, 2000)); await new Promise((r) => setTimeout(r, 2000));
// Settings TN and EncounterType // Settings TN and EncounterType
if (game.user.isGM) { if (game.user.isGM) {
new game.l5r5e.GmToolbox().render(true); new game.l5r5e.GmToolbox().render(true);
} }
// ***** UI ***** // ***** UI *****
// Open Help dialog on clic on logo
$("#logo")
.on("click", () => new game.l5r5e.HelpDialog().render(true))
.prop("title", game.i18n.localize("l5r5e.logo.alt"));
// If any disclaimer "not translated by Edge" // If any disclaimer "not translated by Edge"
const disclaimer = game.i18n.localize("l5r5e.global.edge_translation_disclaimer"); const disclaimer = game.i18n.localize("l5r5e.global.edge_translation_disclaimer");
if (disclaimer !== "" && disclaimer !== "l5r5e.global.edge_translation_disclaimer") { if (disclaimer !== "" && disclaimer !== "l5r5e.global.edge_translation_disclaimer") {
@@ -71,13 +80,15 @@ 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);
} }
/** /**
* SidebarTab * SidebarTab
*/ */
static renderSidebarTab(app, html, data) { static renderSidebarTab(app, html, data) {
html = $(html); // basic patch for v13
switch (app.tabName) { switch (app.tabName) {
case "chat": case "chat":
// Add DP on dice icon // Add DP on dice icon
@@ -114,23 +125,30 @@ export default class HooksL5r5e {
// Add title on button dice icon // Add title on button dice icon
html.find(".chat-control-icon")[0].title = game.i18n.localize("l5r5e.dice.dicepicker.title"); html.find(".chat-control-icon")[0].title = game.i18n.localize("l5r5e.dice.dicepicker.title");
break; break;
}
}
case "settings": static async activateSettings(app) {
// Add Changelog link const html = app.element
html.find("#game-details .system").append( const pip = html.querySelector(".info .system .notification-pip");
`<span><a href="${game.system.changelog}" target="_blank">Changelog</a>` html.querySelector(".info.system.l5r5e")?.remove();
+ ` <a href="${game.i18n.localize("l5r5e.settings.wiki.link")}" target="_blank">${game.i18n.localize("l5r5e.settings.wiki.title")}</a>`
+ ` <a href="${game.i18n.localize("l5r5e.settings.custom-compendiums.link")}" target="_blank">${game.i18n.localize("l5r5e.settings.custom-compendiums.title")}</a>` const section = document.createElement("section");
+ `</span>` section.className = "info system l5r5e";
); const tpl = await foundry.applications.handlebars.renderTemplate(`${CONFIG.l5r5e.paths.templates}settings/logo.html`, {
break; SystemVersion: game.system.version
} });
section.append(foundry.utils.parseHTML(tpl));
if ( pip ) section.querySelector(".system-info").insertAdjacentElement("beforeend", pip);
html.querySelector(".info").insertAdjacentElement("afterend", section);
} }
/** /**
* Chat Message * Chat Message
*/ */
static renderChatMessage(message, html, data) { static renderChatMessage(message, html, data) {
html = $(html); // basic patch for v13
if (message.isRoll) { if (message.isRoll) {
// Add an extra CSS class to roll // Add an extra CSS class to roll
html.addClass("roll"); html.addClass("roll");
@@ -161,7 +179,7 @@ export default class HooksL5r5e {
*/ */
static async renderCombatTracker(app, html, data) { static async renderCombatTracker(app, html, data) {
// Display Combat bar (only for GMs) // Display Combat bar (only for GMs)
await this._gmCombatBar(app, html, data); await this._gmCombatBar(app, $(html), data);
} }
/** /**
@@ -174,6 +192,8 @@ export default class HooksL5r5e {
return; return;
} }
html = $(html); // basic patch for v13
// *** Conf *** // *** Conf ***
const encounterTypeList = Object.keys(CONFIG.l5r5e.initiativeSkills); const encounterTypeList = Object.keys(CONFIG.l5r5e.initiativeSkills);
const prepared = { const prepared = {
@@ -183,7 +203,7 @@ export default class HooksL5r5e {
}; };
// *** Template *** // *** Template ***
const tpl = await renderTemplate(`${CONFIG.l5r5e.paths.templates}gm/combat-tracker-bar.html`, { const tpl = await foundry.applications.handlebars.renderTemplate(`${CONFIG.l5r5e.paths.templates}gm/combat-tracker-bar.html`, {
encounterType: game.settings.get(CONFIG.l5r5e.namespace, "initiative-encounter"), encounterType: game.settings.get(CONFIG.l5r5e.namespace, "initiative-encounter"),
encounterTypeList, encounterTypeList,
prepared, prepared,
@@ -229,6 +249,8 @@ export default class HooksL5r5e {
* Compendium display (Add filters) * Compendium display (Add filters)
*/ */
static async renderCompendium(app, html, data) { static async renderCompendium(app, html, data) {
html = $(html); // basic patch for v13
if (app.collection.documentName === "Item") { if (app.collection.documentName === "Item") {
const content = await app.collection.getDocuments(); const content = await app.collection.getDocuments();
const sourcesInThisCompendium = new Set([]); const sourcesInThisCompendium = new Set([]);
@@ -253,7 +275,7 @@ export default class HooksL5r5e {
// Add additional data to the entries to make it faster to lookup. // Add additional data to the entries to make it faster to lookup.
// Add Ring/rank/rarity information // Add Ring/rank/rarity information
for (const document of content) { for (const document of content) {
const entry = entries.filter(`[data-document-id="${document.id}"]`); const entry = entries.filter(`[data-entry-id="${document.id}"]`);
// Hide filter if only one value of this type is found in the compendium // Hide filter if only one value of this type is found in the compendium
const autoDisplayFilter = (props, documentData = null) => { const autoDisplayFilter = (props, documentData = null) => {
@@ -289,23 +311,23 @@ export default class HooksL5r5e {
// Add ring/rank/rarity information on the item in the compendium view // Add ring/rank/rarity information on the item in the compendium view
if (document.system?.ring || document.system?.rarity || document.system?.rank) { if (document.system?.ring || document.system?.rarity || document.system?.rank) {
const ringRarityRank = await renderTemplate(`${CONFIG.l5r5e.paths.templates}compendium/ring-rarity-rank.html`, document.system); const ringRarityRank = await foundry.applications.handlebars.renderTemplate(`${CONFIG.l5r5e.paths.templates}compendium/ring-rarity-rank.html`, document.system);
entry.append(ringRarityRank); entry.append(ringRarityRank);
} }
} }
// 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.length > 0 ? !officialContent.includes(element) : false; return officialContentSet.size > 0 ? !officialContentSet.has(element) : false;
} }
return unofficialContent.length > 0 ? !unofficialContent.includes(element) : false; return unofficialContentSet.size > 0 ? !unofficialContentSet.has(element) : false;
}); }));
// Create filter function // Create filter function
const applyCompendiumFilter = () => { const applyCompendiumFilter = () => {
@@ -325,7 +347,7 @@ export default class HooksL5r5e {
let shouldShow = true; let shouldShow = true;
// Handle unavailable sources // Handle unavailable sources
if (unavailableSourceForPlayers.includes(lineSource)) { if (unavailableSourceForPlayersSet.has(lineSource)) {
if (game.user.isGM) { if (game.user.isGM) {
shouldShow &= true; shouldShow &= true;
$(this) $(this)
@@ -372,7 +394,7 @@ export default class HooksL5r5e {
if (!filtersToShow[filterType]) { if (!filtersToShow[filterType]) {
return; return;
} }
const filterTemplate = await renderTemplate( const filterTemplate = await foundry.applications.handlebars.renderTemplate(
`${CONFIG.l5r5e.paths.templates}compendium/${templateFile}.html`, `${CONFIG.l5r5e.paths.templates}compendium/${templateFile}.html`,
templateData templateData
); );
@@ -397,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.includes(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.includes(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;
}); });
} }
} }
@@ -544,4 +566,11 @@ export default class HooksL5r5e {
await game.user.assignHotbarMacro(macro, slot); await game.user.assignHotbarMacro(macro, slot);
} }
static async createCombatant(document, options, userId) {
console.log(document, options, userId);
new game.l5r5e.CombatActions().render(true);
}
} }

View File

@@ -177,7 +177,7 @@ export class ItemL5r5e extends Item {
await game.l5r5e.HelpersL5r5e.refreshItemProperties(this); await game.l5r5e.HelpersL5r5e.refreshItemProperties(this);
} }
const type = this.type.replace("_", "-"); // ex: item_pattern const type = this.type.replace("_", "-"); // ex: item_pattern
const tpl = await renderTemplate(`${CONFIG.l5r5e.paths.templates}items/${type}/${type}-text.html`, sheetData); const tpl = await foundry.applications.handlebars.renderTemplate(`${CONFIG.l5r5e.paths.templates}items/${type}/${type}-text.html`, sheetData);
if (!tpl) { if (!tpl) {
return null; return null;
} }

View File

@@ -45,7 +45,7 @@ export class ArmyCohortSheetL5r5e extends ItemSheetL5r5e {
const sheetData = await super.getData(options); const sheetData = await super.getData(options);
// Editors enrichment // Editors enrichment
sheetData.data.enrichedHtml.abilities = await TextEditor.enrichHTML(sheetData.data.system.abilities, { sheetData.data.enrichedHtml.abilities = await foundry.applications.ux.TextEditor.implementation.enrichHTML(sheetData.data.system.abilities, {
async: true, async: true,
}); });

View File

@@ -2,7 +2,7 @@
* Extend the basic ItemSheet with some very simple modifications * Extend the basic ItemSheet with some very simple modifications
* @extends {ItemSheet} * @extends {ItemSheet}
*/ */
export class BaseItemSheetL5r5e extends ItemSheet { export class BaseItemSheetL5r5e extends foundry.appv1.sheets.ItemSheet {
/** @override */ /** @override */
static get defaultOptions() { static get defaultOptions() {
return foundry.utils.mergeObject(super.defaultOptions, { return foundry.utils.mergeObject(super.defaultOptions, {
@@ -56,8 +56,8 @@ export class BaseItemSheetL5r5e extends 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)
}) })

View File

@@ -26,7 +26,7 @@ export class ItemSheetL5r5e extends BaseItemSheetL5r5e {
// Editors enrichment // Editors enrichment
sheetData.data.enrichedHtml = { sheetData.data.enrichedHtml = {
description: await TextEditor.enrichHTML(sheetData.data.system.description, { async: true }), description: await foundry.applications.ux.TextEditor.implementation.enrichHTML(sheetData.data.system.description, { async: true }),
}; };
return sheetData; return sheetData;
@@ -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.
@@ -87,7 +82,7 @@ export class ItemSheetL5r5e extends BaseItemSheetL5r5e {
// "this.isEditable" fail for tooltips (undefined "this.document") // "this.isEditable" fail for tooltips (undefined "this.document")
const isEditable = this.options.editable; const isEditable = this.options.editable;
return [ return [
new DragDrop({ new foundry.applications.ux.DragDrop.implementation({
dragSelector: ".property", dragSelector: ".property",
dropSelector: null, dropSelector: null,
permissions: { dragstart: isEditable, drop: isEditable }, permissions: { dragstart: isEditable, drop: isEditable },

View File

@@ -10,7 +10,7 @@ export class JournalL5r5e extends JournalEntry {
const data = (await this.sheet?.getData()) || this; const data = (await this.sheet?.getData()) || this;
const pageData = data.pages[0]; const pageData = data.pages[0];
const tpl = await renderTemplate(`${CONFIG.l5r5e.paths.templates}journal/journal-text.html`, { const tpl = await foundry.applications.handlebars.renderTemplate(`${CONFIG.l5r5e.paths.templates}journal/journal-text.html`, {
data: pageData, data: pageData,
}); });
return tpl || null; return tpl || null;

View File

@@ -2,7 +2,7 @@
* Base JournalSheet for L5R5e * Base JournalSheet for L5R5e
* @extends {JournalSheet} * @extends {JournalSheet}
*/ */
export class BaseJournalSheetL5r5e extends JournalSheet { export class BaseJournalSheetL5r5e extends foundry.appv1.sheets.JournalSheet {
/** @override */ /** @override */
static get defaultOptions() { static get defaultOptions() {
return foundry.utils.mergeObject(super.defaultOptions, { return foundry.utils.mergeObject(super.defaultOptions, {

View File

@@ -5,7 +5,6 @@ import { SocketHandlerL5r5e } from "./socket-handler.js";
import { RegisterSettings } from "./settings.js"; import { RegisterSettings } from "./settings.js";
import { PreloadTemplates } from "./preloadTemplates.js"; import { PreloadTemplates } from "./preloadTemplates.js";
import { RegisterHandlebars } from "./handlebars.js"; import { RegisterHandlebars } from "./handlebars.js";
import { HelpDialog } from "./help/help-dialog.js";
import HooksL5r5e from "./hooks.js"; import HooksL5r5e from "./hooks.js";
// Actors // Actors
import { ActorL5r5e } from "./actor.js"; import { ActorL5r5e } from "./actor.js";
@@ -95,7 +94,6 @@ Hooks.once("init", async () => {
RollnKeepDialog, RollnKeepDialog,
GmToolbox, GmToolbox,
GmMonitor, GmMonitor,
HelpDialog,
storage: new Storage(), storage: new Storage(),
sockets: new SocketHandlerL5r5e(), sockets: new SocketHandlerL5r5e(),
migrations: MigrationL5r5e, migrations: MigrationL5r5e,
@@ -111,107 +109,110 @@ Hooks.once("init", async () => {
PreloadTemplates().then(() => {}); PreloadTemplates().then(() => {});
// ***** Register custom sheets ***** // ***** Register custom sheets *****
const fdc = foundry.documents.collections;
const fav1s = foundry.appv1.sheets;
// Actors // Actors
Actors.unregisterSheet("core", ActorSheet); fdc.Actors.unregisterSheet("core", fav1s.ActorSheet);
Actors.registerSheet(L5R5E.namespace, CharacterSheetL5r5e, { fdc.Actors.registerSheet(L5R5E.namespace, CharacterSheetL5r5e, {
types: ["character"], types: ["character"],
label: "TYPES.Actor.character", label: "TYPES.Actor.character",
makeDefault: true, makeDefault: true,
}); });
Actors.registerSheet(L5R5E.namespace, NpcSheetL5r5e, { fdc.Actors.registerSheet(L5R5E.namespace, NpcSheetL5r5e, {
types: ["npc"], types: ["npc"],
label: "TYPES.Actor.npc", label: "TYPES.Actor.npc",
makeDefault: true, makeDefault: true,
}); });
Actors.registerSheet(L5R5E.namespace, ArmySheetL5r5e, { fdc.Actors.registerSheet(L5R5E.namespace, ArmySheetL5r5e, {
types: ["army"], types: ["army"],
label: "TYPES.Actor.army", label: "TYPES.Actor.army",
makeDefault: true, makeDefault: true,
}); });
// Items // Items
Items.unregisterSheet("core", ItemSheet); fdc.Items.unregisterSheet("core", fav1s.ItemSheet);
Items.registerSheet(L5R5E.namespace, ItemSheetL5r5e, { fdc.Items.registerSheet(L5R5E.namespace, ItemSheetL5r5e, {
types: ["item"], types: ["item"],
label: "TYPES.Item.item", label: "TYPES.Item.item",
makeDefault: true, makeDefault: true,
}); });
Items.registerSheet(L5R5E.namespace, ArmorSheetL5r5e, { fdc.Items.registerSheet(L5R5E.namespace, ArmorSheetL5r5e, {
types: ["armor"], types: ["armor"],
label: "TYPES.Item.armor", label: "TYPES.Item.armor",
makeDefault: true, makeDefault: true,
}); });
Items.registerSheet(L5R5E.namespace, WeaponSheetL5r5e, { fdc.Items.registerSheet(L5R5E.namespace, WeaponSheetL5r5e, {
types: ["weapon"], types: ["weapon"],
label: "TYPES.Item.weapon", label: "TYPES.Item.weapon",
makeDefault: true, makeDefault: true,
}); });
Items.registerSheet(L5R5E.namespace, TechniqueSheetL5r5e, { fdc.Items.registerSheet(L5R5E.namespace, TechniqueSheetL5r5e, {
types: ["technique"], types: ["technique"],
label: "TYPES.Item.technique", label: "TYPES.Item.technique",
makeDefault: true, makeDefault: true,
}); });
Items.registerSheet(L5R5E.namespace, PropertySheetL5r5e, { fdc.Items.registerSheet(L5R5E.namespace, PropertySheetL5r5e, {
types: ["property"], types: ["property"],
label: "TYPES.Item.property", label: "TYPES.Item.property",
makeDefault: true, makeDefault: true,
}); });
Items.registerSheet(L5R5E.namespace, PeculiaritySheetL5r5e, { fdc.Items.registerSheet(L5R5E.namespace, PeculiaritySheetL5r5e, {
types: ["peculiarity"], types: ["peculiarity"],
label: "TYPES.Item.peculiarity", label: "TYPES.Item.peculiarity",
makeDefault: true, makeDefault: true,
}); });
Items.registerSheet(L5R5E.namespace, AdvancementSheetL5r5e, { fdc.Items.registerSheet(L5R5E.namespace, AdvancementSheetL5r5e, {
types: ["advancement"], types: ["advancement"],
label: "TYPES.Item.advancement", label: "TYPES.Item.advancement",
makeDefault: true, makeDefault: true,
}); });
Items.registerSheet(L5R5E.namespace, TitleSheetL5r5e, { fdc.Items.registerSheet(L5R5E.namespace, TitleSheetL5r5e, {
types: ["title"], types: ["title"],
label: "TYPES.Item.title", label: "TYPES.Item.title",
makeDefault: true, makeDefault: true,
}); });
Items.registerSheet(L5R5E.namespace, BondSheetL5r5e, { fdc.Items.registerSheet(L5R5E.namespace, BondSheetL5r5e, {
types: ["bond"], types: ["bond"],
label: "TYPES.Item.bond", label: "TYPES.Item.bond",
makeDefault: true, makeDefault: true,
}); });
Items.registerSheet(L5R5E.namespace, SignatureScrollSheetL5r5e, { fdc.Items.registerSheet(L5R5E.namespace, SignatureScrollSheetL5r5e, {
types: ["signature_scroll"], types: ["signature_scroll"],
label: "TYPES.Item.signature_scroll", label: "TYPES.Item.signature_scroll",
makeDefault: true, makeDefault: true,
}); });
Items.registerSheet(L5R5E.namespace, ItemPatternSheetL5r5e, { fdc.Items.registerSheet(L5R5E.namespace, ItemPatternSheetL5r5e, {
types: ["item_pattern"], types: ["item_pattern"],
label: "TYPES.Item.item_pattern", label: "TYPES.Item.item_pattern",
makeDefault: true, makeDefault: true,
}); });
Items.registerSheet(L5R5E.namespace, ArmyCohortSheetL5r5e, { fdc.Items.registerSheet(L5R5E.namespace, ArmyCohortSheetL5r5e, {
types: ["army_cohort"], types: ["army_cohort"],
label: "TYPES.Item.army_cohort", label: "TYPES.Item.army_cohort",
makeDefault: true, makeDefault: true,
}); });
Items.registerSheet(L5R5E.namespace, ArmyFortificationSheetL5r5e, { fdc.Items.registerSheet(L5R5E.namespace, ArmyFortificationSheetL5r5e, {
types: ["army_fortification"], types: ["army_fortification"],
label: "TYPES.Item.army_fortification", label: "TYPES.Item.army_fortification",
makeDefault: true, makeDefault: true,
}); });
// Journal // Journal
Journal.unregisterSheet("core", JournalSheet); fdc.Journal.unregisterSheet("core", fav1s.JournalSheet);
Journal.registerSheet(L5R5E.namespace, BaseJournalSheetL5r5e, { fdc.Journal.registerSheet(L5R5E.namespace, BaseJournalSheetL5r5e, {
label: "TYPES.Journal.journal", label: "TYPES.Journal.journal",
makeDefault: true, makeDefault: true,
}); });
// Override enrichHTML for Symbol replacement // Override enrichHTML for Symbol replacement
const oldEnrichHTML = TextEditor.prototype.constructor.enrichHTML; const oldEnrichHTML = foundry.applications.ux.TextEditor.implementation.prototype.constructor.enrichHTML;
TextEditor.prototype.constructor.enrichHTML = async function (content, options = {}) { foundry.applications.ux.TextEditor.implementation.prototype.constructor.enrichHTML = async function (content, options = {}) {
return HelpersL5r5e.convertSymbols(await oldEnrichHTML.call(this, content, options), true); return HelpersL5r5e.convertSymbols(await oldEnrichHTML.call(this, content, options), true);
}; };
// Override the default Token _drawBar function to allow fatigue bar reversing. // Override the default Token _drawBar function to allow fatigue bar reversing.
Token.prototype._drawBar = function (number, bar, data) { foundry.canvas.placeables.Token.prototype._drawBar = function (number, bar, data) {
const barSettings = game.settings.get(L5R5E.namespace, "token-reverse-token-bars"); const barSettings = game.settings.get(L5R5E.namespace, "token-reverse-token-bars");
const reverseBar = barSettings === 'both' || barSettings === data.attribute; const reverseBar = barSettings === 'both' || barSettings === data.attribute;
@@ -251,13 +252,15 @@ 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));
/* ------------------------------------ */ /* ------------------------------------ */
/* Hooks On */ /* Hooks On */
/* ------------------------------------ */ /* ------------------------------------ */
Hooks.on("renderSidebarTab", (app, html, data) => HooksL5r5e.renderSidebarTab(app, html, data)); Hooks.on("renderSidebarTab", (app, html, data) => HooksL5r5e.renderSidebarTab(app, html, data));
Hooks.on("renderChatMessage", (message, html, data) => HooksL5r5e.renderChatMessage(message, html, data)); Hooks.on("activateSettings", async (app)=> HooksL5r5e.activateSettings(app));
Hooks.on("renderChatMessageHTML", (message, html, data) => HooksL5r5e.renderChatMessage(message, html, data));
Hooks.on("renderCombatTracker", (app, html, data) => HooksL5r5e.renderCombatTracker(app, html, data)); Hooks.on("renderCombatTracker", (app, html, data) => HooksL5r5e.renderCombatTracker(app, html, data));
Hooks.on("renderCompendium", async (app, html, data) => HooksL5r5e.renderCompendium(app, html, data)); Hooks.on("renderCompendium", async (app, html, data) => HooksL5r5e.renderCompendium(app, html, data));
Hooks.on("diceSoNiceRollStart", (messageId, context) => HooksL5r5e.diceSoNiceRollStart(messageId, context)); Hooks.on("diceSoNiceRollStart", (messageId, context) => HooksL5r5e.diceSoNiceRollStart(messageId, context));

View File

@@ -6,7 +6,7 @@ export class MigrationL5r5e {
* Minimum Version needed for migration stuff to trigger * Minimum Version needed for migration stuff to trigger
* @type {string} * @type {string}
*/ */
static NEEDED_VERSION = "1.12.3"; static NEEDED_VERSION = "1.13.0";
/** /**
* Return true if the version need some updates * Return true if the version need some updates
@@ -358,7 +358,21 @@ export class MigrationL5r5e {
updateData["content"] = ""; updateData["content"] = "";
} }
} }
// ***** End of 1.3.0 *****
// ***** Start of 1.13.0 *****
if (options?.force || MigrationL5r5e.needUpdate("1.13.0")) {
// Fix Roll messages
if (message.isRoll && message.content !== "") {
updateData["content"] = message.content
.replace('<div class="l5r5e dice-roll">', '<div class="l5r5e chat dice-roll">')
.replace(/<div class="l5r5e item-display dices-l5r">(?!<\/div>)/, '<div class="l5r5e item-display dices-l5r"><div class="l5r5e dice-container">')
.replace(/(?!<\/div>)<button class="l5r5e chat-dice-rnk/, '</div><button class="l5r5e chat-dice-rnk')
;
}
}
// ***** End of 1.13.0 *****
return updateData; return updateData;
} }
} }

View File

@@ -0,0 +1,153 @@
/**
* Manages tooltips for specified elements, showing asynchronously generated content on hover.
* Tooltips are appended to a customizable container element.
* Automatically cleans up event handlers and observers when target elements are removed.
*/
export class L5r5ePopupManager {
/** @type {string|jQuery} */
#selector = null;
/** @type {(event: MouseEvent) => Promise<string>} */
#callback = null;
/** @type {jQuery|null} */
#elements = null;
/** @type {MutationObserver|null} */
#observer = null;
/** @type {HTMLElement} */
#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 {(event: MouseEvent) => Promise<string>} callback - Async function returning tooltip HTML content.
* @param {HTMLElement|jQuery} [container=document.body] - DOM element or jQuery object to contain the tooltip.
*/
constructor(selector, callback, container = document.body) {
this.#selector = selector;
this.#callback = callback;
this.#container = container instanceof jQuery ? container[0] : container;
this.#bindEvents();
this.#observeDOM();
}
/**
* Bind mouseenter, mousemove, and mouseleave events to target elements.
* Creates/removes tooltip elements on hover, and updates position on mouse move.
* @private
*/
#bindEvents() {
this.#elements = $(this.#selector);
this.#elements
.on("mouseenter.popup", async (event) => {
$(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);
// Abort if no content or the target element is no longer in the DOM
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(
`<div id="l5r5e-tooltip-ct" class="l5r5e-tooltip l5r5e-tooltip-ct">${tpl}</div>`
);
})
.on("mousemove.popup", (event) => {
const popup = $(this.#container).find("#l5r5e-tooltip-ct");
if (popup.length) {
popup.css(this.popupPosition(event, popup));
}
})
.on("mouseleave.popup", () => {
$(this.#container).find("#l5r5e-tooltip-ct").remove();
});
}
/**
* Creates a MutationObserver that watches for removal of tooltip-bound elements
* and automatically destroys the manager if none remain.
* @private
*/
#observeDOM() {
this.#observer = new MutationObserver(() => {
const anyStillPresent = this.#elements?.toArray().some(el => document.body.contains(el));
if (!anyStillPresent) {
this.destroy();
}
});
this.#observer.observe(this.#container, {
childList: true,
subtree: true
});
}
/**
* Calculates CSS positioning for the tooltip based on mouse event,
* constraining it inside the viewport.
* @param {MouseEvent} event - The mouse event for position reference.
* @param {jQuery} popup - The jQuery object representing the tooltip element.
* @returns {{left: string, top: string, visibility: string}} CSS styles for tooltip positioning.
*/
popupPosition(event, popup) {
let left = event.clientX + 60;
let top = event.clientY;
const maxY = window.innerHeight - popup.outerHeight();
if (top > maxY) {
top = maxY - 10;
}
const maxX = window.innerWidth - popup.outerWidth();
if (left > maxX) {
left -= popup.outerWidth() + 100;
}
return {
left: `${left}px`,
top: `${top}px`,
visibility: "visible"
};
}
/**
* Unbind all events, remove tooltip elements, and disconnect the MutationObserver.
* Cleans up all references for proper garbage collection.
*/
destroy() {
if (this.#elements) {
this.#elements.off(".popup");
}
$(this.#container).find("#l5r5e-tooltip-ct").remove();
if (this.#observer) {
this.#observer.disconnect();
this.#observer = null;
}
this.#elements = null;
}
}

View File

@@ -1,6 +1,6 @@
export const PreloadTemplates = async function () { export const PreloadTemplates = async function () {
const tpl = CONFIG.l5r5e.paths.templates; const tpl = CONFIG.l5r5e.paths.templates;
return loadTemplates([ return foundry.applications.handlebars.loadTemplates([
// Add paths to "systems/l5r5e/templates" // Add paths to "systems/l5r5e/templates"
// *** Actors : PC *** // *** Actors : PC ***
`${tpl}actors/character/advancement-school.html`, `${tpl}actors/character/advancement-school.html`,

View File

@@ -25,6 +25,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",

View File

@@ -76,7 +76,7 @@ export class SocketHandlerL5r5e {
})(); })();
} }
_onRefreshAppId(payload) { _onRefreshAppId(payload) {
const app = Object.values(ui.windows).find((e) => e.id === payload.appId); const app = game.l5r5e.HelpersL5r5e.getApplication(payload.appId);
if (!app || typeof app.refresh !== "function") { if (!app || typeof app.refresh !== "function") {
return; return;
} }
@@ -96,7 +96,7 @@ export class SocketHandlerL5r5e {
}); });
} }
_onUpdateMessageIdAndRefresh(payload) { _onUpdateMessageIdAndRefresh(payload) {
const app = Object.values(ui.windows).find((e) => e.id === payload.appId); const app = game.l5r5e.HelpersL5r5e.getApplication(payload.appId);
if (!app || !app.message || typeof app.refresh !== "function") { if (!app || !app.message || typeof app.refresh !== "function") {
return; return;
} }

3
system/scripts/types.js Normal file
View 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
*/

View File

@@ -1,20 +1,24 @@
@layer system {
/* Global */ /* Global */
@import "../scss/colors"; @import "../scss/colors";
@import "../scss/global"; @import "../scss/global";
@import "../scss/compatibility-modules"; @import "../scss/compatibility-modules";
@import "../scss/fonts"; @import "../scss/fonts";
@import "../scss/cursors"; @import "../scss/cursors";
@import "../scss/dices";
@import "../scss/ui"; @import "../scss/ui";
@import "../scss/global-appv2.scss";
.l5r5e { .l5r5e {
@import "../scss/dices-chat"; @import "../scss/dices";
@import "../scss/sheets"; @import "../scss/l5r5e-global";
@import "../scss/npc"; @import "../scss/dices-chat";
@import "../scss/army"; @import "../scss/sheets";
@import "../scss/nav"; @import "../scss/npc";
@import "../scss/rings"; @import "../scss/army";
@import "../scss/skills"; @import "../scss/nav";
@import "../scss/items"; @import "../scss/rings";
@import "../scss/twenty-questions"; @import "../scss/skills";
} @import "../scss/items";
@import "../scss/twenty-questions";
}
}

File diff suppressed because one or more lines are too long

View File

@@ -232,7 +232,7 @@
&.others { &.others {
flex-direction: column; flex-direction: column;
.editor-content { .editor-container {
min-height: 8rem; min-height: 8rem;
max-height: 14rem; max-height: 14rem;
} }

View File

@@ -1,86 +1,201 @@
// Dice in chat // Dice in chat
.chat-dice { &.chat.dice-roll {
display: inline;
position: relative;
padding: 0;
margin: 0;
&:after {
content: "";
position: absolute;
bottom: 0;
right: 0;
border-radius: 0.15rem;
padding: 0 0.225rem 0 0.15rem;
font-size: 0.75em;
line-height: 1rem;
width: 1em;
text-align: center;
color: white;
background: transparent;
}
&:last-of-type,
&:nth-child(6),
&:nth-child(12),
&:nth-child(18) {
&:after {
padding: 0 0.175rem 0 0.15rem;
}
}
&.rerolled {
> img {
border-bottom: 0 none;
}
&:after {
content: "\f2f9";
background: orangered;
}
}
&.swapped {
> img {
border-bottom: 0 none;
}
&:after {
content: "\f337";
background: fuchsia;
}
}
> img {
border: 1px solid transparent;
height: auto;
width: calc(100% / 6 - 0.255rem);
margin: auto;
}
}
td {
.chat-dice { .chat-dice {
} display: inline;
} position: relative;
padding: 0;
.chat-profil { margin: 0;
text-align: center; &:after {
vertical-align: middle; content: "";
position: absolute;
.profile-img { bottom: 0;
margin: 0.25rem 0.25rem 0 0; right: 0;
} border-radius: 0.15rem;
padding: 0 0.15rem;
&-stance { font-size: 0.65em;
font-size: 2.5rem; line-height: 1rem;
line-height: 2.5rem; //width: 1em;
margin: 0.25rem; text-align: center;
text-shadow: 1px 1px 1px rgba(0, 0, 0, 0.5); color: white;
} background: transparent;
&-element {
flex-wrap: wrap;
flex-grow: 1;
&-skill {
flex-grow: 3;
} }
&:last-child { &:last-of-type,
flex-grow: 2; &:nth-child(6),
&:nth-child(12),
&:nth-child(18) {
&:after {
padding: 0 0.175rem 0 0.15rem;
}
}
&.rerolled {
> img {
border-bottom: 0 none;
}
&:after {
content: "\f2f9";
background: orangered;
}
}
&.swapped {
> img {
border-bottom: 0 none;
}
&:after {
content: "\f337";
background: fuchsia;
}
}
> img {
border: 1px solid transparent;
height: auto;
} }
} }
td {
.chat-dice {
}
}
.chat-profil {
text-align: center;
vertical-align: middle;
.profile-img {
margin: 0.25rem 0.25rem 0 0;
}
&-stance {
font-size: 2.5rem;
line-height: 2.5rem;
margin: 0.25rem;
text-shadow: 1px 1px 1px rgba(0, 0, 0, 0.5);
}
&-element {
flex-wrap: wrap;
flex-grow: 1;
&-skill {
flex-grow: 3;
}
&:last-child {
flex-grow: 2;
}
}
}
.dice-formula,
.dice-total {
background: rgba(255, 255, 255, 0.1);
border: rgba(255, 255, 255, 0.75);
text-align: center;
margin: 0.5rem 0;
padding: 0.25rem 0.5rem 0.25rem 0.25rem;
&-rnk {
line-height: 2rem;
i {
margin-left: 0.5rem;
}
}
}
button {
justify-self: center;
&.chat-dice-rnk {
cursor: url("../assets/cursors/pointer.webp"), pointer;
color: $white;
background: linear-gradient(
$l5r5e-linear-gradient-third,
$l5r5e-linear-gradient-third-dark,
$l5r5e-linear-gradient-third
);
background-origin: padding-box;
border-image: url("../assets/ui/macro-button.webp") 10 repeat;
border-image-width: 0.5rem;
border-image-outset: 0px;
margin: 0.5rem 0 0;
&:hover {
background: linear-gradient(
$l5r5e-linear-gradient-first-dark,
$l5r5e-linear-gradient-first,
$l5r5e-linear-gradient-first-dark
);
}
}
&.chat-dice-rnk-ended {
background: linear-gradient(
$l5r5e-linear-gradient-second,
$l5r5e-linear-gradient-second-dark,
$l5r5e-linear-gradient-second
);
}
}
.dice-result-rnk {
background: rgba(0, 0, 255, 0.1);
border: 1px solid rgba(55, 55, 155, 0.75);
padding: 0.25rem;
color: rgba(55, 55, 155, 0.75);
text-align: center;
font-weight: bold;
text-shadow: 0 0 0 $black;
&.success {
background: rgba(0, 255, 0, 0.1);
border-color: rgba(55, 155, 55, 0.75);
color: rgba(55, 155, 55, 0.75);
i.i_success {
font-size: 1rem;
}
}
&.unknown {
background: rgba(121, 121, 121, 0.1);
border-color: rgba(124, 124, 124, 0.75);
color: rgba(91, 91, 91, 0.75);
}
&.fail {
background: rgba(255, 0, 0, 0.1);
border-color: rgba(155, 55, 55, 0.75);
color: rgba(155, 55, 55, 0.75);
}
}
.target,
.item-infos {
display: flex;
align-items: center;
flex: 0 0 100%;
margin: 0.5rem 0;
padding: 0.25rem 0.5rem 0.25rem 0.25rem;
background: rgba(255, 255, 255, 0.1);
border: solid 1px rgba(100, 0, 0, 0.75);
border-radius: 3px;
.profile {
flex: 1;
margin: 0.25rem 0.25rem 0 0;
position: relative;
.profile-img {
position: relative;
border: none;
filter: drop-shadow(0 0 1px rgba(0, 0, 0, 0.66));
}
}
.name {
flex: 6;
font-family: "BrushtipTexe", sans-serif;
}
.content-link {
background: unset;
border: unset;
i {
display: none;
}
}
}
.item-infos {
border: solid 1px rgba(0, 78, 100, 0.75);
i {
font-size: var(--font-size-12);
}
}
.dice-container {
display: flex;
}
} }

View File

@@ -1,115 +1,4 @@
// -- Dices.scss // -- Dices.scss
.dice-roll {
.dice-formula,
.dice-total {
background: rgba(255, 255, 255, 0.1);
border: rgba(255, 255, 255, 0.75);
text-align: center;
margin: 0.5rem 0;
padding: 0.25rem 0.5rem 0.25rem 0.25rem;
&-rnk {
line-height: 2rem;
i {
margin-left: 0.5rem;
}
}
}
button {
&.chat-dice-rnk {
cursor: url("../assets/cursors/pointer.webp"), pointer;
color: $white;
background: linear-gradient(
$l5r5e-linear-gradient-third,
$l5r5e-linear-gradient-third-dark,
$l5r5e-linear-gradient-third
);
background-origin: padding-box;
border-image: url("../assets/ui/macro-button.webp") 10 repeat;
border-image-width: 0.5rem;
border-image-outset: 0px;
margin: 0.5rem 0 0;
&:hover {
background: linear-gradient(
$l5r5e-linear-gradient-first-dark,
$l5r5e-linear-gradient-first,
$l5r5e-linear-gradient-first-dark
);
}
}
&.chat-dice-rnk-ended {
background: linear-gradient(
$l5r5e-linear-gradient-second,
$l5r5e-linear-gradient-second-dark,
$l5r5e-linear-gradient-second
);
}
}
.dice-result-rnk {
background: rgba(0, 0, 255, 0.1);
border: 1px solid rgba(55, 55, 155, 0.75);
padding: 0.25rem;
color: rgba(55, 55, 155, 0.75);
text-align: center;
font-weight: bold;
text-shadow: 0 0 0 $black;
&.success {
background: rgba(0, 255, 0, 0.1);
border-color: rgba(55, 155, 55, 0.75);
color: rgba(55, 155, 55, 0.75);
i.i_success {
font-size: 1rem;
}
}
&.unknown {
background: rgba(121, 121, 121, 0.1);
border-color: rgba(124, 124, 124, 0.75);
color: rgba(91, 91, 91, 0.75);
}
&.fail {
background: rgba(255, 0, 0, 0.1);
border-color: rgba(155, 55, 55, 0.75);
color: rgba(155, 55, 55, 0.75);
}
}
.target,
.item-infos {
display: flex;
align-items: center;
flex: 0 0 100%;
margin: 0.5rem 0;
padding: 0.25rem 0.5rem 0.25rem 0.25rem;
background: rgba(255, 255, 255, 0.1);
border: solid 1px rgba(100, 0, 0, 0.75);
border-radius: 3px;
.profile {
flex: 1;
margin: 0.25rem 0.25rem 0 0;
position: relative;
.profile-img {
position: relative;
border: none;
filter: drop-shadow(0 0 1px rgba(0, 0, 0, 0.66));
}
}
.name {
flex: 6;
font-family: "BrushtipTexe", sans-serif;
}
.content-link {
background: unset;
border: unset;
i {
display: none;
}
}
}
.item-infos {
border: solid 1px rgba(0, 78, 100, 0.75);
i {
font-size: var(--font-size-12);
}
}
}
// If DicePicker add a pointer // If DicePicker add a pointer
.dice-picker { .dice-picker {
@@ -202,7 +91,13 @@
vertical-align: middle; vertical-align: middle;
} }
.dice-container.assistance {
display: flex;
align-items: anchor-center;
}
.dice-container { .dice-container {
display: inline-block;
position: relative; position: relative;
text-align: center; text-align: center;
@@ -210,6 +105,16 @@
height: 40px; height: 40px;
width: 40px; width: 40px;
} }
&.dice-value{
&.input-dice {
width: 20px;
color: #0f0f0e;
background: none;
border: none;
font-size: large;
padding: 0;
}
}
} }
.dice-value { .dice-value {
@@ -218,22 +123,25 @@
left: 50%; left: 50%;
transform: translate(-50%, -50%); transform: translate(-50%, -50%);
} }
input[name="ring.value"][type="text"] {
.input-dice { color: #f0f0e0;
width: 20px; border: unset;
background: unset;
}
input[name="skill.value"][type="text"] {
color: #0f0f0e; color: #0f0f0e;
background: none; border: unset;
border: none; background: unset;
font-size: large; }
padding: 0; input[name="difficulty.value"][type="text"] {
color: #0f0f0e;
&-ring { border: unset;
color: #f0f0e0; background: unset;
} }
input[name="skill.assistance"][type="text"] {
&-skill { color: #0f0f0e;
color: #0f0f0e; border: unset;
} background: unset;
} }
} }
@@ -368,7 +276,7 @@
padding: 0 0.15rem; padding: 0 0.15rem;
font-size: 0.65rem; font-size: 0.65rem;
line-height: 1rem; line-height: 1rem;
width: 0.65rem; width: 1rem;
text-align: center; text-align: center;
color: white; color: white;
background: gray; background: gray;

View File

@@ -0,0 +1,102 @@
.application {
color: var(--color-text-dark-primary);
.scrollable {
--scroll-margin: 0;
}
.window-header {
background: linear-gradient(
$l5r5e-linear-gradient-second,
$l5r5e-linear-gradient-second-dark,
$l5r5e-linear-gradient-second
);
.window-title {
font-family: $font-secondary;
font-size: 1.25rem;
}
}
.window-content {
padding: 0.25rem;
}
}
// More specified stuff down here as to not make it too hard to read the overridden defaults
.application {
.window-content {
table {
background: transparent;
border: 1px solid $l5r5e-title;
thead {
background: $l5r5e-title;
color: $l5r5e-label;
text-shadow: none;
border-bottom: $l5r5e-title;
}
tbody {
}
tr {
&:nth-child(odd) {
background: $l5r5e-odd;
}
&:nth-child(even) {
background: $l5r5e-even;
}
}
}
}
}
#sidebar-tabs > menu {
gap: 4px; // halve the distance between menu icons
}
#sidebar-content.expanded {
background: url("../assets/ui/bgSidebar.webp") no-repeat;
border-image: url("../assets/ui/macro-button.webp") 10 repeat;
border-style: solid;
border-image-width: 0.5rem;
border-image-outset: 0px;
margin-top: 2px;
margin-right: 2px;
height: calc(100% - 10px); // use height calculation to add margin at bottom
.sidebar-tab,.tab {
margin: 3px; // center content in sidebar
border-radius: 5px; // round of the inside content
}
#chat {
margin: unset;
padding-right: 4px; // scrollbar should be inside the container
.chat-scroll {
direction: unset; // Scrollbar on right
scrollbar-color: var(--color-light-4) var(--color-dark-3);
scrollbar-width: thin;
}
}
}
// hotbar
#hotbar {
//margin: 0;
#action-bar {
//flex: 0 0 100%;
.slot {
border-image: url("../assets/ui/macro-button.webp");
border-image-slice: 8 fill;
border-image-width: 0.25rem;
}
}
}
#menu.active {
transition: max-height 150ms ease-in;
}
#menu {
// Foundry listens to transitionend and then close the menu so need something here.
// otherwise using ESC will result in a long wait and missed trigger events
transition: max-height 10ms ease-out;
}

View File

@@ -19,7 +19,6 @@ body {
.window-content { .window-content {
z-index: 1; z-index: 1;
position: relative; position: relative;
background: rgb(255, 250, 230) url("../assets/imgs/bg-l5r.webp") no-repeat;
background-size: cover; background-size: cover;
scrollbar-width: thin; scrollbar-width: thin;
padding: 0; padding: 0;
@@ -123,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,
@@ -158,20 +152,6 @@ button:focus {
box-shadow: 0 0 10px $red; box-shadow: 0 0 10px $red;
} }
option {
font-size: 1rem;
line-height: 1.5rem;
padding: 0.25rem;
color: $black-light;
}
/* lists */
ul,
li {
list-style-type: none;
margin: 0;
padding: 0;
}
.item-list { .item-list {
> li { > li {
padding: 0.25rem; padding: 0.25rem;
@@ -205,51 +185,13 @@ fieldset {
} }
} }
// inputs
input[type="text"],
input[type="number"],
input[type="password"],
input[type="date"],
input[type="time"],
textarea {
padding: 0.25rem;
background: $l5r5e-white;
border: 1px solid $l5r5e-title;
color: $l5r5e-bold;
resize: vertical;
border-radius: 0;
&[disabled] {
background: $l5r5e-white-light;
}
}
input[type="number"] {
text-align: center;
}
// Editors // Editors
.editor, .editor,
.editor-content { .editor-container {
flex: 1; flex: 1;
height: 100%; height: 100%;
} }
// Elements Colors
.earth {
color: $l5r5e-earth;
}
.air {
color: $l5r5e-air;
}
.water {
color: $l5r5e-water;
}
.fire {
color: $l5r5e-fire;
}
.void {
color: $l5r5e-void;
}
table { table {
background: transparent; background: transparent;
border: 1px solid $l5r5e-title; border: 1px solid $l5r5e-title;
@@ -284,7 +226,7 @@ sup {
} }
} }
.editor-content, .editor-container,
.item-description { .item-description {
ul { ul {
margin: 0.5rem 0; margin: 0.5rem 0;
@@ -308,7 +250,6 @@ sup {
} }
&-icon { &-icon {
font-weight: 900; font-weight: 900;
font-family: "Font Awesome 5 Free";
-moz-osx-font-smoothing: grayscale; -moz-osx-font-smoothing: grayscale;
-webkit-font-smoothing: antialiased; -webkit-font-smoothing: antialiased;
display: inline-block; display: inline-block;

View File

@@ -11,7 +11,7 @@
flex: 0 0 32px; flex: 0 0 32px;
padding-right: 0.25rem; padding-right: 0.25rem;
img { img {
border: 1px solid rgba(0, 0, 0, 0.1); border: none;
} }
} }
.item-name { .item-name {
@@ -19,6 +19,7 @@
font-size: 1rem; font-size: 1rem;
line-height: 1rem; line-height: 1rem;
color: $l5r5e-bold; color: $l5r5e-bold;
align-content: center;
} }
.removed { .removed {
text-decoration-line: line-through; text-decoration-line: line-through;
@@ -454,7 +455,7 @@
.flx100 { .flx100 {
flex: 0 0 calc(100% - 0.5rem); flex: 0 0 calc(100% - 0.5rem);
} }
.editor-content { .editor-container {
min-height: 8rem; min-height: 8rem;
max-height: 14rem; max-height: 14rem;
} }

View File

@@ -0,0 +1,109 @@
/* lists */
ul,
li {
list-style-type: none;
margin: 0;
padding: 0;
}
// Elements Colors
.earth {
color: $l5r5e-earth;
}
.air {
color: $l5r5e-air;
}
.water {
color: $l5r5e-water;
}
.fire {
color: $l5r5e-fire;
}
.void {
color: $l5r5e-void;
}
// inputs
input[type="text"],
input[type="number"],
input[type="password"],
input[type="date"],
input[type="time"],
textarea {
padding: 0.25rem;
background: $l5r5e-white;
border: 1px solid $l5r5e-title;
color: $l5r5e-black;
resize: vertical;
border-radius: 0;
box-shadow: none;
&[disabled] {
background: $l5r5e-white-light;
}
}
input[type="number"] {
text-align: center;
}
&.system-badge {
display: flex;
flex-direction: column;
align-items: center;
gap: .5rem;
padding: .25rem;
> img {
height: 128px;
border: none;
object-fit: contain;
}
.system-info {
position: relative;
font-size: var(--font-size-16);
i {
padding-inline-start: 2px;
font-size: var(--font-size-12);
}
}
}
&.sidebar-info {
margin-bottom: -.5rem;
.system-badge { margin-top: .5rem; }
.notification-pip {
color: var(--color-text-accent);
font-size: var(--font-size-12);
top: 4px;
right: -14px;
}
ul.unlist {
display: flex;
flex-wrap: wrap;
padding-left: 0;
list-style: none;
clip-path: inset(0 0 0 2ch); // remove separator if on new line
}
ul.links {
gap: 0;
margin-top: 6px;
margin-left: 10%; // just to center the link list a little
li {
padding-left: 1ch;
white-space: nowrap;
}
li::before {
content: "";
display: inline-block;
margin-right: 1ch;
width: 1ch;
text-align: center;
}
}
}

View File

@@ -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;
@@ -101,8 +108,8 @@
} }
.sheet-header { .sheet-header {
flex: 0 0 100%;
align-items: flex-start; align-items: flex-start;
flex-wrap: wrap;
input { input {
flex: 0 0 3rem; flex: 0 0 3rem;
font-size: 1.5rem; font-size: 1.5rem;
@@ -230,12 +237,8 @@
} }
} }
.identity-content { .identity-content {
flex: 0 0 100%;
display: flex; display: flex;
flex-wrap: wrap; flex-wrap: wrap;
margin: 0;
padding-top: 0.25rem;
padding-left: 0.5rem;
li { li {
flex: 33%; flex: 33%;
&:nth-child(1), &:nth-child(1),
@@ -524,17 +527,6 @@
} }
.attribute-label { .attribute-label {
position: relative; position: relative;
&:before {
z-index: -1;
content: "";
position: absolute;
height: calc(100% - 0.85rem);
width: 3.1rem;
border: 1px solid $l5r5e-title;
border-radius: 0;
top: 0.15rem;
left: 0.15rem;
}
} }
.identity-content { .identity-content {
.attribute-label { .attribute-label {
@@ -633,19 +625,19 @@
} }
} }
.narrative-fluff { .narrative-fluff {
flex: 1;
flex: 0 0 50%; flex: 0 0 50%;
display: flex;
flex-direction: column;
.narrative-description { .narrative-description,
max-height: 13rem;
font-size: 0.85rem;
flex: 1;
}
.narrative-note { .narrative-note {
flex: 1;
font-size: 0.85rem; font-size: 0.85rem;
} max-height: 24rem;
.editor-content {
min-height: 10rem; .editor-container {
min-height: 18rem;
}
} }
} }
.techniques-wrapper { .techniques-wrapper {
@@ -769,10 +761,12 @@
} }
table { table {
border: none;
font-size: 0.85rem; font-size: 0.85rem;
color: $black-light; color: $black-light;
text-align: left; text-align: left;
thead { thead {
border: none;
font-family: $font-secondary; font-family: $font-secondary;
font-weight: normal; font-weight: normal;
th { th {
@@ -794,6 +788,7 @@
} }
} }
tbody { tbody {
border: none;
.curriculum { .curriculum {
flex: 0 0 2rem; flex: 0 0 2rem;
} }
@@ -831,8 +826,13 @@
width: 16px; width: 16px;
height: 16px; height: 16px;
border: none; border: none;
display: inline;
} }
} }
tfoot {
border: none;
text-align-last: center;
}
} }
.inventory { .inventory {

View File

@@ -21,442 +21,11 @@ button {
} }
} }
// sidebar .chat-message {
#sidebar { ul,li {
padding: 0.5rem 0.25rem 0.5rem 0.5rem; list-style: none;
background-position: top; margin: unset;
background-size: 100%; padding: unset;
background: url("../assets/ui/bgSidebar.webp") no-repeat;
border: 1px solid rgb(195, 165, 130);
border-radius: 0;
overflow: initial;
height: calc(100% - 1.1rem);
top: 0.2rem;
min-width: 20rem;
letter-spacing: 0.1rem;
position: relative;
margin-right: 0.5rem;
&:before {
z-index: -1;
content: "";
position: absolute;
height: calc(100% + 0.6rem);
width: 100%;
border: 1px solid rgb(195, 165, 130);
border-radius: 0;
top: -0.35rem;
left: 0.25rem;
}
#sidebar-tabs {
flex: 0 0 2rem;
box-sizing: border-box;
margin: 0 0 0.25rem;
border-bottom: 1px solid rgba(195, 165, 130, 0.5);
box-shadow: none;
display: flex;
i {
flex: 1;
width: 100%;
height: 100%;
background-repeat: no-repeat;
background-position: center;
background-size: 100%;
border-radius: 100%;
// v10 FA6+ color need to be set
&.fa-swords,
&.fa-user,
&.fa-cards {
color: black;
}
&.fa-comments {
background-image: url("../assets/ui/sidebar/chat.svg");
&:before {
content: "";
}
}
&.fa-fist-raised {
background-image: url("../assets/ui/sidebar/combat-tracker.svg");
background-size: 85%;
&:before {
content: "";
}
}
&.fa-map {
background-image: url("../assets/ui/sidebar/scenes.svg");
background-size: 80%;
&:before {
content: "";
}
}
&.fa-users {
background-image: url("../assets/ui/sidebar/actors.svg");
background-size: 90%;
&:before {
content: "";
}
}
&.fa-suitcase {
background-image: url("../assets/ui/sidebar/object.svg");
&:before {
content: "";
}
}
&.fa-book-open {
background-image: url("../assets/ui/sidebar/journal.svg");
&:before {
content: "";
}
}
&.fa-th-list {
background-image: url("../assets/ui/sidebar/rolltable.svg");
background-size: 85%;
&:before {
content: "";
}
}
&.fa-id-badge {
background-size: 85%;
color: black;
padding-left: 2px;
&:before {
content: "\f2c1";
}
}
&.fa-music {
background-image: url("../assets/ui/sidebar/playlist.svg");
background-size: 80%;
&:before {
content: "";
}
}
&.fa-atlas {
background-image: url("../assets/ui/sidebar/compendium.svg");
&:before {
content: "";
}
}
&.fa-cogs {
background-image: url("../assets/ui/sidebar/settings.svg");
background-size: 85%;
&:before {
content: "";
}
}
}
> .item {
flex: 0 0 1.5rem;
width: 1.5rem;
height: 1.5rem;
line-height: 1.5rem;
margin: 0.1rem;
border-radius: 100%;
background: $l5r5e-white;
&.active,
&:hover {
background: $white;
border: 1px solid $l5r5e-border-sidebar;
box-shadow: 0 0 10px $red;
}
}
.collapse {
position: relative;
flex: 0 0 0.85rem;
line-height: 1.75rem;
color: rgb(195, 165, 130);
text-align: center;
i {
background-color: transparent;
}
}
}
&.collapsed {
min-width: 0;
width: 3rem !important;
#sidebar-tabs {
> .item {
&.active {
border: 1px solid $l5r5e-border-sidebar;
box-shadow: 0 0 10px $l5r5e-white;
border-radius: 100%;
}
}
.collapse {
flex: 0 0 1.5rem;
margin: 0.1rem;
}
}
}
.sidebar-tab {
.chat-control-icon {
cursor: url("../assets/cursors/pointer.webp"), pointer;
}
.action-buttons button {
cursor: default;
color: $white;
background: linear-gradient(
$l5r5e-linear-gradient-third,
$l5r5e-linear-gradient-third-dark,
$l5r5e-linear-gradient-third
);
background-origin: padding-box;
border-image: url("../assets/ui/macro-button.webp") 10 repeat;
border-image-width: 0.5rem;
border-image-outset: 0px;
&:hover {
background: linear-gradient(
$l5r5e-linear-gradient-first-dark,
$l5r5e-linear-gradient-first,
$l5r5e-linear-gradient-first-dark
);
}
}
}
// Settings
#settings button {
cursor: default;
color: $white;
background: linear-gradient(
$l5r5e-linear-gradient-third,
$l5r5e-linear-gradient-third-dark,
$l5r5e-linear-gradient-third
);
background-origin: padding-box;
border-image: url("../assets/ui/macro-button.webp") 10 repeat;
border-image-width: 0.5rem;
border-image-outset: 0px;
&:hover {
background: linear-gradient(
$l5r5e-linear-gradient-first-dark,
$l5r5e-linear-gradient-first,
$l5r5e-linear-gradient-first-dark
);
}
}
// Chat
#chat-form textarea {
color: $black;
}
#chat-form textarea,
.chat-message,
.blind,
.whisper,
#chat-controls .roll-type-select,
.header-search input {
background: transparent url("../assets/ui/chat-texture.webp") repeat-y;
&:focus {
background: #f0f0e0 url("../assets/ui/chat-texture.webp") repeat-y;
}
}
.header-search input[name="search"] {
background-color: $l5r5e-chat-color;
color: $l5r5e-black;
&:focus {
background-color: $l5r5e-chat-color-roll;
}
}
// Chat-Message
.chat-message {
.message-header {
line-height: 2rem;
border-bottom: 1px solid rgba(0, 0, 0, 0.1);
margin-bottom: 0.25rem;
border-radius: 0;
}
}
#chat-log {
margin: 0 0 0.5rem;
font-size: 1rem;
.message.whisper,
.message.blind,
.message.roll {
position: relative;
.message-header {
.message-metadata:before {
position: absolute;
top: -0.5rem;
right: 0.25rem;
font-size: 0.5rem;
color: $l5r5e-red;
height: 0;
}
}
}
.message.whisper {
font-style: italic;
.message-header {
.message-metadata:before {
content: "(Private)";
}
}
&.roll {
.message-header {
.message-metadata:before {
content: "(Private Roll)";
}
}
}
}
.message.blind {
font-style: italic;
.message-header {
.message-metadata:before {
content: "(Blind)";
}
}
&.roll {
.message-header {
.message-metadata:before {
content: "(Blind Roll)";
}
}
}
}
.message.roll {
.message-header {
.message-metadata:before {
content: "(Roll)";
}
}
}
}
.message-sender {
color: $l5r5e-red;
text-shadow: 1px 1px 0px $l5r5e-black-light;
}
.message {
background-color: $l5r5e-chat-color;
color: $black-light;
ul {
li {
padding: 0.25rem;
border: 1px solid rgba(0, 0, 0, 0.05);
border-bottom: 0 none;
&:nth-child(odd) {
background: $l5r5e-odd;
}
&:nth-child(even) {
background: $l5r5e-even;
}
&:last-child {
border-bottom: 1px solid rgba(0, 0, 0, 0.05);
}
}
}
&.roll {
background-color: $l5r5e-chat-color-roll;
}
&.blind {
background-color: $l5r5e-chat-color-blind;
}
&.whisper {
background-color: $l5r5e-chat-color-whisper;
}
}
}
// hotbar
#hotbar {
//margin: 0;
#action-bar {
//flex: 0 0 100%;
.macro {
background-position: center;
background-size: 100%;
background: linear-gradient(
$l5r5e-linear-gradient-second,
$l5r5e-linear-gradient-second-dark,
$l5r5e-linear-gradient-second
);
background-origin: padding-box;
border-image: url("../assets/ui/macro-button.webp");
border-image-slice: 8 fill;
border-image-width: 0.25rem;
border-image-outset: 0;
border-radius: 0;
.macro-key {
background: $l5r5e-black;
}
&.active {
background: linear-gradient(
$l5r5e-linear-gradient-second-dark,
$l5r5e-linear-gradient-second,
$l5r5e-linear-gradient-second-dark
);
box-shadow: 1px 1px 10px $black inset;
border: 1px solid rgba(195, 165, 130, 0.5);
}
}
#macro-list {
background: transparent;
margin: 0;
padding: 0.05rem;
border-radius: 0;
border: 0 none;
box-shadow: 0.25rem 0.25rem 0.5rem $black-light;
}
}
.bar-controls {
background-position: center;
background-size: 100%;
background: linear-gradient(
$l5r5e-linear-gradient-second,
$l5r5e-linear-gradient-second-dark,
$l5r5e-linear-gradient-second
);
background-origin: padding-box;
border-image: url("../assets/ui/macro-button.webp") 15 repeat;
border-image-width: 0.5rem;
border-image-outset: 0px;
box-shadow: 0 0 0.25rem $black-light;
border-radius: 0;
margin: 0 0.5rem;
a.page-control,
span.page-number {
font-size: 1rem;
line-height: 0.95rem;
}
}
}
// players
#players {
border-radius: 0;
background-position: center;
background-size: 100%;
background: linear-gradient(
$l5r5e-linear-gradient-second,
$l5r5e-linear-gradient-second-dark,
$l5r5e-linear-gradient-second
);
background-origin: padding-box;
border: 1px solid rgb(195, 165, 130);
background-origin: padding-box;
border-image: url("../assets/ui/macro-button.webp") 15 repeat;
border-image-width: 0.5rem;
border-image-outset: 0px;
margin: 0;
padding: 0;
left: 0.2rem;
bottom: 0.65rem;
box-shadow: inset 0 0 0.5rem $black-light;
position: relative;
&:before {
z-index: -1;
position: absolute;
content: "";
background: transparent url("../assets/ui/players-border.webp") no-repeat 0 0;
background-size: 100%;
display: block;
top: -12px;
right: 10%;
left: 10%;
bottom: 0;
} }
} }
@@ -623,11 +192,14 @@ button {
border-right: 1px solid $l5r5e-white-light; border-right: 1px solid $l5r5e-white-light;
} }
li { li {
flex: 1;
cursor: url("../assets/cursors/pointer.webp"), pointer; cursor: url("../assets/cursors/pointer.webp"), pointer;
} }
} }
.prepared {
justify-content: space-evenly;
}
.encounter { .encounter {
justify-content: space-between;
i { i {
font-size: 23px; font-size: 23px;
vertical-align: middle; vertical-align: middle;
@@ -645,7 +217,6 @@ button {
&-icon { &-icon {
font-weight: 900; font-weight: 900;
font-family: "Font Awesome 5 Free";
-moz-osx-font-smoothing: grayscale; -moz-osx-font-smoothing: grayscale;
-webkit-font-smoothing: antialiased; -webkit-font-smoothing: antialiased;
display: inline-block; display: inline-block;
@@ -683,27 +254,7 @@ button {
} }
// Compendium // Compendium
.compendium, .directory-item {
.compendium-list {
.compendium-pack {
.pack-title {
margin: 0;
line-height: 1rem;
}
.compendium-footer {
text-align: right;
margin-right: 2rem;
font-size: 0.75rem;
color: rgba(240, 240, 225, 0.75);
}
}
.ring-filter,
.number-filter {
.selected {
background-image: radial-gradient(closest-side, yellow, transparent);
}
}
.ring-filter { .ring-filter {
i.i_earth, i.i_earth,
i.i_fire, i.i_fire,
@@ -713,20 +264,29 @@ button {
line-height: unset; // do not have it rised up line-height: unset; // do not have it rised up
} }
} }
.directory-item {
.ring-rarity-rank { .ring-rarity-rank {
flex: unset flex: unset
}
}
.not-for-players {
filter:brightness(0.5);
}
.compendium-header {
.ring-filter{
.selected {
filter: drop-shadow(0px 0px 5px yellow);
} }
} }
.rank-filter {
.not-for-players { .selected {
filter:brightness(0.5); filter: drop-shadow(0px 0px 5px yellow) drop-shadow(0px 0px 5px yellow) drop-shadow(0px 0px 5px yellow);
}
} }
l5r5e-multi-select { l5r5e-multi-select {
select {
background: rgba(255, 255, 245, 0.8); // same as the header-search in compendium popout
}
.input-element-tags { .input-element-tags {
max-height: 100px; max-height: 100px;
} }
@@ -860,14 +420,26 @@ button {
min-width: 240px; min-width: 240px;
.window-content { .window-content {
[data-application-part="hidden_tabs"] {
display: none;
}
table {
margin: 0;
overflow: auto;
}
form { form {
padding: 0 0.5rem; padding: 0 0.5rem;
} }
thead tr > th { thead tr > th {
background: rgba(186, 187, 177, 0.9); background: rgb(0 0 0 / 90%);
color: #cfcfcfc7;
position: sticky; position: sticky;
z-index: 2; z-index: 2;
top: 0; top: 0;
i.i_void:before {
color: rgba(207,207,207,.8);
}
} }
th, th,
td { td {
@@ -895,47 +467,38 @@ button {
} }
#l5r5e-gm-toolbox { #l5r5e-gm-toolbox {
//bottom: 0;
//right: 0.5rem;
display: flex; display: flex;
background-position: center;
background-size: 100%;
background: linear-gradient( background: linear-gradient(
$l5r5e-linear-gradient-second, $l5r5e-linear-gradient-second,
$l5r5e-linear-gradient-second-dark, $l5r5e-linear-gradient-second-dark,
$l5r5e-linear-gradient-second $l5r5e-linear-gradient-second
); );
background-origin: padding-box;
border: 1px solid rgb(195, 165, 130); border: 1px solid rgb(195, 165, 130);
background-origin: padding-box;
border-image: url("../assets/ui/macro-button.webp") 10 repeat;
border-image-width: 0.5rem;
border-image-outset: 0px;
padding: 0;
margin: 0.5rem; margin: 0.5rem;
.window-header { .window-header {
text-align: center;
border-bottom: 1px solid rgb(195, 165, 130); border-bottom: 1px solid rgb(195, 165, 130);
h4 { background: none; //keep the same background as the toolbox, not the default black opaque
.window-title {
text-align: center;
}
h1 {
letter-spacing: 0.25rem; letter-spacing: 0.25rem;
line-height: 2.25rem; line-height: 2.25rem;
color: $white-light; color: $white-light;
padding-top: 1ch;
} }
} }
.window-content { .window-content {
text-align: center; padding: 0;
vertical-align: middle;
background: transparent;
color: $white-light;
form {
padding: 0;
}
.gm-tools-container { .gm-tools-container {
color: var(--color-text-primary);
display: flex; display: flex;
font-size: 2rem; font-size: 2rem;
line-height: 2rem; line-height: 2rem;
min-height: 2rem; min-height: 2rem;
margin: 0; margin: 0;
padding: 0;
li { li {
flex: 1; flex: 1;
display: flex; display: flex;
@@ -1025,12 +588,15 @@ l5r5e-multi-select:has( > button.gm) {
} }
} }
#client-settings:has( l5r5e-multi-select) { form#settings-config {
.form-fields:has(l5r5e-multi-select) {
order: 3; // Move the multiselect to be below the title and description for nicer ui div.form-group:has(l5r5e-multi-select) {
.form-fields {
order: 3; // Move the multiselect to be below the title and description for nicer ui
}
} }
[data-setting-id="l5r5e.compendium-unofficial-content-for-players"] { div.form-group:has(#settings-config-l5r5e\.compendium-unofficial-content-for-players) {
// Move the tags and input fields to a similar place as for the multiselect // Move the tags and input fields to a similar place as for the multiselect
.form-fields { .form-fields {
order: 3; order: 3;
@@ -1043,9 +609,6 @@ l5r5e-multi-select:has( > button.gm) {
.autocomplete-wrapper { .autocomplete-wrapper {
position: relative;
display: inline-block;
.autocomplete-list { .autocomplete-list {
position: absolute; position: absolute;
border: 1px solid #6e7e6b; border: 1px solid #6e7e6b;

View File

@@ -7,12 +7,12 @@
"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.12.3/raw/l5r5e.zip?job=build", "download": "https://gitlab.com/teaml5r/l5r5e/-/jobs/artifacts/v1.13.1/raw/l5r5e.zip?job=build",
"version": "1.12.3", "version": "1.13.1",
"compatibility": { "compatibility": {
"minimum": "12", "minimum": "13",
"verified": "12", "verified": "13",
"maximum": "12" "maximum": "13"
}, },
"socket": true, "socket": true,
"authors": [ "authors": [

View File

@@ -61,6 +61,6 @@
</fieldset> </fieldset>
<fieldset class="army-abilities"> <fieldset class="army-abilities">
<legend>{{localize 'l5r5e.army.army_abilities'}}</legend> <legend>{{localize 'l5r5e.army.army_abilities'}}</legend>
{{editor data.enrichedHtml.army_abilities target="system.army_abilities" button=true editable=options.editable}} {{editor data.enrichedHtml.army_abilities target="system.army_abilities" button=true editable=options.editable engine="prosemirror" collaborate=false}}
</fieldset> </fieldset>
</div> </div>

View File

@@ -1,23 +1,23 @@
{{!-- Supplies and Logistics --}} {{!-- Supplies and Logistics --}}
<fieldset class="supplies_logistics"> <fieldset class="supplies_logistics">
<legend class="text-block-header">{{localize 'l5r5e.army.supplies_logistics'}}</legend> <legend class="text-block-header">{{localize 'l5r5e.army.supplies_logistics'}}</legend>
{{editor data.enrichedHtml.supplies_logistics target="system.supplies_logistics" button=true editable=options.editable}} {{editor data.enrichedHtml.supplies_logistics target="system.supplies_logistics" button=true editable=options.editable engine="prosemirror" collaborate=false}}
</fieldset> </fieldset>
{{!-- Past Battles --}} {{!-- Past Battles --}}
<fieldset class="past_battles"> <fieldset class="past_battles">
<legend class="text-block-header">{{localize 'l5r5e.army.past_battles'}}</legend> <legend class="text-block-header">{{localize 'l5r5e.army.past_battles'}}</legend>
{{editor data.enrichedHtml.past_battles target="system.past_battles" button=true editable=options.editable}} {{editor data.enrichedHtml.past_battles target="system.past_battles" button=true editable=options.editable engine="prosemirror" collaborate=false}}
</fieldset> </fieldset>
{{!-- Description (public) --}} {{!-- Description (public) --}}
<fieldset class="description"> <fieldset class="description">
<legend class="text-block-header">{{localize 'l5r5e.sheets.description'}}</legend> <legend class="text-block-header">{{localize 'l5r5e.sheets.description'}}</legend>
{{editor data.enrichedHtml.description target="system.description" button=true editable=options.editable}} {{editor data.enrichedHtml.description target="system.description" button=true editable=options.editable engine="prosemirror" collaborate=false}}
</fieldset> </fieldset>
{{!-- Notes (private) --}} {{!-- Notes (private) --}}
<fieldset class="note"> <fieldset class="note">
<legend class="text-block-header">{{localize 'l5r5e.sheets.notes'}}</legend> <legend class="text-block-header">{{localize 'l5r5e.sheets.notes'}}</legend>
{{editor data.enrichedHtml.notes target="system.notes" button=true editable=options.editable}} {{editor data.enrichedHtml.notes target="system.notes" button=true editable=options.editable engine="prosemirror" collaborate=false}}
</fieldset> </fieldset>

Some files were not shown because too many files have changed in this diff Show More