Compare commits

...

50 Commits

Author SHA1 Message Date
779b4c60f5 Release script
Some checks failed
Release Creation / build (release) Failing after 1m36s
2026-04-23 17:06:45 +02:00
84608ffbf7 Première release testée 2026-04-23 15:50:22 +02:00
2fbcfa52aa Première release testée 2026-04-23 15:49:58 +02:00
9e9d2c4f3e First round of changes 2026-04-23 14:31:06 +02:00
abe35cb537 First round of changes 2026-04-23 14:27:33 +02:00
f72230dd39 First round of changes 2026-04-23 14:27:27 +02:00
Vlyan
36a66d3eac Release v1.13.4 2026-03-01 12:39:48 +01:00
Vlyan
317411ce60 Sync languages files from English 2026-03-01 12:30:01 +01:00
Vlyan
3c6529bc99 Updated items from import 2026-03-01 12:04:57 +01:00
Litasa
061390df80 Edit CHANGELOG.md 2026-03-01 08:12:38 +00:00
Litasa
b4fd1c738f Updated CHANGELOG.md Release 1.13.4 2026-03-01 07:57:26 +00:00
Litasa
c7d6c6c5e5 Merge branch 'some_missing_items' into 'dev'
Updating compendiums:
* Adding some items for Starting Outfits that was not in the system
* Split Poison and Omamori into individual items since it makes sense
* Added the specific items contained in a "Travelers Pack"
* Added arrow types not added from core book

See merge request teaml5r/l5r5e!58
2026-03-01 07:39:24 +00:00
Litasa
31f094818e Updating compendiums:
* Adding some items for Starting Outfits that was not in the system
* Split Poison and Omamori into individual items since it makes sense (old items will now be generic)
* Added the specific items contained in a "Travelers Pack"
* Added arrow types not added from core book
2026-03-01 07:39:24 +00:00
Litasa
40afa53337 Merge branch 'better_select_for_combat_tracker' into 'dev'
Adding compendium style select circle for combat encounter. Removed styling...

See merge request teaml5r/l5r5e!62
2026-03-01 07:12:33 +00:00
Litasa
cb98d721c5 Adding compendium style select circle for combat encounter. Removed styling... 2026-03-01 07:12:32 +00:00
Litasa
6ba5137ea1 Added me (Litasa) to curret L5R team in README.md
Removed Carter from current L5R team.
2026-02-28 21:04:15 +00:00
Litasa
5377674a30 Merge branch 'issue_75_gm_toolbox_and_monitor_visibility_issues' into 'dev'
issue 75: Unable to see icons in GM ToolBox and text in GM Monitor

See merge request teaml5r/l5r5e!59
2026-02-28 20:58:16 +00:00
Litasa
f6ed462bce issue 75: Unable to see icons in GM ToolBox and text in GM Monitor 2026-02-28 20:58:16 +00:00
Litasa
890223021a Added Litasa as a maintainer 2026-02-27 18:14:43 +00:00
Litasa
b1f874b3c8 Merge branch 'refactor_compendium_pr' into 'dev'
Updating the compendium filter to make it more snappy

See merge request teaml5r/l5r5e!61
2026-02-27 04:15:11 +00:00
Litasa
2dd9ee19e9 Updating the compendium filter to make it more snappy 2026-02-27 04:15:10 +00:00
Litasa
aa203c546c Merge branch 'issue_74_wounded_condition_in_dice_picker' into 'dev'
Issue 74: Adding all active conditions to the top of dice-picker-dialog so you are...

See merge request teaml5r/l5r5e!60
2026-02-26 01:04:30 +00:00
Litasa
8f31031244 Issue 74: Adding all active conditions to the top of dice-picker-dialog so you are... 2026-02-26 01:04:30 +00:00
Litasa
84e367b79f Merge branch 'issue_64_next_rank_not_shown' into 'dev'
Issue 64: Fixing issue where the new rank did not show until after adding a new item....

See merge request teaml5r/l5r5e!57
2026-02-25 21:55:01 +00:00
Litasa
0854e25a66 Issue 64: Fixing issue where the new rank did not show until after adding a new item.... 2026-02-25 21:55:00 +00:00
Litasa
0c299db26f Merge branch 'issue_69_add_experience_button' into 'dev'
Issue 69: Adding incremental buttons to honor, glory and status. Renaming...

See merge request teaml5r/l5r5e!54
2026-02-25 21:39:21 +00:00
Litasa
f267d06536 Issue 69: Adding incremental buttons to honor, glory and status. Renaming... 2026-02-25 21:39:21 +00:00
Vlyan
494b027513 Merge branch 'issue72_missing_sidebar_icons' into 'dev'
Issue72: Missing Sidebar Icons

See merge request teaml5r/l5r5e!53
2026-02-25 08:08:10 +00:00
Litasa
35c58ff631 Issue72: Missing Sidebar Icons 2026-02-25 08:08:10 +00:00
Vlyan
e87cd6d73e Merge branch 'cruxis/update-wiki-content' into 'dev'
Cruxis/update wiki content

See merge request teaml5r/l5r5e!52
2026-02-25 08:05:13 +00:00
Norman Briggs
05b7a1181c Cruxis/update wiki content 2026-02-25 08:05:12 +00:00
Vlyan
2e91fe7ae4 Merge branch 'master' into 'dev'
Fix typo in English Courts of Stone title.

See merge request teaml5r/l5r5e!51
2026-02-25 08:03:34 +00:00
SagaTympana
9c3de358b3 Fix typo in English Courts of Stone title. 2026-02-06 13:03:01 -05:00
Vlyan
b1e73f0761 Release 1.13.3 2026-02-01 10:37:27 +01:00
Vlyan
222aa75a1d Added Translations for Tactical Grid, and some cleanup 2026-01-30 09:28:15 +01:00
Vlyan
caa78d7c45 Merge branch 'patch-1' into 'dev'
Title advancement auto-name/icon fix

See merge request teaml5r/l5r5e!50
2026-01-30 07:58:38 +00:00
SagaTympana
5edcaa373c Title advancement auto-name/icon fix 2026-01-30 07:58:38 +00:00
Vlyan
08e412b32f Merge branch 'tactical_range_bands_dev' into 'dev'
Tactical Grid Range Band

See merge request teaml5r/l5r5e!49
2026-01-07 13:31:28 +00:00
Litasa
4269946c30 Tactical Grid Range Band 2026-01-07 13:31:28 +00:00
Vlyan
607817302b Merge branch 'fix_demeanors_translation' into 'dev'
Update demeanors

See merge request teaml5r/l5r5e!48
2025-11-04 20:06:31 +00:00
Olivier Brencklé
dd39fa6113 Update demeanors 2025-11-04 20:06:30 +00:00
Vlyan
d035b963de Release 1.13.2 2025-10-18 13:37:02 +02:00
Vlyan
a14c26d168 Release 1.13.2 2025-10-18 13:26:32 +02:00
Vlyan
b25a25a94f Added handmade conditions icons by Nikotka - part 2 2025-10-18 10:23:55 +02:00
Vlyan
98ffb27db7 Added handmade conditions icons by Nikotka 2025-10-06 17:02:10 +02:00
Vlyan
a6e0f60665 Merge branch 'patch-1' into 'dev'
Edit es-es.json

See merge request teaml5r/l5r5e!47
2025-10-06 14:59:24 +00:00
Alejabar
8488ed1bd1 Edit es-es.json 2025-10-06 14:59:23 +00:00
Vlyan
dda47c51a8 20Q autocomplete and menu css fixes 2025-09-27 10:56:06 +02:00
Vlyan
a2285931b3 unduplicate Astrolab name for Unicorn version (Mantis untouched) 2025-09-26 11:25:49 +02:00
Vlyan
37b8956048 Fix for pressing key "Enter" in input trigger "no active Encounter..." message. 2025-09-25 17:45:45 +02:00
214 changed files with 9707 additions and 1564 deletions

View File

@@ -0,0 +1,91 @@
name: Release Creation
on:
release:
types: [published]
jobs:
build:
runs-on: ubuntu-latest
steps:
- run: echo "💡 The ${{ gitea.repository }} repository will be cloned to the runner."
- uses: https://github.com/RouxAntoine/checkout@v3.5.4
# get part of the tag after the `v`
- name: Extract tag version number
id: get_version
uses: https://github.com/battila7/get-version-action@v2
# Compile SCSS → CSS before packaging
- name: Setup Node.js
uses: https://github.com/actions/setup-node@v3
with:
node-version: '18'
- name: Install dependencies and compile styles
run: npm ci && npm run compile
# Substitute the Manifest and Download URLs in system.json
- name: Substitute Manifest and Download Links For Versioned Ones
id: sub_manifest_link_version
uses: https://github.com/microsoft/variable-substitution@v1
with:
files: "system/system.json"
env:
version: ${{steps.get_version.outputs.version-without-v}}
url: https://www.uberwald.me/gitea/uberwald/l5rx-chiaroscuro
manifest: https://www.uberwald.me/gitea/uberwald/l5rx-chiaroscuro/releases/download/latest/system.json
download: https://www.uberwald.me/gitea/uberwald/l5rx-chiaroscuro/releases/download/${{github.event.release.tag_name}}/l5rx-chiaroscuro.zip
# Copy versioned system.json to root so it can be uploaded as-is
- name: Copy system.json to root
run: cp system/system.json system.json
# Create a zip file with all files required by the system
- run: |
apt update -y
apt install -y zip
- run: |
cd system
zip -r ../l5rx-chiaroscuro.zip \
assets/ \
babele/ \
fonts/ \
lang/ \
lib/ \
macros/ \
packs/ \
scripts/ \
styles/ \
templates/ \
system.json \
template.json
cd ..
zip -j ./l5rx-chiaroscuro.zip README.md CHANGELOG.md LICENSE.md
- name: Setup Go
uses: https://github.com/actions/setup-go@v4
with:
go-version: ">=1.20.1"
- name: Upload release assets to Gitea
id: use-go-action
uses: https://gitea.com/actions/release-action@main
with:
files: |-
./l5rx-chiaroscuro.zip
system.json
api_key: "${{secrets.ALLOW_PUSH_RELEASE}}"
- name: Publish to Foundry server
uses: https://github.com/djlechuck/foundryvtt-publish-package-action@v1
with:
token: ${{ secrets.FOUNDRYVTT_RELEASE_TOKEN }}
id: 'l5rx-chiaroscuro'
version: ${{github.event.release.tag_name}}
manifest: 'https://www.uberwald.me/gitea/uberwald/l5rx-chiaroscuro/releases/download/latest/system.json'
notes: 'https://www.uberwald.me/gitea/uberwald/l5rx-chiaroscuro/releases/tag/${{github.event.release.tag_name}}'
compatibility-minimum: '13'
compatibility-verified: '14'

2
.gitignore vendored
View File

@@ -13,3 +13,5 @@ system/l5r5e.lock
# v11 db files (will be added later) # v11 db files (will be added later)
system/packs/*/** system/packs/*/**
.github/
.history/

View File

