Compare commits

..

52 Commits

Author SHA1 Message Date
Vlyan
f57ebb0ccd Fix css for peculiarity (tab removed) 2021-06-02 18:30:10 +02:00
Vlyan
b1a1430114 Added a commonListeners in helper to avoid repetitions
Added a "compendium-link" listener class to open compendium folder in JournalEntries
2021-06-02 15:05:50 +02:00
Vlyan
aeec63dcc4 Moved Notes for NPC (uniformized with PC) 2021-06-02 14:15:12 +02:00
Vlyan
bed3f2ac4f Fixed css double class on exp
Added cap icon in title and fixed the column order
2021-06-02 09:00:24 +02:00
Mandar
8c961f856d Fix for release 0.8.x
Limited profil img
Bond type
Html table fix
Social tab grid
2021-06-01 19:40:42 +02:00
Vlyan
fd672d7bad QoL DiceSoNice 2s delay for RnK
Fix Properties translation not updating
Fixed a error if no combat active on initiative roll
2021-06-01 13:47:29 +02:00
Vlyan
3aded2f850 Fix for new version of DiceSoNice
Fix for ninjUtsu tag
2021-05-31 22:08:38 +02:00
Vlyan
3c21fd3ff1 Added migration for old ChatMessage 2021-05-30 11:16:13 +02:00
Mandar
4d2423fc27 Fix for pattern and title 2021-05-30 01:33:38 +02:00
Vlyan
cf603de1e8 Fix for displayed advancement sum, and removed "tfoot" class (too big) 2021-05-29 19:11:23 +02:00
Vlyan
5c1f2fdbd9 Fix specificity always displayed in skill tab. 2021-05-29 19:02:05 +02:00
Vlyan
447c738796 Fix tab errors 2021-05-29 16:36:39 +02:00
Mandar
5ca8d800fc Style for new items bond/title + fix XP table 2021-05-29 15:59:32 +02:00
Mandar
a5011caf9c Update styles for 0.8.x sheets 2021-05-29 13:49:36 +02:00
Vlyan
64ca1abd8b - Fix on self item dropped in own sheet: do not add qty 2021-05-29 13:34:47 +02:00
Vlyan
a051bf281b - added Number of items and toggle state in intem category 2021-05-29 13:21:24 +02:00
Mandar
b7195484e1 Note npc fix 2021-05-29 12:40:05 +02:00
Mandar
9501f482f2 Update actor and pnj sheets for 0.8.x 2021-05-29 12:15:01 +02:00
Vlyan
4961d3bba3 - Update items embed permissions on add
- hide the + on title sheet if non editable
2021-05-28 16:11:09 +02:00
Vlyan
1ec3b5700d -Item embed items generate new ids on drop in actor
-Ignore the drop of already owned item in same sheet
2021-05-28 10:37:37 +02:00
Vlyan
127417a554 updated the changelog and readme 2021-05-26 16:43:46 +02:00
Vlyan
b883689b63 Added a "description" field on the PC/NPC sheet, displayed in limited view 2021-05-26 13:55:39 +02:00
Vlyan
c82a3324d8 Removed social "titles" field 2021-05-25 18:58:05 +02:00
Vlyan
fcb3f2b58d Working on 0.8.x
- Xp spent curriculum/total for titles
2021-05-25 17:08:49 +02:00
Vlyan
a62781ba69 Working on 0.8.x
- Added hook on preCreateChatMessage for the inlineRoll/chatmessage bug
2021-05-23 20:29:16 +02:00
Vlyan
286ee72c9f Working on 0.8.x
- Advancement bonus management for onDrop and delete
2021-05-22 23:33:24 +02:00
Vlyan
f8afea9513 Working on 0.8.x
- Showing titles (title_ability) in techniques pc/npc
2021-05-22 23:12:54 +02:00
Vlyan
90ccfd1d68 Working on 0.8.x
- Finished the dialog for add new item on title and other advancements
- some documentation update
2021-05-22 22:10:54 +02:00
Vlyan
53f04e6cef Working on 0.8.x
- Title's Advancements are now reflected on actor
- Migration update
2021-05-22 17:20:17 +02:00
Vlyan
4f9b72c63f Working on 0.8.x
- Working on title
- Added property update/delete for item patterns
2021-05-21 14:12:14 +02:00
Vlyan
4350ea25ee Working on 0.8.x
- some fix for 0.8.3, and working on titles
2021-05-13 13:07:27 +02:00
Vlyan
cda02bd8c7 Working on 0.8.x
- NPC with all ring on strengths/weaknesses (CSS TODO).
- Removed Custom tech "Links" as they are in fact "Bonds" and need more work.
- Added Bonds, SignatureScroll, ItemPatterns and working on titles
2021-05-09 14:43:46 +02:00
Vlyan
0bef6afc66 Working on 0.8.x
- NPC with all ring on strengths/weaknesses (CSS TODO).
- Removed Custom tech "Links" as they are in fact "Bonds" and need more work.
2021-05-04 19:19:11 +02:00
Vlyan
209c22996a Working on 0.8.x
- Fixed initiative roll for actor sheet
2021-05-04 18:14:40 +02:00
Vlyan
c2d2dbb9fe Working on 0.8.x
- entities -> contents
- RnK button black if no action left
2021-05-03 19:34:30 +02:00
Vlyan
93cfe5bb86 Working on 0.8.x
-dot separator in settings
-mergeObject ns
-added a option to enable/disable custom techs
-removed "foundry-pc-types" as it was absolutely obsolete
-fixed some roll errors (_rolled -> _evaluated)
2021-04-30 17:20:34 +02:00
Vlyan
df86ba81e7 Working on 0.8.x - owner -> isOwner 2021-04-24 22:01:31 +02:00
Vlyan
a27766a280 Merge branch 'dev' into 0.8_dev 2021-04-24 21:48:19 +02:00
Vlyan
ac90c99dc2 Merge branch 'dev' into 'dev'
Fix rnkMessage not passing on actor object for NPCs

See merge request teaml5r/l5r5e!7
2021-04-24 19:47:49 +00:00
Vlyan
b6f3d42fa2 Working on 0.8.x - Character sheets related 2021-04-24 17:16:52 +02:00
Marco Braga
35f61dac84 Fixed keep limit position 2021-04-23 11:34:41 +02:00
Marco Braga
62f350f4a8 Show keep limit in RnK 2021-04-23 11:30:26 +02:00
Marco Braga
7943d38e87 Fix rnkMessage not passing on actor object for NPCs 2021-04-22 21:59:36 +02:00
Vlyan
80907c8a01 system :d (yeah again) 2021-04-03 18:45:30 +02:00
Vlyan
f3999af8b0 Changelog :d 2021-04-03 18:44:48 +02:00
Vlyan
ef238dd683 Some fix on compendium 2021-04-03 18:38:27 +02:00
Vlyan
5c141d642d Adding Link and Specificity custom types to Techniques. 2021-04-03 18:32:05 +02:00
Vlyan
2500877251 Mantis compendium update + some minor fix 2021-03-27 13:54:08 +01:00
Vlyan
9a25e96e1f Added Mantis clan compendium 2021-03-27 13:54:08 +01:00
Mandar
676898117a Fix Chat texarea and change font on Nav 2021-03-13 02:56:18 +01:00
Mandar
d043949b0f Small chat dice fix 2021-03-02 02:27:01 +01:00
Alejandro Barranquero
035f982d7f Update es-es.json 2021-02-18 13:16:27 +01:00
158 changed files with 5248 additions and 11453 deletions

View File

@@ -28,6 +28,7 @@ module.exports = {
"no-plusplus": "off",
},
globals: {
foundry: "readonly",
AudioHelper: "readonly",
Collection: "readonly",
Hooks: "readonly",

5
.gitignore vendored
View File

@@ -6,4 +6,7 @@ node_modules
.vscode
# lint
.eslintcache
.eslintcache
# Foundry Lock files
system/l5r5e.lock

View File

@@ -1,5 +1,30 @@
# Changelog
## 1.3.0 - Foundry 0.8 Compatibility
__! Be certain to carefully back up any critical user data before installing this update !__
- Updated the System to the new version of Foundry VTT (a lot of things broke).
- NPC can now have strengths/weaknesses with all rings.
- Added "Title", "Bond", "Signature Scroll" and "Item Pattern":
- The item types.
- Theirs compendiums entries.
- A new list in experience tab to not mess with school cursus.
- Item patterns :
- Can be dropped on another item to add the associated property.
- To change the linked property, drop any property on the item pattern sheet.
- Added an optional "Specificity" technique type to serve as a catch-all.
- Added Mantis clan compendium entries.
- Added a "Description" in PC/NPC sheet: this field is used in limited view ("description" are public, "notes" are private).
- PC/NPC : Removed the "titles" field in social.
- NPC : Moved the "note" field in social to gain some space, and uniformize with PC.
- Fix : rnkMessage not passing on actor object for NPCs (thanks to Bragma).
- Fix : The "Crescent Moon Style" technique rank from 4 to 2.
- Fix : Drop an advancement on a PC/NPC sheet now correctly add the bonus to the Actor (ex Air +1), and the same with remove.
- QoL : RnK button is now black in chat if no actions are left in roll (new messages only).
- QoL : Added symbols legend in RnK dialog as reminder.
- QoL : Added "(x Max)" display in RnK picker for max number of dice to keep (thanks to Bragma).
- QoL : When DiceSoNice is enabled, the display of the RnK dialog is delayed by 2s before show-up.
- Others minor optimizations (ex: 20q saving multiple item at once).
## 1.2.1 - Praised be Firefox
- Fix dice swap on firefox that overflowed on the top and bottom of the RnK dialog
- Fix new items list on firefox who deformed the sheets

View File

@@ -1,6 +1,9 @@
# Legend of the Five Rings (5th Edition) by [Edge Studio](https://edge-studio.net/)
![Banner Legend of the Five Rings](./l5rBan.jpg)
[![Forge Installs](https://img.shields.io/badge/dynamic/json?label=Forge%20Installs&query=package.installs&suffix=%25&url=https%3A%2F%2Fforge-vtt.com%2Fapi%2Fbazaar%2Fpackage%2Fl5r5e&colorB=4aa94a)](https://forge-vtt.com/bazaar#package=l5r5e)
[![Foundry Hub Endorsements](https://img.shields.io/endpoint?logoColor=white&url=https%3A%2F%2Fwww.foundryvtt-hub.com%2Fwp-json%2Fhubapi%2Fv1%2Fpackage%2Fl5r5e%2Fshield%2Fendorsements)](https://www.foundryvtt-hub.com/package/l5r5e/)
[![Foundry Hub Comments](https://img.shields.io/endpoint?logoColor=white&url=https%3A%2F%2Fwww.foundryvtt-hub.com%2Fwp-json%2Fhubapi%2Fv1%2Fpackage%2Fl5r5e%2Fshield%2Fcomments)](https://www.foundryvtt-hub.com/package/l5r5e/)
# English
@@ -12,8 +15,9 @@ This version is authorized by Edge Studio, all texts, images and copyrights are
> https://gitlab.com/teaml5r/l5r5e/-/raw/master/system/system.json
### Recommended modules
- Dice so Nice, for 3D dices : https://gitlab.com/riccisi/foundryvtt-dice-so-nice
- Search Anywhere : https://gitlab.com/riccisi/foundryvtt-search-anywhere (don't spent too much time searching the right technique)
- `Babele` required for non english compendium translation: https://gitlab.com/riccisi/foundryvtt-babele
- `Dice so Nice` for 3D dices : https://gitlab.com/riccisi/foundryvtt-dice-so-nice
- `Search Anywhere` https://gitlab.com/riccisi/foundryvtt-search-anywhere (don't spent too much time searching the right technique)
## Current L5R team (alphabetical order)
- Carter (compendiums, adventure adaptation)
@@ -51,8 +55,8 @@ La traduction du système fonctionne directement, cependant les compendiums néc
> https://gitlab.com/riccisi/foundryvtt-babele
### Modules recommandés
- Dice so Nice, pour avoir des dés 3D : https://gitlab.com/riccisi/foundryvtt-dice-so-nice
- Search Anywhere : https://gitlab.com/riccisi/foundryvtt-search-anywhere (pour ne pas perdre top de temps à chercher une technique)
- `Dice so Nice` pour avoir des dés 3D : https://gitlab.com/riccisi/foundryvtt-dice-so-nice
- `Search Anywhere` pour ne pas perdre top de temps à chercher une technique : https://gitlab.com/riccisi/foundryvtt-search-anywhere
## Nous rejoindre
@@ -78,7 +82,7 @@ Vous êtes libre de contribuer et proposer après fork des corrections, modifica
3. Limitez-vous si possible à une Feature par demande de Merge pour ne pas bloquer le processus.
Screens
# Screenshots
![FoundryVTT Connection](https://cdn.discordapp.com/attachments/659430710146498583/798684216551407666/unknown.png)
![FoundryVTT L5r5e Character and Roll](https://cdn.discordapp.com/attachments/659430710146498583/798686668361039882/unknown.png)
![FoundryVTT L5r5e Sheets](https://cdn.discordapp.com/attachments/659430710146498583/798686880974503946/unknown.png)

10158
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@@ -24,7 +24,6 @@
"eslint": "^7.15.0",
"eslint-config-prettier": "^6.15.0",
"eslint-plugin-prettier": "^3.1.4",
"foundry-pc-types": "gitlab:foundry-projects/foundry-pc/foundry-pc-types",
"gulp": "^4.0.2",
"gulp-autoprefixer": "^7.0.1",
"gulp-sass": "^4.1.0",

View File

@@ -0,0 +1,70 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!-- Generator: Adobe Illustrator 19.0.0, 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"
viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve">
<g>
<g>
<path d="M465.254,46.747C435.109,16.601,395.03,0,352.4,0s-82.709,16.602-112.854,46.747l-62.486,62.486
c-11.56,11.563-21.192,24.71-28.697,39.129c-14.424,7.508-27.572,17.141-39.132,28.7l-62.484,62.484
C16.601,269.691-0.001,309.77,0,352.401c0,42.63,16.602,82.708,46.746,112.852c30.141,30.141,70.219,46.742,112.851,46.746
c0.005,0,0.009,0,0.014,0c42.621,0,82.696-16.601,112.84-46.746l62.487-62.486c11.557-11.558,21.189-24.704,28.697-39.128
c14.426-7.509,27.574-17.142,39.134-28.702l62.484-62.484c30.146-30.144,46.748-70.224,46.747-112.854
C512,116.969,495.398,76.891,465.254,46.747z M313.725,381.554l-62.486,62.486c-24.48,24.479-57.017,37.96-91.627,37.958
c-0.002,0-0.01,0-0.012,0c-34.62-0.003-67.166-13.483-91.641-37.958C43.481,419.562,30,387.017,30,352.4
c-0.001-34.617,13.48-67.163,37.959-91.641l62.484-62.483c10.392-10.391,22.355-18.871,35.555-25.205
c17.357-8.33,36.764-12.732,56.122-12.732c19.257,0,38.566,4.36,55.836,12.609c13.261,6.334,25.296,14.856,35.769,25.327
c7.984,7.985,14.831,16.872,20.438,26.514l-11.795,11.795l-8.811,8.811c-0.994,0.994-2.045,1.909-3.138,2.759
c-5.795,4.511-12.877,6.964-20.339,6.964c-1.328,0-2.641-0.087-3.94-0.239c-6.29-0.74-12.183-3.237-17.087-7.266
c-0.006-0.005-0.013-0.011-0.019-0.017c-0.415-0.341-0.823-0.694-1.224-1.057c-0.057-0.051-0.11-0.107-0.167-0.159
c-0.35-0.322-0.697-0.648-1.035-0.986l-0.001-0.001c-0.065-0.064-0.13-0.129-0.196-0.192c-0.239-0.237-0.49-0.458-0.732-0.691
c-0.489-0.471-0.977-0.944-1.478-1.398c-0.308-0.277-0.626-0.539-0.938-0.81c-0.471-0.409-0.939-0.824-1.42-1.218
c-0.356-0.291-0.723-0.564-1.084-0.847c-0.452-0.354-0.899-0.714-1.359-1.055c-0.405-0.3-0.823-0.581-1.234-0.871
c-0.429-0.301-0.852-0.611-1.288-0.902c-0.456-0.304-0.923-0.587-1.386-0.878c-0.404-0.255-0.803-0.519-1.212-0.764
c-0.506-0.303-1.024-0.584-1.538-0.872c-0.378-0.212-0.75-0.434-1.131-0.638c-0.56-0.298-1.13-0.574-1.698-0.855
c-0.347-0.171-0.688-0.354-1.038-0.52c-0.613-0.289-1.235-0.554-1.857-0.823c-0.315-0.136-0.625-0.284-0.942-0.415
c-0.669-0.276-1.347-0.528-2.025-0.781c-0.278-0.104-0.552-0.219-0.832-0.319c-0.723-0.258-1.456-0.491-2.188-0.722
c-0.243-0.077-0.481-0.164-0.725-0.238c-0.79-0.239-1.589-0.453-2.39-0.661c-0.191-0.049-0.379-0.109-0.571-0.157
c-0.867-0.216-1.741-0.407-2.618-0.587c-0.131-0.027-0.259-0.061-0.39-0.087c-0.986-0.195-1.98-0.366-2.978-0.515
c-0.024-0.003-0.046-0.009-0.07-0.012c-3.074-0.454-6.203-0.686-9.368-0.686c-16.883,0-32.754,6.574-44.69,18.512l-62.316,62.317
c-11.938,11.939-18.512,27.81-18.512,44.691c0,16.881,6.574,32.752,18.51,44.688c11.938,11.939,27.81,18.513,44.691,18.512
c16.881-0.001,32.751-6.575,44.687-18.51l26.674-26.673c0.593,0.235,1.191,0.456,1.787,0.683c0.3,0.114,0.599,0.23,0.899,0.343
c1.21,0.454,2.425,0.893,3.646,1.317c0.088,0.031,0.175,0.064,0.263,0.094c2.756,0.952,5.54,1.827,8.348,2.628
c0.093,0.026,0.186,0.051,0.279,0.078c1.28,0.363,2.564,0.708,3.853,1.04c0.188,0.048,0.377,0.095,0.566,0.142
c1.233,0.312,2.47,0.609,3.71,0.893c0.166,0.038,0.331,0.076,0.497,0.113c1.367,0.308,2.738,0.599,4.114,0.871
c0.009,0.001,0.019,0.003,0.028,0.005c10.194,2.012,20.586,3.05,30.965,3.05c8.614-0.001,17.238-0.71,25.747-2.101
C315.024,380.24,314.378,380.9,313.725,381.554z M309.008,156.041l19.919-19.918c6.27-6.27,14.607-9.724,23.476-9.724
c8.868,0,17.204,3.453,23.475,9.725c6.271,6.27,9.725,14.606,9.725,23.474s-3.454,17.205-9.725,23.476l-19.919,19.917
c-6.052-9.309-13.08-17.986-21.022-25.93C326.996,169.122,318.319,162.095,309.008,156.041z M202.993,355.959l-19.919,19.918
c-6.27,6.27-14.607,9.723-23.476,9.723c-8.867,0.001-17.204-3.453-23.476-9.725c-6.271-6.27-9.724-14.607-9.724-23.474
c0-8.869,3.454-17.206,9.726-23.478l19.916-19.917c6.054,9.314,13.082,17.991,21.022,25.933
C185.004,342.88,193.682,349.906,202.993,355.959z M444.041,251.24l-62.484,62.484c-10.391,10.39-22.353,18.87-35.554,25.205
c-17.357,8.329-36.763,12.731-56.119,12.731c-19.259-0.001-38.569-4.361-55.843-12.61c-13.257-6.332-25.291-14.853-35.767-25.326
c-7.98-7.98-14.827-16.868-20.436-26.514l20.602-20.604c6.271-6.271,14.608-9.724,23.477-9.724c5.496,0,10.787,1.329,15.509,3.83
c0.029,0.016,0.06,0.029,0.088,0.044c0.382,0.204,0.757,0.421,1.131,0.64c0.092,0.054,0.187,0.104,0.279,0.159
c0.299,0.179,0.591,0.371,0.885,0.559c0.163,0.105,0.33,0.204,0.491,0.311c0.22,0.147,0.433,0.305,0.649,0.457
c0.229,0.161,0.461,0.317,0.687,0.484c0.146,0.108,0.288,0.226,0.432,0.337c0.29,0.222,0.581,0.442,0.863,0.674
c0.077,0.063,0.15,0.131,0.227,0.195c0.346,0.29,0.69,0.582,1.026,0.887c0.007,0.006,0.014,0.014,0.021,0.02
c0.4,0.364,0.794,0.738,1.179,1.123c0.068,0.068,0.136,0.135,0.206,0.202c0.365,0.362,0.745,0.703,1.117,1.055
c0.368,0.348,0.729,0.705,1.104,1.043c0.376,0.339,0.765,0.659,1.147,0.988c0.407,0.35,0.809,0.709,1.223,1.048
c0.365,0.298,0.742,0.577,1.112,0.867c0.446,0.348,0.887,0.705,1.341,1.04c0.354,0.262,0.72,0.504,1.078,0.758
c0.483,0.341,0.961,0.69,1.452,1.017c0.345,0.229,0.7,0.441,1.048,0.663c0.517,0.33,1.031,0.666,1.557,0.98
c0.333,0.199,0.676,0.38,1.013,0.573c0.552,0.315,1.1,0.637,1.661,0.935c0.326,0.174,0.661,0.33,0.99,0.498
c0.581,0.296,1.16,0.598,1.749,0.875c0.322,0.152,0.652,0.286,0.977,0.432c0.605,0.272,1.208,0.55,1.823,0.803
c0.322,0.133,0.65,0.248,0.975,0.375c0.625,0.246,1.249,0.496,1.882,0.721c0.331,0.118,0.669,0.218,1.002,0.33
c0.634,0.214,1.265,0.432,1.906,0.626c0.362,0.109,0.731,0.199,1.096,0.302c0.619,0.174,1.236,0.355,1.861,0.511
c0.412,0.102,0.83,0.184,1.244,0.278c0.585,0.133,1.167,0.275,1.757,0.391c0.504,0.1,1.014,0.175,1.521,0.263
c0.507,0.087,1.01,0.186,1.52,0.261c0.643,0.095,1.293,0.163,1.941,0.238c0.38,0.044,0.756,0.102,1.137,0.139
c2.066,0.202,4.154,0.304,6.257,0.304c16.882,0,32.753-6.575,44.688-18.512l28.423-28.421c0.005-0.005,0.01-0.012,0.016-0.017
l33.881-33.88c11.938-11.938,18.512-27.809,18.512-44.69c0-16.881-6.575-32.751-18.511-44.687
c-11.936-11.938-27.807-18.512-44.689-18.512c-16.882,0-32.753,6.574-44.689,18.511l-26.674,26.673
c-0.533-0.211-1.072-0.409-1.608-0.615c-0.392-0.15-0.782-0.302-1.175-0.449c-1.067-0.399-2.14-0.786-3.217-1.163
c-0.227-0.079-0.451-0.163-0.678-0.241c-2.697-0.93-5.421-1.787-8.168-2.572c-0.218-0.063-0.438-0.121-0.656-0.183
c-1.146-0.322-2.294-0.633-3.448-0.93c-0.29-0.075-0.58-0.146-0.871-0.22c-1.118-0.282-2.239-0.551-3.363-0.809
c-0.265-0.061-0.53-0.122-0.795-0.181c-1.237-0.277-2.478-0.54-3.722-0.788c-0.131-0.026-0.262-0.054-0.393-0.08
c-5.761-1.133-11.585-1.949-17.435-2.447c-0.047-0.004-0.095-0.008-0.142-0.012c-4.42-0.372-8.854-0.571-13.286-0.571
c-8.614,0-17.237,0.709-25.747,2.1c0.639-0.667,1.286-1.327,1.939-1.982l62.484-62.484c24.479-24.479,57.024-37.96,91.641-37.96
c34.616,0,67.162,13.481,91.641,37.96C468.519,92.439,482,124.983,482,159.599C482.001,194.216,468.52,226.761,444.041,251.24z"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 7.0 KiB

View File

@@ -0,0 +1,16 @@
<?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" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 47.8 47.8" style="enable-background:new 0 0 47.8 47.8;" xml:space="preserve">
<style type="text/css">
.st0{fill:#FFFFFF;}
</style>
<g>
<path class="st0" d="M23.9,1.8c-12.2,0-22.1,9.9-22.1,22.1S11.7,46,23.9,46S46,36.1,46,23.9S36.1,1.8,23.9,1.8z M24.8,36.9
c-0.2,0.1-0.3,0.1-0.5,0.1c-0.2,0-0.3,0.1-0.5,0.1c-1.5,0-2.8-1.2-2.8-2.8s1.2-2.8,2.8-2.8c0.2,0,0.3,0,0.5,0
c0.2,0,0.3,0.1,0.5,0.1c1,0.4,1.9,1.4,1.9,2.6C26.7,35.4,25.8,36.5,24.8,36.9z M28.2,23c-0.4,0.2-0.6,0.4-1,0.6
c-1-0.4-2.2-0.5-3.3-0.5c-6.2,0-11.3,5.1-11.3,11.3c0,3.9,2,7.4,5.1,9.4C9.3,41,3.2,33.2,3.2,23.9c0-11.5,9.3-20.7,20.7-20.7
c5.7,0,10.4,4.6,10.4,10.4C34.3,17.7,31.8,21.3,28.2,23z M27.6,13.5c0,2-1.7,3.7-3.7,3.7s-3.7-1.7-3.7-3.7s1.7-3.7,3.7-3.7
S27.6,11.5,27.6,13.5z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.0 KiB

View File

@@ -0,0 +1,541 @@
<?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" x="0px" y="0px"
viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve">
<style type="text/css">
.st0{display:none;}
.st1{display:inline;}
.st2{fill:#FFFFFF;}
.st3{display:inline;fill:none;}
.st4{font-family:'L5R-Icons';}
.st5{font-size:480px;}
.st6{fill:#699678;}
.st7{fill:#917896;}
.st8{fill:#9B7350;}
.st9{fill:#5F919B;}
.st10{fill:#4B4641;}
.st11{fill:#A75B58;}
.st12{fill:#68829B;}
.st13{fill:#009933;}
.st14{fill:#CC3300;}
.st15{fill:#0099FF;}
.st16{fill:#FF6600;}
.st17{fill:#FF0000;}
.st18{fill:none;}
.st19{fill:#78FFB4;}
.st20{display:inline;fill:#785A87;}
.st21{display:inline;fill:#9B463C;}
.st22{display:inline;fill:#B9784B;}
.st23{display:inline;fill:#2D551E;}
.st24{display:inline;fill:#A08C50;}
.st25{display:inline;fill:#55826E;}
.st26{display:inline;fill:#82828C;}
.st27{display:inline;fill:#789191;}
</style>
<g id="Fond" class="st0">
<g transform="translate(0,0)" class="st1">
<path class="st2" d="M249.9,18.6c-81.4,0-231.4,155.8-171.7,300.7c8,25.3,27.9,50.3,49.2,77.1c24.5,30.6,51.6,63.2,68.7,96.9h20.6
c-18.1-39.8-48.6-75.9-74.6-108.5c-27.4-34.3-48.8-65.3-48.8-88c0-3.6,0.4-7.3,1.1-11.1l-0.1,0c0.3-1.2,0.6-2.5,0.9-3.7
c0.9-3.8,2.1-7.6,3.7-11.4c23.1-61.4,94.2-106.3,146.6-135l3.6-2l3.9,1.3c60.9,20.9,131.3,66.8,156,135.8c1.1,3,2.1,6,2.9,9
c0.4,1.4,0.8,2.8,1.2,4.3l-0.2,0c1.1,5.1,1.7,10.2,1.7,15.2v0c0,22.3-24.4,53.5-55,87.5c-29.1,32.3-62.3,67.6-80,106.6H300
c16.8-32.1,46.2-64,73.3-94.1c23.1-25.7,45.3-50,54.9-74.9C481,200.2,329,18.7,249.9,18.6L249.9,18.6z M250.7,154
c-38.7,21.5-85,52.2-113.6,88.2c9.7,83,59,146.2,118.3,146.2c59.1,0,108.2-62.7,118.2-145.3C344.7,200.9,295.6,170.1,250.7,154
L250.7,154z M192.5,237c0.8,0,1.6,0,2.4,0c13,0.1,26,2.7,39.1,7.4c-16.8,40.6-59,42-78.1,0C168.1,239.6,180.3,237.2,192.5,237z
M317.4,237c13-0.1,26,2.3,39.1,7.4c-19.1,42-61.3,40.6-78.1,0C291.3,239.7,304.4,237.1,317.4,237L317.4,237z M204.6,512l0.1,0.3
h86.8l0.1-0.3L204.6,512L204.6,512z"/>
</g>
<rect y="18.6" class="st3" width="512" height="493.4"/>
<text transform="matrix(1 0 0 1 16 468.6476)" class="st1 st4 st5"></text>
</g>
<g id="Elements" class="st0">
<g id="Earth" class="st1">
<g>
<path class="st6" d="M31,258.6c0-30.9,5.9-60.2,17.8-87.7c11.6-27.2,27.6-51,48-71.5c20.5-20.5,44.3-36.5,71.5-48
c27.5-11.9,56.7-17.8,87.7-17.8s60.2,5.9,87.7,17.8c27.2,11.6,51,27.6,71.5,48c20.5,20.5,36.5,44.3,48,71.5
c11.9,27.5,17.8,56.7,17.8,87.7s-5.9,60.2-17.8,87.7c-11.6,27.2-27.6,51-48,71.5c-20.5,20.5-44.3,36.5-71.5,48
c-27.5,11.9-56.7,17.8-87.7,17.8s-60.2-5.9-87.7-17.8c-27.2-11.6-51-27.6-71.5-48c-20.5-20.5-36.5-44.3-48-71.5
C36.9,318.8,31,289.6,31,258.6z M438.3,181.8c-10.3-24.1-24.5-45.1-42.4-63c-18-18-39-32.1-63-42.4C308.8,66,283.2,60.8,256,60.8
s-52.8,5.2-76.9,15.5c-24.1,10.3-45.1,24.5-63,42.4c-18,18-32.1,39-42.4,63c-10.3,24.1-15.5,49.7-15.5,76.9
c0,5.3,0.2,10.6,0.7,15.9c0.5,5.3,1,10.6,1.6,15.9l4.2-0.5c5.9-4.4,11.4-9.3,16.4-14.8c5-5.5,9.7-11.3,14.1-17.6
c5.3,0.9,10.8,0.8,16.4-0.5c5.6-1.2,10.6-4.8,15-10.8l55.8-75.9l16.4,22l75-83.9l35.2,36.6c4.1,4.4,7.4,9.4,10.1,15
c2.7,5.6,6,10.8,10.1,15.5c5.3,6.3,10.9,12.4,16.6,18.5c5.8,6.1,12.1,11.6,19,16.6l8.4,6.6l21.1-12.2
c7.2,17.5,15.2,34.7,24.1,51.6s18.7,33.6,29.3,50.2c2.2-7.8,3.8-15.7,4.7-23.7s1.4-16.2,1.4-24.6
C453.8,231.5,448.7,205.8,438.3,181.8z M162.3,231.9l37-19.2l-15.9-19.2L162.3,231.9z M313.7,234.3l28.6,47.3
c5-4.7,9.6-10.5,13.8-17.3c4.2-6.9,8.2-14.5,12-23L288.3,156l-34.7,227.3L313.7,234.3z M405.1,277.4c0.9-2.8,2.3-5.6,4.2-8.4
l-20.6-37h-1.9l6.1,75c3.1-2.2,5.6-5.2,7.5-9.1c1.9-3.9,3-7.9,3.3-12C403.7,283,404.1,280.2,405.1,277.4z"/>
</g>
</g>
<g id="Air">
<g class="st1">
<path class="st7" d="M31,258.6c0-30.9,5.9-60.2,17.8-87.7c11.6-27.2,27.6-50.9,48-71.3c20.5-20.3,44.3-36.4,71.5-48.3
c27.5-11.9,56.7-17.8,87.7-17.8s60.2,5.9,87.7,17.8c27.2,11.9,51,28,71.5,48.3c20.5,20.3,36.5,44.1,48,71.3
c11.9,27.5,17.8,56.7,17.8,87.7s-5.9,60.2-17.8,87.7c-11.6,27.2-27.6,51-48,71.5c-20.5,20.5-44.3,36.5-71.5,48
c-27.5,11.9-56.7,17.8-87.7,17.8s-60.2-5.9-87.7-17.8c-27.2-11.6-51-27.6-71.5-48c-20.5-20.5-36.5-44.3-48-71.5
C36.9,318.8,31,289.6,31,258.6z M138.8,314c-11.9-5.6-22.6-13.2-32.1-22.7c-9.5-9.5-17.7-21.2-24.6-34.9
c-7.2-13.7-13-29.8-17.3-48.3c-2.2,8.1-3.8,16.4-4.9,24.8c-1.1,8.4-1.6,17-1.6,25.8c0,3.1,0.1,6.2,0.2,9.1c0.2,3,0.4,5.9,0.7,8.7
C77.9,293,97,306,116.5,315.4c19.5,9.4,39.6,12.8,60.2,10.3C163,323.2,150.4,319.3,138.8,314z M443.3,194.7
c-7-20.2-16.8-38.5-29.3-55.1c-20.9-14.1-43.3-21.9-67-23.4c-23.8-1.6-46,1.4-66.8,8.9c-20.8,7.5-38.5,18.6-53.2,33.3
c-14.7,14.7-23.4,31.3-26.3,49.7c-1.6,10.9,3,21.6,13.6,31.9c10.6,10.3,21.4,15.6,32.3,15.9c8.4,0.3,16.5-3,24.1-9.8
c7.7-6.9,12-14.4,12.9-22.5c0.6-5.9-0.8-11.7-4.2-17.3c-3.4-5.6-8.9-9.4-16.4-11.3c-4.1-0.9-8.5-0.2-13.4,2.1
c-4.8,2.3-7.7,5.7-8.7,10.1c-1.3,4.7-1.1,8.4,0.5,11.3c1.6,2.8,4.2,4.2,8,4.2c3.4,0.3,6.3-0.8,8.7-3.3c2.3-2.5,0.5-5.9-5.4-10.3
c5.9-0.3,10.3,1.3,13.1,4.9c2.8,3.6,3.6,9.1,2.3,16.6c-0.6,4.1-3.4,7.2-8.4,9.4c-5,2.2-9.5,3-13.6,2.3
c-7.2-1.2-13.8-5.2-19.7-11.7c-5.9-6.6-8.9-13.4-8.9-20.6c0-9.4,3.8-18.8,11.3-28.1s15.9-14.4,25.3-15
c12.8-0.9,24.8,1.1,35.9,6.1c11.1,5,18.5,19.8,22.3,44.5c5.9-11.3,14.5-19.2,25.8-23.9s22.7-5.7,34.2-3
c11.6,2.7,22,9.3,31.4,19.9c9.1,10.3,14.2,25,15.5,44.1c0.9,12.2-1.7,23.9-8,35.2c-5.9,11.3-13.8,20.7-23.7,28.4
c-9.8,7.7-20.7,12.6-32.6,14.8c-11.9,2.5-23.1,0.9-33.8-4.7c2.5,20-0.9,35.9-10.3,47.8c-9.4,11.6-21.6,18.8-36.6,21.8
c-15,3-31.3,1.3-48.8-4.9c-17.2-6.2-32.3-17.3-45.5-33.3c-1.3-1.2-3.2-1.8-5.9-1.6c-2.7,0.2-4.6,1-5.9,2.6l-5.6,8.4
c-17.8-6.2-35.2-16.4-52.3-30.5c-17-14.1-33.8-30.9-50.4-50.6c3.8,23.8,11.3,45.9,22.5,66.6c11.6,20.6,26.1,38.5,43.6,53.7
c17.5,15.2,37.2,27,59.1,35.4c22.2,8.8,45.8,13.1,70.8,13.1c27.2,0,52.8-5.2,76.9-15.5c24.1-10.3,45.1-24.4,63-42.4
c18-18,32.1-39,42.4-63c10.3-24.1,15.5-49.7,15.5-76.9C453.8,236.1,450.3,214.8,443.3,194.7z M147.7,93.2
c-7.2,4.7-14.1,9.8-20.6,15.5s-12.8,11.7-18.8,18.3c-4.4,35.6-3.6,64.1,2.3,85.3c5.6,21.3,14.9,37.6,27.9,49
c13,11.4,28.8,18.8,47.6,22.3c18.4,3.4,38.1,5,59.1,4.7c-26.6-4.1-48.1-11.6-64.7-22.5c-16.3-10.9-28.1-24.8-35.4-41.5
c-7.3-16.7-10.5-36.2-9.6-58.4C136.2,143.7,140.2,119.4,147.7,93.2z M309.4,68.1c-10.9-3-22.2-5.1-33.8-6.3
C256,69,239.1,77.1,225.1,86.1c-13.8,9.4-24.8,19.8-33,31.4c-8.3,11.6-13.5,24.1-15.7,37.5c-2.5,13.8-2.2,28.4,0.9,44.1
c1.6-16.9,5.8-32.2,12.7-45.9c7.2-14.1,17.4-26.1,30.7-36.1c13.3-10,29.9-18.1,49.9-24.4c20-6.6,43.4-10.8,70.3-12.7
C330.8,75.1,320.4,71.1,309.4,68.1z M264,317.2c-3.1,2.8-5.2,6.1-6.1,9.8c-0.3,1.9,0.2,3.9,1.6,6.1c1.4,2.2,3,3.6,4.9,4.2
c1.2,0.3,2.6,0.2,4-0.5c1.4-0.6,2.4-1.4,3-2.3c0.6-0.9,1-1.9,1.2-2.8c0.2-0.9,0.1-1.7-0.2-2.3c-0.3-0.6-0.7-1.2-1.2-1.6
s-1-0.9-1.6-1.2c8.1-1.2,11.6,2.4,10.5,11c-1.1,8.6-6.5,14-16.2,16.2c-8.4,1.6-15-0.5-19.7-6.1s-7.2-12.2-7.5-19.7
c0-13.1,5.1-22,15.2-26.5c10.2-4.5,22.7-5.7,37.7-3.5c-13.1-10.9-26.3-14.2-39.4-9.8c-13.4,4.1-23.4,11.4-30,22
c-6.6,10.6-8,22-4.2,34.2s15.9,20.9,36.6,26.3c22.8,3.4,36.7-3.8,41.7-21.6c5-17.8-1.3-29.4-18.8-34.7
C271,313.5,267.1,314.4,264,317.2z M379,259.4c2-5.5,2.9-10.9,2.6-16.2c-0.3-4.4-1.7-8.6-4.2-12.7c-2.5-4.1-5.6-7.3-9.4-9.8
c-2.8-2.2-6.1-3.5-9.8-4s-7.3-0.2-10.8,0.7c-3.1,0.6-6,2-8.7,4c-2.7,2-4.5,4.6-5.4,7.7c-0.6,1.9-0.6,3.9,0,6.1
c0.6,2.2,1.6,4.1,2.8,5.6c1.6,1.3,3.5,2.1,5.9,2.6s4.5,0.4,6.3-0.2c1.2-0.3,2.4-1.1,3.5-2.3c1.1-1.2,1.6-2.5,1.6-3.8
c0.3-0.9,0.2-1.8-0.5-2.6c-0.6-0.8-1.4-1.5-2.3-2.1c-0.9-0.6-1.8-1.2-2.6-1.6c-0.8-0.5-1.6-0.9-2.6-1.2c0.3-1.2,1.7-2.1,4.2-2.6
c2.5-0.5,4.5-0.2,6.1,0.7c3.4,1.6,6.3,4.4,8.7,8.4c2.3,4.1,3,8,2.1,11.7c-1.6,5.3-5.2,9.7-10.8,13.1c-5.6,3.4-11.1,5.2-16.4,5.2
c-5.9,0-11.6-1.9-16.9-5.6c-5.3-3.8-9.2-8.9-11.7-15.5c-1.6,5.9-3.3,11.1-5.2,15.5c-1.9,4.4-4.1,7.7-6.6,9.8
c9.4,12.2,20.7,18.4,34,18.5c13.3,0.2,25.7-5.2,37.3-16.2C374.1,269.3,377,264.8,379,259.4z M389.1,227.7
c4.4,20.3,2.8,37.3-4.7,51.1c-7.5,13.8-22.8,23.4-45.9,29.1c11.9,3.1,23,2.2,33.3-2.8c10.3-5.3,18.4-12.3,24.4-21.1
c5.9-8.7,8.7-18.4,8.4-29.1C404,244.6,398.8,235.5,389.1,227.7z"/>
</g>
</g>
<g id="Fire">
<g class="st1">
<path class="st8" d="M31,258.6c0-30.9,5.9-60.2,17.8-87.7c11.6-27.2,27.6-51,48-71.5c20.5-20.5,44.3-36.5,71.5-48
c27.5-11.9,56.7-17.8,87.7-17.8s60.2,5.9,87.7,17.8c27.2,11.6,51,27.6,71.5,48c20.5,20.5,36.5,44.3,48,71.5
c11.9,27.5,17.8,56.7,17.8,87.7s-5.9,60.2-17.8,87.7c-11.6,27.2-27.6,51-48,71.5c-20.5,20.5-44.3,36.5-71.5,48
c-27.5,11.9-56.7,17.8-87.7,17.8s-60.2-5.9-87.7-17.8c-27.2-11.6-51-27.6-71.5-48c-20.5-20.5-36.5-44.3-48-71.5
C36.9,318.8,31,289.6,31,258.6z M370.4,384.7c0.3-3.1,1.4-5.3,3.3-6.6c2.8-2.5,4.7-5.4,5.6-8.7s1.4-7.4,1.4-12.4
c2.2,3.1,3.8,6.8,4.9,11c1.1,4.2,0.9,9.5-0.7,15.7c-0.9,2.2-0.6,3.8,0.9,4.7c1.6,0.9,3.3,0,5.2-2.8c6.6-10.3,9.7-20.7,9.4-31.2
c-0.3-10.5-3.3-20.9-8.9-31.2c-8.1-16.9-10.2-30.1-6.1-39.6c4.1-9.5,12.8-15.1,26.3-16.6c-13.1,9.1-18.2,18.2-15.2,27.4
c3,9.2,12,18.5,27,27.9c4.1-5.9,8.3-11.5,12.7-16.6c4.4-5.2,8.9-9.8,13.6-13.8l1.9-0.9c0.6-5.3,1.2-10.6,1.6-15.9
c0.5-5.3,0.7-10.8,0.7-16.4c0-27.2-5.2-52.8-15.5-76.9c-10.3-24.1-24.5-45.1-42.4-63c-18-18-39-32.1-63-42.4
C308.8,66,283.2,60.8,256,60.8s-52.8,5.2-76.9,15.5c-24.1,10.3-45.1,24.5-63,42.4c-18,18-32.1,39-42.4,63
c-10.3,24.1-15.5,49.7-15.5,76.9c0,21.9,3.4,42.7,10.1,62.6c6.7,19.8,16.2,38,28.4,54.6c1.6-0.3,3.4-0.5,5.4-0.5
c2,0,3.4-0.5,4-1.4c0.6-0.9,0.7-1.9,0.2-2.8s-0.5-1.7-0.2-2.3c2.5-4.4,6.3-8,11.5-10.8s10.1-4.4,14.8-4.7
c-5.6,5.9-9.4,11.6-11.3,17.1c-1.9,5.5-0.9,10.1,2.8,13.8l10.3,10.8c0.9-6.9,2.3-13.4,4.2-19.7c1.9-6.2,4.1-12.3,6.6-18.3
c0.9,5.9,2.4,11.8,4.5,17.6c2,5.8,3.4,11.6,4,17.6c10-1.2,14.9-6.6,14.8-16.2c-0.2-9.5-2.1-17.1-5.9-22.7l-6.6-10.3
c-10.3-16.6-19.1-36.4-26.3-59.5c-7.2-23.1,3.9-42,33.3-56.7c-9.7,9.4-14.6,18.7-14.8,27.9c-0.2,9.2,4.5,17.9,13.8,26
c2.2-12.8,6.2-20.3,12-22.5c5.8-2.2,8.2-15.3,7.3-39.4c6.2,5.3,9.8,13.7,10.8,25.1c0.9,11.4,4.4,18.4,10.3,20.9
c7.2-4.1,8.6-12.9,4.2-26.5c-4.4-13.6-9.8-26.6-16.4-39.1c-15-26.9-17.3-49.7-7-68.4c10.3-19.1,24.4-32.3,42.2-39.6
c17.8-7.3,35-7.7,51.6-1.2c16.6,6.3,23.4,21.3,20.6,45c-1.9-19.1-7.7-30-17.3-32.8c-9.7-2.5-18.1,0-25.3,7.5
c-7.2,7.5-10.8,18.8-10.8,33.8c0,14.7,8.9,30,26.7,45.9c10.6-2.8,16-8.4,16.2-16.9c0.2-8.4-0.4-15.9-1.6-22.5
c2.8,6.6,5.6,12.7,8.4,18.5c2.8,5.8,6.4,10.4,10.8,13.8c3.1,3.1,5.4,7.3,6.8,12.7c1.4,5.3,1.6,12,0.7,20.2l20.2,19.2
c4.1-2.8,6.7-6.2,8-10.1c1.2-3.9,0.6-8.4-1.9-13.4l-5.2-10.3c-5.9-11.9-8.1-23-6.6-33.5c1.6-10.5,10.2-15.7,25.8-15.7
c-10.9,8.1-16.1,15.6-15.5,22.5c0.6,6.9,3.1,13,7.5,18.3l13.1,15.9c9.1,10.6,15.3,22.7,18.8,36.1c3.4,13.4,0.2,29.1-9.8,46.9
c9.1,15.6,13,30.2,11.7,43.8c-1.3,13.6-6.6,26.3-15.9,38.2c-0.6,1.9-1.6,3.5-3,4.9s-2.3,3-2.6,4.9c-0.3,2.2-0.2,4.3,0.2,6.3
c0.5,2,1.2,4.1,2.1,6.3c0.3,0.6,0.7,1.4,1.2,2.3s1.2,1.4,2.1,1.4c1.2,0,2.3-0.8,3.3-2.3c0.9-1.6,1.7-3,2.3-4.2
C369.1,390.5,370.1,387.9,370.4,384.7z M301,408.6c0.3-7.5,3.8-13.7,10.3-18.8c8.4-6.6,15.7-14.3,21.8-23.2s8.2-17.1,6.3-24.6
c-1.3,3.4-3.2,5.6-5.9,6.6c-2.7,0.9-5.6,1.3-8.7,0.9l-10.8-0.9c-1.3,0-2-1.1-2.3-3.3c-0.3-2.2-0.2-3.9,0.5-5.2
c10.3-16.9,16.6-31.2,19-42.9s1-20.2-4-25.5c-1.3,5.3-4.1,11.1-8.7,17.3c-4.5,6.3-8.7,9.5-12.4,9.8h-7c-1.9,0-3.7-0.5-5.4-1.6
c-1.7-1.1-2.9-2.6-3.5-4.5c-4.4-15.3-10.9-28.5-19.7-39.6c-8.8-11.1-18-21.6-27.7-31.6c10,35.9,9.4,63.8-1.9,83.7
c-11.3,19.8-30,24.6-56.3,14.3c10,18.1,16.9,35.6,20.6,52.3c3.8,16.7-0.9,31.6-14.1,44.8c-0.3,0.3-0.6,0.5-0.9,0.7
c-0.3,0.2-0.8,0.2-1.4,0.2h-5.2c-0.9,0-1.9,0.2-2.8,0.7s-1.9,1-2.8,1.6c-0.6,0.6-1.2,1.3-1.6,2.1c-0.5,0.8-0.7,1.6-0.7,2.6
c-0.3,0.9-0.4,1.9-0.2,2.8c0.2,0.9,0.4,1.7,0.7,2.3c0.6,0.9,1.2,1.7,1.6,2.3c0.5,0.6,1,1.3,1.6,1.9c2.8,2.2,5.9,4.2,9.1,6.1
s6.6,3.1,10.1,3.8l8.9-2.3c-2.8-3.8-5.1-7.1-6.8-10.1c-1.7-3-2.6-5.1-2.6-6.3c1.9,0.6,3.9,1.9,6.1,3.8c2.2,1.9,4.5,4.1,7,6.6
l7.5-5.2c1.9-4.7,3.1-9.5,3.8-14.5c0.6-5,0-9.7-1.9-14.1l-7.5-17.8c-0.3-1.2-0.5-2.4-0.7-3.5c-0.2-1.1-0.1-2.3,0.2-3.5l13.1,17.8
c2.2,3.1,4.4,3.3,6.6,0.5c2.2-2.8,3.9-5.2,5.2-7c1.2-2.5,1.6-5.4,0.9-8.7c-0.6-3.3-1.4-6.3-2.3-9.1c-2.2-5.9-5.2-11.6-8.9-16.9
c-3.8-5.3-7.8-10.3-12.2-15c6.2,1.9,11.8,5.3,16.6,10.3c4.8,5,9.8,9.8,14.8,14.5c2.5,2.5,4.9,3.4,7.3,2.6
c2.3-0.8,2.7-2.9,1.2-6.3c-4.1-10.6-5.7-22.7-4.9-36.1c0.8-13.4,6-26.3,15.7-38.4c-0.3,7.2,0,16.5,0.9,27.9
c0.9,11.4,4.4,19.8,10.3,25.1c4.4,2.2,9.1,1.5,14.1-2.1c5-3.6,8.7-7.7,11.3-12.4c-5.9,17.2-8.2,33.9-6.8,50.2
c1.4,16.3-3.5,31.1-14.8,44.5c-5,5.6-4.8,10.7,0.5,15.2c5.3,4.5,10.6,4.1,15.9-1.2c-3.4,5.3-5.2,9.4-5.2,12.2s2.5,4.1,7.5,3.8
c2.8-0.9,5.5-2,8.2-3.3c2.7-1.2,5.2-2.7,7.7-4.2C305.5,426.8,300.7,416.1,301,408.6z"/>
</g>
</g>
<g id="Water">
<g class="st1">
<path class="st9" d="M31,258.6c0-30.9,5.9-60.2,17.8-87.7c11.6-27.2,27.6-51,48-71.5c20.5-20.5,44.3-36.5,71.5-48
c27.5-11.9,56.7-17.8,87.7-17.8s60.2,5.9,87.7,17.8c27.2,11.6,51,27.6,71.5,48c20.5,20.5,36.5,44.3,48,71.5
c11.9,27.5,17.8,56.7,17.8,87.7s-5.9,60.2-17.8,87.7c-11.6,27.2-27.6,51-48,71.5c-20.5,20.5-44.3,36.5-71.5,48
c-27.5,11.9-56.7,17.8-87.7,17.8s-60.2-5.9-87.7-17.8c-27.2-11.6-51-27.6-71.5-48c-20.5-20.5-36.5-44.3-48-71.5
C36.9,318.8,31,289.6,31,258.6z M376,327.8c11.9-8,22-17.1,30.5-27.4c8.4-10,14.8-21.2,19.2-33.5c4.4-12.3,8.1-24.8,11.3-37.3
c1.6-6.6,2.7-13.1,3.5-19.7c0.8-6.6,1.2-13.1,1.2-19.7c-6.9-19.1-16.4-36.4-28.6-52c-12.5-15.9-26.8-29.6-42.9-41
c-16.1-11.4-33.8-20.4-53.2-27c-19.4-6.2-39.7-9.4-60.9-9.4c-27.2,0-52.8,5.2-76.9,15.5c-24.1,10.3-45.1,24.5-63,42.4
c-18,18-32.1,39-42.4,63c-10.3,24.1-15.5,49.7-15.5,76.9c0,10,0.7,19.8,2.1,29.3c1.4,9.5,3.5,18.8,6.3,27.9
c9.7-44.4,22.7-81.4,38.9-111.1c16.6-29.7,35.9-52.9,58.1-69.6c22.2-16.7,47.2-27.4,75-32.1c27.8-4.4,58-3.8,90.5,1.9l13.1,11.7
l-17.8,3.3c-3.1,0.6-6.4,1.3-9.8,1.9c-3.4,0.6-6.4,1.9-8.9,3.8c-1.6,0.9-3,2.2-4.5,3.8c-1.4,1.6-1.8,3.1-1.2,4.7
c0.3,0.9,1,1.5,2.1,1.6c1.1,0.2,2.1,0.4,3,0.7c3.1,0.6,6.2,0.5,9.4-0.2c3.1-0.8,6.2-1,9.4-0.7c3.8,0.3,7.7,0.7,11.7,1.2
c4.1,0.5,7.8,1.6,11.3,3.5c5.3,2.5,10.6,5.6,15.9,9.4c5.3,3.8,9.2,8.4,11.7,14.1c1.2,3.1,1.5,6.6,0.7,10.3
c-0.8,3.8-1.5,7.3-2.1,10.8c-3.8-10.3-8.3-16.6-13.6-19c-5.3-2.3-11.6-4-18.8-4.9c-6.9-0.9-12.4,0.5-16.6,4.5
c-4.2,3.9-4.6,9.3-1.2,16.2c0.6,1.6,1.6,3,3,4.5s2.7,2.7,4,4l12.2,10.3c6.9,5.9,11.6,13.7,14.1,23.2c2.5,9.5,0.2,19.9-7,31.2
c0-9.1-1.1-16.2-3.3-21.6c-2.2-5.3-5.8-8.3-10.8-8.9l-14.1-3.8c-5.9-1.6-10.2-0.9-12.9,1.9c-2.7,2.8-2.1,7.8,1.6,15l3.8,6.1
c3.8,6.3,4.8,14.1,3,23.7c-1.7,9.5-5.9,16.2-12.4,19.9c2.2-14.7,0.9-25-3.8-30.9c-4.7-5.9-11.6-9.2-20.6-9.8
c-6.6-2.5-13.8-2.2-21.6,0.9c-7.8,3.1-14.1,7.3-18.8,12.7c-5,5.6-8.6,12.7-10.8,21.1c-2.2,8.4-2,16.3,0.5,23.4
c3.1,9.4,9.3,17.2,18.5,23.4c9.2,6.3,18.5,11.1,27.9,14.5c9.7,3.8,20.1,5.9,31.2,6.3c11.1,0.5,21.8-0.5,32.1-3
C351.8,341.6,364.1,335.8,376,327.8z M189,408.2l-2.8-2.8c-1.9-1.9-1.5-4.8,1.2-8.7c2.7-3.9,5.4-5.7,8.2-5.4l115.8,8.9
c17.8,1.3,34.6-3.9,50.4-15.5c15.8-11.6,29-26.4,39.6-44.5c-11.9,10.6-26.6,19.3-44.1,26c-17.5,6.7-34.8,9.3-52,7.7l-119.5-9.4
c-3.8,0.3-6.8,1.6-9.1,3.8c-2.3,2.2-3.7,5.3-4,9.4L157.1,366c-5.9-4.7-10.8-10.5-14.5-17.6s-7.3-14-10.8-20.9
c-2.5-5.3-2.1-9.5,1.2-12.7c3.3-3.1,7.4-2.8,12.4,0.9l15,9.4l6.1-7l-27.2-23c-4.7-2.8-9.7-2.4-15,1.2c-5.3,3.6-8.3,7.6-8.9,12
c-1.9,10.9-1,22.3,2.6,34c3.6,11.7,9.4,21.3,17.6,28.8l46.9,46.4L189,408.2z M293,177.6c-0.6-6.6,2.2-12.7,8.4-18.3
c-19.1-0.6-29.1-4.5-30-11.5s4.7-16.2,16.9-27.4c-17.8-1.2-34.4-0.2-49.7,3.3c-15.3,3.4-29.5,9.1-42.7,17.1s-25.3,18-36.6,30.2
c-10.9,11.9-21.1,25.6-30.5,41.3c15.6-6.9,30.6-11.9,45-15c14.7-3.1,28.8-4.1,42.4-3c13.6,1.1,26.5,4.6,38.7,10.5
c12.2,5.9,23.7,14.8,34.7,26.7c-3.4-9.7-3.1-17.2,0.9-22.5c4.1-5.3,11.7-8.4,23-9.4C300.5,191.5,293.7,184.1,293,177.6z"/>
</g>
</g>
<g id="Void">
<g class="st1">
<path class="st10" d="M31,258.6c0-30.9,5.9-60.2,17.8-87.7c11.6-27.2,27.6-51,48-71.5c20.5-20.5,44.3-36.5,71.5-48
c27.5-11.9,56.7-17.8,87.7-17.8s60.2,5.9,87.7,17.8c27.2,11.6,51,27.6,71.5,48c20.5,20.5,36.5,44.3,48,71.5
c11.9,27.5,17.8,56.7,17.8,87.7s-5.9,60.2-17.8,87.7c-11.6,27.2-27.6,51-48,71.5c-20.5,20.5-44.3,36.5-71.5,48
c-27.5,11.9-56.7,17.8-87.7,17.8s-60.2-5.9-87.7-17.8c-27.2-11.6-51-27.6-71.5-48c-20.5-20.5-36.5-44.3-48-71.5
C36.9,318.8,31,289.6,31,258.6z M438.3,181.8c-10.3-24.1-24.5-45.1-42.4-63c-18-18-39-32.1-63-42.4C308.8,66,283.2,60.8,256,60.8
s-52.8,5.2-76.9,15.5c-24.1,10.3-45.1,24.5-63,42.4c-18,18-32.1,39-42.4,63c-10.3,24.1-15.5,49.7-15.5,76.9
c0,21.6,3.3,42.2,9.8,61.9c6.6,19.4,15.7,37.2,27.4,53.4c11.7,16.3,25.5,30.5,41.5,42.7c16.2,12.2,33.9,21.7,53,28.6
c-15-6.2-28.8-14.7-41.3-25.3c-12.5-10.3-23.2-22.2-32.1-35.6c-8.9-13.4-15.9-28-20.9-43.6c-5-15.9-7.5-32.7-7.5-50.2
c0-23.1,4.4-44.8,13.1-65.2c8.7-20.3,20.7-38,35.9-53.2c15.2-15.2,32.9-27.3,53.2-36.3c20.6-8.7,42.5-13.1,65.6-13.1
c23.1,0,44.8,4.4,65.2,13.1c20.3,9.1,38.1,21.2,53.4,36.3c15.3,15.2,27.3,32.9,36.1,53.2c8.7,20.3,13.1,42,13.1,65.2
c0,17.5-2.5,34.2-7.5,50.2c-5,15.9-12,30.6-21.1,44.1c-9.1,13.4-20,25.3-32.8,35.6c-12.5,10.6-26.4,19.1-41.7,25.3
c19.4-6.9,37.2-16.4,53.4-28.6c16.2-12.2,30.3-26.4,42.2-42.7c11.9-16.2,21.1-34.2,27.7-53.9s9.8-40.3,9.8-61.9
C453.8,231.5,448.7,205.8,438.3,181.8z M211.9,344.4c12.2-12.2,26.9-18.3,44.1-18.3c17.2,0,31.9,6.1,44.1,18.3
s18.3,26.9,18.3,44.1c0,12.5-3.4,23.8-10.3,34c-6.9,10.2-15.6,17.7-26.3,22.7c22.8-5.9,41.7-18.3,56.7-37S361,367.7,361,343
c0-12.8-2.2-25-6.6-36.6c-4.4-11.6-10.5-22-18.3-31.2c-7.8-9.2-17-16.9-27.7-23.2c-10.6-6.2-22-10.5-34.2-12.7
c7.2,3.4,13.1,8.7,17.8,15.7s7,14.8,7,23.2c0,12.2-4.2,22.4-12.7,30.7c-8.4,8.3-18.6,12.4-30.5,12.4c-11.9,0-22-4.1-30.5-12.4
c-8.4-8.3-12.7-18.5-12.7-30.7c0-8.4,2.3-16.2,6.8-23.2c4.5-7,10.5-12.3,18-15.7c-12.5,2.2-24.1,6.4-34.7,12.7
c-10.6,6.3-19.8,14-27.4,23.2c-7.7,9.2-13.8,19.6-18.5,31.2c-4.4,11.6-6.6,23.8-6.6,36.6c0,24.7,7.6,46.4,22.7,65.2
c15.2,18.8,34.1,31.1,57,37c-10.9-5-19.8-12.6-26.5-22.7c-6.7-10.2-10.1-21.5-10.1-34C193.7,371.3,199.8,356.6,211.9,344.4z
M304.3,382.4c0-13.4-4.7-24.8-14.1-34.2s-20.8-14.1-34.2-14.1c-13.4,0-24.8,4.7-34.2,14.1s-14.1,20.8-14.1,34.2
c0,13.4,4.7,24.8,14.1,34.2s20.8,14.1,34.2,14.1c13.4,0,24.8-4.7,34.2-14.1S304.3,395.8,304.3,382.4z"/>
</g>
</g>
</g>
<g id="Npcs" class="st0">
<g id="Martial" class="st1">
<g>
<path class="st11" d="M57.3,388.5L31,315.4c8.7-1.9,18-3.4,27.7-4.7c9.7-1.2,20-1.9,30.9-1.9c5.9,10.6,13.3,20.5,22,29.5
c8.7,9.1,19.1,17.2,30.9,24.4c-14.7,1.9-29.2,5-43.6,9.4C84.6,376.5,70.7,381.9,57.3,388.5z M50.7,100.7
c12.2,9.1,22.7,19.1,31.6,30.2c8.9,11.1,10.5,22.9,4.9,35.4c-8.1,17.5-12.5,35.9-13.1,55.3c-0.6,19.4,3.6,38,12.7,56
c9.1,18,23.4,34.6,43.1,49.9c19.7,15.3,45.8,27.7,78.3,37c2.8-6.2,6.1-11.3,9.8-15s7.7-7,11.7-9.8c-28.1-9.7-48.3-23-60.5-39.8
s-18.8-33-19.7-48.3c-0.9-15.3,2.7-27.8,10.8-37.5c8.1-9.4,18.3-11.6,30.5-6.6c-2.5-17.5,1.2-28.4,11.3-32.8
c10-4.4,19.7-1.4,29.1,8.9c7.8-21.2,5.9-39.9-5.6-56c-11.6-16.1-29.5-20.7-53.9-13.8c-5.9-7.8-13.8-13.9-23.7-18.3
c-9.8-4.4-19.9-5-30.2-1.9c-10.3,3.1-20.7,3.7-31.2,1.6c-10.5-2-21.2-6-32.1-12L50.7,100.7z M83,393.6
c17.2-6.2,34.5-12.7,51.8-19.5c17.3-6.7,30.1-4,38.2,8.2c5.3,0,10.6,0.4,15.9,1.2c5.3,0.8,10.5,2.7,15.5,5.9
c0,5.3,0.7,10.4,2.1,15.2c1.4,4.8,3.5,9.3,6.3,13.4h-74.5v-13.6c-5.9,2.8-11.4,6.7-16.4,11.7c-5,5-9.7,10.9-14.1,17.8L83,393.6z
M256,354.7c-9.1,0-16.8,3.1-23.2,9.4c-6.4,6.3-9.6,13.9-9.6,23c0,9.1,3.2,16.8,9.6,23.2c6.4,6.4,14.1,9.6,23.2,9.6
c9.1,0,16.7-3.2,23-9.6c6.2-6.4,9.4-14.1,9.4-23.2c0-9.1-3.1-16.7-9.4-23C272.7,357.9,265.1,354.7,256,354.7z M461.3,100.7
c-12.2,9.1-22.7,19.1-31.6,30.2c-8.9,11.1-10.5,22.9-4.9,35.4c8.1,17.5,12.5,35.9,13.1,55.3c0.6,19.4-3.6,38-12.7,56
c-9.1,18-23.4,34.6-43.1,49.9c-19.7,15.3-45.8,27.7-78.3,37c-2.8-6.2-6.1-11.3-9.8-15s-7.7-7-11.7-9.8
c28.1-9.7,48.3-23,60.5-39.8s18.8-33,19.7-48.3c0.9-15.3-2.7-27.8-10.8-37.5c-8.1-9.4-18.3-11.6-30.5-6.6
c2.5-17.5-1.3-28.4-11.3-32.8c-10-4.4-19.7-1.4-29.1,8.9c-7.8-21.2-5.9-39.9,5.6-56c11.6-16.1,29.5-20.7,53.9-13.8
c5.9-7.8,13.8-13.9,23.7-18.3c9.8-4.4,19.9-5,30.2-1.9c10.3,3.1,20.7,3.7,31.2,1.6c10.5-2,21.2-6,32.1-12L461.3,100.7z
M429,393.6c-17.2-6.2-34.5-12.7-51.8-19.5c-17.3-6.7-30.1-4-38.2,8.2c-5.3,0-10.6,0.4-15.9,1.2c-5.3,0.8-10.5,2.7-15.5,5.9
c0,5.3-0.7,10.4-2.1,15.2c-1.4,4.8-3.5,9.3-6.3,13.4h74.5v-13.6c5.9,2.8,11.4,6.7,16.4,11.7c5,5,9.7,10.9,14.1,17.8L429,393.6z
M454.8,388.5l26.3-73.1c-8.8-1.9-18-3.4-27.7-4.7c-9.7-1.2-20-1.9-30.9-1.9c-5.9,10.6-13.3,20.5-22,29.5
c-8.8,9.1-19.1,17.2-30.9,24.4c14.7,1.9,29.2,5,43.6,9.4C427.4,376.5,441.3,381.9,454.8,388.5z"/>
</g>
</g>
<g id="Social">
<g class="st1">
<path class="st12" d="M249.4,382.4L31,265.2c7.8-6.9,15.9-13.3,24.1-19.2c8.3-5.9,17.1-11.3,26.5-15.9c2.8-6.6,5.4-13.2,7.7-19.9
c2.3-6.7,4.1-13.5,5.4-20.4l-8.4-8.4c9.4-4.1,18.9-7.1,28.6-9.1c9.7-2,19.5-3.2,29.5-3.5c5.3-4.1,10.4-8.8,15.2-14.3
c4.8-5.5,9.4-11.5,13.8-18l-6.6-11.3c9.1-0.3,18.3,0.5,27.7,2.6c9.4,2,19.2,5.2,29.5,9.6c6.9-1.9,13.4-4.2,19.7-7
c6.2-2.8,12.2-6.6,17.8-11.3v-12.7c7.8,3.4,15.6,7.6,23.4,12.4c7.8,4.8,15.5,11.5,23,19.9c6.9,2.2,13.8,3.1,20.9,2.8
c7-0.3,14-1.6,20.9-3.8l3.3-12.7c6.6,7.2,12.7,14.7,18.5,22.5c5.8,7.8,10.5,16.6,14.3,26.3c5.3,5,11.3,9.1,17.8,12.2
c6.6,3.1,13.9,4.5,22,4.2l7-8.4c4.1,8.1,7.6,17.3,10.5,27.7c3,10.3,5.1,22,6.3,35.2c4.4,5.3,9.1,10.2,14.3,14.8
c5.2,4.5,10.9,8.4,17.1,11.5L273.3,381.5l14.5,7.5c-3.4,15.3-12.4,22.7-27,22.3s-23.5-7.6-27-21.3L249.4,382.4z M186.2,304.1
l-4.7,15.5l-17.8,9.4l80.6,42.2L186.2,304.1z M218.5,279.7l-9.4,11.3l-20.2,3.8l60,69.8L218.5,279.7z M256.5,361.3v-90.9l-13.1,7
l-20.6-6.6L256.5,361.3z M264.9,363.6l31.4-84.8l-15,0.5l-16.9-14.1L264.9,363.6z M328.7,299.4l-7.5-1.9l-17.3-22l-31.4,89.1
L328.7,299.4z M353,332.7l-8-7.5l-5.6-26.3l-59.5,71.7L353,332.7z"/>
</g>
</g>
<g id="list_-_copie">
<g class="st1">
<path d="M31,258.6c0-30.9,5.9-60.2,17.8-87.7c11.6-27.2,27.6-51,48-71.5c20.5-20.5,44.3-36.5,71.5-48
c27.5-11.9,56.7-17.8,87.7-17.8s60.2,5.9,87.7,17.8c27.2,11.6,51,27.6,71.5,48c20.5,20.5,36.5,44.3,48,71.5
c11.9,27.5,17.8,56.7,17.8,87.7s-5.9,60.2-17.8,87.7c-11.6,27.2-27.6,51-48,71.5c-20.5,20.5-44.3,36.5-71.5,48
c-27.5,11.9-56.7,17.8-87.7,17.8s-60.2-5.9-87.7-17.8c-27.2-11.6-51-27.6-71.5-48c-20.5-20.5-36.5-44.3-48-71.5
C36.9,318.8,31,289.6,31,258.6z M467.4,258.6c0-29.1-5.5-56.6-16.4-82.5c-11.3-25.6-26.4-48-45.5-67
c-19.1-19.1-41.4-34.2-67-45.5c-25.9-10.9-53.4-16.4-82.5-16.4s-56.6,5.5-82.5,16.4c-25.6,11.3-48,26.4-67,45.5
c-19.1,19.1-34.2,41.4-45.5,67c-10.9,25.9-16.4,53.4-16.4,82.5s5.5,56.6,16.4,82.5c11.3,25.6,26.4,48,45.5,67
c19.1,19.1,41.4,34.2,67,45.5c25.9,10.9,53.4,16.4,82.5,16.4s56.6-5.5,82.5-16.4c25.6-11.3,48-26.4,67-45.5
c19.1-19.1,34.2-41.4,45.5-67C461.9,315.2,467.4,287.7,467.4,258.6z M75.1,182.2c10.3-24.1,24.3-45,42-62.8
c17.7-17.8,38.5-31.9,62.6-42.2c23.7-10.3,49.2-15.5,76.4-15.5s52.7,5.2,76.4,15.5c24.1,10.3,45,24.4,62.8,42.2
s31.9,38.8,42.2,62.8c10.3,23.8,15.5,49.2,15.5,76.4s-5.2,52.7-15.5,76.4c-10.3,24.1-24.4,45-42.2,62.8s-38.8,31.9-62.8,42.2
c-23.8,10.3-49.2,15.5-76.4,15.5s-52.7-5.2-76.4-15.5c-24.1-10.3-44.9-24.4-62.6-42.2c-17.7-17.8-31.6-38.7-42-62.8
c-10.3-23.7-15.5-49.2-15.5-76.4S64.8,206,75.1,182.2z M190.6,305.1c13.6-5.6,24.8-16.2,33.5-31.9c-0.3-0.3-0.5-0.6-0.5-0.9
c0-0.3-0.2-0.6-0.5-0.9c-11.9-3.8-23.4-5.3-34.5-4.7c-11.1,0.6-22,3-32.6,7c-2.2,4.1-5.5,7.3-9.8,9.6c-4.4,2.3-9.1,3.5-14.1,3.5
c-7.8,0-14.5-2.7-19.9-8.2c-5.5-5.5-8.2-12.1-8.2-19.9c0-7.8,2.7-14.5,8.2-19.9c5.5-5.5,12.1-8.2,19.9-8.2c5,0,9.7,1.2,14.1,3.5
c4.4,2.3,7.7,5.6,9.8,9.6c10.6,4.1,21.5,6.4,32.6,7c11.1,0.6,22.6-0.9,34.5-4.7c0.3-0.3,0.5-0.6,0.5-0.9c0-0.3,0.2-0.6,0.5-0.9
c-11.3-20-26.3-33-45.2-39.1c-18.9-6.1-37.3-25.4-55.1-57.9c-12.8,15-22.8,32-30,51.1C86.6,217.2,83,237.4,83,258.6
c0,21.3,3.6,41.4,10.8,60.5c7.2,19.1,17.2,36.1,30,51.1c4.1-7.5,8.1-14.1,12.2-19.7c4.1-5.6,8.3-10.5,12.7-14.5
C163,321,177,310.7,190.6,305.1z M248,191.4c-0.6-11.1-3-21.8-7-32.1c-4.1-2.5-7.3-5.9-9.6-10.3c-2.3-4.4-3.5-9.1-3.5-14.1
c0-7.8,2.7-14.5,8.2-19.9c5.5-5.5,12.1-8.2,19.9-8.2c7.8,0,14.5,2.7,19.9,8.2c5.5,5.5,8.2,12.1,8.2,19.9c0,5-1.2,9.7-3.5,14.1
c-2.3,4.4-5.6,7.8-9.6,10.3c-4.1,10.3-6.4,21-7,32.1c-0.6,11.1,0.9,22.6,4.7,34.5c0.3,0.3,0.6,0.5,0.9,0.5c0.3,0,0.6,0.2,0.9,0.5
c20-11.3,33-26.3,39.1-45.2c6.1-18.9,25.4-37.3,57.9-55.1c-15-12.8-32-22.8-51.1-30c-19.1-7.2-39.2-10.8-60.5-10.8
c-21.3,0-41.4,3.6-60.5,10.8c-19.1,7.2-36.1,17.2-51.1,30c7.5,4.1,14.1,8.1,19.7,12.2c5.6,4.1,10.5,8.3,14.5,12.7
c15,14.4,25.3,28.4,30.9,42s16.2,24.8,31.9,33.5c0.3-0.3,0.6-0.5,0.9-0.5c0.3,0,0.6-0.2,0.9-0.5C247.1,214,248.7,202.5,248,191.4
z M347.9,378.6c-5.6-4.1-10.5-8.3-14.5-12.7c-15-14.4-25.3-28.4-30.9-42s-16.3-24.8-31.9-33.5c-0.3,0.3-0.6,0.5-0.9,0.5
c-0.3,0-0.6,0.2-0.9,0.5c-3.8,11.9-5.3,23.4-4.7,34.5c0.6,11.1,3,22,7,32.6c4.1,2.2,7.3,5.5,9.6,9.8c2.3,4.4,3.5,9.1,3.5,14.1
c0,7.8-2.7,14.5-8.2,19.9c-5.5,5.5-12.1,8.2-19.9,8.2c-7.8,0-14.5-2.7-19.9-8.2c-5.5-5.5-8.2-12.1-8.2-19.9c0-5,1.2-9.7,3.5-14.1
c2.3-4.4,5.5-7.7,9.6-9.8c4.1-10.6,6.4-21.5,7-32.6c0.6-11.1-0.9-22.6-4.7-34.5c-0.3-0.3-0.6-0.5-0.9-0.5c-0.3,0-0.6-0.2-0.9-0.5
c-20,11.3-33,26.3-39.1,45.2c-6.1,18.9-25.4,37.3-57.9,55.1c15,12.8,32,22.8,51.1,30c19.1,7.2,39.2,10.8,60.5,10.8
c21.2,0,41.4-3.6,60.5-10.8c19.1-7.2,36.1-17.2,51.1-30C360.1,386.8,353.5,382.7,347.9,378.6z M418.2,198.2
c-7.2-19.1-17.2-36.1-30-51.1c-4.1,7.5-8.1,14.1-12.2,19.7c-4.1,5.6-8.3,10.5-12.7,14.5c-14.4,15-28.4,25.3-42,30.9
s-24.8,16.3-33.5,31.9c0.3,0.3,0.5,0.6,0.5,0.9c0,0.3,0.2,0.6,0.5,0.9c11.9,3.8,23.4,5.3,34.5,4.7c11.1-0.6,21.8-3,32.1-7
c2.5-4.1,5.9-7.3,10.3-9.6c4.4-2.3,9.1-3.5,14.1-3.5c7.8,0,14.5,2.7,19.9,8.2c5.5,5.5,8.2,12.1,8.2,19.9c0,7.8-2.7,14.5-8.2,19.9
c-5.5,5.5-12.1,8.2-19.9,8.2c-5,0-9.7-1.2-14.1-3.5c-4.4-2.3-7.8-5.5-10.3-9.6c-10.3-4.1-21-6.4-32.1-7
c-11.1-0.6-22.6,0.9-34.5,4.7c-0.3,0.3-0.5,0.6-0.5,0.9c0,0.3-0.2,0.6-0.5,0.9c11.3,20,26.3,33,45.2,39.1
c18.9,6.1,37.3,25.4,55.1,57.9c12.8-15,22.8-32,30-51.1c7.2-19.1,10.8-39.2,10.8-60.5C429,237.4,425.4,217.2,418.2,198.2z"/>
</g>
</g>
</g>
<g id="Techs">
<g id="Kihos" class="st0">
<g class="st1">
<path class="st13" d="M103.9,383.6c-8-5.8-11-15.5-9.1-29.3c16.9-1.6,33.5-3.4,49.9-5.6c16.4-2.2,32.4-2.8,48-1.9
c-0.6-20.3,5.2-35.9,17.6-46.6c12.3-10.8,25.7-17.6,40.1-20.4c13.4-2.8,22.7-8.4,27.9-16.9s5.4-16.7,0.7-24.8
c-2.2-4.4-4.9-8.5-8.2-12.4c-3.3-3.9-6.8-7.4-10.5-10.5c-1.9-1.9-4-3.2-6.3-4c-2.3-0.8-4.5-1.9-6.3-3.5c-1.9-1.9-3.4-4-4.7-6.3
c-1.3-2.3-3-4.1-5.2-5.4c-1.9-1.2-4.1-2-6.8-2.3c-2.7-0.3-5.2-0.5-7.7-0.5c-2.8,0.3-5.5,1.1-8,2.3c-2.5,1.3-5,2.7-7.5,4.2
c-1.9,1.3-3.7,2.9-5.4,4.9c-1.7,2-3.4,4-4.9,5.9c-1.6,1.3-3.3,2.4-5.2,3.5c-1.9,1.1-3,2.7-3.3,4.9c-0.3,1.3-0.1,2.4,0.7,3.5
c0.8,1.1,1.5,2.3,2.1,3.5c5.3-0.6,10.9-1,16.9-1.2c5.9-0.2,12.2-0.1,18.8,0.2c5.3,0.3,10.3,1.6,15,4s5.2,4.6,1.4,6.8
c-2.5,1.3-3.9,2.8-4.2,4.7c-0.3,1.9,1.6,2.7,5.6,2.3h9.4c3.8-0.3,6.2,0.9,7.5,3.5c1.2,2.7,0,4.5-3.8,5.4
c-8.1,1.6-16.2,2.7-24.1,3.5c-8,0.8-15.9,1-23.7,0.7l0.9,2.3c-3.1,2.5-6.4,4.4-9.8,5.6c-3.4,1.3-7,1.9-10.8,1.9l-47.8-1.4
c-2.5-0.3-4.8-0.9-7-1.6c-2.2-0.8-4.2-1.8-6.1-3h-9.4l-2.8-3.3c-9.4,1.6-17.7,1.7-25.1,0.5c-7.3-1.2-9.1-3.4-5.4-6.6l3.8-3.3
l-3.3-3.8l-20.6-2.3c-7.5-0.6-10.5-3-9.1-7c1.4-4.1,5.9-5.9,13.4-5.6l37,2.8c3.4,0.3,6-0.9,7.7-3.8c1.7-2.8,4.8-3.8,9.1-2.8
c5.6,0.9,11.2,1.6,16.6,1.9c5.5,0.3,10.9,0.2,16.2-0.5c2.5-3.4,5.3-6.6,8.4-9.6c3.1-3,6.4-5.7,9.8-8.2c1.2-0.9,2.7-1.8,4.5-2.6
c1.7-0.8,3.4-1.6,4.9-2.6c1.9-0.6,3.8-1.2,5.9-1.9c2-0.6,3.8-1.6,5.4-2.8c1.6-1.6,2.7-3.5,3.3-5.9c0.6-2.3,1.7-4.5,3.3-6.3
c1.2-1.2,2.6-2.6,4-4s3-2.4,4.9-3c1.6-0.3,3.2-0.2,4.9,0.5c1.7,0.6,3.4,1.1,4.9,1.4c1.2,0.3,2.5,0.5,3.8,0.7
c1.2,0.2,2.5,0.4,3.8,0.7c0.9,0.3,1.9,0.8,3,1.4c1.1,0.6,2.3,1.3,3.5,1.9c0.9,0.3,1.8,0.5,2.6,0.7c0.8,0.2,1.6,0.4,2.6,0.7
c0.3,0,0.6,0.2,0.9,0.5l-18.3-15.9c-0.6-0.6-1.6-1.2-2.8-1.6c-1.3-0.5-2.5-0.9-3.8-1.2c-1.9,0-3.8,0.4-5.9,1.2
c-2,0.8-4.1,1.2-6.3,1.2c-1.6,0.3-3.3,0.4-5.2,0.2c-1.9-0.2-3.6-0.4-5.2-0.7c-1.9,0-3.6-0.2-5.2-0.5c-1.6-0.3-3.1-0.8-4.7-1.4
l-6.1-1.9l9.8-1.9c1.6-0.3,3.3-0.6,5.2-0.9c1.9-0.3,3.1-1.1,3.8-2.3c0.6-0.6,0.9-1.6,0.7-2.8c-0.2-1.2-0.5-2.2-1.2-2.8
c-1.3-0.9-2.7-1.2-4.5-0.9c-1.7,0.3-3.2,0.6-4.5,0.9c-1.3,0-2.3,0.3-3,0.9c-0.8,0.6-1.6,1.1-2.6,1.4c-1.9,0.6-3.7,0.9-5.4,0.9
c-1.7,0-3.5,0.2-5.4,0.5c-2.5,0.3-4.9,0.8-7.3,1.4c-2.3,0.6-4.8,1.3-7.3,1.9c-2.5,0.3-5.1,0.5-7.7,0.7c-2.7,0.2-5.2,0.2-7.7,0.2
c-1.9,0-3.9,0-6.1,0c-2.2,0-4.4-0.2-6.6-0.5c-1.9-0.3-3.7-0.6-5.4-0.9c-1.7-0.3-3.5-0.8-5.4-1.4c-1.6-0.9-3-2-4.5-3.3
c-1.4-1.2-3-2.2-4.9-2.8c-1.3-0.6-2.7-1.1-4.2-1.4c-1.6-0.3-3-0.5-4.2-0.5c-3.1-0.6-6.3-0.9-9.4-0.7c-3.1,0.2-6.1,0.1-8.9-0.2
c-2.2,0-4.3,0.1-6.3,0.2c-2,0.2-4.1-0.2-6.3-1.2c-0.3,0-0.7-0.2-1.2-0.5c-0.5-0.3-0.7-0.6-0.7-0.9c-0.3-0.9,0-1.7,0.9-2.3
c0.9-0.6,1.7-1.2,2.3-1.9c1.6-1.2,3.3-2.1,5.2-2.6s3.8-1,5.6-1.6c1.2-0.3,2.7-0.5,4.2-0.5c1.6,0,3-0.3,4.2-0.9
c1.2-0.3,2.4-0.9,3.5-1.6c1.1-0.8,1.6-1.8,1.6-3c0-0.9-0.5-1.6-1.4-2.1s-1.7-0.9-2.3-1.2c-1.9-0.6-3.7-0.9-5.4-0.7
c-1.7,0.2-3.5,0.2-5.4,0.2c-5.6-0.3-11.3-0.4-16.9-0.2c-5.6,0.2-11.1,0.2-16.4,0.2c-1.3,0-2.5,0.2-3.8,0.5
c-1.3,0.3-2.5,0.3-3.8,0c-1.3-0.3-2.5-0.8-3.8-1.4c-1.3-0.6-2-1.6-2.3-2.8c-0.6-0.9-0.9-1.9-0.7-3c0.2-1.1,0.4-2.1,0.7-3
c0.3-0.9,0.9-1.7,1.6-2.3c0.8-0.6,1.2-1.2,1.2-1.9c-0.3-1.2-1.3-2-2.8-2.3c-1.6-0.3-2.7-1.1-3.3-2.3c0-0.9,0.1-1.9,0.2-2.8
c0.2-0.9,0.5-1.7,1.2-2.3c0.9-1.2,2.3-2,4.2-2.3c1.9-0.3,3.6-0.6,5.2-0.9c7.2-1.2,14.5-1.7,22-1.4c7.5,0.3,14.8,0.2,22-0.5h2.3
c2.2-3.4,6.6-6.3,13.1-8.7s12.7-3.8,18.3-4.5c8.4-1.2,17-1.1,25.8,0.5c8.7,1.6,17.5,1.6,26.3,0c3.8-0.3,7.3-1.3,10.8-3
c3.4-1.7,7-2.9,10.8-3.5c3.4-0.9,7-1.8,10.8-2.6c3.8-0.8,7.5-1,11.3-0.7c3.4,0,6.8,0.7,10.1,2.1s6.5,2.3,9.6,2.6
c3.4,0.3,6.7,0.2,9.8-0.5c3.1-0.6,6.2-0.9,9.4-0.9c5.6,0.3,11.2,0.5,16.6,0.5c5.5,0,10.5,1.1,15.2,3.3c1.9,0.6,3.8,1.6,5.9,3
c2,1.4,2.9,3,2.6,4.9c0,0.9-0.7,1.6-2.1,2.1s-2.7,0.9-4,1.2c-3.1,1.3-6.3,2.1-9.6,2.6s-6.6,1-10.1,1.6c-0.6,0.3-1.3,0.5-1.9,0.5
c-0.6,0-1.1,0.3-1.4,0.9c-0.6,0.3-0.9,0.9-0.9,1.6c0,0.8-0.2,1.3-0.5,1.6c-0.9,0.6-1.9,0.9-2.8,0.7c-0.9-0.2-1.9,0.1-2.8,0.7
c-0.6,0.3-1.3,0.7-1.9,1.2c-0.6,0.5-0.9,1-0.9,1.6c0,1.3,0.8,2.2,2.3,2.8c1.6,0.6,2.8,1.3,3.8,1.9c0.6,0.6,1.5,1.3,2.6,1.9
c1.1,0.6,1.6,1.4,1.6,2.3c0.3,0.6,0.2,1.4-0.2,2.3s-1,1.7-1.6,2.3c-0.9,0.9-2,1.7-3.3,2.3c-1.3,0.6-2.5,1.3-3.8,1.9
c-1.6,0.9-3.2,1.8-4.9,2.6c-1.7,0.8-3.5,1.3-5.4,1.6c-1.9,0.6-3.9,0.7-6.1,0.2c-2.2-0.5-4.1-0.2-5.6,0.7
c-0.6,0.3-1.3,0.7-1.9,1.2c-0.6,0.5-0.9,1-0.9,1.6c0,0.6,0.3,1.1,0.9,1.4c0.6,0.3,1.2,0.6,1.9,0.9c0.9,0.3,2,0.3,3.3,0
c1.2-0.3,2.5-0.3,3.8,0c1.9,0,3.8-0.1,5.6-0.2c1.9-0.2,3.3,0.4,4.2,1.6c0.3,0.3,0.5,0.8,0.5,1.4c0,0.6-0.2,1.1-0.5,1.4
c-0.3,0.3-0.9,0.5-1.6,0.5c-0.8,0-1.5,0.2-2.1,0.5c-1.6,0-3.2,0-4.9,0c-1.7,0-3.4,0.2-4.9,0.5c-0.9,0.3-1.9,0.7-2.8,1.2
s-1.6,1.2-1.9,2.1c-0.3,0.6-0.2,1.4,0.2,2.3s0.9,1.7,1.2,2.3c0.9,2.2,2.3,4.1,4,5.9c1.7,1.7,3.5,3.4,5.4,4.9
c2.2,1.9,4.7,3.3,7.5,4.2s5.3,2.3,7.5,4.2c1.9,1.3,3.7,2.8,5.4,4.7c1.7,1.9,3.4,3.8,4.9,5.6c2.5,2.8,4.8,5.7,6.8,8.7
c2,3,4.1,6,6.3,9.1c1.9,2.5,4.1,5,6.6,7.5c2.5,2.5,4.7,5.3,6.6,8.4c0.6,1.6,1.2,3,1.9,4.5c0.6,1.4,1.2,3,1.9,4.9
c0-11.3,1.6-21.4,4.9-30.5c3.3-9.1,11.5-15,24.6-17.8c-1.3-0.9-2.7-1.7-4.5-2.3c-1.7-0.6-3.5-1.1-5.4-1.4c-2.2-0.6-4.5-0.7-7-0.2
c-2.5,0.5-5,0.7-7.5,0.7c-2.8-0.3-5.7-0.4-8.7-0.2c-3,0.2-5.7-0.2-8.2-1.2c-2.5-0.6-5.1-1.5-7.7-2.6c-2.7-1.1-4.6-2.7-5.9-4.9
c-0.9-1.9-1.3-4-0.9-6.3c0.3-2.3,1.1-4.5,2.3-6.3c1.6-2.2,3.8-3.8,6.6-4.7s5.6-1.7,8.4-2.3c3.4-0.9,6.9-1.5,10.3-1.6
c3.4-0.2,7-0.4,10.8-0.7c2.8-0.3,5.6-0.7,8.4-1.2s5.5-1,8-1.6c2.8-0.6,5.4-1.4,7.7-2.3s4.8-1.9,7.3-2.8c3.4-0.9,6.8-1.7,10.1-2.3
c3.3-0.6,6.6-1.2,10.1-1.9c3.8-0.3,7.7-0.4,11.7-0.2c4.1,0.2,8,0.2,11.7,0.2c1.9,0,3.7,0.2,5.4,0.5c1.7,0.3,3.4,0.5,4.9,0.5
l18.8-1.4c1.9,0,3.8,0.5,5.9,1.4c2,0.9,3.4,2.2,4,3.8c0.3,0.6,0.3,1.4,0,2.3c-0.3,0.9-0.8,1.7-1.4,2.3c-0.3,0.6-0.8,1.2-1.4,1.6
c-0.6,0.5-1.4,0.7-2.3,0.7c-0.9,0.3-1.8,0.2-2.6-0.5c-0.8-0.6-1.8-0.9-3-0.9h-9.4c-1.6,0-3,0.2-4.5,0.5c-1.4,0.3-2.9,0.8-4.5,1.4
c-1.3,0.6-2.8,1.6-4.7,2.8c-1.9,1.3-2.7,2.7-2.3,4.2c0.3,1.9,1.5,3.1,3.5,3.8c2,0.6,4,0.9,5.9,0.9l49.2-0.9
c1.9-0.3,3.8-0.4,5.9-0.2c2,0.2,4,0.5,5.9,1.2c0.9,0.6,1.9,1.2,2.8,1.6s1.6,1.2,1.9,2.1c0.3,0.9,0.3,1.9,0,2.8
c-0.3,0.9-0.8,1.7-1.4,2.3c-1.6,1.3-3.5,1.3-5.9,0c-2.3-1.2-4.5-1.6-6.3-0.9c-0.6,0.3-1.2,0.8-1.6,1.4c-0.5,0.6-1,1.1-1.6,1.4
c-1.9,0.3-3.8,0.2-5.6-0.5c-1.9-0.6-3.8-0.8-5.6-0.5c-0.3,0.3-0.8,0.5-1.4,0.7c-0.6,0.2-0.9,0.4-0.9,0.7c0,0.9,0.5,1.5,1.4,1.6
c0.9,0.2,1.9,0.4,2.8,0.7c0.6,0,1.3-0.1,2.1-0.2c0.8-0.2,1.6-0.2,2.6-0.2c1.2,0.6,2.4,1.4,3.5,2.3c1.1,0.9,2.1,1.9,3,2.8
c0.9,1.6,1.6,3.5,1.9,5.9c0.3,2.3,1.2,4.1,2.8,5.4c0.9,0.6,2,1,3.3,1.2c1.2,0.2,2.3,0.1,3.3-0.2c1.6,0,3-0.5,4.2-1.4
c1.2-0.9,2.5-1.2,3.8-0.9c2.5,0,5.2,1,8,3c2.8,2,4.2,4.5,4.2,7.3c0,1.9-1.3,3.2-4,4c-2.7,0.8-5.1,1-7.3,0.7
c-6.6,0.3-12.3,1.3-17.1,3c-4.8,1.7-8.8,4.5-12,8.2c0,0.3,0.1,0.6,0.2,0.9c0.2,0.3,0.4,0.5,0.7,0.5c0.3,0.3,0.7,0.4,1.2,0.2
c0.5-0.2,0.9-0.2,1.2-0.2c0.9-0.3,1.7-0.5,2.3-0.5c0.6,0,1.4,0,2.3,0s1.9,0.1,2.8,0.2c0.9,0.2,1.7,0.5,2.3,1.2
c0.3,0.6,0.4,1.4,0.2,2.3c-0.2,0.9-0.4,1.7-0.7,2.3c-0.6,0.9-1.6,1.6-2.8,1.9c-1.3,0.3-2.3,0.6-3.3,0.9c-2.2,0.6-4.5,1.3-7,1.9
c-2.5,0.6-4.8,1.1-7,1.4c-2.2,0.3-4.4,0.5-6.6,0.7c-2.2,0.2-4.4,0.4-6.6,0.7c-1.3,0-2.5,0.1-3.8,0.2c-1.3,0.2-2.7,0.2-4.2,0.2
c-4.1,0-8.2-0.4-12.4-1.2c-4.2-0.8-8.4-1.3-12.4-1.6c-6.6-0.6-13.2-0.9-19.9-0.7c-6.7,0.2-13.4-0.4-19.9-1.6
c-1.6-0.3-3.3-0.6-5.2-0.9c-1.9-0.3-3.6-0.9-5.2-1.9c-0.3-0.3-0.6-0.7-0.9-1.2c-0.3-0.5-0.3-0.9,0-1.2c0.6-1.2,1.9-1.6,3.8-0.9
c1.9,0.6,3.4,0.6,4.7,0c0.3-0.3,0.6-0.6,0.9-0.9c0.3-0.3,0.5-0.6,0.5-0.9c-0.3-1.2-1.3-1.9-3-1.9c-1.7,0-3.2-0.2-4.5-0.5
c-1.6-0.3-3-0.4-4.5-0.2c-1.4,0.2-2.7-0.1-4-0.7c-0.9-0.6-1.9-1.3-2.8-2.1c-0.9-0.8-1.3-1.6-0.9-2.6c0-0.6,0.5-1.2,1.4-1.6
s1.7-0.9,2.3-1.2c1.2-0.9,2.7-1.6,4.5-1.9c1.7-0.3,2.9-1.2,3.5-2.8c-9.4-0.6-16.5,2.3-21.3,8.7c-4.8,6.4-6,15.4-3.5,27
c4.4,20,0.9,36.9-10.3,50.6c-11.3,13.8-22.8,21.6-34.7,23.4c-24.7,4.1-38.8,11.3-42.2,21.6c-3.4,10.3,4.2,25.8,23,46.4l0.9-0.5
c-4.1-6.6-6.3-12.2-6.6-16.9c-0.3-4.7,1.2-7.2,4.7-7.5c17.2-0.9,34.9-1.2,53.2-0.9c18.3,0.3,37.3,1.7,57,4.2
c1.2,14.1-1.7,24.3-8.9,30.7c-7.2,6.4-17.7,9.8-31.4,10.1c1.2,15.3-6.6,26.3-23.7,32.8c-17,6.6-40.7,10.5-71,11.7
c-30.3,1.3-54.4-3-72.2-12.7c-17.8-9.7-21.1-20.9-9.8-33.8C124.3,391.8,111.9,389.4,103.9,383.6z"/>
</g>
</g>
<g id="Maho" class="st0">
<g class="st1">
<path class="st14" d="M150.5,404l3.3-1.9v-2.8l-0.9-0.9v-7.5l15.5-6.1l2.8-3.8l-3.3-4.2l-7-1.9l-5.2,6.6l1.4-7L146.3,388
l2.8-12.7l-6.1,6.6l0.9-8.9l-4.7,6.1h-2.8l-6.6,10.3c1.9-4.7,3.5-9.4,4.9-14.3c1.4-4.8,2.4-9.6,3-14.3l-4.2-0.5l-4.7,3.8
l-0.5-4.2c-6.3,3.4-11.9,8.5-16.9,15.2c-5,6.7-10.2,13.4-15.5,19.9c3.1-5.3,6.5-10.7,10.1-16.2c3.6-5.5,7.6-10.9,12-16.2
l-4.7,0.5l1.4-4.7c-5.6,3.8-10.8,8.1-15.5,13.1c-4.7,5-7.8,11.7-9.4,20.2c-0.3-3.1-0.5-6.2-0.5-9.1c0-3,0.2-6,0.5-9.1l-3.3-2.3
l-3.3,2.8c-0.6-2.8-0.2-5.7,1.2-8.7c1.4-3,3.5-5.9,6.3-8.7c-3.1-5.9-6.8-10.3-11-13.1s-8.7-4.8-13.4-6.1c4.1-2.2,6-4.6,5.9-7.3
c-0.2-2.7-1.5-5.5-4-8.7c-2.5-2.2-4.7-4.6-6.6-7.3c-1.9-2.7-3.8-5.4-5.6-8.2l8.4-8.9c-8.1-9.7-13.6-18.7-16.4-27
c-2.8-8.3-3.4-15.7-1.9-22.3c10,11.9,20.8,22.9,32.3,33c11.6,10.2,25,18.4,40.3,24.6c7.2,2.2,12.4,2,15.7-0.7
c3.3-2.7,4.6-7.6,4-14.8l-29.5-82.5c-3.4-10.3-4.4-21-2.8-32.1c1.6-11.1,6.6-21.3,15-30.7l30.9-33.3l-2.3,7
c10.6-5,18-14.3,22.3-27.9s6.6-27.1,7.3-40.5l1.9-5.2c1.2,14.4,0.3,28.4-2.8,42.2c-3.1,13.8-10,26.9-20.6,39.4l9.8-8.4
l-26.3,37.5c-5.3,6.9-8.8,14.5-10.3,22.7c-1.6,8.3-0.6,17.4,2.8,27.4c4.1,15.9,9.7,31.1,16.9,45.5c7.2,14.4,15.6,28.1,25.3,41.3
c2.2-2.5,4.4-3.6,6.6-3.3c2.2,0.3,4.5,1.9,7,4.7c1.2-2.8,1.5-6.5,0.7-11c-0.8-4.5-1.8-9.1-3-13.8l8,18.8l-1.4-9.4l10.8,22h2.8
l6.1,8l3.3-6.6l9.8,0.9l0.5-3.3l2.8,3.3l-0.5-7l2.8-2.3l1.9,2.8l-7-47.3c-2.2-17.2-3.1-27.7-2.8-31.6c0.3-3.9,1.9-10.7,4.7-20.4
l12.2-36.6l9.8-2.8l0.9,9.4l-8.9,49.2c-1.3,5.9-2.1,11.8-2.6,17.6c-0.5,5.8-0.1,12,1.2,18.5l15.9,52.5l2.3-3.3l1.4,5.6l8.4-3.8
l0.5,5.6l7,0.5c0.6-2.2,1.4-4.3,2.3-6.3c0.9-2,2-4,3.3-5.9l1.4,8.4l2.8,1.9l1.9,1.9l0.5-4.2l2.8-0.9c0.9-5.3,2.3-10.6,4.2-15.9
c1.9-5.3,3.9-10.5,6.1-15.5c-1.3,3.8-2.3,7.6-3.3,11.5c-0.9,3.9-1.6,7.7-1.9,11.5l3.3-0.9c0-3.8,0.6-7.3,1.9-10.5
c1.2-3.3,2.7-6.5,4.2-9.6c-0.6,3.1-1.2,6.3-1.6,9.4c-0.5,3.1-0.4,6.3,0.2,9.4h2.8l5.2,4.2h3.3c6.6-8.7,13.4-20.8,20.4-36.1
c7-15.3,14.1-33.6,21.3-54.8c4.1-11.3,5.2-22.1,3.3-32.6c-1.9-10.5-4.8-20.7-8.9-30.7c-7.8-15.3-17.3-28.8-28.6-40.5
S309.6,68,313.7,33.6c-0.6,12.2,0.6,23.5,3.8,34c3.1,10.5,9.5,19.8,19.2,27.9l-9.8-22l52,68c6.2,11.6,10.1,23.7,11.5,36.3
s-0.9,26.6-6.8,42c-5,15-10.1,30.1-15.2,45.2c-5.2,15.2-8.7,29.3-10.5,42.4c19.4-4.4,37.9-13.3,55.5-26.7
c17.7-13.4,34.6-30.3,50.9-50.6l-6.6,17.3l5.6-8l3.3,5.2c0.6,4.7-1.6,12-6.8,21.8s-6.3,18-3.5,24.6c-7.2,3.4-12.1,8.3-14.8,14.5
c-2.7,6.3-1.3,15.2,4,26.7c1.6,3.8,2.9,7.5,4,11.3c1.1,3.8,1.3,7.7,0.7,11.7c-1.3-3.4-2.8-6.2-4.7-8.4c-1.9-2.2-4.4-3.8-7.5-4.7
l-1.4,20.2c-1.3-1.6-2.5-2.9-3.8-4c-1.3-1.1-2.7-1.9-4.2-2.6l-2.8,5.6l-4.2-4.7l-1.9,0.9l7,8l-4.7,0.5l3.3,6.6l-4.7-3.8l-2.8,1.4
v4.7l-4.2-4.2l-5.2-0.5c1.9,3.1,3.4,6.3,4.7,9.6c1.2,3.3,1.9,6.5,1.9,9.6c-1.9-5-4-9.3-6.3-12.9c-2.3-3.6-4.9-6.6-7.7-9.1
c0.9,5.6,2,11.1,3.3,16.4c1.2,5.3,2.5,10.8,3.8,16.4c-3.4-9.7-7.7-18-12.7-25.1c-5-7-10.9-12.4-17.8-16.2l8.9,10.3l-6.6-4.2
l0.5,2.8c2.5,2.8,5.1,5.7,7.7,8.7c2.7,3,5.4,6.2,8.2,9.6c-3.1-2.8-6.2-5.5-9.1-8.2c-3-2.7-6-5.4-9.1-8.2l0.9,4.2
c-2.2-1.9-4.5-3.7-6.8-5.4c-2.3-1.7-4.6-3.2-6.8-4.5c6.6,8.8,11.6,16.7,15.2,23.9c3.6,7.2,5.9,13.9,6.8,20.2
c-4.1-8.7-8.3-16.6-12.7-23.4c-4.4-6.9-8.9-13-13.6-18.3l-5.2,2.8l12.2,23.4l-5.6-4.2l-0.9,3.3l-1.4-8l-3.3-2.3l-1.9,3.3
l-1.9-2.8l-8.9-9.4l6.1,12.7l-10.8-9.4l8.9,18.3l-15-21.1l-1.4,4.7l7,8.9v3.3l-2.8,6.1l3.8,2.3v6.6c-1.9,5.6-4.2,10.8-7,15.5
s-5.6,9.2-8.4,13.6l-2.3,2.3l-1.9,4.7c-12.5,7.5-25,14.8-37.5,22c-12.5,7.2-23.4,14.1-32.8,20.6c-16.9-9.4-35.3-18.7-55.3-27.9
c-20-9.2-34.5-24.3-43.6-45.2L150.5,404z M216.2,346.1c2.2-0.5,4.8-0.5,8-0.2c-13.4-12.5-25.2-21-35.4-25.5
c-10.2-4.5-17.6-2.4-22.3,6.3c7.2,11.3,14.5,19.1,21.8,23.4c7.3,4.4,14.6,3.9,21.8-1.4C211.9,347.4,214,346.5,216.2,346.1z
M317.4,338.3c1.9-1.9,3.4-3.7,4.5-5.4c1.1-1.7,1.3-3.4,0.7-4.9c-4.4-5.6-15.3-5.9-32.8-0.7c-17.5,5.2-26.3,12.1-26.3,20.9
l23,14.1c5.3-1.6,10.7-4.1,16.2-7.5c5.5-3.4,11-7.3,16.6-11.7L317.4,338.3z"/>
</g>
</g>
<g id="Ninjutsu" class="st0">
<g class="st1">
<path d="M218,332.7v-0.9l-0.5-0.5c-13.4,8.4-27.3,15.5-41.7,21.1c-14.7,5.3-29.8,9.4-45.5,12.2c-15.6,2.8-31.7,4.5-48.3,5.2
c-16.6,0.6-33.6,0.3-51.1-0.9c7.8-12.2,16.2-24.1,25.3-35.6c9.1-11.6,19.3-22.6,30.7-33c11.4-10.5,24-20.2,37.7-29.3
c13.7-9.1,29.2-17.3,46.4-24.8l10.8-25.3h0.9l0.5-0.5c-8.4-13.4-15.5-27.3-21.1-41.7c-5.3-14.7-9.4-29.8-12.2-45.5
c-2.8-15.6-4.5-31.7-5.2-48.3c-0.6-16.6-0.3-33.6,0.9-51.1c12.2,7.8,24.1,16.3,35.6,25.3c11.6,9.1,22.6,19.3,33,30.7
c10.5,11.4,20.2,24,29.3,37.7c9.1,13.8,17.3,29.2,24.8,46.4l25.3,10.8v0.9l0.5,0.5c13.4-8.4,27.3-15.5,41.7-21.1
c14.7-5.3,29.8-9.4,45.5-12.2c15.6-2.8,31.7-4.5,48.3-5.2c16.6-0.6,33.6-0.3,51.1,0.9c-7.8,12.2-16.3,24.1-25.3,35.6
c-9.1,11.6-19.3,22.6-30.7,33c-11.4,10.5-24,20.2-37.7,29.3c-13.8,9.1-29.2,17.3-46.4,24.8l-10.8,25.3h-0.9l-0.5,0.5
c8.4,13.4,15.5,27.3,21.1,41.7c5.3,14.7,9.4,29.8,12.2,45.5c2.8,15.6,4.5,31.7,5.2,48.3c0.6,16.6,0.3,33.6-0.9,51.1
c-12.2-7.8-24.1-16.2-35.6-25.3c-11.6-9.1-22.6-19.3-33-30.7c-10.5-11.4-20.2-24-29.3-37.7c-9.1-13.7-17.3-29.2-24.8-46.4
L218,332.7z M296.3,258.6c0-11.3-3.9-20.8-11.7-28.6c-7.8-7.8-17.3-11.7-28.6-11.7s-20.8,3.9-28.6,11.7
c-7.8,7.8-11.7,17.3-11.7,28.6s3.9,20.8,11.7,28.6c7.8,7.8,17.3,11.7,28.6,11.7s20.8-3.9,28.6-11.7
C292.4,279.4,296.3,269.9,296.3,258.6z"/>
</g>
</g>
<g id="unknow" class="st0">
<g class="st1">
<path d="M176.3,350.1c-15.6-11.3-31.3-21.8-46.9-31.6c-15.6-9.8-31.3-19-46.9-27.4c-15.9-8.4-31.7-16.4-47.3-23.9
c-2.5-1.9-3.8-3.8-4-5.9c-0.2-2,1-4.3,3.5-6.8c16.6-7.5,33.4-16.9,50.6-28.1c17.2-10.9,34.8-22.7,53-35.2
c18.1-12.5,36.6-25.2,55.3-38c19.1-12.5,38.4-24.2,58.1-35.2c15,14.1,31.9,26.7,50.6,38s38.3,22.3,58.6,33
c20.3,10.8,40.8,22.1,61.4,34c20.3,11.6,39.8,24.8,58.6,39.8c-15.9,10-32,19.8-48.3,29.5c-15.9,9.4-31.8,18.8-47.6,28.4
c-15.8,9.5-31.3,19.3-46.6,29.3c-15.3,10-30.3,20.8-45,32.3c-10.9,9.4-22.2,14.8-33.8,16.4c-11.6,1.6-23.6-2.5-36.1-12.2
C207.7,373.8,191.9,361.6,176.3,350.1z M368.5,214.1c-13.8-7.8-27.3-15.9-40.5-24.1c-13.3-8.3-26.3-16.8-39.1-25.5
c-13.1-8.4-26.1-17.3-38.9-26.7c-14.7,9.1-28.8,18.3-42.2,27.7c-13.8,9.1-27,18.2-39.8,27.4c-12.8,9.2-25.2,18.5-37,27.9
c-11.6,9.1-22.8,18.3-33.8,27.7c13.4,6.9,26.9,14.1,40.3,21.6c13.1,7.8,26.3,15.7,39.4,23.7s26.1,16.2,38.9,24.6
c13.1,8.8,25.9,17.5,38.4,26.3c11.6-9.4,23.6-18.6,36.1-27.7c12.2-9.4,24.8-18.5,37.7-27.4c13-8.9,26.2-17.7,39.6-26.5
c13.4-8.7,27.3-17.5,41.7-26.3C395.5,229.4,381.9,221.9,368.5,214.1z M160.4,244.1c14.7-12.2,29.9-22.2,45.7-30
c15.8-7.8,30.9-18.9,45.2-33.3c12.5,9.1,25.5,17.7,38.9,26c13.4,8.3,27.5,16.3,42.2,24.1c1.9,1.3,3.4,2.8,4.7,4.7
c1.2,1.9,1.2,4.8,0,8.9c-19.1,4.1-35,12.6-47.8,25.5c-12.8,13-25.9,23.7-39.4,32.1c-8.8-12.2-21.1-22.9-37-32.1
C196.9,260.9,179.4,252.2,160.4,244.1z"/>
</g>
</g>
<g id="Rituals" class="st0">
<g class="st1">
<path class="st15" d="M115.1,440.3c9.5-9.5,13.7-20.7,12.4-33.5c-6.3-5.3-11.4-11.2-15.5-17.6c-4.1-6.4-6.6-13.5-7.5-21.3
c-8.4-2.8-16-6.6-22.7-11.3c-6.7-4.7-12.9-10.3-18.5-16.9V313c6.9-8.1,15.4-14.3,25.5-18.5c10.2-4.2,21-7.4,32.6-9.6
c9.7-16.6,22.1-28.4,37.3-35.4c15.2-7,30.9-11.5,47.1-13.4L146.3,98.3c10,0.3,18,2,24.1,5.2c6.1,3.1,9.1,8.4,9.1,15.9l36.6,115.8
c6.9-0.6,13.5-1,19.9-1.2c6.4-0.2,12.6-0.2,18.5-0.2l-6.1-200.2c10.9,2.2,19,5.8,24.1,10.8c5.2,5,6.6,11.7,4.5,20.2l-11.7,169.2
c4.7,0,9.4,0.1,14.1,0.2c4.7,0.2,9.4,0.4,14.1,0.7l35.2-112.5c-0.6-8.1,2.1-13.9,8.2-17.3c6.1-3.4,14.3-5.5,24.6-6.1l-58.6,136.9
c16.6,1.9,32.8,6.3,48.8,13.1c15.9,6.9,28.9,18.9,38.9,36.1c11.9,2.2,22.9,5.4,33,9.6c10.2,4.2,18.7,10.4,25.5,18.5v26.7
c-5.6,6.6-11.9,12.2-18.8,16.9c-6.9,4.7-14.5,8.4-23,11.3c-0.9,7.8-3.4,14.9-7.3,21.3c-3.9,6.4-9.1,12.3-15.7,17.6
c-0.9,12.8,3.3,24,12.7,33.5c9.4,9.5,23.1,17.6,41.3,24.1c-9.4,16.6-24.8,22.3-46.2,17.1c-21.4-5.2-34.5-24.3-39.1-57.4
c-14.1,5.6-29.5,9.8-46.4,12.4c-16.9,2.7-33.8,4-50.6,4c-16.6,0-33.4-1.3-50.4-4c-17-2.7-32.6-6.8-46.6-12.4
c-4.7,33.1-17.7,52.3-38.9,57.4c-21.3,5.2-36.7-0.5-46.4-17.1C91.8,457.9,105.6,449.8,115.1,440.3z M361.5,272.9
c-15.9-10.2-38-16.8-66.1-19.9l-11.7,27.2l-3.3-2.8l8-24.8c-4.1-0.3-8-0.6-12-0.9c-3.9-0.3-7.9-0.5-12-0.5l-1.9,24.8l-6.6,7.5
l-0.9-32.3c-5.9,0-11.6,0.2-17.1,0.5c-5.5,0.3-10.9,0.6-16.2,0.9l8,24.8l-4.2,5.2l-12.2-29.1c-27.2,3.4-48.4,10.2-63.5,20.4
c-15.2,10.2-22.7,23.5-22.7,40.1c0,7.5,4.2,13.3,12.7,17.3c8.4,4.1,19,7.1,31.6,9.1c12.7,2,26.6,3.4,42,4
c15,0.3,29.2,0.6,42.7,0.9c13.4-0.3,27.8-0.6,43.1-0.9c15-0.6,28.9-1.9,41.7-4c12.8-2,23.4-5.1,31.9-9.1
c8.4-4.1,12.7-9.8,12.7-17.3C385.4,296.8,377.4,283.1,361.5,272.9z"/>
</g>
</g>
<g id="Shujis" class="st0">
<g class="st1">
<path class="st13" d="M99.2,415.7c-2.3-2.2-4.8-3.9-7.3-5.2c-34.1-19.1-53.8-55.2-59.1-108.3c-5.6-52.8,2.7-102.1,24.8-147.9
c22.2-45.8,58-77.9,107.3-96.3c49.4-18.1,111.9-2.2,187.5,47.8c-46.3-20.3-89.1-26.4-128.4-18.3c-39.4,8.1-69.6,24.2-90.7,48.3
c-21.1,24.1-30.1,53-27,86.7c3.4,33.8,24.5,65.9,63.3,96.6c7.2,5.3,12.1,12.9,14.8,22.7c2.7,9.8,3.8,19.1,3.5,27.9
c0,6.3-1.3,12.4-4,18.5c-2.7,6.1-6,11.5-10.1,16.2c-4.1,4.7-8.9,8.6-14.5,11.7c-5.6,3.1-11.4,5.5-17.3,7
c-5.6,1.3-11.5,1.6-17.6,0.9c-6.1-0.6-12-1.9-17.6-3.8C104.1,419.4,101.5,417.9,99.2,415.7z M191.1,442.6
c17.3-9.2,28.5-28.4,33.5-57.4c-5,8.4-9.7,14.8-14.1,19c-4.4,4.2-8.6,7.9-12.7,11c9.1-11.6,16.9-23.7,23.4-36.6
c6.6-12.8,12.8-24.6,18.8-35.4c5.9-10.8,12-19.8,18.3-27c6.6-7.5,14.4-11.4,23.4-11.7l40.8,38v35.6c-4.1,8.8-8.9,16.4-14.5,23
s-12,11.9-19.2,15.9c-8.8,13.8-18.9,24.4-30.5,31.9c-11.3,7.2-23.8,11.8-37.7,13.8c-13.9,2-28.7,1.8-44.3-0.7
c-15.9-2.5-32.5-6.6-49.7-12.2C152.2,454.3,173.7,451.9,191.1,442.6z M297.3,269.9c12.8-19.1,25.3-34.8,37.5-47.3
c11.9-12.8,24.1-25.9,36.6-39.4c12.5-13.4,25.6-29.2,39.4-47.3c13.7-17.8,28.6-41.7,44.5-71.7l11.7,1.9l0.5,14.1l5.2,0.9
l-0.5,11.3L481,103l-6.1,7.5l-0.5,14.1c-11.3,11.3-21.7,25-31.4,41.3c-9.7,16.3-19.1,33.2-28.4,50.9
c-9.2,17.7-18.4,35.1-27.4,52.3c-9.1,17.5-18.6,33.1-28.6,46.9L297.3,269.9z"/>
</g>
</g>
<g id="Invocations">
<g>
<path class="st16" d="M122.9,85.7c-0.3-1.9,0.5-3.8,2.6-5.6c2-1.9,4.9-3.8,8.7-5.6c1.2,4.7,6.6,8,15.9,9.8s20.3,1.9,32.8,0
c12.8-1.9,23.4-5.2,31.9-10.1c8.4-4.8,12.3-9.6,11.7-14.3v-0.5c3.4,0.6,6.3,1.6,8.7,3s3.7,3,4,4.9l28.6,140.2h21.6l-30-144.8
c0.6-0.3,1.2-0.6,1.9-0.9c0.6-0.3,1.1-0.6,1.4-0.9l0.9-4.2c-0.3-2.2,1.5-4.4,5.4-6.6c3.9-2.2,8.8-3.8,14.8-4.7
c5.9-0.6,11.1-0.5,15.5,0.5c4.4,0.9,6.7,2.5,7,4.7l2.3,3.3c0.6,0,1.4,0.2,2.3,0.5c0.9,0.3,1.7,0.6,2.3,0.9l37.5,180.5
c-6.3,9.4-18,17.3-35.2,23.9c-17.2,6.9-35.7,11.8-55.5,14.8c-19.8,3-39.1,3.8-57.9,2.6c-18.4-1.2-32.2-5.3-41.3-12.2L122.9,85.7z
M151.5,63.9c-8.1-1.7-12.5-4.6-13.1-8.7c-0.6-4.1,2.7-8,9.8-12c7.2-3.9,16.2-6.8,27.2-8.7c10.6-1.6,20-1.5,28.1,0.2
c8.1,1.7,12.5,4.6,13.1,8.7c0.6,4.1-2.7,8.1-9.8,12.2c-7.2,4.1-16.3,6.9-27.2,8.4C169,65.7,159.6,65.6,151.5,63.9z M197.9,145.7
c-9.1,1.3-17.7,1.7-25.8,1.4c-8.1-0.3-15.8-1.4-23-3.3l25.3,113c6.2,3.1,13.4,5.2,21.6,6.3c8.1,1.1,17,1.3,26.7,0.7L197.9,145.7z
M339.4,432.6c-0.6,0-1.3-0.2-1.9-0.5c-0.6-0.3-1.4-0.6-2.3-0.9L311.8,321c-3.1,1.6-6.4,2.8-9.8,3.8c-3.4,0.9-6.7,1.6-9.8,1.9
l22,106.9c1.2,6.6-3.8,12.3-15,17.3c-10.9,4.7-23.5,8-37.7,10.1c-14.2,2-27.6,2.6-40.1,1.6c-12.5-0.9-19.2-3.9-20.2-8.9
l-32.8-153.8c9.1,6.9,22.8,10.9,41.3,12.2c18.4,1.3,37.6,0.4,57.4-2.6c19.8-3,38.4-7.9,55.5-14.8c17.2-6.6,29.1-14.4,35.6-23.4
l0.9,5.6h1.9l28.6,134.5l-3.3,1.4l2.8,10.3c-0.9,0.6-1.8,1.3-2.6,1.9c-0.8,0.6-1.6,1.3-2.6,1.9l0.9,4.2c0.9,5-6,8.4-20.9,10.1
c-14.8,1.7-22.7,0.1-23.7-4.9L339.4,432.6z M258.8,434l-21.1-99.4c-9.4,0-18.4-0.7-27-2.1c-8.6-1.4-17-3.7-25.1-6.8l23.9,107.8
c8.4,1.9,16.7,2.8,24.8,2.8C242.6,436.3,250.7,435.5,258.8,434z M217.6,470.1c13.4,3.4,27.5,4.2,42.2,2.3
c14.7-1.9,30.2-6.9,46.4-15c0.6,2.2,0.8,4.1,0.5,5.6c-0.3,1.6-1.3,3-2.8,4.2c-18.8,13.7-37.3,19.1-55.8,16.2
c-18.4-3-28.6-5.6-30.5-7.7V470.1z"/>
</g>
</g>
<g id="Katas" class="st0">
<g class="st1">
<path class="st17" d="M376,478.5l-14.1-30.9l-6.1,2.3l-72.7-96.1L263,369.3c-7.2,5.3-16.2,7.3-27,6.1c-10.8-1.2-19.5-5-26-11.3
l-29.5-28.6l-50.6-1.9l26.3-30.5c4.1-4.7,10.1-7.4,18-8.2c8-0.8,14.1,0.9,18.5,4.9l42.2,37.5l23-18.8L92.9,89.4L82.6,33.6
L133.2,59l175.3,221.7l24.4-16.9L308,212.7c-2.5-5.3-2.3-11.6,0.7-19c3-7.3,7.3-12.4,12.9-15.2l36.6-16.9L346,210.8l19.2,36.6
c4.4,7.8,5.6,17.1,3.8,27.9s-6.3,18.8-13.1,24.1l-20.2,15l0.5,0.9l71.3,95.6l-3.8,5.2l25.8,22l-2.3,27.2l-24.4,18.3L376,478.5z"
/>
</g>
</g>
</g>
<g id="Clans" class="st0">
<g id="Imperial" class="st1">
<rect y="18.6" class="st18" width="512" height="493.4"/>
<text transform="matrix(1 0 0 1 16 468.6476)" class="st19 st4 st5"></text>
</g>
<g id="Unicorn">
<rect y="18.6" class="st3" width="512" height="493.4"/>
<text transform="matrix(1 0 0 1 16 468.6476)" class="st20 st4 st5"></text>
</g>
<g id="Torttle">
<rect y="18.6" class="st3" width="512" height="493.4"/>
<text transform="matrix(1 0 0 1 16 468.6476)" class="st1 st4 st5"></text>
</g>
<g id="Scorpion">
<rect y="18.6" class="st3" width="512" height="493.4"/>
<text transform="matrix(1 0 0 1 16 468.6476)" class="st21 st4 st5"></text>
</g>
<g id="Phoenix">
<rect y="18.6" class="st3" width="512" height="493.4"/>
<text transform="matrix(1 0 0 1 16 468.6476)" class="st22 st4 st5"></text>
</g>
<g id="Mantis">
<rect y="18.6" class="st3" width="512" height="493.4"/>
<text transform="matrix(1 0 0 1 16 468.6476)" class="st23 st4 st5"></text>
</g>
<g id="Lion">
<rect y="18.6" class="st3" width="512" height="493.4"/>
<text transform="matrix(1 0 0 1 16 468.6476)" class="st24 st4 st5"></text>
</g>
<g id="Dragon">
<rect y="18.6" class="st3" width="512" height="493.4"/>
<text transform="matrix(1 0 0 1 16 468.6476)" class="st25 st4 st5"></text>
</g>
<g id="Crab">
<rect y="18.6" class="st3" width="512" height="493.4"/>
<text transform="matrix(1 0 0 1 16 468.6476)" class="st26 st4 st5"></text>
</g>
<g id="Crane">
<rect y="18.6" class="st3" width="512" height="493.4"/>
<text transform="matrix(1 0 0 1 16 468.6476)" class="st27 st4 st5"></text>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 48 KiB

View File

@@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8"?>
<svg id="filled_outline" height="512" viewBox="0 0 512 512" width="512" xmlns="http://www.w3.org/2000/svg" data-name="filled outline"><path d="m256 24v97.786h56v-65.786c0-17.673-25.072-32-56-32z" fill="#74a2b7"/><path d="m256 88c-30.928 0-56-14.327-56-32v400c0 17.673 25.072 32 56 32s56-14.327 56-32v-400c0 17.673-25.072 32-56 32z" fill="#dceaef"/><path d="m232 456v-371.084c-18.918-5.136-32-16.151-32-28.916v400c0 17.673 25.072 32 56 32a95.522 95.522 0 0 0 16-1.333c-23.129-3.935-40-16.167-40-30.667z" fill="#74a2b7"/><path d="m312 352-88-88h88z" fill="#74a2b7"/><path d="m200 240-88 88h40v48l104-104 104 104v-48h40l-88-88z" fill="#d32668"/><path d="m353.307 224.7-22.751 23.054a1 1 0 0 0 -.277.853l4.857 32.027a1 1 0 0 1 -.826 1.137l-31.971 5.26a1 1 0 0 0 -.727.527l-14.869 28.788a1 1 0 0 1 -1.337.434l-28.957-14.556a1 1 0 0 0 -.9 0l-28.957 14.556a1 1 0 0 1 -1.338-.434l-14.867-28.786a1 1 0 0 0 -.726-.528l-31.972-5.26a1 1 0 0 1 -.826-1.137l4.858-32.027a1 1 0 0 0 -.277-.852l-22.751-23.056a1 1 0 0 1 0-1.4l22.751-23.054a1 1 0 0 0 .277-.853l-4.857-32.027a1 1 0 0 1 .826-1.137l31.971-5.26a1 1 0 0 0 .727-.527l14.869-28.788a1 1 0 0 1 1.337-.434l28.957 14.556a1 1 0 0 0 .9 0l28.957-14.556a1 1 0 0 1 1.338.434l14.869 28.788a1 1 0 0 0 .726.528l31.972 5.26a1 1 0 0 1 .826 1.137l-4.858 32.027a1 1 0 0 0 .277.852l22.749 23.054a1 1 0 0 1 0 1.4z" fill="#ffc866"/><path d="m270.854 291.115a1 1 0 0 0 -.9 0l-28.954 14.556a1 1 0 0 1 -1.338-.434l-14.869-28.788a1 1 0 0 0 -.726-.528l-31.972-5.26a1 1 0 0 1 -.826-1.137l4.857-32.026a1 1 0 0 0 -.276-.853l-22.75-23.053a1 1 0 0 1 0-1.405l22.751-23.054a1 1 0 0 0 .276-.853l-3.711-24.475-14.724 2.422a1 1 0 0 0 -.826 1.137l4.857 32.027a1 1 0 0 1 -.277.853l-22.753 23.056a1 1 0 0 0 0 1.4l22.751 23.054a1 1 0 0 1 .276.852l-4.857 32.027a1 1 0 0 0 .826 1.137l31.972 5.26a1 1 0 0 1 .726.528l14.869 28.788a1 1 0 0 0 1.338.434l28.957-14.556a1 1 0 0 1 .9 0l28.957 14.556a1 1 0 0 0 1.337-.434l7.071-13.691z" fill="#e2a23b"/><circle cx="256" cy="224" fill="#ffedd4" r="48"/><path d="m256 176a47.969 47.969 0 0 0 -40.988 23.012 48.007 48.007 0 0 1 65.976 65.976 48 48 0 0 0 -24.988-88.988z" fill="#f9d59b"/><path d="m405.657 322.343-66.134-66.134-.808-5.33 20.285-20.556a9.032 9.032 0 0 0 0-12.644l-20.286-20.557 4.332-28.56a9.035 9.035 0 0 0 -7.438-10.227l-15.608-2.569v-99.766c0-22.43-28.112-40-64-40a8 8 0 0 0 -8 8v55.65c-23.934-2.1-40-13.4-40-23.65a8 8 0 0 0 -16 0v99.766l-15.609 2.568a9.033 9.033 0 0 0 -7.437 10.229l4.331 28.558-20.285 20.556a9.032 9.032 0 0 0 0 12.644l20.286 20.557-.808 5.331-66.134 66.134a8 8 0 0 0 5.656 13.657h32v40a8 8 0 0 0 13.657 5.657l34.343-34.343v60.686h16v-76.686l10.571-10.57a9.033 9.033 0 0 0 11.616 3.186l25.813-12.976 25.816 12.978a8.928 8.928 0 0 0 4.012.951 9.025 9.025 0 0 0 7.589-4.152l10.583 10.583v124.686c0 11.352-19.713 24-48 24s-48-12.648-48-24v-32h-16v32c0 22.43 28.112 40 64 40s64-17.57 64-40v-108.686l34.343 34.343a8 8 0 0 0 13.657-5.657v-40h32a8 8 0 0 0 5.657-13.657zm-101.657-266.343c0 10.247-16.066 21.548-40 23.65v-47.3c23.937 2.097 40 13.402 40 23.65zm-48 40c19.307 0 36.36-5.084 48-13.274v64.9l-10.149-19.649a9.03 9.03 0 0 0 -12.038-3.909l-25.813 12.978-25.816-12.978a9.027 9.027 0 0 0 -12.035 3.913l-10.149 19.649v-64.9c11.64 8.186 28.693 13.27 48 13.27zm-104 224h-20.687l37.687-37.681a9.038 9.038 0 0 0 7.4 7.346l28.5 4.69 5.939 11.5-50.839 50.832v-28.687a8 8 0 0 0 -8-8zm108.037-24.925a9.055 9.055 0 0 0 -8.079 0l-22.771 11.447-11.687-22.629a9.028 9.028 0 0 0 -6.537-4.754l-25.153-4.139 3.822-25.2a9.044 9.044 0 0 0 -2.494-7.662l-17.898-18.138 17.9-18.138a9.044 9.044 0 0 0 2.492-7.67l-3.822-25.192 25.159-4.139a9.042 9.042 0 0 0 6.526-4.75l11.693-22.634 22.775 11.449a9.045 9.045 0 0 0 8.079 0l22.771-11.447 11.69 22.632a9.028 9.028 0 0 0 6.537 4.754l25.15 4.135-3.822 25.2a9.044 9.044 0 0 0 2.494 7.662l17.898 18.138-17.9 18.138a9.044 9.044 0 0 0 -2.492 7.67l3.822 25.192-25.159 4.139a9.042 9.042 0 0 0 -6.526 4.75l-11.693 22.634zm99.963 24.925a8 8 0 0 0 -8 8v28.687l-50.833-50.834 5.939-11.5 28.5-4.689a9.038 9.038 0 0 0 7.4-7.347l37.681 37.683z"/><path d="m308.812 242.666-15.086-5.332a40.034 40.034 0 1 1 2.274-13.334h16a55.951 55.951 0 1 0 -3.188 18.666z"/></svg>

After

Width:  |  Height:  |  Size: 4.1 KiB

View File

@@ -0,0 +1,541 @@
<?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" x="0px" y="0px"
viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve">
<style type="text/css">
.st0{display:none;}
.st1{display:inline;}
.st2{fill:#FFFFFF;}
.st3{display:inline;fill:none;}
.st4{font-family:'L5R-Icons';}
.st5{font-size:480px;}
.st6{fill:#699678;}
.st7{fill:#917896;}
.st8{fill:#9B7350;}
.st9{fill:#5F919B;}
.st10{fill:#4B4641;}
.st11{fill:#A75B58;}
.st12{fill:#68829B;}
.st13{fill:#009933;}
.st14{fill:#CC3300;}
.st15{fill:#0099FF;}
.st16{fill:#FF6600;}
.st17{fill:#FF0000;}
.st18{fill:none;}
.st19{fill:#78FFB4;}
.st20{display:inline;fill:#785A87;}
.st21{display:inline;fill:#9B463C;}
.st22{display:inline;fill:#B9784B;}
.st23{display:inline;fill:#2D551E;}
.st24{display:inline;fill:#A08C50;}
.st25{display:inline;fill:#55826E;}
.st26{display:inline;fill:#82828C;}
.st27{display:inline;fill:#789191;}
</style>
<g id="Fond" class="st0">
<g transform="translate(0,0)" class="st1">
<path class="st2" d="M249.9,18.6c-81.4,0-231.4,155.8-171.7,300.7c8,25.3,27.9,50.3,49.2,77.1c24.5,30.6,51.6,63.2,68.7,96.9h20.6
c-18.1-39.8-48.6-75.9-74.6-108.5c-27.4-34.3-48.8-65.3-48.8-88c0-3.6,0.4-7.3,1.1-11.1l-0.1,0c0.3-1.2,0.6-2.5,0.9-3.7
c0.9-3.8,2.1-7.6,3.7-11.4c23.1-61.4,94.2-106.3,146.6-135l3.6-2l3.9,1.3c60.9,20.9,131.3,66.8,156,135.8c1.1,3,2.1,6,2.9,9
c0.4,1.4,0.8,2.8,1.2,4.3l-0.2,0c1.1,5.1,1.7,10.2,1.7,15.2v0c0,22.3-24.4,53.5-55,87.5c-29.1,32.3-62.3,67.6-80,106.6H300
c16.8-32.1,46.2-64,73.3-94.1c23.1-25.7,45.3-50,54.9-74.9C481,200.2,329,18.7,249.9,18.6L249.9,18.6z M250.7,154
c-38.7,21.5-85,52.2-113.6,88.2c9.7,83,59,146.2,118.3,146.2c59.1,0,108.2-62.7,118.2-145.3C344.7,200.9,295.6,170.1,250.7,154
L250.7,154z M192.5,237c0.8,0,1.6,0,2.4,0c13,0.1,26,2.7,39.1,7.4c-16.8,40.6-59,42-78.1,0C168.1,239.6,180.3,237.2,192.5,237z
M317.4,237c13-0.1,26,2.3,39.1,7.4c-19.1,42-61.3,40.6-78.1,0C291.3,239.7,304.4,237.1,317.4,237L317.4,237z M204.6,512l0.1,0.3
h86.8l0.1-0.3L204.6,512L204.6,512z"/>
</g>
<rect y="18.6" class="st3" width="512" height="493.4"/>
<text transform="matrix(1 0 0 1 16 468.6476)" class="st1 st4 st5"></text>
</g>
<g id="Elements" class="st0">
<g id="Earth" class="st1">
<g>
<path class="st6" d="M31,258.6c0-30.9,5.9-60.2,17.8-87.7c11.6-27.2,27.6-51,48-71.5c20.5-20.5,44.3-36.5,71.5-48
c27.5-11.9,56.7-17.8,87.7-17.8s60.2,5.9,87.7,17.8c27.2,11.6,51,27.6,71.5,48c20.5,20.5,36.5,44.3,48,71.5
c11.9,27.5,17.8,56.7,17.8,87.7s-5.9,60.2-17.8,87.7c-11.6,27.2-27.6,51-48,71.5c-20.5,20.5-44.3,36.5-71.5,48
c-27.5,11.9-56.7,17.8-87.7,17.8s-60.2-5.9-87.7-17.8c-27.2-11.6-51-27.6-71.5-48c-20.5-20.5-36.5-44.3-48-71.5
C36.9,318.8,31,289.6,31,258.6z M438.3,181.8c-10.3-24.1-24.5-45.1-42.4-63c-18-18-39-32.1-63-42.4C308.8,66,283.2,60.8,256,60.8
s-52.8,5.2-76.9,15.5c-24.1,10.3-45.1,24.5-63,42.4c-18,18-32.1,39-42.4,63c-10.3,24.1-15.5,49.7-15.5,76.9
c0,5.3,0.2,10.6,0.7,15.9c0.5,5.3,1,10.6,1.6,15.9l4.2-0.5c5.9-4.4,11.4-9.3,16.4-14.8c5-5.5,9.7-11.3,14.1-17.6
c5.3,0.9,10.8,0.8,16.4-0.5c5.6-1.2,10.6-4.8,15-10.8l55.8-75.9l16.4,22l75-83.9l35.2,36.6c4.1,4.4,7.4,9.4,10.1,15
c2.7,5.6,6,10.8,10.1,15.5c5.3,6.3,10.9,12.4,16.6,18.5c5.8,6.1,12.1,11.6,19,16.6l8.4,6.6l21.1-12.2
c7.2,17.5,15.2,34.7,24.1,51.6s18.7,33.6,29.3,50.2c2.2-7.8,3.8-15.7,4.7-23.7s1.4-16.2,1.4-24.6
C453.8,231.5,448.7,205.8,438.3,181.8z M162.3,231.9l37-19.2l-15.9-19.2L162.3,231.9z M313.7,234.3l28.6,47.3
c5-4.7,9.6-10.5,13.8-17.3c4.2-6.9,8.2-14.5,12-23L288.3,156l-34.7,227.3L313.7,234.3z M405.1,277.4c0.9-2.8,2.3-5.6,4.2-8.4
l-20.6-37h-1.9l6.1,75c3.1-2.2,5.6-5.2,7.5-9.1c1.9-3.9,3-7.9,3.3-12C403.7,283,404.1,280.2,405.1,277.4z"/>
</g>
</g>
<g id="Air">
<g class="st1">
<path class="st7" d="M31,258.6c0-30.9,5.9-60.2,17.8-87.7c11.6-27.2,27.6-50.9,48-71.3c20.5-20.3,44.3-36.4,71.5-48.3
c27.5-11.9,56.7-17.8,87.7-17.8s60.2,5.9,87.7,17.8c27.2,11.9,51,28,71.5,48.3c20.5,20.3,36.5,44.1,48,71.3
c11.9,27.5,17.8,56.7,17.8,87.7s-5.9,60.2-17.8,87.7c-11.6,27.2-27.6,51-48,71.5c-20.5,20.5-44.3,36.5-71.5,48
c-27.5,11.9-56.7,17.8-87.7,17.8s-60.2-5.9-87.7-17.8c-27.2-11.6-51-27.6-71.5-48c-20.5-20.5-36.5-44.3-48-71.5
C36.9,318.8,31,289.6,31,258.6z M138.8,314c-11.9-5.6-22.6-13.2-32.1-22.7c-9.5-9.5-17.7-21.2-24.6-34.9
c-7.2-13.7-13-29.8-17.3-48.3c-2.2,8.1-3.8,16.4-4.9,24.8c-1.1,8.4-1.6,17-1.6,25.8c0,3.1,0.1,6.2,0.2,9.1c0.2,3,0.4,5.9,0.7,8.7
C77.9,293,97,306,116.5,315.4c19.5,9.4,39.6,12.8,60.2,10.3C163,323.2,150.4,319.3,138.8,314z M443.3,194.7
c-7-20.2-16.8-38.5-29.3-55.1c-20.9-14.1-43.3-21.9-67-23.4c-23.8-1.6-46,1.4-66.8,8.9c-20.8,7.5-38.5,18.6-53.2,33.3
c-14.7,14.7-23.4,31.3-26.3,49.7c-1.6,10.9,3,21.6,13.6,31.9c10.6,10.3,21.4,15.6,32.3,15.9c8.4,0.3,16.5-3,24.1-9.8
c7.7-6.9,12-14.4,12.9-22.5c0.6-5.9-0.8-11.7-4.2-17.3c-3.4-5.6-8.9-9.4-16.4-11.3c-4.1-0.9-8.5-0.2-13.4,2.1
c-4.8,2.3-7.7,5.7-8.7,10.1c-1.3,4.7-1.1,8.4,0.5,11.3c1.6,2.8,4.2,4.2,8,4.2c3.4,0.3,6.3-0.8,8.7-3.3c2.3-2.5,0.5-5.9-5.4-10.3
c5.9-0.3,10.3,1.3,13.1,4.9c2.8,3.6,3.6,9.1,2.3,16.6c-0.6,4.1-3.4,7.2-8.4,9.4c-5,2.2-9.5,3-13.6,2.3
c-7.2-1.2-13.8-5.2-19.7-11.7c-5.9-6.6-8.9-13.4-8.9-20.6c0-9.4,3.8-18.8,11.3-28.1s15.9-14.4,25.3-15
c12.8-0.9,24.8,1.1,35.9,6.1c11.1,5,18.5,19.8,22.3,44.5c5.9-11.3,14.5-19.2,25.8-23.9s22.7-5.7,34.2-3
c11.6,2.7,22,9.3,31.4,19.9c9.1,10.3,14.2,25,15.5,44.1c0.9,12.2-1.7,23.9-8,35.2c-5.9,11.3-13.8,20.7-23.7,28.4
c-9.8,7.7-20.7,12.6-32.6,14.8c-11.9,2.5-23.1,0.9-33.8-4.7c2.5,20-0.9,35.9-10.3,47.8c-9.4,11.6-21.6,18.8-36.6,21.8
c-15,3-31.3,1.3-48.8-4.9c-17.2-6.2-32.3-17.3-45.5-33.3c-1.3-1.2-3.2-1.8-5.9-1.6c-2.7,0.2-4.6,1-5.9,2.6l-5.6,8.4
c-17.8-6.2-35.2-16.4-52.3-30.5c-17-14.1-33.8-30.9-50.4-50.6c3.8,23.8,11.3,45.9,22.5,66.6c11.6,20.6,26.1,38.5,43.6,53.7
c17.5,15.2,37.2,27,59.1,35.4c22.2,8.8,45.8,13.1,70.8,13.1c27.2,0,52.8-5.2,76.9-15.5c24.1-10.3,45.1-24.4,63-42.4
c18-18,32.1-39,42.4-63c10.3-24.1,15.5-49.7,15.5-76.9C453.8,236.1,450.3,214.8,443.3,194.7z M147.7,93.2
c-7.2,4.7-14.1,9.8-20.6,15.5s-12.8,11.7-18.8,18.3c-4.4,35.6-3.6,64.1,2.3,85.3c5.6,21.3,14.9,37.6,27.9,49
c13,11.4,28.8,18.8,47.6,22.3c18.4,3.4,38.1,5,59.1,4.7c-26.6-4.1-48.1-11.6-64.7-22.5c-16.3-10.9-28.1-24.8-35.4-41.5
c-7.3-16.7-10.5-36.2-9.6-58.4C136.2,143.7,140.2,119.4,147.7,93.2z M309.4,68.1c-10.9-3-22.2-5.1-33.8-6.3
C256,69,239.1,77.1,225.1,86.1c-13.8,9.4-24.8,19.8-33,31.4c-8.3,11.6-13.5,24.1-15.7,37.5c-2.5,13.8-2.2,28.4,0.9,44.1
c1.6-16.9,5.8-32.2,12.7-45.9c7.2-14.1,17.4-26.1,30.7-36.1c13.3-10,29.9-18.1,49.9-24.4c20-6.6,43.4-10.8,70.3-12.7
C330.8,75.1,320.4,71.1,309.4,68.1z M264,317.2c-3.1,2.8-5.2,6.1-6.1,9.8c-0.3,1.9,0.2,3.9,1.6,6.1c1.4,2.2,3,3.6,4.9,4.2
c1.2,0.3,2.6,0.2,4-0.5c1.4-0.6,2.4-1.4,3-2.3c0.6-0.9,1-1.9,1.2-2.8c0.2-0.9,0.1-1.7-0.2-2.3c-0.3-0.6-0.7-1.2-1.2-1.6
s-1-0.9-1.6-1.2c8.1-1.2,11.6,2.4,10.5,11c-1.1,8.6-6.5,14-16.2,16.2c-8.4,1.6-15-0.5-19.7-6.1s-7.2-12.2-7.5-19.7
c0-13.1,5.1-22,15.2-26.5c10.2-4.5,22.7-5.7,37.7-3.5c-13.1-10.9-26.3-14.2-39.4-9.8c-13.4,4.1-23.4,11.4-30,22
c-6.6,10.6-8,22-4.2,34.2s15.9,20.9,36.6,26.3c22.8,3.4,36.7-3.8,41.7-21.6c5-17.8-1.3-29.4-18.8-34.7
C271,313.5,267.1,314.4,264,317.2z M379,259.4c2-5.5,2.9-10.9,2.6-16.2c-0.3-4.4-1.7-8.6-4.2-12.7c-2.5-4.1-5.6-7.3-9.4-9.8
c-2.8-2.2-6.1-3.5-9.8-4s-7.3-0.2-10.8,0.7c-3.1,0.6-6,2-8.7,4c-2.7,2-4.5,4.6-5.4,7.7c-0.6,1.9-0.6,3.9,0,6.1
c0.6,2.2,1.6,4.1,2.8,5.6c1.6,1.3,3.5,2.1,5.9,2.6s4.5,0.4,6.3-0.2c1.2-0.3,2.4-1.1,3.5-2.3c1.1-1.2,1.6-2.5,1.6-3.8
c0.3-0.9,0.2-1.8-0.5-2.6c-0.6-0.8-1.4-1.5-2.3-2.1c-0.9-0.6-1.8-1.2-2.6-1.6c-0.8-0.5-1.6-0.9-2.6-1.2c0.3-1.2,1.7-2.1,4.2-2.6
c2.5-0.5,4.5-0.2,6.1,0.7c3.4,1.6,6.3,4.4,8.7,8.4c2.3,4.1,3,8,2.1,11.7c-1.6,5.3-5.2,9.7-10.8,13.1c-5.6,3.4-11.1,5.2-16.4,5.2
c-5.9,0-11.6-1.9-16.9-5.6c-5.3-3.8-9.2-8.9-11.7-15.5c-1.6,5.9-3.3,11.1-5.2,15.5c-1.9,4.4-4.1,7.7-6.6,9.8
c9.4,12.2,20.7,18.4,34,18.5c13.3,0.2,25.7-5.2,37.3-16.2C374.1,269.3,377,264.8,379,259.4z M389.1,227.7
c4.4,20.3,2.8,37.3-4.7,51.1c-7.5,13.8-22.8,23.4-45.9,29.1c11.9,3.1,23,2.2,33.3-2.8c10.3-5.3,18.4-12.3,24.4-21.1
c5.9-8.7,8.7-18.4,8.4-29.1C404,244.6,398.8,235.5,389.1,227.7z"/>
</g>
</g>
<g id="Fire">
<g class="st1">
<path class="st8" d="M31,258.6c0-30.9,5.9-60.2,17.8-87.7c11.6-27.2,27.6-51,48-71.5c20.5-20.5,44.3-36.5,71.5-48
c27.5-11.9,56.7-17.8,87.7-17.8s60.2,5.9,87.7,17.8c27.2,11.6,51,27.6,71.5,48c20.5,20.5,36.5,44.3,48,71.5
c11.9,27.5,17.8,56.7,17.8,87.7s-5.9,60.2-17.8,87.7c-11.6,27.2-27.6,51-48,71.5c-20.5,20.5-44.3,36.5-71.5,48
c-27.5,11.9-56.7,17.8-87.7,17.8s-60.2-5.9-87.7-17.8c-27.2-11.6-51-27.6-71.5-48c-20.5-20.5-36.5-44.3-48-71.5
C36.9,318.8,31,289.6,31,258.6z M370.4,384.7c0.3-3.1,1.4-5.3,3.3-6.6c2.8-2.5,4.7-5.4,5.6-8.7s1.4-7.4,1.4-12.4
c2.2,3.1,3.8,6.8,4.9,11c1.1,4.2,0.9,9.5-0.7,15.7c-0.9,2.2-0.6,3.8,0.9,4.7c1.6,0.9,3.3,0,5.2-2.8c6.6-10.3,9.7-20.7,9.4-31.2
c-0.3-10.5-3.3-20.9-8.9-31.2c-8.1-16.9-10.2-30.1-6.1-39.6c4.1-9.5,12.8-15.1,26.3-16.6c-13.1,9.1-18.2,18.2-15.2,27.4
c3,9.2,12,18.5,27,27.9c4.1-5.9,8.3-11.5,12.7-16.6c4.4-5.2,8.9-9.8,13.6-13.8l1.9-0.9c0.6-5.3,1.2-10.6,1.6-15.9
c0.5-5.3,0.7-10.8,0.7-16.4c0-27.2-5.2-52.8-15.5-76.9c-10.3-24.1-24.5-45.1-42.4-63c-18-18-39-32.1-63-42.4
C308.8,66,283.2,60.8,256,60.8s-52.8,5.2-76.9,15.5c-24.1,10.3-45.1,24.5-63,42.4c-18,18-32.1,39-42.4,63
c-10.3,24.1-15.5,49.7-15.5,76.9c0,21.9,3.4,42.7,10.1,62.6c6.7,19.8,16.2,38,28.4,54.6c1.6-0.3,3.4-0.5,5.4-0.5
c2,0,3.4-0.5,4-1.4c0.6-0.9,0.7-1.9,0.2-2.8s-0.5-1.7-0.2-2.3c2.5-4.4,6.3-8,11.5-10.8s10.1-4.4,14.8-4.7
c-5.6,5.9-9.4,11.6-11.3,17.1c-1.9,5.5-0.9,10.1,2.8,13.8l10.3,10.8c0.9-6.9,2.3-13.4,4.2-19.7c1.9-6.2,4.1-12.3,6.6-18.3
c0.9,5.9,2.4,11.8,4.5,17.6c2,5.8,3.4,11.6,4,17.6c10-1.2,14.9-6.6,14.8-16.2c-0.2-9.5-2.1-17.1-5.9-22.7l-6.6-10.3
c-10.3-16.6-19.1-36.4-26.3-59.5c-7.2-23.1,3.9-42,33.3-56.7c-9.7,9.4-14.6,18.7-14.8,27.9c-0.2,9.2,4.5,17.9,13.8,26
c2.2-12.8,6.2-20.3,12-22.5c5.8-2.2,8.2-15.3,7.3-39.4c6.2,5.3,9.8,13.7,10.8,25.1c0.9,11.4,4.4,18.4,10.3,20.9
c7.2-4.1,8.6-12.9,4.2-26.5c-4.4-13.6-9.8-26.6-16.4-39.1c-15-26.9-17.3-49.7-7-68.4c10.3-19.1,24.4-32.3,42.2-39.6
c17.8-7.3,35-7.7,51.6-1.2c16.6,6.3,23.4,21.3,20.6,45c-1.9-19.1-7.7-30-17.3-32.8c-9.7-2.5-18.1,0-25.3,7.5
c-7.2,7.5-10.8,18.8-10.8,33.8c0,14.7,8.9,30,26.7,45.9c10.6-2.8,16-8.4,16.2-16.9c0.2-8.4-0.4-15.9-1.6-22.5
c2.8,6.6,5.6,12.7,8.4,18.5c2.8,5.8,6.4,10.4,10.8,13.8c3.1,3.1,5.4,7.3,6.8,12.7c1.4,5.3,1.6,12,0.7,20.2l20.2,19.2
c4.1-2.8,6.7-6.2,8-10.1c1.2-3.9,0.6-8.4-1.9-13.4l-5.2-10.3c-5.9-11.9-8.1-23-6.6-33.5c1.6-10.5,10.2-15.7,25.8-15.7
c-10.9,8.1-16.1,15.6-15.5,22.5c0.6,6.9,3.1,13,7.5,18.3l13.1,15.9c9.1,10.6,15.3,22.7,18.8,36.1c3.4,13.4,0.2,29.1-9.8,46.9
c9.1,15.6,13,30.2,11.7,43.8c-1.3,13.6-6.6,26.3-15.9,38.2c-0.6,1.9-1.6,3.5-3,4.9s-2.3,3-2.6,4.9c-0.3,2.2-0.2,4.3,0.2,6.3
c0.5,2,1.2,4.1,2.1,6.3c0.3,0.6,0.7,1.4,1.2,2.3s1.2,1.4,2.1,1.4c1.2,0,2.3-0.8,3.3-2.3c0.9-1.6,1.7-3,2.3-4.2
C369.1,390.5,370.1,387.9,370.4,384.7z M301,408.6c0.3-7.5,3.8-13.7,10.3-18.8c8.4-6.6,15.7-14.3,21.8-23.2s8.2-17.1,6.3-24.6
c-1.3,3.4-3.2,5.6-5.9,6.6c-2.7,0.9-5.6,1.3-8.7,0.9l-10.8-0.9c-1.3,0-2-1.1-2.3-3.3c-0.3-2.2-0.2-3.9,0.5-5.2
c10.3-16.9,16.6-31.2,19-42.9s1-20.2-4-25.5c-1.3,5.3-4.1,11.1-8.7,17.3c-4.5,6.3-8.7,9.5-12.4,9.8h-7c-1.9,0-3.7-0.5-5.4-1.6
c-1.7-1.1-2.9-2.6-3.5-4.5c-4.4-15.3-10.9-28.5-19.7-39.6c-8.8-11.1-18-21.6-27.7-31.6c10,35.9,9.4,63.8-1.9,83.7
c-11.3,19.8-30,24.6-56.3,14.3c10,18.1,16.9,35.6,20.6,52.3c3.8,16.7-0.9,31.6-14.1,44.8c-0.3,0.3-0.6,0.5-0.9,0.7
c-0.3,0.2-0.8,0.2-1.4,0.2h-5.2c-0.9,0-1.9,0.2-2.8,0.7s-1.9,1-2.8,1.6c-0.6,0.6-1.2,1.3-1.6,2.1c-0.5,0.8-0.7,1.6-0.7,2.6
c-0.3,0.9-0.4,1.9-0.2,2.8c0.2,0.9,0.4,1.7,0.7,2.3c0.6,0.9,1.2,1.7,1.6,2.3c0.5,0.6,1,1.3,1.6,1.9c2.8,2.2,5.9,4.2,9.1,6.1
s6.6,3.1,10.1,3.8l8.9-2.3c-2.8-3.8-5.1-7.1-6.8-10.1c-1.7-3-2.6-5.1-2.6-6.3c1.9,0.6,3.9,1.9,6.1,3.8c2.2,1.9,4.5,4.1,7,6.6
l7.5-5.2c1.9-4.7,3.1-9.5,3.8-14.5c0.6-5,0-9.7-1.9-14.1l-7.5-17.8c-0.3-1.2-0.5-2.4-0.7-3.5c-0.2-1.1-0.1-2.3,0.2-3.5l13.1,17.8
c2.2,3.1,4.4,3.3,6.6,0.5c2.2-2.8,3.9-5.2,5.2-7c1.2-2.5,1.6-5.4,0.9-8.7c-0.6-3.3-1.4-6.3-2.3-9.1c-2.2-5.9-5.2-11.6-8.9-16.9
c-3.8-5.3-7.8-10.3-12.2-15c6.2,1.9,11.8,5.3,16.6,10.3c4.8,5,9.8,9.8,14.8,14.5c2.5,2.5,4.9,3.4,7.3,2.6
c2.3-0.8,2.7-2.9,1.2-6.3c-4.1-10.6-5.7-22.7-4.9-36.1c0.8-13.4,6-26.3,15.7-38.4c-0.3,7.2,0,16.5,0.9,27.9
c0.9,11.4,4.4,19.8,10.3,25.1c4.4,2.2,9.1,1.5,14.1-2.1c5-3.6,8.7-7.7,11.3-12.4c-5.9,17.2-8.2,33.9-6.8,50.2
c1.4,16.3-3.5,31.1-14.8,44.5c-5,5.6-4.8,10.7,0.5,15.2c5.3,4.5,10.6,4.1,15.9-1.2c-3.4,5.3-5.2,9.4-5.2,12.2s2.5,4.1,7.5,3.8
c2.8-0.9,5.5-2,8.2-3.3c2.7-1.2,5.2-2.7,7.7-4.2C305.5,426.8,300.7,416.1,301,408.6z"/>
</g>
</g>
<g id="Water">
<g class="st1">
<path class="st9" d="M31,258.6c0-30.9,5.9-60.2,17.8-87.7c11.6-27.2,27.6-51,48-71.5c20.5-20.5,44.3-36.5,71.5-48
c27.5-11.9,56.7-17.8,87.7-17.8s60.2,5.9,87.7,17.8c27.2,11.6,51,27.6,71.5,48c20.5,20.5,36.5,44.3,48,71.5
c11.9,27.5,17.8,56.7,17.8,87.7s-5.9,60.2-17.8,87.7c-11.6,27.2-27.6,51-48,71.5c-20.5,20.5-44.3,36.5-71.5,48
c-27.5,11.9-56.7,17.8-87.7,17.8s-60.2-5.9-87.7-17.8c-27.2-11.6-51-27.6-71.5-48c-20.5-20.5-36.5-44.3-48-71.5
C36.9,318.8,31,289.6,31,258.6z M376,327.8c11.9-8,22-17.1,30.5-27.4c8.4-10,14.8-21.2,19.2-33.5c4.4-12.3,8.1-24.8,11.3-37.3
c1.6-6.6,2.7-13.1,3.5-19.7c0.8-6.6,1.2-13.1,1.2-19.7c-6.9-19.1-16.4-36.4-28.6-52c-12.5-15.9-26.8-29.6-42.9-41
c-16.1-11.4-33.8-20.4-53.2-27c-19.4-6.2-39.7-9.4-60.9-9.4c-27.2,0-52.8,5.2-76.9,15.5c-24.1,10.3-45.1,24.5-63,42.4
c-18,18-32.1,39-42.4,63c-10.3,24.1-15.5,49.7-15.5,76.9c0,10,0.7,19.8,2.1,29.3c1.4,9.5,3.5,18.8,6.3,27.9
c9.7-44.4,22.7-81.4,38.9-111.1c16.6-29.7,35.9-52.9,58.1-69.6c22.2-16.7,47.2-27.4,75-32.1c27.8-4.4,58-3.8,90.5,1.9l13.1,11.7
l-17.8,3.3c-3.1,0.6-6.4,1.3-9.8,1.9c-3.4,0.6-6.4,1.9-8.9,3.8c-1.6,0.9-3,2.2-4.5,3.8c-1.4,1.6-1.8,3.1-1.2,4.7
c0.3,0.9,1,1.5,2.1,1.6c1.1,0.2,2.1,0.4,3,0.7c3.1,0.6,6.2,0.5,9.4-0.2c3.1-0.8,6.2-1,9.4-0.7c3.8,0.3,7.7,0.7,11.7,1.2
c4.1,0.5,7.8,1.6,11.3,3.5c5.3,2.5,10.6,5.6,15.9,9.4c5.3,3.8,9.2,8.4,11.7,14.1c1.2,3.1,1.5,6.6,0.7,10.3
c-0.8,3.8-1.5,7.3-2.1,10.8c-3.8-10.3-8.3-16.6-13.6-19c-5.3-2.3-11.6-4-18.8-4.9c-6.9-0.9-12.4,0.5-16.6,4.5
c-4.2,3.9-4.6,9.3-1.2,16.2c0.6,1.6,1.6,3,3,4.5s2.7,2.7,4,4l12.2,10.3c6.9,5.9,11.6,13.7,14.1,23.2c2.5,9.5,0.2,19.9-7,31.2
c0-9.1-1.1-16.2-3.3-21.6c-2.2-5.3-5.8-8.3-10.8-8.9l-14.1-3.8c-5.9-1.6-10.2-0.9-12.9,1.9c-2.7,2.8-2.1,7.8,1.6,15l3.8,6.1
c3.8,6.3,4.8,14.1,3,23.7c-1.7,9.5-5.9,16.2-12.4,19.9c2.2-14.7,0.9-25-3.8-30.9c-4.7-5.9-11.6-9.2-20.6-9.8
c-6.6-2.5-13.8-2.2-21.6,0.9c-7.8,3.1-14.1,7.3-18.8,12.7c-5,5.6-8.6,12.7-10.8,21.1c-2.2,8.4-2,16.3,0.5,23.4
c3.1,9.4,9.3,17.2,18.5,23.4c9.2,6.3,18.5,11.1,27.9,14.5c9.7,3.8,20.1,5.9,31.2,6.3c11.1,0.5,21.8-0.5,32.1-3
C351.8,341.6,364.1,335.8,376,327.8z M189,408.2l-2.8-2.8c-1.9-1.9-1.5-4.8,1.2-8.7c2.7-3.9,5.4-5.7,8.2-5.4l115.8,8.9
c17.8,1.3,34.6-3.9,50.4-15.5c15.8-11.6,29-26.4,39.6-44.5c-11.9,10.6-26.6,19.3-44.1,26c-17.5,6.7-34.8,9.3-52,7.7l-119.5-9.4
c-3.8,0.3-6.8,1.6-9.1,3.8c-2.3,2.2-3.7,5.3-4,9.4L157.1,366c-5.9-4.7-10.8-10.5-14.5-17.6s-7.3-14-10.8-20.9
c-2.5-5.3-2.1-9.5,1.2-12.7c3.3-3.1,7.4-2.8,12.4,0.9l15,9.4l6.1-7l-27.2-23c-4.7-2.8-9.7-2.4-15,1.2c-5.3,3.6-8.3,7.6-8.9,12
c-1.9,10.9-1,22.3,2.6,34c3.6,11.7,9.4,21.3,17.6,28.8l46.9,46.4L189,408.2z M293,177.6c-0.6-6.6,2.2-12.7,8.4-18.3
c-19.1-0.6-29.1-4.5-30-11.5s4.7-16.2,16.9-27.4c-17.8-1.2-34.4-0.2-49.7,3.3c-15.3,3.4-29.5,9.1-42.7,17.1s-25.3,18-36.6,30.2
c-10.9,11.9-21.1,25.6-30.5,41.3c15.6-6.9,30.6-11.9,45-15c14.7-3.1,28.8-4.1,42.4-3c13.6,1.1,26.5,4.6,38.7,10.5
c12.2,5.9,23.7,14.8,34.7,26.7c-3.4-9.7-3.1-17.2,0.9-22.5c4.1-5.3,11.7-8.4,23-9.4C300.5,191.5,293.7,184.1,293,177.6z"/>
</g>
</g>
<g id="Void">
<g class="st1">
<path class="st10" d="M31,258.6c0-30.9,5.9-60.2,17.8-87.7c11.6-27.2,27.6-51,48-71.5c20.5-20.5,44.3-36.5,71.5-48
c27.5-11.9,56.7-17.8,87.7-17.8s60.2,5.9,87.7,17.8c27.2,11.6,51,27.6,71.5,48c20.5,20.5,36.5,44.3,48,71.5
c11.9,27.5,17.8,56.7,17.8,87.7s-5.9,60.2-17.8,87.7c-11.6,27.2-27.6,51-48,71.5c-20.5,20.5-44.3,36.5-71.5,48
c-27.5,11.9-56.7,17.8-87.7,17.8s-60.2-5.9-87.7-17.8c-27.2-11.6-51-27.6-71.5-48c-20.5-20.5-36.5-44.3-48-71.5
C36.9,318.8,31,289.6,31,258.6z M438.3,181.8c-10.3-24.1-24.5-45.1-42.4-63c-18-18-39-32.1-63-42.4C308.8,66,283.2,60.8,256,60.8
s-52.8,5.2-76.9,15.5c-24.1,10.3-45.1,24.5-63,42.4c-18,18-32.1,39-42.4,63c-10.3,24.1-15.5,49.7-15.5,76.9
c0,21.6,3.3,42.2,9.8,61.9c6.6,19.4,15.7,37.2,27.4,53.4c11.7,16.3,25.5,30.5,41.5,42.7c16.2,12.2,33.9,21.7,53,28.6
c-15-6.2-28.8-14.7-41.3-25.3c-12.5-10.3-23.2-22.2-32.1-35.6c-8.9-13.4-15.9-28-20.9-43.6c-5-15.9-7.5-32.7-7.5-50.2
c0-23.1,4.4-44.8,13.1-65.2c8.7-20.3,20.7-38,35.9-53.2c15.2-15.2,32.9-27.3,53.2-36.3c20.6-8.7,42.5-13.1,65.6-13.1
c23.1,0,44.8,4.4,65.2,13.1c20.3,9.1,38.1,21.2,53.4,36.3c15.3,15.2,27.3,32.9,36.1,53.2c8.7,20.3,13.1,42,13.1,65.2
c0,17.5-2.5,34.2-7.5,50.2c-5,15.9-12,30.6-21.1,44.1c-9.1,13.4-20,25.3-32.8,35.6c-12.5,10.6-26.4,19.1-41.7,25.3
c19.4-6.9,37.2-16.4,53.4-28.6c16.2-12.2,30.3-26.4,42.2-42.7c11.9-16.2,21.1-34.2,27.7-53.9s9.8-40.3,9.8-61.9
C453.8,231.5,448.7,205.8,438.3,181.8z M211.9,344.4c12.2-12.2,26.9-18.3,44.1-18.3c17.2,0,31.9,6.1,44.1,18.3
s18.3,26.9,18.3,44.1c0,12.5-3.4,23.8-10.3,34c-6.9,10.2-15.6,17.7-26.3,22.7c22.8-5.9,41.7-18.3,56.7-37S361,367.7,361,343
c0-12.8-2.2-25-6.6-36.6c-4.4-11.6-10.5-22-18.3-31.2c-7.8-9.2-17-16.9-27.7-23.2c-10.6-6.2-22-10.5-34.2-12.7
c7.2,3.4,13.1,8.7,17.8,15.7s7,14.8,7,23.2c0,12.2-4.2,22.4-12.7,30.7c-8.4,8.3-18.6,12.4-30.5,12.4c-11.9,0-22-4.1-30.5-12.4
c-8.4-8.3-12.7-18.5-12.7-30.7c0-8.4,2.3-16.2,6.8-23.2c4.5-7,10.5-12.3,18-15.7c-12.5,2.2-24.1,6.4-34.7,12.7
c-10.6,6.3-19.8,14-27.4,23.2c-7.7,9.2-13.8,19.6-18.5,31.2c-4.4,11.6-6.6,23.8-6.6,36.6c0,24.7,7.6,46.4,22.7,65.2
c15.2,18.8,34.1,31.1,57,37c-10.9-5-19.8-12.6-26.5-22.7c-6.7-10.2-10.1-21.5-10.1-34C193.7,371.3,199.8,356.6,211.9,344.4z
M304.3,382.4c0-13.4-4.7-24.8-14.1-34.2s-20.8-14.1-34.2-14.1c-13.4,0-24.8,4.7-34.2,14.1s-14.1,20.8-14.1,34.2
c0,13.4,4.7,24.8,14.1,34.2s20.8,14.1,34.2,14.1c13.4,0,24.8-4.7,34.2-14.1S304.3,395.8,304.3,382.4z"/>
</g>
</g>
</g>
<g id="Npcs" class="st0">
<g id="Martial" class="st1">
<g>
<path class="st11" d="M57.3,388.5L31,315.4c8.7-1.9,18-3.4,27.7-4.7c9.7-1.2,20-1.9,30.9-1.9c5.9,10.6,13.3,20.5,22,29.5
c8.7,9.1,19.1,17.2,30.9,24.4c-14.7,1.9-29.2,5-43.6,9.4C84.6,376.5,70.7,381.9,57.3,388.5z M50.7,100.7
c12.2,9.1,22.7,19.1,31.6,30.2c8.9,11.1,10.5,22.9,4.9,35.4c-8.1,17.5-12.5,35.9-13.1,55.3c-0.6,19.4,3.6,38,12.7,56
c9.1,18,23.4,34.6,43.1,49.9c19.7,15.3,45.8,27.7,78.3,37c2.8-6.2,6.1-11.3,9.8-15s7.7-7,11.7-9.8c-28.1-9.7-48.3-23-60.5-39.8
s-18.8-33-19.7-48.3c-0.9-15.3,2.7-27.8,10.8-37.5c8.1-9.4,18.3-11.6,30.5-6.6c-2.5-17.5,1.2-28.4,11.3-32.8
c10-4.4,19.7-1.4,29.1,8.9c7.8-21.2,5.9-39.9-5.6-56c-11.6-16.1-29.5-20.7-53.9-13.8c-5.9-7.8-13.8-13.9-23.7-18.3
c-9.8-4.4-19.9-5-30.2-1.9c-10.3,3.1-20.7,3.7-31.2,1.6c-10.5-2-21.2-6-32.1-12L50.7,100.7z M83,393.6
c17.2-6.2,34.5-12.7,51.8-19.5c17.3-6.7,30.1-4,38.2,8.2c5.3,0,10.6,0.4,15.9,1.2c5.3,0.8,10.5,2.7,15.5,5.9
c0,5.3,0.7,10.4,2.1,15.2c1.4,4.8,3.5,9.3,6.3,13.4h-74.5v-13.6c-5.9,2.8-11.4,6.7-16.4,11.7c-5,5-9.7,10.9-14.1,17.8L83,393.6z
M256,354.7c-9.1,0-16.8,3.1-23.2,9.4c-6.4,6.3-9.6,13.9-9.6,23c0,9.1,3.2,16.8,9.6,23.2c6.4,6.4,14.1,9.6,23.2,9.6
c9.1,0,16.7-3.2,23-9.6c6.2-6.4,9.4-14.1,9.4-23.2c0-9.1-3.1-16.7-9.4-23C272.7,357.9,265.1,354.7,256,354.7z M461.3,100.7
c-12.2,9.1-22.7,19.1-31.6,30.2c-8.9,11.1-10.5,22.9-4.9,35.4c8.1,17.5,12.5,35.9,13.1,55.3c0.6,19.4-3.6,38-12.7,56
c-9.1,18-23.4,34.6-43.1,49.9c-19.7,15.3-45.8,27.7-78.3,37c-2.8-6.2-6.1-11.3-9.8-15s-7.7-7-11.7-9.8
c28.1-9.7,48.3-23,60.5-39.8s18.8-33,19.7-48.3c0.9-15.3-2.7-27.8-10.8-37.5c-8.1-9.4-18.3-11.6-30.5-6.6
c2.5-17.5-1.3-28.4-11.3-32.8c-10-4.4-19.7-1.4-29.1,8.9c-7.8-21.2-5.9-39.9,5.6-56c11.6-16.1,29.5-20.7,53.9-13.8
c5.9-7.8,13.8-13.9,23.7-18.3c9.8-4.4,19.9-5,30.2-1.9c10.3,3.1,20.7,3.7,31.2,1.6c10.5-2,21.2-6,32.1-12L461.3,100.7z
M429,393.6c-17.2-6.2-34.5-12.7-51.8-19.5c-17.3-6.7-30.1-4-38.2,8.2c-5.3,0-10.6,0.4-15.9,1.2c-5.3,0.8-10.5,2.7-15.5,5.9
c0,5.3-0.7,10.4-2.1,15.2c-1.4,4.8-3.5,9.3-6.3,13.4h74.5v-13.6c5.9,2.8,11.4,6.7,16.4,11.7c5,5,9.7,10.9,14.1,17.8L429,393.6z
M454.8,388.5l26.3-73.1c-8.8-1.9-18-3.4-27.7-4.7c-9.7-1.2-20-1.9-30.9-1.9c-5.9,10.6-13.3,20.5-22,29.5
c-8.8,9.1-19.1,17.2-30.9,24.4c14.7,1.9,29.2,5,43.6,9.4C427.4,376.5,441.3,381.9,454.8,388.5z"/>
</g>
</g>
<g id="Social">
<g class="st1">
<path class="st12" d="M249.4,382.4L31,265.2c7.8-6.9,15.9-13.3,24.1-19.2c8.3-5.9,17.1-11.3,26.5-15.9c2.8-6.6,5.4-13.2,7.7-19.9
c2.3-6.7,4.1-13.5,5.4-20.4l-8.4-8.4c9.4-4.1,18.9-7.1,28.6-9.1c9.7-2,19.5-3.2,29.5-3.5c5.3-4.1,10.4-8.8,15.2-14.3
c4.8-5.5,9.4-11.5,13.8-18l-6.6-11.3c9.1-0.3,18.3,0.5,27.7,2.6c9.4,2,19.2,5.2,29.5,9.6c6.9-1.9,13.4-4.2,19.7-7
c6.2-2.8,12.2-6.6,17.8-11.3v-12.7c7.8,3.4,15.6,7.6,23.4,12.4c7.8,4.8,15.5,11.5,23,19.9c6.9,2.2,13.8,3.1,20.9,2.8
c7-0.3,14-1.6,20.9-3.8l3.3-12.7c6.6,7.2,12.7,14.7,18.5,22.5c5.8,7.8,10.5,16.6,14.3,26.3c5.3,5,11.3,9.1,17.8,12.2
c6.6,3.1,13.9,4.5,22,4.2l7-8.4c4.1,8.1,7.6,17.3,10.5,27.7c3,10.3,5.1,22,6.3,35.2c4.4,5.3,9.1,10.2,14.3,14.8
c5.2,4.5,10.9,8.4,17.1,11.5L273.3,381.5l14.5,7.5c-3.4,15.3-12.4,22.7-27,22.3s-23.5-7.6-27-21.3L249.4,382.4z M186.2,304.1
l-4.7,15.5l-17.8,9.4l80.6,42.2L186.2,304.1z M218.5,279.7l-9.4,11.3l-20.2,3.8l60,69.8L218.5,279.7z M256.5,361.3v-90.9l-13.1,7
l-20.6-6.6L256.5,361.3z M264.9,363.6l31.4-84.8l-15,0.5l-16.9-14.1L264.9,363.6z M328.7,299.4l-7.5-1.9l-17.3-22l-31.4,89.1
L328.7,299.4z M353,332.7l-8-7.5l-5.6-26.3l-59.5,71.7L353,332.7z"/>
</g>
</g>
<g id="list_-_copie">
<g class="st1">
<path d="M31,258.6c0-30.9,5.9-60.2,17.8-87.7c11.6-27.2,27.6-51,48-71.5c20.5-20.5,44.3-36.5,71.5-48
c27.5-11.9,56.7-17.8,87.7-17.8s60.2,5.9,87.7,17.8c27.2,11.6,51,27.6,71.5,48c20.5,20.5,36.5,44.3,48,71.5
c11.9,27.5,17.8,56.7,17.8,87.7s-5.9,60.2-17.8,87.7c-11.6,27.2-27.6,51-48,71.5c-20.5,20.5-44.3,36.5-71.5,48
c-27.5,11.9-56.7,17.8-87.7,17.8s-60.2-5.9-87.7-17.8c-27.2-11.6-51-27.6-71.5-48c-20.5-20.5-36.5-44.3-48-71.5
C36.9,318.8,31,289.6,31,258.6z M467.4,258.6c0-29.1-5.5-56.6-16.4-82.5c-11.3-25.6-26.4-48-45.5-67
c-19.1-19.1-41.4-34.2-67-45.5c-25.9-10.9-53.4-16.4-82.5-16.4s-56.6,5.5-82.5,16.4c-25.6,11.3-48,26.4-67,45.5
c-19.1,19.1-34.2,41.4-45.5,67c-10.9,25.9-16.4,53.4-16.4,82.5s5.5,56.6,16.4,82.5c11.3,25.6,26.4,48,45.5,67
c19.1,19.1,41.4,34.2,67,45.5c25.9,10.9,53.4,16.4,82.5,16.4s56.6-5.5,82.5-16.4c25.6-11.3,48-26.4,67-45.5
c19.1-19.1,34.2-41.4,45.5-67C461.9,315.2,467.4,287.7,467.4,258.6z M75.1,182.2c10.3-24.1,24.3-45,42-62.8
c17.7-17.8,38.5-31.9,62.6-42.2c23.7-10.3,49.2-15.5,76.4-15.5s52.7,5.2,76.4,15.5c24.1,10.3,45,24.4,62.8,42.2
s31.9,38.8,42.2,62.8c10.3,23.8,15.5,49.2,15.5,76.4s-5.2,52.7-15.5,76.4c-10.3,24.1-24.4,45-42.2,62.8s-38.8,31.9-62.8,42.2
c-23.8,10.3-49.2,15.5-76.4,15.5s-52.7-5.2-76.4-15.5c-24.1-10.3-44.9-24.4-62.6-42.2c-17.7-17.8-31.6-38.7-42-62.8
c-10.3-23.7-15.5-49.2-15.5-76.4S64.8,206,75.1,182.2z M190.6,305.1c13.6-5.6,24.8-16.2,33.5-31.9c-0.3-0.3-0.5-0.6-0.5-0.9
c0-0.3-0.2-0.6-0.5-0.9c-11.9-3.8-23.4-5.3-34.5-4.7c-11.1,0.6-22,3-32.6,7c-2.2,4.1-5.5,7.3-9.8,9.6c-4.4,2.3-9.1,3.5-14.1,3.5
c-7.8,0-14.5-2.7-19.9-8.2c-5.5-5.5-8.2-12.1-8.2-19.9c0-7.8,2.7-14.5,8.2-19.9c5.5-5.5,12.1-8.2,19.9-8.2c5,0,9.7,1.2,14.1,3.5
c4.4,2.3,7.7,5.6,9.8,9.6c10.6,4.1,21.5,6.4,32.6,7c11.1,0.6,22.6-0.9,34.5-4.7c0.3-0.3,0.5-0.6,0.5-0.9c0-0.3,0.2-0.6,0.5-0.9
c-11.3-20-26.3-33-45.2-39.1c-18.9-6.1-37.3-25.4-55.1-57.9c-12.8,15-22.8,32-30,51.1C86.6,217.2,83,237.4,83,258.6
c0,21.3,3.6,41.4,10.8,60.5c7.2,19.1,17.2,36.1,30,51.1c4.1-7.5,8.1-14.1,12.2-19.7c4.1-5.6,8.3-10.5,12.7-14.5
C163,321,177,310.7,190.6,305.1z M248,191.4c-0.6-11.1-3-21.8-7-32.1c-4.1-2.5-7.3-5.9-9.6-10.3c-2.3-4.4-3.5-9.1-3.5-14.1
c0-7.8,2.7-14.5,8.2-19.9c5.5-5.5,12.1-8.2,19.9-8.2c7.8,0,14.5,2.7,19.9,8.2c5.5,5.5,8.2,12.1,8.2,19.9c0,5-1.2,9.7-3.5,14.1
c-2.3,4.4-5.6,7.8-9.6,10.3c-4.1,10.3-6.4,21-7,32.1c-0.6,11.1,0.9,22.6,4.7,34.5c0.3,0.3,0.6,0.5,0.9,0.5c0.3,0,0.6,0.2,0.9,0.5
c20-11.3,33-26.3,39.1-45.2c6.1-18.9,25.4-37.3,57.9-55.1c-15-12.8-32-22.8-51.1-30c-19.1-7.2-39.2-10.8-60.5-10.8
c-21.3,0-41.4,3.6-60.5,10.8c-19.1,7.2-36.1,17.2-51.1,30c7.5,4.1,14.1,8.1,19.7,12.2c5.6,4.1,10.5,8.3,14.5,12.7
c15,14.4,25.3,28.4,30.9,42s16.2,24.8,31.9,33.5c0.3-0.3,0.6-0.5,0.9-0.5c0.3,0,0.6-0.2,0.9-0.5C247.1,214,248.7,202.5,248,191.4
z M347.9,378.6c-5.6-4.1-10.5-8.3-14.5-12.7c-15-14.4-25.3-28.4-30.9-42s-16.3-24.8-31.9-33.5c-0.3,0.3-0.6,0.5-0.9,0.5
c-0.3,0-0.6,0.2-0.9,0.5c-3.8,11.9-5.3,23.4-4.7,34.5c0.6,11.1,3,22,7,32.6c4.1,2.2,7.3,5.5,9.6,9.8c2.3,4.4,3.5,9.1,3.5,14.1
c0,7.8-2.7,14.5-8.2,19.9c-5.5,5.5-12.1,8.2-19.9,8.2c-7.8,0-14.5-2.7-19.9-8.2c-5.5-5.5-8.2-12.1-8.2-19.9c0-5,1.2-9.7,3.5-14.1
c2.3-4.4,5.5-7.7,9.6-9.8c4.1-10.6,6.4-21.5,7-32.6c0.6-11.1-0.9-22.6-4.7-34.5c-0.3-0.3-0.6-0.5-0.9-0.5c-0.3,0-0.6-0.2-0.9-0.5
c-20,11.3-33,26.3-39.1,45.2c-6.1,18.9-25.4,37.3-57.9,55.1c15,12.8,32,22.8,51.1,30c19.1,7.2,39.2,10.8,60.5,10.8
c21.2,0,41.4-3.6,60.5-10.8c19.1-7.2,36.1-17.2,51.1-30C360.1,386.8,353.5,382.7,347.9,378.6z M418.2,198.2
c-7.2-19.1-17.2-36.1-30-51.1c-4.1,7.5-8.1,14.1-12.2,19.7c-4.1,5.6-8.3,10.5-12.7,14.5c-14.4,15-28.4,25.3-42,30.9
s-24.8,16.3-33.5,31.9c0.3,0.3,0.5,0.6,0.5,0.9c0,0.3,0.2,0.6,0.5,0.9c11.9,3.8,23.4,5.3,34.5,4.7c11.1-0.6,21.8-3,32.1-7
c2.5-4.1,5.9-7.3,10.3-9.6c4.4-2.3,9.1-3.5,14.1-3.5c7.8,0,14.5,2.7,19.9,8.2c5.5,5.5,8.2,12.1,8.2,19.9c0,7.8-2.7,14.5-8.2,19.9
c-5.5,5.5-12.1,8.2-19.9,8.2c-5,0-9.7-1.2-14.1-3.5c-4.4-2.3-7.8-5.5-10.3-9.6c-10.3-4.1-21-6.4-32.1-7
c-11.1-0.6-22.6,0.9-34.5,4.7c-0.3,0.3-0.5,0.6-0.5,0.9c0,0.3-0.2,0.6-0.5,0.9c11.3,20,26.3,33,45.2,39.1
c18.9,6.1,37.3,25.4,55.1,57.9c12.8-15,22.8-32,30-51.1c7.2-19.1,10.8-39.2,10.8-60.5C429,237.4,425.4,217.2,418.2,198.2z"/>
</g>
</g>
</g>
<g id="Techs">
<g id="Kihos" class="st0">
<g class="st1">
<path class="st13" d="M103.9,383.6c-8-5.8-11-15.5-9.1-29.3c16.9-1.6,33.5-3.4,49.9-5.6c16.4-2.2,32.4-2.8,48-1.9
c-0.6-20.3,5.2-35.9,17.6-46.6c12.3-10.8,25.7-17.6,40.1-20.4c13.4-2.8,22.7-8.4,27.9-16.9s5.4-16.7,0.7-24.8
c-2.2-4.4-4.9-8.5-8.2-12.4c-3.3-3.9-6.8-7.4-10.5-10.5c-1.9-1.9-4-3.2-6.3-4c-2.3-0.8-4.5-1.9-6.3-3.5c-1.9-1.9-3.4-4-4.7-6.3
c-1.3-2.3-3-4.1-5.2-5.4c-1.9-1.2-4.1-2-6.8-2.3c-2.7-0.3-5.2-0.5-7.7-0.5c-2.8,0.3-5.5,1.1-8,2.3c-2.5,1.3-5,2.7-7.5,4.2
c-1.9,1.3-3.7,2.9-5.4,4.9c-1.7,2-3.4,4-4.9,5.9c-1.6,1.3-3.3,2.4-5.2,3.5c-1.9,1.1-3,2.7-3.3,4.9c-0.3,1.3-0.1,2.4,0.7,3.5
c0.8,1.1,1.5,2.3,2.1,3.5c5.3-0.6,10.9-1,16.9-1.2c5.9-0.2,12.2-0.1,18.8,0.2c5.3,0.3,10.3,1.6,15,4s5.2,4.6,1.4,6.8
c-2.5,1.3-3.9,2.8-4.2,4.7c-0.3,1.9,1.6,2.7,5.6,2.3h9.4c3.8-0.3,6.2,0.9,7.5,3.5c1.2,2.7,0,4.5-3.8,5.4
c-8.1,1.6-16.2,2.7-24.1,3.5c-8,0.8-15.9,1-23.7,0.7l0.9,2.3c-3.1,2.5-6.4,4.4-9.8,5.6c-3.4,1.3-7,1.9-10.8,1.9l-47.8-1.4
c-2.5-0.3-4.8-0.9-7-1.6c-2.2-0.8-4.2-1.8-6.1-3h-9.4l-2.8-3.3c-9.4,1.6-17.7,1.7-25.1,0.5c-7.3-1.2-9.1-3.4-5.4-6.6l3.8-3.3
l-3.3-3.8l-20.6-2.3c-7.5-0.6-10.5-3-9.1-7c1.4-4.1,5.9-5.9,13.4-5.6l37,2.8c3.4,0.3,6-0.9,7.7-3.8c1.7-2.8,4.8-3.8,9.1-2.8
c5.6,0.9,11.2,1.6,16.6,1.9c5.5,0.3,10.9,0.2,16.2-0.5c2.5-3.4,5.3-6.6,8.4-9.6c3.1-3,6.4-5.7,9.8-8.2c1.2-0.9,2.7-1.8,4.5-2.6
c1.7-0.8,3.4-1.6,4.9-2.6c1.9-0.6,3.8-1.2,5.9-1.9c2-0.6,3.8-1.6,5.4-2.8c1.6-1.6,2.7-3.5,3.3-5.9c0.6-2.3,1.7-4.5,3.3-6.3
c1.2-1.2,2.6-2.6,4-4s3-2.4,4.9-3c1.6-0.3,3.2-0.2,4.9,0.5c1.7,0.6,3.4,1.1,4.9,1.4c1.2,0.3,2.5,0.5,3.8,0.7
c1.2,0.2,2.5,0.4,3.8,0.7c0.9,0.3,1.9,0.8,3,1.4c1.1,0.6,2.3,1.3,3.5,1.9c0.9,0.3,1.8,0.5,2.6,0.7c0.8,0.2,1.6,0.4,2.6,0.7
c0.3,0,0.6,0.2,0.9,0.5l-18.3-15.9c-0.6-0.6-1.6-1.2-2.8-1.6c-1.3-0.5-2.5-0.9-3.8-1.2c-1.9,0-3.8,0.4-5.9,1.2
c-2,0.8-4.1,1.2-6.3,1.2c-1.6,0.3-3.3,0.4-5.2,0.2c-1.9-0.2-3.6-0.4-5.2-0.7c-1.9,0-3.6-0.2-5.2-0.5c-1.6-0.3-3.1-0.8-4.7-1.4
l-6.1-1.9l9.8-1.9c1.6-0.3,3.3-0.6,5.2-0.9c1.9-0.3,3.1-1.1,3.8-2.3c0.6-0.6,0.9-1.6,0.7-2.8c-0.2-1.2-0.5-2.2-1.2-2.8
c-1.3-0.9-2.7-1.2-4.5-0.9c-1.7,0.3-3.2,0.6-4.5,0.9c-1.3,0-2.3,0.3-3,0.9c-0.8,0.6-1.6,1.1-2.6,1.4c-1.9,0.6-3.7,0.9-5.4,0.9
c-1.7,0-3.5,0.2-5.4,0.5c-2.5,0.3-4.9,0.8-7.3,1.4c-2.3,0.6-4.8,1.3-7.3,1.9c-2.5,0.3-5.1,0.5-7.7,0.7c-2.7,0.2-5.2,0.2-7.7,0.2
c-1.9,0-3.9,0-6.1,0c-2.2,0-4.4-0.2-6.6-0.5c-1.9-0.3-3.7-0.6-5.4-0.9c-1.7-0.3-3.5-0.8-5.4-1.4c-1.6-0.9-3-2-4.5-3.3
c-1.4-1.2-3-2.2-4.9-2.8c-1.3-0.6-2.7-1.1-4.2-1.4c-1.6-0.3-3-0.5-4.2-0.5c-3.1-0.6-6.3-0.9-9.4-0.7c-3.1,0.2-6.1,0.1-8.9-0.2
c-2.2,0-4.3,0.1-6.3,0.2c-2,0.2-4.1-0.2-6.3-1.2c-0.3,0-0.7-0.2-1.2-0.5c-0.5-0.3-0.7-0.6-0.7-0.9c-0.3-0.9,0-1.7,0.9-2.3
c0.9-0.6,1.7-1.2,2.3-1.9c1.6-1.2,3.3-2.1,5.2-2.6s3.8-1,5.6-1.6c1.2-0.3,2.7-0.5,4.2-0.5c1.6,0,3-0.3,4.2-0.9
c1.2-0.3,2.4-0.9,3.5-1.6c1.1-0.8,1.6-1.8,1.6-3c0-0.9-0.5-1.6-1.4-2.1s-1.7-0.9-2.3-1.2c-1.9-0.6-3.7-0.9-5.4-0.7
c-1.7,0.2-3.5,0.2-5.4,0.2c-5.6-0.3-11.3-0.4-16.9-0.2c-5.6,0.2-11.1,0.2-16.4,0.2c-1.3,0-2.5,0.2-3.8,0.5
c-1.3,0.3-2.5,0.3-3.8,0c-1.3-0.3-2.5-0.8-3.8-1.4c-1.3-0.6-2-1.6-2.3-2.8c-0.6-0.9-0.9-1.9-0.7-3c0.2-1.1,0.4-2.1,0.7-3
c0.3-0.9,0.9-1.7,1.6-2.3c0.8-0.6,1.2-1.2,1.2-1.9c-0.3-1.2-1.3-2-2.8-2.3c-1.6-0.3-2.7-1.1-3.3-2.3c0-0.9,0.1-1.9,0.2-2.8
c0.2-0.9,0.5-1.7,1.2-2.3c0.9-1.2,2.3-2,4.2-2.3c1.9-0.3,3.6-0.6,5.2-0.9c7.2-1.2,14.5-1.7,22-1.4c7.5,0.3,14.8,0.2,22-0.5h2.3
c2.2-3.4,6.6-6.3,13.1-8.7s12.7-3.8,18.3-4.5c8.4-1.2,17-1.1,25.8,0.5c8.7,1.6,17.5,1.6,26.3,0c3.8-0.3,7.3-1.3,10.8-3
c3.4-1.7,7-2.9,10.8-3.5c3.4-0.9,7-1.8,10.8-2.6c3.8-0.8,7.5-1,11.3-0.7c3.4,0,6.8,0.7,10.1,2.1s6.5,2.3,9.6,2.6
c3.4,0.3,6.7,0.2,9.8-0.5c3.1-0.6,6.2-0.9,9.4-0.9c5.6,0.3,11.2,0.5,16.6,0.5c5.5,0,10.5,1.1,15.2,3.3c1.9,0.6,3.8,1.6,5.9,3
c2,1.4,2.9,3,2.6,4.9c0,0.9-0.7,1.6-2.1,2.1s-2.7,0.9-4,1.2c-3.1,1.3-6.3,2.1-9.6,2.6s-6.6,1-10.1,1.6c-0.6,0.3-1.3,0.5-1.9,0.5
c-0.6,0-1.1,0.3-1.4,0.9c-0.6,0.3-0.9,0.9-0.9,1.6c0,0.8-0.2,1.3-0.5,1.6c-0.9,0.6-1.9,0.9-2.8,0.7c-0.9-0.2-1.9,0.1-2.8,0.7
c-0.6,0.3-1.3,0.7-1.9,1.2c-0.6,0.5-0.9,1-0.9,1.6c0,1.3,0.8,2.2,2.3,2.8c1.6,0.6,2.8,1.3,3.8,1.9c0.6,0.6,1.5,1.3,2.6,1.9
c1.1,0.6,1.6,1.4,1.6,2.3c0.3,0.6,0.2,1.4-0.2,2.3s-1,1.7-1.6,2.3c-0.9,0.9-2,1.7-3.3,2.3c-1.3,0.6-2.5,1.3-3.8,1.9
c-1.6,0.9-3.2,1.8-4.9,2.6c-1.7,0.8-3.5,1.3-5.4,1.6c-1.9,0.6-3.9,0.7-6.1,0.2c-2.2-0.5-4.1-0.2-5.6,0.7
c-0.6,0.3-1.3,0.7-1.9,1.2c-0.6,0.5-0.9,1-0.9,1.6c0,0.6,0.3,1.1,0.9,1.4c0.6,0.3,1.2,0.6,1.9,0.9c0.9,0.3,2,0.3,3.3,0
c1.2-0.3,2.5-0.3,3.8,0c1.9,0,3.8-0.1,5.6-0.2c1.9-0.2,3.3,0.4,4.2,1.6c0.3,0.3,0.5,0.8,0.5,1.4c0,0.6-0.2,1.1-0.5,1.4
c-0.3,0.3-0.9,0.5-1.6,0.5c-0.8,0-1.5,0.2-2.1,0.5c-1.6,0-3.2,0-4.9,0c-1.7,0-3.4,0.2-4.9,0.5c-0.9,0.3-1.9,0.7-2.8,1.2
s-1.6,1.2-1.9,2.1c-0.3,0.6-0.2,1.4,0.2,2.3s0.9,1.7,1.2,2.3c0.9,2.2,2.3,4.1,4,5.9c1.7,1.7,3.5,3.4,5.4,4.9
c2.2,1.9,4.7,3.3,7.5,4.2s5.3,2.3,7.5,4.2c1.9,1.3,3.7,2.8,5.4,4.7c1.7,1.9,3.4,3.8,4.9,5.6c2.5,2.8,4.8,5.7,6.8,8.7
c2,3,4.1,6,6.3,9.1c1.9,2.5,4.1,5,6.6,7.5c2.5,2.5,4.7,5.3,6.6,8.4c0.6,1.6,1.2,3,1.9,4.5c0.6,1.4,1.2,3,1.9,4.9
c0-11.3,1.6-21.4,4.9-30.5c3.3-9.1,11.5-15,24.6-17.8c-1.3-0.9-2.7-1.7-4.5-2.3c-1.7-0.6-3.5-1.1-5.4-1.4c-2.2-0.6-4.5-0.7-7-0.2
c-2.5,0.5-5,0.7-7.5,0.7c-2.8-0.3-5.7-0.4-8.7-0.2c-3,0.2-5.7-0.2-8.2-1.2c-2.5-0.6-5.1-1.5-7.7-2.6c-2.7-1.1-4.6-2.7-5.9-4.9
c-0.9-1.9-1.3-4-0.9-6.3c0.3-2.3,1.1-4.5,2.3-6.3c1.6-2.2,3.8-3.8,6.6-4.7s5.6-1.7,8.4-2.3c3.4-0.9,6.9-1.5,10.3-1.6
c3.4-0.2,7-0.4,10.8-0.7c2.8-0.3,5.6-0.7,8.4-1.2s5.5-1,8-1.6c2.8-0.6,5.4-1.4,7.7-2.3s4.8-1.9,7.3-2.8c3.4-0.9,6.8-1.7,10.1-2.3
c3.3-0.6,6.6-1.2,10.1-1.9c3.8-0.3,7.7-0.4,11.7-0.2c4.1,0.2,8,0.2,11.7,0.2c1.9,0,3.7,0.2,5.4,0.5c1.7,0.3,3.4,0.5,4.9,0.5
l18.8-1.4c1.9,0,3.8,0.5,5.9,1.4c2,0.9,3.4,2.2,4,3.8c0.3,0.6,0.3,1.4,0,2.3c-0.3,0.9-0.8,1.7-1.4,2.3c-0.3,0.6-0.8,1.2-1.4,1.6
c-0.6,0.5-1.4,0.7-2.3,0.7c-0.9,0.3-1.8,0.2-2.6-0.5c-0.8-0.6-1.8-0.9-3-0.9h-9.4c-1.6,0-3,0.2-4.5,0.5c-1.4,0.3-2.9,0.8-4.5,1.4
c-1.3,0.6-2.8,1.6-4.7,2.8c-1.9,1.3-2.7,2.7-2.3,4.2c0.3,1.9,1.5,3.1,3.5,3.8c2,0.6,4,0.9,5.9,0.9l49.2-0.9
c1.9-0.3,3.8-0.4,5.9-0.2c2,0.2,4,0.5,5.9,1.2c0.9,0.6,1.9,1.2,2.8,1.6s1.6,1.2,1.9,2.1c0.3,0.9,0.3,1.9,0,2.8
c-0.3,0.9-0.8,1.7-1.4,2.3c-1.6,1.3-3.5,1.3-5.9,0c-2.3-1.2-4.5-1.6-6.3-0.9c-0.6,0.3-1.2,0.8-1.6,1.4c-0.5,0.6-1,1.1-1.6,1.4
c-1.9,0.3-3.8,0.2-5.6-0.5c-1.9-0.6-3.8-0.8-5.6-0.5c-0.3,0.3-0.8,0.5-1.4,0.7c-0.6,0.2-0.9,0.4-0.9,0.7c0,0.9,0.5,1.5,1.4,1.6
c0.9,0.2,1.9,0.4,2.8,0.7c0.6,0,1.3-0.1,2.1-0.2c0.8-0.2,1.6-0.2,2.6-0.2c1.2,0.6,2.4,1.4,3.5,2.3c1.1,0.9,2.1,1.9,3,2.8
c0.9,1.6,1.6,3.5,1.9,5.9c0.3,2.3,1.2,4.1,2.8,5.4c0.9,0.6,2,1,3.3,1.2c1.2,0.2,2.3,0.1,3.3-0.2c1.6,0,3-0.5,4.2-1.4
c1.2-0.9,2.5-1.2,3.8-0.9c2.5,0,5.2,1,8,3c2.8,2,4.2,4.5,4.2,7.3c0,1.9-1.3,3.2-4,4c-2.7,0.8-5.1,1-7.3,0.7
c-6.6,0.3-12.3,1.3-17.1,3c-4.8,1.7-8.8,4.5-12,8.2c0,0.3,0.1,0.6,0.2,0.9c0.2,0.3,0.4,0.5,0.7,0.5c0.3,0.3,0.7,0.4,1.2,0.2
c0.5-0.2,0.9-0.2,1.2-0.2c0.9-0.3,1.7-0.5,2.3-0.5c0.6,0,1.4,0,2.3,0s1.9,0.1,2.8,0.2c0.9,0.2,1.7,0.5,2.3,1.2
c0.3,0.6,0.4,1.4,0.2,2.3c-0.2,0.9-0.4,1.7-0.7,2.3c-0.6,0.9-1.6,1.6-2.8,1.9c-1.3,0.3-2.3,0.6-3.3,0.9c-2.2,0.6-4.5,1.3-7,1.9
c-2.5,0.6-4.8,1.1-7,1.4c-2.2,0.3-4.4,0.5-6.6,0.7c-2.2,0.2-4.4,0.4-6.6,0.7c-1.3,0-2.5,0.1-3.8,0.2c-1.3,0.2-2.7,0.2-4.2,0.2
c-4.1,0-8.2-0.4-12.4-1.2c-4.2-0.8-8.4-1.3-12.4-1.6c-6.6-0.6-13.2-0.9-19.9-0.7c-6.7,0.2-13.4-0.4-19.9-1.6
c-1.6-0.3-3.3-0.6-5.2-0.9c-1.9-0.3-3.6-0.9-5.2-1.9c-0.3-0.3-0.6-0.7-0.9-1.2c-0.3-0.5-0.3-0.9,0-1.2c0.6-1.2,1.9-1.6,3.8-0.9
c1.9,0.6,3.4,0.6,4.7,0c0.3-0.3,0.6-0.6,0.9-0.9c0.3-0.3,0.5-0.6,0.5-0.9c-0.3-1.2-1.3-1.9-3-1.9c-1.7,0-3.2-0.2-4.5-0.5
c-1.6-0.3-3-0.4-4.5-0.2c-1.4,0.2-2.7-0.1-4-0.7c-0.9-0.6-1.9-1.3-2.8-2.1c-0.9-0.8-1.3-1.6-0.9-2.6c0-0.6,0.5-1.2,1.4-1.6
s1.7-0.9,2.3-1.2c1.2-0.9,2.7-1.6,4.5-1.9c1.7-0.3,2.9-1.2,3.5-2.8c-9.4-0.6-16.5,2.3-21.3,8.7c-4.8,6.4-6,15.4-3.5,27
c4.4,20,0.9,36.9-10.3,50.6c-11.3,13.8-22.8,21.6-34.7,23.4c-24.7,4.1-38.8,11.3-42.2,21.6c-3.4,10.3,4.2,25.8,23,46.4l0.9-0.5
c-4.1-6.6-6.3-12.2-6.6-16.9c-0.3-4.7,1.2-7.2,4.7-7.5c17.2-0.9,34.9-1.2,53.2-0.9c18.3,0.3,37.3,1.7,57,4.2
c1.2,14.1-1.7,24.3-8.9,30.7c-7.2,6.4-17.7,9.8-31.4,10.1c1.2,15.3-6.6,26.3-23.7,32.8c-17,6.6-40.7,10.5-71,11.7
c-30.3,1.3-54.4-3-72.2-12.7c-17.8-9.7-21.1-20.9-9.8-33.8C124.3,391.8,111.9,389.4,103.9,383.6z"/>
</g>
</g>
<g id="Maho" class="st0">
<g class="st1">
<path class="st14" d="M150.5,404l3.3-1.9v-2.8l-0.9-0.9v-7.5l15.5-6.1l2.8-3.8l-3.3-4.2l-7-1.9l-5.2,6.6l1.4-7L146.3,388
l2.8-12.7l-6.1,6.6l0.9-8.9l-4.7,6.1h-2.8l-6.6,10.3c1.9-4.7,3.5-9.4,4.9-14.3c1.4-4.8,2.4-9.6,3-14.3l-4.2-0.5l-4.7,3.8
l-0.5-4.2c-6.3,3.4-11.9,8.5-16.9,15.2c-5,6.7-10.2,13.4-15.5,19.9c3.1-5.3,6.5-10.7,10.1-16.2c3.6-5.5,7.6-10.9,12-16.2
l-4.7,0.5l1.4-4.7c-5.6,3.8-10.8,8.1-15.5,13.1c-4.7,5-7.8,11.7-9.4,20.2c-0.3-3.1-0.5-6.2-0.5-9.1c0-3,0.2-6,0.5-9.1l-3.3-2.3
l-3.3,2.8c-0.6-2.8-0.2-5.7,1.2-8.7c1.4-3,3.5-5.9,6.3-8.7c-3.1-5.9-6.8-10.3-11-13.1s-8.7-4.8-13.4-6.1c4.1-2.2,6-4.6,5.9-7.3
c-0.2-2.7-1.5-5.5-4-8.7c-2.5-2.2-4.7-4.6-6.6-7.3c-1.9-2.7-3.8-5.4-5.6-8.2l8.4-8.9c-8.1-9.7-13.6-18.7-16.4-27
c-2.8-8.3-3.4-15.7-1.9-22.3c10,11.9,20.8,22.9,32.3,33c11.6,10.2,25,18.4,40.3,24.6c7.2,2.2,12.4,2,15.7-0.7
c3.3-2.7,4.6-7.6,4-14.8l-29.5-82.5c-3.4-10.3-4.4-21-2.8-32.1c1.6-11.1,6.6-21.3,15-30.7l30.9-33.3l-2.3,7
c10.6-5,18-14.3,22.3-27.9s6.6-27.1,7.3-40.5l1.9-5.2c1.2,14.4,0.3,28.4-2.8,42.2c-3.1,13.8-10,26.9-20.6,39.4l9.8-8.4
l-26.3,37.5c-5.3,6.9-8.8,14.5-10.3,22.7c-1.6,8.3-0.6,17.4,2.8,27.4c4.1,15.9,9.7,31.1,16.9,45.5c7.2,14.4,15.6,28.1,25.3,41.3
c2.2-2.5,4.4-3.6,6.6-3.3c2.2,0.3,4.5,1.9,7,4.7c1.2-2.8,1.5-6.5,0.7-11c-0.8-4.5-1.8-9.1-3-13.8l8,18.8l-1.4-9.4l10.8,22h2.8
l6.1,8l3.3-6.6l9.8,0.9l0.5-3.3l2.8,3.3l-0.5-7l2.8-2.3l1.9,2.8l-7-47.3c-2.2-17.2-3.1-27.7-2.8-31.6c0.3-3.9,1.9-10.7,4.7-20.4
l12.2-36.6l9.8-2.8l0.9,9.4l-8.9,49.2c-1.3,5.9-2.1,11.8-2.6,17.6c-0.5,5.8-0.1,12,1.2,18.5l15.9,52.5l2.3-3.3l1.4,5.6l8.4-3.8
l0.5,5.6l7,0.5c0.6-2.2,1.4-4.3,2.3-6.3c0.9-2,2-4,3.3-5.9l1.4,8.4l2.8,1.9l1.9,1.9l0.5-4.2l2.8-0.9c0.9-5.3,2.3-10.6,4.2-15.9
c1.9-5.3,3.9-10.5,6.1-15.5c-1.3,3.8-2.3,7.6-3.3,11.5c-0.9,3.9-1.6,7.7-1.9,11.5l3.3-0.9c0-3.8,0.6-7.3,1.9-10.5
c1.2-3.3,2.7-6.5,4.2-9.6c-0.6,3.1-1.2,6.3-1.6,9.4c-0.5,3.1-0.4,6.3,0.2,9.4h2.8l5.2,4.2h3.3c6.6-8.7,13.4-20.8,20.4-36.1
c7-15.3,14.1-33.6,21.3-54.8c4.1-11.3,5.2-22.1,3.3-32.6c-1.9-10.5-4.8-20.7-8.9-30.7c-7.8-15.3-17.3-28.8-28.6-40.5
S309.6,68,313.7,33.6c-0.6,12.2,0.6,23.5,3.8,34c3.1,10.5,9.5,19.8,19.2,27.9l-9.8-22l52,68c6.2,11.6,10.1,23.7,11.5,36.3
s-0.9,26.6-6.8,42c-5,15-10.1,30.1-15.2,45.2c-5.2,15.2-8.7,29.3-10.5,42.4c19.4-4.4,37.9-13.3,55.5-26.7
c17.7-13.4,34.6-30.3,50.9-50.6l-6.6,17.3l5.6-8l3.3,5.2c0.6,4.7-1.6,12-6.8,21.8s-6.3,18-3.5,24.6c-7.2,3.4-12.1,8.3-14.8,14.5
c-2.7,6.3-1.3,15.2,4,26.7c1.6,3.8,2.9,7.5,4,11.3c1.1,3.8,1.3,7.7,0.7,11.7c-1.3-3.4-2.8-6.2-4.7-8.4c-1.9-2.2-4.4-3.8-7.5-4.7
l-1.4,20.2c-1.3-1.6-2.5-2.9-3.8-4c-1.3-1.1-2.7-1.9-4.2-2.6l-2.8,5.6l-4.2-4.7l-1.9,0.9l7,8l-4.7,0.5l3.3,6.6l-4.7-3.8l-2.8,1.4
v4.7l-4.2-4.2l-5.2-0.5c1.9,3.1,3.4,6.3,4.7,9.6c1.2,3.3,1.9,6.5,1.9,9.6c-1.9-5-4-9.3-6.3-12.9c-2.3-3.6-4.9-6.6-7.7-9.1
c0.9,5.6,2,11.1,3.3,16.4c1.2,5.3,2.5,10.8,3.8,16.4c-3.4-9.7-7.7-18-12.7-25.1c-5-7-10.9-12.4-17.8-16.2l8.9,10.3l-6.6-4.2
l0.5,2.8c2.5,2.8,5.1,5.7,7.7,8.7c2.7,3,5.4,6.2,8.2,9.6c-3.1-2.8-6.2-5.5-9.1-8.2c-3-2.7-6-5.4-9.1-8.2l0.9,4.2
c-2.2-1.9-4.5-3.7-6.8-5.4c-2.3-1.7-4.6-3.2-6.8-4.5c6.6,8.8,11.6,16.7,15.2,23.9c3.6,7.2,5.9,13.9,6.8,20.2
c-4.1-8.7-8.3-16.6-12.7-23.4c-4.4-6.9-8.9-13-13.6-18.3l-5.2,2.8l12.2,23.4l-5.6-4.2l-0.9,3.3l-1.4-8l-3.3-2.3l-1.9,3.3
l-1.9-2.8l-8.9-9.4l6.1,12.7l-10.8-9.4l8.9,18.3l-15-21.1l-1.4,4.7l7,8.9v3.3l-2.8,6.1l3.8,2.3v6.6c-1.9,5.6-4.2,10.8-7,15.5
s-5.6,9.2-8.4,13.6l-2.3,2.3l-1.9,4.7c-12.5,7.5-25,14.8-37.5,22c-12.5,7.2-23.4,14.1-32.8,20.6c-16.9-9.4-35.3-18.7-55.3-27.9
c-20-9.2-34.5-24.3-43.6-45.2L150.5,404z M216.2,346.1c2.2-0.5,4.8-0.5,8-0.2c-13.4-12.5-25.2-21-35.4-25.5
c-10.2-4.5-17.6-2.4-22.3,6.3c7.2,11.3,14.5,19.1,21.8,23.4c7.3,4.4,14.6,3.9,21.8-1.4C211.9,347.4,214,346.5,216.2,346.1z
M317.4,338.3c1.9-1.9,3.4-3.7,4.5-5.4c1.1-1.7,1.3-3.4,0.7-4.9c-4.4-5.6-15.3-5.9-32.8-0.7c-17.5,5.2-26.3,12.1-26.3,20.9
l23,14.1c5.3-1.6,10.7-4.1,16.2-7.5c5.5-3.4,11-7.3,16.6-11.7L317.4,338.3z"/>
</g>
</g>
<g id="Ninjutsu" class="st0">
<g class="st1">
<path d="M218,332.7v-0.9l-0.5-0.5c-13.4,8.4-27.3,15.5-41.7,21.1c-14.7,5.3-29.8,9.4-45.5,12.2c-15.6,2.8-31.7,4.5-48.3,5.2
c-16.6,0.6-33.6,0.3-51.1-0.9c7.8-12.2,16.2-24.1,25.3-35.6c9.1-11.6,19.3-22.6,30.7-33c11.4-10.5,24-20.2,37.7-29.3
c13.7-9.1,29.2-17.3,46.4-24.8l10.8-25.3h0.9l0.5-0.5c-8.4-13.4-15.5-27.3-21.1-41.7c-5.3-14.7-9.4-29.8-12.2-45.5
c-2.8-15.6-4.5-31.7-5.2-48.3c-0.6-16.6-0.3-33.6,0.9-51.1c12.2,7.8,24.1,16.3,35.6,25.3c11.6,9.1,22.6,19.3,33,30.7
c10.5,11.4,20.2,24,29.3,37.7c9.1,13.8,17.3,29.2,24.8,46.4l25.3,10.8v0.9l0.5,0.5c13.4-8.4,27.3-15.5,41.7-21.1
c14.7-5.3,29.8-9.4,45.5-12.2c15.6-2.8,31.7-4.5,48.3-5.2c16.6-0.6,33.6-0.3,51.1,0.9c-7.8,12.2-16.3,24.1-25.3,35.6
c-9.1,11.6-19.3,22.6-30.7,33c-11.4,10.5-24,20.2-37.7,29.3c-13.8,9.1-29.2,17.3-46.4,24.8l-10.8,25.3h-0.9l-0.5,0.5
c8.4,13.4,15.5,27.3,21.1,41.7c5.3,14.7,9.4,29.8,12.2,45.5c2.8,15.6,4.5,31.7,5.2,48.3c0.6,16.6,0.3,33.6-0.9,51.1
c-12.2-7.8-24.1-16.2-35.6-25.3c-11.6-9.1-22.6-19.3-33-30.7c-10.5-11.4-20.2-24-29.3-37.7c-9.1-13.7-17.3-29.2-24.8-46.4
L218,332.7z M296.3,258.6c0-11.3-3.9-20.8-11.7-28.6c-7.8-7.8-17.3-11.7-28.6-11.7s-20.8,3.9-28.6,11.7
c-7.8,7.8-11.7,17.3-11.7,28.6s3.9,20.8,11.7,28.6c7.8,7.8,17.3,11.7,28.6,11.7s20.8-3.9,28.6-11.7
C292.4,279.4,296.3,269.9,296.3,258.6z"/>
</g>
</g>
<g id="unknow" class="st0">
<g class="st1">
<path d="M176.3,350.1c-15.6-11.3-31.3-21.8-46.9-31.6c-15.6-9.8-31.3-19-46.9-27.4c-15.9-8.4-31.7-16.4-47.3-23.9
c-2.5-1.9-3.8-3.8-4-5.9c-0.2-2,1-4.3,3.5-6.8c16.6-7.5,33.4-16.9,50.6-28.1c17.2-10.9,34.8-22.7,53-35.2
c18.1-12.5,36.6-25.2,55.3-38c19.1-12.5,38.4-24.2,58.1-35.2c15,14.1,31.9,26.7,50.6,38s38.3,22.3,58.6,33
c20.3,10.8,40.8,22.1,61.4,34c20.3,11.6,39.8,24.8,58.6,39.8c-15.9,10-32,19.8-48.3,29.5c-15.9,9.4-31.8,18.8-47.6,28.4
c-15.8,9.5-31.3,19.3-46.6,29.3c-15.3,10-30.3,20.8-45,32.3c-10.9,9.4-22.2,14.8-33.8,16.4c-11.6,1.6-23.6-2.5-36.1-12.2
C207.7,373.8,191.9,361.6,176.3,350.1z M368.5,214.1c-13.8-7.8-27.3-15.9-40.5-24.1c-13.3-8.3-26.3-16.8-39.1-25.5
c-13.1-8.4-26.1-17.3-38.9-26.7c-14.7,9.1-28.8,18.3-42.2,27.7c-13.8,9.1-27,18.2-39.8,27.4c-12.8,9.2-25.2,18.5-37,27.9
c-11.6,9.1-22.8,18.3-33.8,27.7c13.4,6.9,26.9,14.1,40.3,21.6c13.1,7.8,26.3,15.7,39.4,23.7s26.1,16.2,38.9,24.6
c13.1,8.8,25.9,17.5,38.4,26.3c11.6-9.4,23.6-18.6,36.1-27.7c12.2-9.4,24.8-18.5,37.7-27.4c13-8.9,26.2-17.7,39.6-26.5
c13.4-8.7,27.3-17.5,41.7-26.3C395.5,229.4,381.9,221.9,368.5,214.1z M160.4,244.1c14.7-12.2,29.9-22.2,45.7-30
c15.8-7.8,30.9-18.9,45.2-33.3c12.5,9.1,25.5,17.7,38.9,26c13.4,8.3,27.5,16.3,42.2,24.1c1.9,1.3,3.4,2.8,4.7,4.7
c1.2,1.9,1.2,4.8,0,8.9c-19.1,4.1-35,12.6-47.8,25.5c-12.8,13-25.9,23.7-39.4,32.1c-8.8-12.2-21.1-22.9-37-32.1
C196.9,260.9,179.4,252.2,160.4,244.1z"/>
</g>
</g>
<g id="Rituals" class="st0">
<g class="st1">
<path class="st15" d="M115.1,440.3c9.5-9.5,13.7-20.7,12.4-33.5c-6.3-5.3-11.4-11.2-15.5-17.6c-4.1-6.4-6.6-13.5-7.5-21.3
c-8.4-2.8-16-6.6-22.7-11.3c-6.7-4.7-12.9-10.3-18.5-16.9V313c6.9-8.1,15.4-14.3,25.5-18.5c10.2-4.2,21-7.4,32.6-9.6
c9.7-16.6,22.1-28.4,37.3-35.4c15.2-7,30.9-11.5,47.1-13.4L146.3,98.3c10,0.3,18,2,24.1,5.2c6.1,3.1,9.1,8.4,9.1,15.9l36.6,115.8
c6.9-0.6,13.5-1,19.9-1.2c6.4-0.2,12.6-0.2,18.5-0.2l-6.1-200.2c10.9,2.2,19,5.8,24.1,10.8c5.2,5,6.6,11.7,4.5,20.2l-11.7,169.2
c4.7,0,9.4,0.1,14.1,0.2c4.7,0.2,9.4,0.4,14.1,0.7l35.2-112.5c-0.6-8.1,2.1-13.9,8.2-17.3c6.1-3.4,14.3-5.5,24.6-6.1l-58.6,136.9
c16.6,1.9,32.8,6.3,48.8,13.1c15.9,6.9,28.9,18.9,38.9,36.1c11.9,2.2,22.9,5.4,33,9.6c10.2,4.2,18.7,10.4,25.5,18.5v26.7
c-5.6,6.6-11.9,12.2-18.8,16.9c-6.9,4.7-14.5,8.4-23,11.3c-0.9,7.8-3.4,14.9-7.3,21.3c-3.9,6.4-9.1,12.3-15.7,17.6
c-0.9,12.8,3.3,24,12.7,33.5c9.4,9.5,23.1,17.6,41.3,24.1c-9.4,16.6-24.8,22.3-46.2,17.1c-21.4-5.2-34.5-24.3-39.1-57.4
c-14.1,5.6-29.5,9.8-46.4,12.4c-16.9,2.7-33.8,4-50.6,4c-16.6,0-33.4-1.3-50.4-4c-17-2.7-32.6-6.8-46.6-12.4
c-4.7,33.1-17.7,52.3-38.9,57.4c-21.3,5.2-36.7-0.5-46.4-17.1C91.8,457.9,105.6,449.8,115.1,440.3z M361.5,272.9
c-15.9-10.2-38-16.8-66.1-19.9l-11.7,27.2l-3.3-2.8l8-24.8c-4.1-0.3-8-0.6-12-0.9c-3.9-0.3-7.9-0.5-12-0.5l-1.9,24.8l-6.6,7.5
l-0.9-32.3c-5.9,0-11.6,0.2-17.1,0.5c-5.5,0.3-10.9,0.6-16.2,0.9l8,24.8l-4.2,5.2l-12.2-29.1c-27.2,3.4-48.4,10.2-63.5,20.4
c-15.2,10.2-22.7,23.5-22.7,40.1c0,7.5,4.2,13.3,12.7,17.3c8.4,4.1,19,7.1,31.6,9.1c12.7,2,26.6,3.4,42,4
c15,0.3,29.2,0.6,42.7,0.9c13.4-0.3,27.8-0.6,43.1-0.9c15-0.6,28.9-1.9,41.7-4c12.8-2,23.4-5.1,31.9-9.1
c8.4-4.1,12.7-9.8,12.7-17.3C385.4,296.8,377.4,283.1,361.5,272.9z"/>
</g>
</g>
<g id="Shujis" class="st0">
<g class="st1">
<path class="st13" d="M99.2,415.7c-2.3-2.2-4.8-3.9-7.3-5.2c-34.1-19.1-53.8-55.2-59.1-108.3c-5.6-52.8,2.7-102.1,24.8-147.9
c22.2-45.8,58-77.9,107.3-96.3c49.4-18.1,111.9-2.2,187.5,47.8c-46.3-20.3-89.1-26.4-128.4-18.3c-39.4,8.1-69.6,24.2-90.7,48.3
c-21.1,24.1-30.1,53-27,86.7c3.4,33.8,24.5,65.9,63.3,96.6c7.2,5.3,12.1,12.9,14.8,22.7c2.7,9.8,3.8,19.1,3.5,27.9
c0,6.3-1.3,12.4-4,18.5c-2.7,6.1-6,11.5-10.1,16.2c-4.1,4.7-8.9,8.6-14.5,11.7c-5.6,3.1-11.4,5.5-17.3,7
c-5.6,1.3-11.5,1.6-17.6,0.9c-6.1-0.6-12-1.9-17.6-3.8C104.1,419.4,101.5,417.9,99.2,415.7z M191.1,442.6
c17.3-9.2,28.5-28.4,33.5-57.4c-5,8.4-9.7,14.8-14.1,19c-4.4,4.2-8.6,7.9-12.7,11c9.1-11.6,16.9-23.7,23.4-36.6
c6.6-12.8,12.8-24.6,18.8-35.4c5.9-10.8,12-19.8,18.3-27c6.6-7.5,14.4-11.4,23.4-11.7l40.8,38v35.6c-4.1,8.8-8.9,16.4-14.5,23
s-12,11.9-19.2,15.9c-8.8,13.8-18.9,24.4-30.5,31.9c-11.3,7.2-23.8,11.8-37.7,13.8c-13.9,2-28.7,1.8-44.3-0.7
c-15.9-2.5-32.5-6.6-49.7-12.2C152.2,454.3,173.7,451.9,191.1,442.6z M297.3,269.9c12.8-19.1,25.3-34.8,37.5-47.3
c11.9-12.8,24.1-25.9,36.6-39.4c12.5-13.4,25.6-29.2,39.4-47.3c13.7-17.8,28.6-41.7,44.5-71.7l11.7,1.9l0.5,14.1l5.2,0.9
l-0.5,11.3L481,103l-6.1,7.5l-0.5,14.1c-11.3,11.3-21.7,25-31.4,41.3c-9.7,16.3-19.1,33.2-28.4,50.9
c-9.2,17.7-18.4,35.1-27.4,52.3c-9.1,17.5-18.6,33.1-28.6,46.9L297.3,269.9z"/>
</g>
</g>
<g id="Invocations">
<g>
<path class="st16" d="M122.9,85.7c-0.3-1.9,0.5-3.8,2.6-5.6c2-1.9,4.9-3.8,8.7-5.6c1.2,4.7,6.6,8,15.9,9.8s20.3,1.9,32.8,0
c12.8-1.9,23.4-5.2,31.9-10.1c8.4-4.8,12.3-9.6,11.7-14.3v-0.5c3.4,0.6,6.3,1.6,8.7,3s3.7,3,4,4.9l28.6,140.2h21.6l-30-144.8
c0.6-0.3,1.2-0.6,1.9-0.9c0.6-0.3,1.1-0.6,1.4-0.9l0.9-4.2c-0.3-2.2,1.5-4.4,5.4-6.6c3.9-2.2,8.8-3.8,14.8-4.7
c5.9-0.6,11.1-0.5,15.5,0.5c4.4,0.9,6.7,2.5,7,4.7l2.3,3.3c0.6,0,1.4,0.2,2.3,0.5c0.9,0.3,1.7,0.6,2.3,0.9l37.5,180.5
c-6.3,9.4-18,17.3-35.2,23.9c-17.2,6.9-35.7,11.8-55.5,14.8c-19.8,3-39.1,3.8-57.9,2.6c-18.4-1.2-32.2-5.3-41.3-12.2L122.9,85.7z
M151.5,63.9c-8.1-1.7-12.5-4.6-13.1-8.7c-0.6-4.1,2.7-8,9.8-12c7.2-3.9,16.2-6.8,27.2-8.7c10.6-1.6,20-1.5,28.1,0.2
c8.1,1.7,12.5,4.6,13.1,8.7c0.6,4.1-2.7,8.1-9.8,12.2c-7.2,4.1-16.3,6.9-27.2,8.4C169,65.7,159.6,65.6,151.5,63.9z M197.9,145.7
c-9.1,1.3-17.7,1.7-25.8,1.4c-8.1-0.3-15.8-1.4-23-3.3l25.3,113c6.2,3.1,13.4,5.2,21.6,6.3c8.1,1.1,17,1.3,26.7,0.7L197.9,145.7z
M339.4,432.6c-0.6,0-1.3-0.2-1.9-0.5c-0.6-0.3-1.4-0.6-2.3-0.9L311.8,321c-3.1,1.6-6.4,2.8-9.8,3.8c-3.4,0.9-6.7,1.6-9.8,1.9
l22,106.9c1.2,6.6-3.8,12.3-15,17.3c-10.9,4.7-23.5,8-37.7,10.1c-14.2,2-27.6,2.6-40.1,1.6c-12.5-0.9-19.2-3.9-20.2-8.9
l-32.8-153.8c9.1,6.9,22.8,10.9,41.3,12.2c18.4,1.3,37.6,0.4,57.4-2.6c19.8-3,38.4-7.9,55.5-14.8c17.2-6.6,29.1-14.4,35.6-23.4
l0.9,5.6h1.9l28.6,134.5l-3.3,1.4l2.8,10.3c-0.9,0.6-1.8,1.3-2.6,1.9c-0.8,0.6-1.6,1.3-2.6,1.9l0.9,4.2c0.9,5-6,8.4-20.9,10.1
c-14.8,1.7-22.7,0.1-23.7-4.9L339.4,432.6z M258.8,434l-21.1-99.4c-9.4,0-18.4-0.7-27-2.1c-8.6-1.4-17-3.7-25.1-6.8l23.9,107.8
c8.4,1.9,16.7,2.8,24.8,2.8C242.6,436.3,250.7,435.5,258.8,434z M217.6,470.1c13.4,3.4,27.5,4.2,42.2,2.3
c14.7-1.9,30.2-6.9,46.4-15c0.6,2.2,0.8,4.1,0.5,5.6c-0.3,1.6-1.3,3-2.8,4.2c-18.8,13.7-37.3,19.1-55.8,16.2
c-18.4-3-28.6-5.6-30.5-7.7V470.1z"/>
</g>
</g>
<g id="Katas" class="st0">
<g class="st1">
<path class="st17" d="M376,478.5l-14.1-30.9l-6.1,2.3l-72.7-96.1L263,369.3c-7.2,5.3-16.2,7.3-27,6.1c-10.8-1.2-19.5-5-26-11.3
l-29.5-28.6l-50.6-1.9l26.3-30.5c4.1-4.7,10.1-7.4,18-8.2c8-0.8,14.1,0.9,18.5,4.9l42.2,37.5l23-18.8L92.9,89.4L82.6,33.6
L133.2,59l175.3,221.7l24.4-16.9L308,212.7c-2.5-5.3-2.3-11.6,0.7-19c3-7.3,7.3-12.4,12.9-15.2l36.6-16.9L346,210.8l19.2,36.6
c4.4,7.8,5.6,17.1,3.8,27.9s-6.3,18.8-13.1,24.1l-20.2,15l0.5,0.9l71.3,95.6l-3.8,5.2l25.8,22l-2.3,27.2l-24.4,18.3L376,478.5z"
/>
</g>
</g>
</g>
<g id="Clans" class="st0">
<g id="Imperial" class="st1">
<rect y="18.6" class="st18" width="512" height="493.4"/>
<text transform="matrix(1 0 0 1 16 468.6476)" class="st19 st4 st5"></text>
</g>
<g id="Unicorn">
<rect y="18.6" class="st3" width="512" height="493.4"/>
<text transform="matrix(1 0 0 1 16 468.6476)" class="st20 st4 st5"></text>
</g>
<g id="Torttle">
<rect y="18.6" class="st3" width="512" height="493.4"/>
<text transform="matrix(1 0 0 1 16 468.6476)" class="st1 st4 st5"></text>
</g>
<g id="Scorpion">
<rect y="18.6" class="st3" width="512" height="493.4"/>
<text transform="matrix(1 0 0 1 16 468.6476)" class="st21 st4 st5"></text>
</g>
<g id="Phoenix">
<rect y="18.6" class="st3" width="512" height="493.4"/>
<text transform="matrix(1 0 0 1 16 468.6476)" class="st22 st4 st5"></text>
</g>
<g id="Mantis">
<rect y="18.6" class="st3" width="512" height="493.4"/>
<text transform="matrix(1 0 0 1 16 468.6476)" class="st23 st4 st5"></text>
</g>
<g id="Lion">
<rect y="18.6" class="st3" width="512" height="493.4"/>
<text transform="matrix(1 0 0 1 16 468.6476)" class="st24 st4 st5"></text>
</g>
<g id="Dragon">
<rect y="18.6" class="st3" width="512" height="493.4"/>
<text transform="matrix(1 0 0 1 16 468.6476)" class="st25 st4 st5"></text>
</g>
<g id="Crab">
<rect y="18.6" class="st3" width="512" height="493.4"/>
<text transform="matrix(1 0 0 1 16 468.6476)" class="st26 st4 st5"></text>
</g>
<g id="Crane">
<rect y="18.6" class="st3" width="512" height="493.4"/>
<text transform="matrix(1 0 0 1 16 468.6476)" class="st27 st4 st5"></text>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 48 KiB

View File

@@ -0,0 +1,541 @@
<?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" x="0px" y="0px"
viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve">
<style type="text/css">
.st0{display:none;}
.st1{display:inline;}
.st2{fill:#FFFFFF;}
.st3{display:inline;fill:none;}
.st4{font-family:'L5R-Icons';}
.st5{font-size:480px;}
.st6{fill:#699678;}
.st7{fill:#917896;}
.st8{fill:#9B7350;}
.st9{fill:#5F919B;}
.st10{fill:#4B4641;}
.st11{fill:#A75B58;}
.st12{fill:#68829B;}
.st13{fill:#009933;}
.st14{fill:#CC3300;}
.st15{fill:#0099FF;}
.st16{fill:#FF6600;}
.st17{fill:#FF0000;}
.st18{fill:none;}
.st19{fill:#78FFB4;}
.st20{display:inline;fill:#785A87;}
.st21{display:inline;fill:#9B463C;}
.st22{display:inline;fill:#B9784B;}
.st23{display:inline;fill:#2D551E;}
.st24{display:inline;fill:#A08C50;}
.st25{display:inline;fill:#55826E;}
.st26{display:inline;fill:#82828C;}
.st27{display:inline;fill:#789191;}
</style>
<g id="Fond" class="st0">
<g transform="translate(0,0)" class="st1">
<path class="st2" d="M249.9,18.6c-81.4,0-231.4,155.8-171.7,300.7c8,25.3,27.9,50.3,49.2,77.1c24.5,30.6,51.6,63.2,68.7,96.9h20.6
c-18.1-39.8-48.6-75.9-74.6-108.5c-27.4-34.3-48.8-65.3-48.8-88c0-3.6,0.4-7.3,1.1-11.1l-0.1,0c0.3-1.2,0.6-2.5,0.9-3.7
c0.9-3.8,2.1-7.6,3.7-11.4c23.1-61.4,94.2-106.3,146.6-135l3.6-2l3.9,1.3c60.9,20.9,131.3,66.8,156,135.8c1.1,3,2.1,6,2.9,9
c0.4,1.4,0.8,2.8,1.2,4.3l-0.2,0c1.1,5.1,1.7,10.2,1.7,15.2v0c0,22.3-24.4,53.5-55,87.5c-29.1,32.3-62.3,67.6-80,106.6H300
c16.8-32.1,46.2-64,73.3-94.1c23.1-25.7,45.3-50,54.9-74.9C481,200.2,329,18.7,249.9,18.6L249.9,18.6z M250.7,154
c-38.7,21.5-85,52.2-113.6,88.2c9.7,83,59,146.2,118.3,146.2c59.1,0,108.2-62.7,118.2-145.3C344.7,200.9,295.6,170.1,250.7,154
L250.7,154z M192.5,237c0.8,0,1.6,0,2.4,0c13,0.1,26,2.7,39.1,7.4c-16.8,40.6-59,42-78.1,0C168.1,239.6,180.3,237.2,192.5,237z
M317.4,237c13-0.1,26,2.3,39.1,7.4c-19.1,42-61.3,40.6-78.1,0C291.3,239.7,304.4,237.1,317.4,237L317.4,237z M204.6,512l0.1,0.3
h86.8l0.1-0.3L204.6,512L204.6,512z"/>
</g>
<rect y="18.6" class="st3" width="512" height="493.4"/>
<text transform="matrix(1 0 0 1 16 468.6476)" class="st1 st4 st5"></text>
</g>
<g id="Elements" class="st0">
<g id="Earth" class="st1">
<g>
<path class="st6" d="M31,258.6c0-30.9,5.9-60.2,17.8-87.7c11.6-27.2,27.6-51,48-71.5c20.5-20.5,44.3-36.5,71.5-48
c27.5-11.9,56.7-17.8,87.7-17.8s60.2,5.9,87.7,17.8c27.2,11.6,51,27.6,71.5,48c20.5,20.5,36.5,44.3,48,71.5
c11.9,27.5,17.8,56.7,17.8,87.7s-5.9,60.2-17.8,87.7c-11.6,27.2-27.6,51-48,71.5c-20.5,20.5-44.3,36.5-71.5,48
c-27.5,11.9-56.7,17.8-87.7,17.8s-60.2-5.9-87.7-17.8c-27.2-11.6-51-27.6-71.5-48c-20.5-20.5-36.5-44.3-48-71.5
C36.9,318.8,31,289.6,31,258.6z M438.3,181.8c-10.3-24.1-24.5-45.1-42.4-63c-18-18-39-32.1-63-42.4C308.8,66,283.2,60.8,256,60.8
s-52.8,5.2-76.9,15.5c-24.1,10.3-45.1,24.5-63,42.4c-18,18-32.1,39-42.4,63c-10.3,24.1-15.5,49.7-15.5,76.9
c0,5.3,0.2,10.6,0.7,15.9c0.5,5.3,1,10.6,1.6,15.9l4.2-0.5c5.9-4.4,11.4-9.3,16.4-14.8c5-5.5,9.7-11.3,14.1-17.6
c5.3,0.9,10.8,0.8,16.4-0.5c5.6-1.2,10.6-4.8,15-10.8l55.8-75.9l16.4,22l75-83.9l35.2,36.6c4.1,4.4,7.4,9.4,10.1,15
c2.7,5.6,6,10.8,10.1,15.5c5.3,6.3,10.9,12.4,16.6,18.5c5.8,6.1,12.1,11.6,19,16.6l8.4,6.6l21.1-12.2
c7.2,17.5,15.2,34.7,24.1,51.6s18.7,33.6,29.3,50.2c2.2-7.8,3.8-15.7,4.7-23.7s1.4-16.2,1.4-24.6
C453.8,231.5,448.7,205.8,438.3,181.8z M162.3,231.9l37-19.2l-15.9-19.2L162.3,231.9z M313.7,234.3l28.6,47.3
c5-4.7,9.6-10.5,13.8-17.3c4.2-6.9,8.2-14.5,12-23L288.3,156l-34.7,227.3L313.7,234.3z M405.1,277.4c0.9-2.8,2.3-5.6,4.2-8.4
l-20.6-37h-1.9l6.1,75c3.1-2.2,5.6-5.2,7.5-9.1c1.9-3.9,3-7.9,3.3-12C403.7,283,404.1,280.2,405.1,277.4z"/>
</g>
</g>
<g id="Air">
<g class="st1">
<path class="st7" d="M31,258.6c0-30.9,5.9-60.2,17.8-87.7c11.6-27.2,27.6-50.9,48-71.3c20.5-20.3,44.3-36.4,71.5-48.3
c27.5-11.9,56.7-17.8,87.7-17.8s60.2,5.9,87.7,17.8c27.2,11.9,51,28,71.5,48.3c20.5,20.3,36.5,44.1,48,71.3
c11.9,27.5,17.8,56.7,17.8,87.7s-5.9,60.2-17.8,87.7c-11.6,27.2-27.6,51-48,71.5c-20.5,20.5-44.3,36.5-71.5,48
c-27.5,11.9-56.7,17.8-87.7,17.8s-60.2-5.9-87.7-17.8c-27.2-11.6-51-27.6-71.5-48c-20.5-20.5-36.5-44.3-48-71.5
C36.9,318.8,31,289.6,31,258.6z M138.8,314c-11.9-5.6-22.6-13.2-32.1-22.7c-9.5-9.5-17.7-21.2-24.6-34.9
c-7.2-13.7-13-29.8-17.3-48.3c-2.2,8.1-3.8,16.4-4.9,24.8c-1.1,8.4-1.6,17-1.6,25.8c0,3.1,0.1,6.2,0.2,9.1c0.2,3,0.4,5.9,0.7,8.7
C77.9,293,97,306,116.5,315.4c19.5,9.4,39.6,12.8,60.2,10.3C163,323.2,150.4,319.3,138.8,314z M443.3,194.7
c-7-20.2-16.8-38.5-29.3-55.1c-20.9-14.1-43.3-21.9-67-23.4c-23.8-1.6-46,1.4-66.8,8.9c-20.8,7.5-38.5,18.6-53.2,33.3
c-14.7,14.7-23.4,31.3-26.3,49.7c-1.6,10.9,3,21.6,13.6,31.9c10.6,10.3,21.4,15.6,32.3,15.9c8.4,0.3,16.5-3,24.1-9.8
c7.7-6.9,12-14.4,12.9-22.5c0.6-5.9-0.8-11.7-4.2-17.3c-3.4-5.6-8.9-9.4-16.4-11.3c-4.1-0.9-8.5-0.2-13.4,2.1
c-4.8,2.3-7.7,5.7-8.7,10.1c-1.3,4.7-1.1,8.4,0.5,11.3c1.6,2.8,4.2,4.2,8,4.2c3.4,0.3,6.3-0.8,8.7-3.3c2.3-2.5,0.5-5.9-5.4-10.3
c5.9-0.3,10.3,1.3,13.1,4.9c2.8,3.6,3.6,9.1,2.3,16.6c-0.6,4.1-3.4,7.2-8.4,9.4c-5,2.2-9.5,3-13.6,2.3
c-7.2-1.2-13.8-5.2-19.7-11.7c-5.9-6.6-8.9-13.4-8.9-20.6c0-9.4,3.8-18.8,11.3-28.1s15.9-14.4,25.3-15
c12.8-0.9,24.8,1.1,35.9,6.1c11.1,5,18.5,19.8,22.3,44.5c5.9-11.3,14.5-19.2,25.8-23.9s22.7-5.7,34.2-3
c11.6,2.7,22,9.3,31.4,19.9c9.1,10.3,14.2,25,15.5,44.1c0.9,12.2-1.7,23.9-8,35.2c-5.9,11.3-13.8,20.7-23.7,28.4
c-9.8,7.7-20.7,12.6-32.6,14.8c-11.9,2.5-23.1,0.9-33.8-4.7c2.5,20-0.9,35.9-10.3,47.8c-9.4,11.6-21.6,18.8-36.6,21.8
c-15,3-31.3,1.3-48.8-4.9c-17.2-6.2-32.3-17.3-45.5-33.3c-1.3-1.2-3.2-1.8-5.9-1.6c-2.7,0.2-4.6,1-5.9,2.6l-5.6,8.4
c-17.8-6.2-35.2-16.4-52.3-30.5c-17-14.1-33.8-30.9-50.4-50.6c3.8,23.8,11.3,45.9,22.5,66.6c11.6,20.6,26.1,38.5,43.6,53.7
c17.5,15.2,37.2,27,59.1,35.4c22.2,8.8,45.8,13.1,70.8,13.1c27.2,0,52.8-5.2,76.9-15.5c24.1-10.3,45.1-24.4,63-42.4
c18-18,32.1-39,42.4-63c10.3-24.1,15.5-49.7,15.5-76.9C453.8,236.1,450.3,214.8,443.3,194.7z M147.7,93.2
c-7.2,4.7-14.1,9.8-20.6,15.5s-12.8,11.7-18.8,18.3c-4.4,35.6-3.6,64.1,2.3,85.3c5.6,21.3,14.9,37.6,27.9,49
c13,11.4,28.8,18.8,47.6,22.3c18.4,3.4,38.1,5,59.1,4.7c-26.6-4.1-48.1-11.6-64.7-22.5c-16.3-10.9-28.1-24.8-35.4-41.5
c-7.3-16.7-10.5-36.2-9.6-58.4C136.2,143.7,140.2,119.4,147.7,93.2z M309.4,68.1c-10.9-3-22.2-5.1-33.8-6.3
C256,69,239.1,77.1,225.1,86.1c-13.8,9.4-24.8,19.8-33,31.4c-8.3,11.6-13.5,24.1-15.7,37.5c-2.5,13.8-2.2,28.4,0.9,44.1
c1.6-16.9,5.8-32.2,12.7-45.9c7.2-14.1,17.4-26.1,30.7-36.1c13.3-10,29.9-18.1,49.9-24.4c20-6.6,43.4-10.8,70.3-12.7
C330.8,75.1,320.4,71.1,309.4,68.1z M264,317.2c-3.1,2.8-5.2,6.1-6.1,9.8c-0.3,1.9,0.2,3.9,1.6,6.1c1.4,2.2,3,3.6,4.9,4.2
c1.2,0.3,2.6,0.2,4-0.5c1.4-0.6,2.4-1.4,3-2.3c0.6-0.9,1-1.9,1.2-2.8c0.2-0.9,0.1-1.7-0.2-2.3c-0.3-0.6-0.7-1.2-1.2-1.6
s-1-0.9-1.6-1.2c8.1-1.2,11.6,2.4,10.5,11c-1.1,8.6-6.5,14-16.2,16.2c-8.4,1.6-15-0.5-19.7-6.1s-7.2-12.2-7.5-19.7
c0-13.1,5.1-22,15.2-26.5c10.2-4.5,22.7-5.7,37.7-3.5c-13.1-10.9-26.3-14.2-39.4-9.8c-13.4,4.1-23.4,11.4-30,22
c-6.6,10.6-8,22-4.2,34.2s15.9,20.9,36.6,26.3c22.8,3.4,36.7-3.8,41.7-21.6c5-17.8-1.3-29.4-18.8-34.7
C271,313.5,267.1,314.4,264,317.2z M379,259.4c2-5.5,2.9-10.9,2.6-16.2c-0.3-4.4-1.7-8.6-4.2-12.7c-2.5-4.1-5.6-7.3-9.4-9.8
c-2.8-2.2-6.1-3.5-9.8-4s-7.3-0.2-10.8,0.7c-3.1,0.6-6,2-8.7,4c-2.7,2-4.5,4.6-5.4,7.7c-0.6,1.9-0.6,3.9,0,6.1
c0.6,2.2,1.6,4.1,2.8,5.6c1.6,1.3,3.5,2.1,5.9,2.6s4.5,0.4,6.3-0.2c1.2-0.3,2.4-1.1,3.5-2.3c1.1-1.2,1.6-2.5,1.6-3.8
c0.3-0.9,0.2-1.8-0.5-2.6c-0.6-0.8-1.4-1.5-2.3-2.1c-0.9-0.6-1.8-1.2-2.6-1.6c-0.8-0.5-1.6-0.9-2.6-1.2c0.3-1.2,1.7-2.1,4.2-2.6
c2.5-0.5,4.5-0.2,6.1,0.7c3.4,1.6,6.3,4.4,8.7,8.4c2.3,4.1,3,8,2.1,11.7c-1.6,5.3-5.2,9.7-10.8,13.1c-5.6,3.4-11.1,5.2-16.4,5.2
c-5.9,0-11.6-1.9-16.9-5.6c-5.3-3.8-9.2-8.9-11.7-15.5c-1.6,5.9-3.3,11.1-5.2,15.5c-1.9,4.4-4.1,7.7-6.6,9.8
c9.4,12.2,20.7,18.4,34,18.5c13.3,0.2,25.7-5.2,37.3-16.2C374.1,269.3,377,264.8,379,259.4z M389.1,227.7
c4.4,20.3,2.8,37.3-4.7,51.1c-7.5,13.8-22.8,23.4-45.9,29.1c11.9,3.1,23,2.2,33.3-2.8c10.3-5.3,18.4-12.3,24.4-21.1
c5.9-8.7,8.7-18.4,8.4-29.1C404,244.6,398.8,235.5,389.1,227.7z"/>
</g>
</g>
<g id="Fire">
<g class="st1">
<path class="st8" d="M31,258.6c0-30.9,5.9-60.2,17.8-87.7c11.6-27.2,27.6-51,48-71.5c20.5-20.5,44.3-36.5,71.5-48
c27.5-11.9,56.7-17.8,87.7-17.8s60.2,5.9,87.7,17.8c27.2,11.6,51,27.6,71.5,48c20.5,20.5,36.5,44.3,48,71.5
c11.9,27.5,17.8,56.7,17.8,87.7s-5.9,60.2-17.8,87.7c-11.6,27.2-27.6,51-48,71.5c-20.5,20.5-44.3,36.5-71.5,48
c-27.5,11.9-56.7,17.8-87.7,17.8s-60.2-5.9-87.7-17.8c-27.2-11.6-51-27.6-71.5-48c-20.5-20.5-36.5-44.3-48-71.5
C36.9,318.8,31,289.6,31,258.6z M370.4,384.7c0.3-3.1,1.4-5.3,3.3-6.6c2.8-2.5,4.7-5.4,5.6-8.7s1.4-7.4,1.4-12.4
c2.2,3.1,3.8,6.8,4.9,11c1.1,4.2,0.9,9.5-0.7,15.7c-0.9,2.2-0.6,3.8,0.9,4.7c1.6,0.9,3.3,0,5.2-2.8c6.6-10.3,9.7-20.7,9.4-31.2
c-0.3-10.5-3.3-20.9-8.9-31.2c-8.1-16.9-10.2-30.1-6.1-39.6c4.1-9.5,12.8-15.1,26.3-16.6c-13.1,9.1-18.2,18.2-15.2,27.4
c3,9.2,12,18.5,27,27.9c4.1-5.9,8.3-11.5,12.7-16.6c4.4-5.2,8.9-9.8,13.6-13.8l1.9-0.9c0.6-5.3,1.2-10.6,1.6-15.9
c0.5-5.3,0.7-10.8,0.7-16.4c0-27.2-5.2-52.8-15.5-76.9c-10.3-24.1-24.5-45.1-42.4-63c-18-18-39-32.1-63-42.4
C308.8,66,283.2,60.8,256,60.8s-52.8,5.2-76.9,15.5c-24.1,10.3-45.1,24.5-63,42.4c-18,18-32.1,39-42.4,63
c-10.3,24.1-15.5,49.7-15.5,76.9c0,21.9,3.4,42.7,10.1,62.6c6.7,19.8,16.2,38,28.4,54.6c1.6-0.3,3.4-0.5,5.4-0.5
c2,0,3.4-0.5,4-1.4c0.6-0.9,0.7-1.9,0.2-2.8s-0.5-1.7-0.2-2.3c2.5-4.4,6.3-8,11.5-10.8s10.1-4.4,14.8-4.7
c-5.6,5.9-9.4,11.6-11.3,17.1c-1.9,5.5-0.9,10.1,2.8,13.8l10.3,10.8c0.9-6.9,2.3-13.4,4.2-19.7c1.9-6.2,4.1-12.3,6.6-18.3
c0.9,5.9,2.4,11.8,4.5,17.6c2,5.8,3.4,11.6,4,17.6c10-1.2,14.9-6.6,14.8-16.2c-0.2-9.5-2.1-17.1-5.9-22.7l-6.6-10.3
c-10.3-16.6-19.1-36.4-26.3-59.5c-7.2-23.1,3.9-42,33.3-56.7c-9.7,9.4-14.6,18.7-14.8,27.9c-0.2,9.2,4.5,17.9,13.8,26
c2.2-12.8,6.2-20.3,12-22.5c5.8-2.2,8.2-15.3,7.3-39.4c6.2,5.3,9.8,13.7,10.8,25.1c0.9,11.4,4.4,18.4,10.3,20.9
c7.2-4.1,8.6-12.9,4.2-26.5c-4.4-13.6-9.8-26.6-16.4-39.1c-15-26.9-17.3-49.7-7-68.4c10.3-19.1,24.4-32.3,42.2-39.6
c17.8-7.3,35-7.7,51.6-1.2c16.6,6.3,23.4,21.3,20.6,45c-1.9-19.1-7.7-30-17.3-32.8c-9.7-2.5-18.1,0-25.3,7.5
c-7.2,7.5-10.8,18.8-10.8,33.8c0,14.7,8.9,30,26.7,45.9c10.6-2.8,16-8.4,16.2-16.9c0.2-8.4-0.4-15.9-1.6-22.5
c2.8,6.6,5.6,12.7,8.4,18.5c2.8,5.8,6.4,10.4,10.8,13.8c3.1,3.1,5.4,7.3,6.8,12.7c1.4,5.3,1.6,12,0.7,20.2l20.2,19.2
c4.1-2.8,6.7-6.2,8-10.1c1.2-3.9,0.6-8.4-1.9-13.4l-5.2-10.3c-5.9-11.9-8.1-23-6.6-33.5c1.6-10.5,10.2-15.7,25.8-15.7
c-10.9,8.1-16.1,15.6-15.5,22.5c0.6,6.9,3.1,13,7.5,18.3l13.1,15.9c9.1,10.6,15.3,22.7,18.8,36.1c3.4,13.4,0.2,29.1-9.8,46.9
c9.1,15.6,13,30.2,11.7,43.8c-1.3,13.6-6.6,26.3-15.9,38.2c-0.6,1.9-1.6,3.5-3,4.9s-2.3,3-2.6,4.9c-0.3,2.2-0.2,4.3,0.2,6.3
c0.5,2,1.2,4.1,2.1,6.3c0.3,0.6,0.7,1.4,1.2,2.3s1.2,1.4,2.1,1.4c1.2,0,2.3-0.8,3.3-2.3c0.9-1.6,1.7-3,2.3-4.2
C369.1,390.5,370.1,387.9,370.4,384.7z M301,408.6c0.3-7.5,3.8-13.7,10.3-18.8c8.4-6.6,15.7-14.3,21.8-23.2s8.2-17.1,6.3-24.6
c-1.3,3.4-3.2,5.6-5.9,6.6c-2.7,0.9-5.6,1.3-8.7,0.9l-10.8-0.9c-1.3,0-2-1.1-2.3-3.3c-0.3-2.2-0.2-3.9,0.5-5.2
c10.3-16.9,16.6-31.2,19-42.9s1-20.2-4-25.5c-1.3,5.3-4.1,11.1-8.7,17.3c-4.5,6.3-8.7,9.5-12.4,9.8h-7c-1.9,0-3.7-0.5-5.4-1.6
c-1.7-1.1-2.9-2.6-3.5-4.5c-4.4-15.3-10.9-28.5-19.7-39.6c-8.8-11.1-18-21.6-27.7-31.6c10,35.9,9.4,63.8-1.9,83.7
c-11.3,19.8-30,24.6-56.3,14.3c10,18.1,16.9,35.6,20.6,52.3c3.8,16.7-0.9,31.6-14.1,44.8c-0.3,0.3-0.6,0.5-0.9,0.7
c-0.3,0.2-0.8,0.2-1.4,0.2h-5.2c-0.9,0-1.9,0.2-2.8,0.7s-1.9,1-2.8,1.6c-0.6,0.6-1.2,1.3-1.6,2.1c-0.5,0.8-0.7,1.6-0.7,2.6
c-0.3,0.9-0.4,1.9-0.2,2.8c0.2,0.9,0.4,1.7,0.7,2.3c0.6,0.9,1.2,1.7,1.6,2.3c0.5,0.6,1,1.3,1.6,1.9c2.8,2.2,5.9,4.2,9.1,6.1
s6.6,3.1,10.1,3.8l8.9-2.3c-2.8-3.8-5.1-7.1-6.8-10.1c-1.7-3-2.6-5.1-2.6-6.3c1.9,0.6,3.9,1.9,6.1,3.8c2.2,1.9,4.5,4.1,7,6.6
l7.5-5.2c1.9-4.7,3.1-9.5,3.8-14.5c0.6-5,0-9.7-1.9-14.1l-7.5-17.8c-0.3-1.2-0.5-2.4-0.7-3.5c-0.2-1.1-0.1-2.3,0.2-3.5l13.1,17.8
c2.2,3.1,4.4,3.3,6.6,0.5c2.2-2.8,3.9-5.2,5.2-7c1.2-2.5,1.6-5.4,0.9-8.7c-0.6-3.3-1.4-6.3-2.3-9.1c-2.2-5.9-5.2-11.6-8.9-16.9
c-3.8-5.3-7.8-10.3-12.2-15c6.2,1.9,11.8,5.3,16.6,10.3c4.8,5,9.8,9.8,14.8,14.5c2.5,2.5,4.9,3.4,7.3,2.6
c2.3-0.8,2.7-2.9,1.2-6.3c-4.1-10.6-5.7-22.7-4.9-36.1c0.8-13.4,6-26.3,15.7-38.4c-0.3,7.2,0,16.5,0.9,27.9
c0.9,11.4,4.4,19.8,10.3,25.1c4.4,2.2,9.1,1.5,14.1-2.1c5-3.6,8.7-7.7,11.3-12.4c-5.9,17.2-8.2,33.9-6.8,50.2
c1.4,16.3-3.5,31.1-14.8,44.5c-5,5.6-4.8,10.7,0.5,15.2c5.3,4.5,10.6,4.1,15.9-1.2c-3.4,5.3-5.2,9.4-5.2,12.2s2.5,4.1,7.5,3.8
c2.8-0.9,5.5-2,8.2-3.3c2.7-1.2,5.2-2.7,7.7-4.2C305.5,426.8,300.7,416.1,301,408.6z"/>
</g>
</g>
<g id="Water">
<g class="st1">
<path class="st9" d="M31,258.6c0-30.9,5.9-60.2,17.8-87.7c11.6-27.2,27.6-51,48-71.5c20.5-20.5,44.3-36.5,71.5-48
c27.5-11.9,56.7-17.8,87.7-17.8s60.2,5.9,87.7,17.8c27.2,11.6,51,27.6,71.5,48c20.5,20.5,36.5,44.3,48,71.5
c11.9,27.5,17.8,56.7,17.8,87.7s-5.9,60.2-17.8,87.7c-11.6,27.2-27.6,51-48,71.5c-20.5,20.5-44.3,36.5-71.5,48
c-27.5,11.9-56.7,17.8-87.7,17.8s-60.2-5.9-87.7-17.8c-27.2-11.6-51-27.6-71.5-48c-20.5-20.5-36.5-44.3-48-71.5
C36.9,318.8,31,289.6,31,258.6z M376,327.8c11.9-8,22-17.1,30.5-27.4c8.4-10,14.8-21.2,19.2-33.5c4.4-12.3,8.1-24.8,11.3-37.3
c1.6-6.6,2.7-13.1,3.5-19.7c0.8-6.6,1.2-13.1,1.2-19.7c-6.9-19.1-16.4-36.4-28.6-52c-12.5-15.9-26.8-29.6-42.9-41
c-16.1-11.4-33.8-20.4-53.2-27c-19.4-6.2-39.7-9.4-60.9-9.4c-27.2,0-52.8,5.2-76.9,15.5c-24.1,10.3-45.1,24.5-63,42.4
c-18,18-32.1,39-42.4,63c-10.3,24.1-15.5,49.7-15.5,76.9c0,10,0.7,19.8,2.1,29.3c1.4,9.5,3.5,18.8,6.3,27.9
c9.7-44.4,22.7-81.4,38.9-111.1c16.6-29.7,35.9-52.9,58.1-69.6c22.2-16.7,47.2-27.4,75-32.1c27.8-4.4,58-3.8,90.5,1.9l13.1,11.7
l-17.8,3.3c-3.1,0.6-6.4,1.3-9.8,1.9c-3.4,0.6-6.4,1.9-8.9,3.8c-1.6,0.9-3,2.2-4.5,3.8c-1.4,1.6-1.8,3.1-1.2,4.7
c0.3,0.9,1,1.5,2.1,1.6c1.1,0.2,2.1,0.4,3,0.7c3.1,0.6,6.2,0.5,9.4-0.2c3.1-0.8,6.2-1,9.4-0.7c3.8,0.3,7.7,0.7,11.7,1.2
c4.1,0.5,7.8,1.6,11.3,3.5c5.3,2.5,10.6,5.6,15.9,9.4c5.3,3.8,9.2,8.4,11.7,14.1c1.2,3.1,1.5,6.6,0.7,10.3
c-0.8,3.8-1.5,7.3-2.1,10.8c-3.8-10.3-8.3-16.6-13.6-19c-5.3-2.3-11.6-4-18.8-4.9c-6.9-0.9-12.4,0.5-16.6,4.5
c-4.2,3.9-4.6,9.3-1.2,16.2c0.6,1.6,1.6,3,3,4.5s2.7,2.7,4,4l12.2,10.3c6.9,5.9,11.6,13.7,14.1,23.2c2.5,9.5,0.2,19.9-7,31.2
c0-9.1-1.1-16.2-3.3-21.6c-2.2-5.3-5.8-8.3-10.8-8.9l-14.1-3.8c-5.9-1.6-10.2-0.9-12.9,1.9c-2.7,2.8-2.1,7.8,1.6,15l3.8,6.1
c3.8,6.3,4.8,14.1,3,23.7c-1.7,9.5-5.9,16.2-12.4,19.9c2.2-14.7,0.9-25-3.8-30.9c-4.7-5.9-11.6-9.2-20.6-9.8
c-6.6-2.5-13.8-2.2-21.6,0.9c-7.8,3.1-14.1,7.3-18.8,12.7c-5,5.6-8.6,12.7-10.8,21.1c-2.2,8.4-2,16.3,0.5,23.4
c3.1,9.4,9.3,17.2,18.5,23.4c9.2,6.3,18.5,11.1,27.9,14.5c9.7,3.8,20.1,5.9,31.2,6.3c11.1,0.5,21.8-0.5,32.1-3
C351.8,341.6,364.1,335.8,376,327.8z M189,408.2l-2.8-2.8c-1.9-1.9-1.5-4.8,1.2-8.7c2.7-3.9,5.4-5.7,8.2-5.4l115.8,8.9
c17.8,1.3,34.6-3.9,50.4-15.5c15.8-11.6,29-26.4,39.6-44.5c-11.9,10.6-26.6,19.3-44.1,26c-17.5,6.7-34.8,9.3-52,7.7l-119.5-9.4
c-3.8,0.3-6.8,1.6-9.1,3.8c-2.3,2.2-3.7,5.3-4,9.4L157.1,366c-5.9-4.7-10.8-10.5-14.5-17.6s-7.3-14-10.8-20.9
c-2.5-5.3-2.1-9.5,1.2-12.7c3.3-3.1,7.4-2.8,12.4,0.9l15,9.4l6.1-7l-27.2-23c-4.7-2.8-9.7-2.4-15,1.2c-5.3,3.6-8.3,7.6-8.9,12
c-1.9,10.9-1,22.3,2.6,34c3.6,11.7,9.4,21.3,17.6,28.8l46.9,46.4L189,408.2z M293,177.6c-0.6-6.6,2.2-12.7,8.4-18.3
c-19.1-0.6-29.1-4.5-30-11.5s4.7-16.2,16.9-27.4c-17.8-1.2-34.4-0.2-49.7,3.3c-15.3,3.4-29.5,9.1-42.7,17.1s-25.3,18-36.6,30.2
c-10.9,11.9-21.1,25.6-30.5,41.3c15.6-6.9,30.6-11.9,45-15c14.7-3.1,28.8-4.1,42.4-3c13.6,1.1,26.5,4.6,38.7,10.5
c12.2,5.9,23.7,14.8,34.7,26.7c-3.4-9.7-3.1-17.2,0.9-22.5c4.1-5.3,11.7-8.4,23-9.4C300.5,191.5,293.7,184.1,293,177.6z"/>
</g>
</g>
<g id="Void">
<g class="st1">
<path class="st10" d="M31,258.6c0-30.9,5.9-60.2,17.8-87.7c11.6-27.2,27.6-51,48-71.5c20.5-20.5,44.3-36.5,71.5-48
c27.5-11.9,56.7-17.8,87.7-17.8s60.2,5.9,87.7,17.8c27.2,11.6,51,27.6,71.5,48c20.5,20.5,36.5,44.3,48,71.5
c11.9,27.5,17.8,56.7,17.8,87.7s-5.9,60.2-17.8,87.7c-11.6,27.2-27.6,51-48,71.5c-20.5,20.5-44.3,36.5-71.5,48
c-27.5,11.9-56.7,17.8-87.7,17.8s-60.2-5.9-87.7-17.8c-27.2-11.6-51-27.6-71.5-48c-20.5-20.5-36.5-44.3-48-71.5
C36.9,318.8,31,289.6,31,258.6z M438.3,181.8c-10.3-24.1-24.5-45.1-42.4-63c-18-18-39-32.1-63-42.4C308.8,66,283.2,60.8,256,60.8
s-52.8,5.2-76.9,15.5c-24.1,10.3-45.1,24.5-63,42.4c-18,18-32.1,39-42.4,63c-10.3,24.1-15.5,49.7-15.5,76.9
c0,21.6,3.3,42.2,9.8,61.9c6.6,19.4,15.7,37.2,27.4,53.4c11.7,16.3,25.5,30.5,41.5,42.7c16.2,12.2,33.9,21.7,53,28.6
c-15-6.2-28.8-14.7-41.3-25.3c-12.5-10.3-23.2-22.2-32.1-35.6c-8.9-13.4-15.9-28-20.9-43.6c-5-15.9-7.5-32.7-7.5-50.2
c0-23.1,4.4-44.8,13.1-65.2c8.7-20.3,20.7-38,35.9-53.2c15.2-15.2,32.9-27.3,53.2-36.3c20.6-8.7,42.5-13.1,65.6-13.1
c23.1,0,44.8,4.4,65.2,13.1c20.3,9.1,38.1,21.2,53.4,36.3c15.3,15.2,27.3,32.9,36.1,53.2c8.7,20.3,13.1,42,13.1,65.2
c0,17.5-2.5,34.2-7.5,50.2c-5,15.9-12,30.6-21.1,44.1c-9.1,13.4-20,25.3-32.8,35.6c-12.5,10.6-26.4,19.1-41.7,25.3
c19.4-6.9,37.2-16.4,53.4-28.6c16.2-12.2,30.3-26.4,42.2-42.7c11.9-16.2,21.1-34.2,27.7-53.9s9.8-40.3,9.8-61.9
C453.8,231.5,448.7,205.8,438.3,181.8z M211.9,344.4c12.2-12.2,26.9-18.3,44.1-18.3c17.2,0,31.9,6.1,44.1,18.3
s18.3,26.9,18.3,44.1c0,12.5-3.4,23.8-10.3,34c-6.9,10.2-15.6,17.7-26.3,22.7c22.8-5.9,41.7-18.3,56.7-37S361,367.7,361,343
c0-12.8-2.2-25-6.6-36.6c-4.4-11.6-10.5-22-18.3-31.2c-7.8-9.2-17-16.9-27.7-23.2c-10.6-6.2-22-10.5-34.2-12.7
c7.2,3.4,13.1,8.7,17.8,15.7s7,14.8,7,23.2c0,12.2-4.2,22.4-12.7,30.7c-8.4,8.3-18.6,12.4-30.5,12.4c-11.9,0-22-4.1-30.5-12.4
c-8.4-8.3-12.7-18.5-12.7-30.7c0-8.4,2.3-16.2,6.8-23.2c4.5-7,10.5-12.3,18-15.7c-12.5,2.2-24.1,6.4-34.7,12.7
c-10.6,6.3-19.8,14-27.4,23.2c-7.7,9.2-13.8,19.6-18.5,31.2c-4.4,11.6-6.6,23.8-6.6,36.6c0,24.7,7.6,46.4,22.7,65.2
c15.2,18.8,34.1,31.1,57,37c-10.9-5-19.8-12.6-26.5-22.7c-6.7-10.2-10.1-21.5-10.1-34C193.7,371.3,199.8,356.6,211.9,344.4z
M304.3,382.4c0-13.4-4.7-24.8-14.1-34.2s-20.8-14.1-34.2-14.1c-13.4,0-24.8,4.7-34.2,14.1s-14.1,20.8-14.1,34.2
c0,13.4,4.7,24.8,14.1,34.2s20.8,14.1,34.2,14.1c13.4,0,24.8-4.7,34.2-14.1S304.3,395.8,304.3,382.4z"/>
</g>
</g>
</g>
<g id="Npcs" class="st0">
<g id="Martial" class="st1">
<g>
<path class="st11" d="M57.3,388.5L31,315.4c8.7-1.9,18-3.4,27.7-4.7c9.7-1.2,20-1.9,30.9-1.9c5.9,10.6,13.3,20.5,22,29.5
c8.7,9.1,19.1,17.2,30.9,24.4c-14.7,1.9-29.2,5-43.6,9.4C84.6,376.5,70.7,381.9,57.3,388.5z M50.7,100.7
c12.2,9.1,22.7,19.1,31.6,30.2c8.9,11.1,10.5,22.9,4.9,35.4c-8.1,17.5-12.5,35.9-13.1,55.3c-0.6,19.4,3.6,38,12.7,56
c9.1,18,23.4,34.6,43.1,49.9c19.7,15.3,45.8,27.7,78.3,37c2.8-6.2,6.1-11.3,9.8-15s7.7-7,11.7-9.8c-28.1-9.7-48.3-23-60.5-39.8
s-18.8-33-19.7-48.3c-0.9-15.3,2.7-27.8,10.8-37.5c8.1-9.4,18.3-11.6,30.5-6.6c-2.5-17.5,1.2-28.4,11.3-32.8
c10-4.4,19.7-1.4,29.1,8.9c7.8-21.2,5.9-39.9-5.6-56c-11.6-16.1-29.5-20.7-53.9-13.8c-5.9-7.8-13.8-13.9-23.7-18.3
c-9.8-4.4-19.9-5-30.2-1.9c-10.3,3.1-20.7,3.7-31.2,1.6c-10.5-2-21.2-6-32.1-12L50.7,100.7z M83,393.6
c17.2-6.2,34.5-12.7,51.8-19.5c17.3-6.7,30.1-4,38.2,8.2c5.3,0,10.6,0.4,15.9,1.2c5.3,0.8,10.5,2.7,15.5,5.9
c0,5.3,0.7,10.4,2.1,15.2c1.4,4.8,3.5,9.3,6.3,13.4h-74.5v-13.6c-5.9,2.8-11.4,6.7-16.4,11.7c-5,5-9.7,10.9-14.1,17.8L83,393.6z
M256,354.7c-9.1,0-16.8,3.1-23.2,9.4c-6.4,6.3-9.6,13.9-9.6,23c0,9.1,3.2,16.8,9.6,23.2c6.4,6.4,14.1,9.6,23.2,9.6
c9.1,0,16.7-3.2,23-9.6c6.2-6.4,9.4-14.1,9.4-23.2c0-9.1-3.1-16.7-9.4-23C272.7,357.9,265.1,354.7,256,354.7z M461.3,100.7
c-12.2,9.1-22.7,19.1-31.6,30.2c-8.9,11.1-10.5,22.9-4.9,35.4c8.1,17.5,12.5,35.9,13.1,55.3c0.6,19.4-3.6,38-12.7,56
c-9.1,18-23.4,34.6-43.1,49.9c-19.7,15.3-45.8,27.7-78.3,37c-2.8-6.2-6.1-11.3-9.8-15s-7.7-7-11.7-9.8
c28.1-9.7,48.3-23,60.5-39.8s18.8-33,19.7-48.3c0.9-15.3-2.7-27.8-10.8-37.5c-8.1-9.4-18.3-11.6-30.5-6.6
c2.5-17.5-1.3-28.4-11.3-32.8c-10-4.4-19.7-1.4-29.1,8.9c-7.8-21.2-5.9-39.9,5.6-56c11.6-16.1,29.5-20.7,53.9-13.8
c5.9-7.8,13.8-13.9,23.7-18.3c9.8-4.4,19.9-5,30.2-1.9c10.3,3.1,20.7,3.7,31.2,1.6c10.5-2,21.2-6,32.1-12L461.3,100.7z
M429,393.6c-17.2-6.2-34.5-12.7-51.8-19.5c-17.3-6.7-30.1-4-38.2,8.2c-5.3,0-10.6,0.4-15.9,1.2c-5.3,0.8-10.5,2.7-15.5,5.9
c0,5.3-0.7,10.4-2.1,15.2c-1.4,4.8-3.5,9.3-6.3,13.4h74.5v-13.6c5.9,2.8,11.4,6.7,16.4,11.7c5,5,9.7,10.9,14.1,17.8L429,393.6z
M454.8,388.5l26.3-73.1c-8.8-1.9-18-3.4-27.7-4.7c-9.7-1.2-20-1.9-30.9-1.9c-5.9,10.6-13.3,20.5-22,29.5
c-8.8,9.1-19.1,17.2-30.9,24.4c14.7,1.9,29.2,5,43.6,9.4C427.4,376.5,441.3,381.9,454.8,388.5z"/>
</g>
</g>
<g id="Social">
<g class="st1">
<path class="st12" d="M249.4,382.4L31,265.2c7.8-6.9,15.9-13.3,24.1-19.2c8.3-5.9,17.1-11.3,26.5-15.9c2.8-6.6,5.4-13.2,7.7-19.9
c2.3-6.7,4.1-13.5,5.4-20.4l-8.4-8.4c9.4-4.1,18.9-7.1,28.6-9.1c9.7-2,19.5-3.2,29.5-3.5c5.3-4.1,10.4-8.8,15.2-14.3
c4.8-5.5,9.4-11.5,13.8-18l-6.6-11.3c9.1-0.3,18.3,0.5,27.7,2.6c9.4,2,19.2,5.2,29.5,9.6c6.9-1.9,13.4-4.2,19.7-7
c6.2-2.8,12.2-6.6,17.8-11.3v-12.7c7.8,3.4,15.6,7.6,23.4,12.4c7.8,4.8,15.5,11.5,23,19.9c6.9,2.2,13.8,3.1,20.9,2.8
c7-0.3,14-1.6,20.9-3.8l3.3-12.7c6.6,7.2,12.7,14.7,18.5,22.5c5.8,7.8,10.5,16.6,14.3,26.3c5.3,5,11.3,9.1,17.8,12.2
c6.6,3.1,13.9,4.5,22,4.2l7-8.4c4.1,8.1,7.6,17.3,10.5,27.7c3,10.3,5.1,22,6.3,35.2c4.4,5.3,9.1,10.2,14.3,14.8
c5.2,4.5,10.9,8.4,17.1,11.5L273.3,381.5l14.5,7.5c-3.4,15.3-12.4,22.7-27,22.3s-23.5-7.6-27-21.3L249.4,382.4z M186.2,304.1
l-4.7,15.5l-17.8,9.4l80.6,42.2L186.2,304.1z M218.5,279.7l-9.4,11.3l-20.2,3.8l60,69.8L218.5,279.7z M256.5,361.3v-90.9l-13.1,7
l-20.6-6.6L256.5,361.3z M264.9,363.6l31.4-84.8l-15,0.5l-16.9-14.1L264.9,363.6z M328.7,299.4l-7.5-1.9l-17.3-22l-31.4,89.1
L328.7,299.4z M353,332.7l-8-7.5l-5.6-26.3l-59.5,71.7L353,332.7z"/>
</g>
</g>
<g id="list_-_copie">
<g class="st1">
<path d="M31,258.6c0-30.9,5.9-60.2,17.8-87.7c11.6-27.2,27.6-51,48-71.5c20.5-20.5,44.3-36.5,71.5-48
c27.5-11.9,56.7-17.8,87.7-17.8s60.2,5.9,87.7,17.8c27.2,11.6,51,27.6,71.5,48c20.5,20.5,36.5,44.3,48,71.5
c11.9,27.5,17.8,56.7,17.8,87.7s-5.9,60.2-17.8,87.7c-11.6,27.2-27.6,51-48,71.5c-20.5,20.5-44.3,36.5-71.5,48
c-27.5,11.9-56.7,17.8-87.7,17.8s-60.2-5.9-87.7-17.8c-27.2-11.6-51-27.6-71.5-48c-20.5-20.5-36.5-44.3-48-71.5
C36.9,318.8,31,289.6,31,258.6z M467.4,258.6c0-29.1-5.5-56.6-16.4-82.5c-11.3-25.6-26.4-48-45.5-67
c-19.1-19.1-41.4-34.2-67-45.5c-25.9-10.9-53.4-16.4-82.5-16.4s-56.6,5.5-82.5,16.4c-25.6,11.3-48,26.4-67,45.5
c-19.1,19.1-34.2,41.4-45.5,67c-10.9,25.9-16.4,53.4-16.4,82.5s5.5,56.6,16.4,82.5c11.3,25.6,26.4,48,45.5,67
c19.1,19.1,41.4,34.2,67,45.5c25.9,10.9,53.4,16.4,82.5,16.4s56.6-5.5,82.5-16.4c25.6-11.3,48-26.4,67-45.5
c19.1-19.1,34.2-41.4,45.5-67C461.9,315.2,467.4,287.7,467.4,258.6z M75.1,182.2c10.3-24.1,24.3-45,42-62.8
c17.7-17.8,38.5-31.9,62.6-42.2c23.7-10.3,49.2-15.5,76.4-15.5s52.7,5.2,76.4,15.5c24.1,10.3,45,24.4,62.8,42.2
s31.9,38.8,42.2,62.8c10.3,23.8,15.5,49.2,15.5,76.4s-5.2,52.7-15.5,76.4c-10.3,24.1-24.4,45-42.2,62.8s-38.8,31.9-62.8,42.2
c-23.8,10.3-49.2,15.5-76.4,15.5s-52.7-5.2-76.4-15.5c-24.1-10.3-44.9-24.4-62.6-42.2c-17.7-17.8-31.6-38.7-42-62.8
c-10.3-23.7-15.5-49.2-15.5-76.4S64.8,206,75.1,182.2z M190.6,305.1c13.6-5.6,24.8-16.2,33.5-31.9c-0.3-0.3-0.5-0.6-0.5-0.9
c0-0.3-0.2-0.6-0.5-0.9c-11.9-3.8-23.4-5.3-34.5-4.7c-11.1,0.6-22,3-32.6,7c-2.2,4.1-5.5,7.3-9.8,9.6c-4.4,2.3-9.1,3.5-14.1,3.5
c-7.8,0-14.5-2.7-19.9-8.2c-5.5-5.5-8.2-12.1-8.2-19.9c0-7.8,2.7-14.5,8.2-19.9c5.5-5.5,12.1-8.2,19.9-8.2c5,0,9.7,1.2,14.1,3.5
c4.4,2.3,7.7,5.6,9.8,9.6c10.6,4.1,21.5,6.4,32.6,7c11.1,0.6,22.6-0.9,34.5-4.7c0.3-0.3,0.5-0.6,0.5-0.9c0-0.3,0.2-0.6,0.5-0.9
c-11.3-20-26.3-33-45.2-39.1c-18.9-6.1-37.3-25.4-55.1-57.9c-12.8,15-22.8,32-30,51.1C86.6,217.2,83,237.4,83,258.6
c0,21.3,3.6,41.4,10.8,60.5c7.2,19.1,17.2,36.1,30,51.1c4.1-7.5,8.1-14.1,12.2-19.7c4.1-5.6,8.3-10.5,12.7-14.5
C163,321,177,310.7,190.6,305.1z M248,191.4c-0.6-11.1-3-21.8-7-32.1c-4.1-2.5-7.3-5.9-9.6-10.3c-2.3-4.4-3.5-9.1-3.5-14.1
c0-7.8,2.7-14.5,8.2-19.9c5.5-5.5,12.1-8.2,19.9-8.2c7.8,0,14.5,2.7,19.9,8.2c5.5,5.5,8.2,12.1,8.2,19.9c0,5-1.2,9.7-3.5,14.1
c-2.3,4.4-5.6,7.8-9.6,10.3c-4.1,10.3-6.4,21-7,32.1c-0.6,11.1,0.9,22.6,4.7,34.5c0.3,0.3,0.6,0.5,0.9,0.5c0.3,0,0.6,0.2,0.9,0.5
c20-11.3,33-26.3,39.1-45.2c6.1-18.9,25.4-37.3,57.9-55.1c-15-12.8-32-22.8-51.1-30c-19.1-7.2-39.2-10.8-60.5-10.8
c-21.3,0-41.4,3.6-60.5,10.8c-19.1,7.2-36.1,17.2-51.1,30c7.5,4.1,14.1,8.1,19.7,12.2c5.6,4.1,10.5,8.3,14.5,12.7
c15,14.4,25.3,28.4,30.9,42s16.2,24.8,31.9,33.5c0.3-0.3,0.6-0.5,0.9-0.5c0.3,0,0.6-0.2,0.9-0.5C247.1,214,248.7,202.5,248,191.4
z M347.9,378.6c-5.6-4.1-10.5-8.3-14.5-12.7c-15-14.4-25.3-28.4-30.9-42s-16.3-24.8-31.9-33.5c-0.3,0.3-0.6,0.5-0.9,0.5
c-0.3,0-0.6,0.2-0.9,0.5c-3.8,11.9-5.3,23.4-4.7,34.5c0.6,11.1,3,22,7,32.6c4.1,2.2,7.3,5.5,9.6,9.8c2.3,4.4,3.5,9.1,3.5,14.1
c0,7.8-2.7,14.5-8.2,19.9c-5.5,5.5-12.1,8.2-19.9,8.2c-7.8,0-14.5-2.7-19.9-8.2c-5.5-5.5-8.2-12.1-8.2-19.9c0-5,1.2-9.7,3.5-14.1
c2.3-4.4,5.5-7.7,9.6-9.8c4.1-10.6,6.4-21.5,7-32.6c0.6-11.1-0.9-22.6-4.7-34.5c-0.3-0.3-0.6-0.5-0.9-0.5c-0.3,0-0.6-0.2-0.9-0.5
c-20,11.3-33,26.3-39.1,45.2c-6.1,18.9-25.4,37.3-57.9,55.1c15,12.8,32,22.8,51.1,30c19.1,7.2,39.2,10.8,60.5,10.8
c21.2,0,41.4-3.6,60.5-10.8c19.1-7.2,36.1-17.2,51.1-30C360.1,386.8,353.5,382.7,347.9,378.6z M418.2,198.2
c-7.2-19.1-17.2-36.1-30-51.1c-4.1,7.5-8.1,14.1-12.2,19.7c-4.1,5.6-8.3,10.5-12.7,14.5c-14.4,15-28.4,25.3-42,30.9
s-24.8,16.3-33.5,31.9c0.3,0.3,0.5,0.6,0.5,0.9c0,0.3,0.2,0.6,0.5,0.9c11.9,3.8,23.4,5.3,34.5,4.7c11.1-0.6,21.8-3,32.1-7
c2.5-4.1,5.9-7.3,10.3-9.6c4.4-2.3,9.1-3.5,14.1-3.5c7.8,0,14.5,2.7,19.9,8.2c5.5,5.5,8.2,12.1,8.2,19.9c0,7.8-2.7,14.5-8.2,19.9
c-5.5,5.5-12.1,8.2-19.9,8.2c-5,0-9.7-1.2-14.1-3.5c-4.4-2.3-7.8-5.5-10.3-9.6c-10.3-4.1-21-6.4-32.1-7
c-11.1-0.6-22.6,0.9-34.5,4.7c-0.3,0.3-0.5,0.6-0.5,0.9c0,0.3-0.2,0.6-0.5,0.9c11.3,20,26.3,33,45.2,39.1
c18.9,6.1,37.3,25.4,55.1,57.9c12.8-15,22.8-32,30-51.1c7.2-19.1,10.8-39.2,10.8-60.5C429,237.4,425.4,217.2,418.2,198.2z"/>
</g>
</g>
</g>
<g id="Techs">
<g id="Kihos" class="st0">
<g class="st1">
<path class="st13" d="M103.9,383.6c-8-5.8-11-15.5-9.1-29.3c16.9-1.6,33.5-3.4,49.9-5.6c16.4-2.2,32.4-2.8,48-1.9
c-0.6-20.3,5.2-35.9,17.6-46.6c12.3-10.8,25.7-17.6,40.1-20.4c13.4-2.8,22.7-8.4,27.9-16.9s5.4-16.7,0.7-24.8
c-2.2-4.4-4.9-8.5-8.2-12.4c-3.3-3.9-6.8-7.4-10.5-10.5c-1.9-1.9-4-3.2-6.3-4c-2.3-0.8-4.5-1.9-6.3-3.5c-1.9-1.9-3.4-4-4.7-6.3
c-1.3-2.3-3-4.1-5.2-5.4c-1.9-1.2-4.1-2-6.8-2.3c-2.7-0.3-5.2-0.5-7.7-0.5c-2.8,0.3-5.5,1.1-8,2.3c-2.5,1.3-5,2.7-7.5,4.2
c-1.9,1.3-3.7,2.9-5.4,4.9c-1.7,2-3.4,4-4.9,5.9c-1.6,1.3-3.3,2.4-5.2,3.5c-1.9,1.1-3,2.7-3.3,4.9c-0.3,1.3-0.1,2.4,0.7,3.5
c0.8,1.1,1.5,2.3,2.1,3.5c5.3-0.6,10.9-1,16.9-1.2c5.9-0.2,12.2-0.1,18.8,0.2c5.3,0.3,10.3,1.6,15,4s5.2,4.6,1.4,6.8
c-2.5,1.3-3.9,2.8-4.2,4.7c-0.3,1.9,1.6,2.7,5.6,2.3h9.4c3.8-0.3,6.2,0.9,7.5,3.5c1.2,2.7,0,4.5-3.8,5.4
c-8.1,1.6-16.2,2.7-24.1,3.5c-8,0.8-15.9,1-23.7,0.7l0.9,2.3c-3.1,2.5-6.4,4.4-9.8,5.6c-3.4,1.3-7,1.9-10.8,1.9l-47.8-1.4
c-2.5-0.3-4.8-0.9-7-1.6c-2.2-0.8-4.2-1.8-6.1-3h-9.4l-2.8-3.3c-9.4,1.6-17.7,1.7-25.1,0.5c-7.3-1.2-9.1-3.4-5.4-6.6l3.8-3.3
l-3.3-3.8l-20.6-2.3c-7.5-0.6-10.5-3-9.1-7c1.4-4.1,5.9-5.9,13.4-5.6l37,2.8c3.4,0.3,6-0.9,7.7-3.8c1.7-2.8,4.8-3.8,9.1-2.8
c5.6,0.9,11.2,1.6,16.6,1.9c5.5,0.3,10.9,0.2,16.2-0.5c2.5-3.4,5.3-6.6,8.4-9.6c3.1-3,6.4-5.7,9.8-8.2c1.2-0.9,2.7-1.8,4.5-2.6
c1.7-0.8,3.4-1.6,4.9-2.6c1.9-0.6,3.8-1.2,5.9-1.9c2-0.6,3.8-1.6,5.4-2.8c1.6-1.6,2.7-3.5,3.3-5.9c0.6-2.3,1.7-4.5,3.3-6.3
c1.2-1.2,2.6-2.6,4-4s3-2.4,4.9-3c1.6-0.3,3.2-0.2,4.9,0.5c1.7,0.6,3.4,1.1,4.9,1.4c1.2,0.3,2.5,0.5,3.8,0.7
c1.2,0.2,2.5,0.4,3.8,0.7c0.9,0.3,1.9,0.8,3,1.4c1.1,0.6,2.3,1.3,3.5,1.9c0.9,0.3,1.8,0.5,2.6,0.7c0.8,0.2,1.6,0.4,2.6,0.7
c0.3,0,0.6,0.2,0.9,0.5l-18.3-15.9c-0.6-0.6-1.6-1.2-2.8-1.6c-1.3-0.5-2.5-0.9-3.8-1.2c-1.9,0-3.8,0.4-5.9,1.2
c-2,0.8-4.1,1.2-6.3,1.2c-1.6,0.3-3.3,0.4-5.2,0.2c-1.9-0.2-3.6-0.4-5.2-0.7c-1.9,0-3.6-0.2-5.2-0.5c-1.6-0.3-3.1-0.8-4.7-1.4
l-6.1-1.9l9.8-1.9c1.6-0.3,3.3-0.6,5.2-0.9c1.9-0.3,3.1-1.1,3.8-2.3c0.6-0.6,0.9-1.6,0.7-2.8c-0.2-1.2-0.5-2.2-1.2-2.8
c-1.3-0.9-2.7-1.2-4.5-0.9c-1.7,0.3-3.2,0.6-4.5,0.9c-1.3,0-2.3,0.3-3,0.9c-0.8,0.6-1.6,1.1-2.6,1.4c-1.9,0.6-3.7,0.9-5.4,0.9
c-1.7,0-3.5,0.2-5.4,0.5c-2.5,0.3-4.9,0.8-7.3,1.4c-2.3,0.6-4.8,1.3-7.3,1.9c-2.5,0.3-5.1,0.5-7.7,0.7c-2.7,0.2-5.2,0.2-7.7,0.2
c-1.9,0-3.9,0-6.1,0c-2.2,0-4.4-0.2-6.6-0.5c-1.9-0.3-3.7-0.6-5.4-0.9c-1.7-0.3-3.5-0.8-5.4-1.4c-1.6-0.9-3-2-4.5-3.3
c-1.4-1.2-3-2.2-4.9-2.8c-1.3-0.6-2.7-1.1-4.2-1.4c-1.6-0.3-3-0.5-4.2-0.5c-3.1-0.6-6.3-0.9-9.4-0.7c-3.1,0.2-6.1,0.1-8.9-0.2
c-2.2,0-4.3,0.1-6.3,0.2c-2,0.2-4.1-0.2-6.3-1.2c-0.3,0-0.7-0.2-1.2-0.5c-0.5-0.3-0.7-0.6-0.7-0.9c-0.3-0.9,0-1.7,0.9-2.3
c0.9-0.6,1.7-1.2,2.3-1.9c1.6-1.2,3.3-2.1,5.2-2.6s3.8-1,5.6-1.6c1.2-0.3,2.7-0.5,4.2-0.5c1.6,0,3-0.3,4.2-0.9
c1.2-0.3,2.4-0.9,3.5-1.6c1.1-0.8,1.6-1.8,1.6-3c0-0.9-0.5-1.6-1.4-2.1s-1.7-0.9-2.3-1.2c-1.9-0.6-3.7-0.9-5.4-0.7
c-1.7,0.2-3.5,0.2-5.4,0.2c-5.6-0.3-11.3-0.4-16.9-0.2c-5.6,0.2-11.1,0.2-16.4,0.2c-1.3,0-2.5,0.2-3.8,0.5
c-1.3,0.3-2.5,0.3-3.8,0c-1.3-0.3-2.5-0.8-3.8-1.4c-1.3-0.6-2-1.6-2.3-2.8c-0.6-0.9-0.9-1.9-0.7-3c0.2-1.1,0.4-2.1,0.7-3
c0.3-0.9,0.9-1.7,1.6-2.3c0.8-0.6,1.2-1.2,1.2-1.9c-0.3-1.2-1.3-2-2.8-2.3c-1.6-0.3-2.7-1.1-3.3-2.3c0-0.9,0.1-1.9,0.2-2.8
c0.2-0.9,0.5-1.7,1.2-2.3c0.9-1.2,2.3-2,4.2-2.3c1.9-0.3,3.6-0.6,5.2-0.9c7.2-1.2,14.5-1.7,22-1.4c7.5,0.3,14.8,0.2,22-0.5h2.3
c2.2-3.4,6.6-6.3,13.1-8.7s12.7-3.8,18.3-4.5c8.4-1.2,17-1.1,25.8,0.5c8.7,1.6,17.5,1.6,26.3,0c3.8-0.3,7.3-1.3,10.8-3
c3.4-1.7,7-2.9,10.8-3.5c3.4-0.9,7-1.8,10.8-2.6c3.8-0.8,7.5-1,11.3-0.7c3.4,0,6.8,0.7,10.1,2.1s6.5,2.3,9.6,2.6
c3.4,0.3,6.7,0.2,9.8-0.5c3.1-0.6,6.2-0.9,9.4-0.9c5.6,0.3,11.2,0.5,16.6,0.5c5.5,0,10.5,1.1,15.2,3.3c1.9,0.6,3.8,1.6,5.9,3
c2,1.4,2.9,3,2.6,4.9c0,0.9-0.7,1.6-2.1,2.1s-2.7,0.9-4,1.2c-3.1,1.3-6.3,2.1-9.6,2.6s-6.6,1-10.1,1.6c-0.6,0.3-1.3,0.5-1.9,0.5
c-0.6,0-1.1,0.3-1.4,0.9c-0.6,0.3-0.9,0.9-0.9,1.6c0,0.8-0.2,1.3-0.5,1.6c-0.9,0.6-1.9,0.9-2.8,0.7c-0.9-0.2-1.9,0.1-2.8,0.7
c-0.6,0.3-1.3,0.7-1.9,1.2c-0.6,0.5-0.9,1-0.9,1.6c0,1.3,0.8,2.2,2.3,2.8c1.6,0.6,2.8,1.3,3.8,1.9c0.6,0.6,1.5,1.3,2.6,1.9
c1.1,0.6,1.6,1.4,1.6,2.3c0.3,0.6,0.2,1.4-0.2,2.3s-1,1.7-1.6,2.3c-0.9,0.9-2,1.7-3.3,2.3c-1.3,0.6-2.5,1.3-3.8,1.9
c-1.6,0.9-3.2,1.8-4.9,2.6c-1.7,0.8-3.5,1.3-5.4,1.6c-1.9,0.6-3.9,0.7-6.1,0.2c-2.2-0.5-4.1-0.2-5.6,0.7
c-0.6,0.3-1.3,0.7-1.9,1.2c-0.6,0.5-0.9,1-0.9,1.6c0,0.6,0.3,1.1,0.9,1.4c0.6,0.3,1.2,0.6,1.9,0.9c0.9,0.3,2,0.3,3.3,0
c1.2-0.3,2.5-0.3,3.8,0c1.9,0,3.8-0.1,5.6-0.2c1.9-0.2,3.3,0.4,4.2,1.6c0.3,0.3,0.5,0.8,0.5,1.4c0,0.6-0.2,1.1-0.5,1.4
c-0.3,0.3-0.9,0.5-1.6,0.5c-0.8,0-1.5,0.2-2.1,0.5c-1.6,0-3.2,0-4.9,0c-1.7,0-3.4,0.2-4.9,0.5c-0.9,0.3-1.9,0.7-2.8,1.2
s-1.6,1.2-1.9,2.1c-0.3,0.6-0.2,1.4,0.2,2.3s0.9,1.7,1.2,2.3c0.9,2.2,2.3,4.1,4,5.9c1.7,1.7,3.5,3.4,5.4,4.9
c2.2,1.9,4.7,3.3,7.5,4.2s5.3,2.3,7.5,4.2c1.9,1.3,3.7,2.8,5.4,4.7c1.7,1.9,3.4,3.8,4.9,5.6c2.5,2.8,4.8,5.7,6.8,8.7
c2,3,4.1,6,6.3,9.1c1.9,2.5,4.1,5,6.6,7.5c2.5,2.5,4.7,5.3,6.6,8.4c0.6,1.6,1.2,3,1.9,4.5c0.6,1.4,1.2,3,1.9,4.9
c0-11.3,1.6-21.4,4.9-30.5c3.3-9.1,11.5-15,24.6-17.8c-1.3-0.9-2.7-1.7-4.5-2.3c-1.7-0.6-3.5-1.1-5.4-1.4c-2.2-0.6-4.5-0.7-7-0.2
c-2.5,0.5-5,0.7-7.5,0.7c-2.8-0.3-5.7-0.4-8.7-0.2c-3,0.2-5.7-0.2-8.2-1.2c-2.5-0.6-5.1-1.5-7.7-2.6c-2.7-1.1-4.6-2.7-5.9-4.9
c-0.9-1.9-1.3-4-0.9-6.3c0.3-2.3,1.1-4.5,2.3-6.3c1.6-2.2,3.8-3.8,6.6-4.7s5.6-1.7,8.4-2.3c3.4-0.9,6.9-1.5,10.3-1.6
c3.4-0.2,7-0.4,10.8-0.7c2.8-0.3,5.6-0.7,8.4-1.2s5.5-1,8-1.6c2.8-0.6,5.4-1.4,7.7-2.3s4.8-1.9,7.3-2.8c3.4-0.9,6.8-1.7,10.1-2.3
c3.3-0.6,6.6-1.2,10.1-1.9c3.8-0.3,7.7-0.4,11.7-0.2c4.1,0.2,8,0.2,11.7,0.2c1.9,0,3.7,0.2,5.4,0.5c1.7,0.3,3.4,0.5,4.9,0.5
l18.8-1.4c1.9,0,3.8,0.5,5.9,1.4c2,0.9,3.4,2.2,4,3.8c0.3,0.6,0.3,1.4,0,2.3c-0.3,0.9-0.8,1.7-1.4,2.3c-0.3,0.6-0.8,1.2-1.4,1.6
c-0.6,0.5-1.4,0.7-2.3,0.7c-0.9,0.3-1.8,0.2-2.6-0.5c-0.8-0.6-1.8-0.9-3-0.9h-9.4c-1.6,0-3,0.2-4.5,0.5c-1.4,0.3-2.9,0.8-4.5,1.4
c-1.3,0.6-2.8,1.6-4.7,2.8c-1.9,1.3-2.7,2.7-2.3,4.2c0.3,1.9,1.5,3.1,3.5,3.8c2,0.6,4,0.9,5.9,0.9l49.2-0.9
c1.9-0.3,3.8-0.4,5.9-0.2c2,0.2,4,0.5,5.9,1.2c0.9,0.6,1.9,1.2,2.8,1.6s1.6,1.2,1.9,2.1c0.3,0.9,0.3,1.9,0,2.8
c-0.3,0.9-0.8,1.7-1.4,2.3c-1.6,1.3-3.5,1.3-5.9,0c-2.3-1.2-4.5-1.6-6.3-0.9c-0.6,0.3-1.2,0.8-1.6,1.4c-0.5,0.6-1,1.1-1.6,1.4
c-1.9,0.3-3.8,0.2-5.6-0.5c-1.9-0.6-3.8-0.8-5.6-0.5c-0.3,0.3-0.8,0.5-1.4,0.7c-0.6,0.2-0.9,0.4-0.9,0.7c0,0.9,0.5,1.5,1.4,1.6
c0.9,0.2,1.9,0.4,2.8,0.7c0.6,0,1.3-0.1,2.1-0.2c0.8-0.2,1.6-0.2,2.6-0.2c1.2,0.6,2.4,1.4,3.5,2.3c1.1,0.9,2.1,1.9,3,2.8
c0.9,1.6,1.6,3.5,1.9,5.9c0.3,2.3,1.2,4.1,2.8,5.4c0.9,0.6,2,1,3.3,1.2c1.2,0.2,2.3,0.1,3.3-0.2c1.6,0,3-0.5,4.2-1.4
c1.2-0.9,2.5-1.2,3.8-0.9c2.5,0,5.2,1,8,3c2.8,2,4.2,4.5,4.2,7.3c0,1.9-1.3,3.2-4,4c-2.7,0.8-5.1,1-7.3,0.7
c-6.6,0.3-12.3,1.3-17.1,3c-4.8,1.7-8.8,4.5-12,8.2c0,0.3,0.1,0.6,0.2,0.9c0.2,0.3,0.4,0.5,0.7,0.5c0.3,0.3,0.7,0.4,1.2,0.2
c0.5-0.2,0.9-0.2,1.2-0.2c0.9-0.3,1.7-0.5,2.3-0.5c0.6,0,1.4,0,2.3,0s1.9,0.1,2.8,0.2c0.9,0.2,1.7,0.5,2.3,1.2
c0.3,0.6,0.4,1.4,0.2,2.3c-0.2,0.9-0.4,1.7-0.7,2.3c-0.6,0.9-1.6,1.6-2.8,1.9c-1.3,0.3-2.3,0.6-3.3,0.9c-2.2,0.6-4.5,1.3-7,1.9
c-2.5,0.6-4.8,1.1-7,1.4c-2.2,0.3-4.4,0.5-6.6,0.7c-2.2,0.2-4.4,0.4-6.6,0.7c-1.3,0-2.5,0.1-3.8,0.2c-1.3,0.2-2.7,0.2-4.2,0.2
c-4.1,0-8.2-0.4-12.4-1.2c-4.2-0.8-8.4-1.3-12.4-1.6c-6.6-0.6-13.2-0.9-19.9-0.7c-6.7,0.2-13.4-0.4-19.9-1.6
c-1.6-0.3-3.3-0.6-5.2-0.9c-1.9-0.3-3.6-0.9-5.2-1.9c-0.3-0.3-0.6-0.7-0.9-1.2c-0.3-0.5-0.3-0.9,0-1.2c0.6-1.2,1.9-1.6,3.8-0.9
c1.9,0.6,3.4,0.6,4.7,0c0.3-0.3,0.6-0.6,0.9-0.9c0.3-0.3,0.5-0.6,0.5-0.9c-0.3-1.2-1.3-1.9-3-1.9c-1.7,0-3.2-0.2-4.5-0.5
c-1.6-0.3-3-0.4-4.5-0.2c-1.4,0.2-2.7-0.1-4-0.7c-0.9-0.6-1.9-1.3-2.8-2.1c-0.9-0.8-1.3-1.6-0.9-2.6c0-0.6,0.5-1.2,1.4-1.6
s1.7-0.9,2.3-1.2c1.2-0.9,2.7-1.6,4.5-1.9c1.7-0.3,2.9-1.2,3.5-2.8c-9.4-0.6-16.5,2.3-21.3,8.7c-4.8,6.4-6,15.4-3.5,27
c4.4,20,0.9,36.9-10.3,50.6c-11.3,13.8-22.8,21.6-34.7,23.4c-24.7,4.1-38.8,11.3-42.2,21.6c-3.4,10.3,4.2,25.8,23,46.4l0.9-0.5
c-4.1-6.6-6.3-12.2-6.6-16.9c-0.3-4.7,1.2-7.2,4.7-7.5c17.2-0.9,34.9-1.2,53.2-0.9c18.3,0.3,37.3,1.7,57,4.2
c1.2,14.1-1.7,24.3-8.9,30.7c-7.2,6.4-17.7,9.8-31.4,10.1c1.2,15.3-6.6,26.3-23.7,32.8c-17,6.6-40.7,10.5-71,11.7
c-30.3,1.3-54.4-3-72.2-12.7c-17.8-9.7-21.1-20.9-9.8-33.8C124.3,391.8,111.9,389.4,103.9,383.6z"/>
</g>
</g>
<g id="Maho" class="st0">
<g class="st1">
<path class="st14" d="M150.5,404l3.3-1.9v-2.8l-0.9-0.9v-7.5l15.5-6.1l2.8-3.8l-3.3-4.2l-7-1.9l-5.2,6.6l1.4-7L146.3,388
l2.8-12.7l-6.1,6.6l0.9-8.9l-4.7,6.1h-2.8l-6.6,10.3c1.9-4.7,3.5-9.4,4.9-14.3c1.4-4.8,2.4-9.6,3-14.3l-4.2-0.5l-4.7,3.8
l-0.5-4.2c-6.3,3.4-11.9,8.5-16.9,15.2c-5,6.7-10.2,13.4-15.5,19.9c3.1-5.3,6.5-10.7,10.1-16.2c3.6-5.5,7.6-10.9,12-16.2
l-4.7,0.5l1.4-4.7c-5.6,3.8-10.8,8.1-15.5,13.1c-4.7,5-7.8,11.7-9.4,20.2c-0.3-3.1-0.5-6.2-0.5-9.1c0-3,0.2-6,0.5-9.1l-3.3-2.3
l-3.3,2.8c-0.6-2.8-0.2-5.7,1.2-8.7c1.4-3,3.5-5.9,6.3-8.7c-3.1-5.9-6.8-10.3-11-13.1s-8.7-4.8-13.4-6.1c4.1-2.2,6-4.6,5.9-7.3
c-0.2-2.7-1.5-5.5-4-8.7c-2.5-2.2-4.7-4.6-6.6-7.3c-1.9-2.7-3.8-5.4-5.6-8.2l8.4-8.9c-8.1-9.7-13.6-18.7-16.4-27
c-2.8-8.3-3.4-15.7-1.9-22.3c10,11.9,20.8,22.9,32.3,33c11.6,10.2,25,18.4,40.3,24.6c7.2,2.2,12.4,2,15.7-0.7
c3.3-2.7,4.6-7.6,4-14.8l-29.5-82.5c-3.4-10.3-4.4-21-2.8-32.1c1.6-11.1,6.6-21.3,15-30.7l30.9-33.3l-2.3,7
c10.6-5,18-14.3,22.3-27.9s6.6-27.1,7.3-40.5l1.9-5.2c1.2,14.4,0.3,28.4-2.8,42.2c-3.1,13.8-10,26.9-20.6,39.4l9.8-8.4
l-26.3,37.5c-5.3,6.9-8.8,14.5-10.3,22.7c-1.6,8.3-0.6,17.4,2.8,27.4c4.1,15.9,9.7,31.1,16.9,45.5c7.2,14.4,15.6,28.1,25.3,41.3
c2.2-2.5,4.4-3.6,6.6-3.3c2.2,0.3,4.5,1.9,7,4.7c1.2-2.8,1.5-6.5,0.7-11c-0.8-4.5-1.8-9.1-3-13.8l8,18.8l-1.4-9.4l10.8,22h2.8
l6.1,8l3.3-6.6l9.8,0.9l0.5-3.3l2.8,3.3l-0.5-7l2.8-2.3l1.9,2.8l-7-47.3c-2.2-17.2-3.1-27.7-2.8-31.6c0.3-3.9,1.9-10.7,4.7-20.4
l12.2-36.6l9.8-2.8l0.9,9.4l-8.9,49.2c-1.3,5.9-2.1,11.8-2.6,17.6c-0.5,5.8-0.1,12,1.2,18.5l15.9,52.5l2.3-3.3l1.4,5.6l8.4-3.8
l0.5,5.6l7,0.5c0.6-2.2,1.4-4.3,2.3-6.3c0.9-2,2-4,3.3-5.9l1.4,8.4l2.8,1.9l1.9,1.9l0.5-4.2l2.8-0.9c0.9-5.3,2.3-10.6,4.2-15.9
c1.9-5.3,3.9-10.5,6.1-15.5c-1.3,3.8-2.3,7.6-3.3,11.5c-0.9,3.9-1.6,7.7-1.9,11.5l3.3-0.9c0-3.8,0.6-7.3,1.9-10.5
c1.2-3.3,2.7-6.5,4.2-9.6c-0.6,3.1-1.2,6.3-1.6,9.4c-0.5,3.1-0.4,6.3,0.2,9.4h2.8l5.2,4.2h3.3c6.6-8.7,13.4-20.8,20.4-36.1
c7-15.3,14.1-33.6,21.3-54.8c4.1-11.3,5.2-22.1,3.3-32.6c-1.9-10.5-4.8-20.7-8.9-30.7c-7.8-15.3-17.3-28.8-28.6-40.5
S309.6,68,313.7,33.6c-0.6,12.2,0.6,23.5,3.8,34c3.1,10.5,9.5,19.8,19.2,27.9l-9.8-22l52,68c6.2,11.6,10.1,23.7,11.5,36.3
s-0.9,26.6-6.8,42c-5,15-10.1,30.1-15.2,45.2c-5.2,15.2-8.7,29.3-10.5,42.4c19.4-4.4,37.9-13.3,55.5-26.7
c17.7-13.4,34.6-30.3,50.9-50.6l-6.6,17.3l5.6-8l3.3,5.2c0.6,4.7-1.6,12-6.8,21.8s-6.3,18-3.5,24.6c-7.2,3.4-12.1,8.3-14.8,14.5
c-2.7,6.3-1.3,15.2,4,26.7c1.6,3.8,2.9,7.5,4,11.3c1.1,3.8,1.3,7.7,0.7,11.7c-1.3-3.4-2.8-6.2-4.7-8.4c-1.9-2.2-4.4-3.8-7.5-4.7
l-1.4,20.2c-1.3-1.6-2.5-2.9-3.8-4c-1.3-1.1-2.7-1.9-4.2-2.6l-2.8,5.6l-4.2-4.7l-1.9,0.9l7,8l-4.7,0.5l3.3,6.6l-4.7-3.8l-2.8,1.4
v4.7l-4.2-4.2l-5.2-0.5c1.9,3.1,3.4,6.3,4.7,9.6c1.2,3.3,1.9,6.5,1.9,9.6c-1.9-5-4-9.3-6.3-12.9c-2.3-3.6-4.9-6.6-7.7-9.1
c0.9,5.6,2,11.1,3.3,16.4c1.2,5.3,2.5,10.8,3.8,16.4c-3.4-9.7-7.7-18-12.7-25.1c-5-7-10.9-12.4-17.8-16.2l8.9,10.3l-6.6-4.2
l0.5,2.8c2.5,2.8,5.1,5.7,7.7,8.7c2.7,3,5.4,6.2,8.2,9.6c-3.1-2.8-6.2-5.5-9.1-8.2c-3-2.7-6-5.4-9.1-8.2l0.9,4.2
c-2.2-1.9-4.5-3.7-6.8-5.4c-2.3-1.7-4.6-3.2-6.8-4.5c6.6,8.8,11.6,16.7,15.2,23.9c3.6,7.2,5.9,13.9,6.8,20.2
c-4.1-8.7-8.3-16.6-12.7-23.4c-4.4-6.9-8.9-13-13.6-18.3l-5.2,2.8l12.2,23.4l-5.6-4.2l-0.9,3.3l-1.4-8l-3.3-2.3l-1.9,3.3
l-1.9-2.8l-8.9-9.4l6.1,12.7l-10.8-9.4l8.9,18.3l-15-21.1l-1.4,4.7l7,8.9v3.3l-2.8,6.1l3.8,2.3v6.6c-1.9,5.6-4.2,10.8-7,15.5
s-5.6,9.2-8.4,13.6l-2.3,2.3l-1.9,4.7c-12.5,7.5-25,14.8-37.5,22c-12.5,7.2-23.4,14.1-32.8,20.6c-16.9-9.4-35.3-18.7-55.3-27.9
c-20-9.2-34.5-24.3-43.6-45.2L150.5,404z M216.2,346.1c2.2-0.5,4.8-0.5,8-0.2c-13.4-12.5-25.2-21-35.4-25.5
c-10.2-4.5-17.6-2.4-22.3,6.3c7.2,11.3,14.5,19.1,21.8,23.4c7.3,4.4,14.6,3.9,21.8-1.4C211.9,347.4,214,346.5,216.2,346.1z
M317.4,338.3c1.9-1.9,3.4-3.7,4.5-5.4c1.1-1.7,1.3-3.4,0.7-4.9c-4.4-5.6-15.3-5.9-32.8-0.7c-17.5,5.2-26.3,12.1-26.3,20.9
l23,14.1c5.3-1.6,10.7-4.1,16.2-7.5c5.5-3.4,11-7.3,16.6-11.7L317.4,338.3z"/>
</g>
</g>
<g id="Ninjutsu" class="st0">
<g class="st1">
<path d="M218,332.7v-0.9l-0.5-0.5c-13.4,8.4-27.3,15.5-41.7,21.1c-14.7,5.3-29.8,9.4-45.5,12.2c-15.6,2.8-31.7,4.5-48.3,5.2
c-16.6,0.6-33.6,0.3-51.1-0.9c7.8-12.2,16.2-24.1,25.3-35.6c9.1-11.6,19.3-22.6,30.7-33c11.4-10.5,24-20.2,37.7-29.3
c13.7-9.1,29.2-17.3,46.4-24.8l10.8-25.3h0.9l0.5-0.5c-8.4-13.4-15.5-27.3-21.1-41.7c-5.3-14.7-9.4-29.8-12.2-45.5
c-2.8-15.6-4.5-31.7-5.2-48.3c-0.6-16.6-0.3-33.6,0.9-51.1c12.2,7.8,24.1,16.3,35.6,25.3c11.6,9.1,22.6,19.3,33,30.7
c10.5,11.4,20.2,24,29.3,37.7c9.1,13.8,17.3,29.2,24.8,46.4l25.3,10.8v0.9l0.5,0.5c13.4-8.4,27.3-15.5,41.7-21.1
c14.7-5.3,29.8-9.4,45.5-12.2c15.6-2.8,31.7-4.5,48.3-5.2c16.6-0.6,33.6-0.3,51.1,0.9c-7.8,12.2-16.3,24.1-25.3,35.6
c-9.1,11.6-19.3,22.6-30.7,33c-11.4,10.5-24,20.2-37.7,29.3c-13.8,9.1-29.2,17.3-46.4,24.8l-10.8,25.3h-0.9l-0.5,0.5
c8.4,13.4,15.5,27.3,21.1,41.7c5.3,14.7,9.4,29.8,12.2,45.5c2.8,15.6,4.5,31.7,5.2,48.3c0.6,16.6,0.3,33.6-0.9,51.1
c-12.2-7.8-24.1-16.2-35.6-25.3c-11.6-9.1-22.6-19.3-33-30.7c-10.5-11.4-20.2-24-29.3-37.7c-9.1-13.7-17.3-29.2-24.8-46.4
L218,332.7z M296.3,258.6c0-11.3-3.9-20.8-11.7-28.6c-7.8-7.8-17.3-11.7-28.6-11.7s-20.8,3.9-28.6,11.7
c-7.8,7.8-11.7,17.3-11.7,28.6s3.9,20.8,11.7,28.6c7.8,7.8,17.3,11.7,28.6,11.7s20.8-3.9,28.6-11.7
C292.4,279.4,296.3,269.9,296.3,258.6z"/>
</g>
</g>
<g id="unknow" class="st0">
<g class="st1">
<path d="M176.3,350.1c-15.6-11.3-31.3-21.8-46.9-31.6c-15.6-9.8-31.3-19-46.9-27.4c-15.9-8.4-31.7-16.4-47.3-23.9
c-2.5-1.9-3.8-3.8-4-5.9c-0.2-2,1-4.3,3.5-6.8c16.6-7.5,33.4-16.9,50.6-28.1c17.2-10.9,34.8-22.7,53-35.2
c18.1-12.5,36.6-25.2,55.3-38c19.1-12.5,38.4-24.2,58.1-35.2c15,14.1,31.9,26.7,50.6,38s38.3,22.3,58.6,33
c20.3,10.8,40.8,22.1,61.4,34c20.3,11.6,39.8,24.8,58.6,39.8c-15.9,10-32,19.8-48.3,29.5c-15.9,9.4-31.8,18.8-47.6,28.4
c-15.8,9.5-31.3,19.3-46.6,29.3c-15.3,10-30.3,20.8-45,32.3c-10.9,9.4-22.2,14.8-33.8,16.4c-11.6,1.6-23.6-2.5-36.1-12.2
C207.7,373.8,191.9,361.6,176.3,350.1z M368.5,214.1c-13.8-7.8-27.3-15.9-40.5-24.1c-13.3-8.3-26.3-16.8-39.1-25.5
c-13.1-8.4-26.1-17.3-38.9-26.7c-14.7,9.1-28.8,18.3-42.2,27.7c-13.8,9.1-27,18.2-39.8,27.4c-12.8,9.2-25.2,18.5-37,27.9
c-11.6,9.1-22.8,18.3-33.8,27.7c13.4,6.9,26.9,14.1,40.3,21.6c13.1,7.8,26.3,15.7,39.4,23.7s26.1,16.2,38.9,24.6
c13.1,8.8,25.9,17.5,38.4,26.3c11.6-9.4,23.6-18.6,36.1-27.7c12.2-9.4,24.8-18.5,37.7-27.4c13-8.9,26.2-17.7,39.6-26.5
c13.4-8.7,27.3-17.5,41.7-26.3C395.5,229.4,381.9,221.9,368.5,214.1z M160.4,244.1c14.7-12.2,29.9-22.2,45.7-30
c15.8-7.8,30.9-18.9,45.2-33.3c12.5,9.1,25.5,17.7,38.9,26c13.4,8.3,27.5,16.3,42.2,24.1c1.9,1.3,3.4,2.8,4.7,4.7
c1.2,1.9,1.2,4.8,0,8.9c-19.1,4.1-35,12.6-47.8,25.5c-12.8,13-25.9,23.7-39.4,32.1c-8.8-12.2-21.1-22.9-37-32.1
C196.9,260.9,179.4,252.2,160.4,244.1z"/>
</g>
</g>
<g id="Rituals" class="st0">
<g class="st1">
<path class="st15" d="M115.1,440.3c9.5-9.5,13.7-20.7,12.4-33.5c-6.3-5.3-11.4-11.2-15.5-17.6c-4.1-6.4-6.6-13.5-7.5-21.3
c-8.4-2.8-16-6.6-22.7-11.3c-6.7-4.7-12.9-10.3-18.5-16.9V313c6.9-8.1,15.4-14.3,25.5-18.5c10.2-4.2,21-7.4,32.6-9.6
c9.7-16.6,22.1-28.4,37.3-35.4c15.2-7,30.9-11.5,47.1-13.4L146.3,98.3c10,0.3,18,2,24.1,5.2c6.1,3.1,9.1,8.4,9.1,15.9l36.6,115.8
c6.9-0.6,13.5-1,19.9-1.2c6.4-0.2,12.6-0.2,18.5-0.2l-6.1-200.2c10.9,2.2,19,5.8,24.1,10.8c5.2,5,6.6,11.7,4.5,20.2l-11.7,169.2
c4.7,0,9.4,0.1,14.1,0.2c4.7,0.2,9.4,0.4,14.1,0.7l35.2-112.5c-0.6-8.1,2.1-13.9,8.2-17.3c6.1-3.4,14.3-5.5,24.6-6.1l-58.6,136.9
c16.6,1.9,32.8,6.3,48.8,13.1c15.9,6.9,28.9,18.9,38.9,36.1c11.9,2.2,22.9,5.4,33,9.6c10.2,4.2,18.7,10.4,25.5,18.5v26.7
c-5.6,6.6-11.9,12.2-18.8,16.9c-6.9,4.7-14.5,8.4-23,11.3c-0.9,7.8-3.4,14.9-7.3,21.3c-3.9,6.4-9.1,12.3-15.7,17.6
c-0.9,12.8,3.3,24,12.7,33.5c9.4,9.5,23.1,17.6,41.3,24.1c-9.4,16.6-24.8,22.3-46.2,17.1c-21.4-5.2-34.5-24.3-39.1-57.4
c-14.1,5.6-29.5,9.8-46.4,12.4c-16.9,2.7-33.8,4-50.6,4c-16.6,0-33.4-1.3-50.4-4c-17-2.7-32.6-6.8-46.6-12.4
c-4.7,33.1-17.7,52.3-38.9,57.4c-21.3,5.2-36.7-0.5-46.4-17.1C91.8,457.9,105.6,449.8,115.1,440.3z M361.5,272.9
c-15.9-10.2-38-16.8-66.1-19.9l-11.7,27.2l-3.3-2.8l8-24.8c-4.1-0.3-8-0.6-12-0.9c-3.9-0.3-7.9-0.5-12-0.5l-1.9,24.8l-6.6,7.5
l-0.9-32.3c-5.9,0-11.6,0.2-17.1,0.5c-5.5,0.3-10.9,0.6-16.2,0.9l8,24.8l-4.2,5.2l-12.2-29.1c-27.2,3.4-48.4,10.2-63.5,20.4
c-15.2,10.2-22.7,23.5-22.7,40.1c0,7.5,4.2,13.3,12.7,17.3c8.4,4.1,19,7.1,31.6,9.1c12.7,2,26.6,3.4,42,4
c15,0.3,29.2,0.6,42.7,0.9c13.4-0.3,27.8-0.6,43.1-0.9c15-0.6,28.9-1.9,41.7-4c12.8-2,23.4-5.1,31.9-9.1
c8.4-4.1,12.7-9.8,12.7-17.3C385.4,296.8,377.4,283.1,361.5,272.9z"/>
</g>
</g>
<g id="Shujis" class="st0">
<g class="st1">
<path class="st13" d="M99.2,415.7c-2.3-2.2-4.8-3.9-7.3-5.2c-34.1-19.1-53.8-55.2-59.1-108.3c-5.6-52.8,2.7-102.1,24.8-147.9
c22.2-45.8,58-77.9,107.3-96.3c49.4-18.1,111.9-2.2,187.5,47.8c-46.3-20.3-89.1-26.4-128.4-18.3c-39.4,8.1-69.6,24.2-90.7,48.3
c-21.1,24.1-30.1,53-27,86.7c3.4,33.8,24.5,65.9,63.3,96.6c7.2,5.3,12.1,12.9,14.8,22.7c2.7,9.8,3.8,19.1,3.5,27.9
c0,6.3-1.3,12.4-4,18.5c-2.7,6.1-6,11.5-10.1,16.2c-4.1,4.7-8.9,8.6-14.5,11.7c-5.6,3.1-11.4,5.5-17.3,7
c-5.6,1.3-11.5,1.6-17.6,0.9c-6.1-0.6-12-1.9-17.6-3.8C104.1,419.4,101.5,417.9,99.2,415.7z M191.1,442.6
c17.3-9.2,28.5-28.4,33.5-57.4c-5,8.4-9.7,14.8-14.1,19c-4.4,4.2-8.6,7.9-12.7,11c9.1-11.6,16.9-23.7,23.4-36.6
c6.6-12.8,12.8-24.6,18.8-35.4c5.9-10.8,12-19.8,18.3-27c6.6-7.5,14.4-11.4,23.4-11.7l40.8,38v35.6c-4.1,8.8-8.9,16.4-14.5,23
s-12,11.9-19.2,15.9c-8.8,13.8-18.9,24.4-30.5,31.9c-11.3,7.2-23.8,11.8-37.7,13.8c-13.9,2-28.7,1.8-44.3-0.7
c-15.9-2.5-32.5-6.6-49.7-12.2C152.2,454.3,173.7,451.9,191.1,442.6z M297.3,269.9c12.8-19.1,25.3-34.8,37.5-47.3
c11.9-12.8,24.1-25.9,36.6-39.4c12.5-13.4,25.6-29.2,39.4-47.3c13.7-17.8,28.6-41.7,44.5-71.7l11.7,1.9l0.5,14.1l5.2,0.9
l-0.5,11.3L481,103l-6.1,7.5l-0.5,14.1c-11.3,11.3-21.7,25-31.4,41.3c-9.7,16.3-19.1,33.2-28.4,50.9
c-9.2,17.7-18.4,35.1-27.4,52.3c-9.1,17.5-18.6,33.1-28.6,46.9L297.3,269.9z"/>
</g>
</g>
<g id="Invocations">
<g>
<path class="st16" d="M122.9,85.7c-0.3-1.9,0.5-3.8,2.6-5.6c2-1.9,4.9-3.8,8.7-5.6c1.2,4.7,6.6,8,15.9,9.8s20.3,1.9,32.8,0
c12.8-1.9,23.4-5.2,31.9-10.1c8.4-4.8,12.3-9.6,11.7-14.3v-0.5c3.4,0.6,6.3,1.6,8.7,3s3.7,3,4,4.9l28.6,140.2h21.6l-30-144.8
c0.6-0.3,1.2-0.6,1.9-0.9c0.6-0.3,1.1-0.6,1.4-0.9l0.9-4.2c-0.3-2.2,1.5-4.4,5.4-6.6c3.9-2.2,8.8-3.8,14.8-4.7
c5.9-0.6,11.1-0.5,15.5,0.5c4.4,0.9,6.7,2.5,7,4.7l2.3,3.3c0.6,0,1.4,0.2,2.3,0.5c0.9,0.3,1.7,0.6,2.3,0.9l37.5,180.5
c-6.3,9.4-18,17.3-35.2,23.9c-17.2,6.9-35.7,11.8-55.5,14.8c-19.8,3-39.1,3.8-57.9,2.6c-18.4-1.2-32.2-5.3-41.3-12.2L122.9,85.7z
M151.5,63.9c-8.1-1.7-12.5-4.6-13.1-8.7c-0.6-4.1,2.7-8,9.8-12c7.2-3.9,16.2-6.8,27.2-8.7c10.6-1.6,20-1.5,28.1,0.2
c8.1,1.7,12.5,4.6,13.1,8.7c0.6,4.1-2.7,8.1-9.8,12.2c-7.2,4.1-16.3,6.9-27.2,8.4C169,65.7,159.6,65.6,151.5,63.9z M197.9,145.7
c-9.1,1.3-17.7,1.7-25.8,1.4c-8.1-0.3-15.8-1.4-23-3.3l25.3,113c6.2,3.1,13.4,5.2,21.6,6.3c8.1,1.1,17,1.3,26.7,0.7L197.9,145.7z
M339.4,432.6c-0.6,0-1.3-0.2-1.9-0.5c-0.6-0.3-1.4-0.6-2.3-0.9L311.8,321c-3.1,1.6-6.4,2.8-9.8,3.8c-3.4,0.9-6.7,1.6-9.8,1.9
l22,106.9c1.2,6.6-3.8,12.3-15,17.3c-10.9,4.7-23.5,8-37.7,10.1c-14.2,2-27.6,2.6-40.1,1.6c-12.5-0.9-19.2-3.9-20.2-8.9
l-32.8-153.8c9.1,6.9,22.8,10.9,41.3,12.2c18.4,1.3,37.6,0.4,57.4-2.6c19.8-3,38.4-7.9,55.5-14.8c17.2-6.6,29.1-14.4,35.6-23.4
l0.9,5.6h1.9l28.6,134.5l-3.3,1.4l2.8,10.3c-0.9,0.6-1.8,1.3-2.6,1.9c-0.8,0.6-1.6,1.3-2.6,1.9l0.9,4.2c0.9,5-6,8.4-20.9,10.1
c-14.8,1.7-22.7,0.1-23.7-4.9L339.4,432.6z M258.8,434l-21.1-99.4c-9.4,0-18.4-0.7-27-2.1c-8.6-1.4-17-3.7-25.1-6.8l23.9,107.8
c8.4,1.9,16.7,2.8,24.8,2.8C242.6,436.3,250.7,435.5,258.8,434z M217.6,470.1c13.4,3.4,27.5,4.2,42.2,2.3
c14.7-1.9,30.2-6.9,46.4-15c0.6,2.2,0.8,4.1,0.5,5.6c-0.3,1.6-1.3,3-2.8,4.2c-18.8,13.7-37.3,19.1-55.8,16.2
c-18.4-3-28.6-5.6-30.5-7.7V470.1z"/>
</g>
</g>
<g id="Katas" class="st0">
<g class="st1">
<path class="st17" d="M376,478.5l-14.1-30.9l-6.1,2.3l-72.7-96.1L263,369.3c-7.2,5.3-16.2,7.3-27,6.1c-10.8-1.2-19.5-5-26-11.3
l-29.5-28.6l-50.6-1.9l26.3-30.5c4.1-4.7,10.1-7.4,18-8.2c8-0.8,14.1,0.9,18.5,4.9l42.2,37.5l23-18.8L92.9,89.4L82.6,33.6
L133.2,59l175.3,221.7l24.4-16.9L308,212.7c-2.5-5.3-2.3-11.6,0.7-19c3-7.3,7.3-12.4,12.9-15.2l36.6-16.9L346,210.8l19.2,36.6
c4.4,7.8,5.6,17.1,3.8,27.9s-6.3,18.8-13.1,24.1l-20.2,15l0.5,0.9l71.3,95.6l-3.8,5.2l25.8,22l-2.3,27.2l-24.4,18.3L376,478.5z"
/>
</g>
</g>
</g>
<g id="Clans" class="st0">
<g id="Imperial" class="st1">
<rect y="18.6" class="st18" width="512" height="493.4"/>
<text transform="matrix(1 0 0 1 16 468.6476)" class="st19 st4 st5"></text>
</g>
<g id="Unicorn">
<rect y="18.6" class="st3" width="512" height="493.4"/>
<text transform="matrix(1 0 0 1 16 468.6476)" class="st20 st4 st5"></text>
</g>
<g id="Torttle">
<rect y="18.6" class="st3" width="512" height="493.4"/>
<text transform="matrix(1 0 0 1 16 468.6476)" class="st1 st4 st5"></text>
</g>
<g id="Scorpion">
<rect y="18.6" class="st3" width="512" height="493.4"/>
<text transform="matrix(1 0 0 1 16 468.6476)" class="st21 st4 st5"></text>
</g>
<g id="Phoenix">
<rect y="18.6" class="st3" width="512" height="493.4"/>
<text transform="matrix(1 0 0 1 16 468.6476)" class="st22 st4 st5"></text>
</g>
<g id="Mantis">
<rect y="18.6" class="st3" width="512" height="493.4"/>
<text transform="matrix(1 0 0 1 16 468.6476)" class="st23 st4 st5"></text>
</g>
<g id="Lion">
<rect y="18.6" class="st3" width="512" height="493.4"/>
<text transform="matrix(1 0 0 1 16 468.6476)" class="st24 st4 st5"></text>
</g>
<g id="Dragon">
<rect y="18.6" class="st3" width="512" height="493.4"/>
<text transform="matrix(1 0 0 1 16 468.6476)" class="st25 st4 st5"></text>
</g>
<g id="Crab">
<rect y="18.6" class="st3" width="512" height="493.4"/>
<text transform="matrix(1 0 0 1 16 468.6476)" class="st26 st4 st5"></text>
</g>
<g id="Crane">
<rect y="18.6" class="st3" width="512" height="493.4"/>
<text transform="matrix(1 0 0 1 16 468.6476)" class="st27 st4 st5"></text>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 48 KiB

View File

@@ -100,6 +100,18 @@
"name": "Tosei-Gusoku",
"description": "",
"book_reference": "LOutremonde p.106"
},
{
"id": "Sailor's garb",
"name": "Vêtements de marin",
"description": "",
"book_reference": "Le Clan de la Mante p.9"
},
{
"id": "Shark leather armor",
"name": "Armure en peau de requin",
"description": "",
"book_reference": "Le Clan de la Mante p.9"
}
]
}

View File

@@ -0,0 +1,73 @@
{
"label": "Liens",
"mapping": {
"description": "data.description",
"book_reference": "data.book_reference",
"bond_type": "data.bond_type"
},
"entries": [
{
"id": "Family",
"name": "Familial",
"description": "",
"book_reference": "Les Cours de Pierre p.136",
"bond_type": "Familial"
},
{
"id": "Comrade",
"name": "Amitié",
"description": "",
"book_reference": "Les Cours de Pierre p.137",
"bond_type": "Amitié"
},
{
"id": "Lover",
"name": "Amoureux",
"description": "",
"book_reference": "Les Cours de Pierre p.137",
"bond_type": "Amoureux"
},
{
"id": "Rival",
"name": "Rivalité",
"description": "",
"book_reference": "Les Cours de Pierre p.138",
"bond_type": "Rivalité"
},
{
"id": "Nemesis",
"name": "Haine",
"description": "",
"book_reference": "Les Cours de Pierre p.138",
"bond_type": "Haine"
},
{
"id": "Old Flame",
"name": "Ancien amour",
"description": "",
"book_reference": "La Voie des Vagues",
"bond_type": "Ancien amour"
},
{
"id": "Partner",
"name": "Partenaire",
"description": "",
"book_reference": "La Voie des Vagues",
"bond_type": "Partenaire"
},
{
"id": "Protector and Ward",
"name": "Protecteur et Gardien",
"description": "",
"book_reference": "La Voie des Vagues",
"bond_type": "Protecteur et Gardien"
},
{
"id": "Wanderers Fellowship",
"name": "Fraternité des vagabonds",
"description": "",
"book_reference": "La Voie des Vagues",
"bond_type": "Fraternité des vagabonds"
}
]
}

View File

@@ -0,0 +1,39 @@
{
"label": "Procédés de fabrication",
"mapping": {
"description": "data.description",
"book_reference": "data.book_reference"
},
"entries": [
{
"id": "Kakita Pattern",
"name": "Procédé Kakita",
"description": "",
"book_reference": "LOutremonde p.109"
},
{
"id": "Kenzō Blade",
"name": "Lame Kenzō",
"description": "",
"book_reference": "LOutremonde p.109"
},
{
"id": "Shirogane Jade Inlay",
"name": "Incrustation de Jade de Shirogane",
"description": "",
"book_reference": "LOutremonde p.109"
},
{
"id": "Uchemas Technique",
"name": "Technique dUchema",
"description": "",
"book_reference": "LOutremonde p.109"
},
{
"id": "Yasunori Steel",
"name": "Acier de Yasunori",
"description": "",
"book_reference": "LOutremonde p.109"
}
]
}

View File

@@ -484,6 +484,24 @@
"name": "Flèches fumigènes",
"description": "",
"book_reference": "LOutremonde p.106"
},
{
"id": "Astrolabe",
"name": "Astrolabe",
"description": "",
"book_reference": "Le Clan de la Mante p.9"
},
{
"id": "Fishing Rod and Line",
"name": "Canne à pêche et ligne",
"description": "",
"book_reference": "Le Clan de la Mante p.9"
},
{
"id": "TaraiBune",
"name": "TaraiBune",
"description": "",
"book_reference": "Le Clan de la Mante p.9"
}
]
}

View File

@@ -565,6 +565,13 @@
"types": "Malédiction, Physique",
"description": "",
"book_reference": "LOutremonde p.99"
},
{
"id": "Sailors Tongue",
"name": "Parler du marin",
"types": "Mental, Relations",
"description": "",
"book_reference": "Le Clan de la Mante p.7"
}
]
}

View File

@@ -446,6 +446,20 @@
"types": "Relations",
"description": "",
"book_reference": "LOutremonde p.96"
},
{
"id": "Blood of Osano-Wo",
"name": "Sang dOsano-wo",
"types": "Mental, Spirituel",
"description": "",
"book_reference": "Le Clan de la Mante p.7"
},
{
"id": "Sea Legs",
"name": "Pied marin",
"types": "Physique",
"description": "",
"book_reference": "Le Clan de la Mante p.7"
}
]
}

View File

@@ -278,6 +278,13 @@
"types": "Mental",
"description": "",
"book_reference": "LOutremonde p.97"
},
{
"id": "KnotWork",
"name": "Noeuds",
"types": "Mental",
"description": "",
"book_reference": "Le Clan de la Mante p.7"
}
]
}

View File

@@ -100,6 +100,36 @@
"name": "Subtil",
"description": "",
"book_reference": "Livre de Règles p.241"
},
{
"id": "Kakita Pattern",
"name": "Procédé Kakita",
"description": "",
"book_reference": "LOutremonde p.109"
},
{
"id": "Kenzō Blade",
"name": "Lame Kenzō",
"description": "",
"book_reference": "LOutremonde p.109"
},
{
"id": "Shirogane Jade Inlay",
"name": "Incrustation de Jade de Shirogane",
"description": "",
"book_reference": "LOutremonde p.109"
},
{
"id": "Uchemas Technique",
"name": "Technique dUchema",
"description": "",
"book_reference": "LOutremonde p.109"
},
{
"id": "Yasunori Steel",
"name": "Acier de Yasunori",
"description": "",
"book_reference": "LOutremonde p.109"
}
]
}

View File

@@ -0,0 +1,27 @@
{
"label": "Rouleaux de marque",
"mapping": {
"description": "data.description",
"book_reference": "data.book_reference"
},
"entries": [
{
"id": "Ichis Second Sight",
"name": "La seconde vision dIchi",
"description": "",
"book_reference": "LOutremonde p.108"
},
{
"id": "Hasegawas Denial",
"name": "Le refus dHasegawa",
"description": "",
"book_reference": "LOutremonde p.108"
},
{
"id": "Maikaras Rebuke",
"name": "La mercuriale de Maikara",
"description": "",
"book_reference": "LOutremonde p.108"
}
]
}

View File

@@ -198,8 +198,8 @@
"book_reference": "Les Royaumes Célestes"
},
{
"id": "Favored ounselor",
"name": "Favored ounselor (WIP)",
"id": "Favored Counselor",
"name": "Favored Counselor (WIP)",
"description": "",
"book_reference": "Les Royaumes Célestes"
},
@@ -478,6 +478,12 @@
"name": "Royaume dencre et de papier",
"description": "",
"book_reference": "LOutremonde p.95"
},
{
"id": "Storm Lords Gambit",
"name": "La manoeuvre de Sire Tempête",
"description": "",
"book_reference": "Le Clan de la Mante p.5"
}
]
}

View File

@@ -478,6 +478,12 @@
"name": "Shikigami bardé de glyphes",
"description": "",
"book_reference": "LOutremonde p.95"
},
{
"id": "Sailors Fortune",
"name": "La fortune du marin",
"description": "",
"book_reference": "Le Clan de la Mante p.5"
}
]
}

View File

@@ -424,6 +424,12 @@
"name": "Roar of Encouragement (WIP)",
"description": "",
"book_reference": "La Voie des Vagues"
},
{
"id": "Osano-wos Boast (Mantis)",
"name": "Vantardise d'Osano-wo (Mante)",
"description": "",
"book_reference": "Le Clan de la Mante p.7"
}
]
}

View File

@@ -0,0 +1,69 @@
{
"label": "Titres",
"mapping": {
"description": "data.description",
"book_reference": "data.book_reference"
},
"entries": [
{
"id": "Emerald Magistrate",
"name": "Magistrat dÉmeraude",
"description": "",
"book_reference": "Livre de Règles p.305"
},
{
"id": "Castellan",
"name": "Châtelain",
"description": "",
"book_reference": "Les Cours de Pierre p.128"
},
{
"id": "Covert Agent",
"name": "Agent infiltré",
"description": "",
"book_reference": "Les Cours de Pierre p.128"
},
{
"id": "Dreaded Enforcer",
"name": "Homme de main redouté",
"description": "",
"book_reference": "Les Cours de Pierre p.129"
},
{
"id": "Esteemed Negotiator",
"name": "Négociateur estimé",
"description": "",
"book_reference": "Les Cours de Pierre p.129"
},
{
"id": "Kenshinzen",
"name": "Kenshinzen",
"description": "",
"book_reference": "Les Cours de Pierre p.130"
},
{
"id": "Kyuden Asako Shieldbearer",
"name": "Porteur de bouclier de Kyūden Asako",
"description": "",
"book_reference": "Les Cours de Pierre p.130"
},
{
"id": "Master Artisan",
"name": "Maître artisan",
"description": "",
"book_reference": "Les Cours de Pierre p.130"
},
{
"id": "Winter Court Champion",
"name": "Champion de la Cour d'Hiver",
"description": "",
"book_reference": "Les Cours de Pierre p.131"
},
{
"id": "Seven fold Palace Acolyte",
"name": "Etudiant au palais des Sept Plis",
"description": "",
"book_reference": "Les Cours de Pierre p.131"
}
]
}

View File

@@ -342,7 +342,7 @@
"book_reference": "Livre de Règles p.237"
},
{
"id": "BIte",
"id": "Bite",
"name": "Morsure",
"category": "Attaques à mains nues",
"grip_1": "",
@@ -736,6 +736,60 @@
"grip_2": "",
"description": "",
"book_reference": "LOutremonde p.103"
},
{
"id": "Butterfly sword",
"name": "Epée papillon",
"category": "Sabres",
"grip_1": "",
"grip_2": "",
"description": "",
"book_reference": "Le Clan de la Mante p.8"
},
{
"id": "Eku",
"name": "Eku",
"category": "Armes d'Hast",
"grip_1": "",
"grip_2": "",
"description": "",
"book_reference": "Le Clan de la Mante p.8"
},
{
"id": "Tinbe-Rochin",
"name": "Rochin",
"category": "Armes d'Hast",
"grip_1": "",
"grip_2": "",
"description": "",
"book_reference": "Le Clan de la Mante p.8"
},
{
"id": "Sai",
"name": "Sai",
"category": "Armes de Poing",
"grip_1": "",
"grip_2": "",
"description": "",
"book_reference": "Le Clan de la Mante p.8"
},
{
"id": "Tonfa",
"name": "Tonfa",
"category": "Armes de Poing",
"grip_1": "",
"grip_2": "",
"description": "",
"book_reference": "Le Clan de la Mante p.9"
},
{
"id": "Tinbe",
"name": "Timbe",
"category": "Boucliers",
"grip_1": "",
"grip_2": "",
"description": "",
"book_reference": "Le Clan de la Mante p.8"
}
]
}

BIN
system/fonts/Caballar.ttf Normal file

Binary file not shown.

View File

@@ -13,6 +13,10 @@
"Initiative": {
"SetTn1OnTypeChange": "Set TN to 1 on encounter change",
"SetTn1OnTypeChangeHint": "Set the TN to 1 when the encounter type is selected (Intrigue, Duel, Skirmish or Mass battle)"
},
"CustomTechniques": {
"Title": "Use custom techniques",
"Hint": "Add 'Specificity' technique type to serve as a catch-all."
}
},
"ACTOR": {
@@ -26,7 +30,11 @@
"TypeTechnique": "Technique",
"TypeProperty": "Property",
"TypePeculiarity": "Peculiarity",
"TypeAdvancement": "Advancement"
"TypeAdvancement": "Advancement",
"TypeTitle": "Title",
"TypeBond": "Bond",
"TypeSignature_scroll": "Signature Scroll",
"TypeItem_pattern": "Item Pattern"
},
"l5r5e": {
"global": {
@@ -130,9 +138,9 @@
"quantity": "Quantity",
"weight": "Weight",
"properties": "Properties",
"linked_property": "linked Property",
"weapons": {
"title": "Weapons",
"title_new": "New Weapon",
"damage": "Damage",
"range": "Range",
"stats": "Stats",
@@ -144,20 +152,17 @@
},
"armors": {
"title": "Armors",
"title_new": "New Armor",
"type": "Resistances",
"physical": "physical",
"supernatural": "supernatural",
"equipped": "Equipped"
},
"items": {
"title": "Items",
"title_new": "New Item"
"title": "Items"
},
"feats": "Feats",
"techniques": {
"title": "Techniques",
"title_new": "New Technique",
"not_allowed": "Your character does not use this type of technique.",
"only_one": "Your character can possess only one of theses technique.",
"type": "Allowed Techniques",
@@ -170,10 +175,11 @@
"maho": "Mahõ",
"ninjutsu": "Ninjutsu",
"school_ability": "School Ability",
"mastery_ability": "Mastery Ability"
"mastery_ability": "Mastery Ability",
"title_ability": "Title Ability",
"specificity": "Specificity"
},
"peculiarities": {
"title_new": "New peculiarity",
"types": {
"distinction": "Distinction",
"passion": "Passion",
@@ -206,6 +212,7 @@
"attitude": "Demeanor:",
"advantages": "Distinctions and Passions",
"disadvantages": "Adversities and Anxieties",
"bonds": "Bonds",
"npc": {
"advantages": "Advantages",
"disadvantages": "Disadvantages"
@@ -316,16 +323,19 @@
},
"advancements": {
"title": "Advancements",
"title_new": "New advancement",
"school_rank": "School rank",
"school_rank_0": "Bg",
"total": "Total",
"cost": "Cost",
"spent": "Used",
"saved": "Saved",
"total_xp_rank": "Xp spent",
"total_xp_spent": "Xp spent",
"total_xp_curriculum": "Xp spent on curriculum",
"curriculum": "In curriculum",
"curriculum_validate": "Complete this rank"
"curriculum_validate": "Complete this rank",
"rarity_modifier": "Rarity modifier",
"item_pattern": "Item Patterns",
"signature_scroll": "Signature Scrolls"
},
"character_types": {
"character": "Player Character",

View File

@@ -7,12 +7,16 @@
"None": "Sin opción",
"ReverseFatigueBar": "Invertir la barra de fatiga de los token",
"RollNKeep": {
"DeleteOldMessage": "RnK Delete previous chat message",
"DeleteOldMessageHint": "Choose to keep or delete the previous message for a RnK series"
"DeleteOldMessage": "TyG Eliminar el mensaje anterior del chat",
"DeleteOldMessageHint": "Elige si mantener o borrar el mensaje anterior de la serie TyG"
},
"Initiative": {
"SetTn1OnTypeChange": "Set TN to 1 on encounter change",
"SetTn1OnTypeChangeHint": "Set the TN to 1 when the encounter type is selected (Intrigue, Duel, Skirmish or Mass battle)"
"SetTn1OnTypeChange": "Poner el NO a 1 al seleccionar el tipo de encuentro",
"SetTn1OnTypeChangeHint": "Poner el NO a 1 cuando se elige el tipo de encuentro (Intriga, Duelo, Escaramuza o Batalla a gran escala)"
},
"CustomTechniques": {
"Title": "Use custom techniques",
"Hint": "Add 'Specificity' technique type to serve as a catch-all."
}
},
"ACTOR": {
@@ -26,13 +30,17 @@
"TypeTechnique": "Técnica",
"TypeProperty": "Propiedad",
"TypePeculiarity": "Peculiaridad",
"TypeAdvancement": "Mejora"
"TypeAdvancement": "Mejora",
"TypeTitle": "Title",
"TypeBond": "Bond",
"TypeSignatureScroll": "Signature Scroll",
"TypeItemPattern": "Item Pattern"
},
"l5r5e": {
"global": {
"add": "Añadir",
"edit": "Editar",
"delete_confirm": "Are you sure you want to delete '{name}' ?",
"delete_confirm": "¿Estás seguro de que quieres borrar '{name}' ?",
"drop_here": "Dejar caer aquí",
"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."
},
@@ -91,48 +99,48 @@
"difficulty_hidden": "NO ???",
"dicepicker": "Dice Picker",
"void_point_used": "Punto de vacío utilizado",
"assistance_used": "Skill assistance used",
"assistance_used": "Asistencia de habilidad utilizada",
"roll_n_keep": "Tirar y guardar",
"initiative_roll": "Tirada de Iniciativa",
"success_text": "Éxitos!",
"bonus_text": "bonus successes",
"fail_text": "Fail!"
"success_text": "¡Éxito!",
"bonus_text": "Éxitos adicionales",
"fail_text": "¡Fallo!"
},
"dicepicker": {
"difficulty_title": "Dificultad",
"difficulty_hidden_label": "Ocultar NO",
"use_void_point_label": "Gasta un",
"void_point_tooltip": "Punto de vacío",
"skill_assistance_label": "Assistance",
"skill_assistance_label": "Asistencia",
"roll_label": "Tirar",
"bt_add_macro": "Añadir una macro"
},
"roll_n_keep": {
"title": "L5R Roll & Keep",
"title": "L5A Tirar y guardar",
"discard_drop_here": "Descartar",
"reroll_drop_here": "Relanzar",
"swap_drop_here": "Swap",
"swap_drop_here": "Cambiar cara",
"keep_drop_here": "Guardar",
"bt_validate": "Finalizar",
"undo": "[GM] Undo the last step choices"
"bt_validate": "Terminar este paso",
"undo": "[GM] Deshacer los últimos cambios"
},
"gm_toolbox": {
"title": "GM ToolBox",
"difficulty_hidden": "Change difficulty visibility",
"difficulty": "Change difficulty (right: add, left: subtract, middle: TN 2)",
"sleep": "Comfortable rest for all characters (Remove Water x2 fatigue)",
"sleep_info": "The characters had a good night's sleep.",
"scene_end": "End of scene (Conflict and Fatigue half reset for all characters)",
"scene_end_info": "The tension of the scene finally drops."
"difficulty_hidden": "Cambiar la dificultad visible",
"difficulty": "Cambiar dificultad (derecha: añadir, izquierda: sustraer, central: NO 2)",
"sleep": "Descanso confortable para todos los personajes (Eliminar fatiga = Agua x2)",
"sleep_info": "Los personajes han dormido bien.",
"scene_end": "Final de la escena (El Conflicto y la Fatiga de los personajes se reduce hasta la mitad del máximo del valor)",
"scene_end_info": "La tensión de la escena por fin disminuye."
},
"max": "Máx",
"current": "Actuales",
"quantity": "Cantidad",
"weight": "Peso",
"properties": "Propiedades",
"linked_property": "linked Property",
"weapons": {
"title": "Armas",
"title_new": "Nueva arma",
"damage": "Daño",
"range": "Alcance",
"stats": "Estadísticas",
@@ -144,15 +152,13 @@
},
"armors": {
"title": "Armaduras",
"title_new": "Nueva Armadura",
"type": "Defensa",
"physical": "física",
"supernatural": "sobrenatural",
"equipped": "Equipado"
},
"items": {
"title": "Objetos",
"title_new": "Nuevo objeto"
"title": "Objetos"
},
"feats": "Logros",
"techniques": {
@@ -160,7 +166,6 @@
"type": "Técnicas permitidas",
"not_allowed": "Tu personaje no puede utilizar este tipo de técnica.",
"only_one": "Tu personaje sólo puede poseer una de estas técnicas.",
"title_new": "Nueva Técnica",
"kata": "Kata",
"kiho": "Kihõ",
"inversion": "Inversion",
@@ -169,11 +174,12 @@
"shuji": "Shuji",
"maho": "Mahõ",
"ninjutsu": "Ninjutsu",
"school_ability": "Habilidad de la escuela",
"mastery_ability": "Habilidad de maestría"
"school_ability": "Capacidad de escuela",
"mastery_ability": "Habilidad de maestría",
"title_ability": "Title Ability",
"specificity": "Specificity"
},
"peculiarities": {
"title_new": "Nueva peculiaridad",
"types": {
"distinction": "Distinción",
"passion": "Pasión",
@@ -206,6 +212,7 @@
"attitude": "Actitud:",
"advantages": "Distinciones y pasiones",
"disadvantages": "Adversidades y ansiedades",
"bonds": "Bonds",
"npc": {
"advantages": "Ventajas",
"disadvantages": "Desventajas"
@@ -308,24 +315,27 @@
"duel": "Duelo",
"skirmish": "Escaramuza",
"mass_battle": "Batalla a gran escala",
"prepared_true": "Prepared",
"prepared_false": "Surprised",
"prepared_null": "Defined in the character sheet (default)",
"already_set": "Your initiative has already been drawn"
"prepared_true": "Preparado",
"prepared_false": "Sorprendido",
"prepared_null": "Definido en la hoja de personaje (por defecto)",
"already_set": "Tu iniciativa ya ha sido establecida."
}
},
"advancements": {
"title": "Avances",
"title_new": "Nuevo avance",
"school_rank": "Rango de la escuela",
"school_rank_0": "Bg",
"total": "Total",
"cost": "Coste",
"spent": "Gastado",
"saved": "Guardado",
"total_xp_rank": "PE gastados",
"total_xp_spent": "PE gastados",
"total_xp_curriculum": "Xp spent on curriculum",
"curriculum": "En programa de estudio",
"curriculum_validate": "Completar este rango"
"curriculum_validate": "Completar este rango",
"rarity_modifier": "Rarity modifier",
"item_pattern": "Item patterns",
"signature_scroll": "Signature scrolls"
},
"character_types": {
"character": "Personaje jugador",

View File

@@ -13,6 +13,10 @@
"Initiative": {
"SetTn1OnTypeChange": "ND 1 à la sélection du type de rencontre",
"SetTn1OnTypeChangeHint": "Met le ND à 1 lorsqu'on modifie le type de rencontre (Intrigue, Duel, Escarmouche ou Bataille rangée)"
},
"CustomTechniques": {
"Title": "Utiliser les techniques personnalisées",
"Hint": "Ajoute un type de technique 'Particularités' pour servir de fourre-tout."
}
},
"ACTOR": {
@@ -26,7 +30,11 @@
"TypeTechnique": "Technique",
"TypeProperty": "Propriété",
"TypePeculiarity": "Particularité",
"TypeAdvancement": "Progression"
"TypeAdvancement": "Progression",
"TypeTitle": "Titre",
"TypeBond": "Lien",
"TypeSignature_scroll": "Rouleau de marque",
"TypeItem_pattern": "Procédé de fabrication"
},
"l5r5e": {
"global": {
@@ -130,9 +138,9 @@
"quantity": "Quantité",
"weight": "Poids",
"properties": "Propriétés",
"linked_property": "Propriété liée",
"weapons": {
"title": "Armement",
"title_new": "Nouvelle Arme",
"damage": "Dégâts de base (DDB)",
"range": "Portée (PRT)",
"stats": "Attributs",
@@ -144,20 +152,17 @@
},
"armors": {
"title": "Armures",
"title_new": "Nouvelle Armure",
"type": "Défense",
"physical": "Physique",
"supernatural": "Spirituelle",
"equipped": "Équipé"
},
"items": {
"title": "Objets",
"title_new": "Nouvel Objet"
"title": "Objets"
},
"feats": "Prouesses",
"techniques": {
"title": "Techniques",
"title_new": "Nouvelle Technique",
"not_allowed": "Votre personnage n'utilise pas ce type de technique.",
"only_one": "Votre personnage ne peut avoir qu'une seule de ces technique.",
"type": "Type accessible",
@@ -170,10 +175,11 @@
"maho": "Mahõ",
"ninjutsu": "Ninjutsu",
"school_ability": "Capacité d'école",
"mastery_ability": "Capacité de maîtrise"
"mastery_ability": "Capacité de maîtrise",
"title_ability": "Capacité de Titre",
"specificity": "Particularité"
},
"peculiarities": {
"title_new": "Nouvelle particularité",
"types": {
"distinction": "Aptitude",
"passion": "Passion",
@@ -206,6 +212,7 @@
"attitude": "attitude :",
"advantages": "Aptitudes et Passions",
"disadvantages": "Coups du sort et défaillances",
"bonds": "Liens",
"npc": {
"advantages": "Avantages",
"disadvantages": "Désavantages"
@@ -316,16 +323,19 @@
},
"advancements": {
"title": "Progressions",
"title_new": "Nouvelle progression",
"school_rank": "Rang d'école",
"school_rank_0": "Bg",
"total": "Totale",
"cost": "Coût",
"spent": "Dépensée",
"saved": "Restante",
"total_xp_rank": "Xp dépensée",
"total_xp_spent": "Xp dépensée",
"total_xp_curriculum": "Xp dépensée dans le cursus",
"curriculum": "Inclus dans le cursus",
"curriculum_validate": "Valider la progression"
"curriculum_validate": "Valider la progression",
"rarity_modifier": "Modificateur de rareté",
"item_pattern": "Procédés de fabrication",
"signature_scroll": "Rouleaux de marque"
},
"character_types": {
"character": "Personnage Joueur",

View File

@@ -14,3 +14,5 @@
{"_id":"L5RCoreArm000014","name":"O-yoroi","permission":{"default":0},"type":"armor","data":{"equipped":false,"quantity":1,"weight":"3","rarity":"8","zeni":"60 Koku","properties":[{"id":"L5RCorePro000006","name":"Cumbersome"},{"id":"L5RCorePro000010","name":"Resplendent"},{"id":"L5RCorePro000011","name":"Wargear"}],"armor":{"physical":"6","supernatural":""},"description":"","book_reference":"Shadowlands p.105"},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/armor.svg","effects":[]}
{"_id":"L5RCoreArm000015","name":"Tatami Gusoku","permission":{"default":0},"type":"armor","data":{"equipped":false,"quantity":1,"weight":"1","rarity":"4","zeni":"7 koku","properties":[{"id":"L5RCorePro000011","name":"Wargear"}],"armor":{"physical":"3","supernatural":""},"description":"","book_reference":"Shadowlands p.106"},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/armor.svg","effects":[]}
{"_id":"L5RCoreArm000016","name":"Tosei-Gusoku","permission":{"default":0},"type":"armor","data":{"equipped":false,"quantity":1,"weight":"2","rarity":"8","zeni":"50 koku","properties":[{"id":"L5RCorePro000006","name":"Cumbersome"},{"id":"L5RCorePro000015","name":"Durable"},{"id":"L5RCorePro000011","name":"Wargear"}],"armor":{"physical":"4","supernatural":""},"description":"","book_reference":"Shadowlands p.106"},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/armor.svg","effects":[]}
{"_id":"L5RCoreArm000017","name":"Sailor's garb","permission":{"default":0},"type":"armor","data":{"equipped":false,"quantity":1,"weight":"1","rarity":"2","zeni":"1 bu","properties":[{"id":"L5RCorePro000012","name":"Mundane"},{"id":"L5RCorePro000015","name":"Durable"}],"armor":{"physical":"1","supernatural":""},"description":"","book_reference":"Mantis Clan p.9"},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/keikogi.svg","effects":[]}
{"_id":"L5RCoreArm000018","name":"Shark leather armor","permission":{"default":0},"type":"armor","data":{"equipped":false,"quantity":1,"weight":"2","rarity":"7","zeni":"25 koku","properties":[{"id":"L5RCorePro000010","name":"Resplendent"}],"armor":{"physical":"2","supernatural":""},"description":"","book_reference":"Mantis Clan p.9"},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/armor.svg","effects":[]}

View File

@@ -0,0 +1,9 @@
{"_id":"L5RCoreBon000001","name":"Family","permission":{"default":0},"type":"bond","data":{"bond_type":"Family","in_curriculum":false,"xp_used":0,"rank":1,"bought_at_rank":0,"ring":"void","xp_cost":3,"description":"","book_reference":"Court of Stones p.136"},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/bond.svg","effects":[]}
{"_id":"L5RCoreBon000002","name":"Comrade","permission":{"default":0},"type":"bond","data":{"bond_type":"Comrade","in_curriculum":false,"xp_used":0,"rank":1,"bought_at_rank":0,"ring":"void","xp_cost":3,"description":"","book_reference":"Court of Stones p.137"},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/bond.svg","effects":[]}
{"_id":"L5RCoreBon000003","name":"Lover","permission":{"default":0},"type":"bond","data":{"bond_type":"Lover","in_curriculum":false,"xp_used":0,"rank":1,"bought_at_rank":0,"ring":"void","xp_cost":3,"description":"","book_reference":"Court of Stones p.137"},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/bond.svg","effects":[]}
{"_id":"L5RCoreBon000004","name":"Rival","permission":{"default":0},"type":"bond","data":{"bond_type":"Rival","in_curriculum":false,"xp_used":0,"rank":1,"bought_at_rank":0,"ring":"void","xp_cost":3,"description":"","book_reference":"Court of Stones p.138"},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/bond.svg","effects":[]}
{"_id":"L5RCoreBon000005","name":"Nemesis","permission":{"default":0},"type":"bond","data":{"bond_type":"Nemesis","in_curriculum":false,"xp_used":0,"rank":1,"bought_at_rank":0,"ring":"void","xp_cost":3,"description":"","book_reference":"Court of Stones p.138"},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/bond.svg","effects":[]}
{"_id":"L5RCoreBon000006","name":"Old Flame","permission":{"default":0},"type":"bond","data":{"bond_type":"Old Flame","in_curriculum":false,"xp_used":0,"rank":1,"bought_at_rank":0,"ring":"void","xp_cost":3,"description":"","book_reference":"Path of Waves p.188"},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/bond.svg","effects":[]}
{"_id":"L5RCoreBon000007","name":"Partner","permission":{"default":0},"type":"bond","data":{"bond_type":"Partner","in_curriculum":false,"xp_used":0,"rank":1,"bought_at_rank":0,"ring":"void","xp_cost":3,"description":"","book_reference":"Path of Waves p.189"},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/bond.svg","effects":[]}
{"_id":"L5RCoreBon000008","name":"Protector and Ward","permission":{"default":0},"type":"bond","data":{"bond_type":"Protector and Ward","in_curriculum":false,"xp_used":0,"rank":1,"bought_at_rank":0,"ring":"void","xp_cost":3,"description":"","book_reference":"Path of Waves p.189"},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/bond.svg","effects":[]}
{"_id":"L5RCoreBon000009","name":"Wanderers Fellowship","permission":{"default":0},"type":"bond","data":{"bond_type":"Wanderers Fellowship","in_curriculum":false,"xp_used":0,"rank":1,"bought_at_rank":0,"ring":"void","xp_cost":3,"description":"","book_reference":"Path of Waves p.191"},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/bond.svg","effects":[]}

View File

@@ -0,0 +1,5 @@
{"_id":"L5RCoreItp000001","name":"Kakita Pattern","permission":{"default":0},"type":"item_pattern","data":{"in_curriculum":false,"xp_used":0,"rank":1,"bought_at_rank":0,"ring":"void","xp_cost":"6","rarity_modifier":"4","linked_property_id":"L5RCorePro000017","description":"","book_reference":"Shadowlands p.109"},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/item_pattern.svg","effects":[]}
{"_id":"L5RCoreItp000002","name":"Kenzō Blade","permission":{"default":0},"type":"item_pattern","data":{"in_curriculum":false,"xp_used":0,"rank":1,"bought_at_rank":0,"ring":"void","xp_cost":"8","rarity_modifier":"5","linked_property_id":"L5RCorePro000018","description":"","book_reference":"Shadowlands p.109"},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/item_pattern.svg","effects":[]}
{"_id":"L5RCoreItp000003","name":"Shirogane Jade Inlay","permission":{"default":0},"type":"item_pattern","data":{"in_curriculum":false,"xp_used":0,"rank":1,"bought_at_rank":0,"ring":"void","xp_cost":"3","rarity_modifier":"2","linked_property_id":"L5RCorePro000019","description":"","book_reference":"Shadowlands p.109"},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/item_pattern.svg","effects":[]}
{"_id":"L5RCoreItp000004","name":"Uchemas Technique","permission":{"default":0},"type":"item_pattern","data":{"in_curriculum":false,"xp_used":0,"rank":1,"bought_at_rank":0,"ring":"void","xp_cost":"4","rarity_modifier":"3","linked_property_id":"L5RCorePro000020","description":"","book_reference":"Shadowlands p.109"},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/item_pattern.svg","effects":[]}
{"_id":"L5RCoreItp000005","name":"Yasunori Steel","permission":{"default":0},"type":"item_pattern","data":{"in_curriculum":false,"xp_used":0,"rank":1,"bought_at_rank":0,"ring":"void","xp_cost":"5","rarity_modifier":"4","linked_property_id":"L5RCorePro000021","description":"","book_reference":"Shadowlands p.109"},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/item_pattern.svg","effects":[]}

View File

@@ -78,3 +78,6 @@
{"_id":"L5RCoreIte000078","name":"Sapper's Kit","permission":{"default":0},"type":"item","data":{"equipped":false,"quantity":1,"weight":"1","rarity":"3","zeni":"1 bu","properties":[],"description":"","book_reference":"Shadowlands p.107"},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/item.svg","effects":[]}
{"_id":"L5RCoreIte000079","name":"Engineer's Kit","permission":{"default":0},"type":"item","data":{"equipped":false,"quantity":1,"weight":"1","rarity":"3","zeni":"3 bu","properties":[],"description":"","book_reference":"Shadowlands p.107"},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/item.svg","effects":[]}
{"_id":"L5RCoreIte000080","name":"Smoke Arrows","permission":{"default":0},"type":"item","data":{"equipped":false,"quantity":1,"weight":"0","rarity":"4","zeni":"3 bu","properties":[],"description":"","book_reference":"Shadowlands p.107"},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/item.svg","effects":[]}
{"_id":"L5RCoreIte000081","name":"Astrolabe","permission":{"default":0},"type":"item","data":{"equipped":false,"quantity":1,"weight":"0","rarity":"10","zeni":"30 koku","properties":[],"description":"","book_reference":"Mantis Clan p.9"},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/item.svg","effects":[]}
{"_id":"L5RCoreIte000082","name":"Fishing Rod and Line","permission":{"default":0},"type":"item","data":{"equipped":false,"quantity":1,"weight":"1","rarity":"1","zeni":"1 bu","properties":[],"description":"","book_reference":"Mantis Clan p.9"},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/item.svg","effects":[]}
{"_id":"L5RCoreIte000083","name":"TaraiBune","permission":{"default":0},"type":"item","data":{"equipped":false,"quantity":1,"weight":"3","rarity":"4","zeni":"1 koku","properties":[],"description":"","book_reference":"Mantis Clan p.9"},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/item.svg","effects":[]}

View File

@@ -78,3 +78,4 @@
{"_id":"L5RCoreAdv000078","name":"Demon Wound","permission":{"default":0},"type":"peculiarity","data":{"in_curriculum":false,"xp_used":0,"rank":0,"bought_at_rank":0,"ring":"earth","peculiarity_type":"adversity","types":"Scar, Spiritual","description":"","book_reference":"Shadowlands p.97"},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/peculiarity.svg","effects":[]}
{"_id":"L5RCoreAdv000079","name":"Shadowlands Taint [Kansen Whispers]","permission":{"default":0},"type":"peculiarity","data":{"in_curriculum":false,"xp_used":0,"rank":0,"bought_at_rank":0,"ring":"air","peculiarity_type":"adversity","types":"Curse, Mental","description":"","book_reference":"Shadowlands p.99"},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/peculiarity.svg","effects":[]}
{"_id":"L5RCoreAdv000080","name":"Shadowlands Taint [Distorted Limbs]","permission":{"default":0},"type":"peculiarity","data":{"in_curriculum":false,"xp_used":0,"rank":0,"bought_at_rank":0,"ring":"earth","peculiarity_type":"adversity","types":"Curse, Physical","description":"","book_reference":"Shadowlands p.99"},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/peculiarity.svg","effects":[]}
{"_id":"L5RCoreAdv000081","name":"Sailors Tongue","permission":{"default":0},"type":"peculiarity","data":{"in_curriculum":false,"xp_used":0,"rank":0,"bought_at_rank":0,"ring":"air","peculiarity_type":"adversity","types":"Interpersonal, Mental","description":"","book_reference":"Mantis Clan p.7"},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/peculiarity.svg","effects":[]}

View File

@@ -61,3 +61,5 @@
{"_id":"L5RCoreDis000061","name":"Dead Eyes","permission":{"default":0},"type":"peculiarity","data":{"in_curriculum":false,"xp_used":0,"rank":0,"bought_at_rank":0,"ring":"earth","peculiarity_type":"distinction","types":"Mental","description":"","book_reference":"Shadowlands p.96"},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/peculiarity.svg","effects":[]}
{"_id":"L5RCoreDis000062","name":"Light Sleeper","permission":{"default":0},"type":"peculiarity","data":{"in_curriculum":false,"xp_used":0,"rank":0,"bought_at_rank":0,"ring":"water","peculiarity_type":"distinction","types":"Physical","description":"","book_reference":"Shadowlands p.96"},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/peculiarity.svg","effects":[]}
{"_id":"L5RCoreDis000063","name":"Friend of the Nezumi","permission":{"default":0},"type":"peculiarity","data":{"in_curriculum":false,"xp_used":0,"rank":0,"bought_at_rank":0,"ring":"water","peculiarity_type":"distinction","types":"Interpersonal","description":"","book_reference":"Shadowlands p.96"},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/peculiarity.svg","effects":[]}
{"_id":"L5RCoreDis000064","name":"Blood of Osano-Wo","permission":{"default":0},"type":"peculiarity","data":{"in_curriculum":false,"xp_used":0,"rank":0,"bought_at_rank":0,"ring":"fire","peculiarity_type":"distinction","types":"Mental, Spiritual","description":"","book_reference":"Mantis Clan p.7"},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/peculiarity.svg","effects":[]}
{"_id":"L5RCoreDis000065","name":"Sea Legs","permission":{"default":0},"type":"peculiarity","data":{"in_curriculum":false,"xp_used":0,"rank":0,"bought_at_rank":0,"ring":"water","peculiarity_type":"distinction","types":"Physical","description":"","book_reference":"Mantis Clan p.7"},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/peculiarity.svg","effects":[]}

View File

@@ -37,3 +37,4 @@
{"_id":"L5RCorePas000037","name":"Attention","permission":{"default":0},"type":"peculiarity","data":{"in_curriculum":false,"xp_used":0,"rank":0,"bought_at_rank":0,"ring":"fire","peculiarity_type":"passion","types":"Mental","description":"","book_reference":"Path of Waves p.70"},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/peculiarity.svg","effects":[]}
{"_id":"L5RCorePas000038","name":"Passion for [Foreign Performing Art Form]","permission":{"default":0},"type":"peculiarity","data":{"in_curriculum":false,"xp_used":0,"rank":0,"bought_at_rank":0,"ring":"air","peculiarity_type":"passion","types":"Fame, Interpersonal","description":"","book_reference":"Path of Waves p.71"},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/peculiarity.svg","effects":[]}
{"_id":"L5RCorePas000039","name":"Creatures","permission":{"default":0},"type":"peculiarity","data":{"in_curriculum":false,"xp_used":0,"rank":0,"bought_at_rank":0,"ring":"fire","peculiarity_type":"passion","types":"Mental","description":"","book_reference":"Shadowlands p.97"},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/peculiarity.svg","effects":[]}
{"_id":"L5RCorePas000040","name":"KnotWork","permission":{"default":0},"type":"peculiarity","data":{"in_curriculum":false,"xp_used":0,"rank":0,"bought_at_rank":0,"ring":"air","peculiarity_type":"passion","types":"Mental","description":"","book_reference":"Mantis Clan p.7"},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/peculiarity.svg","effects":[]}

View File

@@ -14,3 +14,8 @@
{"_id":"L5RCorePro000014","name":"Sacred","permission":{"default":0},"type":"property","data":{"description":"","book_reference":"Core Rulebook p.241"},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/property.svg","effects":[]}
{"_id":"L5RCorePro000015","name":"Durable","permission":{"default":0},"type":"property","data":{"description":"","book_reference":"Core Rulebook p.240"},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/property.svg","effects":[]}
{"_id":"L5RCorePro000016","name":"Subtle","permission":{"default":0},"type":"property","data":{"description":"","book_reference":"Core Rulebook p.241"},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/property.svg","effects":[]}
{"_id":"L5RCorePro000017","name":"Kakita Pattern","permission":{"default":0},"type":"property","data":{"description":"","book_reference":"Shadowlands p.109"},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/property.svg","effects":[]}
{"_id":"L5RCorePro000018","name":"Kenzō Blade","permission":{"default":0},"type":"property","data":{"description":"","book_reference":"Shadowlands p.109"},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/property.svg","effects":[]}
{"_id":"L5RCorePro000019","name":"Shirogane Jade Inlay","permission":{"default":0},"type":"property","data":{"description":"","book_reference":"Shadowlands p.109"},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/property.svg","effects":[]}
{"_id":"L5RCorePro000020","name":"Uchemas Technique","permission":{"default":0},"type":"property","data":{"description":"","book_reference":"Shadowlands p.109"},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/property.svg","effects":[]}
{"_id":"L5RCorePro000021","name":"Yasunori Steel","permission":{"default":0},"type":"property","data":{"description":"","book_reference":"Shadowlands p.109"},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/property.svg","effects":[]}

View File

@@ -0,0 +1,3 @@
{"_id":"L5RCoreSig000001","name":"Ichis Second Sight","permission":{"default":0},"type":"signature_scroll","data":{"in_curriculum":false,"xp_used":0,"rank":1,"bought_at_rank":0,"ring":"void","xp_cost":"3","description":"","book_reference":"Shadowlands p.108"},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/signature_scroll.svg","effects":[]}
{"_id":"L5RCoreSig000002","name":"Hasegawas Denial","permission":{"default":0},"type":"signature_scroll","data":{"in_curriculum":false,"xp_used":0,"rank":1,"bought_at_rank":0,"ring":"void","xp_cost":"3","description":"","book_reference":"Shadowlands p.108"},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/signature_scroll.svg","effects":[]}
{"_id":"L5RCoreSig000003","name":"Maikaras Rebuke","permission":{"default":0},"type":"signature_scroll","data":{"in_curriculum":false,"xp_used":0,"rank":1,"bought_at_rank":0,"ring":"void","xp_cost":"3","description":"","book_reference":"Shadowlands p.108"},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/signature_scroll.svg","effects":[]}

View File

@@ -65,11 +65,11 @@
{"_id":"L5RCoreInv000065","name":"The Fading Dream","permission":{"default":0},"type":"technique","data":{"in_curriculum":false,"xp_used":0,"rank":"5","bought_at_rank":0,"ring":"air","technique_type":"invocation","xp_cost":"3","description":"","book_reference":"Celestial Realms p.106"},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/techs/invocation.svg","effects":[]}
{"_id":"L5RCoreInv000066","name":"Bond of the Realms","permission":{"default":0},"type":"technique","data":{"in_curriculum":false,"xp_used":0,"rank":"3","bought_at_rank":0,"ring":"earth","technique_type":"invocation","xp_cost":"3","description":"","book_reference":"Celestial Realms p.107"},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/techs/invocation.svg","effects":[]}
{"_id":"L5RCoreInv000067","name":"Guardian of the Secret Gate","permission":{"default":0},"type":"technique","data":{"in_curriculum":false,"xp_used":0,"rank":"5","bought_at_rank":0,"ring":"earth","technique_type":"invocation","xp_cost":"3","description":"","book_reference":"Celestial Realms p.107"},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/techs/invocation.svg","effects":[]}
{"_id":"L5RCoreInv000068","name":"Emboldened Steed","permission":{"default":0},"type":"technique","data":{"in_curriculum":false,"xp_used":0,"rank":"3","bought_at_rank":0,"ring":"void","technique_type":"invocation","xp_cost":"3","description":"","book_reference":"Celestial Realms p.107"},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/techs/invocation.svg","effects":[]}
{"_id":"L5RCoreInv000068","name":"Emboldened Steed","permission":{"default":0},"type":"technique","data":{"in_curriculum":false,"xp_used":0,"rank":"3","bought_at_rank":0,"ring":"earth","technique_type":"invocation","xp_cost":"3","description":"","book_reference":"Celestial Realms p.107"},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/techs/invocation.svg","effects":[]}
{"_id":"L5RCoreInv000069","name":"Fluid Shadows","permission":{"default":0},"type":"technique","data":{"in_curriculum":false,"xp_used":0,"rank":"2","bought_at_rank":0,"ring":"water","technique_type":"invocation","xp_cost":"3","description":"","book_reference":"Celestial Realms p.108"},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/techs/invocation.svg","effects":[]}
{"_id":"L5RCoreInv000070","name":"Heart of the Lady Sun","permission":{"default":0},"type":"technique","data":{"in_curriculum":false,"xp_used":0,"rank":"5","bought_at_rank":0,"ring":"fire","technique_type":"invocation","xp_cost":"3","description":"","book_reference":"Celestial Realms p.108"},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/techs/invocation.svg","effects":[]}
{"_id":"L5RCoreInv000071","name":"Fires of Purity","permission":{"default":0},"type":"technique","data":{"in_curriculum":false,"xp_used":0,"rank":"2","bought_at_rank":0,"ring":"fire","technique_type":"invocation","xp_cost":"3","description":"","book_reference":"Celestial Realms p.108"},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/techs/invocation.svg","effects":[]}
{"_id":"L5RCoreInv000072","name":"Amaterasu's Gaze","permission":{"default":0},"type":"technique","data":{"in_curriculum":false,"xp_used":0,"rank":"1","bought_at_rank":0,"ring":"fire","technique_type":"invocation","xp_cost":"3","description":"","book_reference":"Celestial Realms p.108"},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/techs/invocation.svg","effects":[]}
{"_id":"L5RCoreInv000073","name":"Rain of Ten Thousand Lotuses","permission":{"default":0},"type":"technique","data":{"in_curriculum":false,"xp_used":0,"rank":"5","bought_at_rank":0,"ring":"void","technique_type":"invocation","xp_cost":"3","description":"","book_reference":"Celestial Realms p.109"},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/techs/invocation.svg","effects":[]}
{"_id":"L5RCoreInv000073","name":"Rain of Ten Thousand Lotuses","permission":{"default":0},"type":"technique","data":{"in_curriculum":false,"xp_used":0,"rank":"5","bought_at_rank":0,"ring":"water","technique_type":"invocation","xp_cost":"3","description":"","book_reference":"Celestial Realms p.109"},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/techs/invocation.svg","effects":[]}
{"_id":"L5RCoreInv000074","name":"Path of Beasts","permission":{"default":0},"type":"technique","data":{"in_curriculum":false,"xp_used":0,"rank":"3","bought_at_rank":0,"ring":"water","technique_type":"invocation","xp_cost":"3","description":"","book_reference":"Celestial Realms p.109"},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/techs/invocation.svg","effects":[]}
{"_id":"L5RCoreInv000075","name":"Essence of Jade","permission":{"default":0},"type":"technique","data":{"in_curriculum":false,"xp_used":0,"rank":"3","bought_at_rank":0,"ring":"earth","technique_type":"invocation","xp_cost":"3","description":"","book_reference":"Shadowlands p.114"},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/techs/invocation.svg","effects":[]}

View File

@@ -15,13 +15,13 @@
{"_id":"L5RCoreKat000015","name":"Lord Hidas Grip","permission":{"default":0},"type":"technique","data":{"in_curriculum":false,"xp_used":0,"rank":"2","bought_at_rank":0,"ring":"void","technique_type":"kata","xp_cost":"3","description":"","book_reference":"Core Rulebook p.176"},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/techs/kata.svg","effects":[]}
{"_id":"L5RCoreKat000016","name":"Disappearing World Style","permission":{"default":0},"type":"technique","data":{"in_curriculum":false,"xp_used":0,"rank":"4","bought_at_rank":0,"ring":"air","technique_type":"kata","xp_cost":"3","description":"","book_reference":"Core Rulebook p.175"},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/techs/kata.svg","effects":[]}
{"_id":"L5RCoreKat000017","name":"Crashing Wave Style","permission":{"default":0},"type":"technique","data":{"in_curriculum":false,"xp_used":0,"rank":"4","bought_at_rank":0,"ring":"water","technique_type":"kata","xp_cost":"3","description":"","book_reference":"Core Rulebook p.175"},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/techs/kata.svg","effects":[]}
{"_id":"L5RCoreKat000018","name":"Crescent Moon Style","permission":{"default":0},"type":"technique","data":{"in_curriculum":false,"xp_used":0,"rank":"4","bought_at_rank":0,"ring":"fire","technique_type":"kata","xp_cost":"3","description":"","book_reference":"Core Rulebook p.175"},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/techs/kata.svg","effects":[]}
{"_id":"L5RCoreKat000018","name":"Crescent Moon Style","permission":{"default":0},"type":"technique","data":{"in_curriculum":false,"xp_used":0,"rank":"2","bought_at_rank":0,"ring":"void","technique_type":"kata","xp_cost":"3","description":"","book_reference":"Core Rulebook p.175"},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/techs/kata.svg","effects":[]}
{"_id":"L5RCoreKat000019","name":"Iron in the Mountains Style","permission":{"default":0},"type":"technique","data":{"in_curriculum":false,"xp_used":0,"rank":"4","bought_at_rank":0,"ring":"earth","technique_type":"kata","xp_cost":"3","description":"","book_reference":"Core Rulebook p.176"},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/techs/kata.svg","effects":[]}
{"_id":"L5RCoreKat000020","name":"Breath of Wind Style","permission":{"default":0},"type":"technique","data":{"in_curriculum":false,"xp_used":0,"rank":"4","bought_at_rank":0,"ring":"void","technique_type":"kata","xp_cost":"3","description":"","book_reference":"Core Rulebook p.175"},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/techs/kata.svg","effects":[]}
{"_id":"L5RCoreKat000020","name":"Breath of Wind Style","permission":{"default":0},"type":"technique","data":{"in_curriculum":false,"xp_used":0,"rank":"4","bought_at_rank":0,"ring":"air","technique_type":"kata","xp_cost":"3","description":"","book_reference":"Core Rulebook p.175"},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/techs/kata.svg","effects":[]}
{"_id":"L5RCoreKat000021","name":"Thunderclap Strike","permission":{"default":0},"type":"technique","data":{"in_curriculum":false,"xp_used":0,"rank":"3","bought_at_rank":0,"ring":"air","technique_type":"kata","xp_cost":"3","description":"","book_reference":"Core Rulebook p.180"},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/techs/kata.svg","effects":[]}
{"_id":"L5RCoreKat000022","name":"Iaijutsu Cut: Rising Blade","permission":{"default":0},"type":"technique","data":{"in_curriculum":false,"xp_used":0,"rank":"2","bought_at_rank":0,"ring":"void","technique_type":"kata","xp_cost":"3","description":"","book_reference":"Core Rulebook p.179"},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/techs/kata.svg","effects":[]}
{"_id":"L5RCoreKat000023","name":"Iaijutsu Cut: Crossing Blade","permission":{"default":0},"type":"technique","data":{"in_curriculum":false,"xp_used":0,"rank":"2","bought_at_rank":0,"ring":"void","technique_type":"kata","xp_cost":"3","description":"","book_reference":"Core Rulebook p.179"},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/techs/kata.svg","effects":[]}
{"_id":"L5RCoreKat000024","name":"Rushing Avalanche Style","permission":{"default":0},"type":"technique","data":{"in_curriculum":false,"xp_used":0,"rank":"2","bought_at_rank":0,"ring":"void","technique_type":"kata","xp_cost":"3","description":"","book_reference":"Core Rulebook p.180"},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/techs/kata.svg","effects":[]}
{"_id":"L5RCoreKat000024","name":"Rushing Avalanche Style","permission":{"default":0},"type":"technique","data":{"in_curriculum":false,"xp_used":0,"rank":"2","bought_at_rank":0,"ring":"earth","technique_type":"kata","xp_cost":"3","description":"","book_reference":"Core Rulebook p.180"},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/techs/kata.svg","effects":[]}
{"_id":"L5RCoreKat000025","name":"Iron Forest Style","permission":{"default":0},"type":"technique","data":{"in_curriculum":false,"xp_used":0,"rank":"2","bought_at_rank":0,"ring":"void","technique_type":"kata","xp_cost":"3","description":"","book_reference":"Core Rulebook p.180"},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/techs/kata.svg","effects":[]}
{"_id":"L5RCoreKat000026","name":"Open-Hand Style","permission":{"default":0},"type":"technique","data":{"in_curriculum":false,"xp_used":0,"rank":"2","bought_at_rank":0,"ring":"void","technique_type":"kata","xp_cost":"3","description":"","book_reference":"Core Rulebook p.180"},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/techs/kata.svg","effects":[]}
{"_id":"L5RCoreKat000027","name":"Veiled Menace Style","permission":{"default":0},"type":"technique","data":{"in_curriculum":false,"xp_used":0,"rank":"2","bought_at_rank":0,"ring":"void","technique_type":"kata","xp_cost":"3","description":"","book_reference":"Core Rulebook p.181"},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/techs/kata.svg","effects":[]}

View File

@@ -30,7 +30,7 @@
{"_id":"L5RCoreMas000030","name":"Sensing the Breeze","permission":{"default":0},"type":"technique","data":{"in_curriculum":false,"xp_used":0,"rank":"6","bought_at_rank":0,"ring":"void","technique_type":"mastery_ability","xp_cost":"0","description":"","book_reference":"Core Rulebook p.86"},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/clans/unicorn.svg","effects":[]}
{"_id":"L5RCoreMas000031","name":"A Bottomless Ocean","permission":{"default":0},"type":"technique","data":{"in_curriculum":false,"xp_used":0,"rank":"6","bought_at_rank":0,"ring":"void","technique_type":"mastery_ability","xp_cost":"0","description":"","book_reference":"Core Rulebook p.87"},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/clans/ronin.svg","effects":[]}
{"_id":"L5RCoreMas000032","name":"Experimental Concotion","permission":{"default":0},"type":"technique","data":{"in_curriculum":false,"xp_used":0,"rank":"6","bought_at_rank":0,"ring":"void","technique_type":"mastery_ability","xp_cost":"0","description":"","book_reference":"Celestial Realms p.80"},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/clans/dragon.svg","effects":[]}
{"_id":"L5RCoreMas000033","name":"Favored ounselor","permission":{"default":0},"type":"technique","data":{"in_curriculum":false,"xp_used":0,"rank":"6","bought_at_rank":0,"ring":"void","technique_type":"mastery_ability","xp_cost":"0","description":"","book_reference":"Celestial Realms p.81"},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/clans/crane.svg","effects":[]}
{"_id":"L5RCoreMas000033","name":"Favored Counselor","permission":{"default":0},"type":"technique","data":{"in_curriculum":false,"xp_used":0,"rank":"6","bought_at_rank":0,"ring":"void","technique_type":"mastery_ability","xp_cost":"0","description":"","book_reference":"Celestial Realms p.81"},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/clans/crane.svg","effects":[]}
{"_id":"L5RCoreMas000034","name":"Essence of Emptiness","permission":{"default":0},"type":"technique","data":{"in_curriculum":false,"xp_used":0,"rank":"6","bought_at_rank":0,"ring":"void","technique_type":"mastery_ability","xp_cost":"0","description":"","book_reference":"Celestial Realms p.82"},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/clans/phoenix.svg","effects":[]}
{"_id":"L5RCoreMas000035","name":"Temple of the Heart","permission":{"default":0},"type":"technique","data":{"in_curriculum":false,"xp_used":0,"rank":"6","bought_at_rank":0,"ring":"void","technique_type":"mastery_ability","xp_cost":"0","description":"","book_reference":"Celestial Realms p.83"},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/clans/phoenix.svg","effects":[]}
{"_id":"L5RCoreMas000036","name":"The Flower Binds the Room","permission":{"default":0},"type":"technique","data":{"in_curriculum":false,"xp_used":0,"rank":"6","bought_at_rank":0,"ring":"void","technique_type":"mastery_ability","xp_cost":"0","description":"","book_reference":"Celestial Realms p.84"},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/clans/crab.svg","effects":[]}
@@ -77,3 +77,4 @@
{"_id":"L5RCoreMas000077","name":"Empathic Transfer","permission":{"default":0},"type":"technique","data":{"in_curriculum":false,"xp_used":0,"rank":"6","bought_at_rank":0,"ring":"void","technique_type":"mastery_ability","xp_cost":"0","description":"","book_reference":"Shadowlands p.93"},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/clans/unicorn.svg","effects":[]}
{"_id":"L5RCoreMas000078","name":"Yotogi's Piercing Gaze","permission":{"default":0},"type":"technique","data":{"in_curriculum":false,"xp_used":0,"rank":"6","bought_at_rank":0,"ring":"void","technique_type":"mastery_ability","xp_cost":"0","description":"","book_reference":"Shadowlands p.94"},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/technique.svg","effects":[]}
{"_id":"L5RCoreMas000079","name":"Kingdom of Paper and Ink","permission":{"default":0},"type":"technique","data":{"in_curriculum":false,"xp_used":0,"rank":"6","bought_at_rank":0,"ring":"void","technique_type":"mastery_ability","xp_cost":"0","description":"","book_reference":"Shadowlands p.95"},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/clans/scorpion.svg","effects":[]}
{"_id":"L5RCoreMas000080","name":"Storm Lords Gambit","permission":{"default":0},"type":"technique","data":{"in_curriculum":false,"xp_used":0,"rank":"6","bought_at_rank":0,"ring":"void","technique_type":"mastery_ability","xp_cost":"0","description":"","book_reference":"Mantis Clan p.5"},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/clans/mantis.svg","effects":[]}

View File

@@ -77,3 +77,4 @@
{"_id":"L5RCoreSch000077","name":"Hands of Earth and Sky","permission":{"default":0},"type":"technique","data":{"in_curriculum":false,"xp_used":0,"rank":"1","bought_at_rank":0,"ring":"void","technique_type":"school_ability","xp_cost":"0","description":"","book_reference":"Shadowlands p.93"},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/clans/unicorn.svg","effects":[]}
{"_id":"L5RCoreSch000078","name":"Eyes of Yotogi","permission":{"default":0},"type":"technique","data":{"in_curriculum":false,"xp_used":0,"rank":"1","bought_at_rank":0,"ring":"void","technique_type":"school_ability","xp_cost":"0","description":"","book_reference":"Shadowlands p.94"},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/technique.svg","effects":[]}
{"_id":"L5RCoreSch000079","name":"Warded Shikigami","permission":{"default":0},"type":"technique","data":{"in_curriculum":false,"xp_used":0,"rank":"1","bought_at_rank":0,"ring":"void","technique_type":"school_ability","xp_cost":"0","description":"","book_reference":"Shadowlands p.95"},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/clans/scorpion.svg","effects":[]}
{"_id":"L5RCoreSch000080","name":"Sailors Fortune","permission":{"default":0},"type":"technique","data":{"in_curriculum":false,"xp_used":0,"rank":"1","bought_at_rank":0,"ring":"void","technique_type":"school_ability","xp_cost":"0","description":"","book_reference":"Mantis Clan p.5"},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/clans/mantis.svg","effects":[]}

View File

@@ -68,3 +68,4 @@
{"_id":"L5RCoreShu000068","name":"Tonight, I Am Your Opponent","permission":{"default":0},"type":"technique","data":{"in_curriculum":false,"xp_used":0,"rank":"3","bought_at_rank":0,"ring":"void","technique_type":"shuji","xp_cost":"3","description":"","book_reference":"Path of Waves p.95"},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/techs/shuji.svg","effects":[]}
{"_id":"L5RCoreShu000069","name":"Wanderer's Resolve","permission":{"default":0},"type":"technique","data":{"in_curriculum":false,"xp_used":0,"rank":"1","bought_at_rank":0,"ring":"void","technique_type":"shuji","xp_cost":"3","description":"","book_reference":"Path of Waves p.95"},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/techs/shuji.svg","effects":[]}
{"_id":"L5RCoreShu000070","name":"Roar of Encouragement","permission":{"default":0},"type":"technique","data":{"in_curriculum":false,"xp_used":0,"rank":"5","bought_at_rank":0,"ring":"fire","technique_type":"shuji","xp_cost":"3","description":"","book_reference":"Path of Waves p.95"},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/techs/shuji.svg","effects":[]}
{"_id":"L5RCoreShu000071","name":"Osano-wos Boast (Mantis)","permission":{"default":0},"type":"technique","data":{"in_curriculum":false,"xp_used":0,"rank":"3","bought_at_rank":0,"ring":"fire","technique_type":"shuji","xp_cost":"3","description":"","book_reference":"Mantis Clan p.7"},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/clans/mantis.svg","effects":[]}

View File

@@ -0,0 +1,10 @@
{"_id":"L5RCoreTit000001","name":"Emerald Magistrate","permission":{"default":0},"type":"title","data":{"in_curriculum":false,"xp_used":0,"rank":1,"bought_at_rank":0,"ring":"void","xp_cost":"30","description":"","book_reference":"Core Rulebook p.305"},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/title.svg","effects":[]}
{"_id":"L5RCoreTit000002","name":"Castellan","permission":{"default":0},"type":"title","data":{"in_curriculum":false,"xp_used":0,"rank":1,"bought_at_rank":0,"ring":"void","xp_cost":"20","description":"","book_reference":"Court of Stones p.128"},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/title.svg","effects":[]}
{"_id":"L5RCoreTit000003","name":"Covert Agent","permission":{"default":0},"type":"title","data":{"in_curriculum":false,"xp_used":0,"rank":1,"bought_at_rank":0,"ring":"void","xp_cost":"20","description":"","book_reference":"Court of Stones p.128"},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/title.svg","effects":[]}
{"_id":"L5RCoreTit000004","name":"Dreaded Enforcer","permission":{"default":0},"type":"title","data":{"in_curriculum":false,"xp_used":0,"rank":1,"bought_at_rank":0,"ring":"void","xp_cost":"40","description":"","book_reference":"Court of Stones p.129"},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/title.svg","effects":[]}
{"_id":"L5RCoreTit000005","name":"Esteemed Negotiator","permission":{"default":0},"type":"title","data":{"in_curriculum":false,"xp_used":0,"rank":1,"bought_at_rank":0,"ring":"void","xp_cost":"34","description":"","book_reference":"Court of Stones p.129"},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/title.svg","effects":[]}
{"_id":"L5RCoreTit000006","name":"Kenshinzen","permission":{"default":0},"type":"title","data":{"in_curriculum":false,"xp_used":0,"rank":1,"bought_at_rank":0,"ring":"void","xp_cost":"24","description":"","book_reference":"Court of Stones p.130"},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/title.svg","effects":[]}
{"_id":"L5RCoreTit000007","name":"Kyuden Asako Shieldbearer","permission":{"default":0},"type":"title","data":{"in_curriculum":false,"xp_used":0,"rank":1,"bought_at_rank":0,"ring":"void","xp_cost":"40","description":"","book_reference":"Court of Stones p.130"},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/title.svg","effects":[]}
{"_id":"L5RCoreTit000008","name":"Master Artisan","permission":{"default":0},"type":"title","data":{"in_curriculum":false,"xp_used":0,"rank":1,"bought_at_rank":0,"ring":"void","xp_cost":"60","description":"","book_reference":"Court of Stones p.130"},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/title.svg","effects":[]}
{"_id":"L5RCoreTit000009","name":"Winter Court Champion","permission":{"default":0},"type":"title","data":{"in_curriculum":false,"xp_used":0,"rank":1,"bought_at_rank":0,"ring":"void","xp_cost":"16","description":"","book_reference":"Court of Stones p.131"},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/title.svg","effects":[]}
{"_id":"L5RCoreTit000010","name":"Seven fold Palace Acolyte","permission":{"default":0},"type":"title","data":{"in_curriculum":false,"xp_used":0,"rank":1,"bought_at_rank":0,"ring":"void","xp_cost":"36","description":"","book_reference":"Court of Stones p.131"},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/items/title.svg","effects":[]}

View File

@@ -35,7 +35,7 @@
{"_id":"L5RCoreWea000035","name":"Shuriken","permission":{"default":0},"type":"weapon","data":{"equipped":false,"quantity":1,"weight":"1","rarity":"6","zeni":"1 koku","properties":[{"id":"L5RCorePro000005","name":"Concealable"}],"category":"Specialist Weapons","skill":"unarmed","readied":false,"range":"","damage":"2","deadliness":"4","grip_1":"(thrown) Martial Arts (Ranged), Range 1-3","grip_2":"","description":"","book_reference":"Core Rulebook p.237"},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/weapons/kusarigama.svg","effects":[]}
{"_id":"L5RCoreWea000036","name":"Punch","permission":{"default":0},"type":"weapon","data":{"equipped":false,"quantity":1,"weight":"0","rarity":"0","zeni":"0","properties":[{"id":"L5RCorePro000007","name":"Snaring"}],"category":"Unarmed profiles","skill":"unarmed","readied":false,"range":"","damage":"1","deadliness":"2","grip_1":"","grip_2":"","description":"","book_reference":"Core Rulebook p.237"},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/weapons/unarmed.svg","effects":[]}
{"_id":"L5RCoreWea000037","name":"Kick","permission":{"default":0},"type":"weapon","data":{"equipped":false,"quantity":1,"weight":"0","rarity":"0","zeni":"0","properties":[],"category":"Unarmed profiles","skill":"unarmed","readied":false,"range":"1","damage":"2","deadliness":"1","grip_1":"","grip_2":"","description":"","book_reference":"Core Rulebook p.237"},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/weapons/unarmed.svg","effects":[]}
{"_id":"L5RCoreWea000038","name":"BIte","permission":{"default":0},"type":"weapon","data":{"equipped":false,"quantity":1,"weight":"0","rarity":"0","zeni":"0","properties":[],"category":"Unarmed profiles","skill":"unarmed","readied":false,"range":"","damage":"","deadliness":"3","grip_1":"","grip_2":"","description":"","book_reference":"Core Rulebook p.237"},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/weapons/unarmed.svg","effects":[]}
{"_id":"L5RCoreWea000038","name":"Bite","permission":{"default":0},"type":"weapon","data":{"equipped":false,"quantity":1,"weight":"0","rarity":"0","zeni":"0","properties":[],"category":"Unarmed profiles","skill":"unarmed","readied":false,"range":"","damage":"","deadliness":"3","grip_1":"","grip_2":"","description":"","book_reference":"Core Rulebook p.237"},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/weapons/unarmed.svg","effects":[]}
{"_id":"L5RCoreWea000039","name":"Tachi","permission":{"default":0},"type":"weapon","data":{"equipped":false,"quantity":1,"weight":"2","rarity":"8","zeni":"25 koku","properties":[{"id":"L5RCorePro000002","name":"Ceremonial"},{"id":"L5RCorePro000006","name":"Cumbersome"},{"id":"L5RCorePro000001","name":"Razor-Edged"}],"category":"Swords","skill":"melee","readied":false,"range":"1","damage":"5","deadliness":"5","grip_1":"","grip_2":"Deadliness +1","description":"","book_reference":"Celestial Realms p.98"},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/weapons/katana.svg","effects":[]}
{"_id":"L5RCoreWea000040","name":"Whip","permission":{"default":0},"type":"weapon","data":{"equipped":false,"quantity":1,"weight":"1","rarity":"2","zeni":"4 bu","properties":[{"id":"L5RCorePro000012","name":"Mundane"},{"id":"L5RCorePro000007","name":"Snaring"}],"category":"Specialist Weapons","skill":"melee","readied":false,"range":"2","damage":"3","deadliness":"2","grip_1":"","grip_2":"","description":"","book_reference":"Celestial Realms p.98"},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/weapons/kusarigama.svg","effects":[]}
{"_id":"L5RCoreWea000041","name":"Moshi Sun Ax","permission":{"default":0},"type":"weapon","data":{"equipped":false,"quantity":1,"weight":"2","rarity":"8","zeni":"20 koku","properties":[{"id":"L5RCorePro000002","name":"Ceremonial"},{"id":"L5RCorePro000006","name":"Cumbersome"},{"id":"L5RCorePro000010","name":"Resplendent"}],"category":"Axes","skill":"melee","readied":false,"range":"1-2","damage":"3","deadliness":"5","grip_1":"","grip_2":"Damage +3","description":"","book_reference":"Celestial Realms p.98"},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/weapons/axe.svg","effects":[]}
@@ -79,3 +79,9 @@
{"_id":"L5RCoreWea000079","name":"Kabutowari","permission":{"default":0},"type":"weapon","data":{"equipped":false,"quantity":1,"weight":"1","rarity":"7","zeni":"6 koku","properties":[{"id":"L5RCorePro000015","name":"Durable"},{"id":"L5RCorePro000007","name":"Snaring"}],"category":"Swords","skill":"melee","readied":false,"range":"0-1","damage":"3","deadliness":"3","grip_1":"","grip_2":"","description":"","book_reference":"Shadowlands p.104"},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/weapons/katana.svg","effects":[]}
{"_id":"L5RCoreWea000080","name":"Storm Bow","permission":{"default":0},"type":"weapon","data":{"equipped":false,"quantity":1,"weight":"2","rarity":"9","zeni":"60 koku","properties":[{"id":"L5RCorePro000006","name":"Cumbersome"},{"id":"L5RCorePro000013","name":"Prepare"},{"id":"L5RCorePro000011","name":"Wargear"}],"category":"Bows","skill":"ranged","readied":false,"range":"1-4","damage":"4","deadliness":"3","grip_1":"","grip_2":"","description":"","book_reference":"Shadowlands p.104"},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/weapons/bow.svg","effects":[]}
{"_id":"L5RCoreWea000081","name":"Doom Crossbow","permission":{"default":0},"type":"weapon","data":{"equipped":false,"quantity":1,"weight":"2","rarity":"10","zeni":"80 koku","properties":[{"id":"L5RCorePro000006","name":"Cumbersome"},{"id":"L5RCorePro000013","name":"Prepare"},{"id":"L5RCorePro000011","name":"Wargear"}],"category":"Crossbows","skill":"ranged","readied":false,"range":"3-5","damage":"8","deadliness":"6","grip_1":"","grip_2":"","description":"","book_reference":"Shadowlands p.104"},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/weapons/crossbow.svg","effects":[]}
{"_id":"L5RCoreWea000082","name":"Butterfly sword","permission":{"default":0},"type":"weapon","data":{"equipped":false,"quantity":1,"weight":"1","rarity":"6","zeni":"10 koku","properties":[{"id":"L5RCorePro000005","name":"Concealable"},{"id":"L5RCorePro000007","name":"Snaring"}],"category":"Swords","skill":"melee","readied":false,"range":"0-1","damage":"3","deadliness":"5","grip_1":"","grip_2":"","description":"","book_reference":"Mantis Clan p.8"},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/weapons/katana.svg","effects":[]}
{"_id":"L5RCoreWea000083","name":"Eku","permission":{"default":0},"type":"weapon","data":{"equipped":false,"quantity":1,"weight":"2","rarity":"5","zeni":"3 koku","properties":[{"id":"L5RCorePro000006","name":"Cumbersome"},{"id":"L5RCorePro000012","name":"Mundane"},{"id":"L5RCorePro000015","name":"Durable"}],"category":"Polearms","skill":"melee","readied":false,"range":"2","damage":"6","deadliness":"4","grip_1":"","grip_2":"","description":"","book_reference":"Mantis Clan p.8"},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/weapons/bo.svg","effects":[]}
{"_id":"L5RCoreWea000084","name":"Tinbe-Rochin","permission":{"default":0},"type":"weapon","data":{"equipped":false,"quantity":1,"weight":"1","rarity":"6","zeni":"15 koku","properties":[],"category":"Polearms","skill":"melee","readied":false,"range":"0-1","damage":"3","deadliness":"5","grip_1":"","grip_2":"","description":"","book_reference":"Mantis Clan p.8"},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/weapons/bo.svg","effects":[]}
{"_id":"L5RCoreWea000085","name":"Sai","permission":{"default":0},"type":"weapon","data":{"equipped":false,"quantity":1,"weight":"1","rarity":"6","zeni":"2 koku","properties":[{"id":"L5RCorePro000005","name":"Concealable"},{"id":"L5RCorePro000007","name":"Snaring"}],"category":"Hand Weapons","skill":"melee","readied":false,"range":"","damage":"2","deadliness":"2","grip_1":"","grip_2":"","description":"","book_reference":"Mantis Clan p.8"},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/weapons/knife.svg","effects":[]}
{"_id":"L5RCoreWea000086","name":"Tonfa","permission":{"default":0},"type":"weapon","data":{"equipped":false,"quantity":1,"weight":"1","rarity":"5","zeni":"4 koku","properties":[{"id":"L5RCorePro000005","name":"Concealable"},{"id":"L5RCorePro000015","name":"Durable"}],"category":"Hand Weapons","skill":"melee","readied":false,"range":"0-1","damage":"3","deadliness":"3","grip_1":"","grip_2":"","description":"","book_reference":"Mantis Clan p.9"},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/weapons/knife.svg","effects":[]}
{"_id":"L5RCoreWea000087","name":"Tinbe","permission":{"default":0},"type":"weapon","data":{"equipped":false,"quantity":1,"weight":"1","rarity":"6","zeni":"25 koku","properties":[{"id":"L5RCorePro000015","name":"Durable"}],"category":"Shields","skill":"melee","readied":false,"range":"","damage":"2","deadliness":"2","grip_1":"","grip_2":"","description":"","book_reference":"Mantis Clan p.8"},"sort":100001,"flags":{},"img":"systems/l5r5e/assets/icons/weapons/unarmed.svg","effects":[]}

View File

@@ -20,7 +20,7 @@ export class ActorL5r5e extends Actor {
data.token = data.token || {};
switch (data.type) {
case "character":
mergeObject(
foundry.utils.mergeObject(
data.token,
{
// vision: true,
@@ -40,7 +40,7 @@ export class ActorL5r5e extends Actor {
break;
case "npc":
mergeObject(
foundry.utils.mergeObject(
data.token,
{
actorLink: false,
@@ -63,12 +63,20 @@ export class ActorL5r5e extends Actor {
* Entity-specific actions that should occur when the Entity is updated
* @override
*/
update(data, options = {}) {
async update(data = {}, context = {}) {
// Need a _id
if (!data["_id"]) {
data["_id"] = this.id;
}
// Fix for token image unliked from character... dunno why
if (data.img) {
data["token.img"] = data.img;
}
return super.update(data, options);
// Now using updateDocuments
data = data instanceof Array ? data : [data];
return Actor.updateDocuments(data, context);
}
/** @override */
@@ -100,4 +108,65 @@ export class ActorL5r5e extends Actor {
}
}
}
/**
* Add a Ring/Skill point to the current actor if the item is a advancement
* @param {Item} item
* @return {Promise<void>}
*/
async addBonus(item) {
return this._updateActorFromAdvancement(item, true);
}
/**
* Remove a Ring/Skill point to the current actor if the item is a advancement
* @param {Item} item
* @return {Promise<void>}
*/
async removeBonus(item) {
return this._updateActorFromAdvancement(item, false);
}
/**
* Alter Actor skill/ring from a advancement
* @param {Item} item
* @param {boolean} isAdd True=add, false=remove
* @return {Promise<void>}
* @private
*/
async _updateActorFromAdvancement(item, isAdd) {
if (item && item.type === "advancement") {
const actor = foundry.utils.duplicate(this.data.data);
const itemData = item.data.data;
if (itemData.advancement_type === "ring") {
// Ring
if (isAdd) {
actor.rings[itemData.ring] = Math.min(9, actor.rings[itemData.ring] + 1);
} else {
actor.rings[itemData.ring] = Math.max(1, actor.rings[itemData.ring] - 1);
}
} else {
// Skill
const skillCatId = CONFIG.l5r5e.skills.get(itemData.skill);
if (skillCatId) {
if (isAdd) {
actor.skills[skillCatId][itemData.skill] = Math.min(
9,
actor.skills[skillCatId][itemData.skill] + 1
);
} else {
actor.skills[skillCatId][itemData.skill] = Math.max(
0,
actor.skills[skillCatId][itemData.skill] - 1
);
}
}
}
// Update Actor
await this.update({
data: foundry.utils.diffObject(this.data.data, actor),
});
}
}
}

View File

@@ -16,16 +16,13 @@ export class BaseSheetL5r5e extends ActorSheet {
});
}
/**
* Commons datas
* @override
*/
getData() {
const sheetData = super.getData();
/** @inheritdoc */
getData(options = {}) {
const sheetData = super.getData(options);
sheetData.data.dtypes = ["String", "Number", "Boolean"];
sheetData.data.stances = CONFIG.l5r5e.stances;
sheetData.data.techniquesList = CONFIG.l5r5e.techniques;
sheetData.data.techniquesList = game.l5r5e.HelpersL5r5e.getTechniquesList({ displayInTypes: true });
// Sort Items by name
sheetData.items.sort((a, b) => {
@@ -47,38 +44,56 @@ export class BaseSheetL5r5e extends ActorSheet {
*/
_splitTechniques(sheetData) {
const out = {};
const schoolTechniques = Array.from(CONFIG.l5r5e.techniques)
.filter(([id, cfg]) => cfg.type === "school")
.map(([id, cfg]) => id);
// Build the list order
[...CONFIG.l5r5e.techniques, ...CONFIG.l5r5e.techniques_school].forEach((tech) => {
out[tech] = [];
});
Array.from(CONFIG.l5r5e.techniques)
.filter(([id, cfg]) => cfg.type !== "custom" || game.settings.get("l5r5e", "techniques-customs"))
.forEach(([id, cfg]) => {
out[id] = [];
});
// Add tech the character knows
sheetData.items.forEach((item) => {
if (item.type === "technique") {
out[item.data.technique_type].push(item);
}
switch (item.type) {
case "technique":
out[item.data.technique_type].push(item);
break;
case "title":
// Embed technique in titles
Array.from(item.data.items).forEach(([id, embedItem]) => {
if (embedItem.data.type === "technique") {
out[embedItem.data.data.technique_type].push(embedItem.data);
}
});
// If unlocked, add the "title_ability" as technique (or always displayed for npc)
if (item.data.xp_used >= item.data.xp_cost || this.document.type === "npc") {
out["title_ability"].push(item);
}
break;
} //swi
});
// Remove unused techs
Object.keys(out).forEach((tech) => {
if (
out[tech].length < 1 &&
!sheetData.data.techniques[tech] &&
!CONFIG.l5r5e.techniques_school.includes(tech)
) {
if (out[tech].length < 1 && !sheetData.data.data.techniques[tech] && !schoolTechniques.includes(tech)) {
delete out[tech];
}
});
// Manage school add button
sheetData.data.techniques["school_ability"] = out["school_ability"].length === 0;
sheetData.data.techniques["mastery_ability"] = out["mastery_ability"].length === 0;
sheetData.data.data.techniques["school_ability"] = out["school_ability"].length === 0;
sheetData.data.data.techniques["mastery_ability"] = out["mastery_ability"].length === 0;
// Always display "school_ability", but display "mastery_ability" only if rank >= 5
if (sheetData.data.identity?.school_rank < 5 && out["mastery_ability"].length === 0) {
// Always display "school_ability", but display a empty "mastery_ability" field only if rank >= 5
if (sheetData.data.data.identity?.school_rank < 5 && out["mastery_ability"].length === 0) {
delete out["mastery_ability"];
}
return out;
}
@@ -121,7 +136,7 @@ export class BaseSheetL5r5e extends ActorSheet {
* @override
*/
activateEditor(name, options = {}, initialContent = "") {
if (name === "data.notes.value" && initialContent) {
if (["data.notes", "data.description"].includes(name) && initialContent) {
initialContent = game.l5r5e.HelpersL5r5e.convertSymbols(initialContent, false);
}
super.activateEditor(name, options, initialContent);
@@ -135,15 +150,18 @@ export class BaseSheetL5r5e extends ActorSheet {
* @override
*/
async _updateObject(event, formData) {
if (formData["data.notes.value"]) {
formData["data.notes.value"] = game.l5r5e.HelpersL5r5e.convertSymbols(formData["data.notes.value"], true);
if (formData["data.notes"]) {
formData["data.notes"] = game.l5r5e.HelpersL5r5e.convertSymbols(formData["data.notes"], true);
}
if (formData["data.description"]) {
formData["data.description"] = game.l5r5e.HelpersL5r5e.convertSymbols(formData["data.description"], true);
}
return super._updateObject(event, formData);
}
/**
* Handle dropped data on the Actor sheet
* @param {Event} event
* @param {DragEvent} event
*/
async _onDrop(event) {
// *** Everything below here is only needed if the sheet is editable ***
@@ -152,41 +170,80 @@ export class BaseSheetL5r5e extends ActorSheet {
}
// Check item type and subtype
const item = await game.l5r5e.HelpersL5r5e.getDragnDropTargetObject(event);
if (
!item ||
item.entity !== "Item" ||
!["item", "armor", "weapon", "technique", "peculiarity", "advancement"].includes(item.data.type)
) {
let item = await game.l5r5e.HelpersL5r5e.getDragnDropTargetObject(event);
if (!item || item.documentName !== "Item" || item.data.type === "property") {
return;
}
// Dropped a item with same "id" as one owned, add qte instead
if (item.data.data.quantity && this.actor.data.items) {
const tmpItem = this.actor.data.items.find((e) => e.name === item.name && e.type === item.type);
if (tmpItem && this._modifyQuantity(tmpItem._id, 1)) {
// Dropped a item with same "id" as one owned
if (this.actor.data.items) {
// Exit if we already owned exactly this id (drag a personal item on our own sheet)
if (
this.actor.data.items.some((embedItem) => {
// Search in children
if (embedItem.items?.has(item.data._id)) {
return true;
}
return embedItem.data._id === item.data._id;
})
) {
return;
}
// Add quantity instead if they have (id is different so use type and name)
if (item.data.data.quantity) {
const tmpItem = this.actor.data.items.find(
(embedItem) => embedItem.name === item.data.name && embedItem.type === item.data.type
);
if (tmpItem && this._modifyQuantity(tmpItem.id, 1)) {
return;
}
}
}
// Item subtype specific
switch (item.data.type) {
case "advancement": // no break
case "peculiarity":
case "bond": // no break
case "peculiarity": // no break
case "item_pattern": // no break
case "signature_scroll":
// Modify the bought at rank to the current actor rank
if (this.actor.data.data.identity?.school_rank) {
item.data.data.bought_at_rank = this.actor.data.data.identity.school_rank;
}
break;
case "advancement":
// Modify the bought at rank to the current actor rank
if (this.actor.data.data.identity?.school_rank) {
item.data.data.bought_at_rank = this.actor.data.data.identity.school_rank;
}
// Specific advancements, remove 1 to selected ring/skill
await this.actor.addBonus(item);
break;
case "title":
// Generate new Ids for the embed items
await item.generateNewIdsForAllEmbedItems();
// Add embed advancements bonus
for (let [embedId, embedItem] of item.data.data.items) {
if (embedItem.data.type === "advancement") {
await this.actor.addBonus(embedItem);
}
}
break;
case "technique":
// School_ability and mastery_ability, allow only 1 per type
if (CONFIG.l5r5e.techniques_school.includes(item.data.data.technique_type)) {
if (CONFIG.l5r5e.techniques.get(item.data.data.technique_type)?.type === "school") {
if (
Array.from(this.actor.items).some(
(e) =>
Array.from(this.actor.items).some((e) => {
return (
e.type === "technique" && e.data.data.technique_type === item.data.data.technique_type
)
);
})
) {
ui.notifications.info(game.i18n.localize("l5r5e.techniques.only_one"));
return;
@@ -221,24 +278,19 @@ export class BaseSheetL5r5e extends ActorSheet {
if (allowed === false) {
return;
}
return this._onDropItem(event, item);
return this._onDropItemCreate(item.data.toJSON());
}
/**
* Subscribe to events from the sheet.
* @param html HTML content of the sheet.
* @param {jQuery} html HTML content of the sheet.
*/
activateListeners(html) {
super.activateListeners(html);
// Toggle
html.find(".toggle-on-click").on("click", (event) => {
event.preventDefault();
event.stopPropagation();
const elmt = $(event.currentTarget).data("toggle");
const tgt = html.find("." + elmt);
tgt.toggleClass("toggle-active");
});
// Commons
game.l5r5e.HelpersL5r5e.commonListeners(html);
// *** Everything below here is only needed if the sheet is editable ***
if (!this.options.editable) {
@@ -287,6 +339,9 @@ export class BaseSheetL5r5e extends ActorSheet {
html.find(".item-add").on("click", this._addSubItem.bind(this));
html.find(`.item-edit`).on("click", this._editSubItem.bind(this));
html.find(`.item-delete`).on("click", this._deleteSubItem.bind(this));
// Others Advancements
html.find(".item-advancement-choose").on("click", this._showDialogAddSubItem.bind(this));
}
/**
@@ -303,6 +358,74 @@ export class BaseSheetL5r5e extends ActorSheet {
this.render(false);
}
/**
* Add a generic item with sub type
* @param {string} type Item sub type (armor, weapon, bond...)
* @param {boolean} isEquipped For item with prop "Equipped" set the value
* @param {string|null} techniqueType Technique subtype (kata, shuji...)
* @return {Promise<void>}
* @private
*/
async _createSubItem({ type, isEquipped = false, techniqueType = null }) {
if (!type) {
return;
}
const created = await this.actor.createEmbeddedDocuments("Item", [
{
name: game.i18n.localize(`ITEM.Type${type.capitalize()}`),
type: type,
img: `${CONFIG.l5r5e.paths.assets}icons/items/${type}.svg`,
},
]);
if (created?.length < 1) {
return;
}
const item = this.actor.items.get(created[0].id);
// Assign current school rank to the new adv/tech
if (this.actor.data.data.identity?.school_rank) {
item.data.data.bought_at_rank = this.actor.data.data.identity.school_rank;
if (["advancement", "technique"].includes(item.data.type)) {
item.data.data.rank = this.actor.data.data.identity.school_rank;
}
}
switch (item.data.type) {
case "item": // no break
case "armor": // no break
case "weapon":
item.data.data.equipped = isEquipped;
break;
case "technique": {
// If technique, select the current sub-type
if (CONFIG.l5r5e.techniques.get(techniqueType)) {
item.data.name = game.i18n.localize(`l5r5e.techniques.${techniqueType}`);
item.data.img = `${CONFIG.l5r5e.paths.assets}icons/techs/${techniqueType}.svg`;
item.data.data.technique_type = techniqueType;
}
break;
}
}
item.sheet.render(true);
}
/**
* Display a dialog to choose what Item to add
* @param {Event} event
* @return {Promise<void>}
* @private
*/
async _showDialogAddSubItem(event) {
game.l5r5e.HelpersL5r5e.showSubItemDialog(["bond", "title", "signature_scroll", "item_pattern"]).then(
(selectedType) => {
this._createSubItem({ type: selectedType });
}
);
}
/**
* Add a generic item with sub type
* @param {Event} event
@@ -313,47 +436,14 @@ export class BaseSheetL5r5e extends ActorSheet {
event.stopPropagation();
const type = $(event.currentTarget).data("item-type");
const titles = {
item: "l5r5e.items.title_new",
armor: "l5r5e.armors.title_new",
weapon: "l5r5e.weapons.title_new",
technique: "l5r5e.techniques.title_new",
peculiarity: "l5r5e.peculiarities.title_new",
advancement: "l5r5e.advancements.title_new",
};
const created = await this.actor.createEmbeddedEntity("OwnedItem", {
name: game.i18n.localize(titles[type]),
type: type,
img: `${CONFIG.l5r5e.paths.assets}icons/items/${type}.svg`,
});
const item = this.actor.getOwnedItem(created._id);
// assign current school rank to the new adv/tech
if (this.actor.data.data.identity?.school_rank && ["advancement", "technique"].includes(item.data.type)) {
item.data.data.rank = this.actor.data.data.identity.school_rank;
item.data.data.bought_at_rank = this.actor.data.data.identity.school_rank;
if (!type) {
return;
}
switch (item.data.type) {
case "armor": // no break
case "weapon":
if ($(event.currentTarget).data("item-eqquiped")) {
item.data.data.equipped = true;
}
break;
const isEquipped = $(event.currentTarget).data("item-equipped") || false;
const techniqueType = $(event.currentTarget).data("tech-type") || null;
case "technique": {
// If technique, select the current type
const techType = $(event.currentTarget).data("tech-type");
if ([...CONFIG.l5r5e.techniques, ...CONFIG.l5r5e.techniques_school].includes(techType)) {
item.data.data.technique_type = techType;
item.data.img = `${CONFIG.l5r5e.paths.assets}/icons/techs/${techType}.svg`;
}
break;
}
}
item.sheet.render(true);
return this._createSubItem({ type, isEquipped, techniqueType });
}
/**
@@ -365,8 +455,28 @@ export class BaseSheetL5r5e extends ActorSheet {
event.preventDefault();
event.stopPropagation();
let item;
const itemId = $(event.currentTarget).data("item-id");
const item = this.actor.getOwnedItem(itemId);
if (!itemId) {
return;
}
const itemParentId = $(event.currentTarget).data("item-parent-id");
if (itemParentId) {
// Embed Item
const parentItem = this.actor.items.get(itemParentId);
if (!parentItem) {
return;
}
item = parentItem.items.get(itemId);
} else {
// Regular item
item = this.actor.items.get(itemId);
}
if (!item) {
return;
}
item.sheet.render(true);
}
@@ -380,39 +490,37 @@ export class BaseSheetL5r5e extends ActorSheet {
event.stopPropagation();
const itemId = $(event.currentTarget).data("item-id");
if (!itemId) {
return;
}
const tmpItem = this.actor.items.get(itemId);
if (!tmpItem) {
return;
}
// Remove 1 qty if possible
const tmpItem = this.actor.getOwnedItem(itemId);
if (tmpItem && tmpItem.data.data.quantity > 1 && this._modifyQuantity(tmpItem._id, -1)) {
if (tmpItem.data.data.quantity > 1 && this._modifyQuantity(tmpItem.id, -1)) {
return;
}
const callback = async () => {
// Specific advancements, remove 1 to selected ring/skill
if (tmpItem.type === "advancement") {
const actor = duplicate(this.actor.data.data);
const itmData = tmpItem.data.data;
if (itmData.advancement_type === "ring") {
// Ring
actor.rings[itmData.ring] = Math.max(1, actor.rings[itmData.ring] - 1);
} else {
// Skill
const skillCatId = CONFIG.l5r5e.skills.get(itmData.skill);
if (skillCatId) {
actor.skills[skillCatId][itmData.skill] = Math.max(
0,
actor.skills[skillCatId][itmData.skill] - 1
);
switch (tmpItem.type) {
case "advancement":
// Remove advancements bonus (1 to selected ring/skill)
await this.actor.removeBonus(tmpItem);
break;
case "title":
// Remove embed advancements bonus
for (let [embedId, embedItem] of tmpItem.data.data.items) {
if (embedItem.data.type === "advancement") {
await this.actor.removeBonus(embedItem);
}
}
}
// Update Actor
this.actor.update({
data: diffObject(this.actor.data.data, actor),
});
break;
}
return this.actor.deleteOwnedItem(itemId);
return this.actor.deleteEmbeddedDocuments("Item", [itemId]);
};
// Holing Ctrl = without confirm
@@ -433,7 +541,7 @@ export class BaseSheetL5r5e extends ActorSheet {
*/
_switchSubItemCurriculum(event) {
const itemId = $(event.currentTarget).data("item-id");
const item = this.actor.getOwnedItem(itemId);
const item = this.actor.items.get(itemId);
if (item.type !== "item") {
item.update({
data: {
@@ -448,7 +556,7 @@ export class BaseSheetL5r5e extends ActorSheet {
* @private
*/
_modifyQuantity(itemId, add) {
const tmpItem = this.actor.getOwnedItem(itemId);
const tmpItem = this.actor.items.get(itemId);
if (tmpItem) {
tmpItem.data.data.quantity = Math.max(1, tmpItem.data.data.quantity + add);
tmpItem.update({
@@ -476,7 +584,7 @@ export class BaseSheetL5r5e extends ActorSheet {
}
const itemId = $(event.currentTarget).data("item-id");
const tmpItem = this.actor.getOwnedItem(itemId);
const tmpItem = this.actor.items.get(itemId);
if (!tmpItem || tmpItem.data.data[type] === undefined) {
return;
}
@@ -498,7 +606,7 @@ export class BaseSheetL5r5e extends ActorSheet {
* @private
*/
_getWeaponSkillId(weaponId) {
const item = this.actor.getOwnedItem(weaponId);
const item = this.actor.items.get(weaponId);
if (!!item && item.type === "weapon") {
return item.data.data.skill;
}

View File

@@ -6,7 +6,7 @@ import { TwentyQuestionsDialog } from "./twenty-questions-dialog.js";
*/
export class CharacterSheetL5r5e extends BaseSheetL5r5e {
static get defaultOptions() {
return mergeObject(super.defaultOptions, {
return foundry.utils.mergeObject(super.defaultOptions, {
classes: ["l5r5e", "sheet", "actor"],
template: CONFIG.l5r5e.paths.templates + "actors/character-sheet.html",
tabs: [
@@ -47,18 +47,25 @@ export class CharacterSheetL5r5e extends BaseSheetL5r5e {
this.actor.data.data.identity.school_rank = Math.max(1, this.actor.data.data.identity.school_rank);
// Split Money
sheetData.data.money = this._zeniToMoney(this.actor.data.data.zeni);
sheetData.data.data.money = this._zeniToMoney(this.actor.data.data.zeni);
// split advancements list by rank, and calculate xp spent
this._prepareAdvancement(sheetData);
sheetData.data.xp_saved = Math.floor(parseInt(sheetData.data.xp_total) - parseInt(sheetData.data.xp_spent));
// Split school advancements by rank, and calculate xp spent and add it to total
this._prepareSchoolAdvancement(sheetData);
// Split Others advancements, and calculate xp spent and add it to total
this._prepareOthersAdvancement(sheetData);
// Total
sheetData.data.data.xp_saved = Math.floor(
parseInt(sheetData.data.data.xp_total) - parseInt(sheetData.data.data.xp_spent)
);
return sheetData;
}
/**
* Subscribe to events from the sheet.
* @param html HTML content of the sheet.
* @param {jQuery} html HTML content of the sheet.
*/
activateListeners(html) {
super.activateListeners(html);
@@ -96,37 +103,56 @@ export class CharacterSheetL5r5e extends BaseSheetL5r5e {
}
/**
* Return the total xp spent and the current total xp spent for this rank
* Split the school advancement, calculate the total xp spent and the current total xp spent by rank
*/
_prepareAdvancement(sheetData) {
_prepareSchoolAdvancement(sheetData) {
const adv = [];
sheetData.data.xp_spent = 0;
sheetData.items.forEach((item) => {
if (!["peculiarity", "technique", "advancement"].includes(item.type)) {
return;
}
sheetData.data.data.xp_spent = 0;
sheetData.items
.filter((item) => ["peculiarity", "technique", "advancement"].includes(item.type))
.forEach((item) => {
const { xp_used_total, xp_used } = game.l5r5e.HelpersL5r5e.getItemsXpCost(item);
sheetData.data.data.xp_spent += xp_used_total;
let xp = parseInt(item.data.xp_used) || 0;
sheetData.data.xp_spent = parseInt(sheetData.data.xp_spent) + xp;
const rank = Math.max(0, item.data.bought_at_rank);
if (!adv[rank]) {
adv[rank] = {
rank: rank,
spent: {
total: 0,
curriculum: 0,
},
goal: CONFIG.l5r5e.xp.costPerRank[rank] || null,
list: [],
};
}
adv[rank].list.push(item);
adv[rank].spent.total += xp_used_total;
adv[rank].spent.curriculum += xp_used;
});
sheetData.data.advancementsListByRank = adv;
}
// if not in curriculum, xp spent /2 for this item
if (!item.data.in_curriculum && xp > 0) {
xp = Math.ceil(xp / 2);
}
/**
* Prepare Bonds, Item Pattern, Signature Scroll and get xp spend
*/
_prepareOthersAdvancement(sheetData) {
// Split OthersAdvancement from items
sheetData.data.advancementsOthers = sheetData.items.filter((item) =>
["bond", "item_pattern", "title", "signature_scroll"].includes(item.type)
);
const rank = Math.max(0, item.data.bought_at_rank);
if (!adv[rank]) {
adv[rank] = {
rank: rank,
spent: 0,
goal: CONFIG.l5r5e.xp.costPerRank[rank] || null,
list: [],
};
}
adv[rank].list.push(item);
adv[rank].spent = adv[rank].spent + xp;
});
sheetData.advancementsListByRank = adv;
// Sort by rank desc
sheetData.data.advancementsOthers.sort((a, b) => (b.data.rank || 0) - (a.data.rank || 0));
// Total xp spent in curriculum & total
sheetData.data.advancementsOthersTotalXp = sheetData.data.advancementsOthers.reduce(
(acc, item) => acc + parseInt(item.data.xp_used_total || item.data.xp_used || 0),
0
);
// Update the total spent
sheetData.data.data.xp_spent += sheetData.data.advancementsOthersTotalXp;
}
/**
@@ -150,6 +176,12 @@ export class CharacterSheetL5r5e extends BaseSheetL5r5e {
return super._updateObject(event, formData);
}
/**
* Convert a sum in Zeni to Zeni, Bu and Koku
* @param {number} zeni
* @return {{bu: number, koku: number, zeni: number}}
* @private
*/
_zeniToMoney(zeni) {
const money = {
koku: 0,
@@ -169,6 +201,14 @@ export class CharacterSheetL5r5e extends BaseSheetL5r5e {
return money;
}
/**
* Convert a sum in Zeni, Bu and Koku to Zeni
* @param {number} koku
* @param {number} bu
* @param {number} zeni
* @return {number}
* @private
*/
_moneyToZeni(koku, bu, zeni) {
return Math.floor(koku * CONFIG.l5r5e.money[0]) + Math.floor(bu * CONFIG.l5r5e.money[1]) + Math.floor(zeni);
}

View File

@@ -10,16 +10,18 @@ export class NpcSheetL5r5e extends BaseSheetL5r5e {
static types = ["adversary", "minion"];
static get defaultOptions() {
return mergeObject(super.defaultOptions, {
return foundry.utils.mergeObject(super.defaultOptions, {
classes: ["l5r5e", "sheet", "npc"],
template: CONFIG.l5r5e.paths.templates + "actors/npc-sheet.html",
});
}
getData() {
/** @inheritdoc */
getData(options = {}) {
const sheetData = super.getData();
sheetData.data.types = NpcSheetL5r5e.types.map((e) => ({
// NPC Subtypes
sheetData.data.data.types = NpcSheetL5r5e.types.map((e) => ({
id: e,
label: game.i18n.localize("l5r5e.character_types." + e),
}));

View File

@@ -32,7 +32,7 @@ export class TwentyQuestionsDialog extends FormApplication {
* @override
*/
static get defaultOptions() {
return mergeObject(super.defaultOptions, {
return foundry.utils.mergeObject(super.defaultOptions, {
id: "l5r5e-twenty-questions-dialog",
classes: ["l5r5e", "twenty-questions-dialog"],
template: CONFIG.l5r5e.paths.templates + "actors/twenty-questions-dialog.html",
@@ -51,7 +51,7 @@ export class TwentyQuestionsDialog extends FormApplication {
* Define a unique and dynamic element ID for the rendered ActorSheet application
*/
get id() {
return `l5r5e-twenty-questions-dialog-${this.actor._id}`;
return `l5r5e-twenty-questions-dialog-${this.actor.id}`;
}
/**
@@ -69,7 +69,7 @@ export class TwentyQuestionsDialog extends FormApplication {
if (!this.actor) {
return;
}
this._initialize(game.actors.get(this.actor._id));
this._initialize(game.actors.get(this.actor.id));
await this._constructCache();
this.render(false);
}
@@ -142,7 +142,7 @@ export class TwentyQuestionsDialog extends FormApplication {
skillsListStep7,
skillsListStep17,
noHonorSkillsList: ["commerce", "skulduggery", "medicine", "seafaring", "survival", "labor"],
techniquesList: CONFIG.l5r5e.techniques,
techniquesList: game.l5r5e.HelpersL5r5e.getTechniquesList({ displayInTypes: true }),
data: this.object.data,
cache: this.cache,
summary: {
@@ -154,19 +154,14 @@ export class TwentyQuestionsDialog extends FormApplication {
/**
* Listen to html elements
* @param {jQuery} html HTML content of the sheet.
* @override
*/
activateListeners(html) {
super.activateListeners(html);
// Toggle
html.find(".toggle-on-click").on("click", (event) => {
event.preventDefault();
event.stopPropagation();
const elmt = $(event.currentTarget).data("toggle");
const tgt = html.find("." + elmt);
tgt.toggleClass("toggle-active");
});
// Commons
game.l5r5e.HelpersL5r5e.commonListeners(html);
// BT Next
html.find(".next").on("click", (event) => {
@@ -234,7 +229,7 @@ export class TwentyQuestionsDialog extends FormApplication {
try {
// Get item
const item = await game.l5r5e.HelpersL5r5e.getDragnDropTargetObject(event);
if (item.entity !== "Item" || !item) {
if (item.documentName !== "Item" || !item) {
console.warn("forbidden item for this drop zone", type, item.data.type);
return;
}
@@ -336,7 +331,7 @@ export class TwentyQuestionsDialog extends FormApplication {
if (this.object.data.step13.advantage.length > 0) {
formData["step13.skill"] = "none";
setProperty(this.object.data, "step13.disadvantage", []);
foundry.utils.setProperty(this.object.data, "step13.disadvantage", []);
}
// Update 20Q object data
@@ -366,14 +361,14 @@ export class TwentyQuestionsDialog extends FormApplication {
this.cache = {};
for (const stepName of TwentyQuestions.itemsList) {
// Check if current step value is a array
let step = getProperty(this.object.data, stepName);
let step = foundry.utils.getProperty(this.object.data, stepName);
if (!step || !Array.isArray(step)) {
step = [];
}
// Init cache if not exist
if (!hasProperty(this.cache, stepName)) {
setProperty(this.cache, stepName, []);
if (!foundry.utils.hasProperty(this.cache, stepName)) {
foundry.utils.setProperty(this.cache, stepName, []);
}
// Get linked Item, and store it in cache (delete null value and old items)
@@ -382,14 +377,14 @@ export class TwentyQuestionsDialog extends FormApplication {
if (!id) {
continue;
}
const item = await game.l5r5e.HelpersL5r5e.getObjectGameOrPack(id, "Item");
const item = await game.l5r5e.HelpersL5r5e.getObjectGameOrPack({ id: id, type: "Item" });
if (!item) {
continue;
}
newStep.push(id);
getProperty(this.cache, stepName).push(item);
foundry.utils.getProperty(this.cache, stepName).push(item);
}
setProperty(this.object.data, stepName, newStep);
foundry.utils.setProperty(this.object.data, stepName, newStep);
}
}
@@ -402,7 +397,7 @@ export class TwentyQuestionsDialog extends FormApplication {
roll.actor = this._actor;
await roll.roll();
setProperty(this.object.data, stepName, roll.result);
foundry.utils.setProperty(this.object.data, stepName, roll.result);
return roll.toMessage({ flavor: flavor });
}
@@ -412,7 +407,7 @@ export class TwentyQuestionsDialog extends FormApplication {
*/
_addOwnedItem(item, stepName) {
// Add to Step (uniq id only)
let step = getProperty(this.object.data, stepName);
let step = foundry.utils.getProperty(this.object.data, stepName);
if (!step) {
step = [];
}
@@ -422,7 +417,7 @@ export class TwentyQuestionsDialog extends FormApplication {
step.push(item.id);
// Add to cache
getProperty(this.cache, stepName).push(item);
foundry.utils.getProperty(this.cache, stepName).push(item);
}
/**
@@ -431,14 +426,14 @@ export class TwentyQuestionsDialog extends FormApplication {
*/
_deleteOwnedItem(stepName, itemId) {
// Delete from current step
let step = getProperty(this.object.data, stepName);
let step = foundry.utils.getProperty(this.object.data, stepName);
step = step.filter((e) => !!e && e !== itemId);
setProperty(this.object.data, stepName, step);
foundry.utils.setProperty(this.object.data, stepName, step);
// Delete from cache
let cache = getProperty(this.cache, stepName);
let cache = foundry.utils.getProperty(this.cache, stepName);
cache = cache.filter((e) => !!e && e.id !== itemId);
setProperty(this.cache, stepName, cache);
foundry.utils.setProperty(this.cache, stepName, cache);
}
/**
@@ -446,7 +441,7 @@ export class TwentyQuestionsDialog extends FormApplication {
* @private
*/
_getSkillZero(skillsList, skillsPoints, stepName) {
const stepSkillId = getProperty(this.object.data, stepName);
const stepSkillId = foundry.utils.getProperty(this.object.data, stepName);
const out = {};
Object.entries(skillsList).forEach(([cat, val]) => {
out[cat] = val.filter(

View File

@@ -82,6 +82,7 @@ export class TwentyQuestions {
shuji: false,
maho: false,
ninjutsu: false,
specificity: true,
},
techniques: [],
school_ability: [],
@@ -175,7 +176,7 @@ export class TwentyQuestions {
* Update object with form data
*/
updateFromForm(formData) {
this.data = mergeObject(this.data, expandObject(formData));
this.data = foundry.utils.mergeObject(this.data, foundry.utils.expandObject(formData));
}
/**
@@ -266,7 +267,7 @@ export class TwentyQuestions {
// Rings - Reset to 1, and apply modifiers
CONFIG.l5r5e.stances.forEach((ring) => (actorDatas.rings[ring] = 1));
TwentyQuestions.ringList.forEach((formName) => {
const ring = getProperty(this.data, formName);
const ring = foundry.utils.getProperty(this.data, formName);
if (ring !== "none") {
actorDatas.rings[ring] = actorDatas.rings[ring] + 1;
}
@@ -277,7 +278,7 @@ export class TwentyQuestions {
actorDatas.skills[skillCat][skillId] = 0;
});
TwentyQuestions.skillList.forEach((formName) => {
const skillId = getProperty(this.data, formName);
const skillId = foundry.utils.getProperty(this.data, formName);
const skillCat = CONFIG.l5r5e.skills.get(skillId);
if (skillId !== "none") {
actorDatas.skills[skillCat][skillId] = actorDatas.skills[skillCat][skillId] + 1;
@@ -285,21 +286,27 @@ export class TwentyQuestions {
});
// Clear and add items to actor
const deleteIds = actor.data.items.map((e) => e._id);
await actor.deleteEmbeddedEntity("OwnedItem", deleteIds);
const deleteIds = actor.data.items.map((e) => e.id);
if (deleteIds.length > 0) {
await actor.deleteEmbeddedDocuments("Item", deleteIds);
}
// Add items in 20Q to actor
for (const types of Object.values(itemsCache)) {
for (const item of types) {
const itemData = duplicate(item.data);
const newItemsData = [];
Object.values(itemsCache).forEach((types) => {
types.forEach((item) => {
const itemData = foundry.utils.duplicate(item.data);
if (itemData.data?.bought_at_rank) {
itemData.data.bought_at_rank = 0;
}
if (itemData.data?.xp_spent) {
itemData.data.xp_spent = 0;
}
await actor.createEmbeddedEntity("OwnedItem", itemData);
}
newItemsData.push(itemData);
});
});
if (newItemsData.length > 0) {
await actor.createEmbeddedDocuments("Item", newItemsData);
}
// Update actor
@@ -376,7 +383,7 @@ export class TwentyQuestions {
summariesRingsOrSkills(listName) {
const store = {};
TwentyQuestions[listName].forEach((formName) => {
const id = getProperty(this.data, formName);
const id = foundry.utils.getProperty(this.data, formName);
if (!id || id === "none") {
return;
}

View File

@@ -24,25 +24,25 @@ export class CombatL5r5e extends Combat {
// Get global modifiers
const cfg = {
difficulty: game.settings.get("l5r5e", "initiative.difficulty.value"),
difficultyHidden: game.settings.get("l5r5e", "initiative.difficulty.hidden"),
difficulty: game.settings.get("l5r5e", "initiative-difficulty-value"),
difficultyHidden: game.settings.get("l5r5e", "initiative-difficulty-hidden"),
prepared: {
character: game.settings.get("l5r5e", "initiative.prepared.character"),
adversary: game.settings.get("l5r5e", "initiative.prepared.adversary"),
minion: game.settings.get("l5r5e", "initiative.prepared.minion"),
character: game.settings.get("l5r5e", "initiative-prepared-character"),
adversary: game.settings.get("l5r5e", "initiative-prepared-adversary"),
minion: game.settings.get("l5r5e", "initiative-prepared-minion"),
},
};
// SkillId from DicePicker or global
const skillId = messageOptions.skillId
? messageOptions.skillId
: CONFIG.l5r5e.initiativeSkills[game.settings.get("l5r5e", "initiative.encounter")];
: CONFIG.l5r5e.initiativeSkills[game.settings.get("l5r5e", "initiative-encounter")];
const skillCat = CONFIG.l5r5e.skills.get(skillId);
// Get score for each combatant
const updatedCombatants = [];
for (const combatantId of ids) {
const combatant = game.combat.combatants.find((c) => c._id === combatantId);
const combatant = game.combat.combatants.find((c) => c.id === combatantId);
// Skip if combatant already have a initiative value
if (!messageOptions.rerollInitiative && (!combatant || !combatant.actor)) {
@@ -112,7 +112,7 @@ export class CombatL5r5e extends Combat {
// Ugly but work... i need the new message
if (ids.length === 1) {
combatant.actor.rnkMessage = rnkMessage;
messageOptions.rnkMessage = rnkMessage;
}
// if the character succeeded on their Initiative check, they add 1 to their base initiative value,
@@ -124,13 +124,13 @@ export class CombatL5r5e extends Combat {
}
updatedCombatants.push({
_id: combatant._id,
_id: combatant.id,
initiative: initiative,
});
}
// Update all combatants at once
await this.updateEmbeddedEntity("Combatant", updatedCombatants);
await this.updateEmbeddedDocuments("Combatant", updatedCombatants);
return this;
}

View File

@@ -7,11 +7,29 @@ L5R5E.paths = {
L5R5E.money = [50, 10];
L5R5E.stances = ["earth", "air", "water", "fire", "void"];
L5R5E.techniques = ["kata", "kiho", "inversion", "invocation", "ritual", "shuji", "maho", "ninjutsu"];
L5R5E.techniques_school = ["school_ability", "mastery_ability"];
// *** Techniques ***
L5R5E.techniques = new Map();
// Core
L5R5E.techniques.set("kata", { type: "core", displayInTypes: true });
L5R5E.techniques.set("kiho", { type: "core", displayInTypes: true });
L5R5E.techniques.set("inversion", { type: "core", displayInTypes: true });
L5R5E.techniques.set("invocation", { type: "core", displayInTypes: true });
L5R5E.techniques.set("ritual", { type: "core", displayInTypes: true });
L5R5E.techniques.set("shuji", { type: "core", displayInTypes: true });
L5R5E.techniques.set("maho", { type: "core", displayInTypes: true });
L5R5E.techniques.set("ninjutsu", { type: "core", displayInTypes: true });
// School
L5R5E.techniques.set("school_ability", { type: "school", displayInTypes: false });
L5R5E.techniques.set("mastery_ability", { type: "school", displayInTypes: false });
// Title
L5R5E.techniques.set("title_ability", { type: "title", displayInTypes: false });
// Custom
L5R5E.techniques.set("specificity", { type: "custom", displayInTypes: false });
L5R5E.xp = {
costPerRank: [0, 20, 24, 32, 44, 60],
bondCostPerRank: [0, 3, 4, 6, 8, 10],
ringCostMultiplier: 3,
skillCostMultiplier: 2,
techniqueCost: 3,
@@ -72,7 +90,8 @@ L5R5E.symbols.set("(void)", { class: "i_void", label: "l5r5e.rings.void" });
L5R5E.symbols.set("(kiho)", { class: "i_kiho", label: "l5r5e.techniques.kiho" });
L5R5E.symbols.set("(maho)", { class: "i_maho", label: "l5r5e.techniques.maho" });
L5R5E.symbols.set("(ninjitsu)", { class: "i_ninjitsu", label: "l5r5e.techniques.ninjutsu" });
L5R5E.symbols.set("(ninjutsu)", { class: "i_ninjitsu", label: "l5r5e.techniques.ninjutsu" });
L5R5E.symbols.set("(ninjitsu)", { class: "i_ninjitsu", label: "l5r5e.techniques.ninjutsu" }); // for compatibility
L5R5E.symbols.set("(ritual)", { class: "i_rituals", label: "l5r5e.techniques.ritual" });
L5R5E.symbols.set("(shuji)", { class: "i_shuji", label: "l5r5e.techniques.shuji" });
L5R5E.symbols.set("(inversion)", { class: "i_inversion", label: "l5r5e.techniques.inversion" });

View File

@@ -15,10 +15,10 @@ export class GmToolsDialog extends FormApplication {
static get defaultOptions() {
const x = $(window).width();
const y = $(window).height();
return mergeObject(super.defaultOptions, {
return foundry.utils.mergeObject(super.defaultOptions, {
id: "l5r5e-gm-tools-dialog",
classes: ["l5r5e", "gm-tools-dialog"],
template: CONFIG.l5r5e.paths.templates + "dice/gm-tools-dialog.html",
template: CONFIG.l5r5e.paths.templates + "dialogs/gm-tools-dialog.html",
title: game.i18n.localize("l5r5e.gm_toolbox.title"),
left: x - 512,
top: y - 98,
@@ -54,8 +54,8 @@ export class GmToolsDialog extends FormApplication {
*/
_initialize() {
this.object = {
difficulty: game.settings.get("l5r5e", "initiative.difficulty.value"),
difficultyHidden: game.settings.get("l5r5e", "initiative.difficulty.hidden"),
difficulty: game.settings.get("l5r5e", "initiative-difficulty-value"),
difficultyHidden: game.settings.get("l5r5e", "initiative-difficulty-hidden"),
};
}
@@ -63,9 +63,9 @@ export class GmToolsDialog extends FormApplication {
* Do not close this dialog
* @override
*/
close() {
async close(options = {}) {
// TODO better implementation needed : see KeyboardManager._onEscape(event, up, modifiers)
// This windows is always open, so esc key si stuck at step 2 : Object.keys(ui.windows).length > 0
// This windows is always open, so esc key is stuck at step 2 : Object.keys(ui.windows).length > 0
// Case 3 (GM) - release controlled objects
if (canvas?.ready && game.user.isGM && Object.keys(canvas.activeLayer._controlled).length) {
canvas.activeLayer.releaseAll();
@@ -111,6 +111,7 @@ export class GmToolsDialog extends FormApplication {
/**
* Listen to html elements
* @param {jQuery} html HTML content of the sheet.
* @override
*/
activateListeners(html) {
@@ -126,7 +127,7 @@ export class GmToolsDialog extends FormApplication {
event.stopPropagation();
this.object.difficultyHidden = !this.object.difficultyHidden;
game.settings
.set("l5r5e", "initiative.difficulty.hidden", this.object.difficultyHidden)
.set("l5r5e", "initiative-difficulty-hidden", this.object.difficultyHidden)
.then(() => this.submit());
});
@@ -148,7 +149,7 @@ export class GmToolsDialog extends FormApplication {
this.object.difficulty = Math.max(0, this.object.difficulty - 1);
break;
}
game.settings.set("l5r5e", "initiative.difficulty.value", this.object.difficulty).then(() => this.submit());
game.settings.set("l5r5e", "initiative-difficulty-value", this.object.difficulty).then(() => this.submit());
});
// Scene End & Sleep
@@ -180,7 +181,7 @@ export class GmToolsDialog extends FormApplication {
return;
}
game.actors.entities.forEach((actor) => {
game.actors.contents.forEach((actor) => {
switch (type) {
case "sleep":
// Remove 'water x2' fatigue points

View File

@@ -46,7 +46,7 @@ export class DicePickerDialog extends FormApplication {
* @override
*/
static get defaultOptions() {
return mergeObject(super.defaultOptions, {
return foundry.utils.mergeObject(super.defaultOptions, {
id: "l5r5e-dice-picker-dialog",
classes: ["l5r5e", "dice-picker-dialog"],
template: CONFIG.l5r5e.paths.templates + "dice/dice-picker-dialog.html",
@@ -131,7 +131,7 @@ export class DicePickerDialog extends FormApplication {
if (options.difficulty) {
this.difficulty = options.difficulty;
} else {
this.difficulty = game.settings.get("l5r5e", "initiative.difficulty.value");
this.difficulty = game.settings.get("l5r5e", "initiative-difficulty-value");
}
// DifficultyHidden
@@ -145,7 +145,7 @@ export class DicePickerDialog extends FormApplication {
* Refresh data (used from socket)
*/
async refresh() {
this.difficulty = game.settings.get("l5r5e", "initiative.difficulty.value");
this.difficulty = game.settings.get("l5r5e", "initiative-difficulty-value");
this.difficultyHidden = false;
this.render(false);
}
@@ -155,7 +155,7 @@ export class DicePickerDialog extends FormApplication {
* @param actor
*/
set actor(actor) {
if (!actor || !(actor instanceof Actor) || !actor.owner) {
if (!actor || !(actor instanceof Actor) || !actor.isOwner) {
return;
}
this._actor = actor;
@@ -244,7 +244,7 @@ export class DicePickerDialog extends FormApplication {
*/
set difficultyHidden(isHidden) {
// If GM hide, then player choice don't matter
this._difficultyHiddenIsLock = game.settings.get("l5r5e", "initiative.difficulty.hidden");
this._difficultyHiddenIsLock = game.settings.get("l5r5e", "initiative-difficulty-hidden");
if (this._difficultyHiddenIsLock) {
isHidden = true;
}
@@ -300,6 +300,7 @@ export class DicePickerDialog extends FormApplication {
/**
* Listen to html elements
* @param {jQuery} html HTML content of the sheet.
* @override
*/
activateListeners(html) {
@@ -390,7 +391,11 @@ export class DicePickerDialog extends FormApplication {
// If initiative roll, check if player already have
if (this.object.isInitiativeRoll) {
const combatant = game.combat.combatants.find((c) => c.actor._id === this._actor._id && c.initiative > 0);
if (!game.combat) {
ui.notifications.warn(game.i18n.localize("COMBAT.NoneActive"));
return this.close();
}
const combatant = game.combat.combatants.find((c) => c.actor.id === this._actor.id && c.initiative > 0);
if (combatant) {
ui.notifications.error(game.i18n.localize("l5r5e.conflict.initiative.already_set"));
return this.close();
@@ -399,7 +404,7 @@ export class DicePickerDialog extends FormApplication {
// Update Actor
if (this._actor) {
const actorData = duplicate(this._actor.data.data);
const actorData = foundry.utils.duplicate(this._actor.data.data);
// Update the actor stance on initiative only
if (this.object.isInitiativeRoll) {
@@ -416,10 +421,13 @@ export class DicePickerDialog extends FormApplication {
actorData.void_points.value = Math.max(actorData.void_points.value - 1, 0);
}
// Update actor
await this._actor.update({
data: diffObject(this._actor.data.data, actorData),
});
// Update actor if needed
const updateDiff = foundry.utils.diffObject(this._actor.data.data, actorData);
if (Object.keys(updateDiff).length > 0) {
await this._actor.update({
data: foundry.utils.diffObject(this._actor.data.data, actorData),
});
}
}
// Build the formula
@@ -434,22 +442,26 @@ export class DicePickerDialog extends FormApplication {
let message;
if (this.object.isInitiativeRoll) {
// Initiative roll
let msgOptions = {
skillId: this.object.skill.id,
difficulty: this.object.difficulty.value,
difficultyHidden: this.object.difficulty.hidden,
useVoidPoint: this.object.useVoidPoint,
skillAssistance: this.object.skill.assistance,
rnkMessage: null,
};
await this._actor.rollInitiative({
rerollInitiative: true,
initiativeOptions: {
formula: formula.join("+"),
// updateTurn: true,
messageOptions: {
skillId: this.object.skill.id,
difficulty: this.object.difficulty.value,
difficultyHidden: this.object.difficulty.hidden,
useVoidPoint: this.object.useVoidPoint,
skillAssistance: this.object.skill.assistance,
},
messageOptions: msgOptions,
},
});
// Adhesive tape to get the messageId :/
message = this._actor.rnkMessage;
delete this._actor.rnkMessage;
message = msgOptions.rnkMessage;
delete msgOptions.rnkMessage;
} else {
// Regular roll, so let's roll !
const roll = await new game.l5r5e.RollL5r5e(formula.join("+"));
@@ -468,7 +480,10 @@ export class DicePickerDialog extends FormApplication {
}
if (message) {
new game.l5r5e.RollnKeepDialog(message._id).render(true);
// if DsN active, delay the popup for 2s
new Promise((r) => setTimeout(r, !game.dice3d ? 0 : 2000)).then(() => {
new game.l5r5e.RollnKeepDialog(message.id).render(true);
});
}
return this.close();
@@ -506,8 +521,8 @@ export class DicePickerDialog extends FormApplication {
const params = {};
let name = "DicePicker";
if (this._actor?._id) {
params.actorId = this._actor._id;
if (this._actor?.id) {
params.actorId = this._actor.id;
name = this._actor.name;
}
@@ -522,7 +537,7 @@ export class DicePickerDialog extends FormApplication {
let command = `new game.l5r5e.DicePickerDialog(${JSON.stringify(params)}).render(true);`;
let macro = game.macros.entities.find((m) => m.data.name === name && m.data.command === command);
let macro = game.macros.contents.find((m) => m.data.name === name && m.data.command === command);
if (!macro) {
macro = await Macro.create({
name: name,
@@ -534,22 +549,10 @@ export class DicePickerDialog extends FormApplication {
}
// Search if already in player hotbar
if (Object.values(game.user.data.hotbar).includes(macro._id)) {
if (Object.values(game.user.data.hotbar).includes(macro.id)) {
return;
}
// Search for slot (Fix for FVTT, will be fixed)
// slot = false will normally do the 1st available, but always return 0
// TODO see when issue is closed to remove these lines and use "assignHotbarMacro(macro, false)"
// https://gitlab.com/foundrynet/foundryvtt/-/issues/4382
const slot = Array.fromRange(50).find((i) => {
if (i < 1) {
return false;
}
return !(i in game.user.data.hotbar);
});
// return game.user.assignHotbarMacro(macro, false); // 1st available
return game.user.assignHotbarMacro(macro, slot);
return game.user.assignHotbarMacro(macro, "auto"); // 1st available
}
}

View File

@@ -5,7 +5,7 @@ import { L5rBaseDie } from "./l5r-base-die.js";
*/
export class AbilityDie extends L5rBaseDie {
/** @override */
static DENOMINATION = "ds";
static DENOMINATION = "s";
static FACES = {
1: { success: 0, explosive: 0, opportunity: 0, strife: 0, image: "skill_blank" },

View File

@@ -23,23 +23,39 @@ export class L5rBaseDie extends DiceTerm {
}
/**
* Return a standardized representation for the displayed formula associated with this DiceTerm
* A string representation of the formula expression for this RollTerm, prior to evaluation.
* @type {string}
* @override
*/
get formula() {
return `${this.number}${this.constructor.DENOMINATION}${this.modifiers.join("")}`;
get expression() {
return `${this.number}d${this.constructor.DENOMINATION}${this.modifiers.join("")}`;
}
/**
* Return the full img string used as the label for each rolled result
* Return a standardized representation for the displayed formula associated with this DiceTerm
* @return {string}
* @override
*/
static getResultLabel(result) {
return `<img src="${CONFIG.l5r5e.paths.assets}dices/default/${this.FACES[result].image}.svg" alt="${result}" />`;
get formula() {
// No flavor
return this.expression;
}
/**
* Return a string used as the label for each rolled result
* @param {DiceTermResult} result The rolled result
* @return {string} The result label
*/
getResultLabel(result) {
return `<img src="${CONFIG.l5r5e.paths.assets}dices/default/${
this.constructor.FACES[result.result].image
}.svg" alt="${result.result}" />`;
}
/**
* Return the url of the result face
* @param {string|number} result
* @return {string}
*/
static getResultSrc(result) {
return `${CONFIG.l5r5e.paths.assets}dices/default/${this.FACES[result].image}.svg`;
@@ -49,23 +65,28 @@ export class L5rBaseDie extends DiceTerm {
* Return the total result of the DiceTerm if it has been evaluated
* Always zero for L5R dices to not count in total for regular dices
* @override
* @return {number|string}
*/
get total() {
return 0;
}
/**
* Evaluate the roll term, populating the results Array
* Evaluate the term, processing its inputs and finalizing its total.
* @param {boolean} minimize Minimize the result, obtaining the smallest possible value.
* @param {boolean} maximize Maximize the result, obtaining the largest possible value.
* @param {boolean} async Evaluate the term asynchronously, receiving a Promise as the returned value. This will become the default behavior in version 10.x
* @return {L5rBaseDie} The evaluated RollTerm
* @override
*/
evaluate({ minimize = false, maximize = false } = {}) {
evaluate({ minimize = false, maximize = false, async = false } = {}) {
if (this._evaluated) {
throw new Error(`This ${this.constructor.name} has already been evaluated and is immutable`);
}
// Roll the initial number of dice
for (let n = 1; n <= this.number; n++) {
this.roll({ minimize, maximize });
this.roll({ minimize, maximize, async }); // TODO async/await in v10.x currently the inline roll is sync
}
// Apply modifiers
@@ -99,15 +120,22 @@ export class L5rBaseDie extends DiceTerm {
/**
* Roll the DiceTerm by mapping a random uniform draw against the faces of the dice term
* @param {Object} options
* @return {DiceTermResult}
* @override
*/
roll(options) {
roll(options = { minimize: false, maximize: false }) {
const roll = super.roll(options);
//roll.l5r5e = this.l5r5e;
return roll;
}
/** @override */
/**
* Construct a DiceTerm from a provided data object
* @param {object} data Provided data from an un-serialized term
* @return {DiceTerm} The constructed RollTerm
* @override
*/
static fromData(data) {
const roll = super.fromData(data);
roll.l5r5e = data.l5r5e;
@@ -115,7 +143,8 @@ export class L5rBaseDie extends DiceTerm {
}
/**
* Represent the data of the Roll as an object suitable for JSON serialization
* Represent the data of the DiceTerm as an object suitable for JSON serialization
* @return {string}
* @override
*/
toJSON() {

View File

@@ -5,7 +5,7 @@ import { L5rBaseDie } from "./l5r-base-die.js";
*/
export class RingDie extends L5rBaseDie {
/** @override */
static DENOMINATION = "dr";
static DENOMINATION = "r";
static FACES = {
1: { success: 0, explosive: 0, opportunity: 0, strife: 0, image: "ring_blank" },

View File

@@ -45,7 +45,7 @@ export class RollnKeepDialog extends FormApplication {
* @override
*/
static get defaultOptions() {
return mergeObject(super.defaultOptions, {
return foundry.utils.mergeObject(super.defaultOptions, {
id: "l5r5e-roll-n-keep-dialog",
classes: ["l5r5e", "roll-n-keep-dialog"],
template: CONFIG.l5r5e.paths.templates + "dice/roll-n-keep-dialog.html",
@@ -58,7 +58,7 @@ export class RollnKeepDialog extends FormApplication {
* Define a unique and dynamic element ID for the rendered application
*/
get id() {
return `l5r5e-roll-n-keep-dialog-${this._message._id}`;
return `l5r5e-roll-n-keep-dialog-${this._message.id}`;
}
/**
@@ -85,8 +85,9 @@ export class RollnKeepDialog extends FormApplication {
constructor(messageId, options = {}) {
super({}, options);
this.message = game.messages.get(messageId);
this.options.editable =
this._message?.isAuthor || this._message?._roll.l5r5e.actor?.owner || this._message?.owner || false;
this._message?.isAuthor || this._message?._roll.l5r5e.actor?.isOwner || this._message?.isOwner || false;
this._initializeDiceFaces();
this._initializeHistory();
@@ -106,11 +107,11 @@ export class RollnKeepDialog extends FormApplication {
/**
* Render
* @param {boolean} force
* @param {RenderOptions} options
* @param {{left?: number, top?: number, width?: number, height?: number, scale?: number, focus?: boolean, renderContext?: string, renderData?: Object}} options
* @returns {Application}
* @override
*/
render(force = null, options = {}) {
render(force = false, options = {}) {
if (!this._message) {
return;
}
@@ -146,7 +147,7 @@ export class RollnKeepDialog extends FormApplication {
// New
this.object.dicesList = [[]];
this.roll.terms.forEach((term) => {
if (typeof term !== "object") {
if (!(term instanceof game.l5r5e.L5rBaseDie)) {
return;
}
term.results.forEach((res) => {
@@ -238,6 +239,7 @@ export class RollnKeepDialog extends FormApplication {
/**
* Listen to html elements
* @param {jQuery} html HTML content of the sheet.
* @override
*/
activateListeners(html) {
@@ -514,7 +516,7 @@ export class RollnKeepDialog extends FormApplication {
}
roll.terms.forEach((term) => {
if (typeof term !== "object") {
if (!(term instanceof game.l5r5e.L5rBaseDie)) {
return;
}
term.results.forEach((res) => {
@@ -571,10 +573,11 @@ export class RollnKeepDialog extends FormApplication {
roll.l5r5e = {
...this.roll.l5r5e,
summary: roll.l5r5e.summary,
history: this.object.dicesList,
};
// Fill the data
roll.evaluate();
roll.evaluate({ async: false });
// Modify results
roll.terms.map((term) => {
@@ -599,7 +602,6 @@ export class RollnKeepDialog extends FormApplication {
// Add roll & history to message
this.roll = roll;
this.roll.l5r5e.history = this.object.dicesList;
}
/**
@@ -610,30 +612,34 @@ export class RollnKeepDialog extends FormApplication {
async _toChatMessage() {
// Keep old Ids
const appOldId = this.id;
const msgOldId = this._message._id;
const msgOldId = this._message.id;
if (this.roll.l5r5e.isInitiativeRoll) {
let msgOptions = {
rnkRoll: this.roll,
};
await this.roll.l5r5e.actor.rollInitiative({
rerollInitiative: true,
initiativeOptions: {
messageOptions: {
rnkRoll: this.roll,
},
messageOptions: msgOptions,
},
});
// Adhesive tape to get the message :/
this.message = this.roll.l5r5e.actor.rnkMessage;
delete this.roll.l5r5e.actor.rnkMessage;
this.message = msgOptions.rnkMessage;
delete msgOptions.rnkMessage;
} else {
// Send it to chat, switch to new message
this.message = await this.roll.toMessage();
}
// Refresh viewers
game.l5r5e.sockets.updateMessageIdAndRefresh(appOldId, this._message._id);
if (this._message) {
game.l5r5e.sockets.updateMessageIdAndRefresh(appOldId, this._message.id);
}
// Delete old chat message related to this series
if (game.settings.get("l5r5e", "rnk.deleteOldMessage")) {
if (game.settings.get("l5r5e", "rnk-deleteOldMessage")) {
if (game.user.isGM) {
const message = game.messages.get(msgOldId);
if (message) {

View File

@@ -5,8 +5,8 @@ export class RollL5r5e extends Roll {
static CHAT_TEMPLATE = "dice/chat-roll.html";
static TOOLTIP_TEMPLATE = "dice/tooltip.html";
constructor(...args) {
super(...args);
constructor(formula, data = {}, options = {}) {
super(formula, data, options);
this.l5r5e = {
stance: "",
@@ -33,10 +33,11 @@ export class RollL5r5e extends Roll {
strife: 0,
},
history: null,
rnkEnded: false,
};
// Parse flavor for stance and skillId
const flavors = Array.from(args[0].matchAll(/\d+d(s|r)\[([^\]]+)\]/gmu));
const flavors = Array.from(formula.matchAll(/\d+d(s|r)\[([^\]]+)\]/gmu));
flavors.forEach((res) => {
if (res[1] === "r" && !!res[2] && this.l5r5e.stance === "") {
this.l5r5e.stance = res[2];
@@ -48,15 +49,15 @@ export class RollL5r5e extends Roll {
}
set actor(actor) {
this.l5r5e.actor = actor instanceof Actor && actor.owner ? actor : null;
this.l5r5e.actor = actor instanceof Actor && actor.isOwner ? actor : null;
}
/**
* Execute the Roll, replacing dice and evaluating the total result
* @override
**/
evaluate({ minimize = false, maximize = false } = {}) {
if (this._rolled) {
evaluate({ minimize = false, maximize = false, async = false } = {}) {
if (this._evaluated) {
throw new Error("This Roll object has already been rolled.");
}
if (this.terms.length < 1) {
@@ -64,14 +65,14 @@ export class RollL5r5e extends Roll {
}
// Clean terms (trim symbols)
this.terms = this._identifyTerms(this.constructor.cleanFormula(this.terms));
this.terms = this.constructor.simplifyTerms(this.terms);
// Roll dices and inner dices
this._total = 0;
// Roll
super.evaluate({ minimize, maximize });
this._rolled = true;
super.evaluate({ minimize, maximize, async });
this._evaluated = true;
// Save initial formula
if (!this.l5r5e.initialFormula) {
@@ -126,6 +127,13 @@ export class RollL5r5e extends Roll {
);
}
}
// RnK Can do some action ?
if (this.l5r5e.history) {
this.l5r5e.rnkEnded = !this.l5r5e.history[this.l5r5e.history.length - 1].some(
(e) => !!e && e.choice === null
);
}
}
/**
@@ -143,8 +151,6 @@ export class RollL5r5e extends Roll {
this.l5r5e.summary[props] += parseInt(term.l5r5e[props]);
});
this.l5r5e.summary.totalSuccess += term.totalSuccess;
// TODO Others advantage/disadvantage
}
/**
@@ -152,7 +158,7 @@ export class RollL5r5e extends Roll {
* @override
*/
get total() {
if (!this._rolled) {
if (!this._evaluated) {
return null;
}
@@ -173,7 +179,6 @@ export class RollL5r5e extends Roll {
.filter((c) => !!c)
.join(" | ");
}
return total;
}
@@ -197,7 +202,7 @@ export class RollL5r5e extends Roll {
display: !isL5rDie || contexte?.from !== "render",
rolls: term.results.map((r) => {
return {
result: cls.getResultLabel(r.result),
result: term.getResultLabel(r),
classes: [
cls.name.toLowerCase(),
"d" + term.faces,
@@ -230,9 +235,9 @@ export class RollL5r5e extends Roll {
* @override
*/
async render(chatOptions = {}) {
chatOptions = mergeObject(
chatOptions = foundry.utils.mergeObject(
{
user: game.user._id,
user: game.user.id,
flavor: null,
template: CONFIG.l5r5e.paths.templates + this.constructor.CHAT_TEMPLATE,
blind: false,
@@ -242,7 +247,7 @@ export class RollL5r5e extends Roll {
const isPrivate = chatOptions.isPrivate;
// Execute the roll, if needed
if (!this._rolled) {
if (!this._evaluated) {
this.roll();
}
@@ -265,7 +270,7 @@ export class RollL5r5e extends Roll {
diceTypeL5r: isL5rDie,
rolls: term.results.map((r) => {
return {
result: term.constructor.getResultLabel(r.result),
result: term.getResultLabel(r),
classes: [
isL5rDie && r.swapped ? "swapped" : null,
r.rerolled ? "rerolled" : null,
@@ -289,30 +294,27 @@ export class RollL5r5e extends Roll {
* This function can either create the ChatMessage directly, or return the data object that will be used to create.
* @override
*/
toMessage(messageData = {}, { rollMode = null, create = true } = {}) {
async toMessage(messageData = {}, { rollMode = null, create = true } = {}) {
// Perform the roll, if it has not yet been rolled
if (!this._rolled) {
this.evaluate();
if (!this._evaluated) {
this.evaluate({ async: false });
}
// RollMode
const rMode = rollMode || messageData.rollMode || game.settings.get("core", "rollMode");
let template = CONST.CHAT_MESSAGE_TYPES.ROLL;
if (["gmroll", "blindroll"].includes(rMode)) {
messageData.whisper = ChatMessage.getWhisperRecipients("GM");
if (rollMode) {
ChatMessage.applyRollMode(messageData, rMode);
}
if (rMode === "blindroll") messageData.blind = true;
if (rMode === "selfroll") messageData.whisper = [game.user.id];
// Prepare chat data
messageData = mergeObject(
messageData = foundry.utils.mergeObject(
{
user: game.user._id,
type: template,
user: game.user.id,
type: CONST.CHAT_MESSAGE_TYPES.ROLL,
content: this._total,
sound: CONFIG.sounds.dice,
speaker: {
actor: this.l5r5e.actor?._id || null,
actor: this.l5r5e.actor?.id || null,
token: this.l5r5e.actor?.token || null,
alias: this.l5r5e.actor?.name || null,
},
@@ -321,11 +323,13 @@ export class RollL5r5e extends Roll {
);
messageData.roll = this;
// Prepare message options
const messageOptions = { rollMode: rMode };
// Either create the message or just return the chat data
return create ? CONFIG.ChatMessage.entityClass.create(messageData, messageOptions) : messageData;
const message = await ChatMessage.implementation.create(messageData, {
rollMode: rMode,
temporary: !create,
isL5r5eTemplate: true,
});
return create ? message : message.data;
}
/** @override */
@@ -359,13 +363,13 @@ export class RollL5r5e extends Roll {
toJSON() {
const json = super.toJSON();
json.data = duplicate(this.data);
json.l5r5e = duplicate(this.l5r5e);
json.data = foundry.utils.duplicate(this.data);
json.l5r5e = foundry.utils.duplicate(this.l5r5e);
// lightweight the Actor
if (json.l5r5e.actor) {
json.l5r5e.actor = {
id: json.l5r5e.actor._id,
id: json.l5r5e.actor._id, // method "id" not exist in json, need to use "_id" here
};
}

View File

@@ -13,7 +13,7 @@ export class HelpDialog extends FormApplication {
* @override
*/
static get defaultOptions() {
return mergeObject(super.defaultOptions, {
return foundry.utils.mergeObject(super.defaultOptions, {
id: "l5r5e-help-dialog",
classes: ["l5r5e", "help-dialog"],
template: CONFIG.l5r5e.paths.templates + "help/help-dialog.html",
@@ -39,6 +39,7 @@ export class HelpDialog extends FormApplication {
/**
* Listen to html elements
* @param {jQuery} html HTML content of the sheet.
* @override
*/
activateListeners(html) {

View File

@@ -6,6 +6,8 @@ import { ItemL5r5e } from "./item.js";
export class HelpersL5r5e {
/**
* Get Rings/Element for List / Select
* @param {Actor|null} actor
* @return {{id: string, label: *, value}[]}
*/
static getRingsList(actor = null) {
return CONFIG.l5r5e.stances.map((e) => ({
@@ -17,6 +19,8 @@ export class HelpersL5r5e {
/**
* Get Skills for List / Select with groups
* @param {boolean} useGroup
* @return {{cat: any, id: any, label: *}[]}
*/
static getSkillsList(useGroup = false) {
if (!useGroup) {
@@ -43,16 +47,29 @@ export class HelpersL5r5e {
/**
* Get Techniques for List / Select
* @param types core|school|title|custom
* @param displayInTypes null|true|false
* @returns {{displayInTypes: boolean|*, id: any, label: *, type: *}[]}
*/
static getTechniquesList() {
return CONFIG.l5r5e.techniques.map((e) => ({
id: e,
label: game.i18n.localize(`l5r5e.techniques.${e}`),
}));
static getTechniquesList({ types = [], displayInTypes = null }) {
return Array.from(CONFIG.l5r5e.techniques)
.filter(
([id, cfg]) =>
(types.length === 0 || types.includes(cfg.type)) &&
(displayInTypes === null || cfg.displayInTypes === displayInTypes)
)
.map(([id, cfg]) => ({
id,
label: game.i18n.localize(`l5r5e.techniques.${id}`),
type: cfg.type,
displayInTypes: cfg.displayInTypes,
}));
}
/**
* Return the target object on a drag n drop event, or null if not found
* @param {DragEvent} event
* @return {Promise<null>}
*/
static async getDragnDropTargetObject(event) {
const json = event.dataTransfer.getData("text/plain");
@@ -60,114 +77,139 @@ export class HelpersL5r5e {
return null;
}
const data = JSON.parse(json);
return await HelpersL5r5e.getObjectGameOrPack(data.id, data.type, data.pack);
return await HelpersL5r5e.getObjectGameOrPack(data);
}
/**
* Return the object from Game or Pack by his ID, or null if not found
* @param {number} id
* @param {string} type
* @param {string|null} data
* @param {string|null} pack
* @return {Promise<null>}
*/
static async getObjectGameOrPack(id, type, pack = null) {
static async getObjectGameOrPack({ id, type, data = null, pack = null }) {
let document = null;
try {
// If no pack passed, but it's a core item, we know the pack to get it
if (!pack && id.substr(0, 7) === "L5RCore") {
pack = HelpersL5r5e.getPackNameForCoreItem(id);
// Direct Object
if (data?._id) {
document = HelpersL5r5e.createItemFromCompendium(data);
} else if (!id || !type) {
return null;
}
// Named pack
if (pack) {
const data = await game.packs.get(pack).getEntity(id);
if (data) {
return HelpersL5r5e.createItemFromCompendium(data);
if (!document) {
// If no pack passed, but it's a core item, we know the pack to get it
if (!pack && id.substr(0, 7) === "L5RCore") {
pack = HelpersL5r5e.getPackNameForCoreItem(id);
}
if (pack) {
const data = await game.packs.get(pack).getDocument(id);
if (data) {
document = HelpersL5r5e.createItemFromCompendium(data);
}
}
}
// Game object
let item = null;
switch (type) {
case "Actor":
item = game.actors.get(id);
break;
case "Item":
item = game.items.get(id);
break;
case "JournalEntry":
item = game.journal.get(id);
break;
case "Macro":
item = game.macros.get(id);
break;
}
if (item) {
await HelpersL5r5e.refreshItemProperties(item);
return item;
if (!document) {
document = CONFIG[type].collection.instance.get(id);
}
// Unknown pack object, iterate all packs
for (const comp of game.packs) {
// TODO Bug with babele if "comp.getEntity(id)" return null...
const babeleFix = (await comp.getIndex()).some((e) => e._id === id);
if (!babeleFix) {
continue;
if (!document) {
for (const comp of game.packs) {
// TODO Bug with babele if "comp.getDocument(id)" return null...
const babeleFix = (await comp.getIndex()).some((e) => e.id === id);
if (!babeleFix) {
continue;
}
const data = await comp.getDocument(id);
if (data) {
document = HelpersL5r5e.createItemFromCompendium(data);
}
}
}
// Final
if (document) {
// Flag the source GUID
if (document.uuid && !document.getFlag("core", "sourceId")) {
document.data.update({ "flags.core.sourceId": document.uuid });
}
const data = await comp.getEntity(id);
if (data) {
return HelpersL5r5e.createItemFromCompendium(data);
}
await HelpersL5r5e.refreshItemProperties(document);
document.prepareData();
}
} catch (err) {
console.warn(err);
}
return null;
return document;
}
/**
* Make a temporary item for compendium drag n drop
* @param {ItemL5r5e|any[]} data
* @return {ItemL5r5e}
*/
static async createItemFromCompendium(data) {
if (!["item", "armor", "weapon", "technique", "peculiarity", "property"].includes(data.type)) {
static createItemFromCompendium(data) {
if (
![
"item",
"armor",
"weapon",
"technique",
"property",
"peculiarity",
"advancement",
"title",
"bond",
"signature_scroll",
"item_pattern",
].includes(data.type)
) {
return data;
}
let item;
let document;
if (data instanceof ItemL5r5e) {
item = data;
} else if (game.user.hasPermission("ACTOR_CREATE")) {
// Fail if a player do not have the right to create object (even if this is a temporary)
item = await ItemL5r5e.create(data, { temporary: true });
// reinject compendium id (required for properties)
item.data._id = data._id;
document = data;
} else {
// Quick object
item = new ItemL5r5e(data);
document = new ItemL5r5e(data);
}
await HelpersL5r5e.refreshItemProperties(item);
return item;
return document;
}
/**
* Babele and properties specific
* @param {Document} document
* @return {Promise<void>}
*/
static async refreshItemProperties(item) {
if (item.data.data.properties && typeof Babele !== "undefined") {
item.data.data.properties = await Promise.all(
item.data.data.properties.map(async (property) => {
const gameProp = await game.l5r5e.HelpersL5r5e.getObjectGameOrPack(property.id, "Item");
static async refreshItemProperties(document) {
if (document.data.data.properties && typeof Babele !== "undefined") {
document.data.data.properties = await Promise.all(
document.data.data.properties.map(async (property) => {
const gameProp = await HelpersL5r5e.getObjectGameOrPack({ id: property.id, type: "Item" });
if (gameProp) {
return { id: gameProp._id, name: gameProp.name };
return { id: gameProp.id, name: gameProp.name };
}
return property;
})
);
document.data.update({ "data.properties": document.data.data.properties });
}
}
/**
* Convert (op), (ex)... to associated symbols for content/descriptions
* @param {string} text Input text
* @param {boolean} toSymbol If True convert symbol to html (op), if false html to symbol
* @return {string}
*/
static convertSymbols(text, toSymbol) {
CONFIG.l5r5e.symbols.forEach((cfg, tag) => {
@@ -177,7 +219,7 @@ export class HelpersL5r5e {
`<i class="${cfg.class}" title="${game.i18n.localize(cfg.label)}"></i>`
);
} else {
text = text.replace(new RegExp(`<i class="${cfg.class}" title="[^"]*"></i>`, "gi"), tag);
text = text.replace(new RegExp(`<i class="${cfg.class}" title(="[^"]*")?></i>`, "gi"), tag);
}
});
return text;
@@ -185,6 +227,8 @@ export class HelpersL5r5e {
/**
* Escape Regx characters
* @param {string} str
* @return {string}
*/
static escapeRegExp(str) {
return str.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
@@ -192,8 +236,10 @@ export class HelpersL5r5e {
/**
* Get the associated pack for a core item (time saving)
* @param {string} documentId
* @return {string}
*/
static getPackNameForCoreItem(itemId) {
static getPackNameForCoreItem(documentId) {
const core = new Map();
core.set("Pro", "l5r5e.core-properties");
core.set("Kat", "l5r5e.core-techniques-kata");
@@ -209,11 +255,15 @@ export class HelpersL5r5e {
core.set("Ite", "l5r5e.core-items");
core.set("Arm", "l5r5e.core-armors");
core.set("Wea", "l5r5e.core-weapons");
core.set("Bon", "l5r5e.core-bonds");
core.set("Tit", "l5r5e.core-titles");
core.set("Itp", "l5r5e.core-item-patterns");
core.set("Sig", "l5r5e.core-signature-scrolls");
core.set("Dis", "l5r5e.core-peculiarities-distinctions");
core.set("Pas", "l5r5e.core-peculiarities-passions");
core.set("Adv", "l5r5e.core-peculiarities-adversities");
core.set("Anx", "l5r5e.core-peculiarities-anxieties");
return core.get(itemId.replace(/L5RCore(\w{3})\d+/gi, "$1"));
return core.get(documentId.replace(/L5RCore(\w{3})\d+/gi, "$1"));
}
/**
@@ -239,6 +289,38 @@ export class HelpersL5r5e {
}).render(true);
}
/**
* Display a dialog to choose what Item type to add
* @param {string[]|null} types
* @return {Promise<*>} Return the item type choice (armor, bond...)
*/
static async showSubItemDialog(types = null) {
// If no types, get the full list
if (!types) {
types = game.system.entityTypes.Item;
}
const title = game.i18n.format("ENTITY.Create", { entity: game.i18n.localize("Item") });
// Render the template
const html = await renderTemplate(`${CONFIG.l5r5e.paths.templates}dialogs/choose-item-type-dialog.html`, {
type: null,
types: types.reduce((obj, t) => {
const label = CONFIG.Item.typeLabels[t] ?? t;
obj[t] = game.i18n.has(label) ? game.i18n.localize(label) : t;
return obj;
}, {}),
});
// Display the dialog
return Dialog.prompt({
title: title,
content: html,
label: title,
callback: (html) => $(html).find("[name='type'] option:selected").val(),
rejectClose: false,
});
}
/**
* Notify Applications using Difficulty settings that the values was changed
*/
@@ -250,4 +332,58 @@ export class HelpersL5r5e {
}
});
}
/**
* Compute the Xp cost for cursus and total
* @param {ItemL5r5e|ItemL5r5e[]} itemsList Item Data
* @return {{xp_used_total: number, xp_used: number}}
*/
static getItemsXpCost(itemsList) {
let xp_used = 0;
let xp_used_total = 0;
if (!Array.isArray(itemsList)) {
itemsList = [itemsList];
}
itemsList.forEach((item) => {
let xp = parseInt(item.data.xp_used_total || item.data.xp_used || 0);
// Full price
xp_used_total += xp;
// if not in curriculum, xp spent /2 for this item
if (!item.data.in_curriculum && xp > 0) {
xp = Math.ceil(xp / 2);
}
// Halved or full
xp_used += xp;
});
return { xp_used, xp_used_total };
}
/**
* Subscribe to common events from the sheet.
* @param {jQuery} html HTML content of the sheet.
*/
static commonListeners(html) {
// Toggle
html.find(".toggle-on-click").on("click", (event) => {
const elmt = $(event.currentTarget).data("toggle");
const tgt = html.find("." + elmt);
tgt.toggleClass("toggle-active");
});
// Compendium folder link
html.find(".compendium-link").on("click", (event) => {
const packId = $(event.currentTarget).data("pack");
if (packId) {
const pack = game.packs.get(packId);
if (pack) {
pack.render(true);
}
}
});
}
}

View File

@@ -20,12 +20,15 @@ export default class HooksL5r5e {
/**
* Do anything once the system is ready
*/
static ready() {
static async ready() {
// Migration stuff
if (game.l5r5e.migrations.needUpdate()) {
if (game.l5r5e.migrations.needUpdate(game.l5r5e.migrations.NEEDED_VERSION)) {
game.l5r5e.migrations.migrateWorld();
}
// For some reasons, not always really ready, so wait a little
await new Promise((r) => setTimeout(r, 500));
// Settings TN and EncounterType
if (game.user.isGM) {
new game.l5r5e.GmToolsDialog().render(true);
@@ -40,9 +43,10 @@ export default class HooksL5r5e {
.on("click", () => new game.l5r5e.HelpDialog().render(true))
.prop("title", game.i18n.localize("l5r5e.logo.alt"));
// Spanish specific - Disclaimer "not translated by Edge"
if (game.i18n.lang === "es") {
ui.notifications.info(game.i18n.localize("l5r5e.global.edge_translation_disclaimer"));
// If any disclaimer "not translated by Edge"
const disclaimer = game.i18n.localize("l5r5e.global.edge_translation_disclaimer");
if (disclaimer !== "l5r5e.global.edge_translation_disclaimer") {
ui.notifications.info(disclaimer);
}
}
@@ -56,6 +60,32 @@ export default class HooksL5r5e {
});
}
/**
* Modify the content for chat roll command
*
* The 0.8.x introduce a weird behavior, it get to roll.total as content event if a template was defined.
* So we need to intercept a chat roll (/r 1dr) for having them use the right template and not the inline (=total)
*
* @param {ChatMessage} document
* @param {Object} data
* @param {Object} options
* @param {string} userId
* @return {boolean}
*/
static preCreateChatMessage(document, data, options, userId) {
// Roll from DP have the "isL5r5eTemplate" option set
if (!document.isRoll || options?.isL5r5eTemplate || !document.data?.roll) {
return;
}
// So now we have our wrong message only, redo it using the roll
const roll = game.l5r5e.RollL5r5e.fromJSON(document.data.roll);
roll.toMessage();
// Return false to let the system known we handled this
return false;
}
/**
* Chat Message
*/
@@ -88,14 +118,14 @@ export default class HooksL5r5e {
// *** Conf ***
const encounterTypeList = Object.keys(CONFIG.l5r5e.initiativeSkills);
const prepared = {
character: game.settings.get("l5r5e", "initiative.prepared.character"),
adversary: game.settings.get("l5r5e", "initiative.prepared.adversary"),
minion: game.settings.get("l5r5e", "initiative.prepared.minion"),
character: game.settings.get("l5r5e", "initiative-prepared-character"),
adversary: game.settings.get("l5r5e", "initiative-prepared-adversary"),
minion: game.settings.get("l5r5e", "initiative-prepared-minion"),
};
// *** Template ***
const tpl = await renderTemplate(`${CONFIG.l5r5e.paths.templates}gm/combat-tracker-bar.html`, {
encounterType: game.settings.get("l5r5e", "initiative.encounter"),
encounterType: game.settings.get("l5r5e", "initiative-encounter"),
encounterTypeList,
prepared,
});
@@ -118,7 +148,7 @@ export default class HooksL5r5e {
return;
}
game.settings
.set("l5r5e", "initiative.encounter", encounter)
.set("l5r5e", "initiative-encounter", encounter)
.then(() => HooksL5r5e._gmCombatBar(app, html, data));
});
@@ -136,7 +166,7 @@ export default class HooksL5r5e {
null: rev ? "false" : "true",
};
game.settings
.set("l5r5e", `initiative.prepared.${preparedId}`, nextValue[prepared[preparedId]])
.set("l5r5e", `initiative-prepared-${preparedId}`, nextValue[prepared[preparedId]])
.then(() => HooksL5r5e._gmCombatBar(app, html, data));
});
}
@@ -147,18 +177,20 @@ export default class HooksL5r5e {
static async renderCompendium(app, html, data) {
// templates "item" : add Rarity
// Techniques / Peculiarities : add Ring / Rank
if (app.entity === "Item") {
const content = await app.getContent();
content.forEach((item) => {
if (["weapon", "armor", "item", "peculiarity", "technique", "peculiarity"].includes(item.type)) {
html.find(`[data-entry-id="${item._id}"]`).append(
if (app.collection.documentName === "Item") {
const content = await app.collection.getDocuments();
content.forEach((document) => {
if (["weapon", "armor", "item", "peculiarity", "technique", "peculiarity"].includes(document.type)) {
html.find(`[data-document-id="${document.id}"]`).append(
`<i` +
(item.data.data.ring ? ` class="i_${item.data.data.ring}"` : ``) +
(document.data.data.ring ? ` class="i_${document.data.data.ring}"` : ``) +
`>` +
(item.data.data.rarity
? `${game.i18n.localize("l5r5e.rarity")} ${item.data.data.rarity}`
(document.data.data.rarity
? `${game.i18n.localize("l5r5e.rarity")} ${document.data.data.rarity}`
: "") +
(document.data.data.rank
? game.i18n.localize("l5r5e.rank") + " " + document.data.data.rank
: "") +
(item.data.data.rank ? game.i18n.localize("l5r5e.rank") + " " + item.data.data.rank : "") +
`</i>`
);
}
@@ -182,7 +214,7 @@ export default class HooksL5r5e {
dice3d.addDicePreset(
{
name: "L5R Ring Dice",
type: "ddr", // don't known why the "dd" prefix is required, term is "r"
type: "dr",
labels: Object.keys(game.l5r5e.RingDie.FACES).map(
(e) => `${texturePath}${game.l5r5e.RingDie.FACES[e].image.replace("ring_", "")}.png`
),
@@ -199,7 +231,7 @@ export default class HooksL5r5e {
dice3d.addDicePreset(
{
name: "L5R Skill Dice",
type: "dds",
type: "ds",
labels: Object.keys(game.l5r5e.AbilityDie.FACES).map(
(e) => `${texturePath}${game.l5r5e.AbilityDie.FACES[e].image.replace("skill_", "")}.png`
),

View File

@@ -1,12 +1,240 @@
export class ItemL5r5e extends Item {
/**
* A reference to the Collection of embedded Item instances in the document, indexed by _id.
* @returns {Collection<BaseItem>}
*/
get items() {
return this.data.data.items || null;
}
/**
* Return the linked Actor instance if any (current or embed)
* @return {Actor|null}
*/
get actor() {
return super.actor || game.actors.get(this.data.data.parent_id?.actor_id) || null;
}
/**
* Create a new entity using provided input data
* @override
*/
static async create(data, options = {}) {
static async create(data, context = {}) {
if (data.img === undefined) {
data.img = `${CONFIG.l5r5e.paths.assets}icons/items/${data.type}.svg`;
}
return super.create(data, options);
return super.create(data, context);
}
/**
* Update this Document using incremental data, saving it to the database.
* @see {@link Document.updateDocuments}
* @param {object} [data={}] Differential update data which modifies the existing values of this document data
* @param {DocumentModificationContext} [context={}] Additional context which customizes the update workflow
* @returns {Promise<Document>} The updated Document instance
*/
async update(data = {}, context = {}) {
// Regular
if (!this.data.data.parent_id) {
return super.update(data, context);
}
// **** Embed Items, need to get the parents ****
const parentItem = this.getItemFromParentId();
if (!parentItem) {
console.warn(`Embed parentItem not found`);
return;
}
// Merge (DocumentData cannot be set)
const result = foundry.utils.mergeObject(this.data, foundry.utils.expandObject(data));
if (result.name) {
this.data.name = result.name;
}
if (result.img) {
this.data.img = result.img;
}
if (result.data) {
this.data.data = result.data;
}
// Update
await parentItem.updateEmbedItem(this.data.toObject(false));
// Return new value for sheet
return new Promise((resolve) => resolve(this));
}
/** @override */
prepareData() {
super.prepareData();
// Prepare Embed items
if (!(this.data.data.items instanceof Map)) {
const itemsData = Array.isArray(this.data.data.items) ? this.data.data.items : [];
this.data.data.items = new Map();
itemsData.forEach((item) => {
this.addEmbedItem(item, { save: false, newId: false, addBonusToActor: false });
});
}
}
// ***** parent ids management *****
/**
* Return a string with idemId + actorId if any
* @return {{item_id: (string|null), actor_id?: (string|null)}}
*/
getParentsIds() {
const parent = {
item_id: this.id,
};
if (this.actor?.data?._id) {
parent.actor_id = this.actor.data._id;
}
return parent;
}
/**
* Return the Item Object for the "parentId"
* @return {ItemL5r5e|null}
*/
getItemFromParentId() {
const parentIds = this.data.data.parent_id;
let parentItem;
if (parentIds?.actor_id) {
// Actor item object
const parentActor = parentIds.actor_id ? game.actors.get(parentIds.actor_id) : null;
parentItem = parentActor?.items.get(parentIds.item_id);
} else if (parentIds?.item_id) {
// World Object
parentItem = game.items.get(parentIds.item_id);
}
return parentItem;
}
// ***** Embedded items management *****
/**
* Shortcut for this.data.data.items.get
* @param id
* @return {ItemL5r5e|null}
*/
getEmbedItem(id) {
return this.items?.get(id) || null;
}
/**
* Add a Embed Item
* @param {ItemL5r5e} item Object to add
* @param {boolean} save if we save in db or not (used internally)
* @param {boolean} newId if we change the id
* @param {boolean} addBonusToActor if we update the actor bonus for advancements
* @return {Promise<string>}
*/
async addEmbedItem(item, { save = true, newId = true, addBonusToActor = true } = {}) {
if (!item) {
return;
}
if (!(item instanceof Item) && item?.name && item?.type) {
// Data -> Item
item = new ItemL5r5e(item);
}
// New id
if (newId) {
item.data._id = foundry.utils.randomID();
}
// Copy the parent permission to the sub item
item.data.permission = this.data.permission;
// Tag parent (flags won't work as we have no id in db)
item.data.data.parent_id = this.getParentsIds();
// Object
this.data.data.items.set(item.data._id, item);
// Add bonus to actor
if (addBonusToActor) {
const actor = this.actor;
if (item instanceof Item && actor instanceof Actor) {
actor.addBonus(item);
}
}
if (save) {
await this.saveEmbedItems();
}
return item.data._id;
}
/**
* Update a Embed Item
* @param {ItemL5r5e} item Object to add
* @param {boolean} save if we save in db or not (used internally)
* @return {Promise<string>}
*/
async updateEmbedItem(item, { save = true } = {}) {
return await this.addEmbedItem(item, { save, newId: false, addBonusToActor: false });
}
/**
* Delete the Embed Item and clear the actor bonus if any
* @param id Item id
* @param {boolean} save if we save in db or not (used internally)
* @param {boolean} removeBonusFromActor if we update the actor bonus for advancements
* @return {Promise<void>}
*/
async deleteEmbedItem(id, { save = true, removeBonusFromActor = true } = {}) {
if (!this.data.data.items.has(id)) {
return;
}
// Remove bonus from actor
if (removeBonusFromActor) {
const actor = this.actor;
const item = this.data.data.items.get(id);
if (item instanceof Item && actor instanceof Actor) {
actor.removeBonus(item);
}
}
// Remove the embed item
this.data.data.items.delete(id);
if (save) {
await this.saveEmbedItems();
}
}
/**
* Generate new Ids for the embed items
* @return {Promise<void>}
*/
async generateNewIdsForAllEmbedItems() {
// Clear olds ids
const oldItems = Array.from(this.data.data.items);
this.data.data.items = new Map();
// Re-add with new ids
oldItems.forEach(([id, item]) => {
this.addEmbedItem(item, { save: false, newId: true, addBonusToActor: false });
});
return this.saveEmbedItems();
}
/**
* Save all the Embed Items
* @return {Promise<void>}
*/
async saveEmbedItems() {
await this.update({
"data.items": Array.from(this.data.data.items).map(([id, item]) => item.data.toObject(false)),
});
this.sheet.render(false);
}
}

View File

@@ -7,11 +7,11 @@ export class AdvancementSheetL5r5e extends ItemSheetL5r5e {
/**
* Sub Types of advancements
*/
static types = ["ring", "skill"]; // "peculiarity" and "technique" have theirs own xp count
static types = ["ring", "skill"]; // others have theirs own xp count
/** @override */
static get defaultOptions() {
return mergeObject(super.defaultOptions, {
return foundry.utils.mergeObject(super.defaultOptions, {
classes: ["l5r5e", "sheet", "advancement"],
template: CONFIG.l5r5e.paths.templates + "items/advancement/advancement-sheet.html",
width: 520,
@@ -20,8 +20,8 @@ export class AdvancementSheetL5r5e extends ItemSheetL5r5e {
});
}
async getData() {
const sheetData = await super.getData();
async getData(options = {}) {
const sheetData = await super.getData(options);
sheetData.data.subTypesList = AdvancementSheetL5r5e.types;
sheetData.data.skillsList = game.l5r5e.HelpersL5r5e.getSkillsList(true);
@@ -31,7 +31,7 @@ export class AdvancementSheetL5r5e extends ItemSheetL5r5e {
/**
* Subscribe to events from the sheet.
* @param html HTML content of the sheet.
* @param {jQuery} html HTML content of the sheet.
*/
activateListeners(html) {
super.activateListeners(html);
@@ -47,46 +47,18 @@ export class AdvancementSheetL5r5e extends ItemSheetL5r5e {
html.find("#advancement_type").on("change", (event) => {
if ($(event.target).val() === "skill") {
this._updateChoice(
{
ring: currentRing,
},
{
skill: currentSkill,
}
);
this._updateChoice({ ring: currentRing }, { skill: currentSkill });
} else {
this._updateChoice(
{
skill: currentSkill,
},
{
ring: currentRing,
}
);
this._updateChoice({ skill: currentSkill }, { ring: currentRing });
}
});
html.find("#advancement_ring").on("change", (event) => {
this._updateChoice(
{
ring: currentRing,
},
{
ring: $(event.target).val(),
}
);
this._updateChoice({ ring: currentRing }, { ring: $(event.target).val() });
});
html.find("#advancement_skill").on("change", (event) => {
this._updateChoice(
{
skill: currentSkill,
},
{
skill: $(event.target).val(),
}
);
this._updateChoice({ skill: currentSkill }, { skill: $(event.target).val() });
});
}
@@ -101,47 +73,55 @@ export class AdvancementSheetL5r5e extends ItemSheetL5r5e {
// Modify image to reflect choice
if (newChoice.ring) {
name = game.i18n.localize(`l5r5e.rings.${newChoice.ring}`) + "+1";
img = `systems/l5r5e/assets/icons/rings/${newChoice.ring}.svg`;
} else if (newChoice.skill) {
name =
game.i18n.localize(`l5r5e.skills.${CONFIG.l5r5e.skills.get(newChoice.skill)}.${newChoice.skill}`) +
"+1";
img = `systems/l5r5e/assets/dices/default/skill_blank.svg`;
}
// Object embed in actor ?
if (this.actor) {
const actor = duplicate(this.actor.data.data);
const actor = this.document.actor;
if (actor) {
const actorData = foundry.utils.duplicate(actor.data.data);
let skillCatId = null;
// Old choices
if (oldChoice.ring) {
actor.rings[oldChoice.ring] = Math.max(1, actor.rings[oldChoice.ring] - 1);
actorData.rings[oldChoice.ring] = Math.max(1, actorData.rings[oldChoice.ring] - 1);
}
if (oldChoice.skill) {
skillCatId = CONFIG.l5r5e.skills.get(oldChoice.skill);
actor.skills[skillCatId][oldChoice.skill] = Math.max(0, actor.skills[skillCatId][oldChoice.skill] - 1);
actorData.skills[skillCatId][oldChoice.skill] = Math.max(
0,
actorData.skills[skillCatId][oldChoice.skill] - 1
);
}
// new choices
if (newChoice.ring) {
actor.rings[newChoice.ring] = actor.rings[newChoice.ring] + 1;
xp_used = actor.rings[newChoice.ring] * CONFIG.l5r5e.xp.ringCostMultiplier;
actorData.rings[newChoice.ring] = actorData.rings[newChoice.ring] + 1;
xp_used = actorData.rings[newChoice.ring] * CONFIG.l5r5e.xp.ringCostMultiplier;
name =
game.i18n.localize(`l5r5e.rings.${newChoice.ring}`) +
` +1 (${actor.rings[newChoice.ring] - 1} -> ${actor.rings[newChoice.ring]})`;
` +1 (${actorData.rings[newChoice.ring] - 1} -> ${actorData.rings[newChoice.ring]})`;
}
if (newChoice.skill) {
skillCatId = CONFIG.l5r5e.skills.get(newChoice.skill);
actor.skills[skillCatId][newChoice.skill] = actor.skills[skillCatId][newChoice.skill] + 1;
xp_used = actor.skills[skillCatId][newChoice.skill] * CONFIG.l5r5e.xp.skillCostMultiplier;
actorData.skills[skillCatId][newChoice.skill] = actorData.skills[skillCatId][newChoice.skill] + 1;
xp_used = actorData.skills[skillCatId][newChoice.skill] * CONFIG.l5r5e.xp.skillCostMultiplier;
name =
game.i18n.localize(`l5r5e.skills.${skillCatId}.${newChoice.skill}`) +
` +1 (${actor.skills[skillCatId][newChoice.skill] - 1} -> ${
actor.skills[skillCatId][newChoice.skill]
` +1 (${actorData.skills[skillCatId][newChoice.skill] - 1} -> ${
actorData.skills[skillCatId][newChoice.skill]
})`;
}
// Update Actor
await this.actor.update({
data: diffObject(this.actor.data.data, actor),
await actor.update({
data: foundry.utils.diffObject(actor.data.data, actorData),
});
}

View File

@@ -6,7 +6,7 @@ import { ItemSheetL5r5e } from "./item-sheet.js";
export class ArmorSheetL5r5e extends ItemSheetL5r5e {
/** @override */
static get defaultOptions() {
return mergeObject(super.defaultOptions, {
return foundry.utils.mergeObject(super.defaultOptions, {
classes: ["l5r5e", "sheet", "armor"],
template: CONFIG.l5r5e.paths.templates + "items/armor/armor-sheet.html",
width: 520,

View File

@@ -0,0 +1,17 @@
import { ItemSheetL5r5e } from "./item-sheet.js";
/**
* @extends {ItemSheet}
*/
export class BondSheetL5r5e extends ItemSheetL5r5e {
/** @override */
static get defaultOptions() {
return foundry.utils.mergeObject(super.defaultOptions, {
classes: ["l5r5e", "sheet", "bond"],
template: CONFIG.l5r5e.paths.templates + "items/bond/bond-sheet.html",
width: 520,
height: 480,
tabs: [{ navSelector: ".sheet-tabs", contentSelector: ".sheet-body", initial: "description" }],
});
}
}

View File

@@ -0,0 +1,131 @@
import { ItemSheetL5r5e } from "./item-sheet.js";
/**
* @extends {ItemSheet}
*/
export class ItemPatternSheetL5r5e extends ItemSheetL5r5e {
/** @override */
static get defaultOptions() {
return foundry.utils.mergeObject(super.defaultOptions, {
classes: ["l5r5e", "sheet", "item-pattern"],
template: CONFIG.l5r5e.paths.templates + "items/item-pattern/item-pattern-sheet.html",
width: 520,
height: 480,
tabs: [{ navSelector: ".sheet-tabs", contentSelector: ".sheet-body", initial: "description" }],
});
}
/**
* @return {Object|Promise}
*/
async getData(options = {}) {
const sheetData = await super.getData(options);
// Linked Property
sheetData.data.linkedProperty = await this.getLinkedProperty(sheetData);
return sheetData;
}
/**
* Get the linked property name
* @param sheetData
* @return {Promise<null|{name, id}>}
*/
async getLinkedProperty(sheetData) {
if (sheetData.data.data.linked_property_id) {
const linkedProperty = await game.l5r5e.HelpersL5r5e.getObjectGameOrPack({
id: sheetData.data.data.linked_property_id,
type: "Item",
});
if (linkedProperty) {
return {
id: linkedProperty.data._id,
name: linkedProperty.data.name,
};
}
}
return null;
}
/**
* Subscribe to events from the sheet.
* @param {jQuery} html HTML content of the sheet.
*/
activateListeners(html) {
super.activateListeners(html);
// Everything below here is only needed if the sheet is editable
if (!this.options.editable) {
return;
}
// Delete the linked property
html.find(`.linked-property-delete`).on("click", this._deleteLinkedProperty.bind(this));
}
/**
* Callback actions which occur when a dragged element is dropped on a target.
* @param {DragEvent} event The originating DragEvent
* @private
*/
async _onDrop(event) {
// Everything below here is only needed if the sheet is editable
if (!this.options.editable) {
return;
}
// Only property allowed here
let item = await game.l5r5e.HelpersL5r5e.getDragnDropTargetObject(event);
if (!item || item.documentName !== "Item" || item.data.type !== "property") {
return;
}
// Set the new property, and update
this.document.data.data.linked_property_id = item.id;
this.document.update({
data: {
linked_property_id: this.document.data.data.linked_property_id,
},
});
}
/**
* Remove the link to a property for the current item
* @param {Event} event
* @return {Promise<void>}
* @private
*/
async _deleteLinkedProperty(event) {
event.preventDefault();
event.stopPropagation();
let name;
const linkedProperty = await game.l5r5e.HelpersL5r5e.getObjectGameOrPack({
id: this.document.data.data.linked_property_id,
type: "Item",
});
if (linkedProperty) {
name = linkedProperty.data.name;
}
const callback = async () => {
this.document.data.data.linked_property_id = null;
this.document.update({
data: {
linked_property_id: this.document.data.data.linked_property_id,
},
});
};
// Holing Ctrl = without confirm
if (event.ctrlKey || !name) {
return callback();
}
game.l5r5e.HelpersL5r5e.confirmDeleteDialog(
game.i18n.format("l5r5e.global.delete_confirm", { name }),
callback
);
}
}

View File

@@ -5,7 +5,7 @@
export class ItemSheetL5r5e extends ItemSheet {
/** @override */
static get defaultOptions() {
return mergeObject(super.defaultOptions, {
return foundry.utils.mergeObject(super.defaultOptions, {
classes: ["l5r5e", "sheet", "item"],
template: CONFIG.l5r5e.paths.templates + "items/item/item-sheet.html",
width: 520,
@@ -14,13 +14,14 @@ export class ItemSheetL5r5e extends ItemSheet {
});
}
/** @override */
async getData() {
const sheetData = super.getData();
/**
* @return {Object|Promise}
*/
async getData(options = {}) {
const sheetData = await super.getData(options);
sheetData.data.dtypes = ["String", "Number", "Boolean"];
sheetData.data.ringsList = game.l5r5e.HelpersL5r5e.getRingsList();
sheetData.data.techniquesList = game.l5r5e.HelpersL5r5e.getTechniquesList();
// Prepare Properties (id/name => object)
await this._prepareProperties(sheetData);
@@ -35,16 +36,16 @@ export class ItemSheetL5r5e extends ItemSheet {
async _prepareProperties(sheetData) {
sheetData.data.propertiesList = [];
if (Array.isArray(sheetData.data.properties)) {
if (Array.isArray(sheetData.data.data.properties)) {
const props = [];
for (const property of sheetData.data.properties) {
const gameProp = await game.l5r5e.HelpersL5r5e.getObjectGameOrPack(property.id, "Item");
for (const property of sheetData.data.data.properties) {
const gameProp = await game.l5r5e.HelpersL5r5e.getObjectGameOrPack({ id: property.id, type: "Item" });
if (gameProp) {
sheetData.data.propertiesList.push(gameProp);
props.push({ id: gameProp._id, name: gameProp.name });
props.push({ id: gameProp.id, name: gameProp.name });
}
}
sheetData.data.properties = props;
sheetData.data.data.properties = props;
}
}
@@ -71,6 +72,9 @@ export class ItemSheetL5r5e extends ItemSheet {
*/
async _updateObject(event, formData) {
if (formData["data.description"]) {
// Base links (Journal, compendiums...)
formData["data.description"] = TextEditor.enrichHTML(formData["data.description"]);
// L5R Symbols
formData["data.description"] = game.l5r5e.HelpersL5r5e.convertSymbols(formData["data.description"], true);
}
return super._updateObject(event, formData);
@@ -78,19 +82,14 @@ export class ItemSheetL5r5e extends ItemSheet {
/**
* Subscribe to events from the sheet.
* @param html HTML content of the sheet.
* @param {jQuery} html HTML content of the sheet.
* @override
*/
activateListeners(html) {
super.activateListeners(html);
// Toggle
html.find(".toggle-on-click").on("click", (event) => {
event.preventDefault();
event.stopPropagation();
const elmt = $(event.currentTarget).data("toggle");
const tgt = html.find("." + elmt);
tgt.toggleClass("toggle-active");
});
// Commons
game.l5r5e.HelpersL5r5e.commonListeners(html);
// Everything below here is only needed if the sheet is editable
if (!this.options.editable) {
@@ -110,7 +109,7 @@ export class ItemSheetL5r5e extends ItemSheet {
/**
* Create drag-and-drop workflow handlers for this Application
* @return An array of DragDrop handlers
* @return {DragDrop[]} An array of DragDrop handlers
*/
_createDragDropHandlers() {
return [
@@ -134,8 +133,21 @@ export class ItemSheetL5r5e extends ItemSheet {
}
// Check item type and subtype
const item = await game.l5r5e.HelpersL5r5e.getDragnDropTargetObject(event);
if (!item || item.entity !== "Item" || item.data.type !== "property" || this.item.type === "property") {
let item = await game.l5r5e.HelpersL5r5e.getDragnDropTargetObject(event);
if (!item || item.documentName !== "Item" || this.item.type === "property") {
return;
}
// Specific ItemPattern's drop, get the associated props instead
if (item.data.type === "item_pattern" && item.data.data.linked_property_id) {
item = await game.l5r5e.HelpersL5r5e.getObjectGameOrPack({
id: item.data.data.linked_property_id,
type: "Item",
});
}
// Final object has to be a property
if (item.data.type !== "property") {
return;
}
@@ -145,49 +157,52 @@ export class ItemSheetL5r5e extends ItemSheet {
/**
* Add a property to the current item
* @param {Item} item
* @private
*/
_addProperty(item) {
if (!Array.isArray(this.entity.data.data.properties)) {
this.entity.data.data.properties = [];
if (!Array.isArray(this.document.data.data.properties)) {
this.document.data.data.properties = [];
}
if (this.entity.data.data.properties.findIndex((p) => p.id === item.id) !== -1) {
if (this.document.data.data.properties.findIndex((p) => p.id === item.id) !== -1) {
return;
}
this.entity.data.data.properties.push({ id: item.id, name: item.name });
this.document.data.data.properties.push({ id: item.id, name: item.name });
this.entity.update({
this.document.update({
data: {
properties: this.entity.data.data.properties,
properties: this.document.data.data.properties,
},
});
}
/**
* Delete a property from the current item
* @param {Event} event
* @return {Promise<void>}
* @private
*/
_deleteProperty(event) {
event.preventDefault();
event.stopPropagation();
if (!Array.isArray(this.entity.data.data.properties)) {
if (!Array.isArray(this.document.data.data.properties)) {
return;
}
const id = $(event.currentTarget).parents(".property").data("propertyId");
const tmpProps = this.entity.data.data.properties.find((p) => p.id === id);
const tmpProps = this.document.data.data.properties.find((p) => p.id === id);
if (!tmpProps) {
return;
}
const callback = async () => {
this.entity.data.data.properties = this.entity.data.data.properties.filter((p) => p.id !== id);
this.entity.update({
this.document.data.data.properties = this.document.data.data.properties.filter((p) => p.id !== id);
this.document.update({
data: {
properties: this.entity.data.data.properties,
properties: this.document.data.data.properties,
},
});
};
@@ -202,4 +217,60 @@ export class ItemSheetL5r5e extends ItemSheet {
callback
);
}
/**
* Add a embed item
* @param {Event} event
* @private
*/
_addSubItem(event) {
event.preventDefault();
event.stopPropagation();
const itemId = $(event.currentTarget).data("item-id");
console.warn("L5R5E | TODO ItemSheetL5r5e._addSubItem()", itemId); // TODO _addSubItem Currently not used, title override it
}
/**
* Add a embed item
* @param {Event} event
* @private
*/
_editSubItem(event) {
event.preventDefault();
event.stopPropagation();
const itemId = $(event.currentTarget).data("item-id");
const item = this.document.items.get(itemId);
if (item) {
item.sheet.render(true);
}
}
/**
* Delete a embed item
* @param {Event} event
* @private
*/
_deleteSubItem(event) {
event.preventDefault();
event.stopPropagation();
const itemId = $(event.currentTarget).data("item-id");
const item = this.document.getEmbedItem(itemId);
if (!item) {
return;
}
const callback = async () => {
this.document.deleteEmbedItem(itemId);
};
// Holing Ctrl = without confirm
if (event.ctrlKey) {
return callback();
}
game.l5r5e.HelpersL5r5e.confirmDeleteDialog(
game.i18n.format("l5r5e.global.delete_confirm", { name: item.name }),
callback
);
}
}

View File

@@ -12,7 +12,7 @@ export class PeculiaritySheetL5r5e extends ItemSheetL5r5e {
/** @override */
static get defaultOptions() {
return mergeObject(super.defaultOptions, {
return foundry.utils.mergeObject(super.defaultOptions, {
classes: ["l5r5e", "sheet", "peculiarity"],
template: CONFIG.l5r5e.paths.templates + "items/peculiarity/peculiarity-sheet.html",
width: 520,
@@ -21,8 +21,8 @@ export class PeculiaritySheetL5r5e extends ItemSheetL5r5e {
});
}
async getData() {
const sheetData = await super.getData();
async getData(options = {}) {
const sheetData = await super.getData(options);
sheetData.data.subTypesList = PeculiaritySheetL5r5e.types.map((e) => ({
id: e,

View File

@@ -6,7 +6,7 @@ import { ItemSheetL5r5e } from "./item-sheet.js";
export class PropertySheetL5r5e extends ItemSheetL5r5e {
/** @override */
static get defaultOptions() {
return mergeObject(super.defaultOptions, {
return foundry.utils.mergeObject(super.defaultOptions, {
classes: ["l5r5e", "sheet", "property"],
template: CONFIG.l5r5e.paths.templates + "items/property/property-sheet.html",
width: 520,
@@ -14,5 +14,11 @@ export class PropertySheetL5r5e extends ItemSheetL5r5e {
tabs: [{ navSelector: ".sheet-tabs", contentSelector: ".sheet-body", initial: "description" }],
});
}
// TODO certain propriétés en annule d'autres : aiguisé <-> abimé. voir comment faire.
// TODO Some properties cancel others :
// Concealable and Cumbersome
// Ceremonial and Mundane
// Damaged and Durable
// Resplendent and Subtle
// Subtle and Wargear
// Sacred and Unholy
}

View File

@@ -0,0 +1,17 @@
import { ItemSheetL5r5e } from "./item-sheet.js";
/**
* @extends {ItemSheet}
*/
export class SignatureScrollSheetL5r5e extends ItemSheetL5r5e {
/** @override */
static get defaultOptions() {
return foundry.utils.mergeObject(super.defaultOptions, {
classes: ["l5r5e", "sheet", "signature-scroll"],
template: CONFIG.l5r5e.paths.templates + "items/signature-scroll/signature-scroll-sheet.html",
width: 520,
height: 480,
tabs: [{ navSelector: ".sheet-tabs", contentSelector: ".sheet-body", initial: "description" }],
});
}
}

View File

@@ -6,7 +6,7 @@ import { ItemSheetL5r5e } from "./item-sheet.js";
export class TechniqueSheetL5r5e extends ItemSheetL5r5e {
/** @override */
static get defaultOptions() {
return mergeObject(super.defaultOptions, {
return foundry.utils.mergeObject(super.defaultOptions, {
classes: ["l5r5e", "sheet", "technique"],
template: CONFIG.l5r5e.paths.templates + "items/technique/technique-sheet.html",
width: 520,
@@ -16,16 +16,15 @@ export class TechniqueSheetL5r5e extends ItemSheetL5r5e {
}
/** @override */
async getData() {
const sheetData = await super.getData();
async getData(options = {}) {
const sheetData = await super.getData(options);
// Add "school ability" and "mastery ability"
CONFIG.l5r5e.techniques_school.forEach((e) => {
sheetData.data.techniquesList.push({
id: e,
label: game.i18n.localize(`l5r5e.techniques.${e}`),
});
});
// List all available techniques type
const types = ["core", "school", "title"];
if (game.settings.get("l5r5e", "techniques-customs")) {
types.push("custom");
}
sheetData.data.techniquesList = game.l5r5e.HelpersL5r5e.getTechniquesList({ types });
return sheetData;
}

View File

@@ -0,0 +1,152 @@
import { ItemSheetL5r5e } from "./item-sheet.js";
/**
* @extends {ItemSheet}
*/
export class TitleSheetL5r5e extends ItemSheetL5r5e {
/** @override */
static get defaultOptions() {
return foundry.utils.mergeObject(super.defaultOptions, {
classes: ["l5r5e", "sheet", "title"],
template: CONFIG.l5r5e.paths.templates + "items/title/title-sheet.html",
width: 520,
height: 480,
tabs: [{ navSelector: ".sheet-tabs", contentSelector: ".sheet-body", initial: "description" }],
});
}
/**
* @return {Object|Promise}
*/
async getData(options = {}) {
const sheetData = await super.getData(options);
// Prepare OwnedItems
sheetData.data.embedItemsList = this._prepareEmbedItems(sheetData.data.data.items);
// Automatically compute the total xp cost (full price) and XP in title (cursus, some halved prices)
const { xp_used_total, xp_used } = game.l5r5e.HelpersL5r5e.getItemsXpCost(sheetData.data.embedItemsList);
sheetData.data.data.xp_used_total = xp_used_total;
sheetData.data.data.xp_used = xp_used;
return sheetData;
}
/**
* Prepare Embed items
* @param {[]|Map} itemsMap
* @return {[]}
* @private
*/
_prepareEmbedItems(itemsMap) {
let itemsList = itemsMap;
if (itemsMap instanceof Map) {
itemsList = Array.from(itemsMap).map(([id, item]) => item.data);
}
// Sort by rank desc
itemsList.sort((a, b) => (b.data.rank || 0) - (a.data.rank || 0));
return itemsList;
}
/**
* Callback actions which occur when a dragged element is dropped on a target.
* @param {DragEvent} event The originating DragEvent
* @private
*/
async _onDrop(event) {
// Everything below here is only needed if the sheet is editable
if (!this.options.editable) {
return;
}
// Check item type and subtype
let item = await game.l5r5e.HelpersL5r5e.getDragnDropTargetObject(event);
if (!item || item.documentName !== "Item" || !["technique", "advancement"].includes(item.data.type)) {
return;
}
const data = item.data.toObject(false);
// Check xp for techs
if (item.data.type === "technique") {
data.data.xp_cost = data.data.xp_cost > 0 ? data.data.xp_cost : CONFIG.l5r5e.xp.techniqueCost;
data.data.xp_used = data.data.xp_cost;
}
this.document.addEmbedItem(data);
}
/**
* Subscribe to events from the sheet.
* @param {jQuery} html HTML content of the sheet.
*/
activateListeners(html) {
super.activateListeners(html);
// Everything below here is only needed if the sheet is editable
if (!this.options.editable) {
return;
}
// *** Sub-Items management ***
html.find(".item-add").on("click", this._addSubItem.bind(this));
html.find(`.item-edit`).on("click", this._editSubItem.bind(this));
html.find(`.item-delete`).on("click", this._deleteSubItem.bind(this));
html.find(`.item-curriculum`).on("click", this._switchSubItemCurriculum.bind(this));
}
/**
* Display a dialog to choose what Item to add, and add it on this Item
* @param {Event} event
* @return {Promise<void>}
* @private
*/
async _addSubItem(event) {
event.preventDefault();
event.stopPropagation();
// Show Dialog
const selectedType = await game.l5r5e.HelpersL5r5e.showSubItemDialog(["advancement", "technique"]);
if (!selectedType) {
return;
}
// Create the new Item
const itemId = await this.document.addEmbedItem(
new game.l5r5e.ItemL5r5e({
name: game.i18n.localize(`ITEM.Type${selectedType.capitalize()}`),
type: selectedType,
img: `${CONFIG.l5r5e.paths.assets}icons/items/${selectedType}.svg`,
})
);
// Get the store object and display it
const item = this.document.items.get(itemId);
if (item) {
item.sheet.render(true);
}
}
/**
* Toogle the curriculum for this embed item
* @param {Event} event
* @return {Promise<void>}
* @private
*/
async _switchSubItemCurriculum(event) {
event.preventDefault();
event.stopPropagation();
const itemId = $(event.currentTarget).data("item-id");
const item = this.document.getEmbedItem(itemId);
if (!item) {
return;
}
// Switch the state and update
item.data.data.in_curriculum = !item.data.data.in_curriculum;
return this.document.updateEmbedItem(item);
}
}

View File

@@ -6,7 +6,7 @@ import { ItemSheetL5r5e } from "./item-sheet.js";
export class WeaponSheetL5r5e extends ItemSheetL5r5e {
/** @override */
static get defaultOptions() {
return mergeObject(super.defaultOptions, {
return foundry.utils.mergeObject(super.defaultOptions, {
classes: ["l5r5e", "sheet", "weapon"],
template: CONFIG.l5r5e.paths.templates + "items/weapon/weapon-sheet.html",
width: 520,
@@ -15,8 +15,8 @@ export class WeaponSheetL5r5e extends ItemSheetL5r5e {
});
}
async getData() {
const sheetData = await super.getData();
async getData(options = {}) {
const sheetData = await super.getData(options);
// Martial skills only
sheetData.data.skills = Array.from(CONFIG.l5r5e.skills)

View File

@@ -31,4 +31,20 @@ export class BaseJournalSheetL5r5e extends JournalSheet {
}
return super._updateObject(event, formData);
}
/**
* Subscribe to events from the sheet.
* @param {jQuery} html HTML content of the sheet.
*/
activateListeners(html) {
super.activateListeners(html);
// Commons
game.l5r5e.HelpersL5r5e.commonListeners(html);
// *** Everything below here is only needed if the sheet is editable ***
// if (!this.options.editable) {
// return;
// }
}
}

View File

@@ -19,7 +19,7 @@ import { RollL5r5e } from "./dice/roll.js";
import { DicePickerDialog } from "./dice/dice-picker-dialog.js";
import { RollnKeepDialog } from "./dice/roll-n-keep-dialog.js";
import { CombatL5r5e } from "./combat.js";
import { GmToolsDialog } from "./dice/gm-tools-dialog.js";
import { GmToolsDialog } from "./dialogs/gm-tools-dialog.js";
// Items
import { ItemL5r5e } from "./item.js";
import { ItemSheetL5r5e } from "./items/item-sheet.js";
@@ -29,6 +29,10 @@ import { TechniqueSheetL5r5e } from "./items/technique-sheet.js";
import { PropertySheetL5r5e } from "./items/property-sheet.js";
import { AdvancementSheetL5r5e } from "./items/advancement-sheet.js";
import { PeculiaritySheetL5r5e } from "./items/peculiarity-sheet.js";
import { TitleSheetL5r5e } from "./items/title-sheet.js";
import { BondSheetL5r5e } from "./items/bond-sheet.js";
import { SignatureScrollSheetL5r5e } from "./items/signature-scroll-sheet.js";
import { ItemPatternSheetL5r5e } from "./items/item-pattern-sheet.js";
// JournalEntry
import { JournalL5r5e } from "./journal.js";
import { BaseJournalSheetL5r5e } from "./journals/base-journal-sheet.js";
@@ -54,20 +58,19 @@ Hooks.once("init", async () => {
CONFIG.l5r5e = L5R5E;
// Assign custom classes and constants here
CONFIG.Combat.entityClass = CombatL5r5e;
CONFIG.Actor.entityClass = ActorL5r5e;
CONFIG.Combat.documentClass = CombatL5r5e;
CONFIG.Actor.documentClass = ActorL5r5e;
CONFIG.Actor.sheetClasses = CharacterSheetL5r5e;
CONFIG.Item.entityClass = ItemL5r5e;
CONFIG.JournalEntry.entityClass = JournalL5r5e;
CONFIG.Item.documentClass = ItemL5r5e;
CONFIG.JournalEntry.documentClass = JournalL5r5e;
CONFIG.JournalEntry.sheetClass = BaseJournalSheetL5r5e;
// Define custom Roll class
CONFIG.Dice.rolls.push(CONFIG.Dice.rolls[0]);
CONFIG.Dice.rolls[0] = RollL5r5e;
CONFIG.Dice.rolls.unshift(RollL5r5e);
// Define DiceTerms
CONFIG.Dice.terms["s"] = AbilityDie;
CONFIG.Dice.terms["r"] = RingDie;
CONFIG.Dice.terms[AbilityDie.DENOMINATION] = AbilityDie;
CONFIG.Dice.terms[RingDie.DENOMINATION] = RingDie;
// Add some classes in game
game.l5r5e = {
@@ -75,6 +78,7 @@ Hooks.once("init", async () => {
RingDie,
AbilityDie,
HelpersL5r5e,
ItemL5r5e,
RollL5r5e,
DicePickerDialog,
RollnKeepDialog,
@@ -109,6 +113,10 @@ Hooks.once("init", async () => {
Items.registerSheet("l5r5e", PropertySheetL5r5e, { types: ["property"], makeDefault: true });
Items.registerSheet("l5r5e", PeculiaritySheetL5r5e, { types: ["peculiarity"], makeDefault: true });
Items.registerSheet("l5r5e", AdvancementSheetL5r5e, { types: ["advancement"], makeDefault: true });
Items.registerSheet("l5r5e", TitleSheetL5r5e, { types: ["title"], makeDefault: true });
Items.registerSheet("l5r5e", BondSheetL5r5e, { types: ["bond"], makeDefault: true });
Items.registerSheet("l5r5e", SignatureScrollSheetL5r5e, { types: ["signature_scroll"], makeDefault: true });
Items.registerSheet("l5r5e", ItemPatternSheetL5r5e, { types: ["item_pattern"], makeDefault: true });
// Journal
Items.unregisterSheet("core", JournalSheet);
@@ -116,7 +124,7 @@ Hooks.once("init", async () => {
// Override the default Token _drawBar function to allow fatigue bar reversing.
Token.prototype._drawBar = function (number, bar, data) {
const reverseBar = data.attribute === "fatigue" && game.settings.get("l5r5e", "token.reverseFatigueBar");
const reverseBar = data.attribute === "fatigue" && game.settings.get("l5r5e", "token-reverseFatigueBar");
// Bar value
const pct = Math.clamped(Number(data.value), 0, data.max) / data.max;
@@ -164,3 +172,6 @@ Hooks.on("renderChatMessage", (message, html, data) => HooksL5r5e.renderChatMess
Hooks.on("renderCombatTracker", (app, html, data) => HooksL5r5e.renderCombatTracker(app, html, data));
Hooks.on("renderCompendium", async (app, html, data) => HooksL5r5e.renderCompendium(app, html, data));
Hooks.on("diceSoNiceRollStart", (messageId, context) => HooksL5r5e.diceSoNiceRollStart(messageId, context));
Hooks.on("preCreateChatMessage", (document, data, options, userId) =>
HooksL5r5e.preCreateChatMessage(document, data, options, userId)
);

View File

@@ -3,18 +3,19 @@
*/
export class MigrationL5r5e {
/**
* Version needed for migration stuff to trigger
* Minimum Version needed for migration stuff to trigger
* @type {string}
*/
static NEEDED_VERSION = "1.1.0";
static NEEDED_VERSION = "1.3.0";
/**
* Return true if the current world need some updates
* @returns {boolean}
* Return true if the version need some updates
* @param {string} version
* @return {boolean}
*/
static needUpdate() {
static needUpdate(version) {
const currentVersion = game.settings.get("l5r5e", "systemMigrationVersion");
return currentVersion && isNewerVersion(MigrationL5r5e.NEEDED_VERSION, currentVersion);
return currentVersion && foundry.utils.isNewerVersion(version, currentVersion);
}
/**
@@ -26,6 +27,11 @@ export class MigrationL5r5e {
return;
}
// if (MigrationL5r5e.needUpdate("1.3.0")) {
// ChatMessage.create({"content": "<strong>L5R5E v1.3.0 :</strong><br>"});
// }
// Warn the users
ui.notifications.info(
`Applying L5R5e System Migration for version ${game.system.data.version}.` +
` Please be patient and do not close your game or shut down your server.`,
@@ -33,56 +39,67 @@ export class MigrationL5r5e {
);
// Migrate World Actors
for (let a of game.actors.entities) {
for (let actor of game.actors.contents) {
try {
const updateData = MigrationL5r5e._migrateActorData(a.data);
if (!isObjectEmpty(updateData)) {
console.log(`Migrating Actor entity ${a.name}`);
await a.update(updateData, { enforceTypes: false });
const updateData = MigrationL5r5e._migrateActorData(actor.data);
if (!foundry.utils.isObjectEmpty(updateData)) {
console.log(`L5R5E | Migrating Actor entity ${actor.name}`);
await actor.update(updateData);
}
} catch (err) {
err.message = `Failed L5R5e system migration for Actor ${a.name}: ${err.message}`;
err.message = `L5R5E | Failed L5R5e system migration for Actor ${actor.name}: ${err.message}`;
console.error(err);
}
}
// Migrate World Items
for (let i of game.items.entities) {
for (let item of game.items.contents) {
try {
const updateData = MigrationL5r5e._migrateItemData(i.data);
if (!isObjectEmpty(updateData)) {
console.log(`Migrating Item entity ${i.name}`);
await i.update(updateData, { enforceTypes: false });
const updateData = MigrationL5r5e._migrateItemData(item.data);
if (!foundry.utils.isObjectEmpty(updateData)) {
console.log(`L5R5E | Migrating Item entity ${item.name}`);
await item.update(updateData);
}
} catch (err) {
err.message = `Failed L5R5e system migration for Item ${i.name}: ${err.message}`;
err.message = `L5R5E | Failed L5R5e system migration for Item ${item.name}: ${err.message}`;
console.error(err);
}
}
// Migrate Actor Override Tokens
for (let s of game.scenes.entities) {
for (let scene of game.scenes.contents) {
try {
const updateData = MigrationL5r5e._migrateSceneData(s.data);
if (!isObjectEmpty(updateData)) {
console.log(`Migrating Scene entity ${s.name}`);
await s.update(updateData, { enforceTypes: false });
const updateData = MigrationL5r5e._migrateSceneData(scene.data);
if (!foundry.utils.isObjectEmpty(updateData)) {
console.log(`L5R5E | Migrating Scene entity ${scene.name}`);
await scene.update(updateData);
}
} catch (err) {
err.message = `Failed L5R5e system migration for Scene ${s.name}: ${err.message}`;
err.message = `L5R5E | Failed L5R5e system migration for Scene ${scene.name}: ${err.message}`;
console.error(err);
}
}
// Migrate World Compendium Packs
for (let p of game.packs) {
if (p.metadata.package !== "world") {
for (let pack of game.packs) {
if (pack.metadata.package !== "world" || !["Actor", "Item", "Scene"].includes(pack.metadata.entity)) {
continue;
}
if (!["Actor", "Item", "Scene"].includes(p.metadata.entity)) {
continue;
await MigrationL5r5e._migrateCompendium(pack);
}
// Migrate ChatMessages
for (let message of game.collections.get("ChatMessage")) {
try {
const updateData = MigrationL5r5e._migrateChatMessage(message.data);
if (!foundry.utils.isObjectEmpty(updateData)) {
console.log(`L5R5E | Migrating ChatMessage entity ${message.id}`);
await message.update(updateData);
}
} catch (err) {
err.message = `L5R5E | Failed L5R5e system migration for Scene ${message.id}: ${err.message}`;
console.error(err);
}
await MigrationL5r5e._migrateCompendium(p);
}
// Set the migration as complete
@@ -94,7 +111,7 @@ export class MigrationL5r5e {
/**
* Apply migration rules to all Entities within a single Compendium pack
* @param pack
* @param {Compendium} pack
* @return {Promise}
*/
static async _migrateCompendium(pack) {
@@ -103,18 +120,20 @@ export class MigrationL5r5e {
return;
}
// Unlock the pack for editing
const wasLocked = pack.locked;
await pack.configure({ locked: false });
try {
// Unlock the pack for editing
await pack.configure({ locked: false });
// Begin by requesting server-side data model migration and get the migrated content
await pack.migrate();
const content = await pack.getContent();
// Begin by requesting server-side data model migration and get the migrated content
await pack.migrate();
const documents = await pack.getDocuments();
// Iterate over compendium entries - applying fine-tuned migration functions
const updateDatasList = [];
for (let ent of documents) {
let updateData = {};
// Iterate over compendium entries - applying fine-tuned migration functions
for (let ent of content) {
let updateData = {};
try {
switch (entity) {
case "Actor":
updateData = MigrationL5r5e._migrateActorData(ent.data);
@@ -126,24 +145,30 @@ export class MigrationL5r5e {
updateData = MigrationL5r5e._migrateSceneData(ent.data);
break;
}
if (isObjectEmpty(updateData)) {
if (foundry.utils.isObjectEmpty(updateData)) {
continue;
}
// Save the entry, if data was changed
updateData["_id"] = ent._id;
await pack.updateEntity(updateData);
console.log(`Migrated ${entity} entity ${ent.name} in Compendium ${pack.collection}`);
} catch (err) {
// Handle migration failures
err.message = `Failed L5R5e system migration for entity ${ent.name} in pack ${pack.collection}: ${err.message}`;
console.error(err);
// Add the entry, if data was changed
updateData["_id"] = ent.data._id;
updateDatasList.push(updateData);
console.log(`L5R5E | Migrating ${entity} entity ${ent.name} in Compendium ${pack.collection}`);
}
// Save the modified entries
if (updateDatasList.length > 0) {
await pack.documentClass.updateDocuments(updateDatasList, { pack: pack.collection });
}
} catch (err) {
// Handle migration failures
err.message = `L5R5E | Failed system migration for entities ${entity} in pack ${pack.collection}: ${err.message}`;
console.error(err);
}
// Apply the original locked status for the pack
pack.configure({ locked: wasLocked });
console.log(`Migrated all ${entity} entities from Compendium ${pack.collection}`);
console.log(`L5R5E | Migrated all ${entity} contents from Compendium ${pack.collection}`);
}
/**
@@ -153,7 +178,7 @@ export class MigrationL5r5e {
* @return {Object} The updateData to apply
*/
static _migrateSceneData(scene) {
const tokens = duplicate(scene.tokens);
const tokens = foundry.utils.duplicate(scene.tokens);
return {
tokens: tokens.map((t) => {
if (!t.actorId || t.actorLink || !t.actorData.data) {
@@ -166,7 +191,7 @@ export class MigrationL5r5e {
t.actorData = {};
} else if (!t.actorLink) {
const updateData = MigrationL5r5e._migrateActorData(token.data.actorData);
t.actorData = mergeObject(token.data.actorData, updateData);
t.actorData = foundry.utils.mergeObject(token.data.actorData, updateData);
}
return t;
}),
@@ -184,24 +209,45 @@ export class MigrationL5r5e {
const actorData = actor.data;
// ***** Start of 1.1.0 *****
// Add "Prepared" in actor
if (actorData.prepared === undefined) {
updateData["data.prepared"] = true;
}
if (MigrationL5r5e.needUpdate("1.1.0")) {
// Add "Prepared" in actor
if (actorData.prepared === undefined) {
updateData["data.prepared"] = true;
}
// NPC are now without autostats, we need to save the value
if (actor.type === "npc") {
if (actorData.endurance < 1) {
updateData["data.endurance"] = (Number(actorData.rings.earth) + Number(actorData.rings.fire)) * 2;
updateData["data.composure"] = (Number(actorData.rings.earth) + Number(actorData.rings.water)) * 2;
updateData["data.focus"] = Number(actorData.rings.air) + Number(actorData.rings.fire);
updateData["data.vigilance"] = Math.ceil(
(Number(actorData.rings.air) + Number(actorData.rings.water)) / 2
);
// NPC are now without autostats, we need to save the value
if (actor.type === "npc") {
if (actorData.endurance < 1) {
updateData["data.endurance"] = (Number(actorData.rings.earth) + Number(actorData.rings.fire)) * 2;
updateData["data.composure"] = (Number(actorData.rings.earth) + Number(actorData.rings.water)) * 2;
updateData["data.focus"] = Number(actorData.rings.air) + Number(actorData.rings.fire);
updateData["data.vigilance"] = Math.ceil(
(Number(actorData.rings.air) + Number(actorData.rings.water)) / 2
);
}
}
}
// ***** End of 1.1.0 *****
// ***** Start of 1.3.0 *****
if (MigrationL5r5e.needUpdate("1.3.0")) {
// PC/NPC removed notes useless props "value"
updateData["data.notes"] = actorData.notes.value;
// NPC have now more thant a Strength and a Weakness
if (actor.type === "npc" && actorData.rings_affinities) {
updateData["data.rings_affinities." + actorData.rings_affinities.strength.ring] =
actorData.rings_affinities.strength.value;
updateData["data.rings_affinities." + actorData.rings_affinities.weakness.ring] =
actorData.rings_affinities.weakness.value;
// Delete old keys : not working :'(
updateData["-=data.rings_affinities.strength"] = null;
updateData["-=data.rings_affinities.weakness"] = null;
}
}
// ***** End of 1.3.0 *****
return updateData;
}
@@ -212,7 +258,7 @@ export class MigrationL5r5e {
*/
static cleanActorData(actorData) {
const model = game.system.model.Actor[actorData.type];
actorData.data = filterObject(actorData.data, model);
actorData.data = foundry.utils.filterObject(actorData.data, model);
return actorData;
}
@@ -224,4 +270,22 @@ export class MigrationL5r5e {
// Nothing for now
return {};
}
/**
* Migrate a single Item entity to incorporate latest data model changes
* @param {ChatMessageData} message
*/
static _migrateChatMessage(message) {
const updateData = {};
// ***** Start of 1.3.0 *****
if (MigrationL5r5e.needUpdate("1.3.0")) {
// Old chat messages have a "0" in content, in foundry 0.8+ the roll content is generated only if content is null
if (message.content === "0") {
updateData["content"] = "";
}
}
return updateData;
}
}

View File

@@ -1,53 +1,61 @@
export const PreloadTemplates = async function () {
const templatePaths = [
const tpl = CONFIG.l5r5e.paths.templates;
return loadTemplates([
// Add paths to "systems/l5r5e/templates"
// actors
"systems/l5r5e/templates/actors/character/rings.html",
"systems/l5r5e/templates/actors/character/narrative.html",
"systems/l5r5e/templates/actors/character/identity.html",
"systems/l5r5e/templates/actors/character/category.html",
"systems/l5r5e/templates/actors/character/skill.html",
"systems/l5r5e/templates/actors/character/social.html",
"systems/l5r5e/templates/actors/character/attributes.html",
"systems/l5r5e/templates/actors/character/conflict.html",
"systems/l5r5e/templates/actors/character/stance.html",
"systems/l5r5e/templates/actors/character/techniques.html",
"systems/l5r5e/templates/actors/character/experience.html",
"systems/l5r5e/templates/actors/character/advancement.html",
"systems/l5r5e/templates/actors/character/twenty-questions-item.html",
// npc
"systems/l5r5e/templates/actors/npc/identity.html",
"systems/l5r5e/templates/actors/npc/narrative.html",
"systems/l5r5e/templates/actors/npc/social.html",
"systems/l5r5e/templates/actors/npc/rings.html",
"systems/l5r5e/templates/actors/npc/attributes.html",
"systems/l5r5e/templates/actors/npc/conflict.html",
"systems/l5r5e/templates/actors/npc/skill.html",
"systems/l5r5e/templates/actors/npc/techniques.html",
// items
"systems/l5r5e/templates/items/advancement/advancements.html",
"systems/l5r5e/templates/items/advancement/advancement-entry.html",
"systems/l5r5e/templates/items/advancement/advancement-sheet.html",
"systems/l5r5e/templates/items/armor/armors.html",
"systems/l5r5e/templates/items/armor/armor-entry.html",
"systems/l5r5e/templates/items/armor/armor-sheet.html",
"systems/l5r5e/templates/items/item/items.html",
"systems/l5r5e/templates/items/item/item-entry.html",
"systems/l5r5e/templates/items/item/item-value.html",
"systems/l5r5e/templates/items/item/item-sheet.html",
"systems/l5r5e/templates/items/item/item-infos.html",
"systems/l5r5e/templates/items/peculiarity/peculiarities.html",
"systems/l5r5e/templates/items/peculiarity/peculiarity-entry.html",
"systems/l5r5e/templates/items/peculiarity/peculiarity-sheet.html",
"systems/l5r5e/templates/items/property/properties.html",
"systems/l5r5e/templates/items/property/property-entry.html",
"systems/l5r5e/templates/items/property/property-sheet.html",
"systems/l5r5e/templates/items/technique/technique-entry.html",
"systems/l5r5e/templates/items/technique/technique-sheet.html",
"systems/l5r5e/templates/items/weapon/weapons.html",
"systems/l5r5e/templates/items/weapon/weapon-entry.html",
"systems/l5r5e/templates/items/weapon/weapon-sheet.html",
];
return loadTemplates(templatePaths);
// *** Actors : PC ***
`${tpl}actors/character/advancement-school.html`,
`${tpl}actors/character/advancement-others.html`,
`${tpl}actors/character/attributes.html`,
`${tpl}actors/character/category.html`,
`${tpl}actors/character/conflict.html`,
`${tpl}actors/character/experience.html`,
`${tpl}actors/character/identity.html`,
`${tpl}actors/character/inventory.html`,
`${tpl}actors/character/narrative.html`,
`${tpl}actors/character/rings.html`,
`${tpl}actors/character/skill.html`,
`${tpl}actors/character/social.html`,
`${tpl}actors/character/stance.html`,
`${tpl}actors/character/techniques.html`,
`${tpl}actors/character/twenty-questions-item.html`,
// *** Actors : Npc ***
`${tpl}actors/npc/attributes.html`,
`${tpl}actors/npc/conflict.html`,
`${tpl}actors/npc/identity.html`,
`${tpl}actors/npc/inventory.html`,
`${tpl}actors/npc/narrative.html`,
`${tpl}actors/npc/rings.html`,
`${tpl}actors/npc/social.html`,
`${tpl}actors/npc/skill.html`,
`${tpl}actors/npc/techniques.html`,
// *** Items ***
`${tpl}items/advancement/advancement-entry.html`,
`${tpl}items/advancement/advancement-sheet.html`,
`${tpl}items/armor/armors.html`,
`${tpl}items/armor/armor-entry.html`,
`${tpl}items/armor/armor-sheet.html`,
`${tpl}items/bond/bond-entry.html`,
`${tpl}items/bond/bond-sheet.html`,
`${tpl}items/item/items.html`,
`${tpl}items/item/item-entry.html`,
`${tpl}items/item/item-value.html`,
`${tpl}items/item/item-sheet.html`,
`${tpl}items/item/item-infos.html`,
`${tpl}items/item-pattern/item-pattern-entry.html`,
`${tpl}items/item-pattern/item-pattern-sheet.html`,
`${tpl}items/peculiarity/peculiarity-entry.html`,
`${tpl}items/peculiarity/peculiarity-sheet.html`,
`${tpl}items/property/properties.html`,
`${tpl}items/property/property-entry.html`,
`${tpl}items/property/property-sheet.html`,
`${tpl}items/signature-scroll/signature-scroll-entry.html`,
`${tpl}items/signature-scroll/signature-scroll-sheet.html`,
`${tpl}items/technique/technique-entry.html`,
`${tpl}items/technique/technique-sheet.html`,
`${tpl}items/title/title-entry.html`,
`${tpl}items/title/title-sheet.html`,
`${tpl}items/weapon/weapons.html`,
`${tpl}items/weapon/weapon-entry.html`,
`${tpl}items/weapon/weapon-sheet.html`,
]);
};

View File

@@ -5,7 +5,7 @@ export const RegisterSettings = function () {
/* ------------------------------------ */
/* User settings */
/* ------------------------------------ */
game.settings.register("l5r5e", "rnk.deleteOldMessage", {
game.settings.register("l5r5e", "rnk-deleteOldMessage", {
name: "SETTINGS.RollNKeep.DeleteOldMessage",
hint: "SETTINGS.RollNKeep.DeleteOldMessageHint",
scope: "world",
@@ -13,7 +13,7 @@ export const RegisterSettings = function () {
default: true,
type: Boolean,
});
game.settings.register("l5r5e", "initiative.setTn1OnTypeChange", {
game.settings.register("l5r5e", "initiative-setTn1OnTypeChange", {
name: "SETTINGS.Initiative.SetTn1OnTypeChange",
hint: "SETTINGS.Initiative.SetTn1OnTypeChangeHint",
scope: "world",
@@ -21,13 +21,21 @@ export const RegisterSettings = function () {
type: Boolean,
default: true,
});
game.settings.register("l5r5e", "token.reverseFatigueBar", {
game.settings.register("l5r5e", "token-reverseFatigueBar", {
name: "SETTINGS.ReverseFatigueBar",
scope: "world",
config: true,
type: Boolean,
default: false,
});
game.settings.register("l5r5e", "techniques-customs", {
name: "SETTINGS.CustomTechniques.Title",
hint: "SETTINGS.CustomTechniques.Hint",
scope: "world",
config: true,
type: Boolean,
default: false,
});
/* ------------------------------------ */
/* Update */
@@ -43,7 +51,7 @@ export const RegisterSettings = function () {
/* ------------------------------------ */
/* Initiative Roll Dialog (GM only) */
/* ------------------------------------ */
game.settings.register("l5r5e", "initiative.difficulty.hidden", {
game.settings.register("l5r5e", "initiative-difficulty-hidden", {
name: "Initiative difficulty is hidden",
scope: "world",
config: false,
@@ -51,7 +59,7 @@ export const RegisterSettings = function () {
default: false,
onChange: () => game.l5r5e.HelpersL5r5e.notifyDifficultyChange(),
});
game.settings.register("l5r5e", "initiative.difficulty.value", {
game.settings.register("l5r5e", "initiative-difficulty-value", {
name: "Initiative difficulty value",
scope: "world",
config: false,
@@ -59,33 +67,33 @@ export const RegisterSettings = function () {
default: 2,
onChange: () => game.l5r5e.HelpersL5r5e.notifyDifficultyChange(),
});
game.settings.register("l5r5e", "initiative.encounter", {
game.settings.register("l5r5e", "initiative-encounter", {
name: "Initiative encounter type",
scope: "world",
config: false,
type: String,
default: "skirmish",
onChange: () => {
if (game.settings.get("l5r5e", "initiative.setTn1OnTypeChange")) {
game.settings.set("l5r5e", "initiative.difficulty.value", 1);
if (game.settings.get("l5r5e", "initiative-setTn1OnTypeChange")) {
game.settings.set("l5r5e", "initiative-difficulty-value", 1);
}
},
});
game.settings.register("l5r5e", "initiative.prepared.character", {
game.settings.register("l5r5e", "initiative-prepared-character", {
name: "Initiative PC prepared or not",
scope: "world",
config: false,
type: String,
default: "null",
});
game.settings.register("l5r5e", "initiative.prepared.adversary", {
game.settings.register("l5r5e", "initiative-prepared-adversary", {
name: "Initiative NPC adversary are prepared or not",
scope: "world",
config: false,
type: String,
default: "null",
});
game.settings.register("l5r5e", "initiative.prepared.minion", {
game.settings.register("l5r5e", "initiative-prepared-minion", {
name: "Initiative NPC minion are prepared or not",
scope: "world",
config: false,

View File

@@ -46,7 +46,7 @@ export class SocketHandlerL5r5e {
_onDeleteChatMessage(data) {
// Only delete the message if the user is a GM (otherwise it have no real effect)
// Currently only used in RnK
if (!game.user.isGM || !game.settings.get("l5r5e", "rnk.deleteOldMessage")) {
if (!game.user.isGM || !game.settings.get("l5r5e", "rnk-deleteOldMessage")) {
return;
}
const message = game.messages.get(data.messageId);

File diff suppressed because one or more lines are too long

View File

@@ -2,21 +2,30 @@
.chat-dice {
display: inline;
position: relative;
padding: 0.25rem;
padding: 0;
margin: 0;
&:after {
content: "";
position: absolute;
bottom: 0;
right: 0;
border-radius: 0.15rem;
padding: 0 0.1rem 0 0.15rem;
font-size: 0.65rem;
padding: 0 0.225rem 0 0.15rem;
font-size: 0.75em;
line-height: 1rem;
width: 0.75rem;
width: 1em;
text-align: center;
color: white;
background: transparent;
}
&:last-of-type,
&:nth-child(6),
&:nth-child(12),
&:nth-child(18) {
&:after {
padding: 0 0.175rem 0 0.15rem;
}
}
&.rerolled {
> img {
border-bottom: 0 none;
@@ -44,6 +53,10 @@
margin: auto;
}
}
td {
.chat-dice {
}
}
.chat-profil {
text-align: center;

View File

@@ -16,7 +16,7 @@
}
button {
&.chat-dice-rnk {
cursor: default;
cursor: url("../assets/cursors/pointer.webp"), pointer;
color: $white;
background: linear-gradient(
$l5r5e-linear-gradient-third,
@@ -36,6 +36,13 @@
);
}
}
&.chat-dice-rnk-ended {
background: linear-gradient(
$l5r5e-linear-gradient-second,
$l5r5e-linear-gradient-second-dark,
$l5r5e-linear-gradient-second
);
}
}
.dice-result-rnk {
background: rgba(0, 0, 255, 0.1);
@@ -291,7 +298,7 @@
bottom: 0;
right: 0;
border-radius: 0.15rem;
padding: 0 0.1rem 0 0.15rem;
padding: 0 0.15rem;
font-size: 0.65rem;
line-height: 1rem;
width: 0.65rem;
@@ -326,6 +333,7 @@
}
}
}
tr:first-child .dice-ct {
&:before {
display: none;
@@ -506,4 +514,18 @@
}
}
}
#context-menu {
max-width: none;
}
.symbols-help {
font-style: italic;
color: #666;
font-size: 0.8rem;
line-height: 1rem;
margin: 0.5rem auto 0;
i {
font-size: 1rem;
line-height: 1rem;
}
}
}

View File

@@ -18,10 +18,10 @@
src: url("../fonts/PatrickHand.ttf") format("truetype");
}
// Font ManoNegra
// Font Caballar
@font-face {
font-family: "ManoNegra";
src: url("../fonts/ManoNegra.ttf") format("truetype");
font-family: "Caballar";
src: url("../fonts/Caballar.ttf") format("truetype");
}
// Font ArchitectsDaughter
@@ -32,7 +32,7 @@
$font-primary: "PatrickHand", sans-serif;
$font-secondary: "BrushtipTexe", sans-serif;
$font-tertiary: "BrushtipTexe", sans-serif;
$font-tertiary: "Caballar", sans-serif;
$font-quaternary: "ArchitectsDaughter", sans-serif;
$font-logoType: "LogotypeL5r", sans-serif;

View File

@@ -246,7 +246,6 @@ input[type="number"] {
}
table {
text-align: center;
background: transparent;
border: 1px solid $l5r5e-title;
thead {
@@ -325,6 +324,16 @@ sup {
}
}
// Entity link style for compendium folder custom link
a.compendium-link {
background: #ddd;
padding: 1px 4px;
border: 1px solid #4b4a44;
border-radius: 2px;
white-space: nowrap;
word-break: break-all;
}
// Fix for "search anywhere" draggable icon
.window-draggable-handle {
z-index: 2;

View File

@@ -1,6 +1,9 @@
// Item List
.item-list {
flex: 100%;
.tab[data-tab] {
display: none;
}
.item {
.item-header {
display: flex;
@@ -96,10 +99,14 @@
// Advancement Sheet, Armor Sheet, Item Sheet, Peculiarity Sheet, Property Sheet, Technique Sheet, Weapon Sheet
&.advancement,
&.armor,
&.bond,
&.item,
&.item-pattern,
&.peculiarity,
&.property,
&.signature-scroll,
&.technique,
&.title,
&.weapon {
.sheet-header {
margin-bottom: 0.5rem;
@@ -205,6 +212,13 @@
}
}
}
.bonds-types {
flex: 100%;
input {
width: 75%;
float: right;
}
}
}
&.infos {
display: flex;
@@ -355,6 +369,26 @@
}
}
}
&.item-pattern {
.attribute {
&.item {
display: inline;
.item-properties {
display: inline;
li {
display: inline;
}
}
}
}
}
&.title {
article {
&.attributes {
height: auto;
}
}
}
.item-list {
> li {
.item-description {

View File

@@ -4,7 +4,8 @@ nav {
height: 3rem;
line-height: 3rem;
font-family: $font-tertiary;
font-size: 1.25rem;
letter-spacing: -0.05rem;
font-size: 1rem;
border: 0 none;
border-bottom: 1px solid $l5r5e-title;
margin-bottom: 0;

View File

@@ -166,4 +166,7 @@
max-height: 12rem;
}
}
.narrative-note {
flex: 0 0 calc(50% - 0.25rem);
}
}

View File

@@ -18,8 +18,10 @@
height: calc(100% - 27rem);
}
fieldset {
&.advancement {
display: block;
&.advancement,
&.items-wrapper {
display: grid;
flex: calc(100%);
}
}
.advancements-tabs {
@@ -37,6 +39,15 @@
flex: 0 0 100%;
align-items: flex-start;
}
section,
article {
&.tab[data-tab] {
display: none;
&.active {
display: flex;
}
}
}
.sheet-header {
flex: 0 0 100%;
align-items: flex-start;
@@ -267,6 +278,27 @@
}
}
}
.affinities {
padding-top: 0.25rem;
.ring {
display: flex;
flex-wrap: wrap;
flex-direction: unset;
flex: 3rem;
height: 1.5rem;
margin: 0;
}
i {
flex: 1rem;
margin: 0;
text-align: center;
}
input {
flex: 1.25rem;
height: 1.25rem;
margin: 0;
}
}
}
.focus-content,
.vigilance-content {
@@ -519,20 +551,32 @@
}
}
}
&.tab[data-tab] {
&.active {
display: flex;
}
}
.narrative-content,
.narrative-note {
flex: 0 0 calc(50% - 0.5rem);
.narrative-content {
flex: 100%;
display: flex;
fieldset {
display: block;
flex: 0 0 calc(50% - 0.75rem);
label {
width: 100%;
}
}
.narrative-description {
max-height: 13rem;
font-size: 0.85rem;
flex: 1;
}
}
.narrative-list {
flex: 0 0 calc(50% - 0.25rem);
fieldset {
flex: 0 0 calc(50% - 0.25rem);
label {
width: 100%;
}
}
.narrative-note {
font-size: 0.85rem;
}
}
.techniques-wrapper {
padding-left: 0.25rem;
@@ -633,27 +677,38 @@
}
.xp,
.money-wrapper {
flex: 0 0 6rem;
flex-direction: column;
flex: 100%;
flex-direction: row;
color: $black-light;
label {
padding: 0.25rem;
display: flex;
flex: calc(100% / 3);
padding: 0.5rem;
font-size: 0.85rem;
input {
margin-left: 0.5rem;
}
}
}
table {
font-size: 0.85rem;
color: $black-light;
text-align: left;
thead {
font-family: $font-secondary;
font-weight: normal;
th {
padding-left: 0.5rem;
padding-right: 0.5rem;
font-size: 1rem;
&:first-child {
flex: 0 0 2rem;
}
&:nth-child(2) {
flex: calc(100% - 16rem);
padding-left: 0.5rem;
text-align: left;
}
&:nth-child(2) {
flex: 0 0 2rem;
}
&:nth-child(3),
&:nth-child(4) {
flex: 0 0 4rem;
@@ -687,6 +742,13 @@
}
}
}
.tfoot {
padding: 0.25 0.5rem;
background: rgba(186, 187, 177, 0.5);
text-shadow: none;
border-top: rgba(186, 187, 177, 0.5);
text-align: center;
}
img {
width: 16px;
height: 16px;
@@ -694,6 +756,26 @@
}
}
}
.inventory {
.items-wrapper {
h3 {
background: rgba(90, 110, 90, 0.15);
color: $l5r5e-label;
border-bottom: 1px solid $white;
font-family: $font-tertiary;
font-size: 1rem;
padding-left: 0.5rem;
margin: 0;
}
.item-list {
display: block;
&.toggle-active {
display: none;
}
}
}
}
&.actor,
&.npc {
.initiative {
@@ -736,6 +818,7 @@
.sheet-header {
flex: none;
height: auto;
width: 100%;
}
ul {
display: flex;
@@ -770,6 +853,17 @@
}
}
}
nav {
&.sheet-tabs {
flex: 100%;
}
}
&.title {
.experience {
flex: 100%;
width: calc(100% - 7.5rem);
}
}
}
// Lang Adjust.
&.sheet {

View File

@@ -84,6 +84,7 @@
}
table {
width: 100%;
text-align: center;
tr {
th {
color: $l5r5e-label;

View File

@@ -199,6 +199,9 @@ button {
}
// Chat
#chat-form textarea {
color: $black;
}
#chat-form textarea,
.chat-message,
.blind,
@@ -206,6 +209,9 @@ button {
#chat-controls .roll-type-select,
.header-search input {
background: transparent url("../assets/ui/chat-texture.webp") no-repeat;
&:focus {
background: #f0f0e0 url("../assets/ui/chat-texture.webp") no-repeat;
}
}
.header-search input[name="search"] {
background-color: $l5r5e-chat-color;

View File

@@ -2,9 +2,12 @@
"name": "l5r5e",
"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>",
"version": "1.2.1",
"minimumCoreVersion": "0.7.9",
"compatibleCoreVersion": "0.7.9",
"url": "https://gitlab.com/teaml5r/l5r5e",
"manifest": "https://gitlab.com/teaml5r/l5r5e/-/raw/master/system/system.json",
"download": "https://gitlab.com/teaml5r/l5r5e/-/jobs/artifacts/v1.3.0/raw/l5r5e.zip?job=build",
"version": "1.3.0",
"minimumCoreVersion": "0.8.5",
"compatibleCoreVersion": "0.8.6",
"manifestPlusVersion": "1.0.0",
"socket": true,
"author": "Team L5R",
@@ -19,12 +22,6 @@
},
{
"name": "Carter"
},
{
"name": "Hrunh"
},
{
"name": "Sasmira"
}
],
"background": "L5R-Header.webp",
@@ -158,6 +155,34 @@
"entity": "Item",
"system": "l5r5e"
},
{
"name": "core-bonds",
"label": "Bonds",
"path": "packs/core-bonds.db",
"entity": "Item",
"system": "l5r5e"
},
{
"name": "core-titles",
"label": "Titles",
"path": "packs/core-titles.db",
"entity": "Item",
"system": "l5r5e"
},
{
"name": "core-item-patterns",
"label": "Item Patterns",
"path": "packs/core-item-patterns.db",
"entity": "Item",
"system": "l5r5e"
},
{
"name": "core-signature-scrolls",
"label": "Signature Scrolls",
"path": "packs/core-signature-scrolls.db",
"entity": "Item",
"system": "l5r5e"
},
{
"name": "great-clans-presentation",
"label": "Great Clans Presentation",
@@ -182,8 +207,5 @@
"name": "Spanish (Spain)",
"path": "lang/es-es.json"
}
],
"url": "https://gitlab.com/teaml5r/l5r5e",
"manifest": "https://gitlab.com/teaml5r/l5r5e/-/raw/master/system/system.json",
"download": "https://gitlab.com/teaml5r/l5r5e/-/jobs/artifacts/v1.2.1/raw/l5r5e.zip?job=build"
]
}

View File

@@ -21,13 +21,14 @@
}
},
"social": {
"notes": "",
"description": "",
"social": {
"honor": 0,
"glory": 0,
"status": 0,
"ninjo": "",
"giri": "",
"titles": ""
"giri": ""
}
},
"skills": {
@@ -102,34 +103,30 @@
"ritual": false,
"shuji": false,
"maho": false,
"ninjutsu": false
"ninjutsu": false,
"specificity": true
}
}
},
"character": {
"templates": ["identity", "rings", "social", "skills", "techniques", "conflict", "advancement"],
"zeni": 0,
"notes": "",
"twenty_questions": {}
},
"npc": {
"templates": ["rings", "social", "techniques", "conflict"],
"type": "minion",
"attitude": "",
"notes": "",
"conflict_rank": {
"martial": 0,
"social": 0
},
"rings_affinities": {
"strength": {
"ring": "fire",
"value": 2
},
"weakness": {
"ring": "water",
"value": -2
}
"earth": 0,
"air": 0,
"water": 0,
"fire": 0,
"void": 0
},
"skills": {
"artisan": 0,
@@ -141,15 +138,30 @@
}
},
"Item": {
"types": ["item", "armor", "weapon", "technique", "property", "peculiarity", "advancement"],
"types": [
"item",
"armor",
"weapon",
"technique",
"property",
"peculiarity",
"advancement",
"title",
"bond",
"signature_scroll",
"item_pattern"
],
"templates": {
"basics": {
"book_reference": "",
"description": ""
"description": "",
"parent_id": null,
"items": []
},
"advancement": {
"in_curriculum": false,
"xp_used": 3,
"xp_cost": 3,
"rank": 1,
"bought_at_rank": 1,
"ring": "void"
@@ -186,8 +198,7 @@
},
"technique": {
"templates": ["basics", "advancement"],
"technique_type": "kata",
"xp_cost": 3
"technique_type": "kata"
},
"property": {
"templates": ["basics"]
@@ -201,6 +212,23 @@
"templates": ["basics", "advancement"],
"advancement_type": "skill",
"skill": ""
},
"title": {
"templates": ["basics", "advancement"],
"advancements": [],
"xp_used_total": 0
},
"bond": {
"templates": ["basics", "advancement"],
"bond_type": ""
},
"item_pattern": {
"templates": ["basics", "advancement"],
"linked_property_id": null,
"rarity_modifier": ""
},
"signature_scroll": {
"templates": ["basics", "advancement"]
}
}
}

View File

@@ -1,76 +1,58 @@
<form class="{{cssClass}}" data-lang="{{localize 'I18N.Language'}}" autocomplete="off">
{{!-- Sheet Header --}}
<header class="sheet-header">
<img class="profile-img" src="{{actor.img}}" data-edit="img" title="{{actor.name}}"/>
<img class="profile-img" src="{{data.img}}" data-edit="img" title="{{data.name}}"/>
<div class="header-fields identity-wrapper">
<h1 class="charname"><input name="name" type="text" value="{{actor.name}}" placeholder="Name"/></h1>
{{> 'systems/l5r5e/templates/actors/character/identity.html' }}
<h1 class="charname"><input name="name" type="text" value="{{data.name}}" placeholder="Name"/></h1>
{{> 'systems/l5r5e/templates/actors/character/identity.html'}}
</div>
<div class="header-fields">
<h2>{{ localize 'l5r5e.social.title' }}</h2>
<h2 class="right">{{ localize 'l5r5e.attributes.title' }}</h2>
{{> 'systems/l5r5e/templates/actors/character/social.html' }}
{{> 'systems/l5r5e/templates/actors/character/rings.html' }}
{{> 'systems/l5r5e/templates/actors/character/attributes.html' }}
<h2>{{localize 'l5r5e.social.title'}}</h2>
<h2 class="right">{{localize 'l5r5e.attributes.title'}}</h2>
{{> 'systems/l5r5e/templates/actors/character/social.html'}}
{{> 'systems/l5r5e/templates/actors/character/rings.html'}}
{{> 'systems/l5r5e/templates/actors/character/attributes.html'}}
</div>
</header>
{{!-- Sheet Body --}}
<section class="sheet-body">
{{!-- Sheet Tab Navigation --}}
<nav class="sheet-tabs tabs" data-group="primary">
<a class="item" data-tab="skills">{{ localize 'l5r5e.skills.title' }}</a>
<a class="item" data-tab="narrative">{{ localize 'l5r5e.narrative' }}</a>
<a class="item" data-tab="conflict">{{ localize 'l5r5e.conflict.title' }}</a>
<a class="item" data-tab="inventory">{{ localize 'l5r5e.inventory' }}</a>
<a class="item" data-tab="experience">{{ localize 'l5r5e.experience' }}</a>
<a class="item" data-tab="skills">{{localize 'l5r5e.skills.title'}}</a>
<a class="item" data-tab="narrative">{{localize 'l5r5e.narrative'}}</a>
<a class="item" data-tab="conflict">{{localize 'l5r5e.conflict.title'}}</a>
<a class="item" data-tab="inventory">{{localize 'l5r5e.inventory'}}</a>
<a class="item" data-tab="experience">{{localize 'l5r5e.experience'}}</a>
</nav>
{{!-- Skills Tab --}}
<article class="tab skills" data-group="primary" data-tab="skills">
<ul class="skills-wrapper">
{{#each data.skills as |category id|}}
{{#each data.data.skills as |category id|}}
{{> 'systems/l5r5e/templates/actors/character/category.html' category=category categoryId=id}}
{{/each}}
</ul>
{{> 'systems/l5r5e/templates/actors/character/techniques.html' }}
{{> 'systems/l5r5e/templates/actors/character/techniques.html'}}
</article>
{{!-- Narrative Tab --}}
<article class="tab narrative" data-group="primary" data-tab="narrative">
{{> 'systems/l5r5e/templates/actors/character/narrative.html' }}
{{> 'systems/l5r5e/templates/actors/character/narrative.html'}}
</article>
{{!-- Conflict Tab --}}
<article class="tab conflict" data-group="primary" data-tab="conflict">
{{> 'systems/l5r5e/templates/actors/character/conflict.html' }}
{{> 'systems/l5r5e/templates/actors/character/conflict.html'}}
</article>
{{!-- Inventory Tab --}}
<article class="tab inventory" data-group="primary" data-tab="inventory">
<fieldset class="money money-wrapper">
<legend class="section-header">{{localize 'l5r5e.money.title'}}</legend>
<label>
{{localize 'l5r5e.money.koku'}}
<input name="data.money.koku" type="number" value="{{actor.data.money.koku}}" data-dtype="Number" min="0" placeholder="0"/>
</label>
<label>
{{localize 'l5r5e.money.bu'}}
<input name="data.money.bu" type="number" value="{{actor.data.money.bu}}" data-dtype="Number" min="0" placeholder="0"/>
</label>
<label>
{{localize 'l5r5e.money.zeni'}}
<input name="data.money.zeni" type="number" value="{{actor.data.money.zeni}}" data-dtype="Number" min="0" placeholder="0"/>
</label>
</fieldset>
<fieldset class="items-wrapper">
<legend>{{localize 'l5r5e.equipment' }}</legend>
{{> 'systems/l5r5e/templates/items/item/items.html' }}
</fieldset>
{{> 'systems/l5r5e/templates/actors/character/inventory.html'}}
</article>
{{!-- Experience Tab --}}
<article class="tab experience" data-group="primary" data-tab="experience">
{{> 'systems/l5r5e/templates/actors/character/experience.html' }}
{{> 'systems/l5r5e/templates/actors/character/experience.html'}}
</article>
</section>
</form>

View File

@@ -0,0 +1,15 @@
<tr class="flexrow row advancement">
<td class="name" name="advancement.name"><img src="{{advancement.img}}" title="{{advancement.name}}"> {{advancement.name}}{{#if advancement.data.bond_type}} ({{advancement.data.bond_type}}){{/if}}</td>
{{#if show_curriculum_toggle}}<td class="curriculum" name="curriculum">{{#if advancement.data.in_curriculum}}<i class="fas fa-graduation-cap"></i> {{/if}}</td>{{/if}}
<td class="xp" name="advancement.xp">{{#if advancement.data.xp_used_total}}{{advancement.data.xp_used_total}}{{else}}{{advancement.data.xp_used}}{{/if}}</td>
<td class="rank" name="advancement.rank">{{advancement.data.rank}}</td>
{{#if editable}}
<td class="actions">
<ul>
{{#if show_curriculum_toggle}}<li data-item-id="{{advancement._id}}" class="item-control item-curriculum" title="{{localize 'l5r5e.advancements.curriculum'}}"><i class="fas fa-graduation-cap"></i></li>{{/if}}
<li data-item-id="{{advancement._id}}" class="item-control item-edit" title="{{localize 'l5r5e.global.edit'}}"><i class="fas fa-edit"></i></li>
<li data-item-id="{{advancement._id}}" class="item-control item-delete" title="{{localize 'Delete'}}"><i class="fas fa-trash"></i></li>
</ul>
</td>
{{/if}}
</tr>

View File

@@ -1,14 +1,14 @@
<tr data-group="advancements" data-tab="advancement_rank_{{rank}}" class="flexrow row advancement tab">
<td class="name" name="advancement.name"><img src="{{advancement.img}}" title="{{advancement.name}}"> {{advancement.name}}</td>
<td class="curriculum" name="curriculum">{{#if advancement.data.in_curriculum}}<i class="fas fa-graduation-cap"></i> {{/if}}</td>
<td class="name" name="advancement.name"><img src="{{ advancement.img }}" title="{{ advancement.name }}"> {{ advancement.name }}</td>
<td class="xp" name="advancement.xp">{{ advancement.data.xp_used }}</td>
<td class="rank" name="advancement.rank">{{ advancement.data.rank }}</td>
<td class="xp" name="advancement.xp">{{advancement.data.xp_used}}</td>
<td class="rank" name="advancement.rank">{{advancement.data.rank}}</td>
{{#if editable}}
<td class="actions">
<ul>
<li data-item-id="{{advancement._id}}" class="item-control item-curriculum" title="{{localize 'l5r5e.advancements.curriculum'}}"><i class="fas fa-graduation-cap"></i></li>
<li data-item-id="{{advancement._id}}" class="item-control item-edit" title="{{localize 'l5r5e.global.edit'}}"><i class="fas fa-edit"></i></li>
<li data-item-id="{{advancement._id}}" class="item-control item-delete" title="{{localize 'l5r5e.global.delete'}}"><i class="fas fa-trash"></i></li>
<li data-item-id="{{advancement._id}}" class="item-control item-delete" title="{{localize 'Delete'}}"><i class="fas fa-trash"></i></li>
</ul>
</td>
{{/if}}

View File

@@ -1,49 +1,49 @@
<ul class="attributes-wrapper">
<li class="endurance-content">
<label class="attribute-label">
<strong>{{ localize 'l5r5e.attributes.endurance' }}</strong>
<input class="centered-input" type="number" name="data.endurance" value="{{data.endurance}}" data-dtype="Number" disabled/>
<strong>{{localize 'l5r5e.attributes.endurance'}}</strong>
<input class="centered-input" type="number" name="data.endurance" value="{{data.data.endurance}}" data-dtype="Number" disabled/>
</label>
<label class="attribute-label">
<strong>{{ localize 'l5r5e.attributes.fatigue' }}</strong>
<input class="centered-input select-on-focus" type="number" name="data.fatigue.value" value="{{data.fatigue.value}}" data-dtype="Number" min="0" placeholder="0"/>
<strong>{{localize 'l5r5e.attributes.fatigue'}}</strong>
<input class="centered-input select-on-focus" type="number" name="data.fatigue.value" value="{{data.data.fatigue.value}}" data-dtype="Number" min="0" placeholder="0"/>
</label>
<p class="item-description"> {{ localize 'l5r5e.attributes.endurancetip' }}</p>
<p class="item-description"> {{localize 'l5r5e.attributes.endurancetip'}}</p>
</li>
<li class="composure-content">
<label class="attribute-label">
<strong>{{ localize 'l5r5e.attributes.composure' }}</strong>
<input class="centered-input" type="number" name="data.composure" value="{{data.composure}}" data-dtype="Number" disabled/>
<strong>{{localize 'l5r5e.attributes.composure'}}</strong>
<input class="centered-input" type="number" name="data.composure" value="{{data.data.composure}}" data-dtype="Number" disabled/>
</label>
<label class="attribute-label">
<strong>{{ localize 'l5r5e.attributes.strife' }}</strong>
<input class="centered-input select-on-focus" type="number" name="data.strife.value" value="{{data.strife.value}}" data-dtype="Number" min="0" placeholder="0"/>
<strong>{{localize 'l5r5e.attributes.strife'}}</strong>
<input class="centered-input select-on-focus" type="number" name="data.strife.value" value="{{data.data.strife.value}}" data-dtype="Number" min="0" placeholder="0"/>
</label>
<p class="item-description"> {{ localize 'l5r5e.attributes.composuretip' }}</p>
<p class="item-description"> {{localize 'l5r5e.attributes.composuretip'}}</p>
</li>
<li class="focus-content">
<label class="attribute-label">
<strong>{{ localize 'l5r5e.attributes.focus' }}</strong>
<input class="centered-input" type="number" name="data.focus" value="{{data.focus}}" data-dtype="Number" disabled/>
<strong>{{localize 'l5r5e.attributes.focus' }}</strong>
<input class="centered-input" type="number" name="data.focus" value="{{data.data.focus}}" data-dtype="Number" disabled/>
</label>
<p class="item-description"> {{ localize 'l5r5e.attributes.focustip' }}</p>
<p class="item-description"> {{localize 'l5r5e.attributes.focustip'}}</p>
</li>
<li class="vigilance-content {{#if data.is_compromised}}compromised{{/if}}">
<li class="vigilance-content {{#if data.data.is_compromised}}compromised{{/if}}">
<label class="attribute-label">
<strong>{{ localize 'l5r5e.attributes.vigilance' }}</strong>
{{#if data.is_compromised}}
<strong>{{localize 'l5r5e.attributes.vigilance'}}</strong>
{{#if data.data.is_compromised}}
<input class="centered-input" type="number" value="1" disabled/>
{{else}}
<input class="centered-input" type="number" name="data.vigilance" value="{{data.vigilance}}" data-dtype="Number" disabled/>
<input class="centered-input" type="number" name="data.vigilance" value="{{data.data.vigilance}}" data-dtype="Number" disabled/>
{{/if}}
</label>
<p class="item-description"> {{ localize 'l5r5e.attributes.vigilancetip' }}</p>
<p class="item-description"> {{localize 'l5r5e.attributes.vigilancetip'}}</p>
</li>
<li class="void-content">
<label class="attribute-label">
<strong>{{ localize 'l5r5e.attributes.voidpoints' }}</strong>
<input class="centered-input select-on-focus" type="number" name="data.void_points.value" value="{{data.void_points.value}}" data-dtype="Number" placeholder="0" min="0" max="{{data.void_points.max}}"/>
<input class="centered-input" type="number" name="data.void_points.max" value="{{data.void_points.max}}" data-dtype="Number" disabled/>
<strong>{{localize 'l5r5e.attributes.voidpoints'}}</strong>
<input class="centered-input select-on-focus" type="number" name="data.void_points.value" value="{{data.data.void_points.value}}" data-dtype="Number" placeholder="0" min="0" max="{{data.data.void_points.max}}"/>
<input class="centered-input" type="number" name="data.void_points.max" value="{{data.data.void_points.max}}" data-dtype="Number" disabled/>
</label>
</li>
</ul>

View File

@@ -1,15 +1,15 @@
<li class="skill-category-wrapper skill-category-content">
<h4 class="section-header">{{ localizeSkill categoryId 'title' }}</h4>
<h4 class="section-header">{{localizeSkill categoryId 'title'}}</h4>
<ul class="skill-category-skills-list">
{{#each category as |skill id| }}
{{> 'systems/l5r5e/templates/actors/character/skill.html' categoryId=../categoryId skill=skill skillId=id }}
{{#each category as |skill id|}}
{{> 'systems/l5r5e/templates/actors/character/skill.html' categoryId=../categoryId skill=skill skillId=id}}
{{/each}}
</ul>
<ul class="skill-category-ring-actions">
<li name="air" class="air"><i class="i_air"></i> {{ localizeSkill categoryId 'air' }} </li>
<li name="earth" class="earth"><i class="i_earth"></i> {{ localizeSkill categoryId 'earth' }} </li>
<li name="fire" class="fire"><i class="i_fire"></i> {{ localizeSkill categoryId 'fire' }} </li>
<li name="water" class="water"><i class="i_water"></i> {{ localizeSkill categoryId 'water' }} </li>
<li name="void" class="void"><i class="i_void"></i> {{ localizeSkill categoryId 'void' }} </li>
<li name="air" class="air"><i class="i_air"></i> {{localizeSkill categoryId 'air'}} </li>
<li name="earth" class="earth"><i class="i_earth"></i> {{localizeSkill categoryId 'earth'}} </li>
<li name="fire" class="fire"><i class="i_fire"></i> {{localizeSkill categoryId 'fire'}} </li>
<li name="water" class="water"><i class="i_water"></i> {{localizeSkill categoryId 'water'}} </li>
<li name="void" class="void"><i class="i_void"></i> {{localizeSkill categoryId 'void'}} </li>
</ul>
</li>

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