@@ -6,9 +6,35 @@ 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.4 - 01/03/2026 - UI Polish, Compendium Upgrades
Welcoming Litasa as a maintainer for the system!
- Fixing type in Courts of Stone title, thanks to SagaTympana (!51).
- Update to the [development wiki](https://gitlab.com/teaml5r/l5r5e/-/wikis/home), thanks to Norman Briggs (!52)
- Updating the sidebar icons to show L5r5e specific ones (#72)(!53) (Litasa)
- Adding incremental buttons for honor, glory, and status (#69)(!54) (Litasa)
- New rank is now shown directly when completing a school rank (#64)(!57) (Litasa)
- Adding Starting items to Compendiums that was missing. Split Poison and Omamori into individual items(!58) (Litasa)
- Some combinations of light and dark theme made the GM Toolbox and GM Monitor hard/impossible to use. Fixed now (#75)(!59) (Litasa)
- Conditions now show in the top of dice-picker and roll-n-keep (related to #74)(!60) (Litasa)
- Compendium filter is now a lot "snappier". New search box and now able to multi select elements/ranks/rarity. (!61) (Litasa)
- Adding selection circle to Combat encounter (!62) (Litasa)
## 1.13.3 - 01/02/2026 - Tactical Grid & Fixes
- Updated demeanors from books up to Imperfect Land (included), thanks to Olivier Brencklé (!48).
- Added Tactical Grid Range Band, thanks to Litasa (!49).
- Fix Title advancement auto-name/icon, thanks to SagaTympana (!50).
## 1.13.2 - 18/10/2025 - Conditions Icons & Fixes
- Fix Actor Sheet for pressing key `Enter` in input trigger `no active Encounter...` message.
- Fix Compendium `Astrolab` is duplicate with `Mantis Clan` and `Children of the Five Winds`. Renamed the `cotfw` version to `Astrolabe (Unicorn)`.
- Fix 20Q autocomplete and menu css.
- Added handmade conditions icons by Nikotka (thx to rex35game for the share).
- Spanish language updated thanks to Alejabarr.
## 1.13.1 - 21/09/2025 - Conditions & Fixes ## 1.13.1 - 21/09/2025 - Conditions & Fixes
- Fix for Clicking on items doesn't show item window (#65 Thx to Litasa) - Fix for Clicking on items doesn't show item window (#65 Thx to Litasa).
- Fix for fade configuration (#66) - Fix for fade configuration (#66).
- Added some Tooltips loading optimizations (#62 Thanks to KitCat). - Added some Tooltips loading optimizations (#62 Thanks to KitCat).
- Added some Properties loading optimizations (#63 Thanks to KitCat). - Added some Properties loading optimizations (#63 Thanks to KitCat).
- Conditions changes : - Conditions changes :

View File

@@ -18,13 +18,14 @@ See the [Wiki page - Installation](https://gitlab.com/teaml5r/l5r5e/-/wikis/user
## Current L5R team (alphabetical order) ## Current L5R team (alphabetical order)
- Carter (compendiums, adventure adaptation) - Litasa (development)
- Vlyan (development) - Vlyan (development)
## Historical L5R team (alphabetical order) ## Historical L5R team (alphabetical order)
- Carter (compendiums, adventure adaptation) - Carter (compendiums, adventure adaptation)
- Hrunh (compendiums, pre-gen characters adaptation) - Hrunh (compendiums, pre-gen characters adaptation)
- Litasa (development)
- Mandar (development) - Mandar (development)
- Sasmira (contributor) - Sasmira (contributor)
- Vlyan (development) - Vlyan (development)

Binary file not shown.

4
package-lock.json generated
View File

@@ -1,11 +1,11 @@
{ {
"name": "l5r5e", "name": "l5rx-chiaroscuro",
"version": "1.0.0", "version": "1.0.0",
"lockfileVersion": 2, "lockfileVersion": 2,
"requires": true, "requires": true,
"packages": { "packages": {
"": { "": {
"name": "l5r5e", "name": "l5rx-chiaroscuro",
"version": "1.0.0", "version": "1.0.0",
"license": "ISC", "license": "ISC",
"devDependencies": { "devDependencies": {

View File

@@ -1,5 +1,5 @@
{ {
"name": "l5r5e", "name": "l5rx-chiaroscuro",
"version": "1.0.0", "version": "1.0.0",
"description": "This is a game system for Legend of the Five Rings (5th edition) by Edge Studio", "description": "This is a game system for Legend of the Five Rings (5th edition) by Edge Studio",
"main": "index.js", "main": "index.js",

View File

@@ -0,0 +1,393 @@
{
"id": "l5rx-chiaroscuro",
"title": "Legend of the Five Rings (5th Edition)",
"description": "This is an authorised multilingual game system En|Fr|Es, for Legend of the Five Rings (5th Edition) by <a href='https://edge-studio.net/'>Edge Studio</a> <p> - Join the official Discord server: <a href='https://discord.gg/foundryvtt'> Official Discord</a></p><p> - Rejoignez la communauté Francophone: <a href='https://discord.gg/pPSDNJk'>Francophone Discord</a></p>",
"url": "https://gitlab.com/teaml5r/l5r5e",
"readme": "https://gitlab.com/teaml5r/l5r5e/-/blob/master/README.md",
"changelog": "https://gitlab.com/teaml5r/l5r5e/-/blob/master/CHANGELOG.md",
"license": "https://gitlab.com/teaml5r/l5r5e/-/blob/master/LICENSE.md",
"manifest": "https://gitlab.com/teaml5r/l5r5e/-/raw/master/system/system.json",
"download": "https://gitlab.com/teaml5r/l5r5e/-/jobs/artifacts/v1.13.4/raw/l5r5e.zip?job=build",
"version": "1.13.4",
"compatibility": {
"minimum": "13",
"verified": "14"
},
"socket": true,
"authors": [
{
"name": "Vlyan",
"discord": "Vlyan#6771",
"url": "https://ko-fi.com/vlyan"
},
{
"name": "Mandar",
"discord": "Mandar#3440"
},
{
"name": "Carter",
"discord": "Carter#2703",
"url": "https://fr.tipeee.com/carter-foundryvtt"
},
{
"name": "Litasa",
"discord": "Litasa#3139"
}
],
"background": "systems/l5r5e/assets/l5r-header.webp",
"scripts": [],
"esmodules": [
"./scripts/main-l5r5e.js"
],
"styles": [
"./styles/l5r5e.css"
],
"packFolders": [
{
"name": "L5R5e System",
"color": "#9a0909",
"sorting": "m",
"folders": [
{
"name": "Character related",
"color": "#019806",
"sorting": "m",
"packs": [
"core-peculiarities-distinctions",
"core-peculiarities-passions",
"core-peculiarities-adversities",
"core-peculiarities-anxieties",
"core-bonds",
"core-titles",
"core-journal-school-curriculum",
"core-journal-great-clans-presentation"
]
},
{
"name": "Techniques",
"color": "#4b1eb3",
"sorting": "m",
"packs": [
"core-techniques-kata",
"core-techniques-kiho",
"core-techniques-inversions",
"core-techniques-invocations",
"core-techniques-rituals",
"core-techniques-shuji",
"core-techniques-maho",
"core-techniques-ninjutsu",
"core-techniques-mantra",
"core-techniques-school",
"core-techniques-mastery"
]
},
{
"name": "Objects related",
"color": "#0985ae",
"sorting": "m",
"packs": [
"core-properties",
"core-item-patterns",
"core-items",
"core-armors",
"core-weapons",
"core-signature-scrolls",
"core-celestial-implement-boons"
]
},
{
"name": "Helpers",
"color": "#6b3d1f",
"sorting": "m",
"packs": [
"core-journal-conditions",
"core-journal-terrain-qualities",
"core-journal-opportunities"
]
},
{
"name": "Tools",
"color": "#834949",
"sorting": "m",
"packs": [
"core-name-tables",
"core-macros"
]
}
]
}
],
"packs": [
{
"name": "core-properties",
"label": "Properties",
"path": "packs/core-properties.db",
"type": "Item",
"system": "l5r5e"
},
{
"name": "core-techniques-kata",
"label": "Techniques Kata",
"path": "packs/core-techniques-kata.db",
"type": "Item",
"system": "l5r5e"
},
{
"name": "core-techniques-kiho",
"label": "Techniques Kihõ",
"path": "packs/core-techniques-kiho.db",
"type": "Item",
"system": "l5r5e"
},
{
"name": "core-techniques-inversions",
"label": "Techniques Inversions",
"path": "packs/core-techniques-inversions.db",
"type": "Item",
"system": "l5r5e"
},
{
"name": "core-techniques-invocations",
"label": "Techniques Invocations",
"path": "packs/core-techniques-invocations.db",
"type": "Item",
"system": "l5r5e"
},
{
"name": "core-techniques-rituals",
"label": "Techniques Rituals",
"path": "packs/core-techniques-rituals.db",
"type": "Item",
"system": "l5r5e"
},
{
"name": "core-techniques-shuji",
"label": "Techniques Shuji",
"path": "packs/core-techniques-shuji.db",
"type": "Item",
"system": "l5r5e"
},
{
"name": "core-techniques-maho",
"label": "Techniques Mahõ",
"path": "packs/core-techniques-maho.db",
"type": "Item",
"system": "l5r5e"
},
{
"name": "core-techniques-ninjutsu",
"label": "Techniques Ninjutsu",
"path": "packs/core-techniques-ninjutsu.db",
"type": "Item",
"system": "l5r5e"
},
{
"name": "core-techniques-mantra",
"label": "Techniques Mantra",
"path": "packs/core-techniques-mantra.db",
"type": "Item",
"system": "l5r5e"
},
{
"name": "core-techniques-school",
"label": "School Abilities",
"path": "packs/core-techniques-school.db",
"type": "Item",
"system": "l5r5e"
},
{
"name": "core-techniques-mastery",
"label": "Mastery Abilities",
"path": "packs/core-techniques-mastery.db",
"type": "Item",
"system": "l5r5e"
},
{
"name": "core-items",
"label": "Items",
"path": "packs/core-items.db",
"type": "Item",
"system": "l5r5e"
},
{
"name": "core-armors",
"label": "Armors",
"path": "packs/core-armors.db",
"type": "Item",
"system": "l5r5e"
},
{
"name": "core-weapons",
"label": "Weapons",
"path": "packs/core-weapons.db",
"type": "Item",
"system": "l5r5e"
},
{
"name": "core-peculiarities-distinctions",
"label": "Distinctions",
"path": "packs/core-peculiarities-distinctions.db",
"type": "Item",
"system": "l5r5e"
},
{
"name": "core-peculiarities-passions",
"label": "Passions",
"path": "packs/core-peculiarities-passions.db",
"type": "Item",
"system": "l5r5e"
},
{
"name": "core-peculiarities-adversities",
"label": "Adversities",
"path": "packs/core-peculiarities-adversities.db",
"type": "Item",
"system": "l5r5e"
},
{
"name": "core-peculiarities-anxieties",
"label": "Anxieties",
"path": "packs/core-peculiarities-anxieties.db",
"type": "Item",
"system": "l5r5e"
},
{
"name": "core-bonds",
"label": "Bonds",
"path": "packs/core-bonds.db",
"type": "Item",
"system": "l5r5e"
},
{
"name": "core-titles",
"label": "Titles",
"path": "packs/core-titles.db",
"type": "Item",
"system": "l5r5e"
},
{
"name": "core-item-patterns",
"label": "Item Patterns",
"path": "packs/core-item-patterns.db",
"type": "Item",
"system": "l5r5e"
},
{
"name": "core-signature-scrolls",
"label": "Signature Scrolls",
"path": "packs/core-signature-scrolls.db",
"type": "Item",
"system": "l5r5e"
},
{
"name": "core-celestial-implement-boons",
"label": "Celestial Implement Boons",
"path": "packs/core-celestial-implement-boons.db",
"type": "Item",
"system": "l5r5e"
},
{
"name": "core-journal-school-curriculum",
"label": "School Curriculum",
"path": "packs/core-journal-school-curriculum.db",
"type": "JournalEntry",
"system": "l5r5e"
},
{
"name": "core-journal-conditions",
"label": "Conditions",
"path": "packs/core-journal-conditions.db",
"type": "JournalEntry",
"system": "l5r5e"
},
{
"name": "core-journal-terrain-qualities",
"label": "Terrain Qualities",
"path": "packs/core-journal-terrain-qualities.db",
"type": "JournalEntry",
"system": "l5r5e"
},
{
"name": "core-journal-great-clans-presentation",
"label": "Great Clans Presentation",
"path": "packs/core-journal-great-clans-presentation.db",
"type": "JournalEntry",
"system": "l5r5e"
},
{
"name": "core-journal-opportunities",
"label": "Opportunities",
"path": "packs/core-journal-opportunities.db",
"type": "JournalEntry",
"system": "l5r5e"
},
{
"name": "core-name-tables",
"label": "Name Tables",
"path": "packs/core-name-tables.db",
"type": "RollTable",
"system": "l5r5e"
},
{
"name": "core-macros",
"label": "L5R5E Macros",
"path": "packs/core-macros.db",
"type": "Macro",
"system": "l5r5e"
}
],
"languages": [
{
"lang": "en",
"name": "English",
"path": "lang/en-en.json"
},
{
"lang": "fr",
"name": "French (France)",
"path": "lang/fr-fr.json"
},
{
"lang": "es",
"name": "Spanish (Spain)",
"path": "lang/es-es.json"
},
{
"lang": "it",
"name": "Italian (Italy)",
"path": "lang/it-it.json"
}
],
"media": [
{
"type": "screenshot",
"url": "https://gitlab.com/teaml5r/l5r5e/-/raw/master/screenshoots/login.jpg?raw=true",
"caption": "Login screen"
},
{
"type": "screenshot",
"url": "https://gitlab.com/teaml5r/l5r5e/-/raw/master/screenshoots/roll.jpg?raw=true",
"caption": "DicePicker and Roll and Keep"
},
{
"type": "screenshot",
"url": "https://gitlab.com/teaml5r/l5r5e/-/raw/master/screenshoots/school.jpg?raw=true",
"caption": "Experience and School"
},
{
"type": "screenshot",
"url": "https://gitlab.com/teaml5r/l5r5e/-/raw/master/screenshoots/sheet_pc.jpg?raw=true",
"caption": "PC sheet"
},
{
"type": "screenshot",
"url": "https://gitlab.com/teaml5r/l5r5e/-/raw/master/screenshoots/sheet_npc_army.jpg?raw=true",
"caption": "NPC and Army sheets"
},
{
"type": "screenshot",
"url": "https://gitlab.com/teaml5r/l5r5e/-/raw/master/screenshoots/compendiums.jpg?raw=true",
"caption": "Compendiums"
}
]
}

View File

@@ -0,0 +1,393 @@
{
"id": "l5rx-chiaroscuro",
"title": "Legend of the Five Rings (5th Edition)",
"description": "This is an authorised multilingual game system En|Fr|Es, for Legend of the Five Rings (5th Edition) by <a href='https://edge-studio.net/'>Edge Studio</a> <p> - Join the official Discord server: <a href='https://discord.gg/foundryvtt'> Official Discord</a></p><p> - Rejoignez la communauté Francophone: <a href='https://discord.gg/pPSDNJk'>Francophone Discord</a></p>",
"url": "https://gitlab.com/teaml5r/l5r5e",
"readme": "https://gitlab.com/teaml5r/l5r5e/-/blob/master/README.md",
"changelog": "https://gitlab.com/teaml5r/l5r5e/-/blob/master/CHANGELOG.md",
"license": "https://gitlab.com/teaml5r/l5r5e/-/blob/master/LICENSE.md",
"manifest": "https://gitlab.com/teaml5r/l5r5e/-/raw/master/system/system.json",
"download": "https://gitlab.com/teaml5r/l5r5e/-/jobs/artifacts/v1.13.4/raw/l5r5e.zip?job=build",
"version": "1.13.4",
"compatibility": {
"minimum": "13",
"verified": "14"
},
"socket": true,
"authors": [
{
"name": "Vlyan",
"discord": "Vlyan#6771",
"url": "https://ko-fi.com/vlyan"
},
{
"name": "Mandar",
"discord": "Mandar#3440"
},
{
"name": "Carter",
"discord": "Carter#2703",
"url": "https://fr.tipeee.com/carter-foundryvtt"
},
{
"name": "Litasa",
"discord": "Litasa#3139"
}
],
"background": "systems/l5r5e/assets/l5r-header.webp",
"scripts": [],
"esmodules": [
"./scripts/main-l5r5e.js"
],
"styles": [
"./styles/l5r5e.css"
],
"packFolders": [
{
"name": "L5R5e System",
"color": "#9a0909",
"sorting": "m",
"folders": [
{
"name": "Character related",
"color": "#019806",
"sorting": "m",
"packs": [
"core-peculiarities-distinctions",
"core-peculiarities-passions",
"core-peculiarities-adversities",
"core-peculiarities-anxieties",
"core-bonds",
"core-titles",
"core-journal-school-curriculum",
"core-journal-great-clans-presentation"
]
},
{
"name": "Techniques",
"color": "#4b1eb3",
"sorting": "m",
"packs": [
"core-techniques-kata",
"core-techniques-kiho",
"core-techniques-inversions",
"core-techniques-invocations",
"core-techniques-rituals",
"core-techniques-shuji",
"core-techniques-maho",
"core-techniques-ninjutsu",
"core-techniques-mantra",
"core-techniques-school",
"core-techniques-mastery"
]
},
{
"name": "Objects related",
"color": "#0985ae",
"sorting": "m",
"packs": [
"core-properties",
"core-item-patterns",
"core-items",
"core-armors",
"core-weapons",
"core-signature-scrolls",
"core-celestial-implement-boons"
]
},
{
"name": "Helpers",
"color": "#6b3d1f",
"sorting": "m",
"packs": [
"core-journal-conditions",
"core-journal-terrain-qualities",
"core-journal-opportunities"
]
},
{
"name": "Tools",
"color": "#834949",
"sorting": "m",
"packs": [
"core-name-tables",
"core-macros"
]
}
]
}
],
"packs": [
{
"name": "core-properties",
"label": "Properties",
"path": "packs/core-properties.db",
"type": "Item",
"system": "l5r5e"
},
{
"name": "core-techniques-kata",
"label": "Techniques Kata",
"path": "packs/core-techniques-kata.db",
"type": "Item",
"system": "l5r5e"
},
{
"name": "core-techniques-kiho",
"label": "Techniques Kihõ",
"path": "packs/core-techniques-kiho.db",
"type": "Item",
"system": "l5r5e"
},
{
"name": "core-techniques-inversions",
"label": "Techniques Inversions",
"path": "packs/core-techniques-inversions.db",
"type": "Item",
"system": "l5r5e"
},
{
"name": "core-techniques-invocations",
"label": "Techniques Invocations",
"path": "packs/core-techniques-invocations.db",
"type": "Item",
"system": "l5r5e"
},
{
"name": "core-techniques-rituals",
"label": "Techniques Rituals",
"path": "packs/core-techniques-rituals.db",
"type": "Item",
"system": "l5r5e"
},
{
"name": "core-techniques-shuji",
"label": "Techniques Shuji",
"path": "packs/core-techniques-shuji.db",
"type": "Item",
"system": "l5r5e"
},
{
"name": "core-techniques-maho",
"label": "Techniques Mahõ",
"path": "packs/core-techniques-maho.db",
"type": "Item",
"system": "l5r5e"
},
{
"name": "core-techniques-ninjutsu",
"label": "Techniques Ninjutsu",
"path": "packs/core-techniques-ninjutsu.db",
"type": "Item",
"system": "l5r5e"
},
{
"name": "core-techniques-mantra",
"label": "Techniques Mantra",
"path": "packs/core-techniques-mantra.db",
"type": "Item",
"system": "l5r5e"
},
{
"name": "core-techniques-school",
"label": "School Abilities",
"path": "packs/core-techniques-school.db",
"type": "Item",
"system": "l5r5e"
},
{
"name": "core-techniques-mastery",
"label": "Mastery Abilities",
"path": "packs/core-techniques-mastery.db",
"type": "Item",
"system": "l5r5e"
},
{
"name": "core-items",
"label": "Items",
"path": "packs/core-items.db",
"type": "Item",
"system": "l5r5e"
},
{
"name": "core-armors",
"label": "Armors",
"path": "packs/core-armors.db",
"type": "Item",
"system": "l5r5e"
},
{
"name": "core-weapons",
"label": "Weapons",
"path": "packs/core-weapons.db",
"type": "Item",
"system": "l5r5e"
},
{
"name": "core-peculiarities-distinctions",
"label": "Distinctions",
"path": "packs/core-peculiarities-distinctions.db",
"type": "Item",
"system": "l5r5e"
},
{
"name": "core-peculiarities-passions",
"label": "Passions",
"path": "packs/core-peculiarities-passions.db",
"type": "Item",
"system": "l5r5e"
},
{
"name": "core-peculiarities-adversities",
"label": "Adversities",
"path": "packs/core-peculiarities-adversities.db",
"type": "Item",
"system": "l5r5e"
},
{
"name": "core-peculiarities-anxieties",
"label": "Anxieties",
"path": "packs/core-peculiarities-anxieties.db",
"type": "Item",
"system": "l5r5e"
},
{
"name": "core-bonds",
"label": "Bonds",
"path": "packs/core-bonds.db",
"type": "Item",
"system": "l5r5e"
},
{
"name": "core-titles",
"label": "Titles",
"path": "packs/core-titles.db",
"type": "Item",
"system": "l5r5e"
},
{
"name": "core-item-patterns",
"label": "Item Patterns",
"path": "packs/core-item-patterns.db",
"type": "Item",
"system": "l5r5e"
},
{
"name": "core-signature-scrolls",
"label": "Signature Scrolls",
"path": "packs/core-signature-scrolls.db",
"type": "Item",
"system": "l5r5e"
},
{
"name": "core-celestial-implement-boons",
"label": "Celestial Implement Boons",
"path": "packs/core-celestial-implement-boons.db",
"type": "Item",
"system": "l5r5e"
},
{
"name": "core-journal-school-curriculum",
"label": "School Curriculum",
"path": "packs/core-journal-school-curriculum.db",
"type": "JournalEntry",
"system": "l5r5e"
},
{
"name": "core-journal-conditions",
"label": "Conditions",
"path": "packs/core-journal-conditions.db",
"type": "JournalEntry",
"system": "l5r5e"
},
{
"name": "core-journal-terrain-qualities",
"label": "Terrain Qualities",
"path": "packs/core-journal-terrain-qualities.db",
"type": "JournalEntry",
"system": "l5r5e"
},
{
"name": "core-journal-great-clans-presentation",
"label": "Great Clans Presentation",
"path": "packs/core-journal-great-clans-presentation.db",
"type": "JournalEntry",
"system": "l5r5e"
},
{
"name": "core-journal-opportunities",
"label": "Opportunities",
"path": "packs/core-journal-opportunities.db",
"type": "JournalEntry",
"system": "l5r5e"
},
{
"name": "core-name-tables",
"label": "Name Tables",
"path": "packs/core-name-tables.db",
"type": "RollTable",
"system": "l5r5e"
},
{
"name": "core-macros",
"label": "L5R5E Macros",
"path": "packs/core-macros.db",
"type": "Macro",
"system": "l5r5e"
}
],
"languages": [
{
"lang": "en",
"name": "English",
"path": "lang/en-en.json"
},
{
"lang": "fr",
"name": "French (France)",
"path": "lang/fr-fr.json"
},
{
"lang": "es",
"name": "Spanish (Spain)",
"path": "lang/es-es.json"
},
{
"lang": "it",
"name": "Italian (Italy)",
"path": "lang/it-it.json"
}
],
"media": [
{
"type": "screenshot",
"url": "https://gitlab.com/teaml5r/l5r5e/-/raw/master/screenshoots/login.jpg?raw=true",
"caption": "Login screen"
},
{
"type": "screenshot",
"url": "https://gitlab.com/teaml5r/l5r5e/-/raw/master/screenshoots/roll.jpg?raw=true",
"caption": "DicePicker and Roll and Keep"
},
{
"type": "screenshot",
"url": "https://gitlab.com/teaml5r/l5r5e/-/raw/master/screenshoots/school.jpg?raw=true",
"caption": "Experience and School"
},
{
"type": "screenshot",
"url": "https://gitlab.com/teaml5r/l5r5e/-/raw/master/screenshoots/sheet_pc.jpg?raw=true",
"caption": "PC sheet"
},
{
"type": "screenshot",
"url": "https://gitlab.com/teaml5r/l5r5e/-/raw/master/screenshoots/sheet_npc_army.jpg?raw=true",
"caption": "NPC and Army sheets"
},
{
"type": "screenshot",
"url": "https://gitlab.com/teaml5r/l5r5e/-/raw/master/screenshoots/compendiums.jpg?raw=true",
"caption": "Compendiums"
}
]
}

View File

@@ -0,0 +1,393 @@
{
"id": "l5rx-chiaroscuro",
"title": "Legend of the Five Rings (5th Edition)",
"description": "This is an authorised multilingual game system En|Fr|Es, for Legend of the Five Rings (5th Edition) by <a href='https://edge-studio.net/'>Edge Studio</a> <p> - Join the official Discord server: <a href='https://discord.gg/foundryvtt'> Official Discord</a></p><p> - Rejoignez la communauté Francophone: <a href='https://discord.gg/pPSDNJk'>Francophone Discord</a></p>",
"url": "https://gitlab.com/teaml5r/l5r5e",
"readme": "https://gitlab.com/teaml5r/l5r5e/-/blob/master/README.md",
"changelog": "https://gitlab.com/teaml5r/l5r5e/-/blob/master/CHANGELOG.md",
"license": "https://gitlab.com/teaml5r/l5r5e/-/blob/master/LICENSE.md",
"manifest": "https://gitlab.com/teaml5r/l5r5e/-/raw/master/system/system.json",
"download": "https://gitlab.com/teaml5r/l5r5e/-/jobs/artifacts/v1.13.4/raw/l5r5e.zip?job=build",
"version": "14.0.0",
"compatibility": {
"minimum": "13",
"verified": "14"
},
"socket": true,
"authors": [
{
"name": "Vlyan",
"discord": "Vlyan#6771",
"url": "https://ko-fi.com/vlyan"
},
{
"name": "Mandar",
"discord": "Mandar#3440"
},
{
"name": "Carter",
"discord": "Carter#2703",
"url": "https://fr.tipeee.com/carter-foundryvtt"
},
{
"name": "Litasa",
"discord": "Litasa#3139"
}
],
"background": "systems/l5r5e/assets/l5r-header.webp",
"scripts": [],
"esmodules": [
"./scripts/main-l5r5e.js"
],
"styles": [
"./styles/l5r5e.css"
],
"packFolders": [
{
"name": "L5R5e System",
"color": "#9a0909",
"sorting": "m",
"folders": [
{
"name": "Character related",
"color": "#019806",
"sorting": "m",
"packs": [
"core-peculiarities-distinctions",
"core-peculiarities-passions",
"core-peculiarities-adversities",
"core-peculiarities-anxieties",
"core-bonds",
"core-titles",
"core-journal-school-curriculum",
"core-journal-great-clans-presentation"
]
},
{
"name": "Techniques",
"color": "#4b1eb3",
"sorting": "m",
"packs": [
"core-techniques-kata",
"core-techniques-kiho",
"core-techniques-inversions",
"core-techniques-invocations",
"core-techniques-rituals",
"core-techniques-shuji",
"core-techniques-maho",
"core-techniques-ninjutsu",
"core-techniques-mantra",
"core-techniques-school",
"core-techniques-mastery"
]
},
{
"name": "Objects related",
"color": "#0985ae",
"sorting": "m",
"packs": [
"core-properties",
"core-item-patterns",
"core-items",
"core-armors",
"core-weapons",
"core-signature-scrolls",
"core-celestial-implement-boons"
]
},
{
"name": "Helpers",
"color": "#6b3d1f",
"sorting": "m",
"packs": [
"core-journal-conditions",
"core-journal-terrain-qualities",
"core-journal-opportunities"
]
},
{
"name": "Tools",
"color": "#834949",
"sorting": "m",
"packs": [
"core-name-tables",
"core-macros"
]
}
]
}
],
"packs": [
{
"name": "core-properties",
"label": "Properties",
"path": "packs/core-properties.db",
"type": "Item",
"system": "l5r5e"
},
{
"name": "core-techniques-kata",
"label": "Techniques Kata",
"path": "packs/core-techniques-kata.db",
"type": "Item",
"system": "l5r5e"
},
{
"name": "core-techniques-kiho",
"label": "Techniques Kihõ",
"path": "packs/core-techniques-kiho.db",
"type": "Item",
"system": "l5r5e"
},
{
"name": "core-techniques-inversions",
"label": "Techniques Inversions",
"path": "packs/core-techniques-inversions.db",
"type": "Item",
"system": "l5r5e"
},
{
"name": "core-techniques-invocations",
"label": "Techniques Invocations",
"path": "packs/core-techniques-invocations.db",
"type": "Item",
"system": "l5r5e"
},
{
"name": "core-techniques-rituals",
"label": "Techniques Rituals",
"path": "packs/core-techniques-rituals.db",
"type": "Item",
"system": "l5r5e"
},
{
"name": "core-techniques-shuji",
"label": "Techniques Shuji",
"path": "packs/core-techniques-shuji.db",
"type": "Item",
"system": "l5r5e"
},
{
"name": "core-techniques-maho",
"label": "Techniques Mahõ",
"path": "packs/core-techniques-maho.db",
"type": "Item",
"system": "l5r5e"
},
{
"name": "core-techniques-ninjutsu",
"label": "Techniques Ninjutsu",
"path": "packs/core-techniques-ninjutsu.db",
"type": "Item",
"system": "l5r5e"
},
{
"name": "core-techniques-mantra",
"label": "Techniques Mantra",
"path": "packs/core-techniques-mantra.db",
"type": "Item",
"system": "l5r5e"
},
{
"name": "core-techniques-school",
"label": "School Abilities",
"path": "packs/core-techniques-school.db",
"type": "Item",
"system": "l5r5e"
},
{
"name": "core-techniques-mastery",
"label": "Mastery Abilities",
"path": "packs/core-techniques-mastery.db",
"type": "Item",
"system": "l5r5e"
},
{
"name": "core-items",
"label": "Items",
"path": "packs/core-items.db",
"type": "Item",
"system": "l5r5e"
},
{
"name": "core-armors",
"label": "Armors",
"path": "packs/core-armors.db",
"type": "Item",
"system": "l5r5e"
},
{
"name": "core-weapons",
"label": "Weapons",
"path": "packs/core-weapons.db",
"type": "Item",
"system": "l5r5e"
},
{
"name": "core-peculiarities-distinctions",
"label": "Distinctions",
"path": "packs/core-peculiarities-distinctions.db",
"type": "Item",
"system": "l5r5e"
},
{
"name": "core-peculiarities-passions",
"label": "Passions",
"path": "packs/core-peculiarities-passions.db",
"type": "Item",
"system": "l5r5e"
},
{
"name": "core-peculiarities-adversities",
"label": "Adversities",
"path": "packs/core-peculiarities-adversities.db",
"type": "Item",
"system": "l5r5e"
},
{
"name": "core-peculiarities-anxieties",
"label": "Anxieties",
"path": "packs/core-peculiarities-anxieties.db",
"type": "Item",
"system": "l5r5e"
},
{
"name": "core-bonds",
"label": "Bonds",
"path": "packs/core-bonds.db",
"type": "Item",
"system": "l5r5e"
},
{
"name": "core-titles",
"label": "Titles",
"path": "packs/core-titles.db",
"type": "Item",
"system": "l5r5e"
},
{
"name": "core-item-patterns",
"label": "Item Patterns",
"path": "packs/core-item-patterns.db",
"type": "Item",
"system": "l5r5e"
},
{
"name": "core-signature-scrolls",
"label": "Signature Scrolls",
"path": "packs/core-signature-scrolls.db",
"type": "Item",
"system": "l5r5e"
},
{
"name": "core-celestial-implement-boons",
"label": "Celestial Implement Boons",
"path": "packs/core-celestial-implement-boons.db",
"type": "Item",
"system": "l5r5e"
},
{
"name": "core-journal-school-curriculum",
"label": "School Curriculum",
"path": "packs/core-journal-school-curriculum.db",
"type": "JournalEntry",
"system": "l5r5e"
},
{
"name": "core-journal-conditions",
"label": "Conditions",
"path": "packs/core-journal-conditions.db",
"type": "JournalEntry",
"system": "l5r5e"
},
{
"name": "core-journal-terrain-qualities",
"label": "Terrain Qualities",
"path": "packs/core-journal-terrain-qualities.db",
"type": "JournalEntry",
"system": "l5r5e"
},
{
"name": "core-journal-great-clans-presentation",
"label": "Great Clans Presentation",
"path": "packs/core-journal-great-clans-presentation.db",
"type": "JournalEntry",
"system": "l5r5e"
},
{
"name": "core-journal-opportunities",
"label": "Opportunities",
"path": "packs/core-journal-opportunities.db",
"type": "JournalEntry",
"system": "l5r5e"
},
{
"name": "core-name-tables",
"label": "Name Tables",
"path": "packs/core-name-tables.db",
"type": "RollTable",
"system": "l5r5e"
},
{
"name": "core-macros",
"label": "L5R5E Macros",
"path": "packs/core-macros.db",
"type": "Macro",
"system": "l5r5e"
}
],
"languages": [
{
"lang": "en",
"name": "English",
"path": "lang/en-en.json"
},
{
"lang": "fr",
"name": "French (France)",
"path": "lang/fr-fr.json"
},
{
"lang": "es",
"name": "Spanish (Spain)",
"path": "lang/es-es.json"
},
{
"lang": "it",
"name": "Italian (Italy)",
"path": "lang/it-it.json"
}
],
"media": [
{
"type": "screenshot",
"url": "https://gitlab.com/teaml5r/l5r5e/-/raw/master/screenshoots/login.jpg?raw=true",
"caption": "Login screen"
},
{
"type": "screenshot",
"url": "https://gitlab.com/teaml5r/l5r5e/-/raw/master/screenshoots/roll.jpg?raw=true",
"caption": "DicePicker and Roll and Keep"
},
{
"type": "screenshot",
"url": "https://gitlab.com/teaml5r/l5r5e/-/raw/master/screenshoots/school.jpg?raw=true",
"caption": "Experience and School"
},
{
"type": "screenshot",
"url": "https://gitlab.com/teaml5r/l5r5e/-/raw/master/screenshoots/sheet_pc.jpg?raw=true",
"caption": "PC sheet"
},
{
"type": "screenshot",
"url": "https://gitlab.com/teaml5r/l5r5e/-/raw/master/screenshoots/sheet_npc_army.jpg?raw=true",
"caption": "NPC and Army sheets"
},
{
"type": "screenshot",
"url": "https://gitlab.com/teaml5r/l5r5e/-/raw/master/screenshoots/compendiums.jpg?raw=true",
"caption": "Compendiums"
}
]
}

View File

@@ -0,0 +1,393 @@
{
"id": "l5rx-chiaroscuro",
"title": "chiaroscuro - Legend of the Five Rings (5th Edition)",
"description": "This is an authorised multilingual game system En|Fr|Es, for Legend of the Five Rings (5th Edition) by <a href='https://edge-studio.net/'>Edge Studio</a> <p> - Join the official Discord server: <a href='https://discord.gg/foundryvtt'> Official Discord</a></p><p> - Rejoignez la communauté Francophone: <a href='https://discord.gg/pPSDNJk'>Francophone Discord</a></p>",
"url": "https://gitlab.com/teaml5r/l5r5e",
"readme": "https://gitlab.com/teaml5r/l5r5e/-/blob/master/README.md",
"changelog": "https://gitlab.com/teaml5r/l5r5e/-/blob/master/CHANGELOG.md",
"license": "https://gitlab.com/teaml5r/l5r5e/-/blob/master/LICENSE.md",
"manifest": "https://gitlab.com/teaml5r/l5r5e/-/raw/master/system/system.json",
"download": "https://gitlab.com/teaml5r/l5r5e/-/jobs/artifacts/v1.13.4/raw/l5r5e.zip?job=build",
"version": "14.0.0",
"compatibility": {
"minimum": "13",
"verified": "14"
},
"socket": true,
"authors": [
{
"name": "Vlyan",
"discord": "Vlyan#6771",
"url": "https://ko-fi.com/vlyan"
},
{
"name": "Mandar",
"discord": "Mandar#3440"
},
{
"name": "Carter",
"discord": "Carter#2703",
"url": "https://fr.tipeee.com/carter-foundryvtt"
},
{
"name": "Litasa",
"discord": "Litasa#3139"
}
],
"background": "systems/l5r5e/assets/l5r-header.webp",
"scripts": [],
"esmodules": [
"./scripts/main-l5r5e.js"
],
"styles": [
"./styles/l5r5e.css"
],
"packFolders": [
{
"name": "L5R5e System",
"color": "#9a0909",
"sorting": "m",
"folders": [
{
"name": "Character related",
"color": "#019806",
"sorting": "m",
"packs": [
"core-peculiarities-distinctions",
"core-peculiarities-passions",
"core-peculiarities-adversities",
"core-peculiarities-anxieties",
"core-bonds",
"core-titles",
"core-journal-school-curriculum",
"core-journal-great-clans-presentation"
]
},
{
"name": "Techniques",
"color": "#4b1eb3",
"sorting": "m",
"packs": [
"core-techniques-kata",
"core-techniques-kiho",
"core-techniques-inversions",
"core-techniques-invocations",
"core-techniques-rituals",
"core-techniques-shuji",
"core-techniques-maho",
"core-techniques-ninjutsu",
"core-techniques-mantra",
"core-techniques-school",
"core-techniques-mastery"
]
},
{
"name": "Objects related",
"color": "#0985ae",
"sorting": "m",
"packs": [
"core-properties",
"core-item-patterns",
"core-items",
"core-armors",
"core-weapons",
"core-signature-scrolls",
"core-celestial-implement-boons"
]
},
{
"name": "Helpers",
"color": "#6b3d1f",
"sorting": "m",
"packs": [
"core-journal-conditions",
"core-journal-terrain-qualities",
"core-journal-opportunities"
]
},
{
"name": "Tools",
"color": "#834949",
"sorting": "m",
"packs": [
"core-name-tables",
"core-macros"
]
}
]
}
],
"packs": [
{
"name": "core-properties",
"label": "Properties",
"path": "packs/core-properties.db",
"type": "Item",
"system": "l5r5e"
},
{
"name": "core-techniques-kata",
"label": "Techniques Kata",
"path": "packs/core-techniques-kata.db",
"type": "Item",
"system": "l5r5e"
},
{
"name": "core-techniques-kiho",
"label": "Techniques Kihõ",
"path": "packs/core-techniques-kiho.db",
"type": "Item",
"system": "l5r5e"
},
{
"name": "core-techniques-inversions",
"label": "Techniques Inversions",
"path": "packs/core-techniques-inversions.db",
"type": "Item",
"system": "l5r5e"
},
{
"name": "core-techniques-invocations",
"label": "Techniques Invocations",
"path": "packs/core-techniques-invocations.db",
"type": "Item",
"system": "l5r5e"
},
{
"name": "core-techniques-rituals",
"label": "Techniques Rituals",
"path": "packs/core-techniques-rituals.db",
"type": "Item",
"system": "l5r5e"
},
{
"name": "core-techniques-shuji",
"label": "Techniques Shuji",
"path": "packs/core-techniques-shuji.db",
"type": "Item",
"system": "l5r5e"
},
{
"name": "core-techniques-maho",
"label": "Techniques Mahõ",
"path": "packs/core-techniques-maho.db",
"type": "Item",
"system": "l5r5e"
},
{
"name": "core-techniques-ninjutsu",
"label": "Techniques Ninjutsu",
"path": "packs/core-techniques-ninjutsu.db",
"type": "Item",
"system": "l5r5e"
},
{
"name": "core-techniques-mantra",
"label": "Techniques Mantra",
"path": "packs/core-techniques-mantra.db",
"type": "Item",
"system": "l5r5e"
},
{
"name": "core-techniques-school",
"label": "School Abilities",
"path": "packs/core-techniques-school.db",
"type": "Item",
"system": "l5r5e"
},
{
"name": "core-techniques-mastery",
"label": "Mastery Abilities",
"path": "packs/core-techniques-mastery.db",
"type": "Item",
"system": "l5r5e"
},
{
"name": "core-items",
"label": "Items",
"path": "packs/core-items.db",
"type": "Item",
"system": "l5r5e"
},
{
"name": "core-armors",
"label": "Armors",
"path": "packs/core-armors.db",
"type": "Item",
"system": "l5r5e"
},
{
"name": "core-weapons",
"label": "Weapons",
"path": "packs/core-weapons.db",
"type": "Item",
"system": "l5r5e"
},
{
"name": "core-peculiarities-distinctions",
"label": "Distinctions",
"path": "packs/core-peculiarities-distinctions.db",
"type": "Item",
"system": "l5r5e"
},
{
"name": "core-peculiarities-passions",
"label": "Passions",
"path": "packs/core-peculiarities-passions.db",
"type": "Item",
"system": "l5r5e"
},
{
"name": "core-peculiarities-adversities",
"label": "Adversities",
"path": "packs/core-peculiarities-adversities.db",
"type": "Item",
"system": "l5r5e"
},
{
"name": "core-peculiarities-anxieties",
"label": "Anxieties",
"path": "packs/core-peculiarities-anxieties.db",
"type": "Item",
"system": "l5r5e"
},
{
"name": "core-bonds",
"label": "Bonds",
"path": "packs/core-bonds.db",
"type": "Item",
"system": "l5r5e"
},
{
"name": "core-titles",
"label": "Titles",
"path": "packs/core-titles.db",
"type": "Item",
"system": "l5r5e"
},
{
"name": "core-item-patterns",
"label": "Item Patterns",
"path": "packs/core-item-patterns.db",
"type": "Item",
"system": "l5r5e"
},
{
"name": "core-signature-scrolls",
"label": "Signature Scrolls",
"path": "packs/core-signature-scrolls.db",
"type": "Item",
"system": "l5r5e"
},
{
"name": "core-celestial-implement-boons",
"label": "Celestial Implement Boons",
"path": "packs/core-celestial-implement-boons.db",
"type": "Item",
"system": "l5r5e"
},
{
"name": "core-journal-school-curriculum",
"label": "School Curriculum",
"path": "packs/core-journal-school-curriculum.db",
"type": "JournalEntry",
"system": "l5r5e"
},
{
"name": "core-journal-conditions",
"label": "Conditions",
"path": "packs/core-journal-conditions.db",
"type": "JournalEntry",
"system": "l5r5e"
},
{
"name": "core-journal-terrain-qualities",
"label": "Terrain Qualities",
"path": "packs/core-journal-terrain-qualities.db",
"type": "JournalEntry",
"system": "l5r5e"
},
{
"name": "core-journal-great-clans-presentation",
"label": "Great Clans Presentation",
"path": "packs/core-journal-great-clans-presentation.db",
"type": "JournalEntry",
"system": "l5r5e"
},
{
"name": "core-journal-opportunities",
"label": "Opportunities",
"path": "packs/core-journal-opportunities.db",
"type": "JournalEntry",
"system": "l5r5e"
},
{
"name": "core-name-tables",
"label": "Name Tables",
"path": "packs/core-name-tables.db",
"type": "RollTable",
"system": "l5r5e"
},
{
"name": "core-macros",
"label": "L5R5E Macros",
"path": "packs/core-macros.db",
"type": "Macro",
"system": "l5r5e"
}
],
"languages": [
{
"lang": "en",
"name": "English",
"path": "lang/en-en.json"
},
{
"lang": "fr",
"name": "French (France)",
"path": "lang/fr-fr.json"
},
{
"lang": "es",
"name": "Spanish (Spain)",
"path": "lang/es-es.json"
},
{
"lang": "it",
"name": "Italian (Italy)",
"path": "lang/it-it.json"
}
],
"media": [
{
"type": "screenshot",
"url": "https://gitlab.com/teaml5r/l5r5e/-/raw/master/screenshoots/login.jpg?raw=true",
"caption": "Login screen"
},
{
"type": "screenshot",
"url": "https://gitlab.com/teaml5r/l5r5e/-/raw/master/screenshoots/roll.jpg?raw=true",
"caption": "DicePicker and Roll and Keep"
},
{
"type": "screenshot",
"url": "https://gitlab.com/teaml5r/l5r5e/-/raw/master/screenshoots/school.jpg?raw=true",
"caption": "Experience and School"
},
{
"type": "screenshot",
"url": "https://gitlab.com/teaml5r/l5r5e/-/raw/master/screenshoots/sheet_pc.jpg?raw=true",
"caption": "PC sheet"
},
{
"type": "screenshot",
"url": "https://gitlab.com/teaml5r/l5r5e/-/raw/master/screenshoots/sheet_npc_army.jpg?raw=true",
"caption": "NPC and Army sheets"
},
{
"type": "screenshot",
"url": "https://gitlab.com/teaml5r/l5r5e/-/raw/master/screenshoots/compendiums.jpg?raw=true",
"caption": "Compendiums"
}
]
}

View File

@@ -0,0 +1,393 @@
{
"id": "l5rx-chiaroscuro",
"title": "Chiaroscuro - Legend of the Five Rings (5th Edition)",
"description": "This is an authorised multilingual game system En|Fr|Es, for Legend of the Five Rings (5th Edition) by <a href='https://edge-studio.net/'>Edge Studio</a> <p> - Join the official Discord server: <a href='https://discord.gg/foundryvtt'> Official Discord</a></p><p> - Rejoignez la communauté Francophone: <a href='https://discord.gg/pPSDNJk'>Francophone Discord</a></p>",
"url": "https://gitlab.com/teaml5r/l5r5e",
"readme": "https://gitlab.com/teaml5r/l5r5e/-/blob/master/README.md",
"changelog": "https://gitlab.com/teaml5r/l5r5e/-/blob/master/CHANGELOG.md",
"license": "https://gitlab.com/teaml5r/l5r5e/-/blob/master/LICENSE.md",
"manifest": "https://gitlab.com/teaml5r/l5r5e/-/raw/master/system/system.json",
"download": "https://gitlab.com/teaml5r/l5r5e/-/jobs/artifacts/v1.13.4/raw/l5r5e.zip?job=build",
"version": "14.0.0",
"compatibility": {
"minimum": "13",
"verified": "14"
},
"socket": true,
"authors": [
{
"name": "Vlyan",
"discord": "Vlyan#6771",
"url": "https://ko-fi.com/vlyan"
},
{
"name": "Mandar",
"discord": "Mandar#3440"
},
{
"name": "Carter",
"discord": "Carter#2703",
"url": "https://fr.tipeee.com/carter-foundryvtt"
},
{
"name": "Litasa",
"discord": "Litasa#3139"
}
],
"background": "systems/l5r5e/assets/l5r-header.webp",
"scripts": [],
"esmodules": [
"./scripts/main-l5r5e.js"
],
"styles": [
"./styles/l5r5e.css"
],
"packFolders": [
{
"name": "L5R5e System",
"color": "#9a0909",
"sorting": "m",
"folders": [
{
"name": "Character related",
"color": "#019806",
"sorting": "m",
"packs": [
"core-peculiarities-distinctions",
"core-peculiarities-passions",
"core-peculiarities-adversities",
"core-peculiarities-anxieties",
"core-bonds",
"core-titles",
"core-journal-school-curriculum",
"core-journal-great-clans-presentation"
]
},
{
"name": "Techniques",
"color": "#4b1eb3",
"sorting": "m",
"packs": [
"core-techniques-kata",
"core-techniques-kiho",
"core-techniques-inversions",
"core-techniques-invocations",
"core-techniques-rituals",
"core-techniques-shuji",
"core-techniques-maho",
"core-techniques-ninjutsu",
"core-techniques-mantra",
"core-techniques-school",
"core-techniques-mastery"
]
},
{
"name": "Objects related",
"color": "#0985ae",
"sorting": "m",
"packs": [
"core-properties",
"core-item-patterns",
"core-items",
"core-armors",
"core-weapons",
"core-signature-scrolls",
"core-celestial-implement-boons"
]
},
{
"name": "Helpers",
"color": "#6b3d1f",
"sorting": "m",
"packs": [
"core-journal-conditions",
"core-journal-terrain-qualities",
"core-journal-opportunities"
]
},
{
"name": "Tools",
"color": "#834949",
"sorting": "m",
"packs": [
"core-name-tables",
"core-macros"
]
}
]
}
],
"packs": [
{
"name": "core-properties",
"label": "Properties",
"path": "packs/core-properties.db",
"type": "Item",
"system": "l5r5e"
},
{
"name": "core-techniques-kata",
"label": "Techniques Kata",
"path": "packs/core-techniques-kata.db",
"type": "Item",
"system": "l5r5e"
},
{
"name": "core-techniques-kiho",
"label": "Techniques Kihõ",
"path": "packs/core-techniques-kiho.db",
"type": "Item",
"system": "l5r5e"
},
{
"name": "core-techniques-inversions",
"label": "Techniques Inversions",
"path": "packs/core-techniques-inversions.db",
"type": "Item",
"system": "l5r5e"
},
{
"name": "core-techniques-invocations",
"label": "Techniques Invocations",
"path": "packs/core-techniques-invocations.db",
"type": "Item",
"system": "l5r5e"
},
{
"name": "core-techniques-rituals",
"label": "Techniques Rituals",
"path": "packs/core-techniques-rituals.db",
"type": "Item",
"system": "l5r5e"
},
{
"name": "core-techniques-shuji",
"label": "Techniques Shuji",
"path": "packs/core-techniques-shuji.db",
"type": "Item",
"system": "l5r5e"
},
{
"name": "core-techniques-maho",
"label": "Techniques Mahõ",
"path": "packs/core-techniques-maho.db",
"type": "Item",
"system": "l5r5e"
},
{
"name": "core-techniques-ninjutsu",
"label": "Techniques Ninjutsu",
"path": "packs/core-techniques-ninjutsu.db",
"type": "Item",
"system": "l5r5e"
},
{
"name": "core-techniques-mantra",
"label": "Techniques Mantra",
"path": "packs/core-techniques-mantra.db",
"type": "Item",
"system": "l5r5e"
},
{
"name": "core-techniques-school",
"label": "School Abilities",
"path": "packs/core-techniques-school.db",
"type": "Item",
"system": "l5r5e"
},
{
"name": "core-techniques-mastery",
"label": "Mastery Abilities",
"path": "packs/core-techniques-mastery.db",
"type": "Item",
"system": "l5r5e"
},
{
"name": "core-items",
"label": "Items",
"path": "packs/core-items.db",
"type": "Item",
"system": "l5r5e"
},
{
"name": "core-armors",
"label": "Armors",
"path": "packs/core-armors.db",
"type": "Item",
"system": "l5r5e"
},
{
"name": "core-weapons",
"label": "Weapons",
"path": "packs/core-weapons.db",
"type": "Item",
"system": "l5r5e"
},
{
"name": "core-peculiarities-distinctions",
"label": "Distinctions",
"path": "packs/core-peculiarities-distinctions.db",
"type": "Item",
"system": "l5r5e"
},
{
"name": "core-peculiarities-passions",
"label": "Passions",
"path": "packs/core-peculiarities-passions.db",
"type": "Item",
"system": "l5r5e"
},
{
"name": "core-peculiarities-adversities",
"label": "Adversities",
"path": "packs/core-peculiarities-adversities.db",
"type": "Item",
"system": "l5r5e"
},
{
"name": "core-peculiarities-anxieties",
"label": "Anxieties",
"path": "packs/core-peculiarities-anxieties.db",
"type": "Item",
"system": "l5r5e"
},
{
"name": "core-bonds",
"label": "Bonds",
"path": "packs/core-bonds.db",
"type": "Item",
"system": "l5r5e"
},
{
"name": "core-titles",
"label": "Titles",
"path": "packs/core-titles.db",
"type": "Item",
"system": "l5r5e"
},
{
"name": "core-item-patterns",
"label": "Item Patterns",
"path": "packs/core-item-patterns.db",
"type": "Item",
"system": "l5r5e"
},
{
"name": "core-signature-scrolls",
"label": "Signature Scrolls",
"path": "packs/core-signature-scrolls.db",
"type": "Item",
"system": "l5r5e"
},
{
"name": "core-celestial-implement-boons",
"label": "Celestial Implement Boons",
"path": "packs/core-celestial-implement-boons.db",
"type": "Item",
"system": "l5r5e"
},
{
"name": "core-journal-school-curriculum",
"label": "School Curriculum",
"path": "packs/core-journal-school-curriculum.db",
"type": "JournalEntry",
"system": "l5r5e"
},
{
"name": "core-journal-conditions",
"label": "Conditions",
"path": "packs/core-journal-conditions.db",
"type": "JournalEntry",
"system": "l5r5e"
},
{
"name": "core-journal-terrain-qualities",
"label": "Terrain Qualities",
"path": "packs/core-journal-terrain-qualities.db",
"type": "JournalEntry",
"system": "l5r5e"
},
{
"name": "core-journal-great-clans-presentation",
"label": "Great Clans Presentation",
"path": "packs/core-journal-great-clans-presentation.db",
"type": "JournalEntry",
"system": "l5r5e"
},
{
"name": "core-journal-opportunities",
"label": "Opportunities",
"path": "packs/core-journal-opportunities.db",
"type": "JournalEntry",
"system": "l5r5e"
},
{
"name": "core-name-tables",
"label": "Name Tables",
"path": "packs/core-name-tables.db",
"type": "RollTable",
"system": "l5r5e"
},
{
"name": "core-macros",
"label": "L5R5E Macros",
"path": "packs/core-macros.db",
"type": "Macro",
"system": "l5r5e"
}
],
"languages": [
{
"lang": "en",
"name": "English",
"path": "lang/en-en.json"
},
{
"lang": "fr",
"name": "French (France)",
"path": "lang/fr-fr.json"
},
{
"lang": "es",
"name": "Spanish (Spain)",
"path": "lang/es-es.json"
},
{
"lang": "it",
"name": "Italian (Italy)",
"path": "lang/it-it.json"
}
],
"media": [
{
"type": "screenshot",
"url": "https://gitlab.com/teaml5r/l5r5e/-/raw/master/screenshoots/login.jpg?raw=true",
"caption": "Login screen"
},
{
"type": "screenshot",
"url": "https://gitlab.com/teaml5r/l5r5e/-/raw/master/screenshoots/roll.jpg?raw=true",
"caption": "DicePicker and Roll and Keep"
},
{
"type": "screenshot",
"url": "https://gitlab.com/teaml5r/l5r5e/-/raw/master/screenshoots/school.jpg?raw=true",
"caption": "Experience and School"
},
{
"type": "screenshot",
"url": "https://gitlab.com/teaml5r/l5r5e/-/raw/master/screenshoots/sheet_pc.jpg?raw=true",
"caption": "PC sheet"
},
{
"type": "screenshot",
"url": "https://gitlab.com/teaml5r/l5r5e/-/raw/master/screenshoots/sheet_npc_army.jpg?raw=true",
"caption": "NPC and Army sheets"
},
{
"type": "screenshot",
"url": "https://gitlab.com/teaml5r/l5r5e/-/raw/master/screenshoots/compendiums.jpg?raw=true",
"caption": "Compendiums"
}
]
}

View File

@@ -0,0 +1,393 @@
{
"id": "l5rx-chiaroscuro",
"title": "Chiaroscuro - L5R",
"description": "This is an authorised multilingual game system En|Fr|Es, for Legend of the Five Rings (5th Edition) by <a href='https://edge-studio.net/'>Edge Studio</a> <p> - Join the official Discord server: <a href='https://discord.gg/foundryvtt'> Official Discord</a></p><p> - Rejoignez la communauté Francophone: <a href='https://discord.gg/pPSDNJk'>Francophone Discord</a></p>",
"url": "https://gitlab.com/teaml5r/l5r5e",
"readme": "https://gitlab.com/teaml5r/l5r5e/-/blob/master/README.md",
"changelog": "https://gitlab.com/teaml5r/l5r5e/-/blob/master/CHANGELOG.md",
"license": "https://gitlab.com/teaml5r/l5r5e/-/blob/master/LICENSE.md",
"manifest": "https://gitlab.com/teaml5r/l5r5e/-/raw/master/system/system.json",
"download": "https://gitlab.com/teaml5r/l5r5e/-/jobs/artifacts/v1.13.4/raw/l5r5e.zip?job=build",
"version": "14.0.0",
"compatibility": {
"minimum": "13",
"verified": "14"
},
"socket": true,
"authors": [
{
"name": "Vlyan",
"discord": "Vlyan#6771",
"url": "https://ko-fi.com/vlyan"
},
{
"name": "Mandar",
"discord": "Mandar#3440"
},
{
"name": "Carter",
"discord": "Carter#2703",
"url": "https://fr.tipeee.com/carter-foundryvtt"
},
{
"name": "Litasa",
"discord": "Litasa#3139"
}
],
"background": "systems/l5r5e/assets/l5r-header.webp",
"scripts": [],
"esmodules": [
"./scripts/main-l5r5e.js"
],
"styles": [
"./styles/l5r5e.css"
],
"packFolders": [
{
"name": "L5R5e System",
"color": "#9a0909",
"sorting": "m",
"folders": [
{
"name": "Character related",
"color": "#019806",
"sorting": "m",
"packs": [
"core-peculiarities-distinctions",
"core-peculiarities-passions",
"core-peculiarities-adversities",
"core-peculiarities-anxieties",
"core-bonds",
"core-titles",
"core-journal-school-curriculum",
"core-journal-great-clans-presentation"
]
},
{
"name": "Techniques",
"color": "#4b1eb3",
"sorting": "m",
"packs": [
"core-techniques-kata",
"core-techniques-kiho",
"core-techniques-inversions",
"core-techniques-invocations",
"core-techniques-rituals",
"core-techniques-shuji",
"core-techniques-maho",
"core-techniques-ninjutsu",
"core-techniques-mantra",
"core-techniques-school",
"core-techniques-mastery"
]
},
{
"name": "Objects related",
"color": "#0985ae",
"sorting": "m",
"packs": [
"core-properties",
"core-item-patterns",
"core-items",
"core-armors",
"core-weapons",
"core-signature-scrolls",
"core-celestial-implement-boons"
]
},
{
"name": "Helpers",
"color": "#6b3d1f",
"sorting": "m",
"packs": [
"core-journal-conditions",
"core-journal-terrain-qualities",
"core-journal-opportunities"
]
},
{
"name": "Tools",
"color": "#834949",
"sorting": "m",
"packs": [
"core-name-tables",
"core-macros"
]
}
]
}
],
"packs": [
{
"name": "core-properties",
"label": "Properties",
"path": "packs/core-properties.db",
"type": "Item",
"system": "l5r5e"
},
{
"name": "core-techniques-kata",
"label": "Techniques Kata",
"path": "packs/core-techniques-kata.db",
"type": "Item",
"system": "l5r5e"
},
{
"name": "core-techniques-kiho",
"label": "Techniques Kihõ",
"path": "packs/core-techniques-kiho.db",
"type": "Item",
"system": "l5r5e"
},
{
"name": "core-techniques-inversions",
"label": "Techniques Inversions",
"path": "packs/core-techniques-inversions.db",
"type": "Item",
"system": "l5r5e"
},
{
"name": "core-techniques-invocations",
"label": "Techniques Invocations",
"path": "packs/core-techniques-invocations.db",
"type": "Item",
"system": "l5r5e"
},
{
"name": "core-techniques-rituals",
"label": "Techniques Rituals",
"path": "packs/core-techniques-rituals.db",
"type": "Item",
"system": "l5r5e"
},
{
"name": "core-techniques-shuji",
"label": "Techniques Shuji",
"path": "packs/core-techniques-shuji.db",
"type": "Item",
"system": "l5r5e"
},
{
"name": "core-techniques-maho",
"label": "Techniques Mahõ",
"path": "packs/core-techniques-maho.db",
"type": "Item",
"system": "l5r5e"
},
{
"name": "core-techniques-ninjutsu",
"label": "Techniques Ninjutsu",
"path": "packs/core-techniques-ninjutsu.db",
"type": "Item",
"system": "l5r5e"
},
{
"name": "core-techniques-mantra",
"label": "Techniques Mantra",
"path": "packs/core-techniques-mantra.db",
"type": "Item",
"system": "l5r5e"
},
{
"name": "core-techniques-school",
"label": "School Abilities",
"path": "packs/core-techniques-school.db",
"type": "Item",
"system": "l5r5e"
},
{
"name": "core-techniques-mastery",
"label": "Mastery Abilities",
"path": "packs/core-techniques-mastery.db",
"type": "Item",
"system": "l5r5e"
},
{
"name": "core-items",
"label": "Items",
"path": "packs/core-items.db",
"type": "Item",
"system": "l5r5e"
},
{
"name": "core-armors",
"label": "Armors",
"path": "packs/core-armors.db",
"type": "Item",
"system": "l5r5e"
},
{
"name": "core-weapons",
"label": "Weapons",
"path": "packs/core-weapons.db",
"type": "Item",
"system": "l5r5e"
},
{
"name": "core-peculiarities-distinctions",
"label": "Distinctions",
"path": "packs/core-peculiarities-distinctions.db",
"type": "Item",
"system": "l5r5e"
},
{
"name": "core-peculiarities-passions",
"label": "Passions",
"path": "packs/core-peculiarities-passions.db",
"type": "Item",
"system": "l5r5e"
},
{
"name": "core-peculiarities-adversities",
"label": "Adversities",
"path": "packs/core-peculiarities-adversities.db",
"type": "Item",
"system": "l5r5e"
},
{
"name": "core-peculiarities-anxieties",
"label": "Anxieties",
"path": "packs/core-peculiarities-anxieties.db",
"type": "Item",
"system": "l5r5e"
},
{
"name": "core-bonds",
"label": "Bonds",
"path": "packs/core-bonds.db",
"type": "Item",
"system": "l5r5e"
},
{
"name": "core-titles",
"label": "Titles",
"path": "packs/core-titles.db",
"type": "Item",
"system": "l5r5e"
},
{
"name": "core-item-patterns",
"label": "Item Patterns",
"path": "packs/core-item-patterns.db",
"type": "Item",
"system": "l5r5e"
},
{
"name": "core-signature-scrolls",
"label": "Signature Scrolls",
"path": "packs/core-signature-scrolls.db",
"type": "Item",
"system": "l5r5e"
},
{
"name": "core-celestial-implement-boons",
"label": "Celestial Implement Boons",
"path": "packs/core-celestial-implement-boons.db",
"type": "Item",
"system": "l5r5e"
},
{
"name": "core-journal-school-curriculum",
"label": "School Curriculum",
"path": "packs/core-journal-school-curriculum.db",
"type": "JournalEntry",
"system": "l5r5e"
},
{
"name": "core-journal-conditions",
"label": "Conditions",
"path": "packs/core-journal-conditions.db",
"type": "JournalEntry",
"system": "l5r5e"
},
{
"name": "core-journal-terrain-qualities",
"label": "Terrain Qualities",
"path": "packs/core-journal-terrain-qualities.db",
"type": "JournalEntry",
"system": "l5r5e"
},
{
"name": "core-journal-great-clans-presentation",
"label": "Great Clans Presentation",
"path": "packs/core-journal-great-clans-presentation.db",
"type": "JournalEntry",
"system": "l5r5e"
},
{
"name": "core-journal-opportunities",
"label": "Opportunities",
"path": "packs/core-journal-opportunities.db",
"type": "JournalEntry",
"system": "l5r5e"
},
{
"name": "core-name-tables",
"label": "Name Tables",
"path": "packs/core-name-tables.db",
"type": "RollTable",
"system": "l5r5e"
},
{
"name": "core-macros",
"label": "L5R5E Macros",
"path": "packs/core-macros.db",
"type": "Macro",
"system": "l5r5e"
}
],
"languages": [
{
"lang": "en",
"name": "English",
"path": "lang/en-en.json"
},
{
"lang": "fr",
"name": "French (France)",
"path": "lang/fr-fr.json"
},
{
"lang": "es",
"name": "Spanish (Spain)",
"path": "lang/es-es.json"
},
{
"lang": "it",
"name": "Italian (Italy)",
"path": "lang/it-it.json"
}
],
"media": [
{
"type": "screenshot",
"url": "https://gitlab.com/teaml5r/l5r5e/-/raw/master/screenshoots/login.jpg?raw=true",
"caption": "Login screen"
},
{
"type": "screenshot",
"url": "https://gitlab.com/teaml5r/l5r5e/-/raw/master/screenshoots/roll.jpg?raw=true",
"caption": "DicePicker and Roll and Keep"
},
{
"type": "screenshot",
"url": "https://gitlab.com/teaml5r/l5r5e/-/raw/master/screenshoots/school.jpg?raw=true",
"caption": "Experience and School"
},
{
"type": "screenshot",
"url": "https://gitlab.com/teaml5r/l5r5e/-/raw/master/screenshoots/sheet_pc.jpg?raw=true",
"caption": "PC sheet"
},
{
"type": "screenshot",
"url": "https://gitlab.com/teaml5r/l5r5e/-/raw/master/screenshoots/sheet_npc_army.jpg?raw=true",
"caption": "NPC and Army sheets"
},
{
"type": "screenshot",
"url": "https://gitlab.com/teaml5r/l5r5e/-/raw/master/screenshoots/compendiums.jpg?raw=true",
"caption": "Compendiums"
}
]
}

View File

@@ -0,0 +1,393 @@
{
"id": "l5rx-chiaroscuro",
"title": "Chiaroscuro - L5R",
"description": "This is an authorised multilingual game system En|Fr|Es, for Legend of the Five Rings (5th Edition) by <a href='https://edge-studio.net/'>Edge Studio</a> <p> - Join the official Discord server: <a href='https://discord.gg/foundryvtt'> Official Discord</a></p><p> - Rejoignez la communauté Francophone: <a href='https://discord.gg/pPSDNJk'>Francophone Discord</a></p>",
"url": "https://gitlab.com/teaml5r/l5r5e",
"readme": "https://gitlab.com/teaml5r/l5r5e/-/blob/master/README.md",
"changelog": "https://gitlab.com/teaml5r/l5r5e/-/blob/master/CHANGELOG.md",
"license": "https://gitlab.com/teaml5r/l5r5e/-/blob/master/LICENSE.md",
"manifest": "https://gitlab.com/teaml5r/l5r5e/-/raw/master/system/system.json",
"download": "https://gitlab.com/teaml5r/l5r5e/-/jobs/artifacts/v1.13.4/raw/l5r5e.zip?job=build",
"version": "14.0.0",
"compatibility": {
"minimum": "13",
"verified": "14"
},
"socket": true,
"authors": [
{
"name": "Vlyan",
"discord": "Vlyan#6771",
"url": "https://ko-fi.com/vlyan"
},
{
"name": "Mandar",
"discord": "Mandar#3440"
},
{
"name": "Carter",
"discord": "Carter#2703",
"url": "https://fr.tipeee.com/carter-foundryvtt"
},
{
"name": "Litasa",
"discord": "Litasa#3139"
}
],
"background": "systems/l5r5e/assets/l5r-header.webp",
"scripts": [],
"esmodules": [
"./scripts/main-l5r5e.js"
],
"styles": [
"./styles/l5r5e.css"
],
"packFolders": [
{
"name": "L5R5e System",
"color": "#9a0909",
"sorting": "m",
"folders": [
{
"name": "Character related",
"color": "#019806",
"sorting": "m",
"packs": [
"core-peculiarities-distinctions",
"core-peculiarities-passions",
"core-peculiarities-adversities",
"core-peculiarities-anxieties",
"core-bonds",
"core-titles",
"core-journal-school-curriculum",
"core-journal-great-clans-presentation"
]
},
{
"name": "Techniques",
"color": "#4b1eb3",
"sorting": "m",
"packs": [
"core-techniques-kata",
"core-techniques-kiho",
"core-techniques-inversions",
"core-techniques-invocations",
"core-techniques-rituals",
"core-techniques-shuji",
"core-techniques-maho",
"core-techniques-ninjutsu",
"core-techniques-mantra",
"core-techniques-school",
"core-techniques-mastery"
]
},
{
"name": "Objects related",
"color": "#0985ae",
"sorting": "m",
"packs": [
"core-properties",
"core-item-patterns",
"core-items",
"core-armors",
"core-weapons",
"core-signature-scrolls",
"core-celestial-implement-boons"
]
},
{
"name": "Helpers",
"color": "#6b3d1f",
"sorting": "m",
"packs": [
"core-journal-conditions",
"core-journal-terrain-qualities",
"core-journal-opportunities"
]
},
{
"name": "Tools",
"color": "#834949",
"sorting": "m",
"packs": [
"core-name-tables",
"core-macros"
]
}
]
}
],
"packs": [
{
"name": "core-properties",
"label": "Properties",
"path": "packs/core-properties.db",
"type": "Item",
"system": "l5r5e"
},
{
"name": "core-techniques-kata",
"label": "Techniques Kata",
"path": "packs/core-techniques-kata.db",
"type": "Item",
"system": "l5r5e"
},
{
"name": "core-techniques-kiho",
"label": "Techniques Kihõ",
"path": "packs/core-techniques-kiho.db",
"type": "Item",
"system": "l5r5e"
},
{
"name": "core-techniques-inversions",
"label": "Techniques Inversions",
"path": "packs/core-techniques-inversions.db",
"type": "Item",
"system": "l5r5e"
},
{
"name": "core-techniques-invocations",
"label": "Techniques Invocations",
"path": "packs/core-techniques-invocations.db",
"type": "Item",
"system": "l5r5e"
},
{
"name": "core-techniques-rituals",
"label": "Techniques Rituals",
"path": "packs/core-techniques-rituals.db",
"type": "Item",
"system": "l5r5e"
},
{
"name": "core-techniques-shuji",
"label": "Techniques Shuji",
"path": "packs/core-techniques-shuji.db",
"type": "Item",
"system": "l5r5e"
},
{
"name": "core-techniques-maho",
"label": "Techniques Mahõ",
"path": "packs/core-techniques-maho.db",
"type": "Item",
"system": "l5r5e"
},
{
"name": "core-techniques-ninjutsu",
"label": "Techniques Ninjutsu",
"path": "packs/core-techniques-ninjutsu.db",
"type": "Item",
"system": "l5r5e"
},
{
"name": "core-techniques-mantra",
"label": "Techniques Mantra",
"path": "packs/core-techniques-mantra.db",
"type": "Item",
"system": "l5r5e"
},
{
"name": "core-techniques-school",
"label": "School Abilities",
"path": "packs/core-techniques-school.db",
"type": "Item",
"system": "l5r5e"
},
{
"name": "core-techniques-mastery",
"label": "Mastery Abilities",
"path": "packs/core-techniques-mastery.db",
"type": "Item",
"system": "l5r5e"
},
{
"name": "core-items",
"label": "Items",
"path": "packs/core-items.db",
"type": "Item",
"system": "l5r5e"
},
{
"name": "core-armors",
"label": "Armors",
"path": "packs/core-armors.db",
"type": "Item",
"system": "l5r5e"
},
{
"name": "core-weapons",
"label": "Weapons",
"path": "packs/core-weapons.db",
"type": "Item",
"system": "l5r5e"
},
{
"name": "core-peculiarities-distinctions",
"label": "Distinctions",
"path": "packs/core-peculiarities-distinctions.db",
"type": "Item",
"system": "l5r5e"
},
{
"name": "core-peculiarities-passions",
"label": "Passions",
"path": "packs/core-peculiarities-passions.db",
"type": "Item",
"system": "l5r5e"
},
{
"name": "core-peculiarities-adversities",
"label": "Adversities",
"path": "packs/core-peculiarities-adversities.db",
"type": "Item",
"system": "l5r5e"
},
{
"name": "core-peculiarities-anxieties",
"label": "Anxieties",
"path": "packs/core-peculiarities-anxieties.db",
"type": "Item",
"system": "l5r5e"
},
{
"name": "core-bonds",
"label": "Bonds",
"path": "packs/core-bonds.db",
"type": "Item",
"system": "l5r5e"
},
{
"name": "core-titles",
"label": "Titles",
"path": "packs/core-titles.db",
"type": "Item",
"system": "l5r5e"
},
{
"name": "core-item-patterns",
"label": "Item Patterns",
"path": "packs/core-item-patterns.db",
"type": "Item",
"system": "l5r5e"
},
{
"name": "core-signature-scrolls",
"label": "Signature Scrolls",
"path": "packs/core-signature-scrolls.db",
"type": "Item",
"system": "l5r5e"
},
{
"name": "core-celestial-implement-boons",
"label": "Celestial Implement Boons",
"path": "packs/core-celestial-implement-boons.db",
"type": "Item",
"system": "l5r5e"
},
{
"name": "core-journal-school-curriculum",
"label": "School Curriculum",
"path": "packs/core-journal-school-curriculum.db",
"type": "JournalEntry",
"system": "l5r5e"
},
{
"name": "core-journal-conditions",
"label": "Conditions",
"path": "packs/core-journal-conditions.db",
"type": "JournalEntry",
"system": "l5r5e"
},
{
"name": "core-journal-terrain-qualities",
"label": "Terrain Qualities",
"path": "packs/core-journal-terrain-qualities.db",
"type": "JournalEntry",
"system": "l5r5e"
},
{
"name": "core-journal-great-clans-presentation",
"label": "Great Clans Presentation",
"path": "packs/core-journal-great-clans-presentation.db",
"type": "JournalEntry",
"system": "l5r5e"
},
{
"name": "core-journal-opportunities",
"label": "Opportunities",
"path": "packs/core-journal-opportunities.db",
"type": "JournalEntry",
"system": "l5r5e"
},
{
"name": "core-name-tables",
"label": "Name Tables",
"path": "packs/core-name-tables.db",
"type": "RollTable",
"system": "l5r5e"
},
{
"name": "core-macros",
"label": "L5R5E Macros",
"path": "packs/core-macros.db",
"type": "Macro",
"system": "l5r5e"
}
],
"languages": [
{
"lang": "en",
"name": "English",
"path": "lang/en-en.json"
},
{
"lang": "fr",
"name": "French (France)",
"path": "lang/fr-fr.json"
},
{
"lang": "es",
"name": "Spanish (Spain)",
"path": "lang/es-es.json"
},
{
"lang": "it",
"name": "Italian (Italy)",
"path": "lang/it-it.json"
}
],
"media": [
{
"type": "screenshot",
"url": "https://gitlab.com/teaml5r/l5r5e/-/raw/master/screenshoots/login.jpg?raw=true",
"caption": "Login screen"
},
{
"type": "screenshot",
"url": "https://gitlab.com/teaml5r/l5r5e/-/raw/master/screenshoots/roll.jpg?raw=true",
"caption": "DicePicker and Roll and Keep"
},
{
"type": "screenshot",
"url": "https://gitlab.com/teaml5r/l5r5e/-/raw/master/screenshoots/school.jpg?raw=true",
"caption": "Experience and School"
},
{
"type": "screenshot",
"url": "https://gitlab.com/teaml5r/l5r5e/-/raw/master/screenshoots/sheet_pc.jpg?raw=true",
"caption": "PC sheet"
},
{
"type": "screenshot",
"url": "https://gitlab.com/teaml5r/l5r5e/-/raw/master/screenshoots/sheet_npc_army.jpg?raw=true",
"caption": "NPC and Army sheets"
},
{
"type": "screenshot",
"url": "https://gitlab.com/teaml5r/l5r5e/-/raw/master/screenshoots/compendiums.jpg?raw=true",
"caption": "Compendiums"
}
]
}

View File

@@ -0,0 +1,393 @@
{
"id": "l5rx-chiaroscuro",
"title": "Chiaroscuro - L5R",
"description": "This is an authorised multilingual game system En|Fr|Es, for Legend of the Five Rings (5th Edition) by <a href='https://edge-studio.net/'>Edge Studio</a> <p> - Join the official Discord server: <a href='https://discord.gg/foundryvtt'> Official Discord</a></p><p> - Rejoignez la communauté Francophone: <a href='https://discord.gg/pPSDNJk'>Francophone Discord</a></p>",
"url": "https://gitlab.com/teaml5r/l5r5e",
"readme": "https://gitlab.com/teaml5r/l5r5e/-/blob/master/README.md",
"changelog": "https://gitlab.com/teaml5r/l5r5e/-/blob/master/CHANGELOG.md",
"license": "https://gitlab.com/teaml5r/l5r5e/-/blob/master/LICENSE.md",
"manifest": "https://gitlab.com/teaml5r/l5r5e/-/raw/master/system/system.json",
"download": "https://gitlab.com/teaml5r/l5r5e/-/jobs/artifacts/v1.13.4/raw/l5r5e.zip?job=build",
"version": "14.0.0",
"compatibility": {
"minimum": "13",
"verified": "14"
},
"socket": true,
"authors": [
{
"name": "Vlyan",
"discord": "Vlyan#6771",
"url": "https://ko-fi.com/vlyan"
},
{
"name": "Mandar",
"discord": "Mandar#3440"
},
{
"name": "Carter",
"discord": "Carter#2703",
"url": "https://fr.tipeee.com/carter-foundryvtt"
},
{
"name": "Litasa",
"discord": "Litasa#3139"
}
],
"background": "systems/l5r5e/assets/l5r-header.webp",
"scripts": [],
"esmodules": [
"./scripts/main-l5r5e.js"
],
"styles": [
"./styles/l5r5e.css"
],
"packFolders": [
{
"name": "L5R5e System",
"color": "#9a0909",
"sorting": "m",
"folders": [
{
"name": "Character related",
"color": "#019806",
"sorting": "m",
"packs": [
"core-peculiarities-distinctions",
"core-peculiarities-passions",
"core-peculiarities-adversities",
"core-peculiarities-anxieties",
"core-bonds",
"core-titles",
"core-journal-school-curriculum",
"core-journal-great-clans-presentation"
]
},
{
"name": "Techniques",
"color": "#4b1eb3",
"sorting": "m",
"packs": [
"core-techniques-kata",
"core-techniques-kiho",
"core-techniques-inversions",
"core-techniques-invocations",
"core-techniques-rituals",
"core-techniques-shuji",
"core-techniques-maho",
"core-techniques-ninjutsu",
"core-techniques-mantra",
"core-techniques-school",
"core-techniques-mastery"
]
},
{
"name": "Objects related",
"color": "#0985ae",
"sorting": "m",
"packs": [
"core-properties",
"core-item-patterns",
"core-items",
"core-armors",
"core-weapons",
"core-signature-scrolls",
"core-celestial-implement-boons"
]
},
{
"name": "Helpers",
"color": "#6b3d1f",
"sorting": "m",
"packs": [
"core-journal-conditions",
"core-journal-terrain-qualities",
"core-journal-opportunities"
]
},
{
"name": "Tools",
"color": "#834949",
"sorting": "m",
"packs": [
"core-name-tables",
"core-macros"
]
}
]
}
],
"packs": [
{
"name": "core-properties",
"label": "Properties",
"path": "packs/core-properties.db",
"type": "Item",
"system": "l5r5e"
},
{
"name": "core-techniques-kata",
"label": "Techniques Kata",
"path": "packs/core-techniques-kata.db",
"type": "Item",
"system": "l5r5e"
},
{
"name": "core-techniques-kiho",
"label": "Techniques Kihõ",
"path": "packs/core-techniques-kiho.db",
"type": "Item",
"system": "l5r5e"
},
{
"name": "core-techniques-inversions",
"label": "Techniques Inversions",
"path": "packs/core-techniques-inversions.db",
"type": "Item",
"system": "l5r5e"
},
{
"name": "core-techniques-invocations",
"label": "Techniques Invocations",
"path": "packs/core-techniques-invocations.db",
"type": "Item",
"system": "l5r5e"
},
{
"name": "core-techniques-rituals",
"label": "Techniques Rituals",
"path": "packs/core-techniques-rituals.db",
"type": "Item",
"system": "l5r5e"
},
{
"name": "core-techniques-shuji",
"label": "Techniques Shuji",
"path": "packs/core-techniques-shuji.db",
"type": "Item",
"system": "l5r5e"
},
{
"name": "core-techniques-maho",
"label": "Techniques Mahõ",
"path": "packs/core-techniques-maho.db",
"type": "Item",
"system": "l5r5e"
},
{
"name": "core-techniques-ninjutsu",
"label": "Techniques Ninjutsu",
"path": "packs/core-techniques-ninjutsu.db",
"type": "Item",
"system": "l5r5e"
},
{
"name": "core-techniques-mantra",
"label": "Techniques Mantra",
"path": "packs/core-techniques-mantra.db",
"type": "Item",
"system": "l5r5e"
},
{
"name": "core-techniques-school",
"label": "School Abilities",
"path": "packs/core-techniques-school.db",
"type": "Item",
"system": "l5r5e"
},
{
"name": "core-techniques-mastery",
"label": "Mastery Abilities",
"path": "packs/core-techniques-mastery.db",
"type": "Item",
"system": "l5r5e"
},
{
"name": "core-items",
"label": "Items",
"path": "packs/core-items.db",
"type": "Item",
"system": "l5r5e"
},
{
"name": "core-armors",
"label": "Armors",
"path": "packs/core-armors.db",
"type": "Item",
"system": "l5r5e"
},
{
"name": "core-weapons",
"label": "Weapons",
"path": "packs/core-weapons.db",
"type": "Item",
"system": "l5r5e"
},
{
"name": "core-peculiarities-distinctions",
"label": "Distinctions",
"path": "packs/core-peculiarities-distinctions.db",
"type": "Item",
"system": "l5r5e"
},
{
"name": "core-peculiarities-passions",
"label": "Passions",
"path": "packs/core-peculiarities-passions.db",
"type": "Item",
"system": "l5r5e"
},
{
"name": "core-peculiarities-adversities",
"label": "Adversities",
"path": "packs/core-peculiarities-adversities.db",
"type": "Item",
"system": "l5r5e"
},
{
"name": "core-peculiarities-anxieties",
"label": "Anxieties",
"path": "packs/core-peculiarities-anxieties.db",
"type": "Item",
"system": "l5r5e"
},
{
"name": "core-bonds",
"label": "Bonds",
"path": "packs/core-bonds.db",
"type": "Item",
"system": "l5r5e"
},
{
"name": "core-titles",
"label": "Titles",
"path": "packs/core-titles.db",
"type": "Item",
"system": "l5r5e"
},
{
"name": "core-item-patterns",
"label": "Item Patterns",
"path": "packs/core-item-patterns.db",
"type": "Item",
"system": "l5r5e"
},
{
"name": "core-signature-scrolls",
"label": "Signature Scrolls",
"path": "packs/core-signature-scrolls.db",
"type": "Item",
"system": "l5r5e"
},
{
"name": "core-celestial-implement-boons",
"label": "Celestial Implement Boons",
"path": "packs/core-celestial-implement-boons.db",
"type": "Item",
"system": "l5r5e"
},
{
"name": "core-journal-school-curriculum",
"label": "School Curriculum",
"path": "packs/core-journal-school-curriculum.db",
"type": "JournalEntry",
"system": "l5r5e"
},
{
"name": "core-journal-conditions",
"label": "Conditions",
"path": "packs/core-journal-conditions.db",
"type": "JournalEntry",
"system": "l5r5e"
},
{
"name": "core-journal-terrain-qualities",
"label": "Terrain Qualities",
"path": "packs/core-journal-terrain-qualities.db",
"type": "JournalEntry",
"system": "l5r5e"
},
{
"name": "core-journal-great-clans-presentation",
"label": "Great Clans Presentation",
"path": "packs/core-journal-great-clans-presentation.db",
"type": "JournalEntry",
"system": "l5r5e"
},
{
"name": "core-journal-opportunities",
"label": "Opportunities",
"path": "packs/core-journal-opportunities.db",
"type": "JournalEntry",
"system": "l5r5e"
},
{
"name": "core-name-tables",
"label": "Name Tables",
"path": "packs/core-name-tables.db",
"type": "RollTable",
"system": "l5r5e"
},
{
"name": "core-macros",
"label": "L5R5E Macros",
"path": "packs/core-macros.db",
"type": "Macro",
"system": "l5r5e"
}
],
"languages": [
{
"lang": "en",
"name": "English",
"path": "lang/en-en.json"
},
{
"lang": "fr",
"name": "French (France)",
"path": "lang/fr-fr.json"
},
{
"lang": "es",
"name": "Spanish (Spain)",
"path": "lang/es-es.json"
},
{
"lang": "it",
"name": "Italian (Italy)",
"path": "lang/it-it.json"
}
],
"media": [
{
"type": "screenshot",
"url": "https://gitlab.com/teaml5r/l5r5e/-/raw/master/screenshoots/login.jpg?raw=true",
"caption": "Login screen"
},
{
"type": "screenshot",
"url": "https://gitlab.com/teaml5r/l5r5e/-/raw/master/screenshoots/roll.jpg?raw=true",
"caption": "DicePicker and Roll and Keep"
},
{
"type": "screenshot",
"url": "https://gitlab.com/teaml5r/l5r5e/-/raw/master/screenshoots/school.jpg?raw=true",
"caption": "Experience and School"
},
{
"type": "screenshot",
"url": "https://gitlab.com/teaml5r/l5r5e/-/raw/master/screenshoots/sheet_pc.jpg?raw=true",
"caption": "PC sheet"
},
{
"type": "screenshot",
"url": "https://gitlab.com/teaml5r/l5r5e/-/raw/master/screenshoots/sheet_npc_army.jpg?raw=true",
"caption": "NPC and Army sheets"
},
{
"type": "screenshot",
"url": "https://gitlab.com/teaml5r/l5r5e/-/raw/master/screenshoots/compendiums.jpg?raw=true",
"caption": "Compendiums"
}
]
}

View File

@@ -8,7 +8,7 @@
Created by potrace 1.15, written by Peter Selinger 2001-2017 Created by potrace 1.15, written by Peter Selinger 2001-2017
</metadata> </metadata>
<g transform="translate(0.000000,1264.000000) scale(0.100000,-0.100000)" <g transform="translate(0.000000,1264.000000) scale(0.100000,-0.100000)"
fill="#000000" stroke="none"> fill="currentColor" stroke="none">
<path d="M5925 12625 c-248 -21 -380 -39 -378 -51 1 -7 -56 -18 -148 -29 -83 <path d="M5925 12625 c-248 -21 -380 -39 -378 -51 1 -7 -56 -18 -148 -29 -83
-9 -190 -25 -237 -35 -244 -53 -454 -105 -602 -151 -91 -28 -210 -64 -264 -81 -9 -190 -25 -237 -35 -244 -53 -454 -105 -602 -151 -91 -28 -210 -64 -264 -81
-465 -138 -1038 -415 -1493 -719 -234 -157 -585 -429 -773 -600 -215 -196 -465 -138 -1038 -415 -1493 -719 -234 -157 -585 -429 -773 -600 -215 -196

Before

Width:  |  Height:  |  Size: 6.0 KiB

After

Width:  |  Height:  |  Size: 6.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

View File

@@ -0,0 +1,2 @@
All original conditions icons was made by Nikotka.
Altered by Vlyan to be more visible in FoundryVTT.

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 50 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 48 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

View File

@@ -1,13 +1,20 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 24.1.2, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> <svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="48.2px" height="48.2px" viewBox="0 0 48.2 48.2" xml:space="preserve">
width="48.2px" height="48.2px" viewBox="0 0 48.2 48.2" style="enable-background:new 0 0 48.2 48.2;" xml:space="preserve"> <defs>
<linearGradient id="iconGradient" x1="0%" y1="0%" x2="0%" y2="100%">
<stop offset="0%" style="stop-color:#E0E0E0;stop-opacity:1" />
<stop offset="100%" style="stop-color:#FFFFFF;stop-opacity:1" />
</linearGradient>
</defs>
<style type="text/css"> <style type="text/css">
.st0{fill:#030104;} /* Gradient fill with contrasting stroke */
.fill-gradient{fill:url(#iconGradient);}
.stroke-contrast{stroke:#2a2a2a;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round;}
</style> </style>
<g> <g>
<g> <g>
<path class="st0" d="M43,40c-0.9-7.2-2.3-13.9-5.7-20.2c-1-1.9-2.6-3.5-3.8-5.3c-0.2-0.3-0.5-0.7-0.7-1.1c0.7-0.6,1.4-1.3,2.1-2 <path class="fill-gradient stroke-contrast" d="M43,40c-0.9-7.2-2.3-13.9-5.7-20.2c-1-1.9-2.6-3.5-3.8-5.3c-0.2-0.3-0.5-0.7-0.7-1.1c0.7-0.6,1.4-1.3,2.1-2
c0.8-0.8,1.5-1.5,2.1-2.3c0.7-0.8,1.2-1.5,1.7-2.1c1-1.3,1.5-2.3,1.5-2.3s-1,0.5-2.3,1.5c-0.7,0.5-1.4,1.1-2.1,1.7 c0.8-0.8,1.5-1.5,2.1-2.3c0.7-0.8,1.2-1.5,1.7-2.1c1-1.3,1.5-2.3,1.5-2.3s-1,0.5-2.3,1.5c-0.7,0.5-1.4,1.1-2.1,1.7
c-0.8,0.7-1.5,1.4-2.3,2.1c-0.4,0.4-0.9,0.9-1.3,1.4c-0.7-3.4-3.5-6.2-7-6.6c-3.7-0.5-7.6,1.7-8.5,5.4c-0.1,0.5-0.3,1-0.4,1.4 c-0.8,0.7-1.5,1.4-2.3,2.1c-0.4,0.4-0.9,0.9-1.3,1.4c-0.7-3.4-3.5-6.2-7-6.6c-3.7-0.5-7.6,1.7-8.5,5.4c-0.1,0.5-0.3,1-0.4,1.4
c-0.5-0.5-1-1-1.5-1.5C14,9.3,13.2,8.6,12.5,8c-0.8-0.7-1.5-1.2-2.1-1.7C9,5.3,8,4.8,8,4.8s0.5,1,1.5,2.3c0.5,0.7,1.1,1.4,1.7,2.1 c-0.5-0.5-1-1-1.5-1.5C14,9.3,13.2,8.6,12.5,8c-0.8-0.7-1.5-1.2-2.1-1.7C9,5.3,8,4.8,8,4.8s0.5,1,1.5,2.3c0.5,0.7,1.1,1.4,1.7,2.1
@@ -17,10 +24,10 @@
c0.5,0.1,1,0,1.4-0.2c0.4-0.2,0.8-0.6,1.1-1.1c0.5-0.7,0.7-0.3,1.3,0.6c0.5,0.9,1.6,1.2,3,1.4c2.9,0.4,2.8,0.6,2.5,3.5 c0.5,0.1,1,0,1.4-0.2c0.4-0.2,0.8-0.6,1.1-1.1c0.5-0.7,0.7-0.3,1.3,0.6c0.5,0.9,1.6,1.2,3,1.4c2.9,0.4,2.8,0.6,2.5,3.5
c0,0.5,0,1-0.1,1.4c-0.5,2.3,0.1,5.1-1.8,6.9c-0.8,0.7-1.6,1.1-1.5,1.2c0.1,0.1,1.1,0,2.1-0.1c2.4-0.3,4.9-0.7,7.4-1 c0,0.5,0,1-0.1,1.4c-0.5,2.3,0.1,5.1-1.8,6.9c-0.8,0.7-1.6,1.1-1.5,1.2c0.1,0.1,1.1,0,2.1-0.1c2.4-0.3,4.9-0.7,7.4-1
C42.3,42.1,43.1,41.1,43,40z M21.3,8.2C20.2,9,19.2,9.3,19,9s0.4-1.2,1.5-1.9c1-0.7,2.1-1.1,2.3-0.7C23,6.6,22.3,7.5,21.3,8.2z"/> C42.3,42.1,43.1,41.1,43,40z M21.3,8.2C20.2,9,19.2,9.3,19,9s0.4-1.2,1.5-1.9c1-0.7,2.1-1.1,2.3-0.7C23,6.6,22.3,7.5,21.3,8.2z"/>
<path class="st0" d="M32,35.9c0-0.2-0.9-0.2-1.9-0.1c-1,0.1-1.8,0.4-1.8,0.7c0,0.2,0.9,0.3,1.9,0.1C31.3,36.4,32,36.1,32,35.9z"/> <path class="fill-gradient stroke-contrast" d="M32,35.9c0-0.2-0.9-0.2-1.9-0.1c-1,0.1-1.8,0.4-1.8,0.7c0,0.2,0.9,0.3,1.9,0.1C31.3,36.4,32,36.1,32,35.9z"/>
<path class="st0" d="M18.2,35.8c-0.9-0.2-1.7-0.1-1.8,0.1c0,0.2,0.7,0.5,1.6,0.7c0.9,0.2,1.7,0.1,1.8-0.1 <path class="fill-gradient stroke-contrast" d="M18.2,35.8c-0.9-0.2-1.7-0.1-1.8,0.1c0,0.2,0.7,0.5,1.6,0.7c0.9,0.2,1.7,0.1,1.8-0.1
C19.9,36.3,19.2,36,18.2,35.8z"/> C19.9,36.3,19.2,36,18.2,35.8z"/>
<path class="st0" d="M25.3,40.3c-0.1,0-0.3,0-0.5-0.1c-0.1,0-0.2-0.1-0.3-0.1c-0.1,0-0.2,0-0.2-0.1c-0.1,0-0.3-0.1-0.4,0 <path class="fill-gradient stroke-contrast" d="M25.3,40.3c-0.1,0-0.3,0-0.5-0.1c-0.1,0-0.2-0.1-0.3-0.1c-0.1,0-0.2,0-0.2-0.1c-0.1,0-0.3-0.1-0.4,0
c-0.1,0-0.3,0-0.4,0c-0.1,0-0.2,0.1-0.2,0.1c-0.1,0-0.2,0.1-0.2,0.1c-0.2,0.1-0.4,0-0.5,0.1c-0.1,0-0.2,0.1-0.2,0.1s0,0.1,0,0.3 c-0.1,0-0.3,0-0.4,0c-0.1,0-0.2,0.1-0.2,0.1c-0.1,0-0.2,0.1-0.2,0.1c-0.2,0.1-0.4,0-0.5,0.1c-0.1,0-0.2,0.1-0.2,0.1s0,0.1,0,0.3
c0,0.2,0,0.3,0.1,0.6c0.1,0.1,0.1,0.2,0.3,0.3c0.1,0.1,0.2,0.2,0.4,0.3c0.1,0.1,0.3,0.2,0.4,0.2c0.2,0,0.3,0.1,0.5,0.1 c0,0.2,0,0.3,0.1,0.6c0.1,0.1,0.1,0.2,0.3,0.3c0.1,0.1,0.2,0.2,0.4,0.3c0.1,0.1,0.3,0.2,0.4,0.2c0.2,0,0.3,0.1,0.5,0.1
c0.2,0,0.3,0,0.5-0.1c0.2,0,0.3-0.1,0.4-0.2c0.3-0.1,0.5-0.4,0.6-0.6c0.1-0.2,0.2-0.4,0.2-0.6c0-0.2,0-0.2,0-0.2 c0.2,0,0.3,0,0.5-0.1c0.2,0,0.3-0.1,0.4-0.2c0.3-0.1,0.5-0.4,0.6-0.6c0.1-0.2,0.2-0.4,0.2-0.6c0-0.2,0-0.2,0-0.2

Before

Width:  |  Height:  |  Size: 2.4 KiB

After

Width:  |  Height:  |  Size: 2.7 KiB

View File

@@ -1,9 +1,9 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 24.1.2, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> <!-- Generator: Adobe Illustrator 24.1.2, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" <svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
width="48.2px" height="48.2px" viewBox="0 0 48.2 48.2" style="enable-background:new 0 0 48.2 48.2;" xml:space="preserve"> width="48.2px" height="48.2px" viewBox="-1 -1 50.2 50.2" style="enable-background:new -1 -1 50.2 50.2;" xml:space="preserve">
<style type="text/css"> <style type="text/css">
.st0{fill:#1D1C1A;} .st0{fill:#030104;}
</style> </style>
<g> <g>
<path class="st0" d="M48.7,4.8c0,0-0.1,0-0.2,0.1c-0.9,0.6-4.4,2-9.3,3.1c-4.6,1-10.8,1.8-16.7,2.3c-6.2,0.6-14.9,0.8-21.3-0.5 <path class="st0" d="M48.7,4.8c0,0-0.1,0-0.2,0.1c-0.9,0.6-4.4,2-9.3,3.1c-4.6,1-10.8,1.8-16.7,2.3c-6.2,0.6-14.9,0.8-21.3-0.5

Before

Width:  |  Height:  |  Size: 4.6 KiB

After

Width:  |  Height:  |  Size: 4.6 KiB

View File

@@ -262,7 +262,7 @@
} }
}, },
{ {
"id": "Journal of observations", "id": "Journal of Observations",
"name": "Journal d'observations", "name": "Journal d'observations",
"description": "", "description": "",
"source_reference": { "source_reference": {
@@ -894,8 +894,8 @@
} }
}, },
{ {
"id": "Astrolabe", "id": "Astrolabe (Unicorn)",
"name": "Astrolabe (WIP)", "name": "Astrolabe (Licorne)",
"description": "", "description": "",
"source_reference": { "source_reference": {
"page": "" "page": ""
@@ -972,6 +972,198 @@
"source_reference": { "source_reference": {
"page": "" "page": ""
} }
},
{
"id": "Glass Ornament (Dragonfly)",
"name": "Le Verre de Libellule",
"description": "",
"source_reference": {
"page": ""
}
},
{
"id": "Arrows: Armor-Piercing",
"name": "Flèches : Perce-armure",
"description": "",
"source_reference": {
"page": "236"
}
},
{
"id": "Arrows: Flesh-Cutter",
"name": "Flèches : Fouilleuse dentrailles",
"description": "",
"source_reference": {
"page": "236"
}
},
{
"id": "Arrows: Humming-Bulb",
"name": "Flèches : Bulbe bourdonnant",
"description": "",
"source_reference": {
"page": "236"
}
},
{
"id": "Journal",
"name": "Journal",
"description": "",
"source_reference": {
"page": "66"
}
},
{
"id": "Smithing hammer",
"name": "Marteau de forgeron",
"description": "",
"source_reference": {
"page": ""
}
},
{
"id": "Sumai Garb",
"name": "Tenue de Sumai",
"description": "",
"source_reference": {
"page": "76"
}
},
{
"id": "Drafting Paper",
"name": "Papier à dessin",
"description": "",
"source_reference": {
"page": ""
}
},
{
"id": "Fine set of Chisels",
"name": "Ensemble de burins de grande qualité",
"description": "",
"source_reference": {
"page": ""
}
},
{
"id": "Omamori (Boon of Fukurokujin)",
"name": "Omamori (Bienfait de Fukurokujin)",
"description": "",
"source_reference": {
"page": "243"
}
},
{
"id": "Omamori (Boon of Bishamon)",
"name": "Omamori (Bienfait de Bishamon)",
"description": "",
"source_reference": {
"page": "243"
}
},
{
"id": "Omamori (Boon of Benten)",
"name": "Omamori (Bienfait de Benten)",
"description": "",
"source_reference": {
"page": "243"
}
},
{
"id": "Poison - Noxious Poison (One Vial)",
"name": "Poison - Toxines (un flacon)",
"description": "",
"source_reference": {
"page": "244"
}
},
{
"id": "Poison - Fire Biter (One Vial)",
"name": "Poison - Morsure Brûlante (un flacon)",
"description": "",
"source_reference": {
"page": "244"
}
},
{
"id": "Poison - Night Milk (One Vial)",
"name": "Poison - Lait de la Nuit (un flacon)",
"description": "",
"source_reference": {
"page": "244"
}
},
{
"id": "Blanket",
"name": "Couverture",
"description": "",
"source_reference": {
"page": "245"
}
},
{
"id": "Bowl",
"name": "Bol",
"description": "",
"source_reference": {
"page": "245"
}
},
{
"id": "Flint and Tinder",
"name": "Silex et amadou",
"description": "",
"source_reference": {
"page": "245"
}
},
{
"id": "Furoshiki",
"name": "Furoshiki",
"description": "",
"source_reference": {
"page": "245"
}
},
{
"id": "The Obsidian Journal",
"name": "Le Journal dobsidienne",
"description": "",
"source_reference": {
"page": "128"
}
},
{
"id": "Pouch of Insence",
"name": "Bourse dEncens",
"description": "",
"source_reference": {
"page": "85"
}
},
{
"id": "Religious texts",
"name": "Textes religieux",
"description": "",
"source_reference": {
"page": "86"
}
},
{
"id": "Small Sachel of Ingredients",
"name": "Petit sachet d'ingrédients",
"description": "",
"source_reference": {
"page": "80"
}
},
{
"id": "Blessed Glass vial",
"name": "Fiole en verre bénie",
"description": "",
"source_reference": {
"page": "80"
}
} }
] ]
} }

View File

@@ -9,7 +9,7 @@
"pages": { "pages": {
"Figure: Afflicted": { "Figure: Afflicted": {
"name": "Tourmenté - Image", "name": "Tourmenté - Image",
"src": "icons/svg/sun.svg" "src": "systems/l5r5e/assets/icons/conditions/afflicted.webp"
}, },
"Afflicted": { "Afflicted": {
"name": "Tourmenté", "name": "Tourmenté",
@@ -22,7 +22,7 @@
"pages": { "pages": {
"Figure: Bleeding": { "Figure: Bleeding": {
"name": "En sang - Image", "name": "En sang - Image",
"src": "icons/svg/blood.svg" "src": "systems/l5r5e/assets/icons/conditions/bleeding.webp"
}, },
"Bleeding": { "Bleeding": {
"name": "En sang", "name": "En sang",
@@ -35,7 +35,7 @@
"pages": { "pages": {
"Figure: Burning": { "Figure: Burning": {
"name": "En feu - Image", "name": "En feu - Image",
"src": "icons/svg/fire.svg" "src": "systems/l5r5e/assets/icons/conditions/burning.webp"
}, },
"Burning": { "Burning": {
"name": "En feu", "name": "En feu",
@@ -48,7 +48,7 @@
"pages": { "pages": {
"Figure: Compromised": { "Figure: Compromised": {
"name": "Compromis - Image", "name": "Compromis - Image",
"src": "icons/svg/terror.svg" "src": "systems/l5r5e/assets/icons/conditions/compromised.webp"
}, },
"Compromised": { "Compromised": {
"name": "Compromis", "name": "Compromis",
@@ -61,7 +61,7 @@
"pages": { "pages": {
"Figure: Dazed": { "Figure: Dazed": {
"name": "Hébété - Image", "name": "Hébété - Image",
"src": "icons/svg/eye.svg" "src": "systems/l5r5e/assets/icons/conditions/dazed.webp"
}, },
"Dazed": { "Dazed": {
"name": "Hébété", "name": "Hébété",
@@ -74,7 +74,7 @@
"pages": { "pages": {
"Figure: Disoriented": { "Figure: Disoriented": {
"name": "Désorienté - Image", "name": "Désorienté - Image",
"src": "icons/svg/daze.svg" "src": "systems/l5r5e/assets/icons/conditions/disoriented.webp"
}, },
"Disoriented": { "Disoriented": {
"name": "Désorienté", "name": "Désorienté",
@@ -87,7 +87,7 @@
"pages": { "pages": {
"Figure: Dying [X Rounds]": { "Figure: Dying [X Rounds]": {
"name": "Mourant (X rounds) - Image", "name": "Mourant (X rounds) - Image",
"src": "icons/svg/skull.svg" "src": "systems/l5r5e/assets/icons/conditions/dying_1.webp"
}, },
"Dying [X Rounds]": { "Dying [X Rounds]": {
"name": "Mourant (X rounds)", "name": "Mourant (X rounds)",
@@ -100,7 +100,7 @@
"pages": { "pages": {
"Figure: Enraged": { "Figure: Enraged": {
"name": "Enragé - Image", "name": "Enragé - Image",
"src": "icons/svg/lightning.svg" "src": "systems/l5r5e/assets/icons/conditions/enraged.webp"
}, },
"Enraged": { "Enraged": {
"name": "Enragé", "name": "Enragé",
@@ -113,7 +113,7 @@
"pages": { "pages": {
"Figure: Exhausted": { "Figure: Exhausted": {
"name": "Epuisé - Image", "name": "Epuisé - Image",
"src": "icons/svg/sleep.svg" "src": "systems/l5r5e/assets/icons/conditions/exhausted.webp"
}, },
"Exhausted": { "Exhausted": {
"name": "Epuisé", "name": "Epuisé",
@@ -126,7 +126,7 @@
"pages": { "pages": {
"Figure: Immobilized": { "Figure: Immobilized": {
"name": "Immobilisé - Image", "name": "Immobilisé - Image",
"src": "icons/svg/net.svg" "src": "systems/l5r5e/assets/icons/conditions/immobilized.webp"
}, },
"Immobilized": { "Immobilized": {
"name": "Immobilisé", "name": "Immobilisé",
@@ -139,7 +139,7 @@
"pages": { "pages": {
"Figure: Incapacitated": { "Figure: Incapacitated": {
"name": "Hors de combat - Image", "name": "Hors de combat - Image",
"src": "icons/svg/downgrade.svg" "src": "systems/l5r5e/assets/icons/conditions/incapacitated.webp"
}, },
"Incapacitated": { "Incapacitated": {
"name": "Hors de combat", "name": "Hors de combat",
@@ -152,7 +152,7 @@
"pages": { "pages": {
"Figure: Intoxicated": { "Figure: Intoxicated": {
"name": "Ivre - Image", "name": "Ivre - Image",
"src": "icons/svg/poison.svg" "src": "systems/l5r5e/assets/icons/conditions/intoxicated.webp"
}, },
"Intoxicated": { "Intoxicated": {
"name": "Ivre", "name": "Ivre",
@@ -165,7 +165,7 @@
"pages": { "pages": {
"Figure: Prone": { "Figure: Prone": {
"name": "A terre - Image", "name": "A terre - Image",
"src": "icons/svg/falling.svg" "src": "systems/l5r5e/assets/icons/conditions/prone.webp"
}, },
"Prone": { "Prone": {
"name": "A terre", "name": "A terre",
@@ -178,7 +178,7 @@
"pages": { "pages": {
"Figure: Silenced": { "Figure: Silenced": {
"name": "Aphone - Image", "name": "Aphone - Image",
"src": "icons/svg/silenced.svg" "src": "systems/l5r5e/assets/icons/conditions/silenced.webp"
}, },
"Silenced": { "Silenced": {
"name": "Aphone", "name": "Aphone",
@@ -191,7 +191,7 @@
"pages": { "pages": {
"Figure: Unconscious": { "Figure: Unconscious": {
"name": "Inconscient - Image", "name": "Inconscient - Image",
"src": "icons/svg/unconscious.svg" "src": "systems/l5r5e/assets/icons/conditions/unconscious.webp"
}, },
"Unconscious": { "Unconscious": {
"name": "Inconscient", "name": "Inconscient",
@@ -204,7 +204,7 @@
"pages": { "pages": {
"Figure: Wounded": { "Figure: Wounded": {
"name": "Blessé - Image", "name": "Blessé - Image",
"src": "icons/svg/degen.svg" "src": "systems/l5r5e/assets/icons/conditions/heavily_wounded.webp"
}, },
"Wounded": { "Wounded": {
"name": "Blessé", "name": "Blessé",
@@ -217,7 +217,7 @@
"pages": { "pages": {
"Figure: Illness: Oozing Sore Disease": { "Figure: Illness: Oozing Sore Disease": {
"name": "Maladie : Bubons purulents - Image", "name": "Maladie : Bubons purulents - Image",
"src": "icons/svg/eye.svg" "src": "systems/l5r5e/assets/icons/conditions/illness_oozing_sore_disease.webp"
}, },
"Illness: Oozing Sore Disease": { "Illness: Oozing Sore Disease": {
"name": "Maladie : Bubons purulents", "name": "Maladie : Bubons purulents",
@@ -230,7 +230,7 @@
"pages": { "pages": {
"Figure: Illness: Gut Sickness": { "Figure: Illness: Gut Sickness": {
"name": "Maladie : Mal des entrailles - Image", "name": "Maladie : Mal des entrailles - Image",
"src": "icons/svg/poison.svg" "src": "systems/l5r5e/assets/icons/conditions/illness_gut_sickness.webp"
}, },
"Illness: Gut Sickness": { "Illness: Gut Sickness": {
"name": "Maladie : Mal des entrailles", "name": "Maladie : Mal des entrailles",
@@ -243,7 +243,7 @@
"pages": { "pages": {
"Figure: Illness: Coughing Illness": { "Figure: Illness: Coughing Illness": {
"name": "Maladie : Mauvaise toux - Image", "name": "Maladie : Mauvaise toux - Image",
"src": "icons/svg/poison.svg" "src": "systems/l5r5e/assets/icons/conditions/illness_coughing_illness.webp"
}, },
"Illness: Coughing Illness": { "Illness: Coughing Illness": {
"name": "Maladie : Mauvaise toux", "name": "Maladie : Mauvaise toux",
@@ -256,7 +256,7 @@
"pages": { "pages": {
"Figure: Illness: Unsteady Illness": { "Figure: Illness: Unsteady Illness": {
"name": "Maladie : Vertiges - Image", "name": "Maladie : Vertiges - Image",
"src": "icons/svg/daze.svg" "src": "systems/l5r5e/assets/icons/conditions/illness_unsteady_illness.webp"
}, },
"Illness: Unsteady Illness": { "Illness: Unsteady Illness": {
"name": "Maladie : Vertiges", "name": "Maladie : Vertiges",
@@ -269,7 +269,7 @@
"pages": { "pages": {
"Figure: Illness: Fire Rash": { "Figure: Illness: Fire Rash": {
"name": "Maladie : Rougeurs - Image", "name": "Maladie : Rougeurs - Image",
"src": "icons/svg/fire.svg" "src": "systems/l5r5e/assets/icons/conditions/illness_fire_rash.webp"
}, },
"Illness: Fire Rash": { "Illness: Fire Rash": {
"name": "Maladie : Rougeurs", "name": "Maladie : Rougeurs",
@@ -282,7 +282,7 @@
"pages": { "pages": {
"Figure: Centered": { "Figure: Centered": {
"name": "Centered (WIP) - Image", "name": "Centered (WIP) - Image",
"src": "systems/l5r5e/assets/icons/social.svg" "src": "systems/l5r5e/assets/icons/conditions/centered.webp"
}, },
"Centered": { "Centered": {
"name": "Centered (WIP)", "name": "Centered (WIP)",
@@ -295,7 +295,7 @@
"pages": { "pages": {
"Figure: Emboldened": { "Figure: Emboldened": {
"name": "Emboldened (WIP) - Image", "name": "Emboldened (WIP) - Image",
"src": "systems/l5r5e/assets/icons/social.svg" "src": "systems/l5r5e/assets/icons/conditions/emboldened.webp"
}, },
"Emboldened": { "Emboldened": {
"name": "Emboldened (WIP)", "name": "Emboldened (WIP)",
@@ -308,7 +308,7 @@
"pages": { "pages": {
"Figure: Possessed": { "Figure: Possessed": {
"name": "Possessed (WIP) - Image", "name": "Possessed (WIP) - Image",
"src": "icons/svg/terror.svg" "src": "systems/l5r5e/assets/icons/conditions/possesed.webp"
}, },
"Possessed": { "Possessed": {
"name": "Possessed (WIP)", "name": "Possessed (WIP)",

View File

@@ -40,8 +40,8 @@
}, },
"Compendium": { "Compendium": {
"HideDisabledSources": { "HideDisabledSources": {
"Title": "[Compendium] Hide sources filter without reference", "Title": "[Compendium] Hide unavailable sources",
"Hint": "Hide empty source with no elements in source filter." "Hint": "Hide sources that have no available content from the source filter dropdown."
}, },
"HideEmptySourcesFromPlayers": { "HideEmptySourcesFromPlayers": {
"Title": "[Compendium] Hide elements with empty reference", "Title": "[Compendium] Hide elements with empty reference",
@@ -76,7 +76,10 @@
"signature_scroll": "Signature Scroll", "signature_scroll": "Signature Scroll",
"item_pattern": "Item Pattern", "item_pattern": "Item Pattern",
"army_fortification": "Fortification", "army_fortification": "Fortification",
"army_cohort": "Cohort" "army_cohort": "Cohort",
"arcane": "Arcane",
"etat": "State",
"mystere": "Mystery"
}, },
"Journal": { "Journal": {
"journal": "Journal" "journal": "Journal"
@@ -136,6 +139,7 @@
"player_filter_label": "Player filter", "player_filter_label": "Player filter",
"player_filter_tooltip": "Apply player filter", "player_filter_tooltip": "Apply player filter",
"already_in_filter": "Already in filter", "already_in_filter": "Already in filter",
"no_results": "Not Found",
"sources_categories": { "sources_categories": {
"rules": "Rules", "rules": "Rules",
"adventures": "Adventures", "adventures": "Adventures",
@@ -317,7 +321,8 @@
"school_ability": "School Ability", "school_ability": "School Ability",
"mastery_ability": "Mastery Ability", "mastery_ability": "Mastery Ability",
"title_ability": "Title Ability", "title_ability": "Title Ability",
"specificity": "Specificity" "specificity": "Specificity",
"mot_invocation": "Invocation Word"
}, },
"peculiarities": { "peculiarities": {
"types": { "types": {
@@ -492,7 +497,10 @@
"rarity_modifier": "Rarity modifier", "rarity_modifier": "Rarity modifier",
"item_pattern": "Item Patterns", "item_pattern": "Item Patterns",
"signature_scroll": "Signature Scrolls", "signature_scroll": "Signature Scrolls",
"school_curriculum_journal": "Drop curriculum's journal in sheet to link it" "school_curriculum_journal": "Drop curriculum's journal in sheet to link it",
"warning": {
"total_less_then_spent": "Total Experience is less then Used Experience."
}
}, },
"character_types": { "character_types": {
"character": "Player Character", "character": "Player Character",
@@ -705,6 +713,7 @@
"demeanor": { "demeanor": {
"adaptable": "Adaptable", "adaptable": "Adaptable",
"aggressive": "Aggressive", "aggressive": "Aggressive",
"alluring": "Alluring",
"ambitious": "Ambitious", "ambitious": "Ambitious",
"amiable": "Amiable", "amiable": "Amiable",
"analytical": "Analytical", "analytical": "Analytical",
@@ -713,6 +722,7 @@
"assertive": "Assertive", "assertive": "Assertive",
"beguiling": "Beguiling", "beguiling": "Beguiling",
"bitter": "Bitter", "bitter": "Bitter",
"bloodthirsty": "Bloodthirsty",
"bold": "Bold", "bold": "Bold",
"calculating": "Calculating", "calculating": "Calculating",
"calm": "Calm", "calm": "Calm",
@@ -723,37 +733,68 @@
"confused": "Confused", "confused": "Confused",
"courageous": "Courageous", "courageous": "Courageous",
"cowardly": "Cowardly", "cowardly": "Cowardly",
"crestfallen": "Crestfallen",
"curious": "Curious", "curious": "Curious",
"defensive": "Defensive",
"dependable": "Dependable", "dependable": "Dependable",
"detached": "Detached", "detached": "Detached",
"determined": "Determined",
"devoted": "Devoted",
"direct": "Direct",
"disheartened": "Disheartened", "disheartened": "Disheartened",
"dour": "Dour",
"duplicitous": "Duplicitous",
"effusive": "Effusive",
"enraged": "Enraged", "enraged": "Enraged",
"fanatical": "Fanatical",
"feral": "Feral", "feral": "Feral",
"fervent": "Fervent",
"fickle": "Fickle", "fickle": "Fickle",
"fierce": "Fierce", "fierce": "Fierce",
"flighty": "Flighty", "flighty": "Flighty",
"flippant": "Flippant", "flippant": "Flippant",
"friendly": "Friendly", "friendly": "Friendly",
"gruff": "Gruff", "gruff": "Gruff",
"honorable": "Honorable",
"hubristic": "Prétentieuse",
"hungry": "Hungry", "hungry": "Hungry",
"idealistic": "Idealistic",
"imposing": "Imposing",
"inquisitive": "Inquisitive",
"intense": "Intense", "intense": "Intense",
"intimidating": "Intimidating", "intimidating": "Intimidating",
"irritable": "Irritable", "irritable": "Irritable",
"loyal": "Loyal", "loyal": "Loyal",
"methodical": "Methodical",
"meticulous": "Meticulous",
"mischievous": "Mischievous", "mischievous": "Mischievous",
"moon_blessed": "Moon-blessed",
"morose": "Morose", "morose": "Morose",
"near_feral": "Near feral",
"nurturing": "Nurturing", "nurturing": "Nurturing",
"obsessed": "Obsessed",
"obstinate": "Obstinate", "obstinate": "Obstinate",
"opportunistic": "Opportunistic", "opportunistic": "Opportunistic",
"otherworldly": "Otherworldly",
"outgoing": "Outgoing",
"passionate": "Passionate", "passionate": "Passionate",
"patient": "Patient",
"personable": "Personable",
"playful": "Playful", "playful": "Playful",
"power_hungry": "Power hungry", "power_hungry": "Power hungry",
"proud": "Proud", "proud": "Proud",
"refined": "Refined",
"reserved": "Reserved",
"restrained": "Restrained", "restrained": "Restrained",
"righteous": "Righteous",
"scheming": "Scheming", "scheming": "Scheming",
"serene": "Serene", "serene": "Serene",
"serious": "Serious", "serious": "Serious",
"shrewd": "Shrewd", "shrewd": "Shrewd",
"sinister": "Sinister",
"sociable": "Sociable",
"stoic": "Stoic",
"starved": "Starved",
"stubborn": "Stubborn", "stubborn": "Stubborn",
"suspicious": "Suspicious", "suspicious": "Suspicious",
"teasing": "Teasing", "teasing": "Teasing",
@@ -761,7 +802,12 @@
"uncertain": "Uncertain", "uncertain": "Uncertain",
"unenthused": "Unenthused", "unenthused": "Unenthused",
"vain": "Vain", "vain": "Vain",
"wary": "Wary" "vengeful": "Vengeful",
"vindictive": "Vindictive",
"wary": "Wary",
"watchful": "Watchful",
"wrathful": "Wrathful",
"zealous": "Zealous"
}, },
"compendium": { "compendium": {
"filter_rank": "Show Rank", "filter_rank": "Show Rank",
@@ -769,14 +815,15 @@
"filter": { "filter": {
"rank": "Rank", "rank": "Rank",
"rarity": "Rarity", "rarity": "Rarity",
"ring": "Ring" "ring": "Ring",
"clear": "Clear Filter"
} }
}, },
"source_reference": { "source_reference": {
"core_rulebook": "Core Rulebook", "core_rulebook": "Core Rulebook",
"emerald_empire": "Emerald Empire", "emerald_empire": "Emerald Empire",
"shadowlands": "Shadowlands", "shadowlands": "Shadowlands",
"court_of_stones": "Court of Stones", "court_of_stones": "Courts of Stone",
"path_of_waves": "Path of Waves", "path_of_waves": "Path of Waves",
"celestial_realms": "Celestial Realms", "celestial_realms": "Celestial Realms",
"fields_of_victory": "Fields of Victory", "fields_of_victory": "Fields of Victory",
@@ -799,6 +846,169 @@
"the_scroll_or_the_blade": "The Scroll or the Blade", "the_scroll_or_the_blade": "The Scroll or the Blade",
"legacies_of_war": "Legacies of War", "legacies_of_war": "Legacies of War",
"children_of_the_five_winds": "Children of the Five Winds" "children_of_the_five_winds": "Children of the Five Winds"
},
"tactical_grid": {
"settings": {
"title": "Tactical Grid Settings",
"label": "Tactical Grid Settings",
"hint": "Configures tactical grid range band distances (GM only) and their visual appearance colors and transparency (all users).",
"cells": "spaces",
"world": {
"enabled": "Enable Tactical Grid",
"enabled_hint": "Enables or Disable tactical grid for everyone",
"start": "Start"
},
"client": {
"color": "Color",
"alpha": "Alpha"
},
"range": "Range {index}",
"validate": {
"start-too-small": "Must be greater than Range Band {previousRangeIndex} ({previousStart})",
"start-too-large": "Must be lower then Range Band {nextRangeIndex} ({nextStart})"
},
"reset": "Reset to Default",
"submit": "Save"
},
"range_band": "Range Band {band}",
"range_abbreviation": "RB {range}"
}
},
"chiaroscuro": {
"skill_ranks": {
"0": "—",
"initie": "Initiate",
"expert": "Expert",
"maitre": "Master",
"parangon1": "Paragon I",
"parangon2": "Paragon II",
"parangon3": "Paragon III"
},
"difficulties": {
"simple": "Simple (7)",
"moyenne": "Average (10)",
"assez_difficile": "Somewhat Difficult (13)",
"difficile": "Difficult (16)",
"tres_difficile": "Very Difficult (22)",
"heroique": "Heroic (28)",
"improbable": "Improbable (32)"
},
"aspects": {
"solar": "Solar Aspect",
"lunar": "Lunar Aspect",
"gauge": "Aspect Gauge",
"desequilibre_solaire": "Solar Imbalance",
"desequilibre_lunaire": "Lunar Imbalance"
},
"danger": {
"simple": "Simple",
"moyenne": "Average",
"assez_difficile": "Somewhat Difficult",
"difficile": "Difficult"
},
"arcane": {
"title": "Arcanes",
"label": "Arcane",
"arcane_type": "Type",
"application": "Skills",
"bonus": "Bonus",
"progression": "Progression",
"xp_cost": "XP Cost"
},
"etat": {
"title": "States",
"label": "State",
"application": "Application",
"mod": "Modifier",
"effect": "Effect",
"elimination": "Elimination Condition"
},
"mystere": {
"title": "Mysteries",
"label": "Mystery",
"mystere_type": "Type",
"mineur": "Minor",
"majeur": "Major",
"prerequisite_skill": "Prerequisite Skill",
"prerequisite_condition": "Prerequisite Condition"
},
"character": {
"is_samurai": "Samurai",
"quick_info": "Quick Info",
"default_ring": "Default Ring",
"region": "Region",
"education": "Education",
"past_problems": "Problematic Past",
"koku": "Koku",
"bu": "Bu",
"zeni": "Zeni"
},
"weapon": {
"bonus": "Bonus",
"categories": {
"arbalete": "Crossbow",
"arc": "Bow",
"contondante": "Bludgeoning Weapon",
"poing": "Hand Weapon",
"hast": "Polearm",
"improvisee": "Improvised Weapon",
"shinobi": "Shinobi Weapon",
"specialisee": "Specialized Weapon",
"bouclier": "Shield",
"hache": "Axe",
"naturel": "Natural",
"sabre": "Sword",
"nemuranai": "Nemuranai"
}
},
"armor": {
"categories": {
"vetement": "Clothing",
"leger": "Light",
"moyen": "Medium",
"lourd": "Heavy",
"nemuranai": "Nemuranai"
}
},
"item": {
"types": {
"ordinaire": "Ordinary",
"shinobi": "Shinobi",
"interdit": "Forbidden",
"gaijin": "Gaijin",
"nemuranai": "Nemuranai"
}
},
"technique": {
"mot_invocation": "Invocation Word",
"invocation_type": "Invocation Type",
"invocation_types": {
"general": "General",
"neutre": "Neutral",
"precis": "Precise"
},
"mode_invocation": "Invocation Mode"
},
"tabs": {
"invocations": "Invocations",
"identity": "Identity",
"identity_text1": "Appearance",
"identity_text2": "Biography"
},
"dice": {
"title": "Chiaroscuro Roll",
"difficulty_label": "Difficulty",
"modifier_label": "Modifier",
"options": "Options",
"aspect_point": "Aspect Point",
"assistance": "Assistance",
"total_dice": "Dice to roll",
"bonus": "Rank bonus",
"roll": "Roll",
"dice_result": "Dice total",
"adjusted": "Adjusted (Parangon)",
"success": "Success",
"failure": "Failure"
} }
} }
} }

View File

@@ -4,17 +4,17 @@
"Maintainers": ["Team L5R"] "Maintainers": ["Team L5R"]
}, },
"SETTINGS": { "SETTINGS": {
"None": "Sin opción", "None": "Sin opciones",
"ReverseTokenBars": { "ReverseTokenBars": {
"Title": "Reverse tokens bar", "Title": "Barra de tokens inversa",
"Hint": "Change the order in which the bars under the tokens are filled in", "Hint": "Cambia el orden en el que se rellenan las barras debajo de los tokens",
"None": "None", "None": "Ninguno",
"Fatigue": "Fatigue only", "Fatigue": "Sólo Fatiga",
"Strife": "Strife", "Strife": "Conflicto",
"Both": "Both Fatigue and Strife" "Both": "Tanto la Fatiga como el Conflicto"
}, },
"RollNKeep": { "RollNKeep": {
"DeleteOldMessage": "TyG Eliminar el mensaje anterior del chat", "DeleteOldMessage": "TyG eliminar el mensaje anterior del chat",
"DeleteOldMessageHint": "Elige si mantener o borrar el mensaje anterior de la serie TyG" "DeleteOldMessageHint": "Elige si mantener o borrar el mensaje anterior de la serie TyG"
}, },
"Initiative": { "Initiative": {
@@ -22,38 +22,38 @@
"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": { "ShowAllStatusEffects": {
"Title": "Show all StatusEffects", "Title": "Mostrar todos los efectos de estado",
"Hint": "If uncheck (default), only L5R conditions are shown." "Hint": "Si se desmarca (por defecto), solo se muestran las condiciones de L5A."
}, },
"CustomTechniques": { "CustomTechniques": {
"Title": "Use custom techniques", "Title": "Usar técnicas personalizadas",
"Hint": "Add 'Specificity' technique type to serve as a catch-all." "Hint": "Añadir el tipo de técnica 'Particularidad' para que sirva como comodín."
}, },
"CustomCompendiumName": { "CustomCompendiumName": {
"Title": "Custom Compendium Name", "Title": "Nombre de Compendio personalizado",
"Hint": "For advanced users that want to change the name of the custom compendiums (Used to disables the embedded ones).", "Hint": "Permite a los usuarios avanzados cambiar el nombre de los compendios personalizados (utilizados para desactivar los compendios integrados).",
"Notification": "Unable set Custom Compendium: '{name}'. Is it activated and registered with Babele?" "Notification": "No se puede configurar el compendio personalizado: '{name}'. ¿Está activado y registrado con Babele?"
}, },
"CustomItemsHeight": { "CustomItemsHeight": {
"Title": "Default items windows height", "Title": "Altura predeterminada de las ventanas de objetos",
"Hint": "Set the default height for 'Items' windows types (techniques, weapons...), in pixels" "Hint": "Establecer la altura predeterminada para las ventanas de 'objetos' (técnicas, armas...), en píxeles."
}, },
"Compendium": { "Compendium": {
"HideDisabledSources": { "HideDisabledSources": {
"Title": "[Compendium] Hide sources filter without reference", "Title": "[Compendio] Ocultar filtro de fuentes sin referencia",
"Hint": "Hide empty source with no elements in source filter." "Hint": "Ocultar fuentes vacías sin elementos en el filtro de fuentes."
}, },
"HideEmptySourcesFromPlayers": { "HideEmptySourcesFromPlayers": {
"Title": "[Compendium] Hide elements with empty reference", "Title": "[Compendio] Ocultar elementos con referencias vacías",
"Hint": "Basically require a reference to be set in order for players to view the content in compendiums" "Hint": "Requiere que se establezca una referencia para que los jugadores puedan ver el contenido de los compendios."
}, },
"AllowedOfficialSources": { "AllowedOfficialSources": {
"Title": "[Compendium] Available official resources", "Title": "[Compendio] Recursos oficiales disponibles",
"Hint": "Useful if you as a GM want to limit the available official content to only books you own" "Hint": "Útil si, como DJ, quieres limitar el contenido oficial disponible solo a los libros que tienes."
}, },
"AllowedUnofficialSources": { "AllowedUnofficialSources": {
"Title": "[Compendium] Available unofficial resources", "Title": "[Compendio] Recursos no oficiales disponibles",
"Hint": "Useful if you have compendiums with custom items mixed with player facing items." "Hint": "Útil si tienes compendios con objetos personalizados mezclados con objetos destinados a los jugadores.."
} }
} }
}, },
@@ -83,64 +83,65 @@
} }
}, },
"l5r5e": { "l5r5e": {
"title": "Legend of the five Rings", "title": "La Leyenda de los Cinco Anillos",
"conditions": { "conditions": {
"afflicted": "Afflicted", "afflicted": "Afligido",
"bleeding": "Bleeding", "bleeding": "Hemorragia",
"burning": "Burning", "burning": "Ardiendo",
"centered": "Centered", "centered": "Centrado",
"compromised": "Compromised", "compromised": "Comprometido",
"dazed": "Dazed", "dazed": "Atontado",
"disoriented": "Disoriented", "disoriented": "Desorientado",
"dying": "Dying", "dying": "Moribundo",
"emboldened": "Emboldened", "emboldened": "Alentado",
"enraged": "Enraged", "enraged": "Enfurecido",
"exhausted": "Exhausted", "exhausted": "Agotado",
"immobilized": "Immobilized", "immobilized": "Inmovilizado",
"illness_coughing_illness": "Illness: Coughing Illness", "illness_coughing_illness": "Enfermedad: tos enfermiza",
"illness_fire_rash": "Illness: Fire Rash", "illness_fire_rash": "Enfermedad: sarpullido de fuego",
"illness_gut_sickness": "Illness: Gut Sickness", "illness_gut_sickness": "Enfermedad: malestar intestinal",
"illness_oozing_sore_disease": "Illness: Oozing Sore Disease", "illness_oozing_sore_disease": "Enfermedad: llagas supurantes",
"illness_unsteady_illness": "Illness: Unsteady Illness", "illness_unsteady_illness": "Enfermedad: temblores",
"incapacitated": "Incapacitated", "incapacitated": "Incapacitado",
"intoxicated": "Intoxicated", "intoxicated": "Intoxicado",
"possessed": "Possessed", "possessed": "Poseído",
"prone": "Prone", "prone": "Tumbado",
"silenced": "Silenced", "silenced": "Silenciado",
"unconscious": "Unconscious", "unconscious": "Inconsciente",
"lightly_wounded_fire": "Lightly Wounded (Fire)", "lightly_wounded_fire": "Herida leve (Fuego)",
"lightly_wounded_water": "Lightly Wounded (Water)", "lightly_wounded_water": "Herida leve (Agua)",
"lightly_wounded_air": "Lightly Wounded (Air)", "lightly_wounded_air": "Herida leve (Aire)",
"lightly_wounded_earth": "Lightly Wounded (Earth)", "lightly_wounded_earth": "Herida leve (Tierra)",
"lightly_wounded_void": "Lightly Wounded (Void)", "lightly_wounded_void": "Herida leve (Vacío)",
"severely_wounded_fire": "Severely Wounded (Fire)", "severely_wounded_fire": "Herida grave (Fuego)",
"severely_wounded_water": "Severely Wounded (Water)", "severely_wounded_water": "Herida grave (Agua)",
"severely_wounded_air": "Severely Wounded (Air)", "severely_wounded_air": "Herida grave (Aire)",
"severely_wounded_earth": "Severely Wounded (Earth)", "severely_wounded_earth": "Herida grave (Tierra)",
"severely_wounded_void": "Severely Wounded (Void)" "severely_wounded_void": "Herida grave (Vacío)"
}, },
"global": { "global": {
"edge_translation_disclaimer": "Edge Studio nos da su permiso para ofrecer este módulo a la comunidad, pero tanto los textos así como los códigos que lo constituyen no tienen su aprobación explícita.", "edge_translation_disclaimer": "Edge Studio nos da su permiso para ofrecer este módulo a la comunidad, pero tanto los textos así como los códigos que lo constituyen no tienen su aprobación explícita.",
"add": "Añadir", "add": "Añadir",
"edit": "Editar", "edit": "Editar",
"delete_confirm": "¿Estás seguro de que quieres borrar '{name}' ?", "delete_confirm": "¿Estás seguro de que quieres borrar '{name}'?",
"drop_here": "Dejar caer aquí", "drop_here": "Dejar caer aquí",
"send_to_chat": "To Chat", "send_to_chat": "Al Chat",
"locked": "Locked", "locked": "Bloqueado",
"unlocked": "Unlocked", "unlocked": "Desbloqueado",
"random": "Random" "random": "Aleatorio"
}, },
"multiselect": { "multiselect": {
"empty_tag": "<blank>", "empty_tag": "<blank>",
"placeholder": "Filter Sources", "placeholder": "Filtro de recursos",
"player_filter_label": "Player filter", "player_filter_label": "Filtro de jugador",
"player_filter_tooltip": "Apply player filter", "player_filter_tooltip": "Aplicar filtro de jugador",
"already_in_filter": "Already in filter", "already_in_filter": "Ya en el filtro",
"no_results": "Not Found",
"sources_categories": { "sources_categories": {
"rules": "Rules", "rules": "Reglas",
"adventures": "Adventures", "adventures": "Aventuras",
"supplements": "Supplements", "supplements": "Suplementos",
"others": "Others" "others": "Otros"
} }
}, },
"logo": { "logo": {
@@ -160,19 +161,19 @@
}, },
"discord": { "discord": {
"title": "Discord oficial de FoundryVTT", "title": "Discord oficial de FoundryVTT",
"info": "Su navegador se abrirá el discord oficial de Foundry", "info": "Tu navegador abrirá el discord oficial de Foundry",
"link": "https://discordapp.com/invite/DDBZUDf" "link": "https://discordapp.com/invite/DDBZUDf"
}, },
"notes": { "notes": {
"title": "Changelog", "title": "Registro de cambios",
"link": "https://gitlab.com/teaml5r/l5r5e/-/blob/master/CHANGELOG.md" "link": "https://gitlab.com/teaml5r/l5r5e/-/blob/master/CHANGELOG.md"
}, },
"issues": { "issues": {
"title": "Issues", "title": "Problemas",
"link": "https://gitlab.com/teaml5r/l5r5e/-/issues" "link": "https://gitlab.com/teaml5r/l5r5e/-/issues"
}, },
"custom-compendiums": { "custom-compendiums": {
"title": "Compendiums", "title": "Compendios",
"link": "https://gitlab.com/teaml5r/l5r5e/-/wikis/users/custom-compendiums.md" "link": "https://gitlab.com/teaml5r/l5r5e/-/wikis/users/custom-compendiums.md"
}, },
"wiki": { "wiki": {
@@ -231,10 +232,10 @@
"success_text": "¡Éxito!", "success_text": "¡Éxito!",
"bonus_text": "Éxitos adicionales", "bonus_text": "Éxitos adicionales",
"fail_text": "¡Fallo!", "fail_text": "¡Fallo!",
"unknown_target": "Unknown target" "unknown_target": "Objetivo desconocido"
}, },
"dicepicker": { "dicepicker": {
"title": "Dice Picker", "title": "Selector de dados",
"difficulty_title": "Dificultad", "difficulty_title": "Dificultad",
"difficulty_hidden_label": "Ocultar NO", "difficulty_hidden_label": "Ocultar NO",
"use_void_point_label": "Gasta un", "use_void_point_label": "Gasta un",
@@ -242,7 +243,7 @@
"skill_assistance_label": "Asistencia", "skill_assistance_label": "Asistencia",
"roll_label": "Tirar", "roll_label": "Tirar",
"bt_add_macro": "Añadir una macro", "bt_add_macro": "Añadir una macro",
"gm_request_dp_to_players": "Roll request sent to players" "gm_request_dp_to_players": "Solicitud de tirada enviada a los jugadores"
}, },
"roll_n_keep": { "roll_n_keep": {
"title": "Tirar y guardar", "title": "Tirar y guardar",
@@ -252,13 +253,13 @@
"keep_drop_here": "Guardar", "keep_drop_here": "Guardar",
"max": "Máx", "max": "Máx",
"bt_validate": "Terminar este paso", "bt_validate": "Terminar este paso",
"bt_strife": "Apply strife", "bt_strife": "Aplicar Conflicto",
"undo": "[GM] Deshacer los últimos cambios" "undo": "[GM] Deshacer los últimos cambios"
} }
}, },
"gm": { "gm": {
"toolbox": { "toolbox": {
"title": "GM ToolBox", "title": "Caja de herramientas del DJ",
"difficulty_hidden": "Cambiar la dificultad visible", "difficulty_hidden": "Cambiar la dificultad visible",
"difficulty": "Cambiar dificultad (Izquierda: añadir, Derecha: sustraer, central: NO 2)", "difficulty": "Cambiar dificultad (Izquierda: añadir, Derecha: sustraer, central: NO 2)",
"sleep": "Descanso confortable para todos los personajes (Eliminar fatiga = Agua x2. (Click Izquierdo: sólo a los personajes seleccionados. Derecho: a todos los actores)", "sleep": "Descanso confortable para todos los personajes (Eliminar fatiga = Agua x2. (Click Izquierdo: sólo a los personajes seleccionados. Derecho: a todos los actores)",
@@ -274,7 +275,7 @@
"add_selected_tokens": "Add selected tokens", "add_selected_tokens": "Add selected tokens",
"honor_glory_status": "H/G/E", "honor_glory_status": "H/G/E",
"focus_vigilance": "Con./Ale.", "focus_vigilance": "Con./Ale.",
"mouse_control": "Click Izquierdo +1, Derecho: -1, middle: set to 0" "mouse_control": "Click Izquierdo +1, Derecho: -1, medio: poner a 0"
} }
}, },
"weapons": { "weapons": {
@@ -307,7 +308,7 @@
"type": "Técnicas permitidas", "type": "Técnicas permitidas",
"kata": "Kata", "kata": "Kata",
"kiho": "Kihõ", "kiho": "Kihõ",
"inversion": "Inversion", "inversion": "Inversión",
"invocation": "Invocación", "invocation": "Invocación",
"ritual": "Ritual", "ritual": "Ritual",
"shuji": "Shuji", "shuji": "Shuji",
@@ -317,7 +318,7 @@
"school_ability": "Capacidad de escuela", "school_ability": "Capacidad de escuela",
"mastery_ability": "Habilidad de maestría", "mastery_ability": "Habilidad de maestría",
"title_ability": "Capacidad de título", "title_ability": "Capacidad de título",
"specificity": "Specificity" "specificity": "Particularidad"
}, },
"peculiarities": { "peculiarities": {
"types": { "types": {
@@ -340,7 +341,7 @@
"status": "Estatus", "status": "Estatus",
"ninjo": "Ninjo", "ninjo": "Ninjo",
"giri": "Giri", "giri": "Giri",
"past": "Past", "past": "Pasado",
"bushido_tenets": { "bushido_tenets": {
"title": "Preceptos del Bushidō", "title": "Preceptos del Bushidō",
"paramount": "Más importante", "paramount": "Más importante",
@@ -357,20 +358,20 @@
"combat": "Combate", "combat": "Combate",
"intrigue": "Intriga" "intrigue": "Intriga"
}, },
"age": "Age", "age": "Edad",
"children": "Children", "children": "Vástagos",
"marital_status": { "marital_status": {
"title": "Marital Status", "title": "Estado civil",
"partner": "Partner", "partner": "Pareja",
"married": "Married", "married": "Casado",
"betrothed": "Betrothed", "betrothed": "Prometido",
"unmarried": "Unmarried", "unmarried": "Soltero",
"widowed": "Widowed" "widowed": "Viudo"
}, },
"gender": { "gender": {
"title": "Gender", "title": "Género",
"male": "Male", "male": "Masculino",
"female": "Female" "female": "Femenino"
} }
}, },
"skills": { "skills": {
@@ -492,7 +493,10 @@
"rarity_modifier": "Modificador de rareza", "rarity_modifier": "Modificador de rareza",
"item_pattern": "Patrones de objetos", "item_pattern": "Patrones de objetos",
"signature_scroll": "Pergaminos espaciales", "signature_scroll": "Pergaminos espaciales",
"school_curriculum_journal": "Arrastra el diario del programa en la hoja para vincularlo" "school_curriculum_journal": "Arrastra el diario del programa en la hoja para vincularlo",
"warning": {
"total_less_then_spent": "La experiencia total es menor que la experiencia utilizada."
}
}, },
"character_types": { "character_types": {
"character": "Personaje jugador", "character": "Personaje jugador",
@@ -500,33 +504,33 @@
"minion": "Esbirro" "minion": "Esbirro"
}, },
"army": { "army": {
"warlord": "Warlord", "warlord": "Señor de la guerra",
"allies_backers": "Allies and Backers", "allies_backers": "Aliados y apoyos",
"purpose_mustering": "Purpose for Mustering", "purpose_mustering": "Propósito de la movilización",
"battle_readiness": { "battle_readiness": {
"title": "Battle Readiness", "title": "Preparación para la batalla",
"strength": "Strength", "strength": "Fuerza",
"casualties": "Casualties", "casualties": "Bajas",
"discipline": "Discipline", "discipline": "Disciplina",
"panic": "Panic" "panic": "Pánico"
}, },
"commander": "Commander", "commander": "Comandante",
"commander_abilities": "Commander's relevant abilities", "commander_abilities": "Habilidades relevantes del comandante",
"army_abilities": "Army Abilities", "army_abilities": "Habilidades del ejército",
"commander_standing": "Commander's Standing", "commander_standing": "Posición del comandante",
"supplies_logistics": "Supplies and Logistics", "supplies_logistics": "Logística y suministros",
"past_battles": "Past Battles", "past_battles": "Batallas anteriores",
"cohort": { "cohort": {
"tab": "Cohorts", "tab": "Cohortes",
"title": "Cohort", "title": "Cohorte",
"leader": "Leader", "leader": "Líder",
"abilities": "Abilities" "abilities": "Habilidades"
}, },
"fortification": { "fortification": {
"tab": "Fortifications", "tab": "Fortificaciones",
"title": "Fortification Held", "title": "Fortificación",
"difficulty": "Difficulty Value", "difficulty": "Valor de dificultad",
"attrition_reduction": "Attrition Reduction" "attrition_reduction": "Reducción del desgaste"
} }
}, },
"twenty_questions": { "twenty_questions": {
@@ -553,19 +557,19 @@
}, },
"part1": { "part1": {
"title": "Parte I: Identidad básica (Clan y Familia)", "title": "Parte I: Identidad básica (Clan y Familia)",
"title_pow": "Part I: Core Identity (Region and Upbringing)", "title_pow": "Parte I: Identidad básica (Región y educación)",
"q1": "1. ¿A qué clan pertenece tu personaje? (p. 41)", "q1": "1. ¿A qué clan pertenece tu personaje? (p. 41)",
"q1_pow": "1. What region does your character come from? (p. 31)", "q1_pow": "1. ¿De que región viene tu personaje? (p. 31)",
"status": "Estatus", "status": "Estatus",
"q2": "2. ¿A qué familia pertenece tu personaje? (p. 49)", "q2": "2. ¿A qué familia pertenece tu personaje? (p. 49)",
"q2_pow": "2. What was your characters upbringing? (p. 43)", "q2_pow": "2. ¿Cual fue la educación de tu personaje? (p. 43)",
"money": "Riqueza inicial en Koku", "money": "Riqueza inicial en Koku",
"glory": "Gloria" "glory": "Gloria"
}, },
"part2": { "part2": {
"title": "Parte II: Función y escuela", "title": "Parte II: Función y escuela",
"q3": "3. ¿Cuál es la escuela de tu personaje, y en qué funciones cumple esa escuela? (p. 56)", "q3": "3. ¿Cuál es la escuela de tu personaje, y en qué funciones cumple esa escuela? (p. 56)",
"q3_pow": "3. What is your characters school, and what are its associated roles? (p. 46)", "q3_pow": "3. ¿Cuál es la escuela de tu personaje y cuáles son sus funciones asociadas? (p. 46)",
"school": "Escuela", "school": "Escuela",
"role": "Funciones", "role": "Funciones",
"honor": "Honor", "honor": "Honor",
@@ -574,23 +578,23 @@
"starting_techniques": "Técnicas iniciales (2-6)", "starting_techniques": "Técnicas iniciales (2-6)",
"outfit": "Equipo inicial", "outfit": "Equipo inicial",
"q4": "4. ¿De qué manera destaca tu personaje dentro de su escuela? (p. 88)", "q4": "4. ¿De qué manera destaca tu personaje dentro de su escuela? (p. 88)",
"q4_pow": "4. What gets your character in and out of trouble? (p. 60)" "q4_pow": "4. ¿Qué es lo que mete y saca a tu personaje de problemas? (p. 60)"
}, },
"part3": { "part3": {
"title": "Parte III: Honor y Gloria", "title": "Parte III: Honor y Gloria",
"title_pow": "Part III: The Past and the Future they interact and process", "title_pow": "Parte III: El pasado y el futuro interactúan y se funden.",
"q5": "5. ¿Quién es tu señor y cuál es el deber de tu personaje hacia él? (p. 88)", "q5": "5. ¿Quién es tu señor y cuál es el deber de tu personaje hacia él? (p. 88)",
"q5_pow": "5. What is your characters past and how does it Affect them? (p. 60)", "q5_pow": "5. ¿Cuál es el pasado de tu personaje y cómo le afecta? (p. 60)",
"choose_giri": "Elige un giri:", "choose_giri": "Elige un giri:",
"choose_past": "Select past", "choose_past": "Elige un pasado:",
"q6": "6. ¿Qué es lo que anhela tu personaje, y cómo podría esto interferir con su deber? (p. 90)", "q6": "6. ¿Qué es lo que anhela tu personaje, y cómo podría esto interferir con su deber? (p. 90)",
"q6_pow": "6. What does your character long for, and how might their past impact their ninjō? (p. 62)", "q6_pow": "6. ¿Qué anhela tu personaje y cómo podría afectar su pasado a su ninjō? (p. 62)",
"choose_ninjo": "Elige un ninjō:", "choose_ninjo": "Elige un ninjō:",
"q7": "7. ¿Cuál es la relación de tu personaje con tu clan? (p. 91)", "q7": "7. ¿Cuál es la relación de tu personaje con tu clan? (p. 91)",
"q7_pow": "7. What is your character known for? (p. 61)", "q7_pow": "7. ¿Por qué es conocido tu personaje? (p. 61)",
"increase_glory": "Aumento de la gloria", "increase_glory": "Aumento de la gloria",
"q8": "8. ¿Qué piensa tu personaje acerca del Bushidō? (p. 91)", "q8": "8. ¿Qué piensa tu personaje acerca del Bushidō? (p. 91)",
"q8_pow": "8. What does your character think of Bushidō? (p. 62)", "q8_pow": "8. ¿Qué piensa tu personaje acerca del Bushidō? (p. 62)",
"increase_honor": "Aumento del honor", "increase_honor": "Aumento del honor",
"tenets": "Escoge un precepto del Bushidō más importante y un precepto como menos significativo (ver las opiniones de los Clanes respecto del Bushidō, página 301 del libro de reglas básicas):", "tenets": "Escoge un precepto del Bushidō más importante y un precepto como menos significativo (ver las opiniones de los Clanes respecto del Bushidō, página 301 del libro de reglas básicas):",
"object": "Objeto (Rareza 5 o inferior)" "object": "Objeto (Rareza 5 o inferior)"
@@ -617,22 +621,22 @@
"part5": { "part5": {
"title": "Parte V: Personalidad y Comportamiento", "title": "Parte V: Personalidad y Comportamiento",
"q14": "14. ¿Qué es lo que advierte primero la gente al encontrarse con tu personaje? (p. 93)", "q14": "14. ¿Qué es lo que advierte primero la gente al encontrarse con tu personaje? (p. 93)",
"q14_pow": "14. What is your characters most prized possession? (p. 66)", "q14_pow": "14. ¿Cuál es la posesión más preciada de tu personaje? (p. 66)",
"accoutrement": "Accesorio estético distintivo", "accoutrement": "Accesorio estético distintivo",
"q15": "15. ¿Cómo reacciona tu personaje ante situaciones de tensión? (p. 94)", "q15": "15. ¿Cómo reacciona tu personaje ante situaciones de tensión? (p. 94)",
"q15_pow": "15. ¿Cómo reacciona tu personaje ante situaciones de tensión? (p. 66)", "q15_pow": "15. ¿Cómo reacciona tu personaje ante situaciones de tensión? (p. 66)",
"q16": "16. ¿Cuáles son las relaciones previas de tu personaje con otros clanes, familias, organizaciones y tradiciones? (p. 94)", "q16": "16. ¿Cuáles son las relaciones previas de tu personaje con otros clanes, familias, organizaciones y tradiciones? (p. 94)",
"q16_pow": "16. What are your relationships to your family, the clans, peasants, and others? (p. 66)", "q16_pow": "16. ¿Cómo son tus relaciones con tu familia, los clanes, los campesinos y demás? (p. 66)",
"object": "Objeto (Rareza 7 o inferior)" "object": "Objeto (Rareza 7 o inferior)"
}, },
"part6": { "part6": {
"title": "Parte VI: Ascestros y familia", "title": "Parte VI: Ascestros y familia",
"title_pow": "Part VI: Ancestry and Bonds", "title_pow": "Parte VI: Ascestros y vínculos",
"q17": "17. ¿Cómo describirían sus padres a tu personaje? (p. 95)", "q17": "17. ¿Cómo describirían sus padres a tu personaje? (p. 95)",
"q17_pow": "17. What shared history do you have with your group? (p. 66)", "q17_pow": "17. ¿Qué historia compartes con tu grupo? (p. 66)",
"bond": "Determine an appropriate bond to apply to your relationship", "bond": "Determina el vínculo adecuado que debes aplicar a tu relación.",
"q18": "18. ¿En honor de quién se eligio el nombre de tu personaje? (p. 95)", "q18": "18. ¿En honor de quién se eligio el nombre de tu personaje? (p. 95)",
"q18_pow": "18. Who raised you? (p. 67)", "q18_pow": "18. ¿Quién te crió? (p. 67)",
"d10r1": "Resultado D10 (1/2)", "d10r1": "Resultado D10 (1/2)",
"d10r1_choice": "Primer efecto de D10", "d10r1_choice": "Primer efecto de D10",
"d10r2": "Resultado D10 (2/2)", "d10r2": "Resultado D10 (2/2)",
@@ -652,153 +656,218 @@
} }
}, },
"char_generator": { "char_generator": {
"title": "Character Generator", "title": "Generador de personajes",
"head_bt_title": "Char. Generator", "head_bt_title": "Generador de pj",
"generate": "Generate", "generate": "Generar",
"average_value": "Average value", "average_value": "Valor medio",
"identity": "Clan, gender, age, marital status", "identity": "Clan, género, edad, estado civil",
"attributes": "Social standing, Rings, Attributes and Skills", "attributes": "Posición social, Anillos, Atributos y Habilidades",
"demeanor": "Demeanor & rings affinities", "demeanor": "Comportamiento y afinidades con los anillos",
"peculiarities": "Advantages and Disadvantages", "peculiarities": "Ventajas y desventajas",
"items": "Armors, Weapons, and Items", "items": "Armaduras, armas y objetos.",
"narrative": "Narrative (Description)" "narrative": "Historia (descripción)"
}, },
"roles": { "roles": {
"title": "Funciones", "title": "Funciones",
"artisan": "Artisan", "artisan": "Artesano",
"bushi": "Bushi", "bushi": "Bushi",
"courtier": "Courtier", "courtier": "Cortesano",
"monk": "Monk", "monk": "Monje",
"sage": "Sage", "sage": "Sabio",
"shinobi": "Shinobi", "shinobi": "Shinobi",
"shugenja": "Shugenja" "shugenja": "Shugenja"
}, },
"clans": { "clans": {
"title": "Clans", "title": "Clanes",
"label": "Clan", "label": "Clan",
"imperial": "Imperial", "imperial": "Imperial",
"crab": "Crab", "crab": "Cangrejo",
"crane": "Crane", "crane": "Grulla",
"dragon": "Dragon", "dragon": "Dragón",
"lion": "Lion", "lion": "Ln",
"phoenix": "Phoenix", "phoenix": "nix",
"scorpion": "Scorpion", "scorpion": "Escorpión",
"unicorn": "Unicorn", "unicorn": "Unicornio",
"mantis": "Mantis", "mantis": "Mantis",
"ronin": "Ronin", "ronin": "Ronin",
"badger": "Badger", "badger": "Tejón",
"bat": "Bat", "bat": "Muerciélago",
"boar": "Boar", "boar": "Jabalí",
"dragonfly": "Dragonfly", "dragonfly": "Libélula",
"firefly": "Firefly", "firefly": "Luciérnaga",
"fox": "Fox", "fox": "Zorro",
"hare": "Hare", "hare": "Liebre",
"monkey": "Monkey", "monkey": "Mono",
"oriole": "Oriole", "oriole": "Oropéndula",
"ox": "Ox", "ox": "Buey",
"sparrow": "Sparrow", "sparrow": "Gorrión",
"tortoise": "Tortoise", "tortoise": "Tortuga",
"ivory_kingdoms": "Ivory Kingdoms", "ivory_kingdoms": "Reinos de Marfil",
"qamarist": "Qamarist", "qamarist": "Qamarista",
"ujik": "Ujik" "ujik": "Ujik"
}, },
"demeanor": { "demeanor": {
"adaptable": "Adaptable", "adaptable": "Adaptable",
"aggressive": "Aggressive", "aggressive": "Agresivo",
"ambitious": "Ambitious", "alluring": "Alluring",
"amiable": "Amiable", "ambitious": "Ambicioso",
"analytical": "Analytical", "amiable": "Amigable",
"angry": "Angry", "analytical": "Analítico",
"arrogant": "Arrogant", "angry": "Enojado",
"assertive": "Assertive", "arrogant": "Arrogante",
"beguiling": "Beguiling", "assertive": "Firme",
"bitter": "Bitter", "beguiling": "Seductor",
"bold": "Bold", "bitter": "Amargado",
"calculating": "Calculating", "bloodthirsty": "Bloodthirsty",
"calm": "Calm", "bold": "Atrevido",
"capricious": "Capricious", "calculating": "Calculador",
"cautious": "Cautious", "calm": "Calmado",
"clever": "Clever", "capricious": "Caprichoso",
"compassionate": "Compassionate", "cautious": "Cuidadoso",
"confused": "Confused", "clever": "Ingenioso",
"courageous": "Courageous", "compassionate": "Compasivo",
"cowardly": "Cowardly", "confused": "Confuso",
"curious": "Curious", "courageous": "Valiente",
"dependable": "Dependable", "cowardly": "Cobarde",
"detached": "Detached", "crestfallen": "Crestfallen",
"disheartened": "Disheartened", "curious": "Curioso",
"enraged": "Enraged", "defensive": "Defensive",
"feral": "Feral", "dependable": "Fiable",
"fickle": "Fickle", "detached": "Desapegado",
"fierce": "Fierce", "determined": "Determined",
"flighty": "Flighty", "devoted": "Devoted",
"flippant": "Flippant", "direct": "Direct",
"friendly": "Friendly", "disheartened": "Desanimado",
"gruff": "Gruff", "dour": "Dour",
"hungry": "Hungry", "duplicitous": "Duplicitous",
"intense": "Intense", "effusive": "Effusive",
"intimidating": "Intimidating", "enraged": "Furioso",
"fanatical": "Fanatical",
"feral": "Salvaje",
"fervent": "Fervent",
"fickle": "Voluble",
"fierce": "Fiero",
"flighty": "Veleidoso",
"flippant": "Frívolo",
"friendly": "Amable",
"gruff": "Hosco",
"honorable": "Honorable",
"hubristic": "Hubristic",
"hungry": "Hambriento",
"idealistic": "Idealistic",
"imposing": "Imposing",
"inquisitive": "Inquisitive",
"intense": "Intenso",
"intimidating": "Intimidante",
"irritable": "Irritable", "irritable": "Irritable",
"loyal": "Loyal", "loyal": "Leal",
"mischievous": "Mischievous", "methodical": "Methodical",
"morose": "Morose", "meticulous": "Meticulous",
"nurturing": "Nurturing", "mischievous": "Travieso",
"obstinate": "Obstinate", "moon_blessed": "Moon-blessed",
"opportunistic": "Opportunistic", "morose": "Taciturno",
"passionate": "Passionate", "near_feral": "Near feral",
"playful": "Playful", "nurturing": "Animador",
"power_hungry": "Power hungry", "obsessed": "Obsessed",
"proud": "Proud", "obstinate": "Obstinado",
"restrained": "Restrained", "opportunistic": "Oportunista",
"scheming": "Scheming", "otherworldly": "Otherworldly",
"serene": "Serene", "outgoing": "Outgoing",
"serious": "Serious", "passionate": "Apasionado",
"shrewd": "Shrewd", "patient": "Patient",
"stubborn": "Stubborn", "personable": "Personable",
"suspicious": "Suspicious", "playful": "Juguetón",
"teasing": "Teasing", "power_hungry": "Ávido de poder",
"proud": "Orgulloso",
"refined": "Refined",
"reserved": "Reserved",
"restrained": "Contenido",
"righteous": "Righteous",
"scheming": "Taimado",
"serene": "Sereno",
"serious": "Serio",
"shrewd": "Artero",
"sinister": "Sinister",
"sociable": "Sociable",
"stoic": "Stoic",
"starved": "Starved",
"stubborn": "Testarudo",
"suspicious": "Suspicaz",
"teasing": "Bromista",
"territorial": "Territorial", "territorial": "Territorial",
"uncertain": "Uncertain", "uncertain": "Inseguro",
"unenthused": "Unenthused", "unenthused": "Sin entusiasmo",
"vain": "Vain", "vain": "Vanidoso",
"wary": "Wary" "vengeful": "Vengeful",
"vindictive": "Vindictive",
"wary": "Precavido",
"watchful": "Watchful",
"wrathful": "Wrathful",
"zealous": "Zealous"
}, },
"compendium": { "compendium": {
"filter_rank": "Show Rank", "filter_rank": "Mostrar rango",
"not_for_players": "Not shown to players", "not_for_players": "No mostrar a los jugadores",
"filter": { "filter": {
"rank": "Rank", "rank": "Rango",
"rarity": "Rarity", "rarity": "Rareza",
"ring": "Ring" "ring": "Anillo",
"clear": "Clear Filter"
} }
}, },
"source_reference": { "source_reference": {
"core_rulebook": "Core Rulebook", "core_rulebook": "Libro básico",
"emerald_empire": "Emerald Empire", "emerald_empire": "La guia del Imperio Esmeralda",
"shadowlands": "Shadowlands", "shadowlands": "Las Tierras Sombrías",
"court_of_stones": "Court of Stones", "court_of_stones": "Cortes de piedra",
"path_of_waves": "Path of Waves", "path_of_waves": "Path of Waves",
"celestial_realms": "Celestial Realms", "celestial_realms": "Celestial Realms",
"fields_of_victory": "Fields of Victory", "fields_of_victory": "Fields of Victory",
"writ_of_the_wild": "Writ of the Wild", "writ_of_the_wild": "Writ of the Wild",
"gm_kit": "Game Master's Kit", "gm_kit": "Pantalla del DJ",
"beginner_game": "Beginner Game", "beginner_game": "Caja de inicio",
"the_mantis_clan": "The Mantis Clan", "the_mantis_clan": "El Clan de la Mantis",
"mask_of_the_oni": "Mask of the Oni", "mask_of_the_oni": "La máscara del oni",
"winters_embrace": "Winter's Embrace", "winters_embrace": "El abrazo del invierno",
"sins_of_regret": "Sins of Regret", "sins_of_regret": "Sins of Regret",
"wheel_of_judgment": "Wheel of Judgment", "wheel_of_judgment": "Wheel of Judgment",
"blood_of_the_lioness": "Blood of the Lioness", "blood_of_the_lioness": "Blood of the Lioness",
"imperfect_land": "Imperfect Land", "imperfect_land": "Imperfect Land",
"in_the_palace_of_the_emerald_champion": "In the Palace of the Emerald Champion", "in_the_palace_of_the_emerald_champion": "En el palacio del Campeón Esmeralda",
"the_highwayman": "The Highwayman", "the_highwayman": "The Highwayman",
"wedding_at_kyotei_castle": "Wedding at Kyotei Castle", "wedding_at_kyotei_castle": "Esponsales en el Castillo Kyotei",
"the_knotted_tails": "The Knotted Tails", "the_knotted_tails": "Las Colas Anudadas",
"cresting_waves": "Cresting Waves", "cresting_waves": "Mareas Oscuras",
"deathly_turns": "Deathly Turns", "deathly_turns": "Deathly Turns",
"the_scroll_or_the_blade": "The Scroll or the Blade", "the_scroll_or_the_blade": "El pergamino o la espada",
"legacies_of_war": "Legacies of War", "legacies_of_war": "Legacies of War",
"children_of_the_five_winds": "Children of the Five Winds" "children_of_the_five_winds": "Children of the Five Winds"
},
"tactical_grid": {
"settings": {
"title": "Tactical Grid Settings",
"label": "Tactical Grid Settings",
"hint": "Configures tactical grid range band distances (GM only) and their visual appearance colors and transparency (all users).",
"cells": "spaces",
"world": {
"enabled": "Enable Tactical Grid",
"enabled_hint": "Enables or Disable tactical grid for everyone",
"start": "Start"
},
"client": {
"color": "Color",
"alpha": "Alpha"
},
"range": "Range {index}",
"validate": {
"start-too-small": "Must be greater than Range Band {previousRangeIndex} ({previousStart})",
"start-too-large": "Must be lower then Range Band {nextRangeIndex} ({nextStart})"
},
"reset": "Reset to Default",
"submit": "Save"
},
"range_band": "Range Band {band}",
"range_abbreviation": "RB {range}"
} }
} }
} }

View File

@@ -76,7 +76,10 @@
"signature_scroll": "Rouleau de marque", "signature_scroll": "Rouleau de marque",
"item_pattern": "Procédé de fabrication", "item_pattern": "Procédé de fabrication",
"army_fortification": "Fortification", "army_fortification": "Fortification",
"army_cohort": "Régiment" "army_cohort": "Régiment",
"arcane": "Arcane",
"etat": "État",
"mystere": "Mystère"
}, },
"Journal": { "Journal": {
"journal": "Journal" "journal": "Journal"
@@ -136,6 +139,7 @@
"player_filter_label": "Filtre joueur", "player_filter_label": "Filtre joueur",
"player_filter_tooltip": "Applique le filtre des joueurs", "player_filter_tooltip": "Applique le filtre des joueurs",
"already_in_filter": "Filtre déjà appliqué", "already_in_filter": "Filtre déjà appliqué",
"no_results": "Aucun résultat",
"sources_categories": { "sources_categories": {
"rules": "Règles", "rules": "Règles",
"adventures": "Aventures", "adventures": "Aventures",
@@ -317,7 +321,8 @@
"school_ability": "Capacité d'école", "school_ability": "Capacité d'école",
"mastery_ability": "Capacité de maîtrise", "mastery_ability": "Capacité de maîtrise",
"title_ability": "Capacité de Titre", "title_ability": "Capacité de Titre",
"specificity": "Particularité" "specificity": "Particularité",
"mot_invocation": "Mot d'Invocation"
}, },
"peculiarities": { "peculiarities": {
"types": { "types": {
@@ -492,7 +497,10 @@
"rarity_modifier": "Modificateur de rareté", "rarity_modifier": "Modificateur de rareté",
"item_pattern": "Procédés de fabrication", "item_pattern": "Procédés de fabrication",
"signature_scroll": "Rouleaux de marque", "signature_scroll": "Rouleaux de marque",
"school_curriculum_journal": "Déposer un journal de Cursus dans la feuille pour le lier" "school_curriculum_journal": "Déposer un journal de Cursus dans la feuille pour le lier",
"warning": {
"total_less_then_spent": "L'expérience totale est inférieure à l'expérience utilisée."
}
}, },
"character_types": { "character_types": {
"character": "Personnage Joueur", "character": "Personnage Joueur",
@@ -703,65 +711,103 @@
"ujik": "Ujik" "ujik": "Ujik"
}, },
"demeanor": { "demeanor": {
"adaptable": "Adaptable", "adaptable": "Malléable",
"aggressive": "Agressive", "aggressive": "Agressive",
"alluring": "Attirante",
"ambitious": "Ambitieuse", "ambitious": "Ambitieuse",
"amiable": "Sympathique", "amiable": "Aimable",
"analytical": "Réfléchie", "analytical": "Analytique",
"angry": "Enervée", "angry": "En colère",
"arrogant": "Arrogante", "arrogant": "Arrogante",
"assertive": "Assurée", "assertive": "Sûre de soi",
"beguiling": "Séduisante", "beguiling": "Envoûtante",
"bitter": "Amère", "bitter": "Amère",
"bold": "Audacieuse", "bloodthirsty": "Sanguinaire",
"bold": "Courageuse",
"calculating": "Calculatrice", "calculating": "Calculatrice",
"calm": "Calme", "calm": "Calme",
"capricious": "Capricieuse", "capricious": "Capricieuse",
"cautious": "Prudente", "cautious": "Prudente",
"clever": "Astucieuse", "clever": "Malicieuse",
"compassionate": "Compatissante", "compassionate": "Compatissante",
"confused": "Confuse", "confused": "Confuse",
"courageous": "Courageuse", "courageous": "Courageuse",
"cowardly": "Lâche", "cowardly": "Lâche",
"crestfallen": "Démoralisée",
"curious": "Curieuse", "curious": "Curieuse",
"defensive": "Sur la défensive",
"dependable": "Fiable", "dependable": "Fiable",
"detached": "Détachée", "detached": "Détachée",
"disheartened": "Découragée", "determined": "Déterminée",
"devoted": "Fervente",
"direct": "Directe",
"disheartened": "Abattue",
"dour": "Renfrognée",
"duplicitous": "Sournoise",
"effusive": "Communicative",
"enraged": "Enragée", "enraged": "Enragée",
"fanatical": "Fanatique",
"feral": "Sauvage", "feral": "Sauvage",
"fickle": "Inconstante", "fervent": "Dévote",
"fickle": "Volatile",
"fierce": "Féroce", "fierce": "Féroce",
"flighty": "Volage", "flighty": "Inconstante",
"flippant": "Désinvolte", "flippant": "Désinvolte",
"friendly": "Amicale", "friendly": "Amicale",
"gruff": "Bourrue", "gruff": "Bourrue",
"honorable": "Honorable",
"hubristic": "Prétentieuse",
"hungry": "Affamée", "hungry": "Affamée",
"intense": "Intense", "idealistic": "Idéaliste",
"imposing": "Impressionnante",
"inquisitive": "Inquisitrice",
"intense": "Excessive",
"intimidating": "Intimidante", "intimidating": "Intimidante",
"irritable": "Irritable", "irritable": "Colérique",
"loyal": "Fidèle", "loyal": "Loyale",
"mischievous": "Malicieuse", "methodical": "Méthodique",
"meticulous": "Méticuleuse",
"mischievous": "Taquine",
"moon_blessed": "Bénie par la Lune",
"morose": "Morose", "morose": "Morose",
"nurturing": "Encourageante", "near_feral": "Presque sauvage",
"nurturing": "Maternelle",
"obsessed": "Obsessionnelle",
"obstinate": "Obstinée", "obstinate": "Obstinée",
"opportunistic": "Opportuniste", "opportunistic": "Opportuniste",
"otherworldly": "Mystique",
"outgoing": "Agréable",
"passionate": "Passionnée", "passionate": "Passionnée",
"playful": "Enjouée", "patient": "Patiente",
"personable": "Avenante",
"playful": "Joueuse",
"power_hungry": "Avide de pouvoir", "power_hungry": "Avide de pouvoir",
"proud": "Fière", "proud": "Fière",
"restrained": "Restreinte", "refined": "Raffinée",
"scheming": "Intrigante", "restrained": "Modérée",
"reserved": "Réservée",
"righteous": "Intègre",
"scheming": "Fourbe",
"serene": "Sereine", "serene": "Sereine",
"serious": "Sérieuse", "serious": "Sérieuse",
"shrewd": "Astucieuse", "shrewd": "Rusée",
"sinister": "Sinistre",
"sociable": "Affable",
"starved": "Famélique",
"stoic": "Stoïque",
"stubborn": "Têtue", "stubborn": "Têtue",
"suspicious": "Soupçonneuse", "suspicious": "Suspicieuse",
"teasing": "Taquine", "teasing": "Moqueuse",
"territorial": "Territoriale", "territorial": "Territoriale",
"uncertain": "Incertaine", "uncertain": "Peu sûre de soi",
"unenthused": "Peu enthousiaste", "unenthused": "Amorphe",
"vain": "Vaine", "vain": "Orgueilleuse",
"wary": "Méfiante" "vengeful": "Vengeuse",
"vindictive": "Vindicative",
"wary": "Méfiante",
"watchful": "Attentif",
"wrathful": "Furieuse",
"zealous": "Zélée"
}, },
"compendium": { "compendium": {
"filter_rank": "Aff. Rangs", "filter_rank": "Aff. Rangs",
@@ -769,7 +815,8 @@
"filter": { "filter": {
"rank": "Rang", "rank": "Rang",
"rarity": "Rareté", "rarity": "Rareté",
"ring": "Anneau" "ring": "Anneau",
"clear": "Suppr. les Filtres"
} }
}, },
"source_reference": { "source_reference": {
@@ -799,6 +846,169 @@
"the_scroll_or_the_blade": "Le Parchemin ou le Sabre", "the_scroll_or_the_blade": "Le Parchemin ou le Sabre",
"legacies_of_war": "Les Flambeaux de la Guerre", "legacies_of_war": "Les Flambeaux de la Guerre",
"children_of_the_five_winds": "Les Enfants des Cinq Vents" "children_of_the_five_winds": "Les Enfants des Cinq Vents"
},
"tactical_grid": {
"settings": {
"title": "Plan Tactique",
"label": "Paramètres du Plan Tactique",
"hint": "Configure les Niveaux de Portée (GM uniquement), ainsi que les différentes couleurs et transparence (tous les utilisateurs).",
"cells": "cases",
"world": {
"enabled": "Activer le Plan Tactique",
"enabled_hint": "Active ou désactive le plan tactique pour tout le monde",
"start": "Début"
},
"client": {
"color": "Couleur",
"alpha": "Alpha"
},
"range": "Portée {index}",
"validate": {
"start-too-small": "Doit être supérieur à la Portée {previousRangeIndex} ({previousStart})",
"start-too-large": "Doit être inférieur à la Portée {nextRangeIndex} ({nextStart})"
},
"reset": "Réinitialiser les paramètres par défaut",
"submit": "Enregistrer"
},
"range_band": "Portée {band}",
"range_abbreviation": "NP {range}"
}
},
"chiaroscuro": {
"skill_ranks": {
"0": "—",
"initie": "Initié",
"expert": "Expert",
"maitre": "Maître",
"parangon1": "Parangon I",
"parangon2": "Parangon II",
"parangon3": "Parangon III"
},
"difficulties": {
"simple": "Simple (7)",
"moyenne": "Moyenne (10)",
"assez_difficile": "Assez difficile (13)",
"difficile": "Difficile (16)",
"tres_difficile": "Très difficile (22)",
"heroique": "Héroïque (28)",
"improbable": "Improbable (32)"
},
"aspects": {
"solar": "Aspect Solaire",
"lunar": "Aspect Lunaire",
"gauge": "Jauge d'Aspect",
"desequilibre_solaire": "Déséquilibre Solaire",
"desequilibre_lunaire": "Déséquilibre Lunaire"
},
"danger": {
"simple": "Simple",
"moyenne": "Moyenne",
"assez_difficile": "Assez Difficile",
"difficile": "Difficile"
},
"arcane": {
"title": "Arcanes",
"label": "Arcane",
"arcane_type": "Type",
"application": "Compétences",
"bonus": "Bonus",
"progression": "Progression",
"xp_cost": "Coût XP"
},
"etat": {
"title": "États",
"label": "État",
"application": "Application",
"mod": "Modificateur",
"effect": "Effet",
"elimination": "Condition d'élimination"
},
"mystere": {
"title": "Mystères",
"label": "Mystère",
"mystere_type": "Type",
"mineur": "Mineur",
"majeur": "Majeur",
"prerequisite_skill": "Compétence prérequis",
"prerequisite_condition": "Condition prérequis"
},
"character": {
"is_samurai": "Samouraï",
"quick_info": "Info rapide",
"default_ring": "Anneau par défaut",
"region": "Région",
"education": "Éducation",
"past_problems": "Passé problématique",
"koku": "Koku",
"bu": "Bu",
"zeni": "Zeni"
},
"weapon": {
"bonus": "Bonus",
"categories": {
"arbalete": "Arbalète",
"arc": "Arc",
"contondante": "Arme Contondante",
"poing": "Arme de Poing",
"hast": "Arme Hast",
"improvisee": "Arme Improvisée",
"shinobi": "Arme Shinobi",
"specialisee": "Arme Spécialisée",
"bouclier": "Bouclier",
"hache": "Hache",
"naturel": "Naturel",
"sabre": "Sabre",
"nemuranai": "Nemuranai"
}
},
"armor": {
"categories": {
"vetement": "Vêtement",
"leger": "Léger",
"moyen": "Moyen",
"lourd": "Lourd",
"nemuranai": "Nemuranai"
}
},
"item": {
"types": {
"ordinaire": "Ordinaire",
"shinobi": "Shinobi",
"interdit": "Interdit",
"gaijin": "Gaijin",
"nemuranai": "Nemuranai"
}
},
"technique": {
"mot_invocation": "Mot d'Invocation",
"invocation_type": "Type d'invocation",
"invocation_types": {
"general": "Général",
"neutre": "Neutre",
"precis": "Précis"
},
"mode_invocation": "Mode d'Invocation"
},
"tabs": {
"invocations": "Invocations",
"identity": "Identité",
"identity_text1": "Apparence",
"identity_text2": "Biographie"
},
"dice": {
"title": "Jet Chiaroscuro",
"difficulty_label": "Difficulté",
"modifier_label": "Modificateur",
"options": "Options",
"aspect_point": "Point d'Aspect",
"assistance": "Assistance",
"total_dice": "Dés à lancer",
"bonus": "Bonus rang",
"roll": "Lancer les dés",
"dice_result": "Somme des dés",
"adjusted": "Ajusté (Parangon)",
"success": "Réussite",
"failure": "Échec"
} }
} }
} }

View File

@@ -136,6 +136,7 @@
"player_filter_label": "Player filter", "player_filter_label": "Player filter",
"player_filter_tooltip": "Apply player filter", "player_filter_tooltip": "Apply player filter",
"already_in_filter": "Already in filter", "already_in_filter": "Already in filter",
"no_results": "Not Found",
"sources_categories": { "sources_categories": {
"rules": "Rules", "rules": "Rules",
"adventures": "Adventures", "adventures": "Adventures",
@@ -492,7 +493,10 @@
"rarity_modifier": "Modificatore rarità", "rarity_modifier": "Modificatore rarità",
"item_pattern": "Item Patterns", "item_pattern": "Item Patterns",
"signature_scroll": "Signature Scrolls", "signature_scroll": "Signature Scrolls",
"school_curriculum_journal": "Trascina il diario del curriculum sulla scheda per collegarlo" "school_curriculum_journal": "Trascina il diario del curriculum sulla scheda per collegarlo",
"warning": {
"total_less_then_spent": "L'esperienza totale è inferiore all'esperienza utilizzata."
}
}, },
"character_types": { "character_types": {
"character": "Personaggio giocante", "character": "Personaggio giocante",
@@ -705,6 +709,7 @@
"demeanor": { "demeanor": {
"adaptable": "Flessibile", "adaptable": "Flessibile",
"aggressive": "Aggressivo", "aggressive": "Aggressivo",
"alluring": "Alluring",
"ambitious": "Ambizioso", "ambitious": "Ambizioso",
"amiable": "Affabile", "amiable": "Affabile",
"analytical": "Analitico", "analytical": "Analitico",
@@ -713,6 +718,7 @@
"assertive": "Risoluto", "assertive": "Risoluto",
"beguiling": "Ammaliante", "beguiling": "Ammaliante",
"bitter": "Amaro", "bitter": "Amaro",
"bloodthirsty": "Bloodthirsty",
"bold": "Ardito", "bold": "Ardito",
"calculating": "Calcolatore", "calculating": "Calcolatore",
"calm": "Calmo", "calm": "Calmo",
@@ -723,37 +729,68 @@
"confused": "Confuso", "confused": "Confuso",
"courageous": "Coraggioso", "courageous": "Coraggioso",
"cowardly": "Codardo", "cowardly": "Codardo",
"crestfallen": "Crestfallen",
"curious": "Curioso", "curious": "Curioso",
"defensive": "Defensive",
"dependable": "Affidabile", "dependable": "Affidabile",
"detached": "Distaccato", "detached": "Distaccato",
"determined": "Determined",
"devoted": "Devoted",
"direct": "Direct",
"disheartened": "Sconfortato", "disheartened": "Sconfortato",
"dour": "Dour",
"duplicitous": "Duplicitous",
"effusive": "Effusive",
"enraged": "Infuriato", "enraged": "Infuriato",
"fanatical": "Fanatical",
"feral": "Selvaggio", "feral": "Selvaggio",
"fervent": "Fervent",
"fickle": "Volubile", "fickle": "Volubile",
"fierce": "Agguerrito", "fierce": "Agguerrito",
"flighty": "Volubile", "flighty": "Volubile",
"flippant": "Irriverente", "flippant": "Irriverente",
"friendly": "Amichevole", "friendly": "Amichevole",
"gruff": "Burbero", "gruff": "Burbero",
"honorable": "Honorable",
"hubristic": "Prétentieuse",
"hungry": "Affamato", "hungry": "Affamato",
"idealistic": "Idealistic",
"imposing": "Imposing",
"inquisitive": "Inquisitive",
"intense": "Intenso", "intense": "Intenso",
"intimidating": "Intimidatorio", "intimidating": "Intimidatorio",
"irritable": "Irritabile", "irritable": "Irritabile",
"loyal": "Leale", "loyal": "Leale",
"methodical": "Methodical",
"meticulous": "Meticulous",
"mischievous": "Malandrino", "mischievous": "Malandrino",
"moon_blessed": "Moon-blessed",
"morose": "Cupo", "morose": "Cupo",
"near_feral": "Near feral",
"nurturing": "Materno", "nurturing": "Materno",
"obsessed": "Obsessed",
"obstinate": "Ostinato", "obstinate": "Ostinato",
"opportunistic": "Opportunista", "opportunistic": "Opportunista",
"otherworldly": "Otherworldly",
"outgoing": "Outgoing",
"passionate": "Appassionato", "passionate": "Appassionato",
"patient": "Patient",
"personable": "Personable",
"playful": "Giocoso", "playful": "Giocoso",
"power_hungry": "Affamato di potere", "power_hungry": "Affamato di potere",
"proud": "Orgoglioso", "proud": "Orgoglioso",
"refined": "Refined",
"reserved": "Reserved",
"restrained": "Contenuto", "restrained": "Contenuto",
"righteous": "Righteous",
"scheming": "Cospiratore", "scheming": "Cospiratore",
"serene": "Sereno", "serene": "Sereno",
"serious": "Serio", "serious": "Serio",
"shrewd": "Scaltro", "shrewd": "Scaltro",
"sinister": "Sinister",
"sociable": "Sociable",
"stoic": "Stoic",
"starved": "Starved",
"stubborn": "Testardo", "stubborn": "Testardo",
"suspicious": "Sospettoso", "suspicious": "Sospettoso",
"teasing": "Stuzzicante", "teasing": "Stuzzicante",
@@ -761,7 +798,12 @@
"uncertain": "Incerto", "uncertain": "Incerto",
"unenthused": "Non entusiasta", "unenthused": "Non entusiasta",
"vain": "Vanesio", "vain": "Vanesio",
"wary": "Diffidente" "vengeful": "Vengeful",
"vindictive": "Vindictive",
"wary": "Diffidente",
"watchful": "Watchful",
"wrathful": "Wrathful",
"zealous": "Zealous"
}, },
"compendium": { "compendium": {
"filter_rank": "Show Rank", "filter_rank": "Show Rank",
@@ -769,14 +811,15 @@
"filter": { "filter": {
"rank": "Rank", "rank": "Rank",
"rarity": "Rarity", "rarity": "Rarity",
"ring": "Ring" "ring": "Ring",
"clear": "Clear Filter"
} }
}, },
"source_reference": { "source_reference": {
"core_rulebook": "Core Rulebook", "core_rulebook": "Core Rulebook",
"emerald_empire": "Emerald Empire", "emerald_empire": "Emerald Empire",
"shadowlands": "Shadowlands", "shadowlands": "Shadowlands",
"court_of_stones": "Court of Stones", "court_of_stones": "Courts of Stone",
"path_of_waves": "Path of Waves", "path_of_waves": "Path of Waves",
"celestial_realms": "Celestial Realms", "celestial_realms": "Celestial Realms",
"fields_of_victory": "Fields of Victory", "fields_of_victory": "Fields of Victory",
@@ -799,6 +842,32 @@
"the_scroll_or_the_blade": "The Scroll or the Blade", "the_scroll_or_the_blade": "The Scroll or the Blade",
"legacies_of_war": "Legacies of War", "legacies_of_war": "Legacies of War",
"children_of_the_five_winds": "Children of the Five Winds" "children_of_the_five_winds": "Children of the Five Winds"
},
"tactical_grid": {
"settings": {
"title": "Tactical Grid Settings",
"label": "Tactical Grid Settings",
"hint": "Configures tactical grid range band distances (GM only) and their visual appearance colors and transparency (all users).",
"cells": "spaces",
"world": {
"enabled": "Enable Tactical Grid",
"enabled_hint": "Enables or Disable tactical grid for everyone",
"start": "Start"
},
"client": {
"color": "Color",
"alpha": "Alpha"
},
"range": "Range {index}",
"validate": {
"start-too-small": "Must be greater than Range Band {previousRangeIndex} ({previousStart})",
"start-too-large": "Must be lower then Range Band {nextRangeIndex} ({nextStart})"
},
"reset": "Reset to Default",
"submit": "Save"
},
"range_band": "Range Band {band}",
"range_abbreviation": "RB {range}"
} }
} }
} }

View File

@@ -30,7 +30,7 @@
{"_id":"L5RCoreIte000030","name":"Tent (Yurt)","permission":{"default":0},"type":"item","data":{"equipped":false,"quantity":1,"weight":"2","rarity":"5","zeni":"10 koku","properties":[],"description":"","source_reference":{"source":"core_rulebook","page":"245"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/item.svg","effects":[]} {"_id":"L5RCoreIte000030","name":"Tent (Yurt)","permission":{"default":0},"type":"item","data":{"equipped":false,"quantity":1,"weight":"2","rarity":"5","zeni":"10 koku","properties":[],"description":"","source_reference":{"source":"core_rulebook","page":"245"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/item.svg","effects":[]}
{"_id":"L5RCoreIte000031","name":"Scroll satchel","permission":{"default":0},"type":"item","data":{"equipped":false,"quantity":1,"weight":"0","rarity":"3","zeni":"1 bu","properties":[],"description":"","source_reference":{"source":"core_rulebook","page":"60"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/item.svg","effects":[]} {"_id":"L5RCoreIte000031","name":"Scroll satchel","permission":{"default":0},"type":"item","data":{"equipped":false,"quantity":1,"weight":"0","rarity":"3","zeni":"1 bu","properties":[],"description":"","source_reference":{"source":"core_rulebook","page":"60"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/item.svg","effects":[]}
{"_id":"L5RCoreIte000032","name":"Traveling pack","permission":{"default":0},"type":"item","data":{"equipped":false,"quantity":1,"weight":"0","rarity":"1","zeni":"10 koku","properties":[{"id":"L5RCorePro000012","name":"Mundane"}],"description":"","source_reference":{"source":"core_rulebook","page":"245"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/item.svg","effects":[]} {"_id":"L5RCoreIte000032","name":"Traveling pack","permission":{"default":0},"type":"item","data":{"equipped":false,"quantity":1,"weight":"0","rarity":"1","zeni":"10 koku","properties":[{"id":"L5RCorePro000012","name":"Mundane"}],"description":"","source_reference":{"source":"core_rulebook","page":"245"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/item.svg","effects":[]}
{"_id":"L5RCoreIte000033","name":"Journal of observations","permission":{"default":0},"type":"item","data":{"equipped":false,"quantity":1,"weight":"0","rarity":"3","zeni":"1 bu","properties":[],"description":"","source_reference":{"source":"core_rulebook","page":"67"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/item.svg","effects":[]} {"_id":"L5RCoreIte000033","name":"Journal of Observations","permission":{"default":0},"type":"item","data":{"equipped":false,"quantity":1,"weight":"0","rarity":"3","zeni":"1 bu","properties":[],"description":"","source_reference":{"source":"core_rulebook","page":"67"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/item.svg","effects":[]}
{"_id":"L5RCoreIte000034","name":"Omamori (Boon of Jurojin)","permission":{"default":0},"type":"item","data":{"equipped":false,"quantity":1,"weight":"0","rarity":"2","zeni":"5 bu","properties":[],"description":"","source_reference":{"source":"celestial_realms","page":"97"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/item.svg","effects":[]} {"_id":"L5RCoreIte000034","name":"Omamori (Boon of Jurojin)","permission":{"default":0},"type":"item","data":{"equipped":false,"quantity":1,"weight":"0","rarity":"2","zeni":"5 bu","properties":[],"description":"","source_reference":{"source":"celestial_realms","page":"97"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/item.svg","effects":[]}
{"_id":"L5RCoreIte000035","name":"Omamori (Boon of Kisshoten)","permission":{"default":0},"type":"item","data":{"equipped":false,"quantity":1,"weight":"0","rarity":"2","zeni":"5 bu","properties":[],"description":"","source_reference":{"source":"celestial_realms","page":"97"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/item.svg","effects":[]} {"_id":"L5RCoreIte000035","name":"Omamori (Boon of Kisshoten)","permission":{"default":0},"type":"item","data":{"equipped":false,"quantity":1,"weight":"0","rarity":"2","zeni":"5 bu","properties":[],"description":"","source_reference":{"source":"celestial_realms","page":"97"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/item.svg","effects":[]}
{"_id":"L5RCoreIte000036","name":"Omamori (Boon of Hotei)","permission":{"default":0},"type":"item","data":{"equipped":false,"quantity":1,"weight":"0","rarity":"2","zeni":"5 bu","properties":[],"description":"","source_reference":{"source":"celestial_realms","page":"97"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/item.svg","effects":[]} {"_id":"L5RCoreIte000036","name":"Omamori (Boon of Hotei)","permission":{"default":0},"type":"item","data":{"equipped":false,"quantity":1,"weight":"0","rarity":"2","zeni":"5 bu","properties":[],"description":"","source_reference":{"source":"celestial_realms","page":"97"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/item.svg","effects":[]}
@@ -109,7 +109,7 @@
{"_id":"L5RCoreIte000111","name":"The horagai of Sacred Rains","permission":{"default":0},"type":"item","data":{"equipped":false,"quantity":1,"weight":"0","rarity":"10","zeni":"0","properties":[{"id":"L5RCorePro000010","name":"Resplendent"},{"id":"L5RCorePro000014","name":"Sacred"}],"description":"","source_reference":{"source":"celestial_realms","page":"96"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/item.svg","effects":[]} {"_id":"L5RCoreIte000111","name":"The horagai of Sacred Rains","permission":{"default":0},"type":"item","data":{"equipped":false,"quantity":1,"weight":"0","rarity":"10","zeni":"0","properties":[{"id":"L5RCorePro000010","name":"Resplendent"},{"id":"L5RCorePro000014","name":"Sacred"}],"description":"","source_reference":{"source":"celestial_realms","page":"96"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/item.svg","effects":[]}
{"_id":"L5RCoreIte000112","name":"Daikoku's Mallet","permission":{"default":0},"type":"item","data":{"equipped":false,"quantity":1,"weight":"0","rarity":"10","zeni":"0","properties":[{"id":"L5RCorePro000015","name":"Durable"},{"id":"L5RCorePro000014","name":"Sacred"},{"id":"L5RCorePro000016","name":"Subtle"}],"description":"","source_reference":{"source":"celestial_realms","page":"96"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/item.svg","effects":[]} {"_id":"L5RCoreIte000112","name":"Daikoku's Mallet","permission":{"default":0},"type":"item","data":{"equipped":false,"quantity":1,"weight":"0","rarity":"10","zeni":"0","properties":[{"id":"L5RCorePro000015","name":"Durable"},{"id":"L5RCorePro000014","name":"Sacred"},{"id":"L5RCorePro000016","name":"Subtle"}],"description":"","source_reference":{"source":"celestial_realms","page":"96"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/item.svg","effects":[]}
{"_id":"L5RCoreIte000113","name":"Candles of the Moth","permission":{"default":0},"type":"item","data":{"equipped":false,"quantity":1,"weight":"0","rarity":"9","zeni":"10 Koku","properties":[{"id":"L5RCorePro000002","name":"Ceremonial"},{"id":"L5RCorePro000014","name":"Sacred"},{"id":"L5RCorePro000016","name":"Subtle"}],"description":"","source_reference":{"source":"celestial_realms","page":"96"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/item.svg","effects":[]} {"_id":"L5RCoreIte000113","name":"Candles of the Moth","permission":{"default":0},"type":"item","data":{"equipped":false,"quantity":1,"weight":"0","rarity":"9","zeni":"10 Koku","properties":[{"id":"L5RCorePro000002","name":"Ceremonial"},{"id":"L5RCorePro000014","name":"Sacred"},{"id":"L5RCorePro000016","name":"Subtle"}],"description":"","source_reference":{"source":"celestial_realms","page":"96"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/item.svg","effects":[]}
{"_id":"L5RCoreIte000114","name":"Astrolabe","permission":{"default":0},"type":"item","data":{"equipped":false,"quantity":1,"weight":"0","rarity":"8","zeni":"1 Koku","properties":[],"description":"","source_reference":{"source":"children_of_the_five_winds","page":"102"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/item.svg","effects":[]} {"_id":"L5RCoreIte000114","name":"Astrolabe (Unicorn)","permission":{"default":0},"type":"item","data":{"equipped":false,"quantity":1,"weight":"0","rarity":"8","zeni":"1 Koku","properties":[],"description":"","source_reference":{"source":"children_of_the_five_winds","page":"102"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/item.svg","effects":[]}
{"_id":"L5RCoreIte000115","name":"Horo (Arrow Cloak)","permission":{"default":0},"type":"item","data":{"equipped":false,"quantity":1,"weight":"0","rarity":"6","zeni":"5 Koku","properties":[],"description":"","source_reference":{"source":"children_of_the_five_winds","page":"102"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/item.svg","effects":[]} {"_id":"L5RCoreIte000115","name":"Horo (Arrow Cloak)","permission":{"default":0},"type":"item","data":{"equipped":false,"quantity":1,"weight":"0","rarity":"6","zeni":"5 Koku","properties":[],"description":"","source_reference":{"source":"children_of_the_five_winds","page":"102"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/item.svg","effects":[]}
{"_id":"L5RCoreIte000116","name":"Lantern (Personal)","permission":{"default":0},"type":"item","data":{"equipped":false,"quantity":1,"weight":"0","rarity":"2","zeni":"1 Bu","properties":[],"description":"","source_reference":{"source":"children_of_the_five_winds","page":"102"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/item.svg","effects":[]} {"_id":"L5RCoreIte000116","name":"Lantern (Personal)","permission":{"default":0},"type":"item","data":{"equipped":false,"quantity":1,"weight":"0","rarity":"2","zeni":"1 Bu","properties":[],"description":"","source_reference":{"source":"children_of_the_five_winds","page":"102"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/item.svg","effects":[]}
{"_id":"L5RCoreIte000117","name":"Mineral-Oil Lamp","permission":{"default":0},"type":"item","data":{"equipped":false,"quantity":1,"weight":"0","rarity":"8","zeni":"6 Koku","properties":[],"description":"","source_reference":{"source":"children_of_the_five_winds","page":"102"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/item.svg","effects":[]} {"_id":"L5RCoreIte000117","name":"Mineral-Oil Lamp","permission":{"default":0},"type":"item","data":{"equipped":false,"quantity":1,"weight":"0","rarity":"8","zeni":"6 Koku","properties":[],"description":"","source_reference":{"source":"children_of_the_five_winds","page":"102"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/item.svg","effects":[]}
@@ -119,3 +119,27 @@
{"_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":"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":"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":[]} {"_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":[]}
{"_id":"L5RCoreIte000124","name":"Glass Ornament (Dragonfly)","permission":{"default":0},"type":"item","data":{"equipped":false,"quantity":1,"weight":"0","rarity":"6","zeni":"1 koku","properties":[],"description":"","source_reference":{"source":"writ_of_the_wild","page":"83"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/item.svg","effects":[]}
{"_id":"L5RCoreIte000125","name":"Arrows: Armor-Piercing","permission":{"default":0},"type":"item","data":{"equipped":false,"quantity":1,"weight":"0","rarity":"2","zeni":"0","properties":[],"description":"","source_reference":{"source":"core_rulebook","page":"236"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/item.svg","effects":[]}
{"_id":"L5RCoreIte000126","name":"Arrows: Flesh-Cutter","permission":{"default":0},"type":"item","data":{"equipped":false,"quantity":1,"weight":"0","rarity":"2","zeni":"0","properties":[],"description":"","source_reference":{"source":"core_rulebook","page":"236"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/item.svg","effects":[]}
{"_id":"L5RCoreIte000127","name":"Arrows: Humming-Bulb","permission":{"default":0},"type":"item","data":{"equipped":false,"quantity":1,"weight":"0","rarity":"2","zeni":"0","properties":[],"description":"","source_reference":{"source":"core_rulebook","page":"236"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/item.svg","effects":[]}
{"_id":"L5RCoreIte000128","name":"Journal","permission":{"default":0},"type":"item","data":{"equipped":false,"quantity":1,"weight":"0","rarity":"1","zeni":"0","properties":[],"description":"","source_reference":{"source":"core_rulebook","page":"66"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/item.svg","effects":[]}
{"_id":"L5RCoreIte000129","name":"Smithing hammer","permission":{"default":0},"type":"item","data":{"equipped":false,"quantity":1,"weight":"0","rarity":"1","zeni":"0","properties":[],"description":"","source_reference":{"source":"shadowlands","page":"89"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/item.svg","effects":[]}
{"_id":"L5RCoreIte000130","name":"Sumai Garb","permission":{"default":0},"type":"item","data":{"equipped":false,"quantity":1,"weight":"0","rarity":"1","zeni":"0","properties":[],"description":"","source_reference":{"source":"fields_of_victory","page":"89"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/item.svg","effects":[]}
{"_id":"L5RCoreIte000131","name":"Drafting Paper","permission":{"default":0},"type":"item","data":{"equipped":false,"quantity":1,"weight":"0","rarity":"1","zeni":"0","properties":[],"description":"","source_reference":{"source":"celestial_realms","page":"84"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/item.svg","effects":[]}
{"_id":"L5RCoreIte000132","name":"Fine set of Chisels","permission":{"default":0},"type":"item","data":{"equipped":false,"quantity":1,"weight":"0","rarity":"1","zeni":"0","properties":[],"description":"","source_reference":{"source":"celestial_realms","page":"84"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/item.svg","effects":[]}
{"_id":"L5RCoreIte000133","name":"Omamori (Boon of Fukurokujin)","permission":{"default":0},"type":"item","data":{"equipped":false,"quantity":1,"weight":"0","rarity":"2","zeni":"5 bu","properties":[],"description":"","source_reference":{"source":"core_rulebook","page":"243"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/item.svg","effects":[]}
{"_id":"L5RCoreIte000134","name":"Omamori (Boon of Bishamon)","permission":{"default":0},"type":"item","data":{"equipped":false,"quantity":1,"weight":"0","rarity":"2","zeni":"5 bu","properties":[],"description":"","source_reference":{"source":"core_rulebook","page":"243"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/item.svg","effects":[]}
{"_id":"L5RCoreIte000135","name":"Omamori (Boon of Benten)","permission":{"default":0},"type":"item","data":{"equipped":false,"quantity":1,"weight":"0","rarity":"2","zeni":"5 bu","properties":[],"description":"","source_reference":{"source":"core_rulebook","page":"243"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/item.svg","effects":[]}
{"_id":"L5RCoreIte000136","name":"Poison - Noxious Poison (One Vial)","permission":{"default":0},"type":"item","data":{"equipped":false,"quantity":1,"weight":"0","rarity":"5","zeni":"30 zeni","properties":[{"id":"L5RCorePro000009","name":"Forbidden"}],"description":"","source_reference":{"source":"core_rulebook","page":"244"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/item.svg","effects":[]}
{"_id":"L5RCoreIte000137","name":"Poison - Fire Biter (One Vial)","permission":{"default":0},"type":"item","data":{"equipped":false,"quantity":1,"weight":"0","rarity":"5","zeni":"30 zeni","properties":[{"id":"L5RCorePro000009","name":"Forbidden"}],"description":"","source_reference":{"source":"core_rulebook","page":"244"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/item.svg","effects":[]}
{"_id":"L5RCoreIte000138","name":"Poison - Night Milk (One Vial)","permission":{"default":0},"type":"item","data":{"equipped":false,"quantity":1,"weight":"0","rarity":"5","zeni":"30 zeni","properties":[{"id":"L5RCorePro000009","name":"Forbidden"}],"description":"","source_reference":{"source":"core_rulebook","page":"244"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/item.svg","effects":[]}
{"_id":"L5RCoreIte000139","name":"Blanket","permission":{"default":0},"type":"item","data":{"equipped":false,"quantity":1,"weight":"0","rarity":"0","zeni":"1 zeni","properties":[],"description":"","source_reference":{"source":"core_rulebook","page":"245"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/item.svg","effects":[]}
{"_id":"L5RCoreIte000140","name":"Bowl","permission":{"default":0},"type":"item","data":{"equipped":false,"quantity":1,"weight":"0","rarity":"0","zeni":"1 zeni","properties":[],"description":"","source_reference":{"source":"core_rulebook","page":"245"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/item.svg","effects":[]}
{"_id":"L5RCoreIte000141","name":"Flint and Tinder","permission":{"default":0},"type":"item","data":{"equipped":false,"quantity":1,"weight":"0","rarity":"0","zeni":"1 zeni","properties":[],"description":"","source_reference":{"source":"core_rulebook","page":"245"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/item.svg","effects":[]}
{"_id":"L5RCoreIte000142","name":"Furoshiki","permission":{"default":0},"type":"item","data":{"equipped":false,"quantity":1,"weight":"0","rarity":"0","zeni":"1 zeni","properties":[],"description":"","source_reference":{"source":"core_rulebook","page":"245"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/item.svg","effects":[]}
{"_id":"L5RCoreIte000143","name":"The Obsidian Journal","permission":{"default":0},"type":"item","data":{"equipped":false,"quantity":1,"weight":"0","rarity":"10","zeni":"0","properties":[{"id":"L5RCorePro000009","name":"Forbidden"},{"id":"L5RCorePro000008","name":"Unholy"}],"description":"","source_reference":{"source":"core_rulebook","page":"127"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/item.svg","effects":[]}
{"_id":"L5RCoreIte000144","name":"Pouch of Insence","permission":{"default":0},"type":"item","data":{"equipped":false,"quantity":1,"weight":"0","rarity":"2","zeni":"0","properties":[],"description":"","source_reference":{"source":"celestial_realms","page":"85"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/item.svg","effects":[]}
{"_id":"L5RCoreIte000145","name":"Religious texts","permission":{"default":0},"type":"item","data":{"equipped":false,"quantity":1,"weight":"0","rarity":"2","zeni":"0","properties":[],"description":"","source_reference":{"source":"celestial_realms","page":"86"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/item.svg","effects":[]}
{"_id":"L5RCoreIte000146","name":"Small Sachel of Ingredients","permission":{"default":0},"type":"item","data":{"equipped":false,"quantity":1,"weight":"0","rarity":"2","zeni":"10 bu","properties":[],"description":"","source_reference":{"source":"celestial_realms","page":"80"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/item.svg","effects":[]}
{"_id":"L5RCoreIte000147","name":"Blessed Glass vial","permission":{"default":0},"type":"item","data":{"equipped":false,"quantity":1,"weight":"0","rarity":"2","zeni":"0","properties":[],"description":"","source_reference":{"source":"celestial_realms","page":"80"}},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/item.svg","effects":[]}

View File

@@ -1,24 +1,24 @@
{"_id":"L5RCoreCon000001","name":"Afflicted","content":"<blockquote>Core Rulebook p.271</blockquote>","img":"icons/svg/sun.svg","folder":null,"sort":100001,"permission":{"default":0},"flags":{}} {"_id":"L5RCoreCon000001","name":"Afflicted","content":"<blockquote>Core Rulebook p.271</blockquote>","img":"systems/l5r5e/assets/icons/conditions/afflicted.webp","folder":null,"sort":100001,"permission":{"default":0},"flags":{}}
{"_id":"L5RCoreCon000002","name":"Bleeding","content":"<blockquote>Core Rulebook p.271</blockquote>","img":"icons/svg/blood.svg","folder":null,"sort":100001,"permission":{"default":0},"flags":{}} {"_id":"L5RCoreCon000002","name":"Bleeding","content":"<blockquote>Core Rulebook p.271</blockquote>","img":"systems/l5r5e/assets/icons/conditions/bleeding.webp","folder":null,"sort":100001,"permission":{"default":0},"flags":{}}
{"_id":"L5RCoreCon000003","name":"Burning","content":"<blockquote>Core Rulebook p.272</blockquote>","img":"icons/svg/fire.svg","folder":null,"sort":100001,"permission":{"default":0},"flags":{}} {"_id":"L5RCoreCon000003","name":"Burning","content":"<blockquote>Core Rulebook p.272</blockquote>","img":"systems/l5r5e/assets/icons/conditions/burning.webp","folder":null,"sort":100001,"permission":{"default":0},"flags":{}}
{"_id":"L5RCoreCon000004","name":"Compromised","content":"<blockquote>Core Rulebook p.272</blockquote>","img":"icons/svg/terror.svg","folder":null,"sort":100001,"permission":{"default":0},"flags":{}} {"_id":"L5RCoreCon000004","name":"Compromised","content":"<blockquote>Core Rulebook p.272</blockquote>","img":"systems/l5r5e/assets/icons/conditions/compromised.webp","folder":null,"sort":100001,"permission":{"default":0},"flags":{}}
{"_id":"L5RCoreCon000005","name":"Dazed","content":"<blockquote>Core Rulebook p.272</blockquote>","img":"icons/svg/eye.svg","folder":null,"sort":100001,"permission":{"default":0},"flags":{}} {"_id":"L5RCoreCon000005","name":"Dazed","content":"<blockquote>Core Rulebook p.272</blockquote>","img":"systems/l5r5e/assets/icons/conditions/dazed.webp","folder":null,"sort":100001,"permission":{"default":0},"flags":{}}
{"_id":"L5RCoreCon000006","name":"Disoriented","content":"<blockquote>Core Rulebook p.272</blockquote>","img":"icons/svg/daze.svg","folder":null,"sort":100001,"permission":{"default":0},"flags":{}} {"_id":"L5RCoreCon000006","name":"Disoriented","content":"<blockquote>Core Rulebook p.272</blockquote>","img":"systems/l5r5e/assets/icons/conditions/disoriented.webp","folder":null,"sort":100001,"permission":{"default":0},"flags":{}}
{"_id":"L5RCoreCon000007","name":"Dying [X Rounds]","content":"<blockquote>Core Rulebook p.272</blockquote>","img":"icons/svg/skull.svg","folder":null,"sort":100001,"permission":{"default":0},"flags":{}} {"_id":"L5RCoreCon000007","name":"Dying [X Rounds]","content":"<blockquote>Core Rulebook p.272</blockquote>","img":"systems/l5r5e/assets/icons/conditions/dying_1.webp","folder":null,"sort":100001,"permission":{"default":0},"flags":{}}
{"_id":"L5RCoreCon000008","name":"Enraged","content":"<blockquote>Core Rulebook p.272</blockquote>","img":"icons/svg/lightning.svg","folder":null,"sort":100001,"permission":{"default":0},"flags":{}} {"_id":"L5RCoreCon000008","name":"Enraged","content":"<blockquote>Core Rulebook p.272</blockquote>","img":"systems/l5r5e/assets/icons/conditions/enraged.webp","folder":null,"sort":100001,"permission":{"default":0},"flags":{}}
{"_id":"L5RCoreCon000009","name":"Exhausted","content":"<blockquote>Core Rulebook p.272</blockquote>","img":"icons/svg/sleep.svg","folder":null,"sort":100001,"permission":{"default":0},"flags":{}} {"_id":"L5RCoreCon000009","name":"Exhausted","content":"<blockquote>Core Rulebook p.272</blockquote>","img":"systems/l5r5e/assets/icons/conditions/exhausted.webp","folder":null,"sort":100001,"permission":{"default":0},"flags":{}}
{"_id":"L5RCoreCon000010","name":"Immobilized","content":"<blockquote>Core Rulebook p.272</blockquote>","img":"icons/svg/net.svg","folder":null,"sort":100001,"permission":{"default":0},"flags":{}} {"_id":"L5RCoreCon000010","name":"Immobilized","content":"<blockquote>Core Rulebook p.272</blockquote>","img":"systems/l5r5e/assets/icons/conditions/immobilized.webp","folder":null,"sort":100001,"permission":{"default":0},"flags":{}}
{"_id":"L5RCoreCon000011","name":"Incapacitated","content":"<blockquote>Core Rulebook p.272</blockquote>","img":"icons/svg/downgrade.svg","folder":null,"sort":100001,"permission":{"default":0},"flags":{}} {"_id":"L5RCoreCon000011","name":"Incapacitated","content":"<blockquote>Core Rulebook p.272</blockquote>","img":"systems/l5r5e/assets/icons/conditions/incapacitated.webp","folder":null,"sort":100001,"permission":{"default":0},"flags":{}}
{"_id":"L5RCoreCon000012","name":"Intoxicated","content":"<blockquote>Core Rulebook p.273</blockquote>","img":"icons/svg/poison.svg","folder":null,"sort":100001,"permission":{"default":0},"flags":{}} {"_id":"L5RCoreCon000012","name":"Intoxicated","content":"<blockquote>Core Rulebook p.273</blockquote>","img":"systems/l5r5e/assets/icons/conditions/intoxicated.webp","folder":null,"sort":100001,"permission":{"default":0},"flags":{}}
{"_id":"L5RCoreCon000013","name":"Prone","content":"<blockquote>Core Rulebook p.273</blockquote>","img":"icons/svg/falling.svg","folder":null,"sort":100001,"permission":{"default":0},"flags":{}} {"_id":"L5RCoreCon000013","name":"Prone","content":"<blockquote>Core Rulebook p.273</blockquote>","img":"systems/l5r5e/assets/icons/conditions/prone.webp","folder":null,"sort":100001,"permission":{"default":0},"flags":{}}
{"_id":"L5RCoreCon000014","name":"Silenced","content":"<blockquote>Core Rulebook p.273</blockquote>","img":"icons/svg/silenced.svg","folder":null,"sort":100001,"permission":{"default":0},"flags":{}} {"_id":"L5RCoreCon000014","name":"Silenced","content":"<blockquote>Core Rulebook p.273</blockquote>","img":"systems/l5r5e/assets/icons/conditions/silenced.webp","folder":null,"sort":100001,"permission":{"default":0},"flags":{}}
{"_id":"L5RCoreCon000015","name":"Unconscious","content":"<blockquote>Core Rulebook p.273</blockquote>","img":"icons/svg/unconscious.svg","folder":null,"sort":100001,"permission":{"default":0},"flags":{}} {"_id":"L5RCoreCon000015","name":"Unconscious","content":"<blockquote>Core Rulebook p.273</blockquote>","img":"systems/l5r5e/assets/icons/conditions/unconscious.webp","folder":null,"sort":100001,"permission":{"default":0},"flags":{}}
{"_id":"L5RCoreCon000016","name":"Wounded","content":"<blockquote>Core Rulebook p.273</blockquote>","img":"icons/svg/degen.svg","folder":null,"sort":100001,"permission":{"default":0},"flags":{}} {"_id":"L5RCoreCon000016","name":"Wounded","content":"<blockquote>Core Rulebook p.273</blockquote>","img":"systems/l5r5e/assets/icons/conditions/heavily_wounded.webp","folder":null,"sort":100001,"permission":{"default":0},"flags":{}}
{"_id":"L5RCoreCon000017","name":"Illness: Oozing Sore Disease","content":"<blockquote>Writ of the Wild p.140</blockquote>","img":"icons/svg/eye.svg","folder":null,"sort":100001,"permission":{"default":0},"flags":{}} {"_id":"L5RCoreCon000017","name":"Illness: Oozing Sore Disease","content":"<blockquote>Writ of the Wild p.140</blockquote>","img":"systems/l5r5e/assets/icons/conditions/illness_oozing_sore_disease.webp","folder":null,"sort":100001,"permission":{"default":0},"flags":{}}
{"_id":"L5RCoreCon000018","name":"Illness: Gut Sickness","content":"<blockquote>Writ of the Wild p.141</blockquote>","img":"icons/svg/poison.svg","folder":null,"sort":100001,"permission":{"default":0},"flags":{}} {"_id":"L5RCoreCon000018","name":"Illness: Gut Sickness","content":"<blockquote>Writ of the Wild p.141</blockquote>","img":"systems/l5r5e/assets/icons/conditions/illness_gut_sickness.webp","folder":null,"sort":100001,"permission":{"default":0},"flags":{}}
{"_id":"L5RCoreCon000019","name":"Illness: Coughing Illness","content":"<blockquote>Writ of the Wild p.141</blockquote>","img":"icons/svg/poison.svg","folder":null,"sort":100001,"permission":{"default":0},"flags":{}} {"_id":"L5RCoreCon000019","name":"Illness: Coughing Illness","content":"<blockquote>Writ of the Wild p.141</blockquote>","img":"systems/l5r5e/assets/icons/conditions/illness_coughing_illness.webp","folder":null,"sort":100001,"permission":{"default":0},"flags":{}}
{"_id":"L5RCoreCon000020","name":"Illness: Unsteady Illness","content":"<blockquote>Writ of the Wild p.141</blockquote>","img":"icons/svg/daze.svg","folder":null,"sort":100001,"permission":{"default":0},"flags":{}} {"_id":"L5RCoreCon000020","name":"Illness: Unsteady Illness","content":"<blockquote>Writ of the Wild p.141</blockquote>","img":"systems/l5r5e/assets/icons/conditions/illness_unsteady_illness.webp","folder":null,"sort":100001,"permission":{"default":0},"flags":{}}
{"_id":"L5RCoreCon000021","name":"Illness: Fire Rash","content":"<blockquote>Writ of the Wild p.141</blockquote>","img":"icons/svg/fire.svg","folder":null,"sort":100001,"permission":{"default":0},"flags":{}} {"_id":"L5RCoreCon000021","name":"Illness: Fire Rash","content":"<blockquote>Writ of the Wild p.141</blockquote>","img":"systems/l5r5e/assets/icons/conditions/illness_fire_rash.webp","folder":null,"sort":100001,"permission":{"default":0},"flags":{}}
{"_id":"L5RCoreCon000022","name":"Centered","content":"<blockquote>Children of the Five Winds p.133</blockquote>","img":"systems/l5r5e/assets/icons/social.svg","folder":null,"sort":100001,"permission":{"default":0},"flags":{}} {"_id":"L5RCoreCon000022","name":"Centered","content":"<blockquote>Children of the Five Winds p.133</blockquote>","img":"systems/l5r5e/assets/icons/conditions/centered.webp","folder":null,"sort":100001,"permission":{"default":0},"flags":{}}
{"_id":"L5RCoreCon000023","name":"Emboldened","content":"<blockquote>Children of the Five Winds p.133</blockquote>","img":"systems/l5r5e/assets/icons/social.svg","folder":null,"sort":100001,"permission":{"default":0},"flags":{}} {"_id":"L5RCoreCon000023","name":"Emboldened","content":"<blockquote>Children of the Five Winds p.133</blockquote>","img":"systems/l5r5e/assets/icons/conditions/emboldened.webp","folder":null,"sort":100001,"permission":{"default":0},"flags":{}}
{"_id":"L5RCoreCon000024","name":"Possessed","content":"<blockquote>Children of the Five Winds p.133</blockquote>","img":"icons/svg/terror.svg","folder":null,"sort":100001,"permission":{"default":0},"flags":{}} {"_id":"L5RCoreCon000024","name":"Possessed","content":"<blockquote>Children of the Five Winds p.133</blockquote>","img":"systems/l5r5e/assets/icons/conditions/possesed.webp","folder":null,"sort":100001,"permission":{"default":0},"flags":{}}

View File

@@ -624,6 +624,36 @@ export class BaseCharacterSheetL5r5e extends BaseSheetL5r5e {
}); });
break; break;
case "honor":
await this.actor.update({
system: {
social: {
honor: Math.max(0, this.actor.system.social.honor + mod),
},
},
});
break;
case "glory":
await this.actor.update({
system: {
social: {
glory: Math.max(0, this.actor.system.social.glory + mod),
},
},
});
break;
case "status":
await this.actor.update({
system: {
social: {
status: Math.max(0, this.actor.system.social.status + mod),
},
},
});
break;
default: default:
console.warn("L5R5E | BCS | Unsupported type", type); console.warn("L5R5E | BCS | Unsupported type", type);
break; break;
@@ -694,6 +724,12 @@ export class BaseCharacterSheetL5r5e extends BaseSheetL5r5e {
_openDicePickerForSkill(event) { _openDicePickerForSkill(event) {
event.preventDefault(); event.preventDefault();
event.stopPropagation(); event.stopPropagation();
// In Fvtt v13+ "Enter" trigger that mouse event, we ignore that below
if (event.clientX === 0 && event.clientY === 0) {
return;
}
const li = $(event.currentTarget); const li = $(event.currentTarget);
const weapon = this._getWeaponInfos(li.data("weapon-id") || null); const weapon = this._getWeaponInfos(li.data("weapon-id") || null);
const isInitiative = li.data("initiative") || false; const isInitiative = li.data("initiative") || false;

View File

@@ -320,7 +320,7 @@ export class CharacterGenerator {
} }
// Img (only if system defaults) // Img (only if system defaults)
const folder = "systems/l5r5e/assets/icons/actors"; const folder = "systems/l5rx-chiaroscuro/assets/icons/actors";
const newImg = [ const newImg = [
`${folder}/npc.svg`, `${folder}/npc.svg`,
`${folder}/traditional-japanese-man.svg`, `${folder}/traditional-japanese-man.svg`,

View File

@@ -56,11 +56,60 @@ export class CharacterSheetL5r5e extends BaseCharacterSheetL5r5e {
// Split Others advancements, and calculate xp spent and add it to total // Split Others advancements, and calculate xp spent and add it to total
this._prepareOthersAdvancement(sheetData); this._prepareOthersAdvancement(sheetData);
// Update spent_xp to actor
this.actor.system.xp_spent = sheetData.data.system.xp_spent;
// Total // Total
sheetData.data.system.xp_saved = Math.floor( sheetData.data.system.xp_saved = Math.floor(
parseInt(sheetData.data.system.xp_total) - parseInt(sheetData.data.system.xp_spent) parseInt(sheetData.data.system.xp_total) - parseInt(sheetData.data.system.xp_spent)
); );
// Chiaroscuro: Skill ranks list for <select>
sheetData.data.skillRanksList = Object.keys(CONFIG.l5r5e.skillRanks).map((id) => ({
id,
label: game.i18n.localize(`chiaroscuro.skill_ranks.${id}`),
}));
// Chiaroscuro: Normalize skill values 0 (number) → "0" (string) for selectOptions matching
for (const category of Object.values(sheetData.data.system.skills)) {
for (const [key, value] of Object.entries(category)) {
if (value === 0) category[key] = "0";
}
}
// Chiaroscuro: Aspects gauge data
const aspectsData = sheetData.data.system.aspects?.aspects ?? {};
const gauge = aspectsData.gauge ?? 0;
sheetData.data.aspectsData = {
solar: aspectsData.solar ?? 0,
lunar: aspectsData.lunar ?? 0,
gauge,
gaugePercent: ((gauge + 10) / 20) * 100,
gaugeColor: gauge > 0 ? "#d4a855" : gauge < 0 ? "#5588aa" : "#888888",
};
// Chiaroscuro: État items active on the character
sheetData.data.etatItems = sheetData.items.filter((i) => i.type === "etat");
// Chiaroscuro: Invocations split by type (from splitTechniquesList)
const invocations = sheetData.data.splitTechniquesList["mot_invocation"] ?? [];
sheetData.data.splitInvocationsList = {
general: invocations.filter((t) => !t.system.invocation_type || t.system.invocation_type === "general"),
neutre: invocations.filter((t) => t.system.invocation_type === "neutre"),
precis: invocations.filter((t) => t.system.invocation_type === "precis"),
};
// Chiaroscuro: Arcane items
sheetData.data.arcaneItems = sheetData.items.filter((i) => i.type === "arcane");
// Chiaroscuro: Identity tabs enriched HTML
sheetData.data.enrichedHtml.identity_text1 = await foundry.applications.ux.TextEditor.implementation.enrichHTML(
this.actor.system.identity_text1 ?? "", { async: true }
);
sheetData.data.enrichedHtml.identity_text2 = await foundry.applications.ux.TextEditor.implementation.enrichHTML(
this.actor.system.identity_text2 ?? "", { async: true }
);
return sheetData; return sheetData;
} }
@@ -114,6 +163,17 @@ export class CharacterSheetL5r5e extends BaseCharacterSheetL5r5e {
// Money +/- // Money +/-
html.find(".money-control").on("click", this._modifyMoney.bind(this)); html.find(".money-control").on("click", this._modifyMoney.bind(this));
// XP +/-
html.find(".xp-control").on("click", this._modifyXP.bind(this));
// Chiaroscuro: set default ring on ring-name click
html.find(".ring-set-default").on("click", (event) => {
event.preventDefault();
const ring = $(event.currentTarget).data("ring");
this.actor.update({ "system.default_ring": ring });
});
// Advancements Tab to current rank onload // Advancements Tab to current rank onload
// TODO class "Active" Bug on load, dunno why :/ // TODO class "Active" Bug on load, dunno why :/
this._tabs this._tabs
@@ -121,6 +181,18 @@ export class CharacterSheetL5r5e extends BaseCharacterSheetL5r5e {
.activate("advancement_rank_" + (this.actor.system.identity.school_rank || 0)); .activate("advancement_rank_" + (this.actor.system.identity.school_rank || 0));
} }
/**
* Override base dice picker to open Chiaroscuro d6 dialog.
* @param {Event} event
*/
_openDicePickerForSkill(event) {
event.preventDefault();
const el = $(event.currentTarget);
const skillId = el.data("skill");
const ringId = el.data("ring") || this.actor.system?.default_ring || "void";
new game.l5r5e.ChiaroscuroDiceDialog({ actor: this.actor, ringId, skillId }).render(true);
}
/** /**
* Split the school advancement, calculate the total xp spent and the current total xp spent by rank * Split the school advancement, calculate the total xp spent and the current total xp spent by rank
*/ */
@@ -149,6 +221,12 @@ export class CharacterSheetL5r5e extends BaseCharacterSheetL5r5e {
adv[rank].spent.total += xp_used_total; adv[rank].spent.total += xp_used_total;
adv[rank].spent.curriculum += xp_used; adv[rank].spent.curriculum += xp_used;
}); });
// If we finished the rank but haven't added anything to the next rank we should show an empty tab
// note: adv is index from 1, not 0 because of rank starting at 1
if(adv.length -1 < sheetData.data.system.identity.school_rank) {
adv.push({list: [], rank: sheetData.data.system.identity.school_rank, spent: { total: 0, curriculum: 0}});
}
sheetData.data.advancementsListByRank = adv; sheetData.data.advancementsListByRank = adv;
} }
@@ -206,6 +284,13 @@ export class CharacterSheetL5r5e extends BaseCharacterSheetL5r5e {
delete formData["system.money.zeni"]; delete formData["system.money.zeni"];
} }
// Chiaroscuro: convert skill rank "0" (string from <select>) back to 0 (number)
for (const [key, value] of Object.entries(formData)) {
if (key.startsWith("system.skills.") && value === "0") {
formData[key] = 0;
}
}
// Save computed values // Save computed values
const currentData = this.object.system; const currentData = this.object.system;
formData["system.focus"] = currentData.focus; formData["system.focus"] = currentData.focus;
@@ -285,6 +370,35 @@ export class CharacterSheetL5r5e extends BaseCharacterSheetL5r5e {
this.render(false); this.render(false);
} }
/**
* Add or Subtract XP (+/- buttons)
* @param {Event} event
* @private
*/
async _modifyXP(event) {
event.preventDefault();
event.stopPropagation();
const elmt = $(event.currentTarget);
let mod = elmt.data("value");
if (!mod) {
return;
}
const new_xp_total = Math.max(0, this.actor.system.xp_total + mod);
this.actor.update({
system: {
xp_total: new_xp_total,
},
});
if(this.actor.system.xp_spent > new_xp_total) {
ui.notifications.warn("l5r5e.advancements.warning.total_less_then_spent", { localize: true })
}
this.render(false);
}
/** /**
* Add +1 to actor school rank * Add +1 to actor school rank
* @param {Event} event * @param {Event} event

View File

@@ -50,6 +50,21 @@ export class NpcSheetL5r5e extends BaseCharacterSheetL5r5e {
label: game.i18n.localize("l5r5e.character_types." + e), label: game.i18n.localize("l5r5e.character_types." + e),
})); }));
// Danger levels for martial/social danger selects
const dangerLevels = ["simple", "moyenne", "assez_difficile", "difficile"];
sheetData.data.dangerList = dangerLevels.map((id) => ({
id,
label: game.i18n.localize(`chiaroscuro.danger.${id}`),
}));
// Invocations list (mot_invocation techniques, split by type like character sheet)
const invocations = sheetData.data.splitTechniquesList?.["mot_invocation"] ?? [];
sheetData.data.splitInvocationsList = {
general: invocations.filter((t) => !t.system.invocation_type || t.system.invocation_type === "general"),
neutre: invocations.filter((t) => t.system.invocation_type === "neutre"),
precis: invocations.filter((t) => t.system.invocation_type === "precis"),
};
return sheetData; return sheetData;
} }
@@ -101,4 +116,16 @@ export class NpcSheetL5r5e extends BaseCharacterSheetL5r5e {
return super._updateObject(event, formData); return super._updateObject(event, formData);
} }
/**
* Override base dice picker to open Chiaroscuro d6 dialog.
* @param {Event} event
*/
_openDicePickerForSkill(event) {
event.preventDefault();
const el = $(event.currentTarget);
const skillId = el.data("skill");
const ringId = el.data("ring") || this.actor.system?.default_ring || "void";
new game.l5r5e.ChiaroscuroDiceDialog({ actor: this.actor, ringId, skillId }).render(true);
}
} }

View File

@@ -0,0 +1,11 @@
const { CompendiumDirectory } = foundry.applications.sidebar.tabs;
export class CompendiumDirectoryL5r5e extends CompendiumDirectory {
/** @inheritdoc */
async _prepareContext(options) {
const context = await super._prepareContext(options);
context.sidebarIcon = foundry.applications.sidebar.Sidebar.TABS.compendium.icon;
return context;
}
}

View File

@@ -0,0 +1,497 @@
import { L5r5eHtmlMultiSelectElement } from "../misc/l5r5e-multiselect.js";
const { Compendium } = foundry.applications.sidebar.apps;
/**
* Extended Compendium application for L5R5e.
* Adds source/rank/ring/rarity filters to Item compendiums
* @extends {Compendium}
*/
export class ItemCompendiumL5r5e extends Compendium {
/** @override */
static DEFAULT_OPTIONS = {
actions: {
applyPlayerView: ItemCompendiumL5r5e.#onApplyPlayerView,
},
window: {
resizable: true
}
};
/**
* Our own entry partial which mirrors Foundry's index-partial.hbs structure
* and appends ring/rarity/rank badges using data from _prepareDirectoryContext.
*
* NOTE: We intentionally duplicate Foundry's <li> structure here rather than
* trying to include their partial, because their partial renders a complete <li>
* element which cannot be nested or extended from outside. If Foundry ever
* changes their index-partial.hbs, this file will need updating to match.
* @override
*/
static _entryPartial = "systems/l5rx-chiaroscuro/templates/" + "compendium/l5r5e-index-partial.html";
/**
* Sources present in this specific compendium, populated during _prepareContext.
* @type {Set<string>}
*/
#sourcesInThisCompendium = new Set();
/**
* Sources unavailable to players based on permission settings.
* @type {Set<string>}
*/
#unavailableSourceForPlayersSet = new Set();
/**
* Whether to hide entries with empty sources from players.
* @type {boolean}
*/
#hideEmptySourcesFromPlayers = false;
/**
* Which filter UI controls are worth showing.
* Determined during _prepareContext by checking whether at least two
* distinct values exist for each filterable property.
* @type {{ rank: boolean, rarity: boolean, source: boolean, ring: boolean }|null}
*/
#filtersToShow = null;
/**
* Cached active filter values, read from the DOM once at the start of
* each filter pass in #reapplyFilters and held for _onMatchSearchEntry
* to consume per-entry without re-querying the DOM.
* @type {{ userFilter: string[], rankFilter: string[], ringFilter: string[], rarityFilter: string[] }}
*/
#activeFilters = {
userFilter: [],
rankFilter: [],
ringFilter: [],
rarityFilter: [],
};
/**
* Insert the filter part between header and directory by composing with
* the parent parts rather than replacing them, so future Foundry changes
* to Compendium.PARTS are picked up automatically.
* @override
*/
_configureRenderParts(options) {
const parts = super._configureRenderParts(options);
const ordered = {};
for (const [key, value] of Object.entries(parts)) {
ordered[key] = value;
if (key === "header") {
ordered.filter = {
template: `${CONFIG.l5r5e.paths.templates}compendium/filter-bar.html`,
};
}
}
return ordered;
}
/**
* @override
*/
async _prepareContext(options) {
const context = await super._prepareContext(options);
this.#sourcesInThisCompendium = new Set();
this.#resolvePermissions();
this.#filtersToShow = this.#computeFilterVisibility();
return context;
}
/* -------------------------------------------- */
/**
* @override
*/
async _preparePartContext(partId, context, options) {
context = await super._preparePartContext(partId, context, options);
if (partId === "filter") {
const ns = CONFIG.l5r5e.namespace;
const allCompendiumReferencesSet = game.settings.get(ns, "all-compendium-references");
const hideDisabledOptions = game.settings.get(ns, "compendium-hide-disabled-sources");
context.filtersToShow = this.#filtersToShow;
context.ranks = [1, 2, 3, 4, 5];
context.rarities = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
context.rings = ["fire", "water", "earth", "air", "void"];
context.hideDisabledOptions = hideDisabledOptions;
context.showPlayerView = game.user.isGM && this.#unavailableSourceForPlayersSet.size > 0;
// Source multiselect options — plain data for {{selectOptions}} in the template.
context.sources = [...allCompendiumReferencesSet].map((reference) => ({
value: reference,
label: CONFIG.l5r5e.sourceReference[reference]?.label ?? reference,
translate: true,
group:
CONFIG.l5r5e.sourceReference[reference]?.type.split(",")[0] ??
"l5r5e.multiselect.sources_categories.others",
disabled:
!this.#sourcesInThisCompendium.has(reference) ||
(!game.user.isGM && this.#unavailableSourceForPlayersSet.has(reference)),
}));
}
if (partId === "directory") {
context.entryFilterData = Object.fromEntries(
[...this.collection.index.values()].map((entry) => [
entry._id,
{
rank: entry.system?.rank,
ring: entry.system?.ring,
rarity: entry.system?.rarity,
},
])
);
}
return context;
}
/**
* @override
*/
async _onRender(context, options) {
await super._onRender(context, options);
if (options.parts.includes("filter")) {
this.#bindButtonFilter(".rank-filter");
this.#bindButtonFilter(".rarity-filter");
this.#bindButtonFilter(".ring-filter");
this.#bindSourceFilter();
}
// Reapply filters whenever the filter controls or the entry list changes.
if (options.parts.some((p) => p === "filter" || p === "directory")) {
this.#reapplyFilters();
}
}
/* -------------------------------------------- */
/**
* @override
*/
_preSyncPartState(partId, newElement, priorElement, state) {
super._preSyncPartState(partId, newElement, priorElement, state);
if (partId === "filter") {
state.selectedRanks = [...priorElement.querySelectorAll(".rank-filter .selected")].map((element) => element.dataset.rank);
state.selectedRarities = [...priorElement.querySelectorAll(".rarity-filter .selected")].map((element) => element.dataset.rarity);
state.selectedRings = [...priorElement.querySelectorAll(".ring-filter .selected")].map((element) => element.dataset.ring);
state.sourceValue = priorElement.querySelector("l5r5e-multi-select")?.value;
}
}
/**
* Restore filter selections after the filter part has been re-rendered.
* The [data-clear] button visibility is derived from whether any values
* were restored — no extra state needed.
* @override
*/
_syncPartState(partId, newElement, priorElement, state) {
super._syncPartState(partId, newElement, priorElement, state);
if (partId === "filter") {
for (const rank of state.selectedRanks ?? []) {
newElement.querySelector(`.rank-filter [data-rank="${rank}"]`)?.classList.add("selected");
}
const rankClear = newElement.querySelector(".rank-filter [data-clear]");
if (rankClear) {
rankClear.style.display = state.selectedRanks?.length ? "" : "none";
}
for (const rarity of state.selectedRarities ?? []) {
newElement.querySelector(`.rarity-filter [data-rarity="${rarity}"]`)?.classList.add("selected");
}
const rarityClear = newElement.querySelector(".rarity-filter [data-clear]");
if (rarityClear) {
rarityClear.style.display = state.selectedRarities?.length ? "" : "none";
}
for (const ring of state.selectedRings ?? []) {
newElement.querySelector(`.ring-filter [data-ring="${ring}"]`)?.classList.add("selected");
}
const ringClear = newElement.querySelector(".ring-filter [data-clear]");
if (ringClear) {
ringClear.style.display = state.selectedRings?.length ? "" : "none";
}
if (state.sourceValue) {
const multiSelect = newElement.querySelector("l5r5e-multi-select");
if (multiSelect) {
multiSelect.value = state.sourceValue;
}
}
}
}
/**
* @override
*/
_onMatchSearchEntry(query, entryIds, entry, options) {
super._onMatchSearchEntry(query, entryIds, entry, options);
if (entry.style.display === "none") {
return;
}
this.#applyEntryFilter(entry);
}
/**
* Snapshot active filter state then re-run the search filter (or walk entries directly as fallback).
* @private
*/
#reapplyFilters() {
this.#refreshActiveFilters();
const searchFilter = this._searchFilters?.[0];
if (searchFilter) {
searchFilter.filter(null, searchFilter.query);
return;
}
// Fallback
for (const entry of this.element.querySelectorAll(".directory-item")) {
this.#applyEntryFilter(entry);
}
}
/**
* Read current filter selections from the DOM and cache them in #activeFilters.
* @private
*/
#refreshActiveFilters() {
const filterElement = this.element.querySelector("[data-application-part=\"filter\"]");
const multiSelect = filterElement?.querySelector("l5r5e-multi-select");
const collectSelected = (containerSelector, dataKey) =>
[...(filterElement?.querySelectorAll(`${containerSelector} .selected`) ?? [])]
.map((element) => element.dataset[dataKey])
.filter(Boolean);
this.#activeFilters = {
userFilter: multiSelect?.value ?? [],
rankFilter: collectSelected(".rank-filter", "rank"),
ringFilter: collectSelected(".ring-filter", "ring"),
rarityFilter: collectSelected(".rarity-filter", "rarity"),
};
}
/**
* Apply all active filters to a single directory entry, showing or hiding it accordingly.
* @param {HTMLElement} entry
* @private
*/
#applyEntryFilter(entry) {
const indexEntry = this.collection.index.get(entry.dataset.entryId);
if (!indexEntry) {
return;
}
const system = indexEntry.system;
const lineSource = system?.source_reference?.source ?? null;
const { userFilter, rankFilter, ringFilter, rarityFilter } = this.#activeFilters;
let shouldShow = true;
const sourceUnavailable =
(lineSource && this.#unavailableSourceForPlayersSet.has(lineSource)) ||
(lineSource === "" && this.#hideEmptySourcesFromPlayers);
if (sourceUnavailable) {
if (game.user.isGM) {
entry.classList.add("not-for-players");
entry.dataset.tooltip = game.i18n.localize("l5r5e.compendium.not_for_players");
} else {
shouldShow = false;
}
}
if (rankFilter.length) {
shouldShow &&= rankFilter.includes(String(system?.rank));
}
if (rarityFilter.length) {
shouldShow &&= rarityFilter.includes(String(system?.rarity));
}
if (ringFilter.length) {
shouldShow &&= ringFilter.includes(system?.ring);
}
if (userFilter.length) {
shouldShow &&= userFilter.includes(lineSource);
}
entry.style.display = shouldShow ? "" : "none";
}
/**
* Iterate the compendium index to:
* 1. Populate #sourcesInThisCompendium for source filter options
* 2. Determine which filter controls have enough distinct values to show
* @returns {{ rank: boolean, rarity: boolean, source: boolean, ring: boolean }}
* @private
*/
#computeFilterVisibility() {
const filtersToShow = { rank: false, rarity: false, source: true, ring: false };
const firstSeen = { rank: null, rarity: null, ring: null };
const markIfDistinct = (prop, value) => {
if (filtersToShow[prop] || value === undefined || value === null) {
return;
}
if (firstSeen[prop] === null) {
firstSeen[prop] = value;
} else if (firstSeen[prop] !== value) {
filtersToShow[prop] = true;
}
};
for (const entry of this.collection.index.values()) {
const sys = entry.system;
if (!sys) {
continue;
}
if (sys.rank !== undefined) {
markIfDistinct("rank", sys.rank);
}
if (sys.ring !== undefined) {
markIfDistinct("ring", sys.ring);
}
if (sys.rarity !== undefined) {
markIfDistinct("rarity", sys.rarity);
}
if (sys.source_reference?.source !== undefined) {
this.#sourcesInThisCompendium.add(sys.source_reference.source);
}
}
return filtersToShow;
}
/**
* Resolve which sources are restricted from players and cache the result
* in instance-level sets for use by #applyEntryFilter.
* @private
*/
#resolvePermissions() {
const ns = CONFIG.l5r5e.namespace;
const officialSet = game.settings.get(ns, "compendium-official-content-for-players");
const unofficialSet = game.settings.get(ns, "compendium-unofficial-content-for-players");
const allRefsSet = game.settings.get(ns, "all-compendium-references");
this.#hideEmptySourcesFromPlayers = game.settings.get(ns, "compendium-hide-empty-sources-from-players");
this.#unavailableSourceForPlayersSet = new Set(
[...allRefsSet].filter((ref) => {
if (CONFIG.l5r5e.sourceReference[ref]) {
return officialSet.size > 0 ? !officialSet.has(ref) : false;
}
return unofficialSet.size > 0 ? !unofficialSet.has(ref) : false;
})
);
}
/**
* Bind toggle-selection click handlers to all children of a button filter container.
* A [data-clear] element at the end of the container acts as an inline reset:
* - It is hidden (display:none in the template) when no values are selected.
* - It becomes visible as soon as any value is selected.
* - Clicking it deselects all values and hides itself again.
* @param {string} containerSelector
* @private
*/
#bindButtonFilter(containerSelector) {
const container = this.element.querySelector(containerSelector);
if (!container) {
return;
}
const clearButton = container.querySelector("[data-clear]");
const updateClearButton = () => {
if (!clearButton) {
return;
}
const anySelected = [...container.children].some(
(element) => element.dataset.clear === undefined && element.classList.contains("selected")
);
clearButton.style.display = anySelected ? "" : "none";
};
for (const child of container.children) {
child.addEventListener("click", (event) => {
const target = event.currentTarget;
if (target.dataset.clear !== undefined) {
// Clicked the clear button — deselect all value elements
for (const element of container.children) {
element.classList.remove("selected");
}
} else {
// Clicked a value element — toggle it
target.classList.toggle("selected");
}
updateClearButton();
this.#reapplyFilters();
});
}
}
/**
* Wire up the change listener on the already-rendered multiselect element.
* The element and its options are fully declared in filter-bar.html via
* {{selectOptions}} — no imperative construction needed here.
* @private
*/
#bindSourceFilter() {
const multiSelect = this.element.querySelector("l5r5e-multi-select[name=\"filter-sources\"]");
if (!multiSelect) {
return;
}
multiSelect.addEventListener("change", () => this.#reapplyFilters());
}
/**
* Handle the GM player-view button, selecting only the sources that are
* both visible to players and present in this specific compendium.
* @this {ItemCompendiumL5r5e}
* @private
*/
static #onApplyPlayerView() {
const ns = CONFIG.l5r5e.namespace;
const allRefsSet = game.settings.get(ns, "all-compendium-references");
const availableForPlayers = [...allRefsSet]
.filter((ref) => !this.#unavailableSourceForPlayersSet.has(ref))
.filter((ref) => this.#sourcesInThisCompendium.has(ref));
const multiSelect = this.element.querySelector("l5r5e-multi-select[name=\"filter-sources\"]");
if (!multiSelect) {
return;
}
multiSelect.value = availableForPlayers;
this.#reapplyFilters();
}
/**
* Register this compendium class and extend the index fields for all Item packs.
*/
static applyToPacks() {
CONFIG.Item.compendiumIndexFields = [
...(CONFIG.Item.compendiumIndexFields ?? []),
"system.rank",
"system.ring",
"system.rarity",
"system.source_reference.source",
];
for (const pack of game.packs.filter((p) => p.metadata.type === "Item")) {
pack.applicationClass = ItemCompendiumL5r5e;
pack.getIndex(); // rebuild index with new fields — no need to await since this happens before anyone have a chance to act
}
}
}

View File

@@ -1,8 +1,8 @@
export const L5R5E = { export const L5R5E = {
namespace: "l5r5e", namespace: "l5r5e",
paths: { paths: {
assets: "systems/l5r5e/assets/", assets: "systems/l5rx-chiaroscuro/assets/",
templates: "systems/l5r5e/templates/", templates: "systems/l5rx-chiaroscuro/templates/",
}, },
money: [50, 10], money: [50, 10],
stances: ["earth", "air", "water", "fire", "void"], stances: ["earth", "air", "water", "fire", "void"],
@@ -14,172 +14,226 @@ export const L5R5E = {
skillCostMultiplier: 2, skillCostMultiplier: 2,
techniqueCost: 3, techniqueCost: 3,
}, },
// --- Chiaroscuro additions ---
/** Skill rank enum values and associated flat bonus */
skillRanks: {
0: { bonus: 0 },
initie: { bonus: 1 },
expert: { bonus: 2 },
maitre: { bonus: 3 },
parangon1: { bonus: 3, passive: 1 }, // dice results of 1 count as 2
parangon2: { bonus: 3, passive: 2 }, // dice results of 1-2 count as 3
parangon3: { bonus: 3, passive: 3 }, // dice results of 1-3 count as 4
},
/** Difficulty thresholds (Chiaroscuro scale) */
difficulties: {
simple: 7,
moyenne: 10,
assez_difficile: 13,
difficile: 16,
tres_difficile: 22,
heroique: 28,
improbable: 32,
},
/** Ring colors for Chiaroscuro visual style */
ringColors: {
air: "rgb(145, 120, 150)",
water: "rgb(95, 145, 155)",
fire: "rgb(155, 115, 80)",
earth: "rgb(105, 150, 120)",
void: "rgb(75, 70, 65)",
},
/** Aspect gauge configuration */
aspects: {
solarConditionId: "desequilibre_lunaire",
lunarConditionId: "desequilibre_solaire",
imbalanceThreshold: 5,
resetThreshold: 10,
},
// --- End Chiaroscuro additions ---
// For rings wound to be aligned, add them first // For rings wound to be aligned, add them first
conditions: [{ conditions: [{
id: "lightly_wounded_fire", id: "lightly_wounded_fire",
name: "l5r5e.conditions.lightly_wounded_fire", name: "l5r5e.conditions.lightly_wounded_fire",
img: "systems/l5r5e/assets/icons/conditions/fire-white.webp", img: "systems/l5rx-chiaroscuro/assets/icons/conditions/lightly_wounded_fire.webp",
system: { id: "L5RCoreCon000016" } system: { id: "L5RCoreCon000016" }
},{ },{
id: "lightly_wounded_water", id: "lightly_wounded_water",
name: "l5r5e.conditions.lightly_wounded_water", name: "l5r5e.conditions.lightly_wounded_water",
img: "systems/l5r5e/assets/icons/conditions/water-white.webp", img: "systems/l5rx-chiaroscuro/assets/icons/conditions/lightly_wounded_water.webp",
system: { id: "L5RCoreCon000016" } system: { id: "L5RCoreCon000016" }
},{ },{
id: "lightly_wounded_air", id: "lightly_wounded_air",
name: "l5r5e.conditions.lightly_wounded_air", name: "l5r5e.conditions.lightly_wounded_air",
img: "systems/l5r5e/assets/icons/conditions/air-white.webp", img: "systems/l5rx-chiaroscuro/assets/icons/conditions/lightly_wounded_air.webp",
system: { id: "L5RCoreCon000016" } system: { id: "L5RCoreCon000016" }
},{ },{
id: "lightly_wounded_earth", id: "lightly_wounded_earth",
name: "l5r5e.conditions.lightly_wounded_earth", name: "l5r5e.conditions.lightly_wounded_earth",
img: "systems/l5r5e/assets/icons/conditions/earth-white.webp", img: "systems/l5rx-chiaroscuro/assets/icons/conditions/lightly_wounded_earth.webp",
system: { id: "L5RCoreCon000016" } system: { id: "L5RCoreCon000016" }
},{ },{
id: "lightly_wounded_void", id: "lightly_wounded_void",
name: "l5r5e.conditions.lightly_wounded_void", name: "l5r5e.conditions.lightly_wounded_void",
img: "systems/l5r5e/assets/icons/conditions/void-white.webp", img: "systems/l5rx-chiaroscuro/assets/icons/conditions/lightly_wounded_void.webp",
system: { id: "L5RCoreCon000016" } system: { id: "L5RCoreCon000016" }
},{ },{
id: "severely_wounded_fire", id: "severely_wounded_fire",
name: "l5r5e.conditions.severely_wounded_fire", name: "l5r5e.conditions.severely_wounded_fire",
img: "systems/l5r5e/assets/icons/conditions/fire-black.webp", img: "systems/l5rx-chiaroscuro/assets/icons/conditions/heavily_wounded_fire.webp",
system: { id: "L5RCoreCon000016" } system: { id: "L5RCoreCon000016" }
},{ },{
id: "severely_wounded_water", id: "severely_wounded_water",
name: "l5r5e.conditions.severely_wounded_water", name: "l5r5e.conditions.severely_wounded_water",
img: "systems/l5r5e/assets/icons/conditions/water-black.webp", img: "systems/l5rx-chiaroscuro/assets/icons/conditions/heavily_wounded_water.webp",
system: { id: "L5RCoreCon000016" } system: { id: "L5RCoreCon000016" }
},{ },{
id: "severely_wounded_air", id: "severely_wounded_air",
name: "l5r5e.conditions.severely_wounded_air", name: "l5r5e.conditions.severely_wounded_air",
img: "systems/l5r5e/assets/icons/conditions/air-black.webp", img: "systems/l5rx-chiaroscuro/assets/icons/conditions/heavily_wounded_air.webp",
system: { id: "L5RCoreCon000016" } system: { id: "L5RCoreCon000016" }
},{ },{
id: "severely_wounded_earth", id: "severely_wounded_earth",
name: "l5r5e.conditions.severely_wounded_earth", name: "l5r5e.conditions.severely_wounded_earth",
img: "systems/l5r5e/assets/icons/conditions/earth-black.webp", img: "systems/l5rx-chiaroscuro/assets/icons/conditions/heavily_wounded_earth.webp",
system: { id: "L5RCoreCon000016" } system: { id: "L5RCoreCon000016" }
},{ },{
id: "severely_wounded_void", id: "severely_wounded_void",
name: "l5r5e.conditions.severely_wounded_void", name: "l5r5e.conditions.severely_wounded_void",
img: "systems/l5r5e/assets/icons/conditions/void-black.webp", img: "systems/l5rx-chiaroscuro/assets/icons/conditions/heavily_wounded_void.webp",
system: { id: "L5RCoreCon000016" } system: { id: "L5RCoreCon000016" }
},{ },{
id: "afflicted", id: "afflicted",
name: "l5r5e.conditions.afflicted", name: "l5r5e.conditions.afflicted",
img: "icons/magic/death/undead-ghost-scream-teal.webp", img: "systems/l5rx-chiaroscuro/assets/icons/conditions/afflicted.webp",
system: { id: "L5RCoreCon000001" } system: { id: "L5RCoreCon000001" }
},{ },{
id: "bleeding", id: "bleeding",
name: "l5r5e.conditions.bleeding", name: "l5r5e.conditions.bleeding",
img: "icons/skills/wounds/blood-drip-droplet-red.webp", img: "systems/l5rx-chiaroscuro/assets/icons/conditions/bleeding.webp",
system: { id: "L5RCoreCon000002" } system: { id: "L5RCoreCon000002" }
},{ },{
id: "burning", id: "burning",
name: "l5r5e.conditions.burning", name: "l5r5e.conditions.burning",
img: "icons/magic/fire/flame-burning-creature-skeleton.webp", img: "systems/l5rx-chiaroscuro/assets/icons/conditions/burning.webp",
system: { id: "L5RCoreCon000003" } system: { id: "L5RCoreCon000003" }
},{ },{
id: "centered", id: "centered",
name: "l5r5e.conditions.centered", name: "l5r5e.conditions.centered",
img: "systems/l5r5e/assets/icons/social.svg", img: "systems/l5rx-chiaroscuro/assets/icons/conditions/centered.webp",
system: { id: "L5RCoreCon000022" } system: { id: "L5RCoreCon000022" }
},{ },{
id: "compromised", id: "compromised",
name: "l5r5e.conditions.compromised", name: "l5r5e.conditions.compromised",
img: "icons/creatures/abilities/mouth-teeth-human.webp", img: "systems/l5rx-chiaroscuro/assets/icons/conditions/compromised.webp",
system: { id: "L5RCoreCon000004" } system: { id: "L5RCoreCon000004" }
},{ },{
id: "dazed", id: "dazed",
name: "l5r5e.conditions.dazed", name: "l5r5e.conditions.dazed",
img: "icons/magic/light/beam-explosion-orange.webp", img: "systems/l5rx-chiaroscuro/assets/icons/conditions/dazed.webp",
system: { id: "L5RCoreCon000005" } system: { id: "L5RCoreCon000005" }
},{ },{
id: "disoriented", id: "disoriented",
name: "l5r5e.conditions.disoriented", name: "l5r5e.conditions.disoriented",
img: "icons/magic/control/hypnosis-mesmerism-eye.webp", img: "systems/l5rx-chiaroscuro/assets/icons/conditions/disoriented.webp",
system: { id: "L5RCoreCon000006" } system: { id: "L5RCoreCon000006" }
},{ },{
id: "dying", id: "dying",
name: "l5r5e.conditions.dying", name: "l5r5e.conditions.dying",
img: "icons/magic/death/skull-humanoid-white-blue.webp", img: "systems/l5rx-chiaroscuro/assets/icons/conditions/dying_1.webp",
system: { id: "L5RCoreCon000007" } system: { id: "L5RCoreCon000007" }
},{ },{
id: "emboldened", id: "emboldened",
name: "l5r5e.conditions.emboldened", name: "l5r5e.conditions.emboldened",
img: "systems/l5r5e/assets/icons/social.svg", img: "systems/l5rx-chiaroscuro/assets/icons/conditions/emboldened.webp",
system: { id: "L5RCoreCon000023" } system: { id: "L5RCoreCon000023" }
},{ },{
id: "enraged", id: "enraged",
name: "l5r5e.conditions.enraged", name: "l5r5e.conditions.enraged",
img: "icons/skills/wounds/injury-face-impact-orange.webp", img: "systems/l5rx-chiaroscuro/assets/icons/conditions/enraged.webp",
system: { id: "L5RCoreCon000008" } system: { id: "L5RCoreCon000008" }
},{ },{
id: "exhausted", id: "exhausted",
name: "l5r5e.conditions.exhausted", name: "l5r5e.conditions.exhausted",
img: "icons/magic/life/heart-glowing-red.webp", img: "systems/l5rx-chiaroscuro/assets/icons/conditions/exhausted.webp",
system: { id: "L5RCoreCon000009" } system: { id: "L5RCoreCon000009" }
},{ },{
id: "illness_coughing_illness", id: "illness_coughing_illness",
name: "l5r5e.conditions.illness_coughing_illness", name: "l5r5e.conditions.illness_coughing_illness",
img: "icons/svg/poison.svg", img: "systems/l5rx-chiaroscuro/assets/icons/conditions/illness_coughing_illness.webp",
system: { id: "L5RCoreCon000019" } system: { id: "L5RCoreCon000019" }
},{ },{
id: "illness_fire_rash", id: "illness_fire_rash",
name: "l5r5e.conditions.illness_fire_rash", name: "l5r5e.conditions.illness_fire_rash",
img: "icons/svg/fire.svg", img: "systems/l5rx-chiaroscuro/assets/icons/conditions/illness_fire_rash.webp",
system: { id: "L5RCoreCon000021" } system: { id: "L5RCoreCon000021" }
},{ },{
id: "illness_gut_sickness", id: "illness_gut_sickness",
name: "l5r5e.conditions.illness_gut_sickness", name: "l5r5e.conditions.illness_gut_sickness",
img: "icons/svg/poison.svg", img: "systems/l5rx-chiaroscuro/assets/icons/conditions/illness_gut_sickness.webp",
system: { id: "L5RCoreCon000018" } system: { id: "L5RCoreCon000018" }
},{ },{
id: "illness_oozing_sore_disease", id: "illness_oozing_sore_disease",
name: "l5r5e.conditions.illness_oozing_sore_disease", name: "l5r5e.conditions.illness_oozing_sore_disease",
img: "icons/svg/eye.svg", img: "systems/l5rx-chiaroscuro/assets/icons/conditions/illness_oozing_sore_disease.webp",
system: { id: "L5RCoreCon000017" } system: { id: "L5RCoreCon000017" }
},{ },{
id: "illness_unsteady_illness", id: "illness_unsteady_illness",
name: "l5r5e.conditions.illness_unsteady_illness", name: "l5r5e.conditions.illness_unsteady_illness",
img: "icons/svg/daze.svg", img: "systems/l5rx-chiaroscuro/assets/icons/conditions/illness_unsteady_illness.webp",
system: { id: "L5RCoreCon000020" } system: { id: "L5RCoreCon000020" }
},{ },{
id: "immobilized", id: "immobilized",
name: "l5r5e.conditions.immobilized", name: "l5r5e.conditions.immobilized",
img: "icons/magic/nature/root-vine-entangle-foot-green.webp", img: "systems/l5rx-chiaroscuro/assets/icons/conditions/immobilized.webp",
system: { id: "L5RCoreCon000010" } system: { id: "L5RCoreCon000010" }
},{ },{
id: "incapacitated", id: "incapacitated",
name: "l5r5e.conditions.incapacitated", name: "l5r5e.conditions.incapacitated",
img: "icons/magic/control/silhouette-hold-change-green.webp", img: "systems/l5rx-chiaroscuro/assets/icons/conditions/incapacitated.webp",
system: { id: "L5RCoreCon000011" } system: { id: "L5RCoreCon000011" }
},{ },{
id: "intoxicated", id: "intoxicated",
name: "l5r5e.conditions.intoxicated", name: "l5r5e.conditions.intoxicated",
img: "icons/consumables/drinks/alcohol-jar-spirits-gray.webp", img: "systems/l5rx-chiaroscuro/assets/icons/conditions/intoxicated.webp",
system: { id: "L5RCoreCon000012" } system: { id: "L5RCoreCon000012" }
},{ },{
id: "possessed", id: "possessed",
name: "l5r5e.conditions.possessed", name: "l5r5e.conditions.possessed",
img: "icons/svg/terror.svg", img: "systems/l5rx-chiaroscuro/assets/icons/conditions/possesed.webp",
system: { id: "L5RCoreCon000024" } system: { id: "L5RCoreCon000024" }
},{ },{
id: "prone", id: "prone",
name: "l5r5e.conditions.prone", name: "l5r5e.conditions.prone",
img: "icons/magic/control/silhouette-fall-slip-prone.webp", img: "systems/l5rx-chiaroscuro/assets/icons/conditions/prone.webp",
system: { id: "L5RCoreCon000013" } system: { id: "L5RCoreCon000013" }
},{ },{
id: "silenced", id: "silenced",
name: "l5r5e.conditions.silenced", name: "l5r5e.conditions.silenced",
img: "icons/magic/control/mouth-smile-deception-purple.webp", img: "systems/l5rx-chiaroscuro/assets/icons/conditions/silenced.webp",
system: { id: "L5RCoreCon000014" } system: { id: "L5RCoreCon000014" }
},{ },{
id: "unconscious", id: "unconscious",
name: "l5r5e.conditions.unconscious", name: "l5r5e.conditions.unconscious",
img: "icons/magic/control/sleep-bubble-purple.webp", img: "systems/l5rx-chiaroscuro/assets/icons/conditions/unconscious.webp",
system: { id: "L5RCoreCon000015" } system: { id: "L5RCoreCon000015" }
},{
id: "desequilibre_solaire",
name: "chiaroscuro.aspects.desequilibre_solaire",
img: "systems/l5rx-chiaroscuro/assets/icons/conditions/desequilibre_solaire.webp",
system: { id: "ChiaCon000001" }
},{
id: "desequilibre_lunaire",
name: "chiaroscuro.aspects.desequilibre_lunaire",
img: "systems/l5rx-chiaroscuro/assets/icons/conditions/desequilibre_lunaire.webp",
system: { id: "ChiaCon000002" }
}], }],
regex: { regex: {
techniqueDifficulty: /^@([TS]):([^|]+?)(?:\|(min|max)(?:\(([^)]+?)\))?)?$/, techniqueDifficulty: /^@([TS]):([^|]+?)(?:\|(min|max)(?:\(([^)]+?)\))?)?$/,
@@ -344,6 +398,8 @@ L5R5E.techniques.set("mastery_ability", { type: "school", displayInTypes: false
L5R5E.techniques.set("title_ability", { type: "title", displayInTypes: false }); L5R5E.techniques.set("title_ability", { type: "title", displayInTypes: false });
// Custom // Custom
L5R5E.techniques.set("specificity", { type: "custom", displayInTypes: false }); L5R5E.techniques.set("specificity", { type: "custom", displayInTypes: false });
// Chiaroscuro
L5R5E.techniques.set("mot_invocation", { type: "chiaroscuro", displayInTypes: true });
// *** SkillId - CategoryId *** // *** SkillId - CategoryId ***
L5R5E.skills = new Map(); L5R5E.skills = new Map();
@@ -456,6 +512,7 @@ L5R5E.demeanors = [
{ id: "adaptable", mod: { water: 2, earth: -2 } }, { id: "adaptable", mod: { water: 2, earth: -2 } },
{ id: "aggressive", mod: { fire: 2, air: -2 } }, { id: "aggressive", mod: { fire: 2, air: -2 } },
{ id: "aggressive", mod: { fire: 2, water: -2 } }, { id: "aggressive", mod: { fire: 2, water: -2 } },
{ id: "alluring", mod: { air: 2, earth: -1, fire: -1 } },
{ id: "ambitious", mod: { fire: 2, water: -2 } }, { id: "ambitious", mod: { fire: 2, water: -2 } },
{ id: "amiable", mod: { air: 2, earth: -2 } }, { id: "amiable", mod: { air: 2, earth: -2 } },
{ id: "analytical", mod: { fire: 2, air: -2 } }, { id: "analytical", mod: { fire: 2, air: -2 } },
@@ -466,23 +523,38 @@ L5R5E.demeanors = [
{ id: "beguiling", mod: { air: 2, earth: -2 } }, { id: "beguiling", mod: { air: 2, earth: -2 } },
{ id: "beguiling", mod: { fire: 2, earth: -2 } }, { id: "beguiling", mod: { fire: 2, earth: -2 } },
{ id: "bitter", mod: { fire: 2, air: -2 } }, { id: "bitter", mod: { fire: 2, air: -2 } },
{ id: "bloodthirsty", mod: { fire: 2, water: -2 } },
{ id: "bold", mod: { fire: 1, earth: -1 } }, { id: "bold", mod: { fire: 1, earth: -1 } },
{ id: "calculating", mod: { air: 2, fire: -2 } }, { id: "calculating", mod: { air: 2, fire: -2 } },
{ id: "calm", mod: { fire: 2, air: -2 } }, { id: "calm", mod: { fire: 2, air: -2 } },
{ id: "capricious", mod: { air: 2, earth: -2 } }, { id: "capricious", mod: { air: 2, earth: -2 } },
{ id: "cautious", mod: { air: 2, earth: -2 } }, { id: "cautious", mod: { air: 2, earth: -2 } },
{ id: "cautious", mod: { water: 1, void: -1 } },
{ id: "clever", mod: { air: 2, earth: -2 } }, { id: "clever", mod: { air: 2, earth: -2 } },
{ id: "compassionate", mod: { fire: 2, air: -1, water: -1}}, { id: "compassionate", mod: { fire: 2, air: -1, water: -1}},
{ id: "compassionate", mod: { water: 2, fire: -2 } },
{ id: "compassionate", mod: { water: 2, void: -2 } },
{ id: "confused", mod: { fire: 1, void: 1, air: -2 } }, { id: "confused", mod: { fire: 1, void: 1, air: -2 } },
{ id: "courageous", mod: { air: 2, earth: -2 } }, { id: "courageous", mod: { air: 2, earth: -2 } },
{ id: "cowardly", mod: { earth: 2, fire: -2 } }, { id: "cowardly", mod: { earth: 2, fire: -2 } },
{ id: "crestfallen", mod: { void: 2, fire: -2 } },
{ id: "curious", mod: { earth: 1, void: -2 } }, { id: "curious", mod: { earth: 1, void: -2 } },
{ id: "curious", mod: { fire: 1, void: 1, air: -2 } }, { id: "curious", mod: { fire: 1, void: 1, air: -2 } },
{ id: "defensive", mod: { fire: 2, air: -2 } },
{ id: "dependable", mod: { fire: 1, water: 1, earth: -2 } }, { id: "dependable", mod: { fire: 1, water: 1, earth: -2 } },
{ id: "detached", mod: { earth: 1, fire: 1, void: -2 } }, { id: "detached", mod: { earth: 1, fire: 1, void: -2 } },
{ id: "determined", mod: { earth: 2, air: -2 } },
{ id: "devoted", mod: { fire: 2, earth: -2 } },
{ id: "direct", mod: { air: 2, fire: -1, water: -1 } },
{ id: "disheartened", mod: { fire: 1, earth: -1 } }, { id: "disheartened", mod: { fire: 1, earth: -1 } },
{ id: "dour", mod: { earth: 1, water: 1, air: -1 } },
{ id: "duplicitous", mod: { water: 2, fire: -2 } },
{ id: "effusive", mod: { air: 2, earth: -2 } },
{ id: "enraged", mod: { air: 1, fire: -2 } }, { id: "enraged", mod: { air: 1, fire: -2 } },
{ id: "fanatical", mod: { earth: 1, air: 1, fire: -2 } },
{ id: "feral", mod: { air: 2, fire: -2 } }, { id: "feral", mod: { air: 2, fire: -2 } },
{ id: "fervent", mod: { fire: 2, earth: -2 } },
{ id: "fervent", mod: { air: 1, water: 1, fire: -1, void: -1 } },
{ id: "fickle", mod: { fire: 2, air: -2 } }, { id: "fickle", mod: { fire: 2, air: -2 } },
{ id: "fierce", mod: { fire: 2, earth: -2 } }, { id: "fierce", mod: { fire: 2, earth: -2 } },
{ id: "flighty", mod: { air: 2, fire: -2 } }, { id: "flighty", mod: { air: 2, fire: -2 } },
@@ -490,32 +562,55 @@ L5R5E.demeanors = [
{ id: "flippant", mod: { fire: 2, air: -2 } }, { id: "flippant", mod: { fire: 2, air: -2 } },
{ id: "friendly", mod: { fire: 1, earth: -2, water: -2 } }, { id: "friendly", mod: { fire: 1, earth: -2, water: -2 } },
{ id: "gruff", mod: { water: 2, earth: -2 } }, { id: "gruff", mod: { water: 2, earth: -2 } },
{ id: "honorable", mod: { fire: 2, earth: -2 } },
{ id: "hubristic", mod: { earth: 2, air: -2 } },
{ id: "hungry", mod: { fire: 2, air: -2 } }, { id: "hungry", mod: { fire: 2, air: -2 } },
{ id: "idealistic", mod: { water: 2, earth: -2 } },
{ id: "idealistic", mod: { earth: 1, water: -1 } },
{ id: "imposing", mod: { fire: 2, water: -2 } },
{ id: "inquisitive", mod: { earth: 2, water: -2 } },
{ id: "intense", mod: { air: 2, water: -2 } }, { id: "intense", mod: { air: 2, water: -2 } },
{ id: "intense", mod: { fire: 2, water: -2 } }, { id: "intense", mod: { fire: 2, water: -2 } },
{ id: "intimidating", mod: { fire: 2, air: -2 } }, { id: "intimidating", mod: { fire: 2, air: -2 } },
{ id: "irritable", mod: { fire: 2, air: -1, water: -1 } }, { id: "irritable", mod: { fire: 2, air: -1, water: -1 } },
{ id: "loyal", mod: { air: 1, earth: -2, fire: -2 } }, { id: "loyal", mod: { air: 1, earth: -2, fire: -2 } },
{ id: "loyal", mod: { water: 2, fire: -2 } }, { id: "loyal", mod: { water: 2, fire: -2 } },
{ id: "methodical", mod: { earth: 2, fire: -2 } },
{ id: "meticulous", mod: { fire: 1, water: 1, air: -1, earth: -1 } },
{ id: "meticulous", mod: { fire: 1, water: 1, earth: -2 } },
{ id: "mischievous", mod: { fire: 2, air: -2 } }, { id: "mischievous", mod: { fire: 2, air: -2 } },
{ id: "mischievous", mod: { air: 2, earth: -2 } }, { id: "mischievous", mod: { air: 2, earth: -2 } },
{ id: "mischievous", mod: { earth: 2, fire: -2 } }, { id: "mischievous", mod: { earth: 2, fire: -2 } },
{ id: "moon_blessed", mod: { water: 2, fire: -2 } },
{ id: "morose", mod: { water: 2, fire: -2 } }, { id: "morose", mod: { water: 2, fire: -2 } },
{ id: "near_feral", mod: { air: 1, fire: -1 } },
{ id: "nurturing", mod: { earth: 2, fire: -2 } }, { id: "nurturing", mod: { earth: 2, fire: -2 } },
{ id: "obsessed", mod: { earth: 2, air: -2 } },
{ id: "obstinate", mod: { earth: 2, air: -2 } }, { id: "obstinate", mod: { earth: 2, air: -2 } },
{ id: "obstinate", mod: { water: 2, air: -2 } }, { id: "obstinate", mod: { water: 2, air: -2 } },
{ id: "otherworldly", mod: { water: 1, void: -1 } },
{ id: "outgoing", mod: { air: 2, earth: -2 } },
{ id: "opportunistic", mod: { water: 2, fire: -2 } }, { id: "opportunistic", mod: { water: 2, fire: -2 } },
{ id: "passionate", mod: { earth: 2, air: -2 } }, { id: "passionate", mod: { earth: 2, air: -2 } },
{ id: "patient", mod: { fire: 1, water: 1, air: -1, void: -1 } },
{ id: "personable", mod: { fire: 2, air: 1, void: -2 } },
{ id: "playful", mod: { earth: 2, water: -2 } }, { id: "playful", mod: { earth: 2, water: -2 } },
{ id: "playful", mod: { fire: 1, air: 1, void: -2 } }, { id: "playful", mod: { fire: 1, air: 1, void: -2 } },
{ id: "power_hungry", mod: { fire: 2, earth: -2 } }, { id: "power_hungry", mod: { fire: 2, earth: -2 } },
{ id: "proud", mod: { fire: 2, earth: -2 } }, { id: "proud", mod: { fire: 2, earth: -2 } },
{ id: "refined", mod: { earth: 1, water: 1, air: -1, fire: -1 } },
{ id: "reserved", mod: { earth: 2, water: -2 } },
{ id: "restrained", mod: { earth: 2, air: -2 } }, { id: "restrained", mod: { earth: 2, air: -2 } },
{ id: "righteous", mod: { water: 2, fire: -1, void: -1 } },
{ id: "scheming", mod: { air: 2, void: -2 } }, { id: "scheming", mod: { air: 2, void: -2 } },
{ id: "serene", mod: { fire: 2, void: -2 } }, { id: "serene", mod: { fire: 2, void: -2 } },
{ id: "serene", mod: { void: 2, fire: -2 } }, { id: "serene", mod: { void: 2, fire: -2 } },
{ id: "serious", mod: { fire: 2, earth: -2 } }, { id: "serious", mod: { fire: 2, earth: -2 } },
{ id: "shrewd", mod: { air: 2, fire: -2 } }, { id: "shrewd", mod: { air: 2, fire: -2 } },
{ id: "sinister", mod: { fire: 2, air: -2 } },
{ id: "sociable", mod: { air: 1, earth: 1, fire: -1, water: -1 } },
{ id: "starved", mod: { water: 2, fire: -2 } },
{ id: "stoic", mod: { earth: 2, fire: -2 } },
{ id: "stubborn", mod: { earth: 2, water: -2 } }, { id: "stubborn", mod: { earth: 2, water: -2 } },
{ id: "suspicious", mod: { air: 2, earth: -2 } }, { id: "suspicious", mod: { air: 2, earth: -2 } },
{ id: "teasing", mod: { air: 2, earth: -2 } }, { id: "teasing", mod: { air: 2, earth: -2 } },
@@ -523,5 +618,10 @@ L5R5E.demeanors = [
{ id: "uncertain", mod: { air: 2, fire: -2 } }, { id: "uncertain", mod: { air: 2, fire: -2 } },
{ id: "unenthused", mod: { earth: 2, fire: -2 } }, { id: "unenthused", mod: { earth: 2, fire: -2 } },
{ id: "vain", mod: { earth: 2, air: -2 } }, { id: "vain", mod: { earth: 2, air: -2 } },
{ id: "vengeful", mod: { fire: 2, void: -2 } },
{ id: "vindictive", mod: { fire: 2, water: -2 } },
{ id: "wary", mod: { earth: 2, fire: -2 } }, { id: "wary", mod: { earth: 2, fire: -2 } },
{ id: "watchful", mod: { fire: 2, earth: -1, void: -1 } },
{ id: "wrathful", mod: { fire: 2, earth: -2 } },
{ id: "zealous", mod: { earth: 2, fire: -2 } },
]; ];

View File

@@ -1,47 +1,110 @@
import { L5r5eHtmlMultiSelectElement } from "../misc/l5r5e-multiselect.js"; import { L5r5eHtmlMultiSelectElement } from "../misc/l5r5e-multiselect.js";
/** /**
* A subclass of [ArrayField]{@link ArrayField} which supports a set of contained elements. * A Foundry `SetField` that renders as an {@link L5r5eHtmlMultiSelectElement} chip-input.
* Elements in this set are treated as fungible and may be represented in any order or discarded if invalid. *
* Use this in a DataModel schema whenever a field stores an unordered collection of
* string values drawn from a fixed option list. On form submission the element returns a
* comma-separated string; `clean()` splits it back into an Array before Foundry processes
* it, and `initialize()` wraps the result in a `Set` for use in the model.
*
* @example
* // In a DataModel schema:
* skills: new L5r5eSetField({
* options: [
* { value: "athletics", label: "Athletics" },
* { value: "meditation", label: "Meditation", disabled: true, tooltip: "Requires rank 3" },
* ]
* })
*
* // Renders automatically via {{formGroup}} in a Handlebars template:
* // {{formGroup fields.skills name="skills" value=data.skills localize=true}}
*
* @param {object} options
* @param {{ value: string, label: string, disabled?: boolean, tooltip?: string }[]} options.options
* Flat list of selectable items. Passed directly to {@link L5r5eHtmlMultiSelectElement.create}.
* @param {object[]} [options.groups]
* Optional optgroup definitions, forwarded to the element factory unchanged.
* @param {boolean} [options.hideDisabledOptions=false]
* When true, disabled options are hidden from the dropdown instead of greyed out.
*/ */
export class L5r5eSetField extends foundry.data.fields.SetField { export class L5r5eSetField extends foundry.data.fields.SetField {
/**
* Saved constructor options, used to reconstruct the multiselect input on form render.
* @type {object}
*/
#savedOptions;
// We don't get the options we expect when we convert this to input, /**
// So store them here * @param {object} options
#savedOptions; * @param {object} context
*/
constructor(options = {}, context = {}) {
super(
new foundry.data.fields.StringField({
choices: options.options?.map((option) => option.value) ?? [],
}),
options,
context
);
constructor(options={}, context={}) { this.#savedOptions = options;
super(new foundry.data.fields.StringField({
choices: options.options.map((option) => option.value)
}), options, context);
this.#savedOptions = options;
}
/** @override */
initialize(value, model, options={}) {
if ( !value ) return value;
return new Set(super.initialize(value, model, options));
} }
/** @override */ /**
* @param {*} value
* @param {object} model
* @param {object} options
* @return {Set}
* @override
*/
initialize(value, model, options = {}) {
if (!value || (Array.isArray(value) && value.length === 0)) {
return new Set();
}
return new Set(super.initialize(value, model, options).filter(Boolean));
}
/**
* @param {Set} value
* @return {*[]|*}
* @override
*/
toObject(value) { toObject(value) {
if ( !value ) return value; if (!value) {
return Array.from(value).map(v => this.element.toObject(v)); return value;
}
return Array.from(value).map((v) => this.element.toObject(v));
} }
/* -------------------------------------------- */ /**
/* Form Field Integration */ * @param {string|Array} value
/* -------------------------------------------- */ * @param {object} options
* @return {Array}
* @override
*/
clean(value, options) {
// Settings forms submit comma-separated strings; split before normal cleaning.
if (typeof value === "string") {
value = value.length ? value.split(",").filter(Boolean) : [];
}
return super.clean(value, options);
}
/** @override */ /**
* @param {object} config
* @return {L5r5eHtmlMultiSelectElement}
* @override
*/
_toInput(config) { _toInput(config) {
const e = this.element; return L5r5eHtmlMultiSelectElement.create({
return L5r5eHtmlMultiSelectElement.create({ name: config.name,
name: config.name, options: this.#savedOptions.options,
options: this.#savedOptions.options, groups: this.#savedOptions.groups,
groups: this.#savedOptions.groups, value: config.value,
value: config.value, localize: config.localize,
localize: config.localize hideDisabledOptions: this.#savedOptions.hideDisabledOptions,
}); });
} }
} }

View File

@@ -0,0 +1,334 @@
/**
* Chiaroscuro Dice Dialog
*
* d6 pool system: ring value × multiplier d6, sum vs difficulty.
* Multiplier: ×1 base, ×2 if aspect or assistance, ×3 if both.
* Parangon passives adjust individual die results before summing.
*/
export class ChiaroscuroDiceDialog extends FormApplication {
/**
* Current Actor
* @type {ActorL5r5e}
* @private
*/
_actor = null;
/**
* Payload Object
*/
object = {
ring: { id: "void", value: 1 },
skill: { id: "", name: "", bonus: 0, rank: "0" },
difficulty: { id: "moyenne", value: 10 },
modifier: 0,
useAspectPoint: false,
aspectType: "solar",
useAssistance: false,
};
static get defaultOptions() {
return foundry.utils.mergeObject(super.defaultOptions, {
id: "l5r5e-chiaroscuro-dice-dialog",
classes: ["l5r5e", "chiaroscuro-dice-dialog"],
template: CONFIG.l5r5e.paths.templates + "dice/chiaroscuro-dice-dialog.html",
title: game.i18n.localize("chiaroscuro.dice.title"),
width: 440,
height: "auto",
});
}
get id() {
return `l5r5e-chiaroscuro-dice-dialog-${this._actor?.id ?? "no-actor"}`;
}
get title() {
return game.i18n.localize("chiaroscuro.dice.title") + (this._actor ? " — " + this._actor.name : "");
}
/**
* Total dice to roll (ring value × multiplier)
* @return {number}
*/
get totalDice() {
const base = this.object.ring.value;
const both = this.object.useAspectPoint && this.object.useAssistance;
const either = this.object.useAspectPoint || this.object.useAssistance;
return base * (both ? 3 : either ? 2 : 1);
}
/**
* @param options actor, actorId, ringId, skillId
*/
constructor(options = {}) {
super({}, options);
// Resolve actor
[
options?.actor,
game.actors.get(options?.actorId),
canvas.tokens.controlled[0]?.actor,
game.user.character,
].forEach((actor) => {
if (!this._actor && actor instanceof Actor && actor.isOwner) {
this._actor = actor;
}
});
// Default ring: options > actor default_ring > void
const ringId = options.ringId ?? this._actor?.system?.default_ring ?? "void";
this.ringId = ringId;
// Skill
if (options.skillId) {
this.skillId = options.skillId;
}
}
/**
* Set ring (id + value from actor)
* @param {string} ringId
*/
set ringId(ringId) {
this.object.ring.id = CONFIG.l5r5e.stances.includes(ringId) ? ringId : "void";
this.object.ring.value = this._actor?.system?.rings?.[this.object.ring.id] || 1;
// Auto-derive aspect type from ring (fire/earth → solar, air/water → lunar; void = manual)
if (this.object.ring.id !== "void") {
this.object.aspectType = ["fire", "earth"].includes(this.object.ring.id) ? "solar" : "lunar";
}
}
/**
* Set skill (id, name, rank, bonus)
* @param {string} skillId
*/
set skillId(skillId) {
if (!skillId) return;
const catId = CONFIG.l5r5e.skills.get(skillId.toLowerCase().trim());
const rank = this._actor?.system?.skills?.[catId]?.[skillId] ?? "0";
this.object.skill = {
...this.object.skill,
id: skillId,
name: catId ? game.i18n.localize(`l5r5e.skills.${catId}.${skillId}`) : skillId,
rank,
bonus: CONFIG.l5r5e.skillRanks?.[rank]?.bonus ?? 0,
};
}
async getData(options = null) {
const difficultiesList = Object.entries(CONFIG.l5r5e.difficulties).map(([id, value]) => ({
id,
label: game.i18n.localize(`chiaroscuro.difficulties.${id}`),
value,
}));
const aspectsList = [
{ id: "solar", label: game.i18n.localize("chiaroscuro.aspects.solar") },
{ id: "lunar", label: game.i18n.localize("chiaroscuro.aspects.lunar") },
];
return {
...(await super.getData(options)),
actor: this._actor,
data: this.object,
totalDice: this.totalDice,
ringsList: game.l5r5e.HelpersL5r5e.getRingsList(this._actor),
difficultiesList,
aspectsList,
isVoidRing: this.object.ring.id === "void",
quickInfo: this._actor?.system?.quick_info ?? "",
};
}
activateListeners(html) {
super.activateListeners(html);
// Ring selector
html.find(".ring-selection-chi").on("click", async (event) => {
event.preventDefault();
event.stopPropagation();
this.ringId = event.currentTarget.dataset.ringid;
this.render(false);
});
// Difficulty select
html.find("select[name='difficulty.id']").on("change", (event) => {
this.object.difficulty.id = event.target.value;
this.object.difficulty.value = CONFIG.l5r5e.difficulties[this.object.difficulty.id];
this.render(false);
});
// Flat modifier
html.find("input[name='modifier']").on("change", (event) => {
this.object.modifier = parseInt(event.target.value) || 0;
});
// Aspect point checkbox
html.find("#use_aspect_point").on("change", (event) => {
this.object.useAspectPoint = event.target.checked;
this.render(false);
});
// Aspect type select (solar / lunar)
html.find("select[name='aspectType']").on("change", (event) => {
this.object.aspectType = event.target.value;
});
// Assistance checkbox
html.find("#use_assistance").on("change", (event) => {
this.object.useAssistance = event.target.checked;
this.render(false);
});
// Roll button — explicit submit trigger
html.find("button[name='roll']").on("click", (event) => {
event.preventDefault();
this._onSubmit(event);
});
}
async _updateObject(event, formData) {
const nbDice = this.totalDice;
const skillRank = this.object.skill.rank;
const skillBonus = this.object.skill.bonus;
const flatModifier = this.object.modifier;
const difficultyObj = this.object.difficulty;
const difficultyValue = difficultyObj.value;
// Roll the dice using FoundryVTT Roll API
const roll = await new Roll(`${nbDice}d6`).evaluate();
const rawResults = roll.dice[0].results.map((r) => r.result);
// Apply parangon passive adjustments
const adjustedResults = rawResults.map((r) => this._applyParangon(r, skillRank));
const diceAdjustedFlags = rawResults.map((r, i) => adjustedResults[i] !== r);
const wasAdjusted = diceAdjustedFlags.some(Boolean);
// Compute total
const rawSum = adjustedResults.reduce((a, b) => a + b, 0);
const total = rawSum + skillBonus + flatModifier;
const success = total >= difficultyValue;
const bonus = success ? total - difficultyValue : 0;
// Update aspect gauge after roll
if (this._actor && this.object.useAspectPoint) {
await this._updateAspectGauge();
}
// Post chat message
await this._sendChatMessage({
nbDice,
rawResults,
adjustedResults,
diceAdjustedFlags,
wasAdjusted,
rawSum,
total,
skillBonus,
flatModifier,
difficulty: difficultyObj,
success,
bonus,
});
return this.close();
}
/**
* Apply parangon rank passive: replace low die results with higher value.
* parangon1: 1 → 2
* parangon2: 12 → 3
* parangon3: 13 → 4
* @param {number} result
* @param {string} rank
* @return {number}
*/
_applyParangon(result, rank) {
if (rank === "parangon3" && result <= 3) return 4;
if (rank === "parangon2" && result <= 2) return 3;
if (rank === "parangon1" && result <= 1) return 2;
return result;
}
/**
* Update the aspect gauge on the actor after an aspect point roll.
* Gauge positive = solar side, negative = lunar side.
* ±5 → apply Déséquilibre. ±10 → full reset.
*/
async _updateAspectGauge() {
// Support both single-nested (system.aspects) and double-nested (system.aspects.aspects)
const aspectsPath = this._actor.system.aspects?.aspects !== undefined
? "system.aspects.aspects"
: "system.aspects";
const aspects = foundry.utils.getProperty(this._actor, aspectsPath) ?? {};
const gaugeDirection = this.object.aspectType === "solar" ? 1 : -1;
const newGauge = (aspects.gauge ?? 0) + gaugeDirection;
if (Math.abs(newGauge) >= 10) {
// Full reset
await this._actor.update({
[`${aspectsPath}.gauge`]: 0,
[`${aspectsPath}.solar`]: 0,
[`${aspectsPath}.lunar`]: 0,
});
// Remove all desequilibre conditions
const toRemove = this._actor.items
.filter((i) => i.type === "etat" && ["desequilibre_solaire", "desequilibre_lunaire"].includes(i.system?.condition_type))
.map((i) => i.id);
if (toRemove.length) {
await this._actor.deleteEmbeddedDocuments("Item", toRemove);
}
} else {
await this._actor.update({ [`${aspectsPath}.gauge`]: newGauge });
if (Math.abs(newGauge) >= 5) {
// Apply opposing desequilibre
const condType = this.object.aspectType === "solar" ? "desequilibre_lunaire" : "desequilibre_solaire";
const existing = this._actor.items.find(
(i) => i.type === "etat" && i.system?.condition_type === condType
);
if (!existing) {
await this._actor.createEmbeddedDocuments("Item", [
{
type: "etat",
name: game.i18n.localize(`chiaroscuro.aspects.${condType}`),
system: { condition_type: condType },
},
]);
}
}
}
}
/**
* Create and send the chat message.
*/
async _sendChatMessage(rollData) {
const content = await foundry.applications.handlebars.renderTemplate(
CONFIG.l5r5e.paths.templates + "dice/chiaroscuro-chat-roll.html",
{
actor: this._actor,
profileImg: this._actor?.img ?? "icons/svg/mystery-man.svg",
ring: this.object.ring,
skill: this.object.skill,
difficulty: this.object.difficulty,
useAspectPoint: this.object.useAspectPoint,
aspectType: this.object.aspectType,
useAssistance: this.object.useAssistance,
modifier: this.object.modifier,
quickInfo: this._actor?.system?.quick_info ?? "",
...rollData,
}
);
return ChatMessage.implementation.create({
user: game.user.id,
speaker: {
actor: this._actor?.id ?? null,
alias: this._actor?.name ?? null,
},
content,
sound: CONFIG.sounds.dice,
});
}
}

View File

@@ -513,6 +513,9 @@ export class DicePickerDialog extends FormApplication {
this._updateVoidPointUsage(); this._updateVoidPointUsage();
this.render(false); this.render(false);
}); });
// Open journal on effect name
html.find(".effect-name").on("click", this._openEffectJournal.bind(this));
} }
/** /**
@@ -687,7 +690,7 @@ export class DicePickerDialog extends FormApplication {
type: "script", type: "script",
scope: "actor", scope: "actor",
command, command,
img: this._actor?.img || "systems/l5r5e/assets/dices/default/ring_et.svg", img: this._actor?.img || "systems/l5rx-chiaroscuro/assets/dices/default/ring_et.svg",
}); });
} }
@@ -864,4 +867,34 @@ export class DicePickerDialog extends FormApplication {
return array; return array;
} }
/**
* 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) {
// Open on the "rules" section. If non exists then it will open the first page
journal.sheet.render(true, {pageIndex: 2});
}
}
} }

View File

@@ -268,6 +268,9 @@ export class RollnKeepDialog extends FormApplication {
], { jQuery: false }); ], { jQuery: false });
} }
// Open journal on effect name
html.find(".effect-name").on("click", this._openEffectJournal.bind(this));
// *** Everything below here is only needed if the sheet is editable *** // *** Everything below here is only needed if the sheet is editable ***
if (!this.isEditable) { if (!this.isEditable) {
return; return;
@@ -802,4 +805,34 @@ export class RollnKeepDialog extends FormApplication {
// Re-enable the button // Re-enable the button
button.attr("disabled", false); button.attr("disabled", false);
} }
/**
* 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.roll.l5r5e?.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) {
// Open on the "rules" section. If non exists then it will open the first page
journal.sheet.render(true, {pageIndex: 2});
}
}
} }

View File

@@ -73,11 +73,11 @@ export class GmMonitor extends HandlebarsApplicationMixin(ApplicationV2) {
}, },
character: { character: {
id: "character", id: "character",
template: "systems/l5r5e/templates/" + "gm/monitor/character-view.html" template: "systems/l5rx-chiaroscuro/templates/" + "gm/monitor/character-view.html"
}, },
army: { army: {
if: "army", if: "army",
template: "systems/l5r5e/templates/" + "gm/monitor/army-view.html" template: "systems/l5rx-chiaroscuro/templates/" + "gm/monitor/army-view.html"
} }
}; };
@@ -166,6 +166,15 @@ export class GmMonitor extends HandlebarsApplicationMixin(ApplicationV2) {
} }
} }
); );
// Apply global interface theme if it is set
if (!this.options.classes.includes("themed")) {
this.element.classList.remove("theme-light", "theme-dark");
const {colorScheme} = game.settings.get("core", "uiConfig");
if (colorScheme.interface) {
this.element.classList.add("themed", `theme-${colorScheme.interface}`);
}
}
} }
/** @override ApplicationV2 */ /** @override ApplicationV2 */

View File

@@ -5,10 +5,11 @@ export class GmToolbox extends HandlebarsApplicationMixin(ApplicationV2) {
/** @override ApplicationV2 */ /** @override ApplicationV2 */
static get DEFAULT_OPTIONS() { return { static get DEFAULT_OPTIONS() { return {
id: "l5r5e-gm-toolbox", id: "l5r5e-gm-toolbox",
classes: ["faded-ui"],
window: { window: {
contentClasses: ["l5r5e", "gm-toolbox", "faded-ui"], contentClasses: ["l5r5e", "gm-toolbox"],
title: "l5r5e.gm.toolbox.title", title: "l5r5e.gm.toolbox.title",
minimizable: true, minimizable: false,
}, },
position: { position: {
width: "auto", width: "auto",
@@ -43,7 +44,7 @@ export class GmToolbox extends HandlebarsApplicationMixin(ApplicationV2) {
static PARTS = { static PARTS = {
main: { main: {
id: "gm-tool-content", id: "gm-tool-content",
template: "systems/l5r5e/templates/" + "gm/gm-toolbox.html" template: "systems/l5rx-chiaroscuro/templates/" + "gm/gm-toolbox.html"
} }
}; };
@@ -89,6 +90,19 @@ export class GmToolbox extends HandlebarsApplicationMixin(ApplicationV2) {
options.position.left = 220; //x - 630; options.position.left = 220; //x - 630;
} }
async _onRender(context, options) {
await super._onRender(context, options);
if (this.options.classes.includes("themed")) {
return;
}
this.element.classList.remove("theme-light", "theme-dark");
const {colorScheme} = game.settings.get("core", "uiConfig");
if (colorScheme.interface) {
this.element.classList.add("themed", `theme-${colorScheme.interface}`);
}
}
/** /**
* The GM Toolbox should not be removed when toggling the main menu with the esc key etc. * The GM Toolbox should not be removed when toggling the main menu with the esc key etc.
* @override ApplicationV2 * @override ApplicationV2

View File

@@ -64,6 +64,11 @@ export const RegisterHandlebars = function () {
return objects.join(""); return objects.join("");
}); });
// Chiaroscuro: return the flat bonus for a given skill rank id
Handlebars.registerHelper("skillRankBonus", (rankId) => {
return CONFIG.l5r5e.skillRanks?.[rankId]?.bonus ?? 0;
});
// Add a setter // Add a setter
Handlebars.registerHelper("setVar", function (varName, varValue, options) { Handlebars.registerHelper("setVar", function (varName, varValue, options) {
options.data.root[varName] = varValue; options.data.root[varName] = varValue;

View File

@@ -1,4 +1,4 @@
import { L5r5eHtmlMultiSelectElement } from "./misc/l5r5e-multiselect.js"; import { ItemCompendiumL5r5e } from "./compendium/l5r5e-item-compendium.js"
export default class HooksL5r5e { export default class HooksL5r5e {
/** /**
@@ -26,6 +26,8 @@ export default class HooksL5r5e {
) { ) {
game.babele.setSystemTranslationsDir("babele"); // Since Babele v2.0.7 game.babele.setSystemTranslationsDir("babele"); // Since Babele v2.0.7
} }
ItemCompendiumL5r5e.applyToPacks();
} }
/** /**
@@ -245,236 +247,6 @@ export default class HooksL5r5e {
}); });
} }
/**
* Compendium display (Add filters)
*/
static async renderCompendium(app, html, data) {
html = $(html); // basic patch for v13
if (app.collection.documentName === "Item") {
const content = await app.collection.getDocuments();
const sourcesInThisCompendium = new Set([]);
const filtersToShow = {
rank: false,
rarity: false,
source: false,
ring: false,
};
// Used to auto hide same values for a full compendium
const previousValue = {
rank: null,
rarity: null,
source: null,
ring: null,
};
// Cache
const header = html.find(".directory-header");
const entries = html.find(".directory-item");
// Add additional data to the entries to make it faster to lookup.
// Add Ring/rank/rarity information
for (const document of content) {
const entry = entries.filter(`[data-entry-id="${document.id}"]`);
// Hide filter if only one value of this type is found in the compendium
const autoDisplayFilter = (props, documentData = null) => {
documentData ??= document.system[props];
if (filtersToShow[props] || previousValue[props] === documentData) {
return;
}
filtersToShow[props] = previousValue[props] !== null && previousValue[props] !== documentData;
previousValue[props] = documentData;
};
if (document.system?.rank) {
autoDisplayFilter('rank');
entry.data("rank", document.system.rank);
}
if (document.system?.source_reference.source) {
autoDisplayFilter('source', document.system.source_reference.source);
sourcesInThisCompendium.add(document.system.source_reference.source);
entry.data("source", document.system.source_reference);
}
if (document.system?.ring) {
autoDisplayFilter('ring');
entry.data("ring", document.system.ring);
}
if (document.system?.rarity) {
autoDisplayFilter('rarity');
entry.data("rarity", document.system.rarity);
}
// Add ring/rank/rarity information on the item in the compendium view
if (document.system?.ring || document.system?.rarity || document.system?.rank) {
const ringRarityRank = await foundry.applications.handlebars.renderTemplate(`${CONFIG.l5r5e.paths.templates}compendium/ring-rarity-rank.html`, document.system);
entry.append(ringRarityRank);
}
}
// Setup filters
const officialContentSet = game.settings.get(CONFIG.l5r5e.namespace, "compendium-official-content-for-players");
const unofficialContentSet = game.settings.get(CONFIG.l5r5e.namespace, "compendium-unofficial-content-for-players");
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 unavailableSourceForPlayersSet = new Set([...allCompendiumReferencesSet].filter((element) => {
if (CONFIG.l5r5e.sourceReference[element]) {
return officialContentSet.size > 0 ? !officialContentSet.has(element) : false;
}
return unofficialContentSet.size > 0 ? !unofficialContentSet.has(element) : false;
}));
// Create filter function
const applyCompendiumFilter = () => {
const userFilter = header.find("l5r5e-multi-select").val();
const rankFilter = header.find(".rank-filter .selected").data("rank");
const ringFilter = header.find(".ring-filter .selected").data("ring");
const rarityFilter = header.find(".rarity-filter .selected").data("rarity");
entries.each(function () {
const lineSource = $(this).data("source")?.source;
// We might have stuff in the compendium view that does not have a source (folders etc.) Ignore those.
if (lineSource === null || lineSource === undefined) {
return;
}
let shouldShow = true;
// Handle unavailable sources
if (unavailableSourceForPlayersSet.has(lineSource)) {
if (game.user.isGM) {
shouldShow &= true;
$(this)
.addClass("not-for-players")
.attr("data-tooltip", game.i18n.localize("l5r5e.compendium.not_for_players"));
} else {
shouldShow &= false;
}
}
// Handle empty sources
if (lineSource === "" && hideEmptySourcesFromPlayers) {
if (game.user.isGM) {
shouldShow &= true;
$(this)
.addClass("not-for-players")
.attr("data-tooltip", game.i18n.localize("l5r5e.compendium.not_for_players"));
} else {
shouldShow &= false;
}
}
// Apply filters
if (rankFilter) {
shouldShow &= $(this).data("rank") == rankFilter;
}
if (userFilter?.length) {
shouldShow &= userFilter.includes(lineSource);
}
if (ringFilter) {
shouldShow &= $(this).data("ring") == ringFilter;
}
if (rarityFilter >= 0) {
shouldShow &= $(this).data("rarity") == rarityFilter;
}
// Show or hide this entry based on the result
shouldShow ? $(this).show() : $(this).hide();
});
};
// Filter setup
const addFilter = async (filterType, templateFile, templateData) => {
if (!filtersToShow[filterType]) {
return;
}
const filterTemplate = await foundry.applications.handlebars.renderTemplate(
`${CONFIG.l5r5e.paths.templates}compendium/${templateFile}.html`,
templateData
);
header.append(filterTemplate);
header.find(`.${filterType}-filter`).children().each(function () {
$(this).on("click", (event) => {
const selected = $(event.target).hasClass("selected");
header.find(`.${filterType}-filter`).children().removeClass("selected");
$(event.target).toggleClass("selected", !selected);
applyCompendiumFilter();
});
});
};
// Add Rank, Rarity, Ring Filters
await Promise.all([
addFilter('rank' , 'rank-filter', { type: "rank", number: [1, 2, 3, 4, 5] }),
addFilter('rarity', 'rank-filter', { type: "rarity", number: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10] }),
addFilter('ring' , 'ring-filter', {}),
]);
if (filtersToShow.source) {
// Build the source select
const selectableSourcesArray = [...allCompendiumReferencesSet].map((reference) => ({
value: reference,
label: CONFIG.l5r5e.sourceReference[reference]?.label ?? reference,
translate: true,
group: CONFIG.l5r5e.sourceReference[reference]?.type.split(",")[0] ?? "l5r5e.multiselect.sources_categories.others",
disabled: !sourcesInThisCompendium.has(reference) || (!game.user.isGM && unavailableSourceForPlayersSet.has(reference))
}));
const filterSourcesBox = L5r5eHtmlMultiSelectElement.create({
name: "filter-sources",
options: selectableSourcesArray,
localize: true,
});
header.append(filterSourcesBox.outerHTML);
$("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 (game.user.isGM && unavailableSourceForPlayersSet.size > 0) {
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')
+ '</button>'
const filterPlayerViewArray = [...allCompendiumReferencesSet]
.filter((item) => !unavailableSourceForPlayersSet.has(item))
.filter((item) => sourcesInThisCompendium.has(item));
$(buttonHTML).appendTo($(header).find("l5r5e-multi-select")).click(function() {
header.find("l5r5e-multi-select")[0].value = filterPlayerViewArray;
});
}
}
// TODO: This delay is a workaround and should be addressed in another way.
// This is ugly but if we hide the content too early then it won't be hidden for some reason.
// Current guess is that the foundry search filter is doing something.
// Adding a delay here so that we hide the content. This will fail on slow computers/network...
setTimeout(() => {
applyCompendiumFilter();
}, 250);
return false;
}
}
static updateCompendium(pack, documents, options, userId) {
documents.forEach((document) => {
const inc_reference = document?.system?.source_reference?.source?.trim();
if (!!inc_reference) {
const references = game.settings.get(CONFIG.l5r5e.namespace, "all-compendium-references");
if (!references.includes(inc_reference)) {
references.push(inc_reference);
game.settings.set(CONFIG.l5r5e.namespace, "all-compendium-references", references);
}
}
});
}
/** /**
* DiceSoNice - Add L5R DicePresets * DiceSoNice - Add L5R DicePresets
*/ */

View File

@@ -90,12 +90,12 @@ export class AdvancementSheetL5r5e extends ItemSheetL5r5e {
// Modify image to reflect choice // Modify image to reflect choice
if (newChoice.ring) { if (newChoice.ring) {
name = game.i18n.localize(`l5r5e.rings.${newChoice.ring}`) + "+1"; name = game.i18n.localize(`l5r5e.rings.${newChoice.ring}`) + "+1";
img = `systems/l5r5e/assets/icons/rings/${newChoice.ring}.svg`; img = `systems/l5rx-chiaroscuro/assets/icons/rings/${newChoice.ring}.svg`;
} else if (newChoice.skill) { } else if (newChoice.skill) {
name = name =
game.i18n.localize(`l5r5e.skills.${CONFIG.l5r5e.skills.get(newChoice.skill)}.${newChoice.skill}`) + game.i18n.localize(`l5r5e.skills.${CONFIG.l5r5e.skills.get(newChoice.skill)}.${newChoice.skill}`) +
"+1"; "+1";
img = `systems/l5r5e/assets/dices/default/skill_blank.svg`; img = `systems/l5rx-chiaroscuro/assets/dices/default/skill_blank.svg`;
} }
// Object embed in actor ? // Object embed in actor ?
@@ -149,5 +149,8 @@ export class AdvancementSheetL5r5e extends ItemSheetL5r5e {
xp_used: xp_used, xp_used: xp_used,
}, },
}); });
// Re-render sheet
this.render(true);
} }
} }

View File

@@ -0,0 +1,44 @@
import { BaseItemSheetL5r5e } from "./base-item-sheet.js";
/**
* Sheet for Arcane items (Chiaroscuro).
* @extends {BaseItemSheetL5r5e}
*/
export class ArcaneSheetL5r5e extends BaseItemSheetL5r5e {
/** @override */
static get defaultOptions() {
return foundry.utils.mergeObject(super.defaultOptions, {
classes: ["l5r5e", "sheet", "arcane"],
template: CONFIG.l5r5e.paths.templates + "items/arcane/arcane-sheet.html",
tabs: [{ navSelector: ".sheet-tabs", contentSelector: ".sheet-body", initial: "attributes" }],
});
}
/** @override */
async getData(options = {}) {
const sheetData = await super.getData(options);
// Convert application array to comma-separated string for display
const app = sheetData.data.system.application;
sheetData.data.system.applicationDisplay = Array.isArray(app) ? app.join(", ") : (app ?? "");
sheetData.data.enrichedHtml = {
description: await foundry.applications.ux.TextEditor.implementation.enrichHTML(
sheetData.data.system.description ?? "",
{ async: true }
),
};
return sheetData;
}
/** @override */
async _updateObject(event, formData) {
// Convert comma-separated application string back to array
const raw = formData["system.applicationDisplay"] ?? "";
formData["system.application"] = raw.split(",").map((s) => s.trim()).filter(Boolean);
delete formData["system.applicationDisplay"];
return super._updateObject(event, formData);
}
}

View File

@@ -11,4 +11,16 @@ export class ArmorSheetL5r5e extends ItemSheetL5r5e {
template: CONFIG.l5r5e.paths.templates + "items/armor/armor-sheet.html", template: CONFIG.l5r5e.paths.templates + "items/armor/armor-sheet.html",
}); });
} }
/** @override */
async getData(options = {}) {
const sheetData = await super.getData(options);
const catObj = game.l5r5e.HelpersL5r5e.getLocalizedRawObject("chiaroscuro.armor.categories") ?? {};
sheetData.data.armorCategories = Object.entries(catObj)
.filter(([k]) => k !== "label")
.map(([id, label]) => ({ id, label }));
return sheetData;
}
} }

View File

@@ -0,0 +1,30 @@
import { BaseItemSheetL5r5e } from "./base-item-sheet.js";
/**
* Sheet for État items (Chiaroscuro).
* @extends {BaseItemSheetL5r5e}
*/
export class EtatSheetL5r5e extends BaseItemSheetL5r5e {
/** @override */
static get defaultOptions() {
return foundry.utils.mergeObject(super.defaultOptions, {
classes: ["l5r5e", "sheet", "etat"],
template: CONFIG.l5r5e.paths.templates + "items/etat/etat-sheet.html",
tabs: [{ navSelector: ".sheet-tabs", contentSelector: ".sheet-body", initial: "attributes" }],
});
}
/** @override */
async getData(options = {}) {
const sheetData = await super.getData(options);
sheetData.data.enrichedHtml = {
description: await foundry.applications.ux.TextEditor.implementation.enrichHTML(
sheetData.data.system.description ?? "",
{ async: true }
),
};
return sheetData;
}
}

View File

@@ -50,7 +50,7 @@ export class ItemSheetL5r5e extends BaseItemSheetL5r5e {
id: property.id, id: property.id,
name: property.name, name: property.name,
type: "property", type: "property",
img: "systems/l5r5e/assets/icons/items/property.svg", img: "systems/l5rx-chiaroscuro/assets/icons/items/property.svg",
removed: true, removed: true,
}; };
})); }));

View File

@@ -0,0 +1,35 @@
import { BaseItemSheetL5r5e } from "./base-item-sheet.js";
/**
* Sheet for Mystère items (Chiaroscuro).
* @extends {BaseItemSheetL5r5e}
*/
export class MystereSheetL5r5e extends BaseItemSheetL5r5e {
/** @override */
static get defaultOptions() {
return foundry.utils.mergeObject(super.defaultOptions, {
classes: ["l5r5e", "sheet", "mystere"],
template: CONFIG.l5r5e.paths.templates + "items/mystere/mystere-sheet.html",
tabs: [{ navSelector: ".sheet-tabs", contentSelector: ".sheet-body", initial: "attributes" }],
});
}
/** @override */
async getData(options = {}) {
const sheetData = await super.getData(options);
sheetData.data.mystereTypes = [
{ id: "mineur", label: game.i18n.localize("chiaroscuro.mystere.mineur") },
{ id: "majeur", label: game.i18n.localize("chiaroscuro.mystere.majeur") },
];
sheetData.data.enrichedHtml = {
description: await foundry.applications.ux.TextEditor.implementation.enrichHTML(
sheetData.data.system.description ?? "",
{ async: true }
),
};
return sheetData;
}
}

View File

@@ -17,12 +17,27 @@ export class TechniqueSheetL5r5e extends ItemSheetL5r5e {
const sheetData = await super.getData(options); const sheetData = await super.getData(options);
// List all available techniques type // List all available techniques type
const types = ["core", "school", "title"]; const types = ["core", "school", "title", "chiaroscuro"];
if (game.settings.get(CONFIG.l5r5e.namespace, "techniques-customs")) { if (game.settings.get(CONFIG.l5r5e.namespace, "techniques-customs")) {
types.push("custom"); types.push("custom");
} }
sheetData.data.techniquesList = game.l5r5e.HelpersL5r5e.getTechniquesList({ types }); sheetData.data.techniquesList = game.l5r5e.HelpersL5r5e.getTechniquesList({ types });
// Invocation sub-type fields (visible only for mot_invocation)
sheetData.data.isMotInvocation = sheetData.data.system.technique_type === "mot_invocation";
sheetData.data.invocationTypes = [
{ id: "general", label: game.i18n.localize("chiaroscuro.technique.invocation_types.general") },
{ id: "neutre", label: game.i18n.localize("chiaroscuro.technique.invocation_types.neutre") },
{ id: "precis", label: game.i18n.localize("chiaroscuro.technique.invocation_types.precis") },
];
sheetData.data.modeInvocationValues = [
{ id: "-3", label: "-3" },
{ id: "0", label: "0" },
{ id: "3", label: "+3" },
];
// Convert mode_invocation to string for selectOptions matching
sheetData.data.system.mode_invocation_str = String(sheetData.data.system.mode_invocation ?? 0);
// Sanitize Difficulty and Skill list // Sanitize Difficulty and Skill list
sheetData.data.system.difficulty = TechniqueSheetL5r5e.formatDifficulty(sheetData.data.system.difficulty); sheetData.data.system.difficulty = TechniqueSheetL5r5e.formatDifficulty(sheetData.data.system.difficulty);
sheetData.data.system.skill = TechniqueSheetL5r5e.translateSkillsList( sheetData.data.system.skill = TechniqueSheetL5r5e.translateSkillsList(
@@ -55,6 +70,12 @@ export class TechniqueSheetL5r5e extends ItemSheetL5r5e {
TechniqueSheetL5r5e.translateSkillsList(formData["system.skill"].split(","), true) TechniqueSheetL5r5e.translateSkillsList(formData["system.skill"].split(","), true)
).join(","); ).join(",");
// Convert mode_invocation_str back to number
if ("system.mode_invocation_str" in formData) {
formData["system.mode_invocation"] = parseInt(formData["system.mode_invocation_str"] ?? "0", 10);
delete formData["system.mode_invocation_str"];
}
return super._updateObject(event, formData); return super._updateObject(event, formData);
} }

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