Compare commits

..

No commits in common. "v11" and "build-test" have entirely different histories.

1202 changed files with 72013 additions and 16045 deletions

View File

@ -27,8 +27,8 @@ jobs:
env:
version: ${{steps.get_version.outputs.version-without-v}}
url: https://www.uberwald.me/gitea/${{gitea.repository}}
manifest: https://www.uberwald.me/gitea/${{gitea.repository}}/releases/download/${{github.event.release.tag_name}}/system.json
download: https://www.uberwald.me/gitea/${{gitea.repository}}/releases/download/${{github.event.release.tag_name}}/rddsystem.zip
manifest: https://www.uberwald.me/gitea/${{gitea.repository}}/releases/download//${{github.event.release.tag_name}}/system.json
download: https://www.uberwald.me/gitea/${{gitea.repository}}/releases/download/${{github.event.release.tag_name}}/foundryvtt-reve-de-dragon-${{github.event.release.tag_name}}.zip
- name: Set up Node.js
uses: actions/setup-node@v2
@ -46,7 +46,7 @@ jobs:
apt update -y
apt install -y zip
- run: zip -r ./rddsystem.zip system.json template.json README.md LICENSE.txt assets/ fonts/ icons lang/ module/ packs/ pic/ sounds/ styles/ templates/
- run: zip -r ./foundryvtt-reve-de-dragon-${{github.event.release.tag_name}}.zip system.json template.json README.md LICENSE.txt assets/ fonts/ icons lang/ module/ packs/ pic/ sounds/ styles/ templates/
- name: setup go
uses: actions/setup-go@v3
@ -58,17 +58,6 @@ jobs:
uses: https://gitea.com/actions/release-action@main
with:
files: |-
./rddsystem.zip
./foundryvtt-reve-de-dragon-${{github.event.release.tag_name}}.zip
system.json
api_key: '${{secrets.ALLOW_PUSH_RELEASE}}'
- name: Publish to Foundry server
uses: djlechuck/foundryvtt-publish-package-action@v1
with:
token: ${{ secrets.FOUNDRYVTT_RELEASE_TOKEN }}
id: 'foundryvtt-reve-de-dragon'
version: ${{github.event.release.tag_name}}
manifest: 'https://www.uberwald.me/gitea/${{gitea.repository}}/releases/download/${{github.event.release.tag_name}}/system.json'
notes: 'https://www.uberwald.me/gitea/public/foundryvtt-reve-de-dragon/raw/branch/v11/changelog.md'
compatibility-minimum: '12'
compatibility-verified: '12'

View File

@ -1,73 +1,4 @@
# 12.0
## 12.0.30 - le cauchemar d'Astrobazzarh
- calcul automatique du niveau des entités selon leur rêve
- la description des créatures venimeuses contient un lien vers leur venin
- Correction: les messages de combats ne marchaient plus (Changement combiné Foundry + rêve de Dragon)
## 12.0.29 - L'indexation d'Astrobazzarh
- les liens dans la descriptions des sorts pointent vers les sorts du compendium
- la description du chrasme contient le lien vers son venin plutôt qu'un tableau
## 12.0.28 - Les réserves d'Astrobazzarh
- possibilité de mettre en réserve depuis un sort connu
## 12.0.27 - Les vêtements d'Astrobazzarh
- Ajout de la liste des armures dans l'onglet caractéristiques
- Ajout d'une option pour choisir une carte des TMR alternatives
- Le Gardien peut créer des sorts en réserve parmi les sorts d'un personnage
- Bouton pour ajouter des compétences aux créatures/entités
- Bouton pour ajouter un personnage accordé aux entités de cauchemar
- Correction du choix d'une cible parmi toutes les cibles pour les combats
- Correction des ajouts de blessures (prise en compte de l'endurance et des contusions)
- Correction des rituels de Détection et Lecture d'Aura des personnages prétirés
- Correction des invocations
- support de "personnages" n'ayant pas toutes les compétences
- ajout de lien entre le sort et la créature
- correction des liens vers les journaux
- limitation aux compétences listées
- acteur non lié par défaut
- Correction des compendiums
- l'import de personnages depuis un compendium respecte les acteurs liés/non-liés
- les modèles de voyageurs sont liés par défaut
- les modèles de personnages non joueurs sont non-liés par défaut
## 12.0.26 - Astrobazzarh le Haut-rêvant
- bouton pour le don de haut-rêve en un clic
- les compétences de draconic ne sont plus précédées de "Voie de"
- migration des compétences & compendiums
- Correction feuille simplifiée qui ne s'affichait pas en cas de sort variable
## 12.0.24 - Les ajustements d'Astrobazzarh
- amélioration
- meilleure gestion des noms des voies de draconic
- affichage du détail des sorts avec le nom de voie, 'court', la difficulté, le coût
- corrections
- les tas dans les conteneurs peuvent être désempilés sans rendre le conteneur inutilisable
- les conteneurs ne peuvent plus être empilés (pour éviter que le contenu de Schroedinger quand on les sépare)
- on peut maintenant saisir et supprimer les bonus de cases de manière intuitive
## 12.0.23 - La bibliothèque d'Astrobazzarh
- corrections mineures
- meilleure gestion de la parade des armes naturelles
- cas de "User lacks permission to update" pour les blessures et les StatusEffects
- risque de message d'encaissement non affiché
- support de sorts à voies multiples
- correction de compendiums
- résistance des armes mise à jour
- voies multiples pour las sorts de Lecture d'aura, Détection d'aura et Annulation de magie
- améliorations "Scriptarium"
- recherche des compétences sans accents pour permettre les noms accentués (standard Scriptarium)
- affichage r1+ des sorts à coût variable dans la feuille simplifiée
- affichage de Corps à corps pour le combat à mains nues dans la feuille simplifiée
- dans les compendiums, les compétences Écriture et Épée ont une majuscule accentuée. Les Épée dans le compendium d'équipements référence le nom de compétence accentué.
## 12.0.21 - La nomination d'Astrobazzarh
- Les noms pour les messages dans le tchat sont maintenant ceux des tokens plutôt que ceux des acteurs
- Fix: le choix des effets dans les options s'affiche correctement
## 12.0.20 - Le tableau d'Astrobazzarh
- Ecran d'accueil officiel Scriptarium
## 12.0.19 - La témérité d'Astrobazzarh
- Fix
- les défenses des créatures sont correctement filtrées
@ -127,9 +58,11 @@
- encodage de l'export en windows-1252
- export de l'esquive avec armure et sans armure
## 12.0.9 - 12.0.10 - Le scriptorium d'Astrobazzarh
## 12.0.10 - Le scriptorium d'Astrobazzarh
- corrections de l'export scriptarium
- ajout d'une fonction avancée pour un exporter "scriptarium" des personnages
## 12.0.9 - Le scriptorium d'Astrobazzarh
- ajout d'une fonction avancée pour exporter les personnages dans un format csv
## 12.0.8 - La quincaillerie d'Astrobazzarh
- le propriétaire est indiqué dans les feuilles d'équipements/compétences/...

61
dev-notes.md Normal file
View File

@ -0,0 +1,61 @@
# Actor notes
> The Actor#getData default implementation gives you the following for use in sheet rendering:
```
actor -> the Actor instance
data -> a cloned copy of Actor#data
items -> a cloned copy of Actor#data#items
effects -> a cloned copy of Actor#data#effects
```
> if all you need is a safe copy of `Actor#data`, you'll be much better off by simply defining your own function and avoiding all the wasted work that the parent class does which will slow down your sheet
```js
getData(options) {
return {
data: foundry.utils.deepClone(this.object.data)
}
}
```
who knows, maybe you don't even need to copy your actor data, skip the copy and it's even faster:
```js
getData(options) {
return {
data: this.object.data
}
}
```
Atropos19/02/2021
There are two recommended ways to create owned items in 0.8.0:
```js
await Item.create(itemData, {parent: actor});
await actor.createEmbeddedDocuments("Item", itemDataArray);
```
You can update an embedded item in one of two ways:
```js
//Method 1:
const item = actor.items.get(itemId);
item.update(data);
//Method 2:
actor.updateEmbeddedDocuments("Item", [{_id: itemId, ...}]);
```
I noticed adding an ActiveEffect to an actor in code using
```js
this.createEmbeddedDocuments('ActiveEffect', [effet], options);
this.applyActiveEffects();
```
Atropos — Aujourdhui à 14:42
Two notes on this:
1. You don't actually need to call this.applyActiveEffects() because this will happen automatically whenever an effect is created/updated/deleted
2. If you want to suppress the automatic display of the sheet for the newly created document, you can pass options.renderSheet = false as part of your options object

View File

@ -1,191 +1 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
viewBox="0 0 512 512"
style="height: 512px; width: 512px;"
version="1.1"
id="svg52"
sodipodi:docname="attache.svg"
inkscape:version="1.0.1 (3bc2e813f5, 2020-09-07)">
<metadata
id="metadata56">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
</cc:Work>
</rdf:RDF>
</metadata>
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1769"
inkscape:window-height="1333"
id="namedview54"
showgrid="false"
inkscape:zoom="1.4355469"
inkscape:cx="256"
inkscape:cy="256"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="0"
inkscape:current-layer="svg52" />
<defs
id="defs46">
<filter
id="shadow-1"
height="300%"
width="300%"
x="-100%"
y="-100%">
<feFlood
flood-color="rgba(248, 231, 28, 1)"
result="flood"
id="feFlood2" />
<feComposite
in="flood"
in2="SourceGraphic"
operator="atop"
result="composite"
id="feComposite4" />
<feGaussianBlur
in="composite"
stdDeviation="40"
result="blur"
id="feGaussianBlur6" />
<feOffset
dx="0"
dy="0"
result="offset"
id="feOffset8" />
<feComposite
in="SourceGraphic"
in2="offset"
operator="over"
id="feComposite10" />
</filter>
<filter
id="shadow-3"
height="300%"
width="300%"
x="-100%"
y="-100%">
<feFlood
flood-color="rgba(248, 231, 28, 1)"
result="flood"
id="feFlood13" />
<feComposite
in="flood"
in2="SourceGraphic"
operator="atop"
result="composite"
id="feComposite15" />
<feGaussianBlur
in="composite"
stdDeviation="40"
result="blur"
id="feGaussianBlur17" />
<feOffset
dx="0"
dy="0"
result="offset"
id="feOffset19" />
<feComposite
in="SourceGraphic"
in2="offset"
operator="over"
id="feComposite21" />
</filter>
<filter
id="shadow-6"
height="300%"
width="300%"
x="-100%"
y="-100%">
<feFlood
flood-color="rgba(72, 186, 255, 1)"
result="flood"
id="feFlood24" />
<feComposite
in="flood"
in2="SourceGraphic"
operator="atop"
result="composite"
id="feComposite26" />
<feGaussianBlur
in="composite"
stdDeviation="8"
result="blur"
id="feGaussianBlur28" />
<feOffset
dx="5"
dy="15"
result="offset"
id="feOffset30" />
<feComposite
in="SourceGraphic"
in2="offset"
operator="over"
id="feComposite32" />
</filter>
<filter
id="shadow-7"
height="300%"
width="300%"
x="-100%"
y="-100%">
<feFlood
flood-color="rgba(72, 186, 255, 1)"
result="flood"
id="feFlood35" />
<feComposite
in="flood"
in2="SourceGraphic"
operator="atop"
result="composite"
id="feComposite37" />
<feGaussianBlur
in="composite"
stdDeviation="8"
result="blur"
id="feGaussianBlur39" />
<feOffset
dx="5"
dy="15"
result="offset"
id="feOffset41" />
<feComposite
in="SourceGraphic"
in2="offset"
operator="over"
id="feComposite43" />
</filter>
</defs>
<g
class=""
id="g50"
style="stroke:#000000;stroke-width:10;stroke-miterlimit:4;stroke-dasharray:none;fill:#7db27d;fill-opacity:1">
<path
d="m 90.53,23 c -18.345,0 -36.688,7.002 -50.686,21 -27.996,27.996 -27.994,73.38 0,101.375 21.776,21.776 54.08,26.603 80.53,14.5 l 53.69,53.688 c -21.425,19.696 -44,38.257 -67.44,55.937 l 30.126,30.125 c 18.734,-22.545 37.953,-44.474 57.844,-65.53 L 364.188,403.688 C 312.343,444.132 243.322,457.526 171.375,446.25 L 173,424.906 72.47,404.47 l 95.405,88.405 1.97,-26 c 86.593,36.97 177.603,34.61 241.343,-11.75 l 63.062,21.313 -21.47,-63.594 c 44.61,-63.62 46.408,-153.412 9.908,-238.875 l 26.03,-1.97 -88.406,-95.375 20.438,100.53 21.344,-1.624 c 11.278,71.983 -2.168,141.017 -42.656,192.876 L 229.656,198.656 c 21.075,-20.34 42.93,-39.665 65.78,-57.72 l -30.123,-30.124 c -17.015,24.154 -35.673,46.66 -55.688,67.813 l -53.97,-53.97 C 167.834,98.183 163.032,65.814 141.22,44 127.22,30.002 108.877,23 90.53,23 Z m 0,27.03 c 11.434,0.002 22.872,4.34 31.595,13.064 17.447,17.447 17.446,45.742 0,63.187 -17.446,17.447 -45.71,17.447 -63.156,0 -17.447,-17.444 -17.448,-45.74 0,-63.186 C 67.69,54.37 79.097,50.03 90.53,50.03 Z"
fill="#8eff09"
fill-opacity="1"
transform="matrix(0.9,0,0,0.9,25.6,25.6)"
filter="url(#shadow-1)"
id="path48"
style="stroke:#000000;stroke-width:11.11111111;stroke-miterlimit:4;stroke-dasharray:none;fill:#7db27d;fill-opacity:1" />
</g>
</svg>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" style="height: 512px; width: 512px;"><defs><filter id="shadow-1" height="300%" width="300%" x="-100%" y="-100%"><feFlood flood-color="rgba(248, 231, 28, 1)" result="flood"></feFlood><feComposite in="flood" in2="SourceGraphic" operator="atop" result="composite"></feComposite><feGaussianBlur in="composite" stdDeviation="40" result="blur"></feGaussianBlur><feOffset dx="0" dy="0" result="offset"></feOffset><feComposite in="SourceGraphic" in2="offset" operator="over"></feComposite></filter><filter id="shadow-3" height="300%" width="300%" x="-100%" y="-100%"><feFlood flood-color="rgba(248, 231, 28, 1)" result="flood"></feFlood><feComposite in="flood" in2="SourceGraphic" operator="atop" result="composite"></feComposite><feGaussianBlur in="composite" stdDeviation="40" result="blur"></feGaussianBlur><feOffset dx="0" dy="0" result="offset"></feOffset><feComposite in="SourceGraphic" in2="offset" operator="over"></feComposite></filter><filter id="shadow-6" height="300%" width="300%" x="-100%" y="-100%"><feFlood flood-color="rgba(72, 186, 255, 1)" result="flood"></feFlood><feComposite in="flood" in2="SourceGraphic" operator="atop" result="composite"></feComposite><feGaussianBlur in="composite" stdDeviation="8" result="blur"></feGaussianBlur><feOffset dx="5" dy="15" result="offset"></feOffset><feComposite in="SourceGraphic" in2="offset" operator="over"></feComposite></filter><filter id="shadow-7" height="300%" width="300%" x="-100%" y="-100%"><feFlood flood-color="rgba(72, 186, 255, 1)" result="flood"></feFlood><feComposite in="flood" in2="SourceGraphic" operator="atop" result="composite"></feComposite><feGaussianBlur in="composite" stdDeviation="8" result="blur"></feGaussianBlur><feOffset dx="5" dy="15" result="offset"></feOffset><feComposite in="SourceGraphic" in2="offset" operator="over"></feComposite></filter></defs><g class="" transform="translate(0,0)" style=""><path d="M90.53 23c-18.345 0-36.688 7.002-50.686 21-27.996 27.996-27.994 73.38 0 101.375 21.776 21.776 54.08 26.603 80.53 14.5l53.69 53.688c-21.425 19.696-44 38.257-67.44 55.937l30.126 30.125c18.734-22.545 37.953-44.474 57.844-65.53l169.594 169.593c-51.845 40.444-120.866 53.838-192.813 42.562L173 424.906 72.47 404.47l95.405 88.405 1.97-26c86.593 36.97 177.603 34.61 241.343-11.75l63.062 21.313-21.47-63.594c44.61-63.62 46.408-153.412 9.908-238.875l26.03-1.97-88.406-95.375 20.438 100.53 21.344-1.624c11.278 71.983-2.168 141.017-42.656 192.876l-169.782-169.75c21.075-20.34 42.93-39.665 65.78-57.72l-30.123-30.124c-17.015 24.154-35.673 46.66-55.688 67.813l-53.97-53.97C167.834 98.183 163.032 65.814 141.22 44c-14-13.998-32.343-21-50.69-21zm0 27.03c11.434.002 22.872 4.34 31.595 13.064 17.447 17.447 17.446 45.742 0 63.187-17.446 17.447-45.71 17.447-63.156 0-17.447-17.444-17.448-45.74 0-63.186C67.69 54.37 79.097 50.03 90.53 50.03z" fill="#8eff09" fill-opacity="1" transform="translate(25.6, 25.6) scale(0.9, 0.9) rotate(0, 256, 256) skewX(0) skewY(0)" filter="url(#shadow-1)"></path></g></svg>

Before

Width:  |  Height:  |  Size: 5.8 KiB

After

Width:  |  Height:  |  Size: 3.0 KiB

View File

@ -1,159 +1 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
viewBox="0 0 512 512"
style="height: 512px; width: 512px;"
version="1.1"
id="svg41"
sodipodi:docname="conquete.svg"
inkscape:version="1.0.1 (3bc2e813f5, 2020-09-07)">
<metadata
id="metadata45">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
</cc:Work>
</rdf:RDF>
</metadata>
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="2077"
inkscape:window-height="1321"
id="namedview43"
showgrid="false"
inkscape:zoom="1.4355469"
inkscape:cx="256"
inkscape:cy="256"
inkscape:window-x="1573"
inkscape:window-y="459"
inkscape:window-maximized="0"
inkscape:current-layer="svg41" />
<defs
id="defs35">
<filter
id="shadow-1"
height="300%"
width="300%"
x="-100%"
y="-100%">
<feFlood
flood-color="rgba(248, 231, 28, 1)"
result="flood"
id="feFlood2" />
<feComposite
in="flood"
in2="SourceGraphic"
operator="atop"
result="composite"
id="feComposite4" />
<feGaussianBlur
in="composite"
stdDeviation="40"
result="blur"
id="feGaussianBlur6" />
<feOffset
dx="0"
dy="0"
result="offset"
id="feOffset8" />
<feComposite
in="SourceGraphic"
in2="offset"
operator="over"
id="feComposite10" />
</filter>
<filter
id="shadow-6"
height="300%"
width="300%"
x="-100%"
y="-100%">
<feFlood
flood-color="rgba(72, 186, 255, 1)"
result="flood"
id="feFlood13" />
<feComposite
in="flood"
in2="SourceGraphic"
operator="atop"
result="composite"
id="feComposite15" />
<feGaussianBlur
in="composite"
stdDeviation="8"
result="blur"
id="feGaussianBlur17" />
<feOffset
dx="5"
dy="15"
result="offset"
id="feOffset19" />
<feComposite
in="SourceGraphic"
in2="offset"
operator="over"
id="feComposite21" />
</filter>
<filter
id="shadow-7"
height="300%"
width="300%"
x="-100%"
y="-100%">
<feFlood
flood-color="rgba(72, 186, 255, 1)"
result="flood"
id="feFlood24" />
<feComposite
in="flood"
in2="SourceGraphic"
operator="atop"
result="composite"
id="feComposite26" />
<feGaussianBlur
in="composite"
stdDeviation="8"
result="blur"
id="feGaussianBlur28" />
<feOffset
dx="5"
dy="15"
result="offset"
id="feOffset30" />
<feComposite
in="SourceGraphic"
in2="offset"
operator="over"
id="feComposite32" />
</filter>
</defs>
<g
class=""
id="g39"
style="stroke:#000000;stroke-width:8;stroke-miterlimit:4;stroke-dasharray:none">
<path
d="m 27.084,18.248 c -44.987,128.23 116.066,259.672 287.412,362.826 -4.645,13.767 -5.585,27.628 -3.394,40.635 4.44,26.355 20.974,48.997 42.86,62.425 21.884,13.428 49.776,17.57 75.645,5.765 25.87,-11.804 48.69,-38.923 62.737,-84.654 l -17.865,-5.488 c -13,42.318 -32.806,64.094 -52.63,73.14 -19.825,9.047 -40.69,5.998 -58.116,-4.693 -17.425,-10.69 -30.75,-29.095 -34.205,-49.6 -3.455,-20.507 2.232,-43.318 24.677,-65.218 20.743,-20.24 32.068,-41.615 30.434,-61.24 l -18.622,1.552 c 0.74,8.89 -4.35,22.76 -16.684,37.486 C 222.057,230.8 73.838,128.622 27.084,18.248 Z m 458.05,0 C 451.34,98.03 364.527,173.53 270.93,247.166 c 19.492,15.878 39.56,31.622 59.195,45.012 110.756,-84.836 187.878,-180.243 155.01,-273.93 z M 127.58,292.146 c -1.634,19.626 9.69,41 30.434,61.24 22.445,21.9 28.132,44.712 24.677,65.218 -3.455,20.506 -16.78,38.91 -34.206,49.6 -17.425,10.692 -38.29,13.74 -58.115,4.694 -19.825,-9.046 -39.632,-30.822 -52.63,-73.14 l -17.865,5.488 c 14.046,45.73 36.867,72.85 62.736,84.654 25.87,11.805 53.763,7.663 75.648,-5.765 21.885,-13.428 38.42,-36.07 42.86,-62.426 2.19,-13.005 1.25,-26.863 -3.393,-40.628 13.986,-8.42 27.905,-17.022 41.648,-25.803 l -56.967,-39.387 c -6.55,5.103 -13.063,10.2 -19.52,15.293 C 150.55,316.46 145.46,302.59 146.2,293.7 l -18.622,-1.554 z m 18.1,73.614 c -26.1,8.6 -62.087,36.255 -77.104,60.324 4.948,8.63 10.393,15.223 16.05,20.14 25.846,-8.953 59.85,-37.406 74.733,-60.257 -3.007,-6.6 -7.454,-13.386 -13.68,-20.207 z m 220.863,0 c -6.225,6.822 -10.67,13.61 -13.68,20.21 14.886,22.85 48.89,51.3 74.736,60.255 5.656,-4.918 11.1,-11.51 16.05,-20.14 -15.018,-24.07 -51.004,-51.724 -77.105,-60.325 z"
fill="#b41e00"
fill-opacity="1"
transform="matrix(0.9,0,0,0.9,25.6,25.6)"
filter="url(#shadow-1)"
id="path37"
style="stroke:#000000;stroke-width:8.88888889;stroke-miterlimit:4;stroke-dasharray:none" />
</g>
</svg>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" style="height: 512px; width: 512px;"><defs><filter id="shadow-1" height="300%" width="300%" x="-100%" y="-100%"><feFlood flood-color="rgba(248, 231, 28, 1)" result="flood"></feFlood><feComposite in="flood" in2="SourceGraphic" operator="atop" result="composite"></feComposite><feGaussianBlur in="composite" stdDeviation="40" result="blur"></feGaussianBlur><feOffset dx="0" dy="0" result="offset"></feOffset><feComposite in="SourceGraphic" in2="offset" operator="over"></feComposite></filter><filter id="shadow-6" height="300%" width="300%" x="-100%" y="-100%"><feFlood flood-color="rgba(72, 186, 255, 1)" result="flood"></feFlood><feComposite in="flood" in2="SourceGraphic" operator="atop" result="composite"></feComposite><feGaussianBlur in="composite" stdDeviation="8" result="blur"></feGaussianBlur><feOffset dx="5" dy="15" result="offset"></feOffset><feComposite in="SourceGraphic" in2="offset" operator="over"></feComposite></filter><filter id="shadow-7" height="300%" width="300%" x="-100%" y="-100%"><feFlood flood-color="rgba(72, 186, 255, 1)" result="flood"></feFlood><feComposite in="flood" in2="SourceGraphic" operator="atop" result="composite"></feComposite><feGaussianBlur in="composite" stdDeviation="8" result="blur"></feGaussianBlur><feOffset dx="5" dy="15" result="offset"></feOffset><feComposite in="SourceGraphic" in2="offset" operator="over"></feComposite></filter></defs><g class="" transform="translate(0,0)" style=""><path d="M27.084 18.248C-17.903 146.478 143.15 277.92 314.496 381.074c-4.645 13.767-5.585 27.628-3.394 40.635 4.44 26.355 20.974 48.997 42.86 62.425 21.884 13.428 49.776 17.57 75.645 5.765 25.87-11.804 48.69-38.923 62.737-84.654l-17.865-5.488c-13 42.318-32.806 64.094-52.63 73.14-19.825 9.047-40.69 5.998-58.116-4.693-17.425-10.69-30.75-29.095-34.205-49.6-3.455-20.507 2.232-43.318 24.677-65.218 20.743-20.24 32.068-41.615 30.434-61.24l-18.622 1.552c.74 8.89-4.35 22.76-16.684 37.486C222.057 230.8 73.838 128.622 27.084 18.248zm458.05 0C451.34 98.03 364.527 173.53 270.93 247.166c19.492 15.878 39.56 31.622 59.195 45.012 110.756-84.836 187.878-180.243 155.01-273.93zM127.58 292.146c-1.634 19.626 9.69 41 30.434 61.24 22.445 21.9 28.132 44.712 24.677 65.218-3.455 20.506-16.78 38.91-34.206 49.6-17.425 10.692-38.29 13.74-58.115 4.694-19.825-9.046-39.632-30.822-52.63-73.14l-17.865 5.488c14.046 45.73 36.867 72.85 62.736 84.654 25.87 11.805 53.763 7.663 75.648-5.765 21.885-13.428 38.42-36.07 42.86-62.426 2.19-13.005 1.25-26.863-3.393-40.628 13.986-8.42 27.905-17.022 41.648-25.803l-56.967-39.387c-6.55 5.103-13.063 10.2-19.52 15.293C150.55 316.46 145.46 302.59 146.2 293.7l-18.622-1.554zm18.1 73.614c-26.1 8.6-62.087 36.255-77.104 60.324 4.948 8.63 10.393 15.223 16.05 20.14 25.846-8.953 59.85-37.406 74.733-60.257-3.007-6.6-7.454-13.386-13.68-20.207zm220.863 0c-6.225 6.822-10.67 13.61-13.68 20.21 14.886 22.85 48.89 51.3 74.736 60.255 5.656-4.918 11.1-11.51 16.05-20.14-15.018-24.07-51.004-51.724-77.105-60.325z" fill="#b41e00" fill-opacity="1" transform="translate(25.6, 25.6) scale(0.9, 0.9) rotate(0, 256, 256) skewX(0) skewY(0)" filter="url(#shadow-1)"></path></g></svg>

Before

Width:  |  Height:  |  Size: 5.6 KiB

After

Width:  |  Height:  |  Size: 3.1 KiB

View File

@ -1,191 +1 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
viewBox="0 0 512 512"
style="height: 256px; width: 256px;"
version="1.1"
id="svg52"
sodipodi:docname="debordement.svg"
inkscape:version="1.0.1 (3bc2e813f5, 2020-09-07)">
<metadata
id="metadata56">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
</cc:Work>
</rdf:RDF>
</metadata>
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="2673"
inkscape:window-height="1516"
id="namedview54"
showgrid="false"
inkscape:zoom="1.4355469"
inkscape:cx="256"
inkscape:cy="256"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="0"
inkscape:current-layer="svg52" />
<defs
id="defs46">
<filter
id="shadow-1"
height="300%"
width="300%"
x="-100%"
y="-100%">
<feFlood
flood-color="rgba(255, 255, 255, 1)"
result="flood"
id="feFlood2" />
<feComposite
in="flood"
in2="SourceGraphic"
operator="atop"
result="composite"
id="feComposite4" />
<feGaussianBlur
in="composite"
stdDeviation="10"
result="blur"
id="feGaussianBlur6" />
<feOffset
dx="0"
dy="10"
result="offset"
id="feOffset8" />
<feComposite
in="SourceGraphic"
in2="offset"
operator="over"
id="feComposite10" />
</filter>
<filter
id="shadow-3"
height="300%"
width="300%"
x="-100%"
y="-100%">
<feFlood
flood-color="rgba(248, 231, 28, 1)"
result="flood"
id="feFlood13" />
<feComposite
in="flood"
in2="SourceGraphic"
operator="atop"
result="composite"
id="feComposite15" />
<feGaussianBlur
in="composite"
stdDeviation="40"
result="blur"
id="feGaussianBlur17" />
<feOffset
dx="0"
dy="0"
result="offset"
id="feOffset19" />
<feComposite
in="SourceGraphic"
in2="offset"
operator="over"
id="feComposite21" />
</filter>
<filter
id="shadow-6"
height="300%"
width="300%"
x="-100%"
y="-100%">
<feFlood
flood-color="rgba(72, 186, 255, 1)"
result="flood"
id="feFlood24" />
<feComposite
in="flood"
in2="SourceGraphic"
operator="atop"
result="composite"
id="feComposite26" />
<feGaussianBlur
in="composite"
stdDeviation="8"
result="blur"
id="feGaussianBlur28" />
<feOffset
dx="5"
dy="15"
result="offset"
id="feOffset30" />
<feComposite
in="SourceGraphic"
in2="offset"
operator="over"
id="feComposite32" />
</filter>
<filter
id="shadow-7"
height="300%"
width="300%"
x="-100%"
y="-100%">
<feFlood
flood-color="rgba(72, 186, 255, 1)"
result="flood"
id="feFlood35" />
<feComposite
in="flood"
in2="SourceGraphic"
operator="atop"
result="composite"
id="feComposite37" />
<feGaussianBlur
in="composite"
stdDeviation="8"
result="blur"
id="feGaussianBlur39" />
<feOffset
dx="5"
dy="15"
result="offset"
id="feOffset41" />
<feComposite
in="SourceGraphic"
in2="offset"
operator="over"
id="feComposite43" />
</filter>
</defs>
<g
class=""
id="g50"
style="stroke:#5959b2;stroke-width:7;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1">
<path
d="m 400.9,104.8 c -12,30 -41,47.9 -99.7,43.9 -13.7,-1.8 -27.6,-4.1 -41.6,-6.7 C 140.5,104.8 23.36,104.8 23.36,179.2 56.84,142 141.1,148.4 248.4,175.2 c 116.8,29.2 241.8,41.2 241.8,-51.8 -18.4,19.3 -53.4,28.6 -96.6,30.4 10,-10.4 12.5,-26.7 7.3,-49 z M 147,187.5 c -70.75,-0.3 -123.64,16.1 -123.64,66.1 33.48,-37.2 117.74,-34.8 225.04,-8 116.8,29.2 241.8,45.2 241.8,-47.8 -35.4,37.2 -130.2,39.6 -230.6,8 -37.7,-11.9 -78,-18.2 -112.6,-18.3 z m -23.9,69.6 C 64.66,256.9 23.36,272.7 23.36,328 56.84,290.8 145.7,283.7 248.4,309.4 c 121,30.2 241.8,37.2 241.8,-37.2 -35.4,37.2 -132.1,22.6 -230.6,4 -48.4,-7.5 -96.5,-19.1 -136.5,-19.1 z m 0,74.3 c -58.44,-0.1 -99.74,15.8 -99.74,71 19.03,-21.1 55.52,-30.3 102.54,-30.8 -10.4,10.4 -12.9,26.9 -7.7,49.4 13.9,-34.8 52,-51.8 130.3,-37.2 122.6,22.8 241.7,37.2 241.7,-37.2 -35.4,37.2 -132.1,18.6 -230.6,0 -48.4,-7.6 -96.5,-15.1 -136.5,-15.2 z"
fill="#48baff"
fill-opacity="1"
transform="matrix(0.9,0,0,0.9,25.6,25.6)"
filter="url(#shadow-1)"
id="path48"
style="stroke:#5959b2;stroke-width:7.77777778;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
</g>
</svg>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" style="height: 256px; width: 256px;"><defs><filter id="shadow-1" height="300%" width="300%" x="-100%" y="-100%"><feFlood flood-color="rgba(255, 255, 255, 1)" result="flood"></feFlood><feComposite in="flood" in2="SourceGraphic" operator="atop" result="composite"></feComposite><feGaussianBlur in="composite" stdDeviation="10" result="blur"></feGaussianBlur><feOffset dx="0" dy="10" result="offset"></feOffset><feComposite in="SourceGraphic" in2="offset" operator="over"></feComposite></filter><filter id="shadow-3" height="300%" width="300%" x="-100%" y="-100%"><feFlood flood-color="rgba(248, 231, 28, 1)" result="flood"></feFlood><feComposite in="flood" in2="SourceGraphic" operator="atop" result="composite"></feComposite><feGaussianBlur in="composite" stdDeviation="40" result="blur"></feGaussianBlur><feOffset dx="0" dy="0" result="offset"></feOffset><feComposite in="SourceGraphic" in2="offset" operator="over"></feComposite></filter><filter id="shadow-6" height="300%" width="300%" x="-100%" y="-100%"><feFlood flood-color="rgba(72, 186, 255, 1)" result="flood"></feFlood><feComposite in="flood" in2="SourceGraphic" operator="atop" result="composite"></feComposite><feGaussianBlur in="composite" stdDeviation="8" result="blur"></feGaussianBlur><feOffset dx="5" dy="15" result="offset"></feOffset><feComposite in="SourceGraphic" in2="offset" operator="over"></feComposite></filter><filter id="shadow-7" height="300%" width="300%" x="-100%" y="-100%"><feFlood flood-color="rgba(72, 186, 255, 1)" result="flood"></feFlood><feComposite in="flood" in2="SourceGraphic" operator="atop" result="composite"></feComposite><feGaussianBlur in="composite" stdDeviation="8" result="blur"></feGaussianBlur><feOffset dx="5" dy="15" result="offset"></feOffset><feComposite in="SourceGraphic" in2="offset" operator="over"></feComposite></filter></defs><g class="" transform="translate(0,0)" style=""><path d="M400.9 104.8c-12 30-41 47.9-99.7 43.9-13.7-1.8-27.6-4.1-41.6-6.7-119.1-37.2-236.24-37.2-236.24 37.2 33.48-37.2 117.74-30.8 225.04-4 116.8 29.2 241.8 41.2 241.8-51.8-18.4 19.3-53.4 28.6-96.6 30.4 10-10.4 12.5-26.7 7.3-49zM147 187.5c-70.75-.3-123.64 16.1-123.64 66.1 33.48-37.2 117.74-34.8 225.04-8 116.8 29.2 241.8 45.2 241.8-47.8-35.4 37.2-130.2 39.6-230.6 8-37.7-11.9-78-18.2-112.6-18.3zm-23.9 69.6c-58.44-.2-99.74 15.6-99.74 70.9 33.48-37.2 122.34-44.3 225.04-18.6 121 30.2 241.8 37.2 241.8-37.2-35.4 37.2-132.1 22.6-230.6 4-48.4-7.5-96.5-19.1-136.5-19.1zm0 74.3c-58.44-.1-99.74 15.8-99.74 71 19.03-21.1 55.52-30.3 102.54-30.8-10.4 10.4-12.9 26.9-7.7 49.4 13.9-34.8 52-51.8 130.3-37.2 122.6 22.8 241.7 37.2 241.7-37.2-35.4 37.2-132.1 18.6-230.6 0-48.4-7.6-96.5-15.1-136.5-15.2z" fill="#48baff" fill-opacity="1" transform="translate(25.6, 25.6) scale(0.9, 0.9) rotate(0, 256, 256) skewX(0) skewY(0)" filter="url(#shadow-1)"></path></g></svg>

Before

Width:  |  Height:  |  Size: 5.6 KiB

After

Width:  |  Height:  |  Size: 2.8 KiB

View File

@ -33,8 +33,8 @@
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="2513"
inkscape:window-height="1633"
inkscape:window-width="2014"
inkscape:window-height="1404"
id="namedview32"
showgrid="false"
inkscape:zoom="2.2094112"
@ -43,8 +43,7 @@
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="0"
inkscape:current-layer="svg30"
inkscape:document-rotation="0" />
inkscape:current-layer="svg30" />
<defs
id="defs24">
<filter
@ -115,13 +114,11 @@
<g
class=""
transform="translate(-2.1627108,-0.3)"
id="g28"
style="stroke:#000080;stroke-width:5;stroke-miterlimit:4;stroke-dasharray:none">
id="g28">
<path
d="m 342.5,17.9 c -3.1,11.63 -2.2,21.56 -23.8,25.11 20.3,-2.7 22.3,9.58 24.8,21.49 -2.8,1.94 -5.5,4.11 -8.1,6.49 -21.9,20.84 -33,41.11 -49,61.61 -6.3,1.2 5.3,-53.52 31.1,-79.87 C 225.1,40.92 207.6,268.4 236.4,275 184.7,293.4 163.8,176.7 177,117.7 c -37.1,3.9 -62,39.8 -67.9,60 2.8,27.1 6.1,55.1 38.7,80.9 -32.1,3.6 -42,-27.8 -55.31,-54 -78.59,104.9 105.91,106.8 136.01,94.5 -93,70.5 -149.62,52.3 -196.77,39 -40.48,85.1 61.46,56 107.57,35.7 -18.4,30.7 -72.25,37.6 -88.92,41 61.62,51.3 174.42,-67 200.02,-106.5 2.5,65.7 -74.3,134.4 -122.8,171.7 43.6,2.2 83.2,-17.9 102.4,-55.5 0,10.1 -4.1,22.6 -9.6,35.8 15,-2.1 39.6,-6.2 48.8,-24.2 25,-54.1 37.8,-93.1 15.3,-138.2 29.9,33.5 63.6,65.3 58.4,114.5 26.9,-15.6 48.8,-33.6 24.7,-60.1 14.1,1.4 23.6,7.7 32.8,13.7 13.9,-2.8 34.4,-19.9 33.7,-33 -31.6,-29.8 -83.4,-43.7 -133.8,-55.9 72.1,-19.8 136.9,-10.1 175.6,5.6 5,-11.7 9.4,-29.6 5.9,-41.9 -16.4,-9.7 -62.7,-7.8 -83.3,-5.6 17.7,-15.7 56.8,-21.1 81.3,-21.2 -2,-67.7 -162.6,27.8 -182.2,42.8 32.7,-59.1 123.2,-112.7 178.7,-121.1 -13.2,-31.1 -37.2,-34 -64.3,-22.4 2.4,-9.5 6.7,-17.49 23.4,-15.29 -21.6,-3.51 -20.7,-13.44 -23.8,-25.07 -2.4,13.55 -4.1,17.11 -19.4,26.67 14.3,-2.17 16.4,6.69 17.4,14.69 -53.5,24.4 -117.8,102.8 -135.1,132.5 -22.1,-24 51,-121.5 107.7,-187.46 -3.1,-9.48 -21.8,-6.31 -38.2,4.81 1.1,-8.63 0.7,-22.16 17.9,-19.54 -15.3,-9.6 -17,-13.16 -19.4,-26.71 z m -166.3,0.3 c 5.4,10.73 12.7,17.53 -1,34.56 13.8,-16.07 23.7,-7.13 33.9,0.22 -4.6,-7.19 -16.3,-17.67 -0.7,-27.86 -17.8,3.09 -21.4,1.57 -32.2,-6.92 z M 47.71,26.61 C 44.63,38.24 45.58,48.17 23.95,51.66 44.97,48.92 46.34,62.21 49.01,74.47 50.44,66.04 48.73,50.5 67.15,53.31 51.88,43.72 50.17,40.16 47.71,26.61 Z m 419.39,5.5 c 1.6,10.83 1.3,13.93 -7.8,25.07 13.1,-6.8 15.9,5.39 19.1,11.38 C 477.2,58.59 475,48.2 491.5,44.92 474.3,47.79 472.4,40.07 467.1,32.11 Z M 125.3,84.28 c -0.6,18.02 -12,17.32 -22.7,17.92 7,2.4 20.3,3 15.3,18.2 10.2,-11.6 13.3,-12.5 25.2,-12.6 -9.4,-4.3 -17.8,-4.9 -17.8,-23.52 z M 71.21,153.9 c -8.61,8.5 -12.85,17.5 -33.24,9.6 19.47,8.3 13.98,20.4 10.08,32.4 5.46,-6.6 11.9,-20.9 26.35,-9.1 -8.38,-16 -8.02,-19.9 -3.19,-32.9 z M 453.9,282.7 c -2.4,8.9 -1.7,16.5 -18.2,19.2 16,-2.1 17.1,8.1 19.2,17.5 1.1,-6.5 -0.2,-18.4 13.8,-16.3 -11.7,-7.3 -13,-10 -14.8,-20.4 z M 69.25,293.8 c -12.82,12.7 -16.72,13.5 -30.41,12.7 10.55,5.7 20.39,7.1 18.72,29 2.3,-21.1 15.46,-19.4 28.05,-19.1 -7.83,-3.3 -23.4,-5.3 -16.36,-22.6 z m 394.55,50.7 c 3.1,11.6 8.9,19.7 -8,33.6 16.8,-12.9 24.6,-2.2 33.2,7.1 -3.1,-8 -12.4,-20.6 4.9,-27.4 -18,-0.5 -21.3,-2.8 -30.1,-13.3 z m -139.2,72.1 c -2.7,12.3 -4.1,25.5 -25.1,22.8 21.6,3.5 20.7,13.4 23.8,25 2.4,-13.5 4.1,-17.1 19.4,-26.6 C 324.3,440.6 326,425 324.6,416.6 Z M 83.9,438.2 c -2.83,16 -4.84,20.2 -22.86,31.5 21.68,-3.3 19.67,15.1 21.33,25 3.19,-14.5 4.84,-30.1 29.63,-26.9 -25.5,-4.2 -24.43,-15.9 -28.1,-29.6 z m 366.2,11.4 c -7.3,9.6 -10.2,19.1 -31.5,14.2 20.4,5.4 16.8,18.1 14.6,30.6 4.5,-7.3 8.8,-22.4 24.8,-12.8 -10.6,-14.6 -10.8,-18.6 -7.9,-32 z"
fill="#ffffff"
fill-opacity="1"
id="path26"
style="stroke:#000080;stroke-width:5;stroke-miterlimit:4;stroke-dasharray:none" />
id="path26" />
</g>
</svg>

Before

Width:  |  Height:  |  Size: 6.1 KiB

After

Width:  |  Height:  |  Size: 5.9 KiB

View File

@ -33,8 +33,8 @@
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="2665"
inkscape:window-height="1441"
inkscape:window-width="1680"
inkscape:window-height="1083"
id="namedview54"
showgrid="false"
inkscape:zoom="1.5990661"
@ -43,8 +43,7 @@
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="0"
inkscape:current-layer="svg52"
inkscape:document-rotation="0" />
inkscape:current-layer="svg52" />
<defs
id="defs46">
<filter
@ -179,15 +178,13 @@
<g
class=""
id="g50"
transform="matrix(1.1287777,0,0,1.1287777,-32.967091,-40.026839)"
style="stroke:#000000;stroke-width:4.42957014;stroke-miterlimit:4;stroke-dasharray:none">
transform="matrix(1.1287777,0,0,1.1287777,-32.967091,-40.026839)">
<path
d="M 72.877,31.904 C 71.887,31.89 70.919,31.91 69.889,32.002 43.67,35.408 22.545,61.005 18,93.775 v 26.15 c 2.296,16.266 8.804,30.665 17.848,41.565 -6.58,1.237 -12.504,3.53 -17.848,6.717 v 23.813 c 22.983,0.386 43.265,14.03 57.31,34.318 C 89.56,246.92 98,274.598 98,305 98,335.402 89.56,363.08 75.31,383.662 61.266,403.95 40.984,417.592 18,417.98 v 8.577 L 23.03,494 H 30.7 L 138.904,332.176 140,304 c 0.732,-41.132 16.536,-59.598 32,-48 4.26,3.195 8.3,6.024 12.135,8.533 l 23.574,-35.258 c -21.607,-17.4 -59.103,-43.23 -90.68,-68.658 10.89,-13.647 17.894,-32.612 17.894,-53.627 C 134.924,65.494 108.478,32 76,32 74.88,31.964 73.867,31.918 72.877,31.904 Z m 366.246,0 c -0.99,0.014 -2.002,0.06 -3.123,0.096 -32.478,0 -58.924,33.494 -58.924,74.99 0,21.015 7.005,39.98 17.895,53.627 -31.577,25.43 -69.073,51.26 -90.68,68.658 l 23.577,35.258 A 232.03,232.03 0 0 0 340,256 c 15.464,-11.598 31.268,6.868 32,48 l 1.096,28.174 L 481.3,494 h 7.67 L 494,426.557 v -8.578 C 471.017,417.591 450.735,403.949 436.69,383.661 422.44,363.08 414,335.402 414,305 c 0,-30.402 8.44,-58.08 22.69,-78.662 14.045,-20.288 34.327,-33.932 57.31,-34.318 v -23.813 c -5.344,-3.187 -11.27,-5.48 -17.848,-6.717 9.044,-10.9 15.552,-25.3 17.848,-41.566 V 93.774 C 489.454,61.004 468.33,35.408 442.11,32.002 a 28.52,28.52 0 0 0 -2.987,-0.098 z m -290.365,14.854 40.068,110.215 47.34,-31.653 z m 214.484,0 -87.408,78.562 47.34,31.653 z M 230.25,150.93 213.625,162.047 435.588,494 h 24.057 z m 51.5,0 -14.922,22.316 12.03,17.99 19.517,-29.19 z M 18,210.018 v 189.964 c 15.993,-0.38 30.943,-9.855 42.512,-26.566 C 72.322,356.356 80,332.036 80,305 80,277.965 72.322,253.643 60.512,236.584 48.942,219.874 33.992,210.398 18,210.018 Z m 476,0 c -15.993,0.38 -30.943,9.855 -42.512,26.566 C 439.678,253.644 432,277.964 432,305 c 0,27.035 7.678,51.357 19.488,68.416 11.57,16.71 26.52,26.186 42.512,26.566 z M 233.145,223.62 52.355,494 H 76.412 L 245.174,241.61 Z M 134.748,439.14 98.066,494 h 34.55 z m 242.504,0 2.13,54.86 h 34.552 z"
fill="#003fb2"
fill-opacity="1"
transform="matrix(0.9,0,0,0.9,25.6,25.6)"
filter="url(#shadow-1)"
id="path48"
style="stroke:#000000;stroke-width:4.92174461;stroke-miterlimit:4;stroke-dasharray:none" />
id="path48" />
</g>
</svg>

Before

Width:  |  Height:  |  Size: 6.8 KiB

After

Width:  |  Height:  |  Size: 6.5 KiB

View File

@ -1,187 +1 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
viewBox="0 0 512 512"
style="height: 512px; width: 512px;"
version="1.1"
id="svg56"
sodipodi:docname="maitrisee.svg"
inkscape:version="1.0.1 (3bc2e813f5, 2020-09-07)">
<metadata
id="metadata60">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
</cc:Work>
</rdf:RDF>
</metadata>
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="2352"
inkscape:window-height="1016"
id="namedview58"
showgrid="false"
inkscape:zoom="1.4355469"
inkscape:cx="256"
inkscape:cy="256"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="0"
inkscape:current-layer="svg56" />
<defs
id="defs46">
<filter
id="shadow-1"
height="300%"
width="300%"
x="-100%"
y="-100%">
<feFlood
flood-color="rgba(248, 231, 28, 1)"
result="flood"
id="feFlood2" />
<feComposite
in="flood"
in2="SourceGraphic"
operator="atop"
result="composite"
id="feComposite4" />
<feGaussianBlur
in="composite"
stdDeviation="40"
result="blur"
id="feGaussianBlur6" />
<feOffset
dx="0"
dy="0"
result="offset"
id="feOffset8" />
<feComposite
in="SourceGraphic"
in2="offset"
operator="over"
id="feComposite10" />
</filter>
<filter
id="shadow-3"
height="300%"
width="300%"
x="-100%"
y="-100%">
<feFlood
flood-color="rgba(248, 231, 28, 1)"
result="flood"
id="feFlood13" />
<feComposite
in="flood"
in2="SourceGraphic"
operator="atop"
result="composite"
id="feComposite15" />
<feGaussianBlur
in="composite"
stdDeviation="40"
result="blur"
id="feGaussianBlur17" />
<feOffset
dx="0"
dy="0"
result="offset"
id="feOffset19" />
<feComposite
in="SourceGraphic"
in2="offset"
operator="over"
id="feComposite21" />
</filter>
<filter
id="shadow-6"
height="300%"
width="300%"
x="-100%"
y="-100%">
<feFlood
flood-color="rgba(72, 186, 255, 1)"
result="flood"
id="feFlood24" />
<feComposite
in="flood"
in2="SourceGraphic"
operator="atop"
result="composite"
id="feComposite26" />
<feGaussianBlur
in="composite"
stdDeviation="8"
result="blur"
id="feGaussianBlur28" />
<feOffset
dx="5"
dy="15"
result="offset"
id="feOffset30" />
<feComposite
in="SourceGraphic"
in2="offset"
operator="over"
id="feComposite32" />
</filter>
<filter
id="shadow-7"
height="300%"
width="300%"
x="-100%"
y="-100%">
<feFlood
flood-color="rgba(72, 186, 255, 1)"
result="flood"
id="feFlood35" />
<feComposite
in="flood"
in2="SourceGraphic"
operator="atop"
result="composite"
id="feComposite37" />
<feGaussianBlur
in="composite"
stdDeviation="8"
result="blur"
id="feGaussianBlur39" />
<feOffset
dx="5"
dy="15"
result="offset"
id="feOffset41" />
<feComposite
in="SourceGraphic"
in2="offset"
operator="over"
id="feComposite43" />
</filter>
</defs>
<path
d="m 16,256 v 240 h 48 c 64,-160 320,-160 384,0 h 48 V 256 h -48 v 64 h -60 v -64 h -48 v 64 h -60 v -64 h -48 v 64 h -60 v -64 h -48 v 64 H 64 v -64 z"
class="selected"
fill="#087505"
fill-opacity="1"
filter="url(#shadow-3)"
id="path50"
style="fill:#7db27d;fill-opacity:1;stroke:#000000;stroke-width:11.11111111;stroke-miterlimit:4;stroke-dasharray:none"
transform="matrix(0.9,0,0,0.9,25.6,25.6)" />
</svg>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" style="height: 512px; width: 512px;"><defs><filter id="shadow-1" height="300%" width="300%" x="-100%" y="-100%"><feFlood flood-color="rgba(248, 231, 28, 1)" result="flood"></feFlood><feComposite in="flood" in2="SourceGraphic" operator="atop" result="composite"></feComposite><feGaussianBlur in="composite" stdDeviation="40" result="blur"></feGaussianBlur><feOffset dx="0" dy="0" result="offset"></feOffset><feComposite in="SourceGraphic" in2="offset" operator="over"></feComposite></filter><filter id="shadow-3" height="300%" width="300%" x="-100%" y="-100%"><feFlood flood-color="rgba(248, 231, 28, 1)" result="flood"></feFlood><feComposite in="flood" in2="SourceGraphic" operator="atop" result="composite"></feComposite><feGaussianBlur in="composite" stdDeviation="40" result="blur"></feGaussianBlur><feOffset dx="0" dy="0" result="offset"></feOffset><feComposite in="SourceGraphic" in2="offset" operator="over"></feComposite></filter><filter id="shadow-6" height="300%" width="300%" x="-100%" y="-100%"><feFlood flood-color="rgba(72, 186, 255, 1)" result="flood"></feFlood><feComposite in="flood" in2="SourceGraphic" operator="atop" result="composite"></feComposite><feGaussianBlur in="composite" stdDeviation="8" result="blur"></feGaussianBlur><feOffset dx="5" dy="15" result="offset"></feOffset><feComposite in="SourceGraphic" in2="offset" operator="over"></feComposite></filter><filter id="shadow-7" height="300%" width="300%" x="-100%" y="-100%"><feFlood flood-color="rgba(72, 186, 255, 1)" result="flood"></feFlood><feComposite in="flood" in2="SourceGraphic" operator="atop" result="composite"></feComposite><feGaussianBlur in="composite" stdDeviation="8" result="blur"></feGaussianBlur><feOffset dx="5" dy="15" result="offset"></feOffset><feComposite in="SourceGraphic" in2="offset" operator="over"></feComposite></filter></defs><g class="" transform="translate(0,0)" style=""><g transform="translate(25.6, 25.6) scale(0.9, 0.9) rotate(0, 256, 256) skewX(0) skewY(0)"><path d="M256 20C198.562 20 152 66.562 152 124C152 181.438 198.562 228 256 228C313.438 228 360 181.438 360 124C360 66.562 313.438 20 256 20Z" class="" fill="#087505" fill-opacity="0"></path><path d="M16 256L16 496L64 496C128 336 384 336 448 496L496 496L496 256L448 256L448 320L388 320L388 256L340 256L340 320L280 320L280 256L232 256L232 320L172 320L172 256L124 256L124 320L64 320L64 256L16 256Z" class="selected" fill="#087505" fill-opacity="1" filter="url(#shadow-3)"></path></g></g></svg>

Before

Width:  |  Height:  |  Size: 4.8 KiB

After

Width:  |  Height:  |  Size: 2.5 KiB

View File

@ -1,159 +1 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
viewBox="0 0 512 512"
style="height: 512px; width: 512px;"
version="1.1"
id="svg41"
sodipodi:docname="pelerinage.svg"
inkscape:version="1.0.1 (3bc2e813f5, 2020-09-07)">
<metadata
id="metadata45">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
</cc:Work>
</rdf:RDF>
</metadata>
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="2530"
inkscape:window-height="1154"
id="namedview43"
showgrid="false"
inkscape:zoom="1.4355469"
inkscape:cx="256"
inkscape:cy="256"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="0"
inkscape:current-layer="svg41" />
<defs
id="defs35">
<filter
id="shadow-1"
height="300%"
width="300%"
x="-100%"
y="-100%">
<feFlood
flood-color="rgba(248, 231, 28, 1)"
result="flood"
id="feFlood2" />
<feComposite
in="flood"
in2="SourceGraphic"
operator="atop"
result="composite"
id="feComposite4" />
<feGaussianBlur
in="composite"
stdDeviation="40"
result="blur"
id="feGaussianBlur6" />
<feOffset
dx="0"
dy="0"
result="offset"
id="feOffset8" />
<feComposite
in="SourceGraphic"
in2="offset"
operator="over"
id="feComposite10" />
</filter>
<filter
id="shadow-6"
height="300%"
width="300%"
x="-100%"
y="-100%">
<feFlood
flood-color="rgba(72, 186, 255, 1)"
result="flood"
id="feFlood13" />
<feComposite
in="flood"
in2="SourceGraphic"
operator="atop"
result="composite"
id="feComposite15" />
<feGaussianBlur
in="composite"
stdDeviation="8"
result="blur"
id="feGaussianBlur17" />
<feOffset
dx="5"
dy="15"
result="offset"
id="feOffset19" />
<feComposite
in="SourceGraphic"
in2="offset"
operator="over"
id="feComposite21" />
</filter>
<filter
id="shadow-7"
height="300%"
width="300%"
x="-100%"
y="-100%">
<feFlood
flood-color="rgba(72, 186, 255, 1)"
result="flood"
id="feFlood24" />
<feComposite
in="flood"
in2="SourceGraphic"
operator="atop"
result="composite"
id="feComposite26" />
<feGaussianBlur
in="composite"
stdDeviation="8"
result="blur"
id="feGaussianBlur28" />
<feOffset
dx="5"
dy="15"
result="offset"
id="feOffset30" />
<feComposite
in="SourceGraphic"
in2="offset"
operator="over"
id="feComposite32" />
</filter>
</defs>
<g
class=""
id="g39"
style="stroke:#000000;stroke-width:8;stroke-miterlimit:4;stroke-dasharray:none">
<path
d="m 259.844,73.406 1.625,214.47 -18.69,0.155 -1.655,-214.342 C 206.358,75.24 172.012,82.588 141,95.78 c 36.116,61.6 59.493,126.474 75.813,196.5 l -18.22,4.25 C 182.46,227.29 159.504,163.924 124,103.78 86.984,122.97 56.014,151.27 36.844,188.75 94.728,213.41 141.97,256.61 177.781,307.438 l -15.28,10.75 C 128.217,269.528 83.409,228.86 29.221,205.844 c -8.57,22.082 -13.345,46.943 -13.345,74.594 95.028,17.855 145.516,75.937 151.406,92 3.752,10.228 -27.905,21.074 -27.905,38.156 0,12.34 25.52,20.537 59.668,24.67 -3.846,-4.94 -7.694,-10.374 -11.59,-16.31 l 15.625,-10.255 c 9.802,14.937 18.996,25.865 27.354,32.73 8.358,6.864 15.493,9.632 22.423,9.68 13.862,0.094 31.592,-12.316 53.723,-42.776 l 15.12,10.984 c -4.31,5.93 -8.553,11.385 -12.76,16.35 36.362,-4.006 64.125,-12.375 64.125,-25.074 0,-17.92 -35.487,-28.412 -33.72,-39.97 2.31,-15.09 55.528,-74.91 156.626,-90.187 0,-28.807 -5.284,-54.622 -14.72,-77.437 -57.322,22.41 -104.478,64.46 -140.22,115.188 l -15.28,-10.75 c 37.145,-52.72 86.607,-97.216 147.47,-121.344 -20.457,-37.87 -53.207,-66.233 -92.064,-85.03 -36.426,60.947 -59.84,125.186 -76.22,195.467 l -18.186,-4.25 C 303.274,221.387 327.029,155.78 363.907,93.5 331.487,80.665 295.741,73.95 259.845,73.406 Z"
fill="#b41e00"
fill-opacity="1"
transform="matrix(0.9,0,0,0.9,25.6,25.6)"
filter="url(#shadow-1)"
id="path37"
style="stroke:#000000;stroke-width:8.88888889;stroke-miterlimit:4;stroke-dasharray:none" />
</g>
</svg>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" style="height: 512px; width: 512px;"><defs><filter id="shadow-1" height="300%" width="300%" x="-100%" y="-100%"><feFlood flood-color="rgba(248, 231, 28, 1)" result="flood"></feFlood><feComposite in="flood" in2="SourceGraphic" operator="atop" result="composite"></feComposite><feGaussianBlur in="composite" stdDeviation="40" result="blur"></feGaussianBlur><feOffset dx="0" dy="0" result="offset"></feOffset><feComposite in="SourceGraphic" in2="offset" operator="over"></feComposite></filter><filter id="shadow-6" height="300%" width="300%" x="-100%" y="-100%"><feFlood flood-color="rgba(72, 186, 255, 1)" result="flood"></feFlood><feComposite in="flood" in2="SourceGraphic" operator="atop" result="composite"></feComposite><feGaussianBlur in="composite" stdDeviation="8" result="blur"></feGaussianBlur><feOffset dx="5" dy="15" result="offset"></feOffset><feComposite in="SourceGraphic" in2="offset" operator="over"></feComposite></filter><filter id="shadow-7" height="300%" width="300%" x="-100%" y="-100%"><feFlood flood-color="rgba(72, 186, 255, 1)" result="flood"></feFlood><feComposite in="flood" in2="SourceGraphic" operator="atop" result="composite"></feComposite><feGaussianBlur in="composite" stdDeviation="8" result="blur"></feGaussianBlur><feOffset dx="5" dy="15" result="offset"></feOffset><feComposite in="SourceGraphic" in2="offset" operator="over"></feComposite></filter></defs><g class="" transform="translate(0,0)" style=""><path d="M259.844 73.406l1.625 214.47-18.69.155-1.655-214.342C206.358 75.24 172.012 82.588 141 95.78c36.116 61.6 59.493 126.474 75.813 196.5l-18.22 4.25C182.46 227.29 159.504 163.924 124 103.78c-37.016 19.19-67.986 47.49-87.156 84.97 57.884 24.66 105.126 67.86 140.937 118.688l-15.28 10.75c-34.284-48.66-79.092-89.328-133.28-112.344-8.57 22.082-13.345 46.943-13.345 74.594 95.028 17.855 145.516 75.937 151.406 92 3.752 10.228-27.905 21.074-27.905 38.156 0 12.34 25.52 20.537 59.668 24.67-3.846-4.94-7.694-10.374-11.59-16.31l15.625-10.255c9.802 14.937 18.996 25.865 27.354 32.73 8.358 6.864 15.493 9.632 22.423 9.68 13.862.094 31.592-12.316 53.723-42.776l15.12 10.984c-4.31 5.93-8.553 11.385-12.76 16.35 36.362-4.006 64.125-12.375 64.125-25.074 0-17.92-35.487-28.412-33.72-39.97 2.31-15.09 55.528-74.91 156.626-90.187 0-28.807-5.284-54.622-14.72-77.437-57.322 22.41-104.478 64.46-140.22 115.188l-15.28-10.75c37.145-52.72 86.607-97.216 147.47-121.344-20.457-37.87-53.207-66.233-92.064-85.03-36.426 60.947-59.84 125.186-76.22 195.467l-18.186-4.25c16.523-70.893 40.278-136.5 77.156-198.78-32.42-12.835-68.166-19.55-104.062-20.094z" fill="#b41e00" fill-opacity="1" transform="translate(25.6, 25.6) scale(0.9, 0.9) rotate(0, 256, 256) skewX(0) skewY(0)" filter="url(#shadow-1)"></path></g></svg>

Before

Width:  |  Height:  |  Size: 5.2 KiB

After

Width:  |  Height:  |  Size: 2.7 KiB

View File

@ -1,191 +1 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
viewBox="0 0 512 512"
style="height: 512px; width: 512px;"
version="1.1"
id="svg52"
sodipodi:docname="periple.svg"
inkscape:version="1.0.1 (3bc2e813f5, 2020-09-07)">
<metadata
id="metadata56">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
</cc:Work>
</rdf:RDF>
</metadata>
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="2760"
inkscape:window-height="1358"
id="namedview54"
showgrid="false"
inkscape:zoom="1.4355469"
inkscape:cx="256"
inkscape:cy="256"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="0"
inkscape:current-layer="svg52" />
<defs
id="defs46">
<filter
id="shadow-1"
height="300%"
width="300%"
x="-100%"
y="-100%">
<feFlood
flood-color="rgba(248, 231, 28, 1)"
result="flood"
id="feFlood2" />
<feComposite
in="flood"
in2="SourceGraphic"
operator="atop"
result="composite"
id="feComposite4" />
<feGaussianBlur
in="composite"
stdDeviation="40"
result="blur"
id="feGaussianBlur6" />
<feOffset
dx="0"
dy="0"
result="offset"
id="feOffset8" />
<feComposite
in="SourceGraphic"
in2="offset"
operator="over"
id="feComposite10" />
</filter>
<filter
id="shadow-3"
height="300%"
width="300%"
x="-100%"
y="-100%">
<feFlood
flood-color="rgba(248, 231, 28, 1)"
result="flood"
id="feFlood13" />
<feComposite
in="flood"
in2="SourceGraphic"
operator="atop"
result="composite"
id="feComposite15" />
<feGaussianBlur
in="composite"
stdDeviation="40"
result="blur"
id="feGaussianBlur17" />
<feOffset
dx="0"
dy="0"
result="offset"
id="feOffset19" />
<feComposite
in="SourceGraphic"
in2="offset"
operator="over"
id="feComposite21" />
</filter>
<filter
id="shadow-6"
height="300%"
width="300%"
x="-100%"
y="-100%">
<feFlood
flood-color="rgba(72, 186, 255, 1)"
result="flood"
id="feFlood24" />
<feComposite
in="flood"
in2="SourceGraphic"
operator="atop"
result="composite"
id="feComposite26" />
<feGaussianBlur
in="composite"
stdDeviation="8"
result="blur"
id="feGaussianBlur28" />
<feOffset
dx="5"
dy="15"
result="offset"
id="feOffset30" />
<feComposite
in="SourceGraphic"
in2="offset"
operator="over"
id="feComposite32" />
</filter>
<filter
id="shadow-7"
height="300%"
width="300%"
x="-100%"
y="-100%">
<feFlood
flood-color="rgba(72, 186, 255, 1)"
result="flood"
id="feFlood35" />
<feComposite
in="flood"
in2="SourceGraphic"
operator="atop"
result="composite"
id="feComposite37" />
<feGaussianBlur
in="composite"
stdDeviation="8"
result="blur"
id="feGaussianBlur39" />
<feOffset
dx="5"
dy="15"
result="offset"
id="feOffset41" />
<feComposite
in="SourceGraphic"
in2="offset"
operator="over"
id="feComposite43" />
</filter>
</defs>
<g
class=""
id="g50"
style="stroke:#000000;stroke-width:8;stroke-miterlimit:4;stroke-dasharray:none">
<path
d="M 149.9,27.2 34.25,56.74 V 133.5 L 157.8,93.85 204.5,49.18 Z m 132.8,57 c -7.4,0.18 -10.1,1.88 0.9,7.13 C 346.9,121.6 441.7,206.8 391.3,216.9 232.2,249 130.4,292.3 48.51,390.8 25.42,418.6 18,494.8 18,494.8 h 432.6 c 0,0 -139,-21.1 -147.8,-75.7 C 287.9,326.9 497.3,316.4 499.3,219.2 500.2,176 411,94.21 314.9,86.68 309.3,86.24 292.2,83.97 282.7,84.2 Z m -163.5,40.9 -32.69,10.5 v 122.2 l 35.99,-10 z"
fill="#b41e00"
fill-opacity="1"
transform="matrix(0.9,0,0,0.9,25.6,25.6)"
filter="url(#shadow-1)"
id="path48"
style="stroke:#000000;stroke-width:8.88888889;stroke-miterlimit:4;stroke-dasharray:none" />
</g>
</svg>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" style="height: 512px; width: 512px;"><defs><filter id="shadow-1" height="300%" width="300%" x="-100%" y="-100%"><feFlood flood-color="rgba(248, 231, 28, 1)" result="flood"></feFlood><feComposite in="flood" in2="SourceGraphic" operator="atop" result="composite"></feComposite><feGaussianBlur in="composite" stdDeviation="40" result="blur"></feGaussianBlur><feOffset dx="0" dy="0" result="offset"></feOffset><feComposite in="SourceGraphic" in2="offset" operator="over"></feComposite></filter><filter id="shadow-3" height="300%" width="300%" x="-100%" y="-100%"><feFlood flood-color="rgba(248, 231, 28, 1)" result="flood"></feFlood><feComposite in="flood" in2="SourceGraphic" operator="atop" result="composite"></feComposite><feGaussianBlur in="composite" stdDeviation="40" result="blur"></feGaussianBlur><feOffset dx="0" dy="0" result="offset"></feOffset><feComposite in="SourceGraphic" in2="offset" operator="over"></feComposite></filter><filter id="shadow-6" height="300%" width="300%" x="-100%" y="-100%"><feFlood flood-color="rgba(72, 186, 255, 1)" result="flood"></feFlood><feComposite in="flood" in2="SourceGraphic" operator="atop" result="composite"></feComposite><feGaussianBlur in="composite" stdDeviation="8" result="blur"></feGaussianBlur><feOffset dx="5" dy="15" result="offset"></feOffset><feComposite in="SourceGraphic" in2="offset" operator="over"></feComposite></filter><filter id="shadow-7" height="300%" width="300%" x="-100%" y="-100%"><feFlood flood-color="rgba(72, 186, 255, 1)" result="flood"></feFlood><feComposite in="flood" in2="SourceGraphic" operator="atop" result="composite"></feComposite><feGaussianBlur in="composite" stdDeviation="8" result="blur"></feGaussianBlur><feOffset dx="5" dy="15" result="offset"></feOffset><feComposite in="SourceGraphic" in2="offset" operator="over"></feComposite></filter></defs><g class="" transform="translate(0,0)" style=""><path d="M149.9 27.2L34.25 56.74v76.76L157.8 93.85l46.7-44.67-54.6-21.98zm132.8 57c-7.4.18-10.1 1.88.9 7.13C346.9 121.6 441.7 206.8 391.3 216.9 232.2 249 130.4 292.3 48.51 390.8 25.42 418.6 18 494.8 18 494.8h432.6s-139-21.1-147.8-75.7c-14.9-92.2 194.5-102.7 196.5-199.9.9-43.2-88.3-124.99-184.4-132.52-5.6-.44-22.7-2.71-32.2-2.48zm-163.5 40.9l-32.69 10.5v122.2l35.99-10-3.3-122.7z" fill="#b41e00" fill-opacity="1" transform="translate(25.6, 25.6) scale(0.9, 0.9) rotate(0, 256, 256) skewX(0) skewY(0)" filter="url(#shadow-1)"></path></g></svg>

Before

Width:  |  Height:  |  Size: 5.1 KiB

After

Width:  |  Height:  |  Size: 2.4 KiB

View File

@ -1,132 +1 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
viewBox="0 0 512 512"
style="height: 512px; width: 512px;"
version="1.1"
id="svg32"
sodipodi:docname="present.svg"
inkscape:version="1.0.1 (3bc2e813f5, 2020-09-07)">
<metadata
id="metadata36">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
</cc:Work>
</rdf:RDF>
</metadata>
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="2323"
inkscape:window-height="1657"
id="namedview34"
showgrid="false"
inkscape:zoom="2.0301699"
inkscape:cx="290.19906"
inkscape:cy="295.26229"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="0"
inkscape:current-layer="svg32" />
<defs
id="defs24">
<filter
id="shadow-6"
height="300%"
width="300%"
x="-100%"
y="-100%">
<feFlood
flood-color="rgba(72, 186, 255, 1)"
result="flood"
id="feFlood2" />
<feComposite
in="flood"
in2="SourceGraphic"
operator="atop"
result="composite"
id="feComposite4" />
<feGaussianBlur
in="composite"
stdDeviation="8"
result="blur"
id="feGaussianBlur6" />
<feOffset
dx="5"
dy="15"
result="offset"
id="feOffset8" />
<feComposite
in="SourceGraphic"
in2="offset"
operator="over"
id="feComposite10" />
</filter>
<filter
id="shadow-7"
height="300%"
width="300%"
x="-100%"
y="-100%">
<feFlood
flood-color="rgba(72, 186, 255, 1)"
result="flood"
id="feFlood13" />
<feComposite
in="flood"
in2="SourceGraphic"
operator="atop"
result="composite"
id="feComposite15" />
<feGaussianBlur
in="composite"
stdDeviation="8"
result="blur"
id="feGaussianBlur17" />
<feOffset
dx="5"
dy="15"
result="offset"
id="feOffset19" />
<feComposite
in="SourceGraphic"
in2="offset"
operator="over"
id="feComposite21" />
</filter>
</defs>
<path
d="M0 0h512v512H0z"
fill="#4a4a4a"
fill-opacity="0.5"
id="path26"
style="fill:none" />
<g
class=""
transform="translate(1,-1)"
id="g30"
style="stroke:#000000;stroke-width:10;stroke-miterlimit:4;stroke-dasharray:none;fill:#7db27d;fill-opacity:1">
<path
d="M149.518 78.38c-6.55.117-12.45 1.736-17.35 4.91-7.465 4.84-11.765 12.904-13.063 21.34-2.595 16.874 4.747 36.355 19.862 52.31C154.08 172.893 177.643 185 208 185h2.438l-9.118-18.234c-22.194-1.554-38.46-10.777-49.287-22.205-11.885-12.545-16.543-28.064-15.138-37.19.702-4.564 2.402-7.25 5.062-8.974 2.66-1.724 7.113-2.875 14.756-1.326 13.078 2.65 34.233 13.948 62.205 39.284L220.27 135h23.408c-35.31-34.8-62.215-51.278-83.39-55.57-2.715-.55-5.363-.887-7.925-1.006-.96-.045-1.91-.06-2.845-.043zm212.964 0c-.935-.016-1.885 0-2.845.044-2.562.12-5.21.455-7.924 1.006-21.176 4.292-48.082 20.77-83.39 55.57h23.406l1.352 1.354c27.972-25.336 49.127-36.633 62.205-39.284 7.643-1.55 12.096-.398 14.756 1.326 2.66 1.725 4.36 4.41 5.062 8.973 1.405 9.126-3.253 24.645-15.138 37.19-10.827 11.43-27.093 20.652-49.287 22.206L301.562 185H304c30.357 0 53.92-12.106 69.033-28.06 15.115-15.955 22.457-35.436 19.862-52.31-1.298-8.436-5.598-16.5-13.063-21.34-4.9-3.174-10.8-4.793-17.35-4.91zM227.73 153l-8.78 8.777L229.564 183h52.875l10.61-21.223-8.777-8.777h-56.54zM73 201v46h142v-46H73zm160 0v270h46V201h-46zm64 0v46h142v-46H297zm-192 64v206h110V265H105zm192 0v206h110V265H297z"
fill="#ffffff"
fill-opacity="1"
id="path28"
style="stroke:#000000;stroke-width:10;stroke-miterlimit:4;stroke-dasharray:none;fill:#7db27d;fill-opacity:1" />
</g>
</svg>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" style="height: 512px; width: 512px;"><defs><filter id="shadow-6" height="300%" width="300%" x="-100%" y="-100%"><feFlood flood-color="rgba(72, 186, 255, 1)" result="flood"></feFlood><feComposite in="flood" in2="SourceGraphic" operator="atop" result="composite"></feComposite><feGaussianBlur in="composite" stdDeviation="8" result="blur"></feGaussianBlur><feOffset dx="5" dy="15" result="offset"></feOffset><feComposite in="SourceGraphic" in2="offset" operator="over"></feComposite></filter><filter id="shadow-7" height="300%" width="300%" x="-100%" y="-100%"><feFlood flood-color="rgba(72, 186, 255, 1)" result="flood"></feFlood><feComposite in="flood" in2="SourceGraphic" operator="atop" result="composite"></feComposite><feGaussianBlur in="composite" stdDeviation="8" result="blur"></feGaussianBlur><feOffset dx="5" dy="15" result="offset"></feOffset><feComposite in="SourceGraphic" in2="offset" operator="over"></feComposite></filter></defs><path d="M0 0h512v512H0z" fill="#4a4a4a" fill-opacity="0.5"></path><g class="" transform="translate(1,-1)" style=""><path d="M149.518 78.38c-6.55.117-12.45 1.736-17.35 4.91-7.465 4.84-11.765 12.904-13.063 21.34-2.595 16.874 4.747 36.355 19.862 52.31C154.08 172.893 177.643 185 208 185h2.438l-9.118-18.234c-22.194-1.554-38.46-10.777-49.287-22.205-11.885-12.545-16.543-28.064-15.138-37.19.702-4.564 2.402-7.25 5.062-8.974 2.66-1.724 7.113-2.875 14.756-1.326 13.078 2.65 34.233 13.948 62.205 39.284L220.27 135h23.408c-35.31-34.8-62.215-51.278-83.39-55.57-2.715-.55-5.363-.887-7.925-1.006-.96-.045-1.91-.06-2.845-.043zm212.964 0c-.935-.016-1.885 0-2.845.044-2.562.12-5.21.455-7.924 1.006-21.176 4.292-48.082 20.77-83.39 55.57h23.406l1.352 1.354c27.972-25.336 49.127-36.633 62.205-39.284 7.643-1.55 12.096-.398 14.756 1.326 2.66 1.725 4.36 4.41 5.062 8.973 1.405 9.126-3.253 24.645-15.138 37.19-10.827 11.43-27.093 20.652-49.287 22.206L301.562 185H304c30.357 0 53.92-12.106 69.033-28.06 15.115-15.955 22.457-35.436 19.862-52.31-1.298-8.436-5.598-16.5-13.063-21.34-4.9-3.174-10.8-4.793-17.35-4.91zM227.73 153l-8.78 8.777L229.564 183h52.875l10.61-21.223-8.777-8.777h-56.54zM73 201v46h142v-46H73zm160 0v270h46V201h-46zm64 0v46h142v-46H297zm-192 64v206h110V265H105zm192 0v206h110V265H297z" fill="#ffffff" fill-opacity="1"></path></g></svg>

Before

Width:  |  Height:  |  Size: 4.5 KiB

After

Width:  |  Height:  |  Size: 2.3 KiB

View File

@ -1,159 +1 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
viewBox="0 0 512 512"
style="height: 512px; width: 512px;"
version="1.1"
id="svg41"
sodipodi:docname="rencontre.svg"
inkscape:version="1.0.1 (3bc2e813f5, 2020-09-07)">
<metadata
id="metadata45">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
</cc:Work>
</rdf:RDF>
</metadata>
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1683"
inkscape:window-height="1292"
id="namedview43"
showgrid="false"
inkscape:zoom="1.4355469"
inkscape:cx="256"
inkscape:cy="256"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="0"
inkscape:current-layer="svg41" />
<defs
id="defs35">
<filter
id="shadow-1"
height="300%"
width="300%"
x="-100%"
y="-100%">
<feFlood
flood-color="rgba(248, 231, 28, 1)"
result="flood"
id="feFlood2" />
<feComposite
in="flood"
in2="SourceGraphic"
operator="atop"
result="composite"
id="feComposite4" />
<feGaussianBlur
in="composite"
stdDeviation="40"
result="blur"
id="feGaussianBlur6" />
<feOffset
dx="0"
dy="0"
result="offset"
id="feOffset8" />
<feComposite
in="SourceGraphic"
in2="offset"
operator="over"
id="feComposite10" />
</filter>
<filter
id="shadow-6"
height="300%"
width="300%"
x="-100%"
y="-100%">
<feFlood
flood-color="rgba(72, 186, 255, 1)"
result="flood"
id="feFlood13" />
<feComposite
in="flood"
in2="SourceGraphic"
operator="atop"
result="composite"
id="feComposite15" />
<feGaussianBlur
in="composite"
stdDeviation="8"
result="blur"
id="feGaussianBlur17" />
<feOffset
dx="5"
dy="15"
result="offset"
id="feOffset19" />
<feComposite
in="SourceGraphic"
in2="offset"
operator="over"
id="feComposite21" />
</filter>
<filter
id="shadow-7"
height="300%"
width="300%"
x="-100%"
y="-100%">
<feFlood
flood-color="rgba(72, 186, 255, 1)"
result="flood"
id="feFlood24" />
<feComposite
in="flood"
in2="SourceGraphic"
operator="atop"
result="composite"
id="feComposite26" />
<feGaussianBlur
in="composite"
stdDeviation="8"
result="blur"
id="feGaussianBlur28" />
<feOffset
dx="5"
dy="15"
result="offset"
id="feOffset30" />
<feComposite
in="SourceGraphic"
in2="offset"
operator="over"
id="feComposite32" />
</filter>
</defs>
<g
class=""
id="g39"
style="stroke:#000000;stroke-width:5;stroke-miterlimit:4;stroke-dasharray:none">
<path
d="m 324.97,17.54 c 0.03,0.034 0.057,0.07 0.087,0.106 l -34.924,32.428 36.904,-3.752 -15.396,30.12 38.048,-16.075 c 26.147,69.965 0.623,154.277 -52.555,166.262 -6.554,-25.37 -34.13,-37.945 -36.055,-57.382 0.303,0.093 0.604,0.187 0.912,0.27 4.833,1.295 9.736,1.183 14.274,-0.07 l 25.138,22.89 20.653,-16.377 c -7.363,2.836 -28.588,-1.402 -33.25,-13.923 3.154,-3.24 5.55,-7.284 6.793,-11.922 0.485,-1.813 0.757,-3.635 0.86,-5.445 l 11.524,22.777 5.22,-16.94 c 7.625,5.575 12.474,13.605 11.49,21.136 l 16.673,-29.4 -72.14,-29.56 -58.057,-48.03 17.1,31.25 -48.206,-19.753 35.14,31.237 c -40.602,28.158 -22.085,85.04 -1.796,119.29 -57.5,-9.685 -103.128,-77.435 -95.763,-145.03 l 49.21,-21.366 -31.08,-5.14 29.207,-33.417 -32.015,11.54 c 0.037,-0.067 0.07,-0.135 0.107,-0.202 -168.36,66.33 -116.413,367 -63.728,417.99 -0.19,-1.317 -0.364,-2.58 -0.54,-3.855 C 53.883,390.953 48.43,321.573 51.305,256.667 54.325,188.43 66.139,125.507 88.099,87.145 l 16.22,9.283 c -18.894,33.008 -31.4,94.563 -34.345,161.064 -1.942,43.86 0.106,90.022 6.275,132.082 6.124,1.892 15.046,9.615 27.295,23.24 -4.818,-13.35 -6.78,-26.5 -6.482,-38.28 20.286,41.665 67.34,69.234 104.633,62.308 22.444,-4.17 41.803,-12.73 57.81,-24.475 l 7.31,15.418 c -20.068,5.036 -22.807,32.635 -14.737,55.112 1.748,-19.882 11.36,-29.794 21.73,-32.303 -6.598,15.867 -4.698,30.623 -3.117,44.158 10.15,-12.147 21.47,-23.793 23.628,-39.354 8.738,7.332 12.317,21.49 1.194,39.057 26.32,-15.473 31.565,-41.994 7.978,-57.685 l -32.07,-34.297 c 5.918,-5.55 11.24,-11.6 15.947,-18.066 l 39.28,15.776 c -3.942,13.69 5.833,31.512 19.77,43.31 -8.055,-17.288 -4.826,-30.08 2.562,-37.103 1.63,17.39 10.64,29.193 18.733,40.064 2.73,-15.665 6.79,-31.493 -0.213,-45.987 11.016,1.56 21.2,11.568 20.338,31.877 14.362,-25.313 6.11,-49.702 -20.742,-51.52 l -71.135,-9.892 c 12.757,-22.982 18.676,-49.823 17.015,-77.475 14.188,-34.708 50.058,-11.816 54.523,49.16 27.425,-80.347 67.081,-38.617 58.825,24.513 11.808,-23.38 21.835,-35.013 29.862,-36.247 -10.772,-91.925 -40.458,-191.57 -77.637,-250.748 l 15.823,-9.942 c 50.328,80.106 85.112,220.65 84.88,331.547 C 521.655,285.828 476.905,45.13 324.97,17.54 Z m -29.458,476.913 -0.026,0.016 -0.015,0.05 c 0.015,-0.02 0.027,-0.044 0.042,-0.067 z m 26.543,-318.492 h 0.01 v -0.007 l -0.01,0.008 z m -53.348,-41.716 c 0.866,-0.027 1.757,0.073 2.652,0.313 4.774,1.28 7.467,5.945 6.187,10.72 -1.28,4.776 -5.943,7.47 -10.72,6.19 -4.775,-1.28 -7.468,-5.943 -6.188,-10.72 0.96,-3.584 3.823,-5.993 7.21,-6.435 0.282,-0.036 0.568,-0.06 0.857,-0.068 z M 204.904,297.13 c 11.878,-0.2 22.637,6.756 26.172,22.487 -0.008,35.88 -9.557,68.823 -42.137,77.412 -27.624,7.283 -69.725,-11.398 -84.12,-53.663 12.28,-21.078 37.362,-21.986 62.838,22.592 -12.583,-41.596 14.386,-68.444 37.246,-68.83 z"
fill="#003fb2"
fill-opacity="1"
filter="url(#shadow-1)"
transform="matrix(0.9,0,0,0.9,25.6,25.6)"
id="path37"
style="stroke:#000000;stroke-width:5.55555556;stroke-miterlimit:4;stroke-dasharray:none" />
</g>
</svg>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" style="height: 512px; width: 512px;"><defs><filter id="shadow-1" height="300%" width="300%" x="-100%" y="-100%"><feFlood flood-color="rgba(248, 231, 28, 1)" result="flood"></feFlood><feComposite in="flood" in2="SourceGraphic" operator="atop" result="composite"></feComposite><feGaussianBlur in="composite" stdDeviation="40" result="blur"></feGaussianBlur><feOffset dx="0" dy="0" result="offset"></feOffset><feComposite in="SourceGraphic" in2="offset" operator="over"></feComposite></filter><filter id="shadow-6" height="300%" width="300%" x="-100%" y="-100%"><feFlood flood-color="rgba(72, 186, 255, 1)" result="flood"></feFlood><feComposite in="flood" in2="SourceGraphic" operator="atop" result="composite"></feComposite><feGaussianBlur in="composite" stdDeviation="8" result="blur"></feGaussianBlur><feOffset dx="5" dy="15" result="offset"></feOffset><feComposite in="SourceGraphic" in2="offset" operator="over"></feComposite></filter><filter id="shadow-7" height="300%" width="300%" x="-100%" y="-100%"><feFlood flood-color="rgba(72, 186, 255, 1)" result="flood"></feFlood><feComposite in="flood" in2="SourceGraphic" operator="atop" result="composite"></feComposite><feGaussianBlur in="composite" stdDeviation="8" result="blur"></feGaussianBlur><feOffset dx="5" dy="15" result="offset"></feOffset><feComposite in="SourceGraphic" in2="offset" operator="over"></feComposite></filter></defs><g class="" transform="translate(0,0)" style=""><path d="M324.97 17.54c.03.034.057.07.087.106l-34.924 32.428 36.904-3.752-15.396 30.12 38.048-16.075c26.147 69.965.623 154.277-52.555 166.262-6.554-25.37-34.13-37.945-36.055-57.382.303.093.604.187.912.27 4.833 1.295 9.736 1.183 14.274-.07l25.138 22.89 20.653-16.377c-7.363 2.836-28.588-1.402-33.25-13.923 3.154-3.24 5.55-7.284 6.793-11.922.485-1.813.757-3.635.86-5.445l11.524 22.777 5.22-16.94c7.625 5.575 12.474 13.605 11.49 21.136l16.673-29.4-72.14-29.56-58.057-48.03 17.1 31.25-48.206-19.753 35.14 31.237c-40.602 28.158-22.085 85.04-1.796 119.29-57.5-9.685-103.128-77.435-95.763-145.03l49.21-21.366-31.08-5.14 29.207-33.417-32.015 11.54c.037-.067.07-.135.107-.202-168.36 66.33-116.413 367-63.728 417.99-.19-1.317-.364-2.58-.54-3.855-14.922-56.244-20.375-125.624-17.5-190.53 3.02-68.237 14.834-131.16 36.794-169.522l16.22 9.283c-18.894 33.008-31.4 94.563-34.345 161.064-1.942 43.86.106 90.022 6.275 132.082 6.124 1.892 15.046 9.615 27.295 23.24-4.818-13.35-6.78-26.5-6.482-38.28 20.286 41.665 67.34 69.234 104.633 62.308 22.444-4.17 41.803-12.73 57.81-24.475l7.31 15.418c-20.068 5.036-22.807 32.635-14.737 55.112 1.748-19.882 11.36-29.794 21.73-32.303-6.598 15.867-4.698 30.623-3.117 44.158 10.15-12.147 21.47-23.793 23.628-39.354 8.738 7.332 12.317 21.49 1.194 39.057 26.32-15.473 31.565-41.994 7.978-57.685l-32.07-34.297c5.918-5.55 11.24-11.6 15.947-18.066l39.28 15.776c-3.942 13.69 5.833 31.512 19.77 43.31-8.055-17.288-4.826-30.08 2.562-37.103 1.63 17.39 10.64 29.193 18.733 40.064 2.73-15.665 6.79-31.493-.213-45.987 11.016 1.56 21.2 11.568 20.338 31.877 14.362-25.313 6.11-49.702-20.742-51.52l-71.135-9.892c12.757-22.982 18.676-49.823 17.015-77.475 14.188-34.708 50.058-11.816 54.523 49.16C394.924 262.27 434.58 304 426.324 367.13c11.808-23.38 21.835-35.013 29.862-36.247-10.772-91.925-40.458-191.57-77.637-250.748l15.823-9.942c50.328 80.106 85.112 220.65 84.88 331.547 42.403-115.912-2.347-356.61-154.282-384.2zm-29.458 476.913l-.026.016-.015.05c.015-.02.027-.044.042-.067zm26.543-318.492h.01v-.007l-.01.008zm-53.348-41.716c.866-.027 1.757.073 2.652.313 4.774 1.28 7.467 5.945 6.187 10.72-1.28 4.776-5.943 7.47-10.72 6.19-4.775-1.28-7.468-5.943-6.188-10.72.96-3.584 3.823-5.993 7.21-6.435.282-.036.568-.06.857-.068zM204.904 297.13c11.878-.2 22.637 6.756 26.172 22.487-.008 35.88-9.557 68.823-42.137 77.412-27.624 7.283-69.725-11.398-84.12-53.663 12.28-21.078 37.362-21.986 62.838 22.592-12.583-41.596 14.386-68.444 37.246-68.83z" fill="#003fb2" fill-opacity="1" filter="url(#shadow-1)" transform="translate(25.6, 25.6) scale(0.9, 0.9) rotate(0, 256, 256) skewX(0) skewY(0)"></path></g></svg>

Before

Width:  |  Height:  |  Size: 6.7 KiB

After

Width:  |  Height:  |  Size: 4.0 KiB

View File

@ -1,160 +1 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
viewBox="0 0 512 512"
style="height: 512px; width: 512px;"
version="1.1"
id="svg41"
sodipodi:docname="reserve.svg"
inkscape:version="1.0.1 (3bc2e813f5, 2020-09-07)">
<metadata
id="metadata45">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
</cc:Work>
</rdf:RDF>
</metadata>
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1963"
inkscape:window-height="1393"
id="namedview43"
showgrid="false"
inkscape:zoom="1.4355469"
inkscape:cx="257.8922"
inkscape:cy="255.21477"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="0"
inkscape:current-layer="svg41" />
<defs
id="defs35">
<filter
id="shadow-1"
height="300%"
width="300%"
x="-100%"
y="-100%">
<feFlood
flood-color="rgba(248, 231, 28, 1)"
result="flood"
id="feFlood2" />
<feComposite
in="flood"
in2="SourceGraphic"
operator="atop"
result="composite"
id="feComposite4" />
<feGaussianBlur
in="composite"
stdDeviation="40"
result="blur"
id="feGaussianBlur6" />
<feOffset
dx="0"
dy="0"
result="offset"
id="feOffset8" />
<feComposite
in="SourceGraphic"
in2="offset"
operator="over"
id="feComposite10" />
</filter>
<filter
id="shadow-6"
height="300%"
width="300%"
x="-100%"
y="-100%">
<feFlood
flood-color="rgba(72, 186, 255, 1)"
result="flood"
id="feFlood13" />
<feComposite
in="flood"
in2="SourceGraphic"
operator="atop"
result="composite"
id="feComposite15" />
<feGaussianBlur
in="composite"
stdDeviation="8"
result="blur"
id="feGaussianBlur17" />
<feOffset
dx="5"
dy="15"
result="offset"
id="feOffset19" />
<feComposite
in="SourceGraphic"
in2="offset"
operator="over"
id="feComposite21" />
</filter>
<filter
id="shadow-7"
height="300%"
width="300%"
x="-100%"
y="-100%">
<feFlood
flood-color="rgba(72, 186, 255, 1)"
result="flood"
id="feFlood24" />
<feComposite
in="flood"
in2="SourceGraphic"
operator="atop"
result="composite"
id="feComposite26" />
<feGaussianBlur
in="composite"
stdDeviation="8"
result="blur"
id="feGaussianBlur28" />
<feOffset
dx="5"
dy="15"
result="offset"
id="feOffset30" />
<feComposite
in="SourceGraphic"
in2="offset"
operator="over"
id="feComposite32" />
</filter>
</defs>
<g
class=""
id="g39"
style="stroke:#000000;stroke-width:10;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;fill:#7db27d;fill-opacity:1"
transform="translate(0,0)">
<path
d="M149.688 85.625c-1.234.005-2.465.033-3.72.063-33.913.806-75.48 10.704-127.25 33.718V362.78c60.77-28.82 106.718-37.067 144.22-33.092 33.502 3.55 59.685 16.66 83.562 31.187v-242.97c-23.217-17.744-50.195-30.04-85.97-32-3.52-.192-7.142-.296-10.843-.28zm211.968 0c-3.7-.016-7.322.088-10.844.28-35.773 1.96-62.75 14.256-85.968 32v242.97c23.876-14.527 50.06-27.637 83.562-31.188 37.502-3.974 83.45 4.272 144.22 33.094V119.407c-51.77-23.014-93.337-32.912-127.25-33.72-1.255-.028-2.486-.056-3.72-.06zm5.72 261.78c-1.038-.002-2.074.017-3.095.033-4.808.075-9.43.37-13.905.843-33.932 3.597-59.603 17.976-85.53 34.44v.28c-6.554-1.99-13.02-2.37-19.408-.97-25.566-16.177-51.003-30.202-84.468-33.75-5.595-.592-11.44-.883-17.564-.842-32.04.213-71.833 9.778-124.687 35.937v42.53c60.77-28.823 106.714-37.067 144.218-33.092 18.545 1.965 34.837 6.845 49.75 13.28-4.682 6.064-9.308 13.268-13.875 21.688h117.156c-5.93-8.22-11.798-15.414-17.626-21.56 14.996-6.503 31.39-11.43 50.062-13.408 37.503-3.974 83.448 4.27 144.22 33.094v-42.53c-53.16-26.31-93.115-35.863-125.25-35.97z"
fill="#087505"
fill-opacity="1"
transform="translate(25.6, 25.6) scale(0.9, 0.9) rotate(0, 256, 256) skewX(0) skewY(0)"
filter="url(#shadow-1)"
id="path37"
style="stroke:#000000;stroke-width:11.11111111;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;fill:#7db27d;fill-opacity:1" />
</g>
</svg>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" style="height: 512px; width: 512px;"><defs><filter id="shadow-1" height="300%" width="300%" x="-100%" y="-100%"><feFlood flood-color="rgba(248, 231, 28, 1)" result="flood"></feFlood><feComposite in="flood" in2="SourceGraphic" operator="atop" result="composite"></feComposite><feGaussianBlur in="composite" stdDeviation="40" result="blur"></feGaussianBlur><feOffset dx="0" dy="0" result="offset"></feOffset><feComposite in="SourceGraphic" in2="offset" operator="over"></feComposite></filter><filter id="shadow-6" height="300%" width="300%" x="-100%" y="-100%"><feFlood flood-color="rgba(72, 186, 255, 1)" result="flood"></feFlood><feComposite in="flood" in2="SourceGraphic" operator="atop" result="composite"></feComposite><feGaussianBlur in="composite" stdDeviation="8" result="blur"></feGaussianBlur><feOffset dx="5" dy="15" result="offset"></feOffset><feComposite in="SourceGraphic" in2="offset" operator="over"></feComposite></filter><filter id="shadow-7" height="300%" width="300%" x="-100%" y="-100%"><feFlood flood-color="rgba(72, 186, 255, 1)" result="flood"></feFlood><feComposite in="flood" in2="SourceGraphic" operator="atop" result="composite"></feComposite><feGaussianBlur in="composite" stdDeviation="8" result="blur"></feGaussianBlur><feOffset dx="5" dy="15" result="offset"></feOffset><feComposite in="SourceGraphic" in2="offset" operator="over"></feComposite></filter></defs><g class="" transform="translate(0,0)" style=""><path d="M149.688 85.625c-1.234.005-2.465.033-3.72.063-33.913.806-75.48 10.704-127.25 33.718V362.78c60.77-28.82 106.718-37.067 144.22-33.092 33.502 3.55 59.685 16.66 83.562 31.187v-242.97c-23.217-17.744-50.195-30.04-85.97-32-3.52-.192-7.142-.296-10.843-.28zm211.968 0c-3.7-.016-7.322.088-10.844.28-35.773 1.96-62.75 14.256-85.968 32v242.97c23.876-14.527 50.06-27.637 83.562-31.188 37.502-3.974 83.45 4.272 144.22 33.094V119.407c-51.77-23.014-93.337-32.912-127.25-33.72-1.255-.028-2.486-.056-3.72-.06zm5.72 261.78c-1.038-.002-2.074.017-3.095.033-4.808.075-9.43.37-13.905.843-33.932 3.597-59.603 17.976-85.53 34.44v.28c-6.554-1.99-13.02-2.37-19.408-.97-25.566-16.177-51.003-30.202-84.468-33.75-5.595-.592-11.44-.883-17.564-.842-32.04.213-71.833 9.778-124.687 35.937v42.53c60.77-28.823 106.714-37.067 144.218-33.092 18.545 1.965 34.837 6.845 49.75 13.28-4.682 6.064-9.308 13.268-13.875 21.688h117.156c-5.93-8.22-11.798-15.414-17.626-21.56 14.996-6.503 31.39-11.43 50.062-13.408 37.503-3.974 83.448 4.27 144.22 33.094v-42.53c-53.16-26.31-93.115-35.863-125.25-35.97z" fill="#087505" fill-opacity="1" transform="translate(25.6, 25.6) scale(0.9, 0.9) rotate(0, 256, 256) skewX(0) skewY(0)" filter="url(#shadow-1)"></path></g></svg>

Before

Width:  |  Height:  |  Size: 5.2 KiB

After

Width:  |  Height:  |  Size: 2.7 KiB

View File

@ -11,7 +11,7 @@
style="height: 256px; width: 256px;"
version="1.1"
id="svg24"
sodipodi:docname="sort-reserve-humide.svg"
sodipodi:docname="sort-reserve-humide3.svg"
inkscape:version="1.0.1 (3bc2e813f5, 2020-09-07)">
<metadata
id="metadata30">
@ -35,70 +35,68 @@
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="2660"
inkscape:window-height="1472"
inkscape:window-width="2794"
inkscape:window-height="1756"
id="namedview26"
showgrid="false"
inkscape:zoom="1.4393497"
inkscape:cx="557.39157"
inkscape:cy="411.60399"
inkscape:zoom="2.8786993"
inkscape:cx="323.66586"
inkscape:cy="227.70764"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="0"
inkscape:current-layer="svg24"
inkscape:document-rotation="0" />
inkscape:current-layer="svg24" />
<g
id="g881"
transform="translate(2.1482304,2.80716)"
style="fill:#ffffff;stroke:#7d7db2;stroke-width:10;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:normal">
transform="translate(2.1482304,2.80716)">
<path
d="m 243.94189,104.37921 -82.23331,178.13543 82.23331,27.44784 z"
class=""
fill="#f4e3d7"
fill-opacity="1"
id="path2"
style="fill:#ffffff;stroke:#7d7db2;stroke-width:10;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:normal" />
style="stroke-width:1.10232" />
<path
d="m 263.7837,104.37921 v 205.58327 l 82.23331,-27.44784 z"
class=""
fill="#f4e3d7"
fill-opacity="1"
id="path4"
style="fill:#ffffff;stroke:#7d7db2;stroke-width:10;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:normal" />
style="stroke-width:1.10232" />
<path
d="M 168.21228,221.005 18.274279,239.7445 141.75653,278.32581 Z"
class=""
fill="#f4e3d7"
fill-opacity="1"
id="path6"
style="fill:#ffffff;stroke:#7d7db2;stroke-width:10;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:normal" />
style="stroke-width:1.10232" />
<path
d="M 339.51331,221.005 365.96906,278.32581 489.5395,239.7445 Z"
class=""
fill="#f4e3d7"
fill-opacity="1"
id="path8"
style="fill:#ffffff;stroke:#7d7db2;stroke-width:10;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:normal" />
style="stroke-width:1.10232" />
<path
d="M -0.24475089,254.73609 114.97007,398.80973 230.27308,326.7178 Z"
class=""
fill="#f4e3d7"
fill-opacity="1"
id="path10"
style="fill:#ffffff;stroke:#7d7db2;stroke-width:10;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:normal" />
style="stroke-width:1.10232" />
<path
d="M 507.94829,254.73609 277.45251,326.7178 392.75552,398.80973 Z"
class=""
fill="#f4e3d7"
fill-opacity="1"
id="path12"
style="fill:#ffffff;stroke:#7d7db2;stroke-width:10;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:normal" />
style="stroke-width:1.10232" />
<path
d="M 253.8628,335.42615 147.37837,402.00647 H 360.34722 Z"
class=""
fill="#f4e3d7"
fill-opacity="1"
id="path14"
style="fill:#ffffff;stroke:#7d7db2;stroke-width:10;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:normal" />
style="stroke-width:1.10232" />
</g>
</svg>

Before

Width:  |  Height:  |  Size: 4.1 KiB

After

Width:  |  Height:  |  Size: 2.9 KiB

View File

@ -37,14 +37,13 @@
inkscape:window-height="1268"
id="namedview34"
showgrid="false"
inkscape:zoom="0.7031648"
inkscape:cx="1044.9871"
inkscape:cy="610.71305"
inkscape:window-x="518"
inkscape:window-y="680"
inkscape:zoom="1.9888504"
inkscape:cx="256"
inkscape:cy="256"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="0"
inkscape:current-layer="svg32"
inkscape:document-rotation="0" />
inkscape:current-layer="svg32" />
<defs
id="defs24">
<filter
@ -122,12 +121,12 @@
class=""
transform="translate(1,-1)"
id="g30"
style="fill:#ffffff;fill-opacity:1;stroke:#7d7db2;stroke-width:13;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1">
style="fill:#f4e3d7">
<path
d="m 373.563,18.406 c -15.616,-0.167 -27.91,4.622 -32.563,14.75 -22.778,49.605 -48.743,87.14 -79.094,117.28 3.047,1.015 6.046,2.29 8.938,3.783 12.987,6.708 25.268,17.78 35.312,30.843 10.044,13.062 17.85,28.114 20.78,43.5 0.746,3.908 1.16,7.885 1.158,11.843 38.97,-24.36 85.058,-41.223 140.875,-51.312 14.91,-2.697 23.652,-28.632 21.405,-58.656 l -35.156,-1 30.56,-24.813 C 481.63,90.117 474.765,75.87 464.623,63.904 449.095,45.59 428.193,32.528 407.903,25.218 l -25.963,15.594 2.812,-21.5 c -3.875,-0.55 -7.61,-0.87 -11.188,-0.907 z M 246.938,166.562 c -1.063,0.052 -2.06,0.226 -3,0.47 -11.976,10.254 -24.61,19.597 -37.938,28.28 0.842,0.33 1.67,0.667 2.5,1.032 14.123,6.192 27.438,17.145 38.47,30.625 13.356,16.322 23.62,36.94 25.624,57.75 10.334,-10.367 21.24,-19.943 32.844,-28.72 4.096,-6.555 4.93,-14.468 3.125,-23.938 -2.184,-11.46 -8.642,-24.43 -17.25,-35.625 -8.61,-11.194 -19.38,-20.622 -29.063,-25.625 -6.052,-3.126 -11.154,-4.45 -15.313,-4.25 z m -61.907,43.282 c -1.385,0.053 -2.69,0.27 -3.968,0.562 -37,20.762 -79.088,37.985 -127.312,56 0.574,0.042 1.14,0.093 1.72,0.156 10.627,1.156 21.076,5.008 31.155,10.875 L 124.313,261 108.5,293.72 c 5.995,5.432 11.803,11.477 17.344,18 20.76,24.434 37.964,55.865 47.094,88.092 0.002,0.01 -0.003,0.022 0,0.032 2.98,10.508 5.11,20.916 6.312,31 20.99,-48.438 44.38,-89.26 72.344,-123 7.3,-21.48 -2.186,-48.408 -19.063,-69.03 -9.44,-11.538 -20.976,-20.718 -31.53,-25.345 -5.936,-2.604 -11.27,-3.808 -15.97,-3.626 z m 141.626,54.844 c -7.31,5.05 -14.462,10.51 -21.437,16.312 39.16,9.26 60.953,35.722 80.655,62.156 10.464,14.04 20.598,28.11 33.125,40.688 24.19,9.147 43.17,6.38 63.906,-14.938 -92.165,-27.78 -96.11,-92.61 -156.25,-104.22 z M 48.594,284.906 c -10.873,0.225 -18.26,5.755 -23.344,16.594 -5.81,12.387 -7.114,32.47 0.438,57.063 5.75,18.73 16.52,37.718 28.75,51.625 12.23,13.906 25.9,22.076 35.374,22.406 h 0.032 c 3.717,0.13 6.553,-0.682 8.812,-2.75 l -0.187,-0.188 2.093,-2.094 c 0.793,-1.168 1.52,-2.548 2.187,-4.187 2.81,-6.9 3.28,-18.552 -1.844,-33 -6.885,-19.417 -19.12,-31.932 -33.375,-34.78 l -22.968,-4.564 19.813,-12.5 38.47,-24.186 c -16.65,-16.822 -34.55,-27.607 -49.376,-29.22 -1.7,-0.184 -3.323,-0.25 -4.876,-0.218 z m 236.25,5.406 -24.53,25.375 c 100.442,17.878 55.45,141.005 159.31,176.188 l -24.78,-57.28 c 32.766,16.15 67.39,22.623 97.72,12.03 -135.77,-41.948 -96.32,-126.983 -207.72,-156.313 z m -169.47,38.22 -25.968,16.343 c 13.18,8.5 23.21,22.565 29.125,39.25 2.57,7.244 4.133,14.205 4.75,20.78 l 23.44,-23.374 c -8.08,-19.19 -19.035,-37.566 -31.345,-53 z m 38.376,72.374 -42.063,42 -0.156,-0.156 c -4.255,3.942 -9.456,6.765 -15.186,7.938 23.268,14.873 44.644,19.346 56.812,9.562 4.26,-3.426 7.043,-8.36 8.47,-14.406 -0.41,-12.684 -2.602,-26.615 -6.657,-40.906 -0.382,-1.346 -0.806,-2.686 -1.22,-4.032 z"
fill="#ffffff"
fill-opacity="1"
id="path28"
style="fill:#ffffff;fill-opacity:1;stroke:#7d7db2;stroke-width:13;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
style="fill:#f4e3d7" />
</g>
</svg>

Before

Width:  |  Height:  |  Size: 6.2 KiB

After

Width:  |  Height:  |  Size: 6.0 KiB

View File

@ -33,18 +33,17 @@
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1879"
inkscape:window-height="1569"
inkscape:window-width="1553"
inkscape:window-height="1145"
id="namedview34"
showgrid="false"
inkscape:zoom="1.4374483"
inkscape:cx="256"
inkscape:cy="256"
inkscape:window-x="460"
inkscape:window-y="170"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="0"
inkscape:current-layer="svg32"
inkscape:document-rotation="0" />
inkscape:current-layer="svg32" />
<defs
id="defs24">
<filter
@ -117,11 +116,11 @@
fill="#4a4a4a"
fill-opacity="0.5"
id="path26"
style="fill:#3a174d;fill-opacity:0.69999999" />
style="fill:#333333;fill-opacity:0.69999999" />
<path
d="m 329.547,18.115 c -30.61,99.22 -47.583,151.205 -86.88,156.778 -18.626,2.642 -42.988,-19.225 -70.16,-50.29 15.47,30.702 21.275,55.265 10.845,61.348 -15.787,9.21 -51.095,-6.94 -106.815,-30.837 31.653,20.827 83.667,50.18 77.358,58.63 -8.074,10.81 -77.23,-4.706 -130.866,-13.163 89.224,25.398 137.61,55.572 137.61,82.387 0,18.423 -48.845,62.18 -71.888,83.928 19.558,-11.397 64.736,-24.44 76.777,-2.99 13.335,23.758 -6.577,61.6 -28.5,128.027 31.39,-46.19 73.363,-108.122 90.734,-106.49 12.248,1.15 -4.805,60.692 -10.47,98.71 21.547,-80.082 46.534,-132.5 90.153,-131.015 29.665,1.01 58.022,30.762 88.99,52.047 -16.188,-19.81 -45.975,-47.99 -39.55,-53.243 8.9,-7.276 56.48,12.547 94.224,25.726 -24.982,-17.962 -68.644,-43.88 -61.653,-50.852 10.417,-10.387 72.436,1.332 117.49,7.178 C 419.2,303.266 370.1,289.807 359.616,255.461 c -5.283,-17.31 10.853,-40.3 40.89,-68.038 -31.377,17.197 -54.588,28.694 -63.737,12.392 -11.576,-20.622 11.374,-65.883 35.238,-126.06 -21.135,32.47 -48.532,83.487 -55.254,77.174 -8.972,-8.425 5.598,-77.597 12.795,-132.813 h -0.003 z M 21.45,18.27 V 41.63 C 69.97,69.067 116.703,104.02 162.783,144.416 129.015,102.731 95.443,60.626 68.758,18.27 Z m 175.79,0 c 18.465,37.356 34.503,76.96 48.475,117.97 -5.007,-39.79 -9.898,-79.367 -12.264,-117.97 h -36.21 z m 160.022,0 c -7.18,26.672 -15.416,53.437 -25.116,80.593 15.405,-27.34 30.698,-54.514 46.723,-80.593 H 357.26 Z m 105.123,0 c -27.895,50.718 -63.73,99.873 -105.707,147.755 46.514,-37.68 92.9,-75.343 140.164,-103.37 V 18.27 Z m 34.455,160.02 c -36.077,17.98 -74.843,34.036 -115.635,47.89 38.908,-6.17 77.882,-12.105 115.635,-15.77 z m -206.266,42.868 c 9.35,0 16.93,7.58 16.93,16.932 0,9.35 -7.58,16.93 -16.93,16.93 -9.35,0 -16.93,-7.58 -16.93,-16.93 0,-9.35 7.58,-16.932 16.93,-16.932 z m -52.06,1.598 c 15.508,0 28.082,12.57 28.082,28.08 0,9.718 -4.938,18.28 -12.44,23.322 3.614,3.843 5.842,9.002 5.842,14.694 0,11.86 -9.613,21.474 -21.473,21.474 -11.86,0 -21.474,-9.615 -21.474,-21.474 0,-5.687 2.228,-10.842 5.837,-14.684 -7.51,-5.04 -12.453,-13.608 -12.453,-23.332 0,-15.51 12.57,-28.08 28.08,-28.08 z M 21.45,234.078 v 38.547 c 31.87,-4.584 64.46,-5.693 97.532,-4.09 -33.727,-10.19 -67.407,-20.35 -97.53,-34.457 z m 265.82,28.377 c 9.35,0 16.93,7.58 16.93,16.932 0,9.35 -7.58,16.93 -16.93,16.93 -9.35,0 -16.932,-7.58 -16.932,-16.93 0,-9.35 7.58,-16.932 16.932,-16.932 z M 129.494,294.05 c -36.153,11.99 -72.24,20.293 -108.043,24.313 v 51.393 c 30.994,-28.64 69.426,-52.264 108.044,-75.703 v -0.002 z m 5.84,88.645 c -37.923,30.72 -75.607,61.482 -113.885,87.02 v 23.943 h 29.784 c 24.02,-37.76 52.365,-74.765 84.1,-110.963 z m 202.07,11.096 c 26.807,33.093 53.226,66.414 76.508,99.87 h 59.568 c -46.586,-27.078 -91.877,-61.12 -136.074,-99.87 z m -52.562,9.93 c -3.175,30.26 -6.39,60.5 -10.512,89.94 h 20.44 c -4.51,-29.083 -7.904,-59.17 -9.926,-89.94 z m 26.865,13.432 c 11.346,25.473 22.374,51.18 32.705,76.508 h 23.36 c -19.395,-23.9 -38.105,-49.64 -56.065,-76.508 z"
fill="#602000"
fill-opacity="1"
id="path28"
style="fill:#380f4d;fill-opacity:1" />
style="fill:#401060;fill-opacity:1" />
</svg>

Before

Width:  |  Height:  |  Size: 6.1 KiB

After

Width:  |  Height:  |  Size: 6.0 KiB

View File

@ -1,159 +1 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
viewBox="0 0 512 512"
style="height: 512px; width: 512px;"
version="1.1"
id="svg41"
sodipodi:docname="urgence.svg"
inkscape:version="1.0.1 (3bc2e813f5, 2020-09-07)">
<metadata
id="metadata45">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
</cc:Work>
</rdf:RDF>
</metadata>
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="2038"
inkscape:window-height="1243"
id="namedview43"
showgrid="false"
inkscape:zoom="1.4355469"
inkscape:cx="256"
inkscape:cy="256"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="0"
inkscape:current-layer="svg41" />
<defs
id="defs35">
<filter
id="shadow-1"
height="300%"
width="300%"
x="-100%"
y="-100%">
<feFlood
flood-color="rgba(248, 231, 28, 1)"
result="flood"
id="feFlood2" />
<feComposite
in="flood"
in2="SourceGraphic"
operator="atop"
result="composite"
id="feComposite4" />
<feGaussianBlur
in="composite"
stdDeviation="40"
result="blur"
id="feGaussianBlur6" />
<feOffset
dx="0"
dy="0"
result="offset"
id="feOffset8" />
<feComposite
in="SourceGraphic"
in2="offset"
operator="over"
id="feComposite10" />
</filter>
<filter
id="shadow-6"
height="300%"
width="300%"
x="-100%"
y="-100%">
<feFlood
flood-color="rgba(72, 186, 255, 1)"
result="flood"
id="feFlood13" />
<feComposite
in="flood"
in2="SourceGraphic"
operator="atop"
result="composite"
id="feComposite15" />
<feGaussianBlur
in="composite"
stdDeviation="8"
result="blur"
id="feGaussianBlur17" />
<feOffset
dx="5"
dy="15"
result="offset"
id="feOffset19" />
<feComposite
in="SourceGraphic"
in2="offset"
operator="over"
id="feComposite21" />
</filter>
<filter
id="shadow-7"
height="300%"
width="300%"
x="-100%"
y="-100%">
<feFlood
flood-color="rgba(72, 186, 255, 1)"
result="flood"
id="feFlood24" />
<feComposite
in="flood"
in2="SourceGraphic"
operator="atop"
result="composite"
id="feComposite26" />
<feGaussianBlur
in="composite"
stdDeviation="8"
result="blur"
id="feGaussianBlur28" />
<feOffset
dx="5"
dy="15"
result="offset"
id="feOffset30" />
<feComposite
in="SourceGraphic"
in2="offset"
operator="over"
id="feComposite32" />
</filter>
</defs>
<g
class=""
id="g39"
style="stroke:#000000;stroke-width:10;stroke-miterlimit:4;stroke-dasharray:none">
<path
d="m 103.432,17.844 c -1.118,0.005 -2.234,0.032 -3.348,0.08 -2.547,0.11 -5.083,0.334 -7.604,0.678 -20.167,2.747 -39.158,13.667 -52.324,33.67 -24.613,37.4 2.194,98.025 56.625,98.025 0.536,0 1.058,-0.012 1.583,-0.022 v 0.704 h 60.565 c -10.758,31.994 -30.298,66.596 -52.448,101.43 -2.162,3.4 -4.254,6.878 -6.29,10.406 l 34.878,35.733 -56.263,9.423 c -32.728,85.966 -27.42,182.074 48.277,182.074 v -0.002 l 9.31,0.066 c 23.83,-0.57 46.732,-4.298 61.325,-12.887 4.174,-2.458 7.63,-5.237 10.467,-8.42 h -32.446 c -20.33,5.95 -40.8,-6.94 -47.396,-25.922 -8.956,-25.77 7.52,-52.36 31.867,-60.452 5.803,-1.93 11.723,-2.834 17.565,-2.834 v -0.406 h 178.33 c -0.57,-44.403 16.35,-90.125 49.184,-126 23.955,-26.176 42.03,-60.624 51.3,-94.846 l -41.225,-24.932 38.272,-6.906 -43.37,-25.807 h -0.005 l 0.002,-0.002 0.002,0.002 52.127,-8.85 C 457.16,52.713 433.552,23.734 385.022,23.734 341.14,32.26 222.11,35.29 149.34,28.496 134.452,21.733 118.793,17.773 103.432,17.844 Z m 0.464,18.703 c 13.137,0.043 27.407,3.804 41.247,10.63 l 0.033,-0.07 c 4.667,4.735 8.542,9.737 11.68,14.985 H 82.92 l 10.574,14.78 c 10.608,14.83 19.803,31.99 21.09,42.024 0.643,5.017 -0.11,7.167 -1.814,8.836 -1.705,1.67 -6.228,3.875 -15.99,3.875 -40.587,0 -56.878,-44.952 -41.012,-69.06 C 66.238,46.64 79.582,39.22 95.002,37.12 c 2.89,-0.395 5.863,-0.583 8.894,-0.573 z M 118.5,80.78 h 46.28 c 4.275,15.734 3.656,33.07 -0.544,51.51 H 131.52 c 1.9,-5.027 2.268,-10.574 1.6,-15.77 -1.527,-11.913 -7.405,-24.065 -14.62,-35.74 z m 101.553,317.095 c 6.44,6.84 11.192,15.31 13.37,24.914 3.797,16.736 3.092,31.208 -1.767,43.204 -4.526,11.175 -12.576,19.79 -22.29,26 h 237.19 c 14.448,0 24.887,-5.678 32.2,-14.318 7.312,-8.64 11.2,-20.514 10.705,-32.352 -0.186,-4.473 -0.978,-8.913 -2.407,-13.18 l -69.91,-8.205 42.017,-20.528 c -8.32,-3.442 -18.64,-5.537 -31.375,-5.537 H 220.053 Z m -42.668,0.506 c -1.152,-0.003 -2.306,0.048 -3.457,0.153 -2.633,0.242 -5.256,0.775 -7.824,1.63 -15.11,5.02 -25.338,21.54 -20.11,36.583 3.673,10.57 15.347,17.71 25.654,13.938 l 1.555,-0.57 h 43.354 c 0.946,-6.36 0.754,-13.882 -1.358,-23.192 -3.71,-16.358 -20.543,-28.483 -37.815,-28.54 z"
fill="#b41e00"
fill-opacity="1"
transform="matrix(0.9,0,0,0.9,25.6,25.6)"
filter="url(#shadow-1)"
id="path37"
style="stroke:#000000;stroke-width:11.11111111;stroke-miterlimit:4;stroke-dasharray:none" />
</g>
</svg>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" style="height: 512px; width: 512px;"><defs><filter id="shadow-1" height="300%" width="300%" x="-100%" y="-100%"><feFlood flood-color="rgba(248, 231, 28, 1)" result="flood"></feFlood><feComposite in="flood" in2="SourceGraphic" operator="atop" result="composite"></feComposite><feGaussianBlur in="composite" stdDeviation="40" result="blur"></feGaussianBlur><feOffset dx="0" dy="0" result="offset"></feOffset><feComposite in="SourceGraphic" in2="offset" operator="over"></feComposite></filter><filter id="shadow-6" height="300%" width="300%" x="-100%" y="-100%"><feFlood flood-color="rgba(72, 186, 255, 1)" result="flood"></feFlood><feComposite in="flood" in2="SourceGraphic" operator="atop" result="composite"></feComposite><feGaussianBlur in="composite" stdDeviation="8" result="blur"></feGaussianBlur><feOffset dx="5" dy="15" result="offset"></feOffset><feComposite in="SourceGraphic" in2="offset" operator="over"></feComposite></filter><filter id="shadow-7" height="300%" width="300%" x="-100%" y="-100%"><feFlood flood-color="rgba(72, 186, 255, 1)" result="flood"></feFlood><feComposite in="flood" in2="SourceGraphic" operator="atop" result="composite"></feComposite><feGaussianBlur in="composite" stdDeviation="8" result="blur"></feGaussianBlur><feOffset dx="5" dy="15" result="offset"></feOffset><feComposite in="SourceGraphic" in2="offset" operator="over"></feComposite></filter></defs><g class="" transform="translate(0,0)" style=""><path d="M103.432 17.844c-1.118.005-2.234.032-3.348.08-2.547.11-5.083.334-7.604.678-20.167 2.747-39.158 13.667-52.324 33.67-24.613 37.4 2.194 98.025 56.625 98.025.536 0 1.058-.012 1.583-.022v.704h60.565c-10.758 31.994-30.298 66.596-52.448 101.43-2.162 3.4-4.254 6.878-6.29 10.406l34.878 35.733-56.263 9.423c-32.728 85.966-27.42 182.074 48.277 182.074v-.002l9.31.066c23.83-.57 46.732-4.298 61.325-12.887 4.174-2.458 7.63-5.237 10.467-8.42h-32.446c-20.33 5.95-40.8-6.94-47.396-25.922-8.956-25.77 7.52-52.36 31.867-60.452 5.803-1.93 11.723-2.834 17.565-2.834v-.406h178.33c-.57-44.403 16.35-90.125 49.184-126 23.955-26.176 42.03-60.624 51.3-94.846l-41.225-24.932 38.272-6.906-43.37-25.807h-.005l.002-.002.002.002 52.127-8.85c-5.232-39.134-28.84-68.113-77.37-68.113C341.14 32.26 222.11 35.29 149.34 28.496c-14.888-6.763-30.547-10.723-45.908-10.652zm.464 18.703c13.137.043 27.407 3.804 41.247 10.63l.033-.07c4.667 4.735 8.542 9.737 11.68 14.985H82.92l10.574 14.78c10.608 14.83 19.803 31.99 21.09 42.024.643 5.017-.11 7.167-1.814 8.836-1.705 1.67-6.228 3.875-15.99 3.875-40.587 0-56.878-44.952-41.012-69.06C66.238 46.64 79.582 39.22 95.002 37.12c2.89-.395 5.863-.583 8.894-.573zM118.5 80.78h46.28c4.275 15.734 3.656 33.07-.544 51.51H131.52c1.9-5.027 2.268-10.574 1.6-15.77-1.527-11.913-7.405-24.065-14.62-35.74zm101.553 317.095c6.44 6.84 11.192 15.31 13.37 24.914 3.797 16.736 3.092 31.208-1.767 43.204-4.526 11.175-12.576 19.79-22.29 26h237.19c14.448 0 24.887-5.678 32.2-14.318 7.312-8.64 11.2-20.514 10.705-32.352-.186-4.473-.978-8.913-2.407-13.18l-69.91-8.205 42.017-20.528c-8.32-3.442-18.64-5.537-31.375-5.537H220.053zm-42.668.506c-1.152-.003-2.306.048-3.457.153-2.633.242-5.256.775-7.824 1.63-15.11 5.02-25.338 21.54-20.11 36.583 3.673 10.57 15.347 17.71 25.654 13.938l1.555-.57h43.354c.946-6.36.754-13.882-1.358-23.192-3.71-16.358-20.543-28.483-37.815-28.54z" fill="#b41e00" fill-opacity="1" transform="translate(25.6, 25.6) scale(0.9, 0.9) rotate(0, 256, 256) skewX(0) skewY(0)" filter="url(#shadow-1)"></path></g></svg>

Before

Width:  |  Height:  |  Size: 6.1 KiB

After

Width:  |  Height:  |  Size: 3.4 KiB

View File

@ -22,6 +22,7 @@ import { AppPersonnageAleatoire } from "./actor/random/app-personnage-aleatoire.
/* -------------------------------------------- */
/**
* Extend the basic ActorSheet with some very simple modifications
* @extends {ActorSheet}
*/
export class RdDActorSheet extends RdDBaseActorSangSheet {
@ -79,10 +80,10 @@ export class RdDActorSheet extends RdDBaseActorSangSheet {
const actor = this.actor;
formData.combat = foundry.utils.duplicate(formData.armes);
RdDItemArme.computeNiveauArmes(formData.combat, formData.competences);
formData.combat.push(RdDItemArme.corpsACorps(actor));
formData.combat.push(RdDItemArme.mainsNues(actor));
formData.combat.push(RdDItemArme.empoignade(actor));
formData.esquives = this.actor.getCompetencesEsquive()
formData.esquives = this.actor.getCompetences("Esquive");
formData.combat = RdDCombatManager.listActionsArmes(formData.combat, formData.competences, formData.system.carac);
formData.empoignades = this.actor.getEmpoignades();
@ -183,7 +184,7 @@ export class RdDActorSheet extends RdDBaseActorSangSheet {
// Equip Inventory Item
this.html.find('.item-equip').click(async event => this.actor.equiperObjet(RdDSheetUtility.getItemId(event)))
this.html.find('.roll-chance-actuelle').click(async event => this.actor.rollCarac('chance-actuelle'))
this.html.find('.chance-actuelle').click(async event => this.actor.rollCarac('chance-actuelle'))
this.html.find('.button-appel-chance').click(async event => this.actor.rollAppelChance())
@ -213,8 +214,6 @@ export class RdDActorSheet extends RdDBaseActorSangSheet {
});
// Boutons spéciaux MJs
this.html.find('.forcer-tmr-aleatoire').click(async event => this.actor.reinsertionAleatoire("Action MJ"))
this.html.find('.don-de-haut-reve').click(async event => this.actor.addDonDeHautReve())
this.html.find('.sortreserve-add').click(async event => this.actor.addSortReserve(RdDSheetUtility.getItemId(event)))
this.html.find('.afficher-tmr').click(async event => this.actor.changeTMRVisible())
}
@ -284,8 +283,6 @@ export class RdDActorSheet extends RdDBaseActorSangSheet {
this.html.find('.ptreve-actuel-plus').click(async event => this.actor.reveActuelIncDec(1))
this.html.find('.ptreve-actuel-moins').click(async event => this.actor.reveActuelIncDec(-1))
this.html.find('.chance-actuelle-plus').click(async event => this.actor.chanceActuelleIncDec(1))
this.html.find('.chance-actuelle-moins').click(async event => this.actor.chanceActuelleIncDec(-1))
this.html.find('.fatigue-plus').click(async event => this.actor.santeIncDec("fatigue", 1))
this.html.find('.fatigue-moins').click(async event => this.actor.santeIncDec("fatigue", -1))
}

View File

@ -38,13 +38,9 @@ import { RdDCoeur } from "./coeur/rdd-coeur.js";
import { DialogChoixXpCarac } from "./dialog-choix-xp-carac.js";
import { RdDItemArme } from "./item-arme.js";
import { RdDCombatManager } from "./rdd-combat.js";
import { RdDItemTete } from "./item/tete.js";
import { DialogSelect } from "./dialog-select.js";
import { PAS_DE_DRACONIC, POSSESSION_SANS_DRACONIC } from "./item/base-items.js";
export const MAINS_DIRECTRICES = ['Droitier', 'Gaucher', 'Ambidextre']
/* -------------------------------------------- */
/**
* Extend the base Actor entity by defining a custom roll data structure which is ideal for the Simple system.
@ -57,27 +53,41 @@ export class RdDActor extends RdDBaseActorSang {
* Prepare Character type specific data
*/
prepareActorData() {
this.$computeCaracDerivee()
this.$computeIsHautRevant()
}
/* -------------------------------------------- */
$computeCaracDerivee() {
this.system.carac.force.value = Math.min(this.system.carac.force.value, parseInt(this.system.carac.taille.value) + 4);
this.system.carac.melee.value = Math.floor((this.getForce() + parseInt(this.system.carac.agilite.value)) / 2);
this.system.carac.melee.value = Math.floor((parseInt(this.system.carac.force.value) + parseInt(this.system.carac.agilite.value)) / 2);
this.system.carac.tir.value = Math.floor((parseInt(this.system.carac.vue.value) + parseInt(this.system.carac.dexterite.value)) / 2);
this.system.carac.lancer.value = Math.floor((parseInt(this.system.carac.tir.value) + parseInt(this.system.carac.force.value)) / 2);
this.system.carac.derobee.value = Math.floor(parseInt(((21 - this.system.carac.taille.value)) + parseInt(this.system.carac.agilite.value)) / 2);
super.prepareActorData()
let bonusDomKey = Math.floor((parseInt(this.system.carac.force.value) + parseInt(this.system.carac.taille.value)) / 2);
let tailleData = RdDCarac.getCaracDerivee(bonusDomKey);
this.system.attributs.plusdom.value = tailleData.plusdom;
this.system.attributs.encombrement.value = (parseInt(this.system.carac.force.value) + parseInt(this.system.carac.taille.value)) / 2;
this.system.attributs.sconst.value = RdDCarac.calculSConst(this.getConstitution())
this.system.attributs.sust.value = RdDCarac.getCaracDerivee(this.getTaille()).sust
this.system.attributs.sconst.value = RdDCarac.calculSConst(this.system.carac.constitution.value);
this.system.attributs.sust.value = RdDCarac.getCaracDerivee(this.system.carac.taille.value).sust;
this.system.sante.vie.max = Math.ceil((parseInt(this.system.carac.taille.value) + parseInt(this.system.carac.constitution.value)) / 2);
this.system.sante.fatigue.max = this.getFatigueMax()
this.system.sante.vie.value = Math.min(this.system.sante.vie.value, this.system.sante.vie.max)
this.system.sante.endurance.max = Math.max(parseInt(this.system.carac.taille.value) + parseInt(this.system.carac.constitution.value), parseInt(this.system.sante.vie.max) + parseInt(this.system.carac.volonte.value));
this.system.sante.endurance.value = Math.min(this.system.sante.endurance.value, this.system.sante.endurance.max);
this.system.sante.fatigue.max = this.getFatigueMax();
this.system.sante.fatigue.value = Math.min(this.system.sante.fatigue.value, this.system.sante.fatigue.max);
//Compteurs
this.system.reve.reve.max = 3 * this.getReve()
this.system.compteurs.chance.max = this.getChance()
this.system.reve.reve.max = this.system.carac.reve.value;
this.system.compteurs.chance.max = this.system.carac.chance.value;
}
this.system.attributs.hautrevant.value = this.itemTypes[ITEM_TYPES.tete].find(it => RdDItemTete.isDonDeHautReve(it))
$computeIsHautRevant() {
this.system.attributs.hautrevant.value = this.itemTypes['tete'].find(it => Grammar.equalsInsensitive(it.name, 'don de haut-reve'))
? "Haut rêvant"
: "";
}
@ -95,18 +105,13 @@ export class RdDActor extends RdDBaseActorSang {
isHautRevant() { return this.system.attributs.hautrevant.value != "" }
/* -------------------------------------------- */
getAgilite() { return Misc.toInt(this.system.carac.agilite?.value ?? 0) }
getChance() { return Misc.toInt(this.system.carac.chance?.value ?? 0) }
getAgilite() { return this.system.carac.agilite?.value ?? 0 }
getChance() { return this.system.carac.chance?.value ?? 0 }
getReveActuel() { return Misc.toInt(this.system.reve?.reve?.value) ?? this.carac.reve.value ?? 0 }
getChanceActuel() {
return Number.isNumeric(this.system.compteurs.chance.value) ?
Misc.toInt(this.system.compteurs.chance.value) : this.getChance()
}
getReveActuel() { return this.system.reve?.reve?.value ?? this.carac.reve.value ?? 0 }
getChanceActuel() { return this.system.compteurs.chance?.value ?? 10 }
getMoralTotal() { return this.system.compteurs.moral?.value ?? 0 }
getEnduranceMax() { return Math.max(1, Math.max(this.getTaille() + this.getConstitution(), this.getVieMax() + this.getVolonte())) }
/* -------------------------------------------- */
getEtatGeneral(options = { ethylisme: false }) {
const etatGeneral = this.system.compteurs.etat?.value ?? 0
@ -132,8 +137,8 @@ export class RdDActor extends RdDBaseActorSang {
const actions = RdDCombatManager.listActionsArmes(
this.itemTypes[ITEM_TYPES.arme]
.filter(it => RdDItemArme.isAttaque(it))
.concat(RdDItemArme.corpsACorps(this))
.concat(RdDItemArme.empoignade(this))
.concat(RdDItemArme.mainsNues(this))
,
this.itemTypes[ITEM_TYPES.competence],
this.system.carac)
@ -157,9 +162,10 @@ export class RdDActor extends RdDBaseActorSang {
/* -------------------------------------------- */
getDemiReve() { return this.system.reve.tmrpos.coord }
getDraconicList() { return this.itemTypes[ITEM_TYPES.competence].filter(it => it.system.categorie == 'draconic') }
getBestDraconic() { return foundry.utils.duplicate([...this.getDraconicList(), PAS_DE_DRACONIC].sort(Misc.descending(it => it.system.niveau)).find(it => true)) }
getBestDraconic() { return foundry.utils.duplicate(this.getDraconicList().sort(Misc.descending(it => it.system.niveau)).find(it => true)) }
getDraconicOuPossession() {
return [...this.getDraconicList().filter(it => it.system.niveau >= 0), POSSESSION_SANS_DRACONIC]
return [...this.getDraconicList().filter(it => it.system.niveau >= 0),
super.getDraconicOuPossession()]
.sort(Misc.descending(it => it.system.niveau))
.find(it => true)
}
@ -175,7 +181,7 @@ export class RdDActor extends RdDBaseActorSang {
whisper: ChatUtility.getOwners(this),
content: await renderTemplate(`systems/foundryvtt-reve-de-dragon/templates/chat-potionenchantee-chateaudormant.html`, {
pr: nouveauReve,
alias: this.getAlias(),
alias: this.name,
potionName: it.name,
potionImg: it.img
})
@ -983,43 +989,7 @@ export class RdDActor extends RdDBaseActorSang {
});
}
/* -------------------------------------------- */
async addDonDeHautReve() {
if (!game.user.isGM || this.isHautRevant()) {
return
}
const donHR = await RdDItemTete.teteDonDeHautReve()
if (donHR) {
this.createEmbeddedDocuments('Item', [donHR.toObject()])
}
}
async addSortReserve(itemId) {
if (itemId) {
const item = this.items.get(itemId)
if (item.type == ITEM_TYPES.sort && !item.system.isrituel) {
this.$createSortReserve(item)
return
}
}
const selectSortReserve = {
title: "Créer un sort en réserve",
label: "Choisir un sort",
list: this.itemTypes[ITEM_TYPES.sort].filter(it => !it.system.isrituel)
}
DialogSelect.select(selectSortReserve, sort => this.$createSortReserve(sort))
}
$createSortReserve(sort) {
this.createEmbeddedDocuments("Item",
[{
type: ITEM_TYPES.sortreserve,
name: sort.name,
img: sort.img,
system: { sortid: sort.id, draconic: sort.system.draconic, ptreve: Number(sort.system.ptreve.match(/\d+/)), coord: 'A1', heurecible: 'Vaisseau' }
}],
{ renderSheet: true })
}
/* -------------------------------------------- */
async reinsertionAleatoire(raison, accessible = tmr => true) {
const innaccessible = this.buildTMRInnaccessible();
@ -1083,11 +1053,6 @@ export class RdDActor extends RdDBaseActorSang {
await this.update({ "system.reve.reve.value": reve });
}
async chanceActuelleIncDec(value) {
const chance = Math.min(this.getChance(), Math.max(this.getChanceActuel() + value, 0));
await this.update({ "system.compteurs.chance.value": chance });
}
/* -------------------------------------------- */
async regainPointDeSeuil() {
const seuil = Misc.toInt(this.system.reve.seuil.value);
@ -1118,7 +1083,9 @@ export class RdDActor extends RdDBaseActorSang {
}
/* -------------------------------------------- */
getSConst() { return RdDCarac.calculSConst(this.getConstitution()) }
getSConst() {
return RdDCarac.calculSConst(this.system.carac.constitution.value)
}
async ajoutXpConstitution(xp) {
await this.update({ "system.carac.constitution.xp": Misc.toInt(this.system.carac.constitution.xp) + xp });
@ -1270,14 +1237,16 @@ export class RdDActor extends RdDBaseActorSang {
}
/* -------------------------------------------- */
async consommerNourritureboisson(itemId, choix = { doses: 1, seForcer: false, supprimerSiZero: false }) {
if (!this.isOwner) {
async consommerNourritureboisson(itemId, choix = { doses: 1, seForcer: false, supprimerSiZero: false }, userId = undefined) {
if (userId != undefined && userId != game.user.id) {
RdDBaseActor.remoteActorCall({
tokenId: this.token?.id,
actorId: this.id,
method: 'consommerNourritureboisson', args: [itemId, choix]
})
return
method: 'consommerNourritureboisson',
args: [itemId, choix, userId]
},
userId)
return;
}
const item = this.getItem(itemId)
if (!item.getUtilisationCuisine()) {
@ -1372,7 +1341,7 @@ export class RdDActor extends RdDBaseActorSang {
const etat = this.getEtatGeneral({ ethylisme: true });
const nbDoses = Number(this.system.compteurs.ethylisme.nb_doses || 0);
const ethylismeData = {
alias: this.getAlias(),
alias: this.name,
actor: this,
vie: this.system.sante.vie.max,
alcool: alcool,
@ -1457,7 +1426,7 @@ export class RdDActor extends RdDBaseActorSang {
const perteDissolution = Math.max(0, Math.min(dissolution, conversion));
let stressRollData = {
alias: this.getAlias(),
alias: this.name,
selectedCarac: this.system.carac.reve,
rolled: stressRoll,
stress: fromStress,
@ -1548,7 +1517,7 @@ export class RdDActor extends RdDBaseActorSang {
carac.value = niveauSuivant;
let checkXp = {
alias: this.getAlias(),
alias: this.name,
carac: caracName,
value: niveauSuivant,
xp: carac.xp
@ -1578,7 +1547,7 @@ export class RdDActor extends RdDBaseActorSang {
newCompData.system.niveau += 1;
newCompData.system.xp = newXP;
let checkXp = {
alias: this.getAlias(),
alias: this.name,
competence: newCompData.name,
niveau: newCompData.system.niveau,
xp: newCompData.system.xp,
@ -1815,7 +1784,7 @@ export class RdDActor extends RdDBaseActorSang {
}
const competence = this.getCompetence(compName);
let rollData = {
alias: this.getAlias(),
alias: this.name,
caracValue: Number(carac.value),
selectedCarac: carac,
competence: competence,
@ -1888,7 +1857,7 @@ export class RdDActor extends RdDBaseActorSang {
label: 'Jet ' + Grammar.apostrophe('de', competence.name),
template: 'systems/foundryvtt-reve-de-dragon/templates/dialog-roll-competence.html',
rollData: {
alias: this.getAlias(),
alias: this.name,
carac: this.system.carac,
selectedCarac: this.getCaracByName(caracName),
selectedCaracName: caracName,
@ -2272,6 +2241,12 @@ export class RdDActor extends RdDBaseActorSang {
}
}
/* -------------------------------------------- */
async chanceActuelleIncDec(value) {
const chance = Math.min(this.getChance(), Math.max(this.getChanceActuel() + value, 0));
await this.updateCompteurValue("chance", chance);
}
/* -------------------------------------------- */
async appelDestinee(onSuccess = () => { }, onEchec = () => { }) {
let destinee = this.system.compteurs.destinee?.value ?? 0;
@ -2546,11 +2521,7 @@ export class RdDActor extends RdDBaseActorSang {
async onRollTachePremiersSoins(blessureId, rollData) {
if (!this.isOwner) {
return RdDBaseActor.remoteActorCall({
tokenId: this.token?.id,
actorId: this.id,
method: 'onRollTachePremiersSoins', args: [blessureId, rollData]
})
return RdDBaseActor.remoteActorCall({ tokenId: this.token?.id, actorId: this.id, method: 'onRollTachePremiersSoins', args: [blessureId, rollData] });
}
const blessure = this.getItem(blessureId, 'blessure')
console.log('TODO update blessure', this, blessureId, rollData, rollData.tache);
@ -2580,11 +2551,7 @@ export class RdDActor extends RdDBaseActorSang {
async onRollSoinsComplets(blessureId, rollData) {
if (!this.isOwner) {
return RdDBaseActor.remoteActorCall({
tokenId: this.token?.id,
actorId: this.id,
method: 'onRollSoinsComplets', args: [blessureId, rollData]
})
return RdDBaseActor.remoteActorCall({ tokenId: this.token?.id, actorId: this.id, method: 'onRollSoinsComplets', args: [blessureId, rollData] });
}
const blessure = this.getItem(blessureId, 'blessure')
if (blessure && blessure.system.premierssoins.done && !blessure.system.soinscomplets.done) {
@ -2963,7 +2930,7 @@ export class RdDActor extends RdDBaseActorSang {
let newQuantite = herbeData.system.quantite - herbeData.nbBrins;
let messageData = {
alias: this.getAlias(),
alias: this.name,
nbBrinsReste: newQuantite,
potion: newPotion,
herbe: herbeData
@ -3050,16 +3017,15 @@ export class RdDActor extends RdDBaseActorSang {
case 'queue':
case 'ombre':
case 'souffle':
await this.onDeleteOwnedDraconique(item, options, id)
break
await this.onDeleteOwnedDraconique(item, options, id);
break;
case 'casetmr':
await this.onDeleteOwnedCaseTmr(item, options, id)
break
await this.onDeleteOwnedCaseTmr(item, options, id);
break;
case 'empoignade':
await RdDEmpoignade.deleteLinkedEmpoignade(this.id, item)
break
break;
}
super.onDeleteItem(item, options, id)
}
/* -------------------------------------------- */

View File

@ -1,5 +1,4 @@
import { Grammar } from "../grammar.js";
import { ITEM_TYPES } from "../item.js";
import { RdDSheetUtility } from "../rdd-sheet-utility.js";
import { RdDBaseActorSheet } from "./base-actor-sheet.js";
@ -37,30 +36,7 @@ export class RdDBaseActorReveSheet extends RdDBaseActorSheet {
this.html.find('.delete-active-effect').click(async event => this.actor.removeEffect(this.html.find(event.currentTarget).parents(".active-effect").data('effect')));
this.html.find('.enlever-tous-effets').click(async event => await this.actor.removeEffects());
}
this.html.find('.competence-add').click(async event =>
await this.actor.createEmbeddedDocuments("Item", [{
type: ITEM_TYPES.competencecreature,
name: 'Nouvelle competence',
img: 'systems/foundryvtt-reve-de-dragon/icons/compcreature-serres.webp',
system: {
carac_value: this.actor.getForce(),
}
}], { renderSheet: true })
)
if (this.options.vueDetaillee) {
// On carac change
this.html.find('.carac-value').change(async event => {
let caracName = event.currentTarget.name.replace(".value", "").replace("system.carac.", "");
this.actor.updateCarac(caracName, parseInt(event.target.value));
});
// On competence change
this.html.find('.competence-value').change(async event => {
let compName = event.currentTarget.attributes.compname.value;
//console.log("Competence changed :", compName);
this.actor.updateCompetence(compName, parseInt(event.target.value));
});
}
}
}

View File

@ -1,27 +1,33 @@
import { ENTITE_INCARNE, SHOW_DICE, SYSTEM_RDD } from "../constants.js";
import { ChatUtility } from "../chat-utility.js";
import { DialogValidationEncaissement } from "../dialog-validation-encaissement.js";
import { Grammar } from "../grammar.js";
import { RdDItemCompetence } from "../item-competence.js";
import { Misc } from "../misc.js";
import { RdDEmpoignade } from "../rdd-empoignade.js";
import { RdDResolutionTable } from "../rdd-resolution-table.js";
import { RdDEncaisser } from "../rdd-roll-encaisser.js";
import { RdDRoll } from "../rdd-roll.js";
import { RdDUtility } from "../rdd-utility.js";
import { ReglesOptionnelles } from "../settings/regles-optionnelles.js";
import { RdDBaseActor } from "./base-actor.js";
import { ITEM_TYPES } from "../item.js";
import { RdDItemCompetence } from "../item-competence.js";
import { RdDItemCompetenceCreature } from "../item-competencecreature.js";
import { RdDItemArme } from "../item-arme.js";
import { StatusEffects } from "../settings/status-effects.js";
import { ITEM_TYPES } from "../item.js";
import { Targets } from "../targets.js";
import { RdDConfirm } from "../rdd-confirm.js";
import { RdDCarac } from "../rdd-carac.js";
import { ChatUtility } from "../chat-utility.js";
import { DialogValidationEncaissement } from "../dialog-validation-encaissement.js";
import { RdDCombat } from "../rdd-combat.js";
import { RdDEmpoignade } from "../rdd-empoignade.js";
import { RdDPossession } from "../rdd-possession.js";
import { BASE_CORPS_A_CORPS, BASE_ESQUIVE, POSSESSION_SANS_DRACONIC } from "../item/base-items.js";
import { RdDCombat, RdDCombatManager } from "../rdd-combat.js";
import { RdDConfirm } from "../rdd-confirm.js";
import { ENTITE_INCARNE, SHOW_DICE, SYSTEM_RDD } from "../constants.js";
import { RdDItemArme } from "../item-arme.js";
const POSSESSION_SANS_DRACONIC = {
img: 'systems/foundryvtt-reve-de-dragon/icons/entites/possession.webp',
name: 'Sans draconic',
system: {
niveau: 0,
defaut_carac: "reve-actuel",
}
};
/**
* Classe de base pour les acteurs disposant de rêve (donc, pas des objets)
@ -30,22 +36,6 @@ import { BASE_CORPS_A_CORPS, BASE_ESQUIVE, POSSESSION_SANS_DRACONIC } from "../i
*/
export class RdDBaseActorReve extends RdDBaseActor {
prepareActorData() {
super.prepareActorData()
this.system.attributs.plusdom.value = this.getBonusDegat()
this.system.sante.endurance.max = this.getEnduranceMax()
this.system.sante.endurance.value = Math.min(this.system.sante.endurance.value, this.system.sante.endurance.max)
}
getCarac() {
return foundry.utils.mergeObject(this.system.carac,
{
'reve-actuel': this.getCaracReveActuel(),
'chance-actuelle': this.getCaracChanceActuelle()
},
{ inplace: false })
}
getCaracChanceActuelle() {
return {
label: 'Chance actuelle',
@ -62,25 +52,21 @@ export class RdDBaseActorReve extends RdDBaseActor {
};
}
getTaille() { return Misc.toInt(this.system.carac.taille?.value) }
getConstitution() { return this.getReve() }
getForce() { return this.getReve() }
getAgilite() { return this.getForce() }
getReve() { return Misc.toInt(this.system.carac.reve?.value) }
getChance() { return this.getReve() }
getReveActuel() { return this.getReve() }
getChanceActuel() { return this.getChance() }
getEnduranceMax() { return Math.max(1, this.getTaille() + this.getConstitution()) }
getEncombrementMax() { return (this.getForce() + this.getTaille()) / 2 }
getBonusDegat() { return RdDCarac.getCaracDerivee(this.getEncombrementMax()).plusdom }
getReve() { return Number(this.system.carac.reve?.value ?? 0) }
getForce() { return this.getReve() }
getTaille() { return Number(this.system.carac.taille?.value ?? 0) }
getAgilite() { return this.getForce() }
getChance() { return this.getReve() }
getMoralTotal() { return 0 }
getBonusDegat() { return Number(this.system.attributs?.plusdom?.value ?? 0) }
getProtectionNaturelle() { return Number(this.system.attributs?.protection?.value ?? 0) }
getSConst() { return 0 }
/* -------------------------------------------- */
getEncombrementMax() { return 0 }
isSurenc() { return false }
computeMalusSurEncombrement() { return 0 }
@ -98,7 +84,7 @@ export class RdDBaseActorReve extends RdDBaseActor {
isActorCombat() { return true }
getCaracInit(competence) {
if (!competence) {
if (!competence){
return 0
}
if (competence.type == ITEM_TYPES.competencecreature) {
@ -131,7 +117,7 @@ export class RdDBaseActorReve extends RdDBaseActor {
for (let effect of this.getEffects()) {
if (effect.duration.type !== 'none' && (effect.duration.remaining <= 0 || options.terminer)) {
await effect.delete();
ChatMessage.create({ content: `${this.getAlias()} n'est plus ${Misc.lowerFirst(game.i18n.localize(effect.system.label))} !` });
ChatMessage.create({ content: `${this.name} n'est plus ${Misc.lowerFirst(game.i18n.localize(effect.system.label))} !` });
}
}
}
@ -164,24 +150,24 @@ export class RdDBaseActorReve extends RdDBaseActor {
}
return RdDItemCompetence.findCompetence(this.items, idOrName, options)
}
getCompetences(name, options = { onMessage: message => { } }) {
return RdDItemCompetence.findCompetences(this.items, name, options)
getCompetences(name) {
return RdDItemCompetence.findCompetences(this.items, name)
}
getCompetenceCorpsACorps(options = { onMessage: message => { } }) {
return this.getCompetence(BASE_CORPS_A_CORPS.name, options) ?? BASE_CORPS_A_CORPS
getCompetenceCorpsACorps(options = {}) {
return this.getCompetence("Corps à corps", options)
}
getCompetencesEsquive(options = { onMessage: message => { } }) {
return this.getCompetences(BASE_ESQUIVE.name, options) ?? [BASE_ESQUIVE]
getCompetencesEsquive() {
return this.getCompetences("esquive")
}
getArmeParade(armeParadeId) {
return RdDItemArme.getArme(armeParadeId ? this.getEmbeddedDocument('Item', armeParadeId) : undefined)
const item = armeParadeId ? this.getEmbeddedDocument('Item', armeParadeId) : undefined;
return RdDItemArme.getArme(item);
}
getDraconicOuPossession() { return POSSESSION_SANS_DRACONIC }
getDraconicOuPossession() {
return POSSESSION_SANS_DRACONIC
}
getPossession(possessionId) {
return this.itemTypes[ITEM_TYPES.possession].find(it => it.system.possessionid == possessionId);
@ -302,7 +288,7 @@ export class RdDBaseActorReve extends RdDBaseActor {
await this.openRollDialog({
name: `jet-${this.id}`,
label: `Jet de ${this.getAlias()}`,
label: `Jet de ${this.name}`,
template: 'systems/foundryvtt-reve-de-dragon/templates/dialog-roll.html',
rollData: {
carac: carac,
@ -314,6 +300,16 @@ export class RdDBaseActorReve extends RdDBaseActor {
});
}
getCarac() {
// TODO: le niveau d'une entité de cauchemar devrait être exclu...
return foundry.utils.mergeObject(this.system.carac,
{
'reve-actuel': this.getCaracReveActuel(),
'chance-actuelle': this.getCaracChanceActuelle()
},
{ inplace: false })
}
/* -------------------------------------------- */
async rollCarac(caracName, jetResistance = undefined) {
if (Grammar.equalsInsensitive(caracName, 'taille')) {
@ -449,7 +445,8 @@ export class RdDBaseActorReve extends RdDBaseActor {
RdDBaseActor.remoteActorCall({
tokenId: this.token?.id,
actorId: this.id,
method: 'encaisserDommagesValidationGR', args: [rollData, armure, show, attackerToken, defenderToken]
method: 'encaisserDommagesValidationGR',
args: [rollData, armure, show, attackerToken, defenderToken]
})
} else {
DialogValidationEncaissement.validerEncaissement(this, rollData, armure,
@ -466,7 +463,7 @@ export class RdDBaseActorReve extends RdDBaseActor {
async $afficherEncaissement(encaissement, show, defenderToken) {
foundry.utils.mergeObject(encaissement, {
alias: defenderToken?.name ?? this.getAlias(),
alias: defenderToken?.name ?? this.name,
hasPlayerOwner: this.hasPlayerOwner,
show: show ?? {}
}, { overwrite: false });
@ -497,9 +494,9 @@ export class RdDBaseActorReve extends RdDBaseActor {
|| entite.isEntiteAccordee(this)) {
return true;
}
const rolled = await RdDResolutionTable.roll(this.getReveActuel(), - Number(entite.getNiveau()));
const rolled = await RdDResolutionTable.roll(this.getReveActuel(), - Number(entite.system.carac.niveau.value));
const rollData = {
alias: this.getAlias(),
alias: this.name,
rolled: rolled,
entite: entite.name,
selectedCarac: this.system.carac.reve
@ -519,7 +516,7 @@ export class RdDBaseActorReve extends RdDBaseActor {
isEntiteAccordee(attacker) { return true }
async setEntiteReveAccordee(actor) {
ui.notifications.error("Impossible de s'accorder à " + this.getAlias() + ": ce n'est pas une entité incarnée");
ui.notifications.error("Impossible de s'accorder à " + this.name + ": ce n'est pas une entité incarnée");
}
}

View File

@ -21,7 +21,7 @@ export class RdDBaseActorSangSheet extends RdDBaseActorReveSheet {
this.html.find('.creer-blessure-grave').click(async event => RdDItemBlessure.createBlessure(this.actor, 4));
this.html.find('.creer-blessure-critique').click(async event => RdDItemBlessure.createBlessure(this.actor, 6));
this.html.find('.subir-blessure-contusion').click(async event => RdDItemBlessure.applyFullBlessure(this.actor, 0));
this.html.find('.subir-blessure-contusion').click(async event => RdDItemBlessure.applyFullBlessure(this.actor, 2));
this.html.find('.subir-blessure-legere').click(async event => RdDItemBlessure.applyFullBlessure(this.actor, 2));
this.html.find('.subir-blessure-grave').click(async event => RdDItemBlessure.applyFullBlessure(this.actor, 4));
this.html.find('.subir-blessure-critique').click(async event => RdDItemBlessure.applyFullBlessure(this.actor, 6));

View File

@ -1,4 +1,4 @@
import { RdDUtility } from "../rdd-utility.js";
import { MAX_ENDURANCE_FATIGUE, RdDUtility } from "../rdd-utility.js";
import { ReglesOptionnelles } from "../settings/regles-optionnelles.js";
import { STATUSES } from "../settings/status-effects.js";
import { ITEM_TYPES } from "../item.js";
@ -6,7 +6,6 @@ import { RdDBaseActorReve } from "./base-actor-reve.js";
import { RdDDice } from "../rdd-dice.js";
import { RdDItemBlessure } from "../item/blessure.js";
import { ChatUtility } from "../chat-utility.js";
import { Misc } from "../misc.js";
/**
* Classe de base pour les acteurs qui peuvent subir des blessures
@ -15,32 +14,25 @@ import { Misc } from "../misc.js";
*/
export class RdDBaseActorSang extends RdDBaseActorReve {
prepareActorData() {
this.system.sante.vie.max = Math.ceil((this.getTaille() + this.getConstitution()) / 2)
this.system.sante.vie.value = Math.min(this.system.sante.vie.value, this.system.sante.vie.max)
super.prepareActorData()
this.system.attributs.encombrement.value = this.getEncombrementMax()
}
getForce() { return Misc.toInt(this.system.carac.force?.value) }
getConstitution() { return Misc.toInt(this.system.carac.constitution?.value) }
getVolonte() { return Misc.toInt(this.system.carac.volonte?.value) }
getForce() { return Number(this.system.carac.force?.value ?? 0) }
getVieMax() { return Misc.toInt(this.system.sante.vie?.max) }
getEnduranceMax() { return Math.max(1, this.getTaille() + this.getConstitution()) }
getFatigueMax() { return this.getEnduranceMax() * 2 }
getBonusDegat() { return Number(this.system.attributs?.plusdom?.value ?? 0) }
getProtectionNaturelle() { return Number(this.system.attributs?.protection?.value ?? 0) }
getSConst() { return 0 }
getProtectionNaturelle() { return Misc.toInt(this.system.attributs?.protection?.value) }
getEnduranceMax() { return Math.max(1, Math.min(this.system.sante.endurance.max, MAX_ENDURANCE_FATIGUE)) }
getFatigueActuelle() {
if (ReglesOptionnelles.isUsing("appliquer-fatigue")) {
return Math.max(0, Math.min(this.getFatigueMax(), Misc.toInt(this.system.sante.fatigue?.value)))
return Math.max(0, Math.min(this.getFatigueMax(), this.system.sante.fatigue?.value ?? 0));
}
return 0;
}
getFatigueRestante() { return this.getFatigueMax() - this.getFatigueActuelle() }
getFatigueMin() { return this.system.sante.endurance.max - this.system.sante.endurance.value }
getFatigueMax() { return this.getEnduranceMax() * 2 }
malusFatigue() {
if (ReglesOptionnelles.isUsing("appliquer-fatigue")) {
@ -50,6 +42,7 @@ export class RdDBaseActorSang extends RdDBaseActorReve {
}
/* -------------------------------------------- */
getEncombrementMax() { return Number(this.system.attributs?.encombrement?.value ?? 0) }
isSurenc() { return this.computeMalusSurEncombrement() < 0 }
computeMalusSurEncombrement() {
@ -198,7 +191,7 @@ export class RdDBaseActorSang extends RdDBaseActorReve {
encaissement.mort = true;
ChatMessage.create({
content: `<img class="chat-icon" src="icons/svg/skull.svg" data-tooltip="charge" />
<strong>${this.getAlias()} vient de succomber à une seconde blessure critique ! Que les Dragons gardent son Archétype en paix !</strong>`
<strong>${this.name} vient de succomber à une seconde blessure critique ! Que les Dragons gardent son Archétype en paix !</strong>`
});
}
return blessure;
@ -225,7 +218,7 @@ export class RdDBaseActorSang extends RdDBaseActorReve {
async jetDeVie() {
if (this.isDead()) {
ChatMessage.create({
content: `Jet de Vie: ${this.getAlias()} est déjà mort, ce n'est pas la peine d'en rajouter !!!!!`,
content: `Jet de Vie: ${this.name} est déjà mort, ce n'est pas la peine d'en rajouter !!!!!`,
whisper: ChatUtility.getOwners(this)
})
return
@ -249,7 +242,7 @@ export class RdDBaseActorSang extends RdDBaseActorReve {
await this.santeIncDec("vie", -perte);
}
if (this.isDead()) {
msgText += `<br><strong>${this.getAlias()} est mort !!!!</strong>`;
msgText += `<br><strong>${this.name} est mort !!!!</strong>`;
}
else if (prochainJet > 0) {
msgText += `<br>Prochain jet de vie dans ${prochainJet} ${isCritique ? 'round' : 'minute'}${prochainJet > 1 ? 's' : ''} ${isCritique ? '(état critique)' : '(état grave)'}`
@ -280,7 +273,7 @@ export class RdDBaseActorSang extends RdDBaseActorReve {
async setSonne(sonne = true) {
if (!game.combat && sonne) {
ui.notifications.info(`${this.getAlias()} est hors combat, il ne reste donc pas sonné`);
ui.notifications.info(`${this.name} est hors combat, il ne reste donc pas sonné`);
return;
}
await this.setEffect(STATUSES.StatusStunned, sonne)

View File

@ -177,6 +177,21 @@ export class RdDBaseActorSheet extends ActorSheet {
this.options.vueDetaillee = !this.options.vueDetaillee;
this.render(true);
});
if (this.options.vueDetaillee) {
// On carac change
this.html.find('.carac-value').change(async event => {
let caracName = event.currentTarget.name.replace(".value", "").replace("system.carac.", "");
this.actor.updateCarac(caracName, parseInt(event.target.value));
});
// On competence change
this.html.find('.competence-value').change(async event => {
let compName = event.currentTarget.attributes.compname.value;
//console.log("Competence changed :", compName);
this.actor.updateCompetence(compName, parseInt(event.target.value));
});
}
}
_rechercherKeyup(event) {

View File

@ -18,7 +18,6 @@ export class RdDBaseActor extends Actor {
.map(it => it[0])
.find(it => it)
}
static $findCaracByName(carac, name) {
const caracList = Object.entries(carac);
let entry = Misc.findFirstLike(name, caracList, { mapper: it => it[0], description: 'caractéristique' });
@ -27,16 +26,6 @@ export class RdDBaseActor extends Actor {
}
return entry && entry.length > 0 ? carac[entry[0]] : undefined;
}
static getDefaultValue(actorType, path) {
if (path.includes('.')) {
path = path.split('.')
}
let obj = game.model.Actor[actorType]
for (let p of path) {
obj = obj ? obj[p] : undefined
}
return obj
}
static getDefaultImg(itemType) {
return game.system.rdd.actorClasses[itemType]?.defaultIcon ?? defaultItemImg[itemType];
@ -56,32 +45,29 @@ export class RdDBaseActor extends Actor {
}
}
static remoteActorCall(callData) {
if (game.user.isGM) {
RdDBaseActor.onRemoteActorCall(callData, game.user.id)
return false
static remoteActorCall(callData, userId = undefined) {
userId = userId ?? Misc.firstConnectedGMId();
if (userId == game.user.id) {
RdDBaseActor.onRemoteActorCall(callData, userId);
return false;
}
else {
game.socket.emit(SYSTEM_SOCKET_ID, {
msg: "msg_remote_actor_call",
data: callData,
userId: Misc.firstConnectedGMId()
})
return true
game.socket.emit(SYSTEM_SOCKET_ID, { msg: "msg_remote_actor_call", data: callData, userId: userId });
return true;
}
}
static onRemoteActorCall(callData, userId) {
const actor = RdDBaseActor.getRealActor(callData?.actorId, callData?.tokenId);
if (userId == game.user.id) {
// Seul le joueur choisi effectue l'appel: le joueur courant si propriétaire de l'actor, ou le MJ sinon
const args = callData.args;
console.info(`RdDBaseActor.onRemoteActorCall: pour l'Actor ${callData.actorId}, appel de RdDBaseActor.${callData.method}(`, ...args, ')');
actor[callData.method](...args);
const actor = RdDBaseActor.getRealActor(callData?.actorId, callData?.tokenId);
if (Misc.isOwnerPlayerOrUniqueConnectedGM(actor)) { // Seul le joueur choisi effectue l'appel: le joueur courant si propriétaire de l'actor, ou le MJ sinon
const args = callData.args;
console.info(`RdDBaseActor.onRemoteActorCall: pour l'Actor ${callData.actorId}, appel de RdDBaseActor.${callData.method}(`, ...args, ')');
actor[callData.method](...args);
}
}
}
static getRealActor(actorId, tokenId) {
if (tokenId) {
let token = canvas.tokens.get(tokenId)
@ -92,13 +78,6 @@ export class RdDBaseActor extends Actor {
return game.actors.get(actorId)
}
getAlias() {
if (this.token?.name != null && this.token != this.prototypeToken) {
return this.token.name
}
return this.name
}
isPersonnageJoueur() { return false }
static extractActorMin = (actor) => { return { id: actor?.id, type: actor?.type, name: actor?.name, img: actor?.img }; };
@ -176,19 +155,11 @@ export class RdDBaseActor extends Actor {
await super._preCreate(data, options, user);
// Configure prototype token settings
if (this.type === "personnage") {
this.updateSource({
sight: { enabled: true },
actorLink: options.fromCompendium ? data.prototypeToken.actorLink : true,
disposition: CONST.TOKEN_DISPOSITIONS.FRIENDLY
})
} else {
const prototypeToken = {
sight: { enabled: true },
disposition: CONST.TOKEN_DISPOSITIONS.NEUTRAL
}
this.updateSource({ prototypeToken });
}
const prototypeToken = {};
if (this.type === "personnage") Object.assign(prototypeToken, {
sight: { enabled: true }, actorLink: true, disposition: CONST.TOKEN_DISPOSITIONS.FRIENDLY
});
this.updateSource({ prototypeToken });
}
/* -------------------------------------------- */
@ -200,8 +171,7 @@ export class RdDBaseActor extends Actor {
this.computeEncTotal()
}
prepareActorData() { }
async prepareActorData() { }
async computeEtatGeneral() { }
/* -------------------------------------------- */
findPlayer() {
@ -233,26 +203,11 @@ export class RdDBaseActor extends Actor {
getMonnaie(id) { return this.findItemLike(id, 'monnaie'); }
getEncombrementMax() { return 0 }
/* -------------------------------------------- */
async updateCarac(caracName, to) {
}
/* -------------------------------------------- */
async onPreUpdateItem(item, change, options, id) { }
async onCreateItem(item, options, id) { }
async onDeleteItem(item, options, id) { }
async onUpdateActor(update, options, actorId) { }
async onDeleteItem(item, options, id) {
if (item.isInventaire()) {
this._removeItemFromConteneur(item)
}
}
_removeItemFromConteneur(item) {
this.items.filter(it => it.isConteneur() && it.system.contenu.includes(item.id))
.forEach(conteneur => {
const nouveauContenu = conteneur.system.contenu.filter(id => id != item.id);
conteneur.update({ 'system.contenu': nouveauContenu });
});
}
async onTimeChanging(oldTimestamp, newTimestamp) {
this.items.filter(it => it.isFinPeriode(oldTimestamp, newTimestamp))
@ -260,20 +215,21 @@ export class RdDBaseActor extends Actor {
}
async creerObjetParMJ(object) {
if (this.isOwner) {
await this.createEmbeddedDocuments('Item', [object])
return
if (!Misc.isFirstConnectedGM()) {
RdDBaseActor.remoteActorCall({
tokenId: this.token?.id,
actorId: this.id,
method: 'creerObjetParMJ',
args: [object]
});
return;
}
RdDBaseActor.remoteActorCall({
tokenId: this.token?.id,
actorId: this.id,
method: 'creerObjetParMJ', args: [object]
})
await this.createEmbeddedDocuments('Item', [object])
}
/* -------------------------------------------- */
async cleanupConteneurs() {
if (Misc.isOwnerPlayer(this)) {
if (Misc.isOwnerPlayerOrUniqueConnectedGM(this)) {
let updates = this.itemTypes['conteneur']
.filter(c => c.system.contenu.filter(id => this.getItem(id) == undefined).length > 0)
.map(c => { return { _id: c._id, 'system.contenu': c.system.contenu.filter(id => this.getItem(id) != undefined) } });
@ -344,7 +300,7 @@ export class RdDBaseActor extends Actor {
ui.notifications.error(`Impossible d'ajouter un gain de ${sols} <0`);
return;
}
if (fromActorId && !this.isOwner) {
if (fromActorId && !game.user.isGM) {
RdDBaseActor.remoteActorCall({
userId: Misc.connectedGMOrUser(),
tokenId: this.token?.id,
@ -379,9 +335,10 @@ export class RdDBaseActor extends Actor {
if (!Misc.isFirstConnectedGM()) {
RdDBaseActor.remoteActorCall({
actorId: achat.vendeurId ?? achat.acheteurId,
method: 'achatVente', args: [achat]
method: 'achatVente',
args: [achat]
});
return
return;
}
const cout = Number(achat.prixTotal ?? 0);
const vendeur = achat.vendeurId ? game.actors.get(achat.vendeurId) : undefined;
@ -410,7 +367,7 @@ export class RdDBaseActor extends Actor {
chatAchatItem.quantiteTotal = quantite;
ChatMessage.create({
user: achat.userId,
speaker: { alias: (acheteur ?? vendeur).getAlias() },
speaker: { alias: (acheteur ?? vendeur).name },
whisper: ChatUtility.getOwners(this),
content: await renderTemplate('systems/foundryvtt-reve-de-dragon/templates/chat-achat-item.html', chatAchatItem)
});
@ -726,7 +683,7 @@ export class RdDBaseActor extends Actor {
type: this.type,
img: this.img,
pack: this.pack,
name: this.getAlias(),
name: this.name,
system: { description: this.system.description }
}
renderTemplate('systems/foundryvtt-reve-de-dragon/templates/post-actor.html', chatData)
@ -734,10 +691,10 @@ export class RdDBaseActor extends Actor {
}
actionImpossible(action) {
ui.notifications.info(`${this.getAlias()} ne peut pas faire cette action: ${action}`)
ui.notifications.info(`${this.name} ne peut pas faire cette action: ${action}`)
}
async roll() { this.actionImpossible("jet de caractéristiques") }
async jetEthylisme() { this.actionImpossible("jet d'éthylisme") }
async rollAppelChance() { this.actionImpossible("appel à la chance") }
async jetDeMoral() { this.actionImpossible("jet de moral") }

View File

@ -73,7 +73,7 @@ export class RdDCommerceSheet extends RdDBaseActorSheet {
}
const disponible = this.actor.getQuantiteDisponible(item)
if (disponible == 0) {
ui.notifications.warn(`${this.getAlias()} n'a plus de ${item.name} en vente`);
ui.notifications.warn(`${this.name} n'a plus de ${item.name} en vente`);
return;
}

View File

@ -25,6 +25,9 @@ export class RdDCommerce extends RdDBaseActor {
}
await super.depenserSols(cout)
}
async consommerNourritureboisson(itemId, choix, userId) {
// ne pas consommer pour un commerce
}
async decrementerQuantiteItem(item, quantite) {
if (this.system.illimite) {

View File

@ -1,4 +1,6 @@
import { ENTITE_INCARNE } from "../constants.js";
import { ITEM_TYPES } from "../item.js";
import { STATUSES } from "../settings/status-effects.js";
import { RdDBaseActorSang } from "./base-actor-sang.js";
export class RdDCreature extends RdDBaseActorSang {
@ -7,7 +9,6 @@ export class RdDCreature extends RdDBaseActorSang {
return "systems/foundryvtt-reve-de-dragon/icons/creatures/bramart.svg";
}
getEnduranceMax() { return Math.max(1, this.getVieMax() + this.getConstitution()) }
isCreature() { return true }
canReceive(item) {

View File

@ -1,7 +1,6 @@
import { RdDBaseActorReveSheet } from "./base-actor-reve-sheet.js";
import { RdDSheetUtility } from "../rdd-sheet-utility.js";
import { RdDUtility } from "../rdd-utility.js";
import { DialogSelect } from "../dialog-select.js";
export class RdDActorEntiteSheet extends RdDBaseActorReveSheet {
@ -15,8 +14,6 @@ export class RdDActorEntiteSheet extends RdDBaseActorReveSheet {
async getData() {
let formData = await super.getData();
formData.niveau = this.actor.getNiveau()
delete formData.system.carac.niveau
formData.resonances = this.actor.system.sante.resonnance.actors.map(actorId => game.actors.get(actorId))
.map(actor => { return { id: actor.id, name: actor.name, img: actor.img } })
return formData
@ -35,30 +32,26 @@ export class RdDActorEntiteSheet extends RdDBaseActorReveSheet {
let compName = event.currentTarget.attributes.compname.value;
this.actor.updateCreatureCompetence(compName, "carac_value", parseInt(event.target.value));
});
this.html.find('.creature-niveau').change(async event => {
let compName = event.currentTarget.attributes.compname.value;
this.actor.updateCreatureCompetence(compName, "niveau", parseInt(event.target.value));
});
this.html.find('.creature-dommages').change(async event => {
let compName = event.currentTarget.attributes.compname.value;
this.actor.updateCreatureCompetence(compName, "dommages", parseInt(event.target.value));
})
this.html.find('.resonance-add').click(async event =>
DialogSelect.select({
label: "Choisir un acteur à accorder",
list: game.actors.filter(it => it.isPersonnage() && it.prototypeToken.actorLink)
},
it => this.resonanceAdd(it.id))
)
});
this.html.find('.resonance-delete').click(async event => {
const li = RdDSheetUtility.getEventElement(event);
const actorId = li.data("actor-id");
if (actorId) {
const actorResonance = game.actors.get(actorId);
RdDUtility.confirmSubActeurDelete(this, actorResonance, li, () => {
this.resonanceDelete(actorId);
console.log('Delete : ', actorId);
this.deleteSubActeur(actorId);
RdDUtility.slideOnDelete(this, li);
})
});
}
})
});
}
async _onDropActor(event, dragData) {
@ -67,13 +60,7 @@ export class RdDActorEntiteSheet extends RdDBaseActorReveSheet {
super._onDropActor(event, dragData)
}
async resonanceAdd(actorId) {
let newResonances = [...this.actor.system.sante.resonnance.actors, actorId]
await this.actor.update({ 'system.sante.resonnance.actors': newResonances });
}
async resonanceDelete(actorId) {
console.log('Delete : ', actorId);
async deleteSubActeur(actorId) {
let newResonances = this.actor.system.sante.resonnance.actors.filter(id => id != actorId);
await this.actor.update({ 'system.sante.resonnance.actors': newResonances }, { renderSheet: false });
}

View File

@ -1,7 +1,6 @@
import { ENTITE_INCARNE, ENTITE_NONINCARNE } from "../constants.js";
import { ITEM_TYPES } from "../item.js";
import { Misc } from "../misc.js";
import { RdDCarac } from "../rdd-carac.js";
import { RdDEncaisser } from "../rdd-roll-encaisser.js";
import { STATUSES } from "../settings/status-effects.js";
import { RdDBaseActorReve } from "./base-actor-reve.js";
@ -19,27 +18,15 @@ export class RdDEntite extends RdDBaseActorReve {
isEntite(typeentite = []) {
return (typeentite.length == 0 || typeentite.includes(this.system.definition.typeentite));
}
isNonIncarnee() { return this.isEntite([ENTITE_NONINCARNE]) }
getReveActuel() {
return Misc.toInt(this.system.carac.reve?.value)
}
getCarac() {
const carac = super.getCarac()
delete carac.niveau
return carac
}
getNiveau() {
const reve = this.getReve()
return RdDCarac.getCaracDerivee(reve).niveau
}
getForce() { return this.getReve() }
getAgilite() { return this.getReve() }
getChance() { return this.getReve() }
getEnduranceMax() { return Math.max(1, this.getTaille() + this.getReve()) }
getDraconicOuPossession() {
return this.itemTypes[ITEM_TYPES.competencecreature]
@ -76,7 +63,6 @@ export class RdDEntite extends RdDBaseActorReve {
}
return {}
}
async encaisser() {
if (this.isNonIncarnee()) {
return

View File

@ -76,14 +76,13 @@ const MAPPING_BASE = [
{ column: "derobee", rollClass: 'roll-carac', colName: 'Dérobée', getter: (actor, context) => actor.system.carac.derobee.value },
{ column: "vie", getter: (actor, context) => actor.system.sante.vie.max },
{ column: "endurance", getter: (actor, context) => actor.system.sante.endurance.max },
{ column: "plusdom", colName: '+dom', getter: (actor, context) => actor.getBonusDegat() },
{ column: "plusdom", colName: '+dom', getter: (actor, context) => actor.system.attributs.plusdom.value },
{ column: "protectionnaturelle", colName: 'Protection naturelle', getter: (actor, context) => actor.system.attributs.protection.value > 0 ? actor.system.attributs.protection.value : '' },
{ column: "description", getter: (actor, context) => Mapping.getDescription(actor) },
{ column: "armure", getter: (actor, context) => Mapping.getArmure(actor, context) },
{ column: "protectionarmure", colName: 'Protection', getter: (actor, context) => Mapping.getProtectionArmure(actor, context) },
{ column: "malus_armure", getter: (actor, context) => Mapping.getMalusArmure(actor, context) },
{ column: "reve_actuel", rollClass: 'roll-reve-actuel', colName: 'Rêve actuel', getter: (actor, context) => actor.system.reve.reve.value },
{ column: "chance_actuel", rollClass: 'roll-chance-actuelle', colName: 'Chance actuelle', getter: (actor, context) => actor.system.compteurs.chance.value },
{ column: "vie_actuel", rollClass: 'jet-vie', getter: (actor, context) => actor.system.sante.vie.value },
{ column: "endurance_actuel", rollClass: 'jet-endurance', getter: (actor, context) => actor.system.sante.endurance.value },
{ column: "esquive", getter: (actor, context) => Mapping.getEsquive(context) },
@ -141,8 +140,7 @@ export class Mapping {
static prepareArmes(actor) {
const armes = actor.items.filter(it => it.type == ITEM_TYPES.arme)
armes.push(RdDItemArme.corpsACorps(actor));
armes.push(RdDItemArme.empoignade(actor));
RdDItemArme.ajoutCorpsACorps(armes, actor)
return armes.map(arme => [
arme.system.unemain ? Mapping.prepareArme(actor, arme, 'unemain') : undefined,
arme.system.deuxmains ? Mapping.prepareArme(actor, arme, 'deuxmains') : undefined,
@ -170,10 +168,10 @@ export class Mapping {
arme: arme
}
}
static dommagesArme(actor, arme, maniement) {
static dommagesArme(actor, arme, maniement){
const dmgArme = RdDItemArme.dommagesReels(arme, maniement)
const dommages = Misc.toSignedString(dmgArme + RdDBonus.bonusDmg(actor, maniement, dmgArme))
switch (arme.system.mortalite) {
switch(arme.system.mortalite) {
case 'non-mortel': return `(${dommages})`
case 'empoignade': return '-'
}
@ -239,7 +237,7 @@ export class Mapping {
static prepareSorts(actor) {
const codeVoies = Mapping.getCompetencesCategorie(actor, CATEGORIES_DRACONIC)
.map(it => RdDItemSort.getCodeVoie(it.name))
.map(it => RdDItemSort.getVoieCode(it))
return actor.itemTypes[ITEM_TYPES.sort].map(it => Mapping.prepareSort(it, codeVoies))
.sort(Misc.ascending(it => `${it.voie} : ${it.description}`))
@ -247,7 +245,7 @@ export class Mapping {
static prepareSort(sort, voies) {
return {
voie: RdDItemSort.getCode(sort, voies),
voie: RdDItemSort.getCodeDraconic(sort, voies),
description: Mapping.descriptionSort(sort),
bonus: Mapping.bonusCase(sort)
}
@ -256,16 +254,21 @@ export class Mapping {
static descriptionSort(sort) {
const ptSeuil = Array(sort.system.coutseuil).map(it => '*')
const caseTMR = sort.system.caseTMRspeciale.length > 0 ? Mapping.toVar(sort.system.caseTMRspeciale) : Misc.upperFirst(TMRType[sort.system.caseTMR].name)
const coutReve = 'r' + RdDItemSort.addSpaceToNonNumeric(sort.system.ptreve)
const diff = 'R' + RdDItemSort.addSpaceToNonNumeric(sort.system.difficulte)
return `${sort.name}${ptSeuil} (${caseTMR}) ${diff} ${coutReve}`
const ptreve = Mapping.addSpaceToNonNumeric(sort.system.ptreve)
const diff = Mapping.addSpaceToNonNumeric(sort.system.difficulte)
return `${sort.name}${ptSeuil} (${caseTMR}) R${diff} r${ptreve}`
}
static toVar(caseSpeciale) {
return Grammar.toLowerCaseNoAccent(caseSpeciale).startsWith('var') ? 'var' : caseSpeciale
static addSpaceToNonNumeric(value) {
return Number.isNumeric(value) ? value : ' ' + Mapping.toVar(value)
}
static toVar(value) {
return value.replace('variable', 'var')
}
static bonusCase(sort) {
const list = RdDItemSort.stringToBonuscases(sort.system.bonuscase).sort(Misc.descending(it => it.bonus))
const list = RdDItemSort.bonuscaseStringToList(sort.system.bonuscase).sort(Misc.descending(it => it.bonus))
if (list.length > 0) {
const bonus = list[0]
return `+${bonus.bonus}% en ${bonus.case}`
@ -279,7 +282,7 @@ export class Mapping {
const race = ['', 'humain'].includes(Grammar.toLowerCaseNoAccent(actor.system.race)) ? '' : (actor.system.race + ' ')
const heure = actor.system.heure
const hn = `${sexeFeminin} à l'heure ${RdDTimestamp.definition(heure).avecArticle}`
const age = (actor.system.age && actor.system.age >0) ? `${actor.system.age} ans` : undefined
const age = actor.system.age ? `${actor.system.age} ans` : undefined
const taille = actor.system.taille
const poids = actor.system.poids
const cheveux = actor.system.cheveux ? `cheveux ${actor.system.cheveux}` : undefined

View File

@ -19,7 +19,7 @@ const PATHS = [
const RANDOM_VALUES = {
'system.sexe': { 'masculin': 1, 'féminin': 1 },
'system.main': { 'droitier': 51, 'gaucher': 15, 'ambidextre': 6 },
'system.main': { 'droitier': 51, 'gaucher': 15, 'ambidectre': 6 },
'system.cheveux': { 'noirs': 2, 'bruns': 5, 'châtains clair': 5, 'blonds': 4, 'blonds très clair': 1, 'roux carotte': 1, 'roux cuivré': 3 },
'system.yeux': { 'noirs': 2, 'noisettes': 3, 'bruns vert': 4, 'verts': 3, 'bleus clair': 3, 'bleus gris': 2, 'gris': 1, 'mauves': 1, 'indigos': 1 },
}

View File

@ -2,524 +2,6 @@
import "./xregexp-all.js";
import { SystemCompendiums } from "../settings/system-compendiums.js";
import { RdDBaseActorReve } from "../actor/base-actor-reve.js";
import { Grammar } from "../grammar.js";
import { Misc } from "../misc.js";
import { ENTITE_INCARNE, ENTITE_NONINCARNE } from "../constants.js";
import { RdDItemTete } from "../item/tete.js";
import { ITEM_TYPES } from "../item.js";
const WHITESPACES = "\\s+"
const NUMERIC = "[\\+\\-]?\\d+"
const NUMERIC_VALUE = "(?<value>" + NUMERIC + ")"
const XREGEXP_COMP_CREATURE = WHITESPACES + "(?<carac>\\d+)"
+ WHITESPACES + NUMERIC_VALUE
+ "(" + WHITESPACES + "(?<init>\\d+)?\\s+?(?<dommages>[\\+\\-]?\\d+)?" + ")?"
// Skill parser depending on the type of actor
const compParser = {
personnage: "(\\s+\\((?<special>[^\\)]+)\\))?(,\\s*\\p{Letter}+)*(\\s+(?<malus>avec armure))?" + WHITESPACES + NUMERIC_VALUE,
creature: XREGEXP_COMP_CREATURE,
entite: XREGEXP_COMP_CREATURE
}
const MANIEMENTS = {
'de lancer': (weapon) => { return { name: weapon.system.lancer, categorie: 'lancer' } },
'de jet': (weapon) => { return { name: weapon.system.lancer, categorie: 'lancer' } },
'à une main': (weapon) => { return { name: weapon.system.competence, categorie: 'melee' } },
'à deux mains': (weapon) => { return { name: weapon.system.competence.replace("à 1 main", "à 2 mains"), categorie: 'melee' } },
'mêlée': (weapon) => { return { name: weapon.system.competence, categorie: 'melee' } },
}
const XREGEXP_WEAPON_MANIEMENT = "(?<maniement>(" + Misc.join(Object.keys(MANIEMENTS), '|') + "))"
const XREGEXP_SORT_VOIE = "(?<voies>[OHNT](\\/[OHNT])*)"
const XREGEXP_SORT_NAME = "(?<name>[^\\(]+)"
// const XREGEXP_SORT_CASE = "(?<coord>([A-Za-zÀ-ÖØ-öø-ÿ\\s\\-]+|[A-M]\\d{1,2})+)"
const XREGEXP_SORT_CASE = "(?<coord>([A-Za-zÀ-ÖØ-öø-ÿ\\s\\-]+|[A-M]\\d{1,2}))"
const XREGEXP_SORT = "(" + XREGEXP_SORT_VOIE
+ WHITESPACES + XREGEXP_SORT_NAME
+ WHITESPACES + "\\(" + XREGEXP_SORT_CASE + "\\)"
+ WHITESPACES + "R(?<diff>([\\-\\d]+|(\\w|\\s)+))"
+ WHITESPACES + "r(?<reve>(\\d+(\\+)?|\\s\\w+))"
+ "(" + WHITESPACES + "\\+(?<bonus>\\d+)\\s?%" + WHITESPACES + "en" + WHITESPACES + "(?<bonuscase>[A-M]\\d{1,2})" + ")?"
+ ")"
const XREGEXP_SORTRESERVE_CASE = "(?<coord>[A-M]\\d{1,2})";
const XREGEXP_SORT_RESERVE = XREGEXP_SORTRESERVE_CASE
+ WHITESPACES + XREGEXP_SORT_NAME
+ WHITESPACES + "(\\((?<description>[^\\)]+)\\))?"
// Main class for parsing a stat block
export class RdDStatBlockParser {
static openInputDialog() {
let dialog = new Dialog({
title: "Import de stats de PNJ/Créatures",
content: `
<div>
<p>Coller le texte de la stat ici</p>
<textarea id="statBlock" style="width: 100%; height: 200px;"></textarea>
</div>
`,
buttons: {
ok: {
label: "OK",
callback: async (html) => {
let statBlock = html.find("#statBlock")[0].value;
await RdDStatBlockParser.parseStatBlock(statBlock);
dialog.close();
}
},
cancel: {
label: "Cancel"
}
}
});
dialog.render(true);
}
static fixWeirdPDF(statString) {
// Split the statString into lines
let lines = statString.split("\n");
let newLines = [];
let index = 0;
let nextType = "string";
// Loop through each line
for (let i = 0; i < lines.length; i++) {
// remove trailing spaces
lines[i] = lines[i].trim();
// Is it text ?
if (lines[i].match(/^[a-zA-Zéêè\s]+/)) {
if (nextType == "string") {
newLines[index] = lines[i];
nextType = "number";
} else {
console.log("Wrong sequence string detected...", lines[i], nextType);
}
}
// Is it a number ?
if (lines[i].match(/^[\d\s]+/)) {
if (nextType == "number") {
newLines[index] = newLines[index] + lines[i];
nextType = "string";
index++;
} else {
console.log("Wrong sequence number detected...", lines[i], nextType);
}
}
}
}
static getHeureKey(heure) {
for (let h of game.system.rdd.config.heuresRdD) {
if (h.label.toLowerCase() == heure.toLowerCase()) {
return h.value;
}
}
return "vaisseau";
}
static fixCompName(name) {
name = name.replace("Voie d'", "");
name = name.replace("Voie de ", "");
return name
}
static async parseStatBlock(statString) {
//statString = statBlock03;
if (!statString) {
return;
}
// Special function to fix strange/weird copy/paste from PDF readers
// Unused up to now : this.fixWeirdPDF(statString);
// Replace all endline by space in the statString
statString = statString.replace(/\n/g, " ");
// Remove all multiple spaces
statString = statString.replace(/\s{2,}/g, " ");
// Remove all leading and trailing spaces
statString = statString.trim();
// TODO: check for entite
let type = RdDStatBlockParser.parseActorType(statString);
// Now start carac
let actorData = foundry.utils.deepClone(game.model.Actor[type]);
let items = [];
actorData.flags = { hautRevant: false, malusArmure: 0, type }
for (let key in actorData.carac) {
let caracDef = actorData.carac[key];
// Parse the stat string for each caracteristic
let carac = XRegExp.exec(statString, XRegExp(caracDef.label + "\\s+(?<value>\\d+)", 'giu'));
if (carac?.value) {
actorData.carac[key].value = Number(carac.value);
}
}
// If creature we need to setup additionnal fields
switch (type) {
case "creature":
RdDStatBlockParser.parseCreature(statString, actorData)
break
case "entite":
RdDStatBlockParser.parseEntite(statString, actorData)
break
}
if (type == "personnage") {
// Now process armors
await RdDStatBlockParser.parseArmors(statString, actorData, items);
}
// Get skills from compendium
await RdDStatBlockParser.parseCompetences(statString, actorData, items);
if (type == "personnage") {
// Now process weapons
await RdDStatBlockParser.parseWeapons(statString, items);
await RdDStatBlockParser.parseHautReve(statString, actorData, items);
RdDStatBlockParser.parsePersonnage(statString, actorData);
}
const name = RdDStatBlockParser.extractName(type, statString);
actorData.flags = undefined
console.log(actorData);
let newActor = await RdDBaseActorReve.create({ name, type, system: actorData, items });
await newActor.remiseANeuf()
await RdDStatBlockParser.adjustAttacks(newActor)
await RdDStatBlockParser.setValeursActuelles(newActor, statString)
await newActor?.sheet.render(true)
}
static async parseCompetences(statString, actorData, items) {
const competences = await SystemCompendiums.getCompetences(actorData.flags.type);
//console.log("Competences : ", competences);
for (let competence of competences) {
let pushed = actorData.flags.type != "personnage"
let compNameToSearch = RdDStatBlockParser.fixCompName(competence.name)
XRegExp.forEach(statString, XRegExp("\\s" + compNameToSearch + compParser[actorData.flags.type], 'giu'),
function (compMatch, i) {
items.push(RdDStatBlockParser.prepareCompetence(actorData, competence, compMatch))
if (!compMatch.special) {
pushed = true
}
})
if (!pushed) {
// ajout niveau de base
items.push(competence.toObject())
}
}
}
static prepareCompetence(actorData, competence, compMatch) {
const comp = competence.toObject();
if (compMatch.special) {
comp._id = undefined
comp.name = `${comp.name} (${compMatch.special})`
}
comp.system.niveau = Number(compMatch.value);
if (compMatch.malus) {
comp.system.niveau = Number(compMatch.value) - actorData.flags.malusArmure
}
if (comp.system.categorie == 'draconic' && comp.system.niveau > -11) {
actorData.flags.hautRevant = true
}
if (["creature", "entite"].includes(actorData.flags.type)) {
comp.system.carac_value = Number(compMatch.carac);
if (compMatch.dommages != undefined) {
comp.system.dommages = Number(compMatch.dommages)
comp.system.iscombat = true
}
}
return comp
}
static async parseArmors(statString, actorData, items) {
const armors = await SystemCompendiums.getWorldOrCompendiumItems("armure", "equipement");
for (let armor of armors) {
let matchArmor = XRegExp.exec(statString, XRegExp(armor.name, 'giu'));
if (matchArmor) {
armor = armor.toObject()
armor.system.equipe = true
actorData.flags.malusArmure = armor.system.malus
items.push(armor)
break
}
}
}
static async parseWeapons(statString, items) {
const weapons = await SystemCompendiums.getWorldOrCompendiumItems("arme", "equipement");
//console.log("Equipement : ", equipment);
// TODO: les noms d'armes peuvent avoir un suffixe (à une main, lancée) qui détermine la compétence correspondante
// TODO: une arme peut être spécifique ("fourche"), ajouter une compétence dans ces cas là?
for (let weapon of weapons) {
let nomArmeManiement = XRegExp.exec(weapon.name, XRegExp(".*" + XREGEXP_WEAPON_MANIEMENT));
if (nomArmeManiement) {
continue // ignore les objets 'Dague de jet" ou "dague mêlée"
}
let weapMatch = XRegExp.exec(statString, XRegExp(weapon.name
+ "(\\s*" + XREGEXP_WEAPON_MANIEMENT + ")?"
+ "\\s+(?<value>[\\+\\-]?\\d+)", 'giu'));
if (weapMatch) {
weapon = weapon.toObject();
weapon.system.equipe = 'true';
items.push(weapon);
const niveau = Number(weapMatch.value);
// now process the skill
if (weapMatch?.maniement) {
RdDStatBlockParser.setNiveauCompetenceArme(items, MANIEMENTS[weapMatch.maniement](weapon), niveau)
}
else {
RdDStatBlockParser.setNiveauCompetenceArme(items, { name: weapon.system.competence, categorie: 'melee' }, niveau)
RdDStatBlockParser.setNiveauCompetenceArme(items, { name: weapon.system.tir, categorie: 'tir' }, niveau)
RdDStatBlockParser.setNiveauCompetenceArme(items, { name: weapon.system.lancer, categorie: 'lancer' }, niveau)
}
}
}
}
static setNiveauCompetenceArme(items, competence, niveau) {
if (competence != "") {
const item = items.find(i => i.system.categorie == competence.categorie && Grammar.equalsInsensitive(i.name, competence.name))
if (item) {
item.system.niveau = niveau
}
}
}
static async adjustAttacks(newActor) {
if (["creature", "entite"].includes(newActor.type)) {
const bonusDommages = newActor.getBonusDegat()
const ajustementAttaques = newActor.itemTypes[ITEM_TYPES.competencecreature].filter(it => it.system.iscombat)
.map(it => {
return {
_id: it.id,
'system.categorie': 'melee',
'system.dommages': it.system.dommages - bonusDommages
}
})
await newActor.updateEmbeddedDocuments('Item', ajustementAttaques)
}
}
static async setValeursActuelles(newActor, statString) {
const updates = {
}
const endurance = XRegExp.exec(statString, XRegExp("endurance\\s+(?<value>\\d+)\\s+(\\(actuelle\\s*:\\s+(?<actuelle>\\d+)\\))?", 'giu'));
if (endurance?.value) {
if (newActor.getEnduranceMax() != endurance.value) {
ui.notifications.warn(`Vérifier le calcul de l'endurance, calcul: ${newActor.getEnduranceMax()} / import: ${endurance.value}`)
}
}
if (endurance?.actuelle) {
updates['system.sante.endurance.value'] = Number(endurance?.actuelle)
}
const vie = XRegExp.exec(statString, XRegExp("vie\\s+(?<value>\\d+)\\s+(\\(actuelle\\s*:\\s+(?<actuelle>\\d+)\\))?", 'giu'));
if (vie?.value) {
if (newActor.getVieMax() != vie.value) {
ui.notifications.warn(`Vérifier le calcul de la vie, calcul: ${newActor.getVieMax()} / import: ${vie.value}`)
}
}
if (vie?.actuelle) {
updates['system.sante.vie.value'] = Number(vie?.actuelle)
}
await newActor.update(updates)
}
static async parseHautReve(statString, actorData, items) {
// Attemp to detect spell
let sorts = await SystemCompendiums.getWorldOrCompendiumItems("sort", "sorts-oniros");
sorts = sorts.concat(await SystemCompendiums.getWorldOrCompendiumItems("sort", "sorts-hypnos"));
sorts = sorts.concat(await SystemCompendiums.getWorldOrCompendiumItems("sort", "sorts-narcos"));
sorts = sorts.concat(await SystemCompendiums.getWorldOrCompendiumItems("sort", "sorts-thanatos"));
XRegExp.forEach(statString, XRegExp(XREGEXP_SORT, 'gu' /* keep case sensitive to match the spell draconic skill */),
function (matchSort, i) {
actorData.flags.hautRevant = true
const sortName = Grammar.toLowerCaseNoAccent(matchSort.name).trim().replace("", "'");
let sort = sorts.find(s => Grammar.toLowerCaseNoAccent(s.name) == sortName)
if (sort) {
sort = sort.toObject();
if (matchSort.bonus && matchSort.bonuscase) {
sort.system.bonuscase = `${matchSort.bonuscase}:${matchSort.bonus}`;
}
items.push(sort);
}
else {
ui.notifications.warn(`Impossible de trouver le sort ${matchSort.name} / ${sortName}`)
}
})
const sortsReserve = XRegExp.exec(statString, XRegExp('En réserve\\s+(?<reserve>.*)', 'gu' /* keep case sensitive to match the spell draconic skill */))
if (sortsReserve?.reserve) {
actorData.flags.hautRevant = true
XRegExp.forEach(sortsReserve.reserve, XRegExp(XREGEXP_SORT_RESERVE, 'giu'),
function (matchSortReserve, i) {
const name = Grammar.toLowerCaseNoAccent(matchSortReserve.name).trim().replace("", "'");
const sort = sorts.find(s => Grammar.toLowerCaseNoAccent(s.name) == name)
if (sort) {
if (!items.find(it => it._id == sort.id)) {
const nouveauSort = sort.toObject()
nouveauSort.system.bonuscase = `${matchSortReserve.coord}:1`;
items.push(sort.toObject())
}
items.push({
name: sort.name,
type: 'sortreserve',
img: sort.img,
system: {
sortid: sort.id,
draconic: sort.system.draconic,
coord: matchSortReserve.coord,
ptreve: Number(sort.system.ptreve.match(/\d+/)),
},
description: matchSortReserve.description
})
}
else {
ui.notifications.warn(`Impossible de mettre ${matchSortReserve.name} en réserve en ${matchSortReserve.coord}`)
}
})
}
if (actorData.flags.hautRevant) {
const donHR = await RdDItemTete.teteDonDeHautReve();
if (donHR) {
items.push(donHR.toObject());
}
const demiReve = XRegExp.exec(statString, XRegExp("Demi-rêve\\s+(?<value>[A-M]\\d{1,2})", 'giu'))
actorData.reve.tmrpos.coord = demiReve?.value ?? 'A1'
}
}
static parsePersonnage(statString, actorData) {
actorData.reve.seuil.value = actorData.carac.reve.value
actorData.compteurs.chance.value = actorData.carac.chance.value
const reveActuel = XRegExp.exec(statString, XRegExp("Rêve actuel\\s+(?<value>\\d+)", 'giu'))
actorData.reve.reve.value = reveActuel?.value ? Number(reveActuel.value) : actorData.reve.seuil.value
const feminin = XRegExp.exec(statString, XRegExp("né(?<value>e?) à", 'giu'));
actorData.sexe = (feminin?.value == 'e') ? 'féminin' : 'masculin';
// Get hour name : heure du XXXXX
const heure = XRegExp.exec(statString, XRegExp("heure (du|de la|des|de l\')\\s*(?<value>[A-Za-zÀ-ÖØ-öø-ÿ\\s]+),", 'giu'));
actorData.heure = this.getHeureKey(heure?.value || "Vaisseau");
// Get age
const age = XRegExp.exec(statString, XRegExp("(?<value>\\d+) ans", 'giu'));
if (age?.value) {
actorData.age = Number(age.value);
}
// Get height
const taille = XRegExp.exec(statString, XRegExp("(?<value>\\d+m\\d+)", 'giu'));
if (taille?.value) {
actorData.taille = taille.value;
}
// Get weight
const poids = XRegExp.exec(statString, XRegExp(",\\s+(?<value>\\d+)\\s+kg", 'giu'));
if (poids?.value) {
actorData.poids = poids.value + ' kg';
}
// Get cheveux
const cheveux = XRegExp.exec(statString, XRegExp("kg,\\s+(?<value>[A-Za-zÀ-ÖØ-öø-ÿ\\s\\-]+),\\s+yeux", 'giu'));
if (cheveux?.value) {
actorData.cheveux = cheveux.value;
}
// Get yeux
const yeux = XRegExp.exec(statString, XRegExp("yeux\\s+(?<value>[A-Za-zÀ-ÖØ-öø-ÿ\\s\\-]+), Beau", 'giu'));
if (yeux?.value) {
actorData.yeux = yeux.value;
}
// Get beauty
const beaute = XRegExp.exec(statString, XRegExp("beauté\\s+(?<value>\\d+)", 'giu'));
if (beaute?.value) {
actorData.beaute = Number(beaute.value);
}
}
static parseCreature(statString, actorData) {
let protection = XRegExp.exec(statString, XRegExp("protection(\\s+naturelle)?\\s+(?<value>[\\-]?\\d+)", 'giu'));
if (protection?.value) {
actorData.attributs.protection.value = Number(protection.value);
}
let vitesse = XRegExp.exec(statString, XRegExp("vitesse\\s+(?<value>[\\d\\/]+)", 'giu'));
if (vitesse?.value) {
actorData.attributs.vitesse.value = vitesse.value;
}
}
static parseEntite(statString, actorData) {
actorData.definition.categorieentite = 'cauchemar'
actorData.definition.typeentite = ENTITE_NONINCARNE
let endurance = XRegExp.exec(statString, XRegExp("endurance\\s+(?<value>\\d+)", 'giu'));
if (endurance?.value) {
actorData.sante.endurance.value = Number(endurance.value);
actorData.sante.endurance.max = Number(endurance.value);
actorData.definition.typeentite = ENTITE_INCARNE
}
let vitesse = XRegExp.exec(statString, XRegExp("vitesse\\s+(?<value>[\\d\\/]+)", 'giu'));
if (vitesse?.value) {
actorData.attributs.vitesse.value = vitesse.value;
}
}
static parseActorType(statString) {
let force = XRegExp.exec(statString, XRegExp("Force\\s+(?<value>[\\+\\-]?\\d+)", 'giu'))
let vue = XRegExp.exec(statString, XRegExp("Vue\\s+(?<value>[\\+\\-]?\\d+)", 'giu'))
let perception = XRegExp.exec(statString, XRegExp("perception\\s+(?<value>\\d+)", 'giu'))
if (!force) {
return "entite"
}
if (!vue || perception) {
return "creature"
}
return "personnage"
}
static extractName(actorType, statString) {
if (actorType == "personnage") {
// Check if ',né le' is present
let namePersonnage = "Importé"
if (statString.includes(", né")) {
// Name is all string before first comma ','
namePersonnage = XRegExp.exec(statString, XRegExp("(?<value>[\\p{Letter}\'\\-\\s\\d]+),", 'giu'));
} else {
namePersonnage = XRegExp.exec(statString, XRegExp("(?<value>[\\p{Letter}\'\\-\\s\\d]+)\\s+TAILLE", 'giu'));
}
if (namePersonnage?.value) {
return Misc.upperFirst(namePersonnage?.value.toLowerCase());
}
}
const name = XRegExp.exec(statString, XRegExp("(?<value>.+)\\s+taille", 'giu'));
if (actorType == "entite") {
if (!(name?.value)) {
const nameEntiteReve = XRegExp.exec(statString, XRegExp("(?<value>.+)\\s+rêve", 'giu'));
return Misc.upperFirst(nameEntiteReve?.value || "Importé");
}
}
return Misc.upperFirst(name?.value || "Importé");
}
static warning(message) {
ui.notifications.warn(message);
}
}
/************************************************************************************/
// Some internal test strings
@ -594,7 +76,7 @@ Corps à corps
(0)
Esquive
+8
Escalade, Saut +4 / Commerce +3 / Équitation
Escalade +4 / Saut +5 / Commerce +3 / Équitation
+6 / Chirurgie 0 / Survie en extérieur +4 / Survie fo-
rêt +6 / Acrobatie -2 / Métallurgie +2 / Natation +3 /
Légendes -1 / Écriture -4
@ -712,4 +194,240 @@ Discrétion
Vigilance
13
+3
`
`
// Skill parser depending on the type of actor
const compParser = { personnage: "\\s+(?<value>[\\+\\-]?\\d+)", creature: "\\s+(?<carac>\\d+)\\s+(?<value>[\\+\\-]?\\d+)\\s?(?<init>\\d+)?\\s+?(?<dommages>\\+\\d+)?" };
// Main class for parsing a stat block
export class RdDStatBlockParser {
static openInputDialog() {
let dialog = new Dialog({
title: "Import de stats de PNJ/Créatures",
content: `
<div>
<p>Coller le texte de la stat ici</p>
<textarea id="statBlock" style="width: 100%; height: 200px;"></textarea>
</div>
`,
buttons: {
ok: {
label: "OK",
callback: async (html) => {
let statBlock = html.find("#statBlock")[0].value;
await RdDStatBlockParser.parseStatBlock(statBlock);
dialog.close();
}
},
cancel: {
label: "Cancel"
}
}
});
dialog.render(true);
}
static fixWeirdPDF(statString) {
// Split the statString into lines
let lines = statString.split("\n");
let newLines = [];
let index = 0;
let nextType = "string";
// Loop through each line
for (let i = 0; i < lines.length; i++) {
// remove trailing spaces
lines[i] = lines[i].trim();
// Is it text ?
if (lines[i].match(/^[a-zA-Zéêè\s]+/)) {
if ( nextType == "string" ) {
newLines[index] = lines[i];
nextType = "number";
} else {
console.log("Wrong sequence string detected...", lines[i], nextType);
}
}
// Is it a number ?
if (lines[i].match(/^[\d\s]+/)) {
if ( nextType == "number" ) {
newLines[index] = newLines[index] + lines[i];
nextType = "string";
index++;
} else {
console.log("Wrong sequence number detected...", lines[i], nextType);
}
}
}
}
static async parseStatBlock(statString, type = "npc") {
//statString = statBlock03;
if (!statString) {
return;
}
// Special function to fix strange/weird copy/paste from PDF readers
// Unused up to now : this.fixWeirdPDF(statString);
// Replace all endline by space in the statString
statString = statString.replace(/\n/g, " ");
// Remove all multiple spaces
statString = statString.replace(/\s{2,}/g, " ");
// Remove all leading and trailing spaces
statString = statString.trim();
let actorType = "personnage";
let perception = XRegExp.exec(statString.toLowerCase(), XRegExp("perception\\s+(?<value>\\d+)", 'gi'));
if (perception?.value ) {
actorType = "creature";
}
// Now start carac
let actorData = foundry.utils.deepClone(game.model.Actor[actorType]);
for (let key in game.model.Actor.personnage.carac) {
let caracDef = game.model.Actor.personnage.carac[key];
// Parse the stat string for each caracteristic
let carac = XRegExp.exec(statString.toLowerCase(), XRegExp(caracDef.label.toLowerCase()+"\\s+(?<value>\\d+)", 'gi'));
if (carac?.value) {
actorData.carac[key].value = Number(carac.value);
}
}
// If creature we need to setup additionnal fields
if (actorType == "creature") {
let plusDom = XRegExp.exec(statString.toLowerCase(), XRegExp("\\+dom\\s+(?<value>\\+\\d+)", 'gi'));
if (plusDom?.values) {
actorData.attributs.plusdom.value = Number(plusDom.value);
}
let protection = XRegExp.exec(statString.toLowerCase(), XRegExp("protection\\s+(?<value>\\d+)", 'gi'));
if (protection?.value) {
actorData.attributs.protection.value = Number(protection.value);
}
let endurance = XRegExp.exec(statString.toLowerCase(), XRegExp("endurance\\s+(?<value>\\d+)", 'gi'));
if (endurance?.value) {
actorData.sante.endurance.value = Number(endurance.value);
actorData.sante.endurance.max = Number(endurance.value);
}
let vie = XRegExp.exec(statString.toLowerCase(), XRegExp("vie\\s+(?<value>\\d+)", 'gi'));
if (vie.value) {
actorData.sante.vie.value = Number(vie.value);
actorData.sante.vie.max = Number(vie.value);
}
let vitesse = XRegExp.exec(statString.toLowerCase(), XRegExp("vitesse\\s+(?<value>[\\d\\/]+)", 'gi'));
if (vitesse?.value) {
actorData.attributs.vitesse.value = vitesse.value;
}
}
let items = [];
// Get skills from compendium
const competences = await SystemCompendiums.getCompetences(actorType);
//console.log("Competences : ", competences);
let allComp = competences.map(i => i.toObject())
for (let comp of allComp) {
let skill = XRegExp.exec(statString.toLowerCase(), XRegExp(comp.name.toLowerCase()+compParser[actorType], 'gi'));
if (skill) {
comp.system.niveau = Number(skill.value);
if (actorType == "creature") {
comp.system.carac_value = Number(skill.carac);
if (skill.init) {
comp.system.dommages = Number(skill.dommages);
comp.system.iscombat = true;
}
items.push(comp); // Only selective push
}
}
if (actorType == "personnage") {
items.push(comp); // Always push
}
}
// Now process weapons
const weapons = await SystemCompendiums.getWorldOrCompendiumItems("arme", "equipement")
//console.log("Equipement : ", equipment);
for (let w of weapons) {
let weapon = XRegExp.exec(statString.toLowerCase(), XRegExp(w.name.toLowerCase()+"\\s+(?<value>\\+\\d+)", 'gi'));
if (weapon) {
w.system.equipe = true
items.push(w.toObject());
// now process the skill
if ( w.system?.competence != "") {
let wComp = items.find(i => i.name.toLowerCase() == w.system.competence.toLowerCase());
if (wComp) {
wComp.system.niveau = Number(weapon.value);
}
}
if ( w.system?.tir != "") {
let wComp = items.find(i => i.name.toLowerCase() == w.system.tir.toLowerCase());
if (wComp) {
wComp.system.niveau = Number(weapon.value);
}
}
if ( w.system?.lancer != "") {
let wComp = items.find(i => i.name.toLowerCase() == w.system.lancer.toLowerCase());
if (wComp) {
wComp.system.niveau = Number(weapon.value);
}
}
}
}
// Now process armors
const armors = await SystemCompendiums.getWorldOrCompendiumItems("armure", "equipement")
for (let a of armors) {
let armor = XRegExp.exec(statString.toLowerCase(), XRegExp(a.name.toLowerCase(), 'gi'));
if (armor) {
a.system.equipe = true
items.push(a.toObject());
}
}
// Get hour name : heure du XXXXX
let heure = XRegExp.exec(statString.toLowerCase(), XRegExp("heure du\\s+(?<value>\\w+)", 'gi'));
if (heure?.value) {
actorData.heure = heure.value;
}
// Get age
let age = XRegExp.exec(statString.toLowerCase(), XRegExp("(?<value>\\d+) ans", 'gi'));
if (age?.value) {
actorData.age = Number(age.value);
}
// Get height
let taille = XRegExp.exec(statString.toLowerCase(), XRegExp("(?<value>\\d+)m\\d+", 'gi'));
if (taille?.value) {
actorData.taille = taille.value;
}
// Get weight
let poids = XRegExp.exec(statString.toLowerCase(), XRegExp("(?<value>\\d+) kg", 'gi'));
if (poids?.value) {
actorData.poids = poids.value;
}
// Get beauty
let beaute = XRegExp.exec(statString.toLowerCase(), XRegExp("beauté\\s+(?<value>\\d+)", 'gi'));
if (beaute?.value) {
actorData.beaute = Number(beaute.value);
}
// Name is all string before ', né'
let name
if (actorType == "personnage") {
name = XRegExp.exec(statString.toLowerCase(), XRegExp("(?<value>[\\w\\s\\d]+),", 'gi'));
if (!name?.value) {
name = XRegExp.exec(statString.toLowerCase(), XRegExp("(?<value>.+)\\s+taille", 'gi'));
}
name = name?.value || "Importé";
}
if (actorType == "creature") {
name = XRegExp.exec(statString.toLowerCase(), XRegExp("(?<value>.+)\\s+taille", 'gi'));
name = name?.value || "Importé";
}
let newActor = RdDBaseActorReve.create({name: name || "Importé", type:actorType, system: actorData, items: items});
// DUmp....
console.log(actorData);
}
}

View File

@ -51,7 +51,7 @@ export class DialogCreateSigneDraconique extends Dialog {
whisper: ChatUtility.getOwners(actor),
content: await renderTemplate("systems/foundryvtt-reve-de-dragon/templates/chat-signe-draconique-actor.html", {
signe: signe,
alias: actor.getAlias()
alias: actor.name
})
});
}

View File

@ -2,11 +2,11 @@
export class DialogSelect extends Dialog {
static extractIdNameImg(it) { return { id: it.id, name: it.name, img: it.img } }
static async select(selectionData, onSelectChoice) {
const html = await renderTemplate("systems/foundryvtt-reve-de-dragon/templates/dialog-select.html", selectionData)
static async select(selectData, onSelectChoice) {
const html = await renderTemplate("systems/foundryvtt-reve-de-dragon/templates/dialog-select.html", selectData)
const dialogData = {
title: selectionData.title ?? selectionData.label,
title: selectData.title ?? selectData.label,
content: html,
buttons: {}
}
@ -18,7 +18,7 @@ export class DialogSelect extends Dialog {
'max-height': 600,
'z-index': 99999
}
new DialogSelect(dialogData, dialogOptions, selectionData, onSelectChoice).render(true)
new DialogSelect(dialogData, dialogOptions, selectData, onSelectChoice).render(true)
}
constructor(dialogData, dialogOptions, selectionData, onSelectChoice) {
@ -36,7 +36,7 @@ export class DialogSelect extends Dialog {
}
choiceSelected(selectedId) {
const selected = this.selectionData.list.find(it => it.id == selectedId)
const selected = this.selectionData.find(it => it.id == selectedId)
this.close()
if (selected) {
this.onSelectChoice(selected)

View File

@ -24,7 +24,7 @@ export class Grammar {
}
static includesLowerCaseNoAccent(value, content) {
return Grammar.toLowerCaseNoAccent(value)?.includes(Grammar.toLowerCaseNoAccent(content));
return Grammar.toLowerCaseNoAccent(value).includes(Grammar.toLowerCaseNoAccent(content));
}
/* -------------------------------------------- */

View File

@ -1,12 +1,10 @@
import { Grammar } from "./grammar.js";
import { RdDItemCompetenceCreature } from "./item-competencecreature.js"
import { ITEM_TYPES } from "./item.js";
import { BASE_CORPS_A_CORPS } from "./item/base-items.js";
import { RdDCombatManager } from "./rdd-combat.js";
const nomCategorieParade = {
"sans-armes": "Sans arme",
"armes-naturelles": "Armes naturelles",
"armes-naturelles": "Sans arme",
"hast": "Armes d'hast",
"batons": "Bâtons",
"boucliers": "Boucliers",
@ -32,7 +30,7 @@ export class RdDItemArme extends Item {
case ITEM_TYPES.competencecreature:
return RdDItemCompetenceCreature.armeCreature(arme);
}
return RdDItemArme.corpsACorps();
return RdDItemArme.mainsNues();
}
static getCompetenceArme(arme, maniement) {
@ -58,8 +56,8 @@ export class RdDItemArme extends Item {
}
static niveauCompetenceArme(arme, competences) {
const compArme = competences.find(it => Grammar.equalsInsensitive(it.name, arme.system.competence))
return compArme?.system.niveau ?? -8
const compArme = competences.find(it => it.name == arme.system.competence);
return compArme?.system.niveau ?? -8;
}
/* -------------------------------------------- */
@ -236,14 +234,19 @@ export class RdDItemArme extends Item {
return false
}
static ajoutCorpsACorps(armes, actor) {
armes.push(RdDItemArme.mainsNues(actor));
armes.push(RdDItemArme.empoignade(actor));
}
static corpsACorps(actor) {
let competence = actor?.getCompetenceCorpsACorps() ?? BASE_CORPS_A_CORPS
let competence = actor?.getCompetenceCorpsACorps() ?? { system: { niveau: -6 } };
let melee = actor ? actor.system.carac['melee'].value : 0
return {
_id: competence.id,
_id: competence?.id,
name: 'Corps à corps',
type: ITEM_TYPES.arme,
img: competence.img,
img: 'systems/foundryvtt-reve-de-dragon/icons/competence_corps_a_corps.webp',
system: {
initiative: RdDCombatManager.calculInitiative(competence.system.niveau, melee),
equipe: true,
@ -254,8 +257,6 @@ export class RdDItemArme extends Item {
mortalite: 'non-mortel',
competence: 'Corps à corps',
resistance: 1,
baseInit: 4,
cac: 'pugilat',
deuxmains: true,
categorie_parade: 'sans-armes'
}
@ -265,6 +266,8 @@ export class RdDItemArme extends Item {
static mainsNues(actor) {
const mainsNues = RdDItemArme.corpsACorps(actor)
mainsNues.name = 'Mains nues'
mainsNues.system.cac = 'pugilat'
mainsNues.system.baseInit = 4
return mainsNues;
}

View File

@ -1,6 +1,5 @@
import { Grammar } from "./grammar.js";
import { RdDItem } from "./item.js";
import { SANS_COMPETENCE } from "./item/base-items.js";
import { Misc } from "./misc.js";
const competenceTroncs = [["Esquive", "Dague", "Corps à corps"],
@ -138,7 +137,7 @@ export class RdDItemCompetence extends Item {
/* -------------------------------------------- */
static computeEconomieXPTronc(competences) {
return competenceTroncs.map(
list => list.map(name => RdDItemCompetence.findCompetence(competences, name, { onMessage: message => { } }))
list => list.map(name => RdDItemCompetence.findCompetence(competences, name))
// calcul du coût xp jusqu'au niveau 0 maximum
.map(it => RdDItemCompetence.computeDeltaXP(it?.system.base ?? -11, Math.min(it?.system.niveau ?? -11, 0)))
.sort(Misc.ascending())
@ -204,12 +203,26 @@ export class RdDItemCompetence extends Item {
}
/* -------------------------------------------- */
static findCompetences(list, name, options = {}) {
options = foundry.utils.mergeObject(options, { preFilter: it => it.isCompetence(), description: 'compétence' }, { overwrite: false, inplace: false });
return Misc.findAllLike(name, list, options);
static findCompetences(list, name) {
return Misc.findAllLike(name, list, { filter: it => it.isCompetence(), description: 'compétence' });
}
static sansCompetence() { return SANS_COMPETENCE }
static sansCompetence() {
return {
name: "Sans compétence",
type: "competence",
img: "systems/foundryvtt-reve-de-dragon/icons/templates/icone_parchement_vierge.webp",
system: {
niveau: 0,
default_diffLibre: 0,
base: 0,
categorie: "Aucune",
description: "",
descriptionmj: "",
defaut_carac: "",
}
};
}
static findFirstItem(list, idOrName, options) {
return list.find(it => it.id == idOrName && options.preFilter(it))
@ -259,9 +272,8 @@ export class RdDItemCompetence extends Item {
/* -------------------------------------------- */
static triVisible(competences) {
return competences
? competences.filter(it => !it.system.isHidden).sort((a, b) => RdDItemCompetence.compare(a, b))
: []
return competences.filter(it => !it.system.isHidden)
.sort((a, b) => RdDItemCompetence.compare(a, b))
}
static $positionTri(comp) {

View File

@ -49,7 +49,17 @@ export class RdDItemCompetenceCreature extends Item {
/* -------------------------------------------- */
static isAttaque(item) {
return RdDItemCompetenceCreature.getCategorieAttaque(item) != undefined
if (item.type == ITEM_TYPES.competencecreature) {
switch (item.system.categorie) {
case "melee":
case "tir":
case "lancer":
case "naturelle":
case "possession":
return true
}
}
return false
}
static getCategorieAttaque(item) {
@ -60,6 +70,7 @@ export class RdDItemCompetenceCreature extends Item {
case "lancer":
case "naturelle":
case "possession":
case "parade":
return item.system.categorie
}
}
@ -81,7 +92,12 @@ export class RdDItemCompetenceCreature extends Item {
static isParade(item) {
if (item.type == ITEM_TYPES.competencecreature) {
return item.system.categorie_parade || item.system.isparade
switch (item.system.categorie) {
case "melee":
case "naturelle":
case "parade":
return true
}
}
return false
}

View File

@ -13,7 +13,6 @@ import { Misc } from "./misc.js";
import { RdDTimestamp } from "./time/rdd-timestamp.js";
import { RdDItemCompetenceCreature } from "./item-competencecreature.js";
import { ITEM_TYPES, RdDItem } from "./item.js";
import { FLEUVE_COORD, TMRUtility } from "./tmr-utility.js";
/**
* Extend the basic ItemSheet for RdD specific items
@ -101,59 +100,55 @@ export class RdDItemSheet extends ItemSheet {
descriptionmj: await TextEditor.enrichHTML(this.item.system.descriptionmj, { async: true }),
isComestible: this.item.getUtilisationCuisine(),
options: RdDSheetUtility.mergeDocumentRights(this.options, this.item, this.isEditable),
competences: await SystemCompendiums.getCompetences('personnage'),
categories: RdDItem.getCategories(this.item.type),
}
if (this.item.type == ITEM_TYPES.competencecreature) {
formData.isparade = RdDItemCompetenceCreature.isParade(this.item)
formData.isdommages = RdDItemCompetenceCreature.isDommages(this.item)
}
if (this.item.type == ITEM_TYPES.tache ||
this.item.type == ITEM_TYPES.livre ||
this.item.type == ITEM_TYPES.meditation ||
this.item.type == ITEM_TYPES.oeuvre) {
const competences = await SystemCompendiums.getCompetences('personnage');
formData.categories = RdDItem.getCategories(this.item.type)
if (this.item.type == 'tache' || this.item.type == 'livre' || this.item.type == 'meditation' || this.item.type == 'oeuvre') {
formData.caracList = foundry.utils.duplicate(game.model.Actor.personnage.carac)
formData.caracList["reve-actuel"] = foundry.utils.duplicate(game.model.Actor.personnage.reve.reve)
formData.competences = competences;
}
if (this.item.type == ITEM_TYPES.arme) {
formData.competences = formData.competences.filter(it => it.isCompetenceArme())
if (this.item.type == 'arme') {
formData.competences = competences.filter(it => it.isCompetenceArme())
}
if (this.item.type == ITEM_TYPES.recettecuisine) {
if (['sort', 'sortreserve'].includes(this.item.type)) {
formData.competences = competences.filter(it => RdDItemCompetence.isDraconic(it));
}
if (this.item.type == 'recettecuisine') {
formData.ingredients = await TextEditor.enrichHTML(this.object.system.ingredients, { async: true })
}
if (this.item.type == ITEM_TYPES.extraitpoetique) {
if (this.item.type == 'extraitpoetique') {
formData.extrait = await TextEditor.enrichHTML(this.object.system.extrait, { async: true })
formData.texte = await TextEditor.enrichHTML(this.object.system.texte, { async: true })
}
if (this.item.type == ITEM_TYPES.recettealchimique) {
RdDAlchimie.processManipulation(this.item, this.actor?.id);
if (this.item.type == 'recettealchimique') {
RdDAlchimie.processManipulation(this.item, this.actor && this.actor.id);
formData.manipulation_update = await TextEditor.enrichHTML(this.object.system.manipulation_update, { async: true })
formData.utilisation = await TextEditor.enrichHTML(this.object.system.utilisation, { async: true })
formData.enchantement = await TextEditor.enrichHTML(this.object.system.enchantement, { async: true })
formData.sureffet = await TextEditor.enrichHTML(this.object.system.sureffet, { async: true })
}
if (this.item.type == ITEM_TYPES.gemme) {
if (this.item.type == 'gemme') {
formData.gemmeTypeList = RdDGemme.getGemmeTypeOptionList();
RdDGemme.calculDataDerivees(this.item)
RdDGemme.calculDataDerivees(this.item);
}
if (this.item.type == ITEM_TYPES.potion) {
RdDHerbes.calculFormData(formData, this.item)
if (this.item.type == 'potion') {
await RdDHerbes.addPotionFormData(formData);
}
if (this.item.type == ITEM_TYPES.herbe) {
if (formData.options.isOwned && ['Soin', 'Repos'].includes(formData.system.categorie)) {
formData.isIngredientPotionBase = true;
}
if (formData.options.isOwned && this.item.type == 'herbe' && (formData.system.categorie == 'Soin' || formData.system.categorie == 'Repos')) {
formData.isIngredientPotionBase = true;
}
if (this.item.type == ITEM_TYPES.sortreserve) {
if (this.item.type == 'sortreserve') {
const sortId = this.item.system.sortid;
formData.competences = formData.competences.filter(it => RdDItemCompetence.isDraconic(it));
formData.sort = formData.options.isOwned ? this.item.actor.items.get(sortId) : game.items.get(sortId);
}
if (this.item.type == ITEM_TYPES.sort) {
formData.competences = formData.competences.filter(it => RdDItemCompetence.isDraconic(it));
formData.bonusCaseList = RdDItemSort.getBonusCaseList(this.item);
}
formData.bonusCaseList = RdDItemSort.getBonusCaseList(formData, true);
return formData;
}
@ -190,9 +185,6 @@ export class RdDItemSheet extends ItemSheet {
}
}
})
this.html.find('.delete-bonus-case').click((event) => {
this.supprimerBonusCase(event.currentTarget.attributes['data-deleteCoord'].value)
})
this.html.find('.date-enchantement').change((event) => {
const jour = Number(this.html.find('input.date-enchantement[name="enchantement.jour"]').val());
@ -272,66 +264,23 @@ export class RdDItemSheet extends ItemSheet {
}
}
async supprimerBonusCase(deleteCoord){
if (this.item.type == ITEM_TYPES.sort) {
const oldList = RdDItemSort.getBonusCaseList(this.item)
const newList = oldList.filter(it => it.case != deleteCoord);
if (newList.length != oldList.length) {
await this.item.update({
'system.bonuscase': RdDItemSort.bonuscasesToString(newList)
})
}
}
}
/* -------------------------------------------- */
/** @override */
_updateObject(event, formData) {
switch (this.item.type) {
case ITEM_TYPES.sort:
formData['system.bonuscase'] = RdDItemSort.bonuscasesToString(RdDItemSheet._listCaseTmr(
formData.caseTmrCoord,
formData.caseTmrBonus,
formData.caseTmrAdd
))
// Données de bonus de cases ?
formData['system.bonuscase'] = RdDItemSort.buildBonuscaseFromArrays(formData.bonusValue, formData.caseValue)
break
case ITEM_TYPES.competence:
formData['system.niveau'] = formData['system.niveau'] ?? formData['system.base']
break
if (formData['system.niveau'] == undefined) {
formData['system.niveau'] = formData['system.base']
}
}
return this.item.update(formData);
}
/* -------------------------------------------- */
/**
* reconstruit les bonus de cases
* @param {*} caseTmrCoord tableau des coordonées
* @param {*} caseTmrBonus tableau des bonus
* @param {*} caseTmrAdd case à ajouter
* @returns list d'objets {coord, bonus}
*/
static _listCaseTmr(caseTmrCoord, caseTmrBonus, caseTmrAdd) {
const listCaseTmrCoord = caseTmrCoord == undefined ? [] : Array.isArray(caseTmrCoord) ? caseTmrCoord : [caseTmrCoord]
const listCaseTmrBonus = caseTmrBonus == undefined ? [] : Array.isArray(caseTmrBonus) ? caseTmrBonus : [caseTmrBonus]
if (caseTmrAdd != undefined && caseTmrAdd != '' && TMRUtility.verifyTMRCoord(caseTmrAdd) && !listCaseTmrCoord.includes(caseTmrAdd)) {
listCaseTmrCoord.push(TMRUtility.getTMR(caseTmrAdd).coord)
listCaseTmrBonus.push(1)
}
const list = [];
const caseChecked = {};
for (let i = 0; i < listCaseTmrBonus.length && i < listCaseTmrCoord.length; i++) {
const coord = listCaseTmrCoord[i] == FLEUVE_COORD ? FLEUVE_COORD : (listCaseTmrCoord[i]?.toUpperCase() ?? 'A1')
const bonus = listCaseTmrBonus[i] ?? 0
if (TMRUtility.verifyTMRCoord(coord) && bonus >= 0 && !caseChecked[coord]) {
caseChecked[coord] = coord
list.push({ case: coord, bonus: bonus })
}
}
return list
}
/* -------------------------------------------- */
async _onDragStart(event) {
}

View File

@ -2,69 +2,52 @@ import { Grammar } from "./grammar.js";
import { RdDItemCompetence } from "./item-competence.js";
import { ITEM_TYPES } from "./item.js";
import { Misc } from "./misc.js";
import { FLEUVE_COORD, TMRUtility } from "./tmr-utility.js";
import { TMRUtility } from "./tmr-utility.js";
export const VOIES_DRACONIC = [
const VOIES_DRACONIC = [
{ code: 'O', label: "Voie d'Oniros", short: 'Oniros', ordre: 'a' },
{ code: 'H', label: "Voie d'Hypnos", short: 'Hypnos', ordre: 'b' },
{ code: 'N', label: "Voie de Narcos", short: 'Narcos', ordre: 'c' },
{ code: 'T', label: "Voie de Thanatos", short: 'Thanatos', ordre: 'd' },
{ code: 'O/H/N/T', label: "Oniros/Hypnos/Narcos/Thanatos", short: 'O/H/N/T', ordre: 'e' },
{ code: 'O/H/N', label: "Oniros/Hypnos/Narcos", short: "O/H/N", ordre: 'f' }
{ code: 'O/H/N/T', label: "Oniros/Hypnos/Narcos/Thanatos", short: 'Oniros/Hypnos/Narcos/Thanatos', ordre: 'e' },
{ code: 'O/H/N', label: "Oniros/Hypnos/Narcos", short: "Oniros/Hypnos/Narcos", ordre: 'f' }
]
/* -------------------------------------------- */
export class RdDItemSort extends Item {
static preloadHandlebars() {
Handlebars.registerHelper('itemSort-spaceIfText', val => RdDItemSort.addSpaceToNonNumeric(val))
Handlebars.registerHelper('itemSort-codeDraconic', voie => RdDItemSort.getCode(voie))
Handlebars.registerHelper('itemSort-shortDraconic', voie => RdDItemSort.getShortVoie(voie))
}
static addSpaceToNonNumeric(value) {
return Number.isNumeric(value) || ['-', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9'].includes( String(value).charAt[0]) ? value : ' ' + RdDItemSort.toVar(value)
}
static toVar(value) {
return value ? value.replace('variable', 'var') : ''
}
static getDraconicsSort(competencesDraconic, sort) {
// se baser sur la voie du sort?
static getDraconicsSort(draconicList, sort) {
switch (Grammar.toLowerCaseNoAccent(sort.name)) {
case "lecture d'aura":
case "detection d'aura":
return competencesDraconic;
return draconicList;
case "annulation de magie":
return competencesDraconic.filter(it => !RdDItemCompetence.isThanatos(it));
return draconicList.filter(it => !RdDItemCompetence.isThanatos(it));
}
const voies = sort.system.draconic.split('/')
return voies.map(voie => RdDItemCompetence.getVoieDraconic(competencesDraconic, voie))
return [RdDItemCompetence.getVoieDraconic(draconicList, sort.system.draconic)];
}
static getOrdreCode(code) {
return (VOIES_DRACONIC.find(it => it.code == code)?.ordre ?? '?')
}
static getCodeVoie(voie) {
return VOIES_DRACONIC.find(it => [it.code, it.short, it.label].includes(voie))?.code ?? '?'
static getVoieCode(voie) {
return VOIES_DRACONIC.find(it => voie.name.includes(it.short))?.code ?? '?'
}
static getShortVoie(voie) {
return VOIES_DRACONIC.find(it => [it.code, it.short, it.label].includes(voie))?.short ?? voie
}
static getCode(sort, codeVoies = ['O', 'H', 'N', 'T']) {
static getCodeDraconic(sort, voies = ['O', 'H', 'N', 'T']) {
switch (Grammar.toLowerCaseNoAccent(sort.name)) {
case "lecture d'aura":
case "detection d'aura":
return RdDItemSort.$voiesConnues('O/H/N/T', codeVoies)
return RdDItemSort.$voiesConnues('O/H/N/T', voies)
case "annulation de magie":
return RdDItemSort.$voiesConnues('O/H/N', codeVoies)
return RdDItemSort.$voiesConnues('O/H/N', voies)
}
return RdDItemSort.getCodeVoie(sort.system.draconic)
const voie = VOIES_DRACONIC.find(it => it.label.includes(sort.system.draconic))
return voie?.code ?? sort.system.draconic
}
static $voiesConnues(voiesSort, voies) {
const codes = voies.filter(it => voiesSort.includes(it))
.sort(Misc.ascending(it => RdDItemSort.getOrdreCode(it)))
@ -96,60 +79,89 @@ export class RdDItemSort extends Item {
return variable;
}
/* -------------------------------------------- */
static buildBonusCaseList(bonuscase, newCase) {
const list = RdDItemSort.bonuscaseStringToList(bonuscase)
if (newCase) {
list.push({ case: "Nouvelle", bonus: 0 })
}
return list;
}
/**
* Retourne une liste de bonus/case pour un item-sheet
* @param {} item
*/
static getBonusCaseList(item) {
static getBonusCaseList(item, newCase = false) {
// Gestion spéciale case bonus
if (item.type == ITEM_TYPES.sort) {
return RdDItemSort.stringToBonuscases(item.system.bonuscase)
return RdDItemSort.buildBonusCaseList(item.system.bonuscase, newCase);
}
return [];
return undefined;
}
/* -------------------------------------------- */
/** Met à jour les données de formulaire
* si static des bonus de cases sont présents
* */
static buildBonuscaseFromArrays(bonuses, coords) {
if (bonuses) {
const list = [];
const caseCheck = {};
for (let i = 0; i < bonuses.length && i < coords.length; i++) {
const coord = coords[i] == 'Fleuve' ? 'Fleuve' : (coords[i]?.toUpperCase() ?? 'A1');
const bonus = bonuses[i] || 0;
if (TMRUtility.verifyTMRCoord(coord) && bonus > 0 && caseCheck[coord] == undefined) {
caseCheck[coord] = bonus;
list.push({ case: coord, bonus: bonus });
}
}
return RdDItemSort._bonuscaseListToString(list);
}
return undefined;
}
/* -------------------------------------------- */
static incrementBonusCase(actor, sort, coord) {
if (TMRUtility.isFleuve(coord)) {
coord = FLEUVE_COORD;
}
let list = RdDItemSort.stringToBonuscases(sort.system.bonuscase);
const existing = list.find(it => it.case == coord)
const bonus = Number(existing?.bonus ?? 0) + 1
if (existing) {
existing.bonus = bonus
}
else {
list.push({ case: coord, bonus: 1 })
if (TMRUtility.getTMR(coord).type == "fleuve") {
coord = 'Fleuve';
}
const list = RdDItemSort.buildBonusCaseList(sort.system.bonuscase, false);
const bonus = Number(list.find(it => it.case == coord)?.bonus ?? 0);
const modified = { case: coord, bonus: bonus + 1 };
actor.updateEmbeddedDocuments('Item', [{ _id: sort._id, 'system.bonuscase': RdDItemSort.bonuscasesToString(list) }]);
const bonuscase = RdDItemSort._bonuscaseListToString(
list.filter(it => it.case != coord).concat(modified)
);
// Sauvegarde/update
actor.updateEmbeddedDocuments('Item', [{ _id: sort._id, 'system.bonuscase': bonuscase }]);
}
/* -------------------------------------------- */
static getCaseBonus(sort, coord) {
const search = TMRUtility.isFleuve(coord)
? it => it.case == 'Fleuve'
: it => it.case == coord;
const bc = RdDItemSort.stringToBonuscases(sort.system.bonuscase)
.find(search)
const isFleuve = TMRUtility.getTMR(coord).type == "fleuve";
let bc = RdDItemSort.buildBonusCaseList(sort.system.bonuscase, false)
.filter(it => it.case == coord || (isFleuve && it.case == 'Fleuve'))
.find(it => true)
return Number(bc?.bonus ?? 0);
}
static bonuscasesToString(list) {
static _bonuscaseListToString(list) {
return list.map(it => `${it.case}:${it.bonus}`)
.sort(Misc.ascending())
.join(',');
}
static stringToBonuscases(bonuscase) {
static bonuscaseStringToList(bonuscase) {
if (bonuscase == undefined || bonuscase == '') {
return []
}
return bonuscase.split(',')
.map(it => it.split(':'))
.map(it => { return { case: it[0], bonus: it[1] } });
return bonuscase.split(',').map(it => {
const b = it.split(':');
return { case: b[0], bonus: b[1] };
});
}
}

View File

@ -8,7 +8,6 @@ import { SystemCompendiums } from "./settings/system-compendiums.js";
import { RdDRaretes } from "./item/raretes.js";
import { CATEGORIES_COMPETENCES } from "./item-competence.js";
import { CATEGORIES_COMPETENCES_CREATURES } from "./item-competencecreature.js";
import { BASE_CORPS_A_CORPS, BASE_ESQUIVE } from "./item/base-items.js";
export const ACTOR_TYPES = {
personnage: 'personnage',
@ -245,13 +244,13 @@ export class RdDItem extends Item {
isEsquive() {
return (this.isCompetence()
&& this.system.categorie == 'melee'
&& Grammar.includesLowerCaseNoAccent(this.name, BASE_ESQUIVE.name));
&& Grammar.includesLowerCaseNoAccent(this.name, 'Esquive'));
}
isCorpsACorps() {
return this.isCompetence()
&& this.system.categorie == 'melee'
&& Grammar.includesLowerCaseNoAccent(this.name, BASE_CORPS_A_CORPS.name)
&& Grammar.includesLowerCaseNoAccent(this.name, 'Corps à Corps')
}
isCompetenceArme() {
@ -572,7 +571,6 @@ export class RdDItem extends Item {
else {
await this.quantiteIncDec(item.system.quantite);
}
// TODO: suppression dans les conteneurs!
await item.delete();
}
@ -603,9 +601,6 @@ export class RdDItem extends Item {
if (!other || !this.isInventaire()) {
return [false, undefined];
}
if (this.isConteneur()) {
return [false, `Impossible de regrouper des conteneurs, ils ne sont pas empilables`];
}
if (this.system.quantite == undefined) {
return [false, `Impossible de regrouper des ${this.type}, ils ne sont pas empilables`];
}

View File

@ -1,20 +0,0 @@
export const POSSESSION_SANS_DRACONIC = { name: 'Sans draconic', type: 'competence', system: { niveau: 0, defaut_carac: "reve-actuel", }, img: 'systems/foundryvtt-reve-de-dragon/icons/entites/possession.webp' }
export const PAS_DE_DRACONIC = { name: 'Pas de draconic', type: 'competence', system: { niveau: -11, defaut_carac: "reve" }, img: 'systems/foundryvtt-reve-de-dragon/icons/entites/possession.webp' }
export const BASE_CORPS_A_CORPS = { name: 'Corps à Corps', type: 'competence', system: { niveau: -6, defaut_carac: "melee" }, img: 'systems/foundryvtt-reve-de-dragon/icons/competence_corps_a_corps.webp' }
export const BASE_ESQUIVE = { name: 'Esquive', type: 'competence', system: { niveau: -6, defaut_carac: "derobee" }, img: 'systems/foundryvtt-reve-de-dragon/icons/competence_esquive.webp' }
export const SANS_COMPETENCE = {
name: "Sans compétence",
type: 'competence',
system: {
niveau: 0,
default_diffLibre: 0,
base: 0,
categorie: "Aucune",
description: "",
descriptionmj: "",
defaut_carac: "",
},
img: "systems/foundryvtt-reve-de-dragon/icons/templates/icone_parchement_vierge.webp"
}

View File

@ -48,9 +48,8 @@ export class RdDItemBlessure extends RdDItem {
let lostEndurance = 0
let lostVie = 0
if (definition.endurance) {
lostEndurance = new Roll(definition.endurance)
await lostEndurance.roll();
actor.santeIncDec("endurance", -Number(lostEndurance.total));
lostEndurance = await new Roll(definition.endurance).roll().total;
actor.santeIncDec("endurance", -Number(lostEndurance));
}
if (definition.vie) {
lostVie = definition.vie

View File

@ -1,25 +0,0 @@
import { Grammar } from "../grammar.js"
import { ITEM_TYPES, RdDItem } from "../item.js"
import { SystemCompendiums } from "../settings/system-compendiums.js"
const DON_HAUT_REVE = "Don de Haut-Rêve"
export class RdDItemTete extends RdDItem {
static get defaultIcon() {
return "systems/foundryvtt-reve-de-dragon/icons/tete_dragon.webp"
}
static isDonDeHautReve(tete) {
return tete.type == ITEM_TYPES.tete && Grammar.equalsInsensitive(tete.name, DON_HAUT_REVE)
}
static async teteDonDeHautReve() {
const tetes = await SystemCompendiums.getItems("tetes-de-dragon-pour-tous-personnages", ITEM_TYPES.tete)
const tete = tetes.find(it => RdDItemTete.isDonDeHautReve(it))
if (!tete) {
ui.notifications.warn(`Impossible de trouver la tête "${DON_HAUT_REVE}", vérifiez le compendium de têtes pour tous personnages`)
}
return tete
}
}

View File

@ -5,7 +5,7 @@ import { Monnaie } from "./item-monnaie.js";
import { RdDItem, ITEM_TYPES } from "./item.js";
import { RdDTimestamp } from "./time/rdd-timestamp.js";
import { RdDRaretes } from "./item/raretes.js";
import { VOIES_DRACONIC } from "./item-sort.js";
import { RdDCalendrier } from "./time/rdd-calendrier.js";
class Migration {
get code() { return "sample"; }
@ -137,7 +137,7 @@ class _10_0_21_VehiculeStructureResistanceMax extends Migration {
}
class _10_0_33_MigrationNomsDraconic extends Migration {
get code() { return "competences-nom-draconic"; }
get code() { return "competences-creature-parade"; }
get version() { return "10.0.33"; }
migrationNomDraconic(ancien) {
@ -530,42 +530,6 @@ class _11_2_20_MigrationAstrologie extends Migration {
}
}
class _12_0_26_MigrationVoieSorts extends Migration {
get code() { return "migration-voies-sorts" }
get version() { return "12.0.26" }
async migrate() {
await this.applyItemsUpdates(items => items
.filter(it => [ITEM_TYPES.sort, ITEM_TYPES.sortreserve].includes(it.type))
.map(it => this.migrateSort(it))
)
await this.applyItemsUpdates(items => items
.filter(it => ITEM_TYPES.competence == it.type && it.system.categorie == 'draconic')
.map(it => this.migrateDraconic(it))
)
}
migrateDraconic(it) {
return {
_id: it.id,
name: this.convertDraconic(it.name),
}
}
migrateSort(it) {
return {
_id: it.id,
'system.draconic': this.convertDraconic(it.system.draconic),
}
}
convertDraconic(draconic) {
for (let v of VOIES_DRACONIC) {
if ([v.label, v.short, v.code].includes(draconic)) {
return v.short
}
}
return draconic
}
}
export class Migrations {
static getMigrations() {
return [
@ -585,7 +549,6 @@ export class Migrations {
new _10_7_19_CategorieCompetenceCreature(),
new _10_7_19_PossessionsEntiteVictime(),
new _11_2_20_MigrationAstrologie(),
new _12_0_26_MigrationVoieSorts()
];
}

View File

@ -22,7 +22,7 @@ export class Misc {
const isPositiveNumber = value != NaN && value > 0;
return isPositiveNumber ? "+" + number : number
}
static modulo(n, m) {
return ((n % m) + m) % m;
}
@ -58,6 +58,9 @@ export class Misc {
* @param {*} value value to convert to an integer using parseInt
*/
static toInt(value) {
if (value == undefined) {
return 0;
}
const parsed = parseInt(value);
return isNaN(parsed) ? 0 : parsed;
}
@ -165,7 +168,7 @@ export class Misc {
static firstConnectedGM() {
if (foundry.utils.isNewerVersion(game.release.version, '12.0')) {
return game.users.activeGM
}
}
return game.users.find(u => u.isGM && u.active);
}
@ -186,7 +189,13 @@ export class Misc {
* and there is no connected GM
*/
static documentIfResponsible(document) {
if (Misc.isFirstConnectedGM() || (Misc.connectedGMs().length == 0 && Misc.isFirstOwnerPlayer(document))) {
if (foundry.utils.isNewerVersion(game.release.version, '12.0')) {
if (game.users.activeGM || (Misc.connectedGMs().length == 0 && Misc.isOwnerPlayer(document)))
{
return document
}
}
else if (Misc.isFirstConnectedGM() || (Misc.connectedGMs().length == 0 && Misc.isOwnerPlayer(document))) {
return document
}
return undefined
@ -196,11 +205,8 @@ export class Misc {
return document.testUserPermission && document.testUserPermission(game.user, CONST.DOCUMENT_OWNERSHIP_LEVELS.OWNER)
}
static isFirstOwnerPlayer(document) {
if (!document.testUserPermission) {
return false
}
return game.users.find(u => document.testUserPermission(u, CONST.DOCUMENT_OWNERSHIP_LEVELS.OWNER)) == game.user
static isOwnerPlayerOrUniqueConnectedGM(actor) {
return Misc.isOwnerPlayer(actor) ?? Misc.isFirstConnectedGM();
}
/**
@ -231,7 +237,7 @@ export class Misc {
preFilter: it => true,
description: 'valeur',
onMessage: m => ui.notifications.info(m)
}, options, { overwrite: true, inplace: false });
}, options);
const subset = this.findAllLike(value, elements, options);
if (subset.length == 0) {

View File

@ -3,38 +3,38 @@ import { Misc } from "./misc.js";
const TABLE_CARACTERISTIQUES_DERIVEES = {
// xp: coût pour passer du niveau inférieur à ce niveau
1: { xp: 3, niveau: -5, poids: "moins de 1kg", poidsMin: 0, poidsMax: 1, plusdom: -5, sconst: 0.5, sust: 0.1 },
2: { xp: 3, niveau: -4, poids: "1-5", poidsMin: 1, poidsMax: 5, plusdom: -4, sconst: 0.5, sust: 0.3 },
3: { xp: 4, niveau: -3, poids: "6-10", poidsMin: 6, poidsMax: 10, plusdom: -3, sconst: 1, sust: 0.5, beaute: 'hideux' },
4: { xp: 4, niveau: -2, poids: "11-20", poidsMin: 11, poidsMax: 20, plusdom: -3, sconst: 1, sust: 1, beaute: 'repoussant' },
5: { xp: 5, niveau: -1, poids: "21-30", poidsMin: 21, poidsMax: 30, plusdom: -2, sconst: 1, sust: 1, beaute: 'franchement très laid' },
6: { xp: 5, niveau: 0, poids: "31-40", poidsMin: 31, poidsMax: 40, plusdom: -1, sconst: 2, sust: 2, beaute: 'laid' },
7: { xp: 6, niveau: 0, poids: "41-50", poidsMin: 41, poidsMax: 50, plusdom: -1, sconst: 2, sust: 2, beaute: 'très désavantagé' },
8: { xp: 6, niveau: 0, poids: "51-60", poidsMin: 51, poidsMax: 60, plusdom: 0, sconst: 2, sust: 2, beaute: 'désavantagé' },
9: { xp: 7, niveau: 0, poids: "61-65", poidsMin: 61, poidsMax: 65, plusdom: 0, sconst: 3, sust: 2, beaute: 'pas terrible' },
10: { xp: 7, niveau: 0, poids: "66-70", poidsMin: 66, poidsMax: 70, plusdom: 0, sconst: 3, sust: 3, beaute: 'commun' },
11: { xp: 8, niveau: 1, poids: "71-75", poidsMin: 71, poidsMax: 75, plusdom: 0, sconst: 3, sust: 3, beaute: 'pas mal' },
12: { xp: 8, niveau: 1, poids: "76-80", poidsMin: 76, poidsMax: 80, plusdom: +1, sconst: 4, sust: 3, beaute: 'avantagé' },
13: { xp: 9, niveau: 2, poids: "81-90", poidsMin: 81, poidsMax: 90, plusdom: +1, sconst: 4, sust: 3, beaute: 'mignon' },
14: { xp: 9, niveau: 2, poids: "91-100", poidsMin: 91, poidsMax: 100, plusdom: +2, sconst: 4, sust: 4, beaute: 'beau' },
15: { xp: 10, niveau: 3, poids: "101-110", poidsMin: 101, poidsMax: 110, plusdom: +2, sconst: 5, sust: 4, beaute: 'très beau' },
16: { xp: 20, niveau: 3, poids: "111-120", poidsMin: 111, poidsMax: 120, plusdom: +3, sconst: 5, sust: 4, beaute: 'éblouissant' },
17: { xp: 30, niveau: 4, poids: "121-131", poidsMin: 121, poidsMax: 131, plusdom: +3, sconst: 5, sust: 5 },
18: { xp: 40, niveau: 4, poids: "131-141", poidsMin: 131, poidsMax: 141, plusdom: +4, sconst: 6, sust: 5 },
19: { xp: 50, niveau: 5, poids: "141-150", poidsMin: 141, poidsMax: 150, plusdom: +4, sconst: 6, sust: 5 },
20: { xp: 60, niveau: 5, poids: "151-160", poidsMin: 151, poidsMax: 160, plusdom: +4, sconst: 6, sust: 6 },
21: { xp: 70, niveau: 6, poids: "161-180", poidsMin: 161, poidsMax: 180, plusdom: +5, sconst: 7, sust: 6 },
22: { xp: 80, niveau: 6, poids: "181-200", poidsMin: 181, poidsMax: 200, plusdom: +5, sconst: 7, sust: 7 },
23: { xp: 90, niveau: 7, poids: "201-300", poidsMin: 201, poidsMax: 300, plusdom: +6, sconst: 7, sust: 8 },
24: { xp: 100, niveau: 7, poids: "301-400", poidsMin: 301, poidsMax: 400, plusdom: +6, sconst: 8, sust: 9 },
25: { xp: 110, niveau: 8, poids: "401-500", poidsMin: 401, poidsMax: 500, plusdom: +7, sconst: 8, sust: 10 },
26: { xp: 120, niveau: 8, poids: "501-600", poidsMin: 501, poidsMax: 600, plusdom: +7, sconst: 8, sust: 11 },
27: { xp: 130, niveau: 9, poids: "601-700", poidsMin: 601, poidsMax: 700, plusdom: +8, sconst: 9, sust: 12 },
28: { xp: 140, niveau: 9, poids: "701-800", poidsMin: 701, poidsMax: 800, plusdom: +8, sconst: 9, sust: 13 },
29: { xp: 150, niveau: 10, poids: "801-900", poidsMin: 801, poidsMax: 900, plusdom: +9, sconst: 9, sust: 14 },
30: { xp: 160, niveau: 10, poids: "901-1000", poidsMin: 901, poidsMax: 1000, plusdom: +9, sconst: 10, sust: 15 },
31: { xp: 170, niveau: 11, poids: "1001-1500", poidsMin: 1001, poidsMax: 1500, plusdom: +10, sconst: 10, sust: 16 },
32: { xp: 180, niveau: 11, poids: "1501-2000", poidsMin: 1501, poidsMax: 2000, plusdom: +11, sconst: 10, sust: 17 }
1: { xp: 3, poids: "moins de 1kg", poidsMin: 0, poidsMax: 1, plusdom: -5, sconst: 0.5, sust: 0.1 },
2: { xp: 3, poids: "1-5", poidsMin: 1, poidsMax: 5, plusdom: -4, sconst: 0.5, sust: 0.3 },
3: { xp: 4, poids: "6-10", poidsMin: 6, poidsMax: 10, plusdom: -3, sconst: 1, sust: 0.5, beaute: 'hideux' },
4: { xp: 4, poids: "11-20", poidsMin: 11, poidsMax: 20, plusdom: -3, sconst: 1, sust: 1, beaute: 'repoussant' },
5: { xp: 5, poids: "21-30", poidsMin: 21, poidsMax: 30, plusdom: -2, sconst: 1, sust: 1, beaute: 'franchement très laid' },
6: { xp: 5, poids: "31-40", poidsMin: 31, poidsMax: 40, plusdom: -1, sconst: 2, sust: 2, beaute: 'laid' },
7: { xp: 6, poids: "41-50", poidsMin: 41, poidsMax: 50, plusdom: -1, sconst: 2, sust: 2, beaute: 'très désavantagé' },
8: { xp: 6, poids: "51-60", poidsMin: 51, poidsMax: 60, plusdom: 0, sconst: 2, sust: 2, beaute: 'désavantagé' },
9: { xp: 7, poids: "61-65", poidsMin: 61, poidsMax: 65, plusdom: 0, sconst: 3, sust: 2, beaute: 'pas terrible' },
10: { xp: 7, poids: "66-70", poidsMin: 66, poidsMax: 70, plusdom: 0, sconst: 3, sust: 3, beaute: 'commun' },
11: { xp: 8, poids: "71-75", poidsMin: 71, poidsMax: 75, plusdom: 0, sconst: 3, sust: 3, beaute: 'pas mal' },
12: { xp: 8, poids: "76-80", poidsMin: 76, poidsMax: 80, plusdom: +1, sconst: 4, sust: 3, beaute: 'avantagé' },
13: { xp: 9, poids: "81-90", poidsMin: 81, poidsMax: 90, plusdom: +1, sconst: 4, sust: 3, beaute: 'mignon' },
14: { xp: 9, poids: "91-100", poidsMin: 91, poidsMax: 100, plusdom: +2, sconst: 4, sust: 4, beaute: 'beau' },
15: { xp: 10, poids: "101-110", poidsMin: 101, poidsMax: 110, plusdom: +2, sconst: 5, sust: 4, beaute: 'très beau' },
16: { xp: 20, poids: "111-120", poidsMin: 111, poidsMax: 120, plusdom: +3, sconst: 5, sust: 4, beaute: 'éblouissant' },
17: { xp: 30, poids: "121-131", poidsMin: 121, poidsMax: 131, plusdom: +3, sconst: 5, sust: 5 },
18: { xp: 40, poids: "131-141", poidsMin: 131, poidsMax: 141, plusdom: +4, sconst: 6, sust: 5 },
19: { xp: 50, poids: "141-150", poidsMin: 141, poidsMax: 150, plusdom: +4, sconst: 6, sust: 5 },
20: { xp: 60, poids: "151-160", poidsMin: 151, poidsMax: 160, plusdom: +4, sconst: 6, sust: 6 },
21: { xp: 70, poids: "161-180", poidsMin: 161, poidsMax: 180, plusdom: +5, sconst: 7, sust: 6 },
22: { xp: 80, poids: "181-200", poidsMin: 181, poidsMax: 200, plusdom: +5, sconst: 7, sust: 7 },
23: { xp: 90, poids: "201-300", poidsMin: 201, poidsMax: 300, plusdom: +6, sconst: 7, sust: 8 },
24: { xp: 100, poids: "301-400", poidsMin: 301, poidsMax: 400, plusdom: +6, sconst: 8, sust: 9 },
25: { xp: 110, poids: "401-500", poidsMin: 401, poidsMax: 500, plusdom: +7, sconst: 8, sust: 10 },
26: { xp: 120, poids: "501-600", poidsMin: 501, poidsMax: 600, plusdom: +7, sconst: 8, sust: 11 },
27: { xp: 130, poids: "601-700", poidsMin: 601, poidsMax: 700, plusdom: +8, sconst: 9, sust: 12 },
28: { xp: 140, poids: "701-800", poidsMin: 701, poidsMax: 800, plusdom: +8, sconst: 9, sust: 13 },
29: { xp: 150, poids: "801-900", poidsMin: 801, poidsMax: 900, plusdom: +9, sconst: 9, sust: 14 },
30: { xp: 160, poids: "901-1000", poidsMin: 901, poidsMax: 1000, plusdom: +9, sconst: 10, sust: 15 },
31: { xp: 170, poids: "1001-1500", poidsMin: 1001, poidsMax: 1500, plusdom: +10, sconst: 10, sust: 16 },
32: { xp: 180, poids: "1501-2000", poidsMin: 1501, poidsMax: 2000, plusdom: +11, sconst: 10, sust: 17 }
};
export class RdDCarac {
@ -53,18 +53,13 @@ export class RdDCarac {
return selectedCarac?.label?.toLowerCase()?.match(/r(e|ê)ve(( |-)actuel)?/);
}
/**
* Lappel à la chance nest possible que pour recommencer les jets dactions physiques :
* tous les jets de combat, de FORCE, dAGILITÉ, de DEXTÉRITÉ, de Dérobée, dAPPARENCE,
* ainsi que de Perception active et volontaire.
*/
static isActionPhysique(selectedCarac) {
return Grammar.toLowerCaseNoAccent(selectedCarac?.label)
?.match(/(apparence|force|agilite|dexterite|vue|ouie|gout|odorat|empathie|melee|tir|lancer|derobee)/) != null
return !selectedCarac ||
selectedCarac?.label.match(/(Apparence|Force|Agilité|Dextérité|Vue|Ouïe|Odorat-Goût|Empathie|Dérobée|Mêlée|Tir|Lancer)/);
}
static getCaracDerivee(value) {
return TABLE_CARACTERISTIQUES_DERIVEES[Math.min(Math.max(Math.floor(Number(value)), 1), 32)];
return TABLE_CARACTERISTIQUES_DERIVEES[Math.min(Math.max(Number(value), 1), 32)];
}
static computeTotal(carac, beaute = undefined) {
@ -95,4 +90,15 @@ export class RdDCarac {
static getCaracXp(targetValue) {
return RdDCarac.getCaracDerivee(targetValue)?.xp ?? 200;
}
/**
* Lappel à la chance nest possible que pour recommencer les jets dactions physiques :
* tous les jets de combat, de FORCE, dAGILITÉ, de DEXTÉRITÉ, de Dérobée, dAPPARENCE,
* ainsi que de Perception active et volontaire.
*/
static isActionPhysique(selectedCarac) {
return Grammar.toLowerCaseNoAccent(selectedCarac?.label)?.match(/(apparence|force|agilite|dexterite|vue|ouie|odorat|empathie|melee|tir|lancer|derobee)/);
}
}

View File

@ -133,10 +133,10 @@ export class RdDCombatManager extends Combat {
scene: canvas.scene._id,
actor: combatant.actor?._id,
token: combatant.token._id,
alias: combatant.token?.name,
alias: combatant.token.name,
sound: CONFIG.sounds.dice,
},
flavor: `${combatant.token?.name} a fait son jet d'Initiative (${messageOptions.info})<br>`
flavor: `${combatant.token.name} a fait son jet d'Initiative (${messageOptions.info})<br>`
},
messageOptions);
roll.toMessage(messageData, { rollMode, create: true });
@ -226,21 +226,18 @@ export class RdDCombatManager extends Combat {
}
static $prepareAttaqueArme(infoAttaque) {
const comp = infoAttaque.competences.find(it => Grammar.equalsInsensitive(it.name, infoAttaque.competence))
const comp = infoAttaque.competences.find(c => c.name == infoAttaque.competence);
const arme = infoAttaque.arme;
const attaque = foundry.utils.duplicate(arme)
const carac = comp?.system.defaut_carac ?? (infoAttaque.infoMain == '(lancer)' ? 'lancer' : infoAttaque.infoMain == '(lancer)' ? 'tir' : 'melee')
const niveau = comp?.system.niveau ?? (infoAttaque.infoMain == '(lancer)' ? -8 : -6)
const attaque = foundry.utils.duplicate(arme);
attaque.action = 'attaque';
attaque.system.competence = infoAttaque.competence;
attaque.system.dommagesReels = infoAttaque.dommagesReel;
attaque.system.infoMain = infoAttaque.infoMain;
attaque.system.niveau = niveau
attaque.system.niveau = comp.system.niveau;
const ajustement = (arme.parent?.getEtatGeneral() ?? 0) + (arme.system.magique) ? arme.system.ecaille_efficacite : 0
attaque.system.initiative = RdDCombatManager.calculInitiative(niveau, infoAttaque.carac[carac].value, ajustement)
return attaque
const ajustement = (arme?.parent?.getEtatGeneral() ?? 0) + (arme?.system.magique) ? arme.system.ecaille_efficacite : 0;
attaque.system.initiative = RdDCombatManager.calculInitiative(comp.system.niveau, infoAttaque.carac[comp.system.defaut_carac].value, ajustement);
return attaque;
}
/* -------------------------------------------- */
@ -255,7 +252,7 @@ export class RdDCombatManager extends Combat {
if (action && action.type == "arme") {
for (let initData of premierRoundInit) {
if (Grammar.toLowerCaseNoAccentNoSpace(action.system.initpremierround).includes(initData.pattern)) {
let msg = `<h4>L'initiative de ${combatant.actor.getAlias()} a été modifiée !</h4>
let msg = `<h4>L'initiative de ${combatant.actor.name} a été modifiée !</h4>
<hr>
<div>
Etant donné son ${action.name}, son initative pour ce premier round est désormais de ${initData.init}.
@ -438,10 +435,11 @@ export class RdDCombat {
/* -------------------------------------------- */
static onMsgEncaisser(msg) {
let defender = canvas.tokens.get(msg.defenderToken.id).actor;
if (Misc.isOwnerPlayer(defender)) {
if (Misc.isOwnerPlayerOrUniqueConnectedGM()) {
let attackerRoll = msg.attackerRoll;
let attacker = msg.attackerId ? game.actors.get(msg.attackerId) : undefined;
let defender = canvas.tokens.get(msg.defenderToken.id).actor;
defender.encaisserDommages(attackerRoll, attacker, msg.attackerToken);
const rddCombat = RdDCombat.rddCombatForAttackerAndDefender(msg.attackerId, msg.attackerToken.id, msg.defenderToken.id);
rddCombat?.removeChatMessageActionsPasseArme(attackerRoll.passeArme);
@ -756,14 +754,14 @@ export class RdDCombat {
/* -------------------------------------------- */
_prepareAttaque(competence, arme) {
let rollData = {
alias: this.attacker?.getAlias(),
alias: this.attackerToken.name,
passeArme: foundry.utils.randomID(16),
mortalite: arme?.system.mortalite,
competence: competence,
surprise: this.attacker.getSurprise(true),
surpriseDefenseur: this.defender.getSurprise(true),
sourceTokenId: this.attackerToken?.id,
targetTokenId: this.defenderToken?.id,
sourceToken: this.attackerToken,
targetToken: this.defenderToken,
essais: {}
};
@ -776,9 +774,9 @@ export class RdDCombat {
}
else {
// sans armes: à mains nues
rollData.arme = RdDItemArme.corpsACorps(this.attacker)
rollData.arme.system.niveau = competence.system.niveau
rollData.arme.system.initiative = RdDCombatManager.calculInitiative(competence.system.niveau, this.attacker.system.carac['melee'].value);
const niveau = competence.system.niveau;
const init = RdDCombatManager.calculInitiative(niveau, this.attacker.system.carac['melee'].value);
rollData.arme = RdDItemArme.mainsNues({ niveau: niveau, initiative: init });
}
return rollData;
}
@ -805,10 +803,10 @@ export class RdDCombat {
}
const choixParticuliere = await ChatMessage.create({
alias: this.attacker.getAlias(),
alias: this.attacker.name,
whisper: ChatUtility.getOwners(this.attacker),
content: await renderTemplate('systems/foundryvtt-reve-de-dragon/templates/chat-demande-attaque-particuliere.html', {
alias: this.attacker.getAlias(),
alias: this.attackerToken.name,
attackerId: this.attackerId,
attackerToken: this.attackerToken,
defenderToken: this.defenderToken,
@ -828,7 +826,7 @@ export class RdDCombat {
attackerRoll.dmg = RdDBonus.dmg(attackerRoll, this.attacker, this.defender.isEntite());
let defenderRoll = { attackerRoll: attackerRoll, passeArme: attackerRoll.passeArme, show: {} }
attackerRoll.show = {
cible: this.defender?.getAlias() ?? 'la cible',
cible: this.defenderToken?.name ?? 'la cible',
isRecul: (attackerRoll.particuliere == 'force' || attackerRoll.tactique == 'charge')
}
await RdDResolutionTable.displayRollData(attackerRoll, this.attacker, 'chat-resultat-attaque.html');
@ -894,7 +892,7 @@ export class RdDCombat {
const choixDefense = await ChatMessage.create({
// message privé: du défenseur à lui même (et aux GMs)
speaker: ChatMessage.getSpeaker(this.defender, canvas.tokens.get(this.defenderTokenId)),
alias: this.attacker?.getAlias(),
alias: this.attackerToken.name,
whisper: ChatUtility.getOwners(this.defender),
content: await renderTemplate('systems/foundryvtt-reve-de-dragon/templates/chat-demande-defense.html', paramDemandeDefense),
});
@ -1017,7 +1015,7 @@ export class RdDCombat {
/* -------------------------------------------- */
_prepareParade(attackerRoll, armeParade, competenceParade) {
let defenderRoll = {
alias: this.defender?.getAlias(),
alias: this.defenderToken?.name,
passeArme: attackerRoll.passeArme,
diffLibre: attackerRoll.diffLibre,
attackerToken: this.attackerToken,
@ -1074,7 +1072,7 @@ export class RdDCombat {
async esquive(attackerRoll, compId, compName) {
const esquive = this.defender.getCompetence(compId) ?? this.defender.getCompetence(compName)
if (esquive == undefined) {
ui.notifications.error(this.defender.getAlias() + " n'a pas de compétence " + compName);
ui.notifications.error(this.defender.name + " n'a pas de compétence " + compName);
return;
}
console.log("RdDCombat.esquive >>>", attackerRoll, esquive);
@ -1101,7 +1099,7 @@ export class RdDCombat {
/* -------------------------------------------- */
_prepareEsquive(attackerRoll, competence) {
let rollData = {
alias: this.defender.getAlias(),
alias: this.defenderToken?.name,
passeArme: attackerRoll.passeArme,
diffLibre: attackerRoll.diffLibre,
attackerToken: this.attackerToken,
@ -1254,7 +1252,7 @@ export class RdDCombat {
this._onEchecTotal(defenderRoll);
}
if (Misc.isOwnerPlayer(this.defender)) {
if (Misc.isOwnerPlayerOrUniqueConnectedGM(this.defender)) {
attackerRoll.attackerId = this.attackerId;
attackerRoll.defenderTokenId = this.defenderToken.id;
@ -1280,10 +1278,9 @@ export class RdDCombat {
if (!actor?.isActorCombat()) {
return
}
const alias = token?.name ?? actor.getAlias();
const formData = {
combatId: combat._id,
alias: alias,
alias: token.name ?? actor.name,
etatGeneral: actor.getEtatGeneral(),
isSonne: actor.isSonne(),
blessuresStatus: actor.computeResumeBlessure(),
@ -1296,12 +1293,12 @@ export class RdDCombat {
}
await ChatMessage.create({
content: await renderTemplate(`systems/foundryvtt-reve-de-dragon/templates/chat-actor-turn-acteur.hbs`, formData),
alias: alias
alias: token.name ?? actor.name
})
await ChatMessage.create({
content: await renderTemplate(`systems/foundryvtt-reve-de-dragon/templates/chat-actor-turn-sante.hbs`, formData),
whisper: ChatUtility.getOwners(actor),
alias: alias
alias: token.name ?? actor.name
})
}
}

View File

@ -360,14 +360,13 @@ export class RdDCommands {
async getTMRAleatoire(msg, params) {
if (params.length < 2) {
let type = params[0]
const solvedTerrain = TMRUtility.findTMRLike(type)?.type
if (solvedTerrain){
const tmr = await TMRUtility.getTMRAleatoire(type ? (it => it.type == solvedTerrain) : (it => true))
return RdDCommands._chatAnswer(msg, `Case aléatoire: ${tmr.coord} - ${tmr.label}`)
}
let type = params[0];
const tmr = await TMRUtility.getTMRAleatoire(type ? (it => it.type == type) : (it => true));
return RdDCommands._chatAnswer(msg, `Case aléatoire: ${tmr.coord} - ${tmr.label}`);
}
else {
return false;
}
return false;
}
async findTMR(msg, params) {
@ -385,11 +384,11 @@ export class RdDCommands {
async tableRencontres(msg, params) {
if (params && params.length > 0) {
const search = Misc.join(params, ' ');
const solvedTerrain = TMRUtility.findTMRLike(search)
const solvedTerrain = TMRUtility.findTMRLike(search);
if (solvedTerrain == undefined) {
return RdDCommands._chatAnswer(msg, 'Aucune TMR correspondant à ' + search);
}
return await game.system.rdd.rencontresTMR.chatTable(solvedTMRType.name)
return await game.system.rdd.rencontresTMR.chatTable(solvedTerrain);
}
return false;
}

View File

@ -28,9 +28,9 @@ export class RdDHerbes extends Item {
}
/* -------------------------------------------- */
static calculFormData(formData, item) {
formData.isSoins = item.system.categorie.includes('Soin');
formData.isRepos = item.system.categorie.includes('Repos');
static async addPotionFormData(formData) {
formData.isSoins = formData.system.categorie.includes('Soin');
formData.isRepos = formData.system.categorie.includes('Repos');
if (formData.isSoins) {
RdDHerbes.calculBonusHerbe(formData, this.herbesSoins, 12);
}
@ -40,7 +40,7 @@ export class RdDHerbes extends Item {
formData.herbesSoins = RdDHerbes.buildHerbesList(this.herbesSoins, 12);
formData.herbesRepos = RdDHerbes.buildHerbesList(this.herbesRepos, 7);
formData.dateActuelle = game.system.rdd.calendrier.dateCourante();
formData.enchantement = RdDTimestamp.splitIndexDate(item.system.prdate);
formData.enchantement = RdDTimestamp.splitIndexDate(formData.system.prdate);
}
/* -------------------------------------------- */

View File

@ -121,7 +121,7 @@ export class RdDHotbar {
if (item.isCorpsACorps()) {
switch (categorieArme) {
case 'pugilat':
return actor.rollArme(RdDItemArme.corpsACorps(actor), 'competence');
return actor.rollArme(RdDItemArme.mainsNues(actor), 'competence');
case 'empoignade':
return actor.rollArme(RdDItemArme.empoignade(actor), 'competence');
}

View File

@ -69,8 +69,6 @@ import { ExportScriptarium } from "./actor/export-scriptarium/export-scriptarium
import { AppPersonnageAleatoire } from "./actor/random/app-personnage-aleatoire.js"
import { RdDActorExportSheet } from "./actor/export-scriptarium/actor-encart-sheet.js"
import { RdDStatBlockParser } from "./apps/rdd-import-stats.js"
import { RdDItemSort } from "./item-sort.js"
import { RdDItemTete } from "./item/tete.js"
/**
* RdD system
@ -98,7 +96,6 @@ export class SystemReveDeDragon {
ombre: RdDItemOmbre,
poison: RdDItemPoison,
queue: RdDItemQueue,
tete: RdDItemTete,
rencontre: RdDRencontre,
service: RdDItemService,
signedraconique: RdDItemSigneDraconique,
@ -125,7 +122,6 @@ export class SystemReveDeDragon {
// preload handlebars templates
RdDUtility.preloadHandlebarsTemplates()
AppPersonnageAleatoire.preloadHandlebars()
RdDItemSort.preloadHandlebars()
/* -------------------------------------------- */
ReglesOptionnelles.initSettings()
@ -135,7 +131,6 @@ export class SystemReveDeDragon {
RdDCalendrier.initSettings()
SystemCompendiums.initSettings()
DialogChronologie.initSettings()
EffetsDraconiques.initSettings()
RdDTMRDialog.initSettings()
Environnement.initSettings()

View File

@ -7,7 +7,6 @@ import { RdDBonus } from "./rdd-bonus.js";
import { RdDCarac } from "./rdd-carac.js";
import { RdDResolutionTable } from "./rdd-resolution-table.js";
import { ReglesOptionnelles } from "./settings/regles-optionnelles.js";
import { Grammar } from "./grammar.js";
/**
* Extend the base Dialog entity to select roll parameters
@ -33,7 +32,7 @@ export class RdDRoll extends Dialog {
/* -------------------------------------------- */
static _setDefaultOptions(actor, rollData) {
let defaultRollData = {
alias: actor.getAlias(),
alias: actor.name,
ajustementsConditions: CONFIG.RDD.ajustementsConditions,
difficultesLibres: CONFIG.RDD.difficultesLibres,
etat: actor.getEtatGeneral(),
@ -174,8 +173,8 @@ export class RdDRoll extends Dialog {
this.html.find("[name='diffLibre']").val(this.rollData.diffLibre);
});
this.html.find('.roll-carac-competence').change((event) => {
const competence = event.currentTarget.value
this.rollData.competence = this.rollData.competences.find(it => Grammar.equalsInsensitive(it.name, competence))
const competence = event.currentTarget.value;
this.rollData.competence = this.rollData.competences.find(it => it.name == competence);
this.updateRollResult(html);
});
this.html.find('.select-suivant-coeur').change((event) => {
@ -346,25 +345,24 @@ export class RdDRoll extends Dialog {
/* -------------------------------------------- */
_getTitle(rollData) {
const alias = rollData.alias
const carac = rollData.selectedCarac.label;
if (!rollData.competence) {
return `${alias}: ${carac}`
return carac;
}
const compName = rollData.competence.name;
const niveau = Misc.toSignedString(rollData.competence.system.niveau)
if (compName == carac) {
// cas des créatures
return `${alias}: ${carac} Niveau ${niveau}`
return `${carac} Niveau ${niveau}`
}
if (rollData.draconicList && rollData.selectedSort) {
// cas de lancer de sort
return `${alias}: ${rollData.competence.name} Niveau ${niveau} ${rollData.selectedSort.name}`
return `${rollData.competence.name} Niveau ${niveau} ${rollData.selectedSort.name}`
}
if (rollData.arme && rollData.arme.name != compName) {
// ajouter l'arme au titre si son nom n'est pas la compétence
return `${alias}: ${carac} / ${compName} (${rollData.arme.name}) Niveau ${niveau}`
return `${carac} / ${compName} (${rollData.arme.name}) Niveau ${niveau}`
}
return `${alias}: ${carac} / ${compName} Niveau ${niveau}`
return `${carac} / ${compName} Niveau ${niveau}`
}
}

View File

@ -1,3 +1,4 @@
import { Grammar } from "./grammar.js";
import { CompendiumTable, CompendiumTableHelpers, SystemCompendiums } from "./settings/system-compendiums.js";
export class RdDRollTables {

View File

@ -176,7 +176,7 @@ export class RdDTMRDialog extends Dialog {
}
bringSubDialogToTop() {
if (this.subdialog?.bringToTop && this.subdialog?.element && this.subdialog?.element[0]) {
if (this.subdialog?.bringToTop && this.subdialog?.element[0]) {
this.subdialog.bringToTop();
}
}
@ -241,11 +241,10 @@ export class RdDTMRDialog extends Dialog {
this._getTokensRencontres().forEach(t => this._trackToken(t))
this._getTokensSortsReserve().forEach(t => this._trackToken(t))
}
/* -------------------------------------------- */
updateTokens() {
this._removeTokens(t => true);
this.allTokens = []
this.loadRencontres();
this.loadCasesSpeciales();
this._createTokens();
@ -461,7 +460,7 @@ export class RdDTMRDialog extends Dialog {
let rencontreData = {
actor: this.actor,
alias: this.actor.getAlias(),
alias: this.actor.name,
reveDepart: this.actor.getReveActuel(),
competence: this.actor.getBestDraconic(),
rencontre: this.currentRencontre,
@ -642,7 +641,7 @@ export class RdDTMRDialog extends Dialog {
// simuler une rencontre
let rencontreData = {
actor: this.actor,
alias: this.actor.getAlias(),
alias: this.actor.name,
reveDepart: this.actor.getReveActuel(),
competence: this.actor.getBestDraconic(),
rencontre: this.currentRencontre,
@ -1099,10 +1098,7 @@ export class RdDTMRDialog extends Dialog {
if (!this.viewOnly && this.actor.isResonanceSigneDraconique(coord)) {
ChatMessage.create({
whisper: ChatUtility.getOwners(this.actor),
content: await renderTemplate(`systems/foundryvtt-reve-de-dragon/templates/chat-signe-draconique-resonance.html`, {
alias: this.actor.getAlias(),
typeTMR: TMRUtility.getTMRType(coord)
})
content: await renderTemplate(`systems/foundryvtt-reve-de-dragon/templates/chat-signe-draconique-resonance.html`, { alias: this.actor.name, typeTMR: TMRUtility.getTMRType(coord) })
});
}
}
@ -1134,14 +1130,6 @@ export class RdDTMRDialog extends Dialog {
return tmr;
}
getTokensDetails(coordTMR) {
const tmrTooltip = `${coordTMR}: ${TMRUtility.getTMRLabel(coordTMR)}`
const tokenTooltips = this.allTokens
.filter(token => token.coordTMR() == coordTMR)
.map(token => token.tooltip);
return [tmrTooltip, ...tokenTooltips].reduce(Misc.joining('\n'))
}
/* -------------------------------------------- */
_removeTokens(filter = it => true) {
this.allTokens.filter(filter).forEach(token => this.pixiTMR.removeToken(token))
@ -1153,7 +1141,7 @@ export class RdDTMRDialog extends Dialog {
return
}
if (this.demiReve === token && this.isDemiReveCache()) {
return
return;
}
this.pixiTMR.positionToken(token);
if (!this.allTokens.includes(token)) {

View File

@ -20,7 +20,6 @@ import { ExperienceLog } from "./actor/experience-log.js";
import { RdDCoeur } from "./coeur/rdd-coeur.js";
import { APP_ASTROLOGIE_REFRESH } from "./sommeil/app-astrologie.js";
import { RDD_CONFIG } from "./constants.js";
import { RdDBaseActor } from "./actor/base-actor.js";
/* -------------------------------------------- */
// This table starts at 0 -> niveau -10
@ -122,7 +121,6 @@ export class RdDUtility {
'systems/foundryvtt-reve-de-dragon/templates/actor/header-hautreve.html',
'systems/foundryvtt-reve-de-dragon/templates/actor/archetype.hbs',
'systems/foundryvtt-reve-de-dragon/templates/actor/vue-detaillee.html',
'systems/foundryvtt-reve-de-dragon/templates/actor/armures.hbs',
'systems/foundryvtt-reve-de-dragon/templates/actor/carac-main.html',
'systems/foundryvtt-reve-de-dragon/templates/actor/carac-derivee.html',
'systems/foundryvtt-reve-de-dragon/templates/actor/carac-creature.html',
@ -147,8 +145,8 @@ export class RdDUtility {
'systems/foundryvtt-reve-de-dragon/templates/actor/alchimie.html',
'systems/foundryvtt-reve-de-dragon/templates/actor/astrologie.html',
'systems/foundryvtt-reve-de-dragon/templates/actor/chirurgie.html',
'systems/foundryvtt-reve-de-dragon/templates/actor/non-haut-revant.hbs',
'systems/foundryvtt-reve-de-dragon/templates/actor/haut-revant.hbs',
'systems/foundryvtt-reve-de-dragon/templates/actor/non-haut-revant.html',
'systems/foundryvtt-reve-de-dragon/templates/actor/haut-revant.html',
'systems/foundryvtt-reve-de-dragon/templates/actor/dragon-queues.html',
'systems/foundryvtt-reve-de-dragon/templates/actor/dragon-queue.html',
'systems/foundryvtt-reve-de-dragon/templates/actor/dragon-souffles.html',
@ -261,13 +259,48 @@ export class RdDUtility {
'systems/foundryvtt-reve-de-dragon/templates/chat-fabriquer-potion-base.html',
'systems/foundryvtt-reve-de-dragon/templates/chat-signe-draconique-actor.html'
];
// foundry et options
Handlebars.registerHelper('either', (a, b) => a ?? b);
Handlebars.registerHelper('upperFirst', str => Misc.upperFirst(str ?? 'Null'));
Handlebars.registerHelper('lowerFirst', str => Misc.lowerFirst(str ?? 'Null'));
Handlebars.registerHelper('upper', str => str?.toUpperCase() ?? '');
Handlebars.registerHelper('lowercase', str => str?.toLowerCase() ?? '');
Handlebars.registerHelper('le', str => Grammar.articleDetermine(str));
Handlebars.registerHelper('apostrophe', (article, str) => Grammar.apostrophe(article, str));
Handlebars.registerHelper('un', str => Grammar.articleIndetermine(str));
Handlebars.registerHelper('accord', (genre, ...args) => Grammar.accord(genre, args));
Handlebars.registerHelper('RDD_CONFIG', path => RDD_CONFIG[path])
Handlebars.registerHelper('linkCompendium', (pack, id, name) => RdDUtility.linkCompendium(pack, id, name));
Handlebars.registerHelper('computeResolutionScore', (row, col) => RdDResolutionTable.computePercentage(row, col));
Handlebars.registerHelper('computeResolutionChances', (row, col) => RdDResolutionTable.computeChances(row, col));
Handlebars.registerHelper('buildLigneInventaire', (item, options) => { return new Handlebars.SafeString(RdDUtility.buildLigneInventaire(item, options)); });
Handlebars.registerHelper('buildInventaireConteneur', (actorId, itemId, options) => { return new Handlebars.SafeString(RdDUtility.buildInventaireConteneur(actorId, itemId, options)); });
Handlebars.registerHelper('buildContenuConteneur', (item, options) => { return new Handlebars.SafeString(RdDUtility.buildContenuConteneur(item, options)); });
Handlebars.registerHelper('calculerPrixCommercant', item => item.calculerPrixCommercant());
Handlebars.registerHelper('caseTmr-label', coord => TMRUtility.getTMRLabel(coord));
Handlebars.registerHelper('caseTmr-type', coord => TMRUtility.getTMRType(coord));
Handlebars.registerHelper('typeTmr-name', type => TMRUtility.typeTmrName(type));
Handlebars.registerHelper('effetRencontre-name', coord => TMRUtility.typeTmrName(coord));
Handlebars.registerHelper('timestamp-imgSigneHeure', (heure) => { return new Handlebars.SafeString(RdDTimestamp.imgSigneHeure(heure)) });
Handlebars.registerHelper('timestamp-imgSigne', (heure) => { return new Handlebars.SafeString(RdDTimestamp.imgSigne(heure)) });
Handlebars.registerHelper('timestamp-extract', timestamp => new RdDTimestamp(timestamp).toCalendrier());
Handlebars.registerHelper('timestamp-formulesDuree', () => RdDTimestamp.formulesDuree());
Handlebars.registerHelper('timestamp-formulesPeriode', () => RdDTimestamp.formulesPeriode());
Handlebars.registerHelper('array-includes', (array, value) => array.includes(value));
Handlebars.registerHelper('min', (...args) => Math.min(...args.slice(0, -1)));
Handlebars.registerHelper('isLastIndex', (index, list) => index + 1 >= list.length);
Handlebars.registerHelper('regle-optionnelle', (option) => ReglesOptionnelles.isUsing(option));
Handlebars.registerHelper('trier', list => list.sort((a, b) => a.name.localeCompare(b.name)));
Handlebars.registerHelper('filtreTriCompetences', competences => RdDItemCompetence.triVisible(competences));
Handlebars.registerHelper('linkCompendium', (pack, id, name) => RdDUtility.linkCompendium(pack, id, name));
Handlebars.registerHelper('uniteQuantite', (itemId, actorId) => RdDUtility.getItem(itemId, actorId)?.getUniteQuantite());
Handlebars.registerHelper('isFieldInventaireModifiable', (type, field) => RdDItem.isFieldInventaireModifiable(type, field));
Handlebars.registerHelper('rarete-getChamp', (rarete, field) => RdDRaretes.getChamp(rarete, field));
Handlebars.registerHelper('plusMoins', diff => (diff > 0 ? '+' : '') + Math.round(diff))
Handlebars.registerHelper('experienceLog-topic', topic => ExperienceLog.labelTopic(topic));
// Handle v12 removal of this helper
Handlebars.registerHelper('select', function (selected, options) {
@ -275,66 +308,7 @@ export class RdDUtility {
const rgx = new RegExp(' value=[\"\']' + escapedValue + '[\"\']');
const html = options.fn(this);
return html.replace(rgx, "$& selected");
})
// logic
Handlebars.registerHelper('either', (a, b) => a ?? b);
// string manipulation
Handlebars.registerHelper('upperFirst', str => Misc.upperFirst(str ?? 'Null'));
Handlebars.registerHelper('lowerFirst', str => Misc.lowerFirst(str ?? 'Null'));
Handlebars.registerHelper('uppercase', str => str?.toUpperCase() ?? '');
Handlebars.registerHelper('lowercase', str => str?.toLowerCase() ?? '');
Handlebars.registerHelper('grammar-le', str => Grammar.articleDetermine(str));
Handlebars.registerHelper('grammar-apostrophe', (article, str) => Grammar.apostrophe(article, str));
Handlebars.registerHelper('grammar-un', str => Grammar.articleIndetermine(str));
Handlebars.registerHelper('grammar-accord', (genre, ...args) => Grammar.accord(genre, args));
// math
Handlebars.registerHelper('min', (...args) => Math.min(...args.slice(0, -1)));
Handlebars.registerHelper('repeat', function(n, block) {
let accum = '';
for(let i = 0; i < n; ++i){
accum += block.fn(i)
}
return accum
})
// tableaux, listes
Handlebars.registerHelper('array-includes', (array, value) => array.includes(value));
Handlebars.registerHelper('isLastIndex', (index, list) => index + 1 >= list.length);
Handlebars.registerHelper('trier', list => list.sort((a, b) => a.name.localeCompare(b.name)));
// table de résolution
Handlebars.registerHelper('computeResolutionScore', (row, col) => RdDResolutionTable.computePercentage(row, col));
Handlebars.registerHelper('computeResolutionChances', (row, col) => RdDResolutionTable.computeChances(row, col));
// gestion des dates et heures
Handlebars.registerHelper('timestamp-imgSigneHeure', (heure) => { return new Handlebars.SafeString(RdDTimestamp.imgSigneHeure(heure)) });
Handlebars.registerHelper('timestamp-imgSigne', (heure) => { return new Handlebars.SafeString(RdDTimestamp.imgSigne(heure)) });
Handlebars.registerHelper('timestamp-extract', timestamp => new RdDTimestamp(timestamp).toCalendrier());
Handlebars.registerHelper('timestamp-formulesDuree', () => RdDTimestamp.formulesDuree());
Handlebars.registerHelper('timestamp-formulesPeriode', () => RdDTimestamp.formulesPeriode());
// informations sur les acteurs
Handlebars.registerHelper('actor-default', (actorType, ...path) => RdDBaseActor.getDefaultValue(actorType, path.slice(0, -1)));
Handlebars.registerHelper('filtreTriCompetences', competences => RdDItemCompetence.triVisible(competences));
Handlebars.registerHelper('experienceLog-topic', topic => ExperienceLog.labelTopic(topic));
// inventaire et marchands
Handlebars.registerHelper('buildLigneInventaire', (item, options) => { return new Handlebars.SafeString(RdDUtility.buildLigneInventaire(item, options)); });
Handlebars.registerHelper('buildInventaireConteneur', (actorId, itemId, options) => { return new Handlebars.SafeString(RdDUtility.buildInventaireConteneur(actorId, itemId, options)); });
Handlebars.registerHelper('buildContenuConteneur', (item, options) => { return new Handlebars.SafeString(RdDUtility.buildContenuConteneur(item, options)); });
Handlebars.registerHelper('calculerPrixCommercant', item => item.calculerPrixCommercant());
Handlebars.registerHelper('uniteQuantite', (itemId, actorId) => RdDUtility.getItem(itemId, actorId)?.getUniteQuantite());
Handlebars.registerHelper('isFieldInventaireModifiable', (type, field) => RdDItem.isFieldInventaireModifiable(type, field));
// Items
Handlebars.registerHelper('rarete-getChamp', (rarete, field) => RdDRaretes.getChamp(rarete, field));
// TMRs
Handlebars.registerHelper('caseTmr-label', coord => TMRUtility.getTMRLabel(coord));
Handlebars.registerHelper('caseTmr-type', coord => TMRUtility.getTMRType(coord));
Handlebars.registerHelper('typeTmr-name', type => TMRUtility.typeTmrName(type));
Handlebars.registerHelper('effetRencontre-name', coord => TMRUtility.typeTmrName(coord));
});
return loadTemplates(templatePaths);
}

View File

@ -15,17 +15,17 @@ export const STATUSES = {
}
const rddStatusEffects = [
{ rdd: true, id: STATUSES.StatusStunned, name: 'EFFECT.StatusStunned', img: 'icons/svg/stoned.svg', "duration.rounds": 1 },
{ rdd: true, id: STATUSES.StatusBleeding, name: 'EFFECT.StatusBleeding', img: 'icons/svg/blood.svg' },
{ rdd: true, id: STATUSES.StatusProne, name: 'EFFECT.StatusProne', img: 'icons/svg/falling.svg' },
{ rdd: true, id: STATUSES.StatusGrappling, tint: '#33cc33', name: 'EFFECT.StatusGrappling', img: 'systems/foundryvtt-reve-de-dragon/icons/empoignade.webp' },
{ rdd: true, id: STATUSES.StatusGrappled, tint: '#ff9900', name: 'EFFECT.StatusGrappled', img: 'systems/foundryvtt-reve-de-dragon/icons/empoignade.webp' },
{ rdd: true, id: STATUSES.StatusRestrained, name: 'EFFECT.StatusRestrained', img: 'icons/svg/net.svg' },
{ rdd: true, id: STATUSES.StatusUnconscious, name: 'EFFECT.StatusUnconscious', img: 'icons/svg/unconscious.svg' },
{ rdd: true, id: STATUSES.StatusBlind, name: 'EFFECT.StatusBlind', img: 'icons/svg/blind.svg' },
{ rdd: true, id: STATUSES.StatusComma, name: 'EFFECT.StatusComma', img: 'icons/svg/skull.svg' },
{ rdd: true, id: STATUSES.StatusDead, name: 'EFFECT.StatusDead', img: 'icons/svg/skull.svg' },
{ rdd: true, id: STATUSES.StatusDemiReve, name: 'EFFECT.StatusDemiReve', img: 'systems/foundryvtt-reve-de-dragon/icons/heures/hd12.svg' }
{ rdd: true, id: STATUSES.StatusStunned, label: 'EFFECT.StatusStunned', icon: 'icons/svg/stoned.svg', "duration.rounds": 1 },
{ rdd: true, id: STATUSES.StatusBleeding, label: 'EFFECT.StatusBleeding', icon: 'icons/svg/blood.svg' },
{ rdd: true, id: STATUSES.StatusProne, label: 'EFFECT.StatusProne', icon: 'icons/svg/falling.svg' },
{ rdd: true, id: STATUSES.StatusGrappling, tint: '#33cc33', label: 'EFFECT.StatusGrappling', icon: 'systems/foundryvtt-reve-de-dragon/icons/empoignade.webp' },
{ rdd: true, id: STATUSES.StatusGrappled, tint: '#ff9900', label: 'EFFECT.StatusGrappled', icon: 'systems/foundryvtt-reve-de-dragon/icons/empoignade.webp' },
{ rdd: true, id: STATUSES.StatusRestrained, label: 'EFFECT.StatusRestrained', icon: 'icons/svg/net.svg' },
{ rdd: true, id: STATUSES.StatusUnconscious, label: 'EFFECT.StatusUnconscious', icon: 'icons/svg/unconscious.svg' },
{ rdd: true, id: STATUSES.StatusBlind, label: 'EFFECT.StatusBlind', icon: 'icons/svg/blind.svg' },
{ rdd: true, id: STATUSES.StatusComma, label: 'EFFECT.StatusComma', icon: 'icons/svg/skull.svg' },
{ rdd: true, id: STATUSES.StatusDead, label: 'EFFECT.StatusDead', icon: 'icons/svg/skull.svg' },
{ rdd: true, id: STATUSES.StatusDemiReve, label: 'EFFECT.StatusDemiReve', icon: 'systems/foundryvtt-reve-de-dragon/icons/heures/hd12.svg' }
];
const demiReveStatusEffect = rddStatusEffects.find(it => it.id == STATUSES.StatusDemiReve);
@ -57,7 +57,7 @@ export class StatusEffects extends FormApplication {
restricted: true
});
CONFIG.RDD.allEffects = rddStatusEffects.concat(CONFIG.statusEffects.filter(it => !rddEffectIds.includes(it.id)))
CONFIG.RDD.allEffects = rddStatusEffects.concat(CONFIG.statusEffects.filter(it => !rddEffectIds.includes(it.id)));
StatusEffects._setUseStatusEffects(StatusEffects._getUseStatusEffects());
console.log('statusEffects', CONFIG.statusEffects);

View File

@ -1,6 +1,5 @@
import { ChatUtility } from "../chat-utility.js";
import { HIDE_DICE, SYSTEM_RDD } from "../constants.js";
import { Grammar } from "../grammar.js";
import { RdDItem } from "../item.js";
import { Misc } from "../misc.js";
import { RdDDice } from "../rdd-dice.js";
@ -33,7 +32,7 @@ export class SystemCompendiums extends FormApplication {
compendium: compendium,
default: SystemCompendiums._getDefaultCompendium(compendium),
setting: SystemCompendiums._getSettingCompendium(compendium)
})
});
game.settings.register(SYSTEM_RDD, definition.setting, {
name: definition.label,
@ -41,8 +40,8 @@ export class SystemCompendiums extends FormApplication {
scope: "world",
config: false,
type: String
})
})
});
});
game.settings.registerMenu(SYSTEM_RDD, "compendium-settings", {
name: "Choisir les compendiums système",
@ -72,27 +71,26 @@ export class SystemCompendiums extends FormApplication {
static async getCompetences(actorType) {
switch (actorType ?? 'personnage') {
case 'personnage':
return await SystemCompendiums.getWorldOrCompendiumItems('competence', 'competences')
case 'entite':
case 'creature':
return await SystemCompendiums.getWorldOrCompendiumItems('competencecreature', 'competences-creatures')
case 'personnage': return await SystemCompendiums.getWorldOrCompendiumItems('competence', 'competences');
case 'creature': return await SystemCompendiums.getWorldOrCompendiumItems('competencecreature', 'competences-creatures');
case 'entite': return await SystemCompendiums.getWorldOrCompendiumItems('competencecreature', 'competences-entites');
case 'vehicule': return [];
}
}
/* -------------------------------------------- */
static async getWorldOrCompendiumItems(itemType, compendium) {
let items = game.items.filter(it => it.type == itemType)
let items = game.items.filter(it => it.type == itemType);
if (compendium) {
const ids = items.map(it => it.id)
const names = items.map(it => Grammar.toLowerCaseNoAccent(it.name))
const compendiumItems = await SystemCompendiums.getItems(compendium, itemType)
return items.concat(compendiumItems
const ids = items.map(it => it.id);
const names = items.map(it => it.name.toLowerCase());
const compendiumItems = await SystemCompendiums.getItems(compendium);
items = items.concat(compendiumItems
.filter(it => it.type == itemType)
.filter(it => !ids.includes(it.id))
.filter(it => !names.includes(Grammar.equalsInsensitive(it.name))))
.filter(it => !names.includes(it.name.toLowerCase())));
}
return items
return items;
}
static async loadDocument(document) {
@ -286,20 +284,23 @@ export class CompendiumTableHelpers {
}
/* -------------------------------------------- */
static async tableRowToChatMessage(row, type, options = { showSource: true }) {
static async tableRowToChatMessage(row, type = 'Item') {
if (!row) {
return;
}
const percentages = (row.total == 100) ? '%' : ''
const flavorContent = await renderTemplate('systems/foundryvtt-reve-de-dragon/templates/chat-compendium-table-roll.hbs', {
roll: row.roll,
document: row.document,
percentages,
typeName: Misc.typeName(type, row.document?.type ?? 'objet'),
isGM: game.user.isGM,
options
});
const messageData = {
// flavor: flavorContent,
user: game.user.id,
rolls: [row.roll],
type: CONST.CHAT_MESSAGE_TYPES.ROLL,
roll: row.roll,
sound: CONFIG.sounds.dice,
content: flavorContent
};

View File

@ -11,12 +11,7 @@ export class Targets {
}
static extractTokenData(target) {
return {
id: target?.id,
name: target?.document.name,
img: target?.document.texture.src ?? target?.actor.img ?? 'icons/svg/mystery-man.svg',
target
};
return { id: target?.id, name: target?.document.name, img: target?.document.texture.src ?? target?.actor.img ?? 'icons/svg/mystery-man.svg' };
}
static buildActorTokenData(tokenId, actor) {
return { id: tokenId, name: actor.name, img: actor.img ?? 'icons/svg/mystery-man.svg' };
@ -40,7 +35,7 @@ export class Targets {
label: "Choisir une seule des cibles",
list: targets.map(it => Targets.extractTokenData(it))
};
DialogSelect.select(selectData, t => onSelectTarget(t.target))
DialogSelect.select(selectData, onSelectTarget)
}
}
}

View File

@ -26,19 +26,22 @@ export class TMRRencontres {
* @param {*} forcedRoll
*/
async rollRencontre(terrain, forcedRoll) {
const tmrType = TMRUtility.findTMRLike(terrain)?.type
if (tmrType == undefined) {
terrain = TMRUtility.findTMRLike(terrain);
if (terrain == undefined) {
return undefined;
}
if (forcedRoll && (forcedRoll <= 0 || forcedRoll > 100)) {
forcedRoll = undefined;
}
const filtreMauvaise = tmrType == 'mauvaise' ? it => it.system.mauvaiseRencontre : it => !it.system.mauvaiseRencontre;
const frequence = it => it.system.frequence[tmrType];
const codeTerrain = Grammar.toLowerCaseNoAccent(terrain)
const filtreMauvaise = codeTerrain == 'mauvaise' ? it => it.system.mauvaiseRencontre : it => !it.system.mauvaiseRencontre;
const frequence = it => it.system.frequence[codeTerrain];
const row = await this.table.getRandom(frequence, filtreMauvaise, forcedRoll);
if (row) {
await CompendiumTableHelpers.tableRowToChatMessage(row, 'Item', {showSource: false});
console.log("DORM", row);
//row.document.system.computedForce = new Roll(row.document.system.formula).roll({async: false}).total;
await CompendiumTableHelpers.tableRowToChatMessage(row);
}
return row?.document;

View File

@ -2,216 +2,228 @@ import { Misc } from "./misc.js";
import { Grammar } from "./grammar.js";
import { RdDDice } from "./rdd-dice.js";
export const TMRType = {
cite: { type: 'cite', name: "cité", genre: "f" },
sanctuaire: { type: 'sanctuaire', name: "sanctuaire", genre: 'm' },
plaines: { type: 'plaines', name: "plaines", genre: "fp" },
pont: { type: 'pont', name: "pont", genre: "m" },
collines: { type: 'collines', name: "collines", genre: "p" },
foret: { type: 'foret', name: "forêt", genre: "f" },
monts: { type: 'monts', name: "monts", genre: "p" },
desert: { type: 'desert', name: "désert", genre: "m" },
fleuve: { type: 'fleuve', name: "fleuve", genre: "m" },
lac: { type: 'lac', name: "lac", genre: "m" },
marais: { type: 'marais', name: "marais", genre: "m" },
gouffre: { type: 'gouffre', name: "gouffre", genre: "m" },
necropole: { type: 'necropole', name: "nécropole", genre: "f" },
desolation: { type: 'desolation', name: "désolation", genre: "f" }
/* -------------------------------------------- */
const TMRMapping = {
A1: { type: "cite", label: "Cité Vide" },
B1: { type: "plaines", label: "Plaines dAssorh" },
C1: { type: "necropole", label: "Nécropole de Kroak" },
D1: { type: "fleuve", label: "Fleuve de l'Oubli" },
E1: { type: "monts", label: "Monts de Kanaï" },
F1: { type: "cite", label: "Cité Glauque" },
G1: { type: "desolation", label: "Désolation de Jamais" },
H1: { type: "lac", label: "Lac dAnticalme" },
I1: { type: "plaines", label: "Plaines Grises" },
J1: { type: "monts", label: "Monts Fainéants" },
K1: { type: "cite", label: "Cité dOnkause" },
L1: { type: "fleuve", label: "Fleuve de l'Oubli" },
M1: { type: "cite", label: "Cité Jalouse" },
A2: { type: "desert", label: "Désert de Mieux" },
B2: { type: "collines", label: "Collines de Dawell" },
C2: { type: "marais", label: "Marais Glignants" },
D2: { type: "cite", label: "Cité de Frost" },
E2: { type: "plaines", label: "Plaines de Fiask" },
F2: { type: "lac", label: "Lac de Misère" },
G2: { type: "marais", label: "Marais Nuisants" },
H2: { type: "collines", label: "Collines de Parta" },
I2: { type: "foret", label: "Forêt Fade" },
J2: { type: "desert", label: "Désert de Poly" },
K2: { type: "foret", label: "Forêt Tamée" },
L2: { type: "fleuve", label: "Fleuve de l'Oubli" },
M2: { type: "necropole", label: "Nécropole de Logos" },
A3: { type: "desolation", label: "Désolation de Demain" },
B3: { type: "plaines", label: "Plaines de Rubéga" },
C3: { type: "fleuve", label: "Fleuve de l'Oubli" },
D3: { type: "gouffre", label: "Gouffre dOki" },
E3: { type: "foret", label: "Forêt dEstoubh" },
F3: { type: "fleuve", label: "Fleuve de l'Oubli" },
G3: { type: "gouffre", label: "Gouffre de Sun" },
H3: { type: "foret", label: "Forêt de Ganna" },
I3: { type: "monts", label: "Monts Grinçants" },
J3: { type: "cite", label: "Cité Venin" },
K3: { type: "plaines", label: "Plaines de Dois" },
L3: { type: "lac", label: "Lac Laineux" },
M3: { type: "monts", label: "Monts de Vdah" },
A4: { type: "foret", label: "Forêt de Falconax" },
B4: { type: "monts", label: "Monts Crâneurs" },
C4: { type: "pont", label: "Pont de Giolii" },
D4: { type: "lac", label: "Lac de Foam" },
E4: { type: "plaines", label: "Plaines dOrti" },
F4: { type: "fleuve", label: "Fleuve de l'Oubli" },
G4: { type: "sanctuaire", label: "Sanctuaire Blanc" },
H4: { type: "plaines", label: "Plaines de Psark" },
I4: { type: "plaines", label: "Plaines de Xiax" },
J4: { type: "collines", label: "Collines dEncre" },
K4: { type: "pont", label: "Pont de Fah" },
L4: { type: "sanctuaire", label: "Sanctuaire Mauve" },
M4: { type: "gouffre", label: "Gouffre Grisant" },
A5: { type: "plaines", label: "Plaines de Trilkh" },
B5: { type: "collines", label: "Collines de Tanegy" },
C5: { type: "marais", label: "Marais Flouants" },
D5: { type: "fleuve", label: "Fleuve de l'Oubli" },
E5: { type: "monts", label: "Monts Brûlants" },
F5: { type: "cite", label: "Cité de Panople" },
G5: { type: "pont", label: "Pont dIk" },
H5: { type: "desert", label: "Désert de Krane" },
I5: { type: "desolation", label: "Désolation de Toujours" },
J5: { type: "marais", label: "Marais de Jab" },
K5: { type: "fleuve", label: "Fleuve de l'Oubli" },
L5: { type: "collines", label: "Collines Suaves" },
M5: { type: "cite", label: "Cité Rimarde" },
A6: { type: "necropole", label: "Nécropole de Zniak" },
B6: { type: "foret", label: "Forêt de Bust" },
C6: { type: "cite", label: "Cité Pavois" },
D6: { type: "fleuve", label: "Fleuve de l'Oubli" },
E6: { type: "sanctuaire", label: "Sanctuaire de Plaine" },
F6: { type: "fleuve", label: "Fleuve de l'Oubli" },
G6: { type: "marais", label: "Marais Glutants" },
H6: { type: "monts", label: "Monts Gurdes" },
I6: { type: "necropole", label: "Nécropole de Xotar" },
J6: { type: "lac", label: "Lac dIaupe" },
K6: { type: "desolation", label: "Désolation de Poor" },
L6: { type: "foret", label: "Forêt Gueuse" },
M6: { type: "desolation", label: "Désolation de Presque" },
A7: { type: "plaines", label: "Plaines de lArc" },
B7: { type: "marais", label: "Marais Bluants" },
C7: { type: "fleuve", label: "Fleuve de l'Oubli" },
D7: { type: "plaines", label: "Plaines dAffa" },
E7: { type: "foret", label: "Forêt de Glusks" },
F7: { type: "fleuve", label: "Fleuve de l'Oubli" },
G7: { type: "cite", label: "Cité de Terwa" },
H7: { type: "gouffre", label: "Gouffre de Kapfa" },
I7: { type: "plaines", label: "Plaines de Troo" },
J7: { type: "fleuve", label: "Fleuve de l'Oubli" },
K7: { type: "cite", label: "Cité de Kolix" },
L7: { type: "gouffre", label: "Gouffre dEpisophe" },
M7: { type: "desert", label: "Désert de Lave" },
A8: { type: "gouffre", label: "Gouffre de Shok" },
B8: { type: "fleuve", label: "Fleuve de l'Oubli" },
C8: { type: "foret", label: "Forêt Turmide" },
D8: { type: "cite", label: "Cité dOlak" },
E8: { type: "plaines", label: "Plaines dIolise" },
F8: { type: "lac", label: "Lac des Chats" },
G8: { type: "plaines", label: "Plaines Sans Joie" },
H8: { type: "foret", label: "Forêt dOurf" },
I8: { type: "fleuve", label: "Fleuve de l'Oubli" },
J8: { type: "monts", label: "Monts Barask" },
K8: { type: "desert", label: "Désert de Fumée" },
L8: { type: "monts", label: "Monts Tavelés" },
M8: { type: "plaines", label: "Plaines Lavées" },
A9: { type: "collines", label: "Collines de Korrex" },
B9: { type: "lac", label: "Lac de Lucre" },
C9: { type: "monts", label: "Monts Tuméfiés" },
D9: { type: "pont", label: "Pont dOrx" },
E9: { type: "fleuve", label: "Fleuve de l'Oubli" },
F9: { type: "plaines", label: "Plaines de Foe" },
G9: { type: "desolation", label: "Désolation de Sel" },
H9: { type: "collines", label: "Collines de Noirseul" },
I9: { type: "fleuve", label: "Fleuve de l'Oubli" },
J9: { type: "marais", label: "Marais Gronchants" },
K9: { type: "sanctuaire", label: "Sanctuaire Noir" },
L9: { type: "collines", label: "Collines Cornues" },
M9: { type: "necropole", label: "Nécropole de Zonar" },
A10: { type: "sanctuaire", label: "Sanctuaire dOlis" },
B10: { type: "monts", label: "Monts Salés" },
C10: { type: "marais", label: "Marais de Dom" },
D10: { type: "fleuve", label: "Fleuve de l'Oubli" },
E10: { type: "gouffre", label: "Gouffre de Junk" },
F10: { type: "marais", label: "Marais Zultants" },
G10: { type: "cite", label: "Cité de Sergal" },
H10: { type: "plaines", label: "Plaines Noires" },
I10: { type: "lac", label: "Lac Wanito" },
J10: { type: "fleuve", label: "Fleuve de l'Oubli" },
K10: { type: "plaines", label: "Plaines Jaunes" },
L10: { type: "desert", label: "Désert de Nicrop" },
M10: { type: "foret", label: "Forêt de Jajou" },
A11: { type: "desolation", label: "Désolation dHier" },
B11: { type: "cite", label: "Cité de Brilz" },
C11: { type: "pont", label: "Pont de Roï" },
D11: { type: "desolation", label: "Désolation de Partout" },
E11: { type: "lac", label: "Lac de Glinster" },
F11: { type: "cite", label: "Cité de Noape" },
G11: { type: "fleuve", label: "Fleuve de l'Oubli" },
H11: { type: "fleuve", label: "Fleuve de l'Oubli" },
I11: { type: "pont", label: "Pont de Yalm" },
J11: { type: "plaines", label: "Plaines de Miltiar" },
K11: { type: "cite", label: "Cité Tonnerre" },
L11: { type: "collines", label: "Collines de Kol" },
M11: { type: "cite", label: "Cité Crapaud" },
A12: { type: "plaines", label: "Plaines Sages" },
B12: { type: "fleuve", label: "Fleuve de l'Oubli" },
C12: { type: "lac", label: "Lac de Fricassa" },
D12: { type: "collines", label: "Collines dHuaï" },
E12: { type: "monts", label: "Monts Ajourés" },
F12: { type: "necropole", label: "Nécropole de Throat" },
G12: { type: "plaines", label: "Plaines de Lufmil" },
H12: { type: "collines", label: "Collines de Tooth" },
I12: { type: "gouffre", label: "Gouffre Abimeux" },
J12: { type: "cite", label: "Cité Folle" },
K12: { type: "desolation", label: "Désolation dAmour" },
L12: { type: "plaines", label: "Plaines Venteuses" },
M12: { type: "collines", label: "Collines Révulsantes" },
A13: { type: "fleuve", label: "Fleuve de l'Oubli" },
B13: { type: "gouffre", label: "Gouffre des Litiges" },
C13: { type: "desert", label: "Désert de Neige" },
D13: { type: "cite", label: "Cité Sordide" },
E13: { type: "plaines", label: "Plaines de Xnez" },
F13: { type: "foret", label: "Forêt des Cris" },
G13: { type: "plaines", label: "Plaines Calcaires" },
H13: { type: "desolation", label: "Désolation de Rien" },
I13: { type: "monts", label: "Monts Bigleux" },
J13: { type: "gouffre", label: "Gouffre de Gromph" },
K13: { type: "foret", label: "Forêt de Kluth" },
L13: { type: "monts", label: "Monts Dormants" },
M13: { type: "plaines", label: "Plaines dAnjou" },
A14: { type: "collines", label: "Collines de Stolis" },
B14: { type: "necropole", label: "Nécropole de Gorlo" },
C14: { type: "foret", label: "Forêt de Bissam" },
D14: { type: "sanctuaire", label: "Sanctuaire Plat" },
E14: { type: "monts", label: "Monts de Quath" },
F14: { type: "plaines", label: "Plaines Brisées" },
G14: { type: "desert", label: "Désert de Sek" },
H14: { type: "plaines", label: "Plaines Blanches" },
I14: { type: "cite", label: "Cité Destituée" },
J14: { type: "desert", label: "Désert de Sank" },
K14: { type: "necropole", label: "Nécropole dAntinéar" },
L14: { type: "plaines", label: "Plaines de Jislith" },
M14: { type: "desolation", label: "Désolation dAprès" },
A15: { type: "cite", label: "Cité de Mielh" },
C15: { type: "plaines", label: "Plaines de Toué" },
E15: { type: "foret", label: "Forêt des Furies" },
G15: { type: "plaines", label: "Plaines des Soupirs" },
I15: { type: "monts", label: "Monts des Dragées" },
K15: { type: "collines", label: "Collines Pourpres" },
M15: { type: "cite", label: "Cité de Klana" }
}
export const FLEUVE_COORD = 'Fleuve'
const TMRMapping = {
Fleuve: { type: TMRType.fleuve.type, label: "Fleuve de l'Oubli" },
A1: { type: TMRType.cite.type, label: "Cité Vide" },
B1: { type: TMRType.plaines.type, label: "Plaines dAssorh" },
C1: { type: TMRType.necropole.type, label: "Nécropole de Kroak" },
D1: { type: TMRType.fleuve.type, label: "Fleuve de l'Oubli" },
E1: { type: TMRType.monts.type, label: "Monts de Kanaï" },
F1: { type: TMRType.cite.type, label: "Cité Glauque" },
G1: { type: TMRType.desolation.type, label: "Désolation de Jamais" },
H1: { type: TMRType.lac.type, label: "Lac dAnticalme" },
I1: { type: TMRType.plaines.type, label: "Plaines Grises" },
J1: { type: TMRType.monts.type, label: "Monts Fainéants" },
K1: { type: TMRType.cite.type, label: "Cité dOnkause" },
L1: { type: TMRType.fleuve.type, label: "Fleuve de l'Oubli" },
M1: { type: TMRType.cite.type, label: "Cité Jalouse" },
A2: { type: TMRType.desert.type, label: "Désert de Mieux" },
B2: { type: TMRType.collines.type, label: "Collines de Dawell" },
C2: { type: TMRType.marais.type, label: "Marais Glignants" },
D2: { type: TMRType.cite.type, label: "Cité de Frost" },
E2: { type: TMRType.plaines.type, label: "Plaines de Fiask" },
F2: { type: TMRType.lac.type, label: "Lac de Misère" },
G2: { type: TMRType.marais.type, label: "Marais Nuisants" },
H2: { type: TMRType.collines.type, label: "Collines de Parta" },
I2: { type: TMRType.foret.type, label: "Forêt Fade" },
J2: { type: TMRType.desert.type, label: "Désert de Poly" },
K2: { type: TMRType.foret.type, label: "Forêt Tamée" },
L2: { type: TMRType.fleuve.type, label: "Fleuve de l'Oubli" },
M2: { type: TMRType.necropole.type, label: "Nécropole de Logos" },
A3: { type: TMRType.desolation.type, label: "Désolation de Demain" },
B3: { type: TMRType.plaines.type, label: "Plaines de Rubéga" },
C3: { type: TMRType.fleuve.type, label: "Fleuve de l'Oubli" },
D3: { type: TMRType.gouffre.type, label: "Gouffre dOki" },
E3: { type: TMRType.foret.type, label: "Forêt dEstoubh" },
F3: { type: TMRType.fleuve.type, label: "Fleuve de l'Oubli" },
G3: { type: TMRType.gouffre.type, label: "Gouffre de Sun" },
H3: { type: TMRType.foret.type, label: "Forêt de Ganna" },
I3: { type: TMRType.monts.type, label: "Monts Grinçants" },
J3: { type: TMRType.cite.type, label: "Cité Venin" },
K3: { type: TMRType.plaines.type, label: "Plaines de Dois" },
L3: { type: TMRType.lac.type, label: "Lac Laineux" },
M3: { type: TMRType.monts.type, label: "Monts de Vdah" },
A4: { type: TMRType.foret.type, label: "Forêt de Falconax" },
B4: { type: TMRType.monts.type, label: "Monts Crâneurs" },
C4: { type: TMRType.pont.type, label: "Pont de Giolii" },
D4: { type: TMRType.lac.type, label: "Lac de Foam" },
E4: { type: TMRType.plaines.type, label: "Plaines dOrti" },
F4: { type: TMRType.fleuve.type, label: "Fleuve de l'Oubli" },
G4: { type: TMRType.sanctuaire.type, label: "Sanctuaire Blanc" },
H4: { type: TMRType.plaines.type, label: "Plaines de Psark" },
I4: { type: TMRType.plaines.type, label: "Plaines de Xiax" },
J4: { type: TMRType.collines.type, label: "Collines dEncre" },
K4: { type: TMRType.pont.type, label: "Pont de Fah" },
L4: { type: TMRType.sanctuaire.type, label: "Sanctuaire Mauve" },
M4: { type: TMRType.gouffre.type, label: "Gouffre Grisant" },
A5: { type: TMRType.plaines.type, label: "Plaines de Trilkh" },
B5: { type: TMRType.collines.type, label: "Collines de Tanegy" },
C5: { type: TMRType.marais.type, label: "Marais Flouants" },
D5: { type: TMRType.fleuve.type, label: "Fleuve de l'Oubli" },
E5: { type: TMRType.monts.type, label: "Monts Brûlants" },
F5: { type: TMRType.cite.type, label: "Cité de Panople" },
G5: { type: TMRType.pont.type, label: "Pont dIk" },
H5: { type: TMRType.desert.type, label: "Désert de Krane" },
I5: { type: TMRType.desolation.type, label: "Désolation de Toujours" },
J5: { type: TMRType.marais.type, label: "Marais de Jab" },
K5: { type: TMRType.fleuve.type, label: "Fleuve de l'Oubli" },
L5: { type: TMRType.collines.type, label: "Collines Suaves" },
M5: { type: TMRType.cite.type, label: "Cité Rimarde" },
A6: { type: TMRType.necropole.type, label: "Nécropole de Zniak" },
B6: { type: TMRType.foret.type, label: "Forêt de Bust" },
C6: { type: TMRType.cite.type, label: "Cité Pavois" },
D6: { type: TMRType.fleuve.type, label: "Fleuve de l'Oubli" },
E6: { type: TMRType.sanctuaire.type, label: "Sanctuaire de Plaine" },
F6: { type: TMRType.fleuve.type, label: "Fleuve de l'Oubli" },
G6: { type: TMRType.marais.type, label: "Marais Glutants" },
H6: { type: TMRType.monts.type, label: "Monts Gurdes" },
I6: { type: TMRType.necropole.type, label: "Nécropole de Xotar" },
J6: { type: TMRType.lac.type, label: "Lac dIaupe" },
K6: { type: TMRType.desolation.type, label: "Désolation de Poor" },
L6: { type: TMRType.foret.type, label: "Forêt Gueuse" },
M6: { type: TMRType.desolation.type, label: "Désolation de Presque" },
A7: { type: TMRType.plaines.type, label: "Plaines de lArc" },
B7: { type: TMRType.marais.type, label: "Marais Bluants" },
C7: { type: TMRType.fleuve.type, label: "Fleuve de l'Oubli" },
D7: { type: TMRType.plaines.type, label: "Plaines dAffa" },
E7: { type: TMRType.foret.type, label: "Forêt de Glusks" },
F7: { type: TMRType.fleuve.type, label: "Fleuve de l'Oubli" },
G7: { type: TMRType.cite.type, label: "Cité de Terwa" },
H7: { type: TMRType.gouffre.type, label: "Gouffre de Kapfa" },
I7: { type: TMRType.plaines.type, label: "Plaines de Troo" },
J7: { type: TMRType.fleuve.type, label: "Fleuve de l'Oubli" },
K7: { type: TMRType.cite.type, label: "Cité de Kolix" },
L7: { type: TMRType.gouffre.type, label: "Gouffre dEpisophe" },
M7: { type: TMRType.desert.type, label: "Désert de Lave" },
A8: { type: TMRType.gouffre.type, label: "Gouffre de Shok" },
B8: { type: TMRType.fleuve.type, label: "Fleuve de l'Oubli" },
C8: { type: TMRType.foret.type, label: "Forêt Turmide" },
D8: { type: TMRType.cite.type, label: "Cité dOlak" },
E8: { type: TMRType.plaines.type, label: "Plaines dIolise" },
F8: { type: TMRType.lac.type, label: "Lac des Chats" },
G8: { type: TMRType.plaines.type, label: "Plaines Sans Joie" },
H8: { type: TMRType.foret.type, label: "Forêt dOurf" },
I8: { type: TMRType.fleuve.type, label: "Fleuve de l'Oubli" },
J8: { type: TMRType.monts.type, label: "Monts Barask" },
K8: { type: TMRType.desert.type, label: "Désert de Fumée" },
L8: { type: TMRType.monts.type, label: "Monts Tavelés" },
M8: { type: TMRType.plaines.type, label: "Plaines Lavées" },
A9: { type: TMRType.collines.type, label: "Collines de Korrex" },
B9: { type: TMRType.lac.type, label: "Lac de Lucre" },
C9: { type: TMRType.monts.type, label: "Monts Tuméfiés" },
D9: { type: TMRType.pont.type, label: "Pont dOrx" },
E9: { type: TMRType.fleuve.type, label: "Fleuve de l'Oubli" },
F9: { type: TMRType.plaines.type, label: "Plaines de Foe" },
G9: { type: TMRType.desolation.type, label: "Désolation de Sel" },
H9: { type: TMRType.collines.type, label: "Collines de Noirseul" },
I9: { type: TMRType.fleuve.type, label: "Fleuve de l'Oubli" },
J9: { type: TMRType.marais.type, label: "Marais Gronchants" },
K9: { type: TMRType.sanctuaire.type, label: "Sanctuaire Noir" },
L9: { type: TMRType.collines.type, label: "Collines Cornues" },
M9: { type: TMRType.necropole.type, label: "Nécropole de Zonar" },
A10: { type: TMRType.sanctuaire.type, label: "Sanctuaire dOlis" },
B10: { type: TMRType.monts.type, label: "Monts Salés" },
C10: { type: TMRType.marais.type, label: "Marais de Dom" },
D10: { type: TMRType.fleuve.type, label: "Fleuve de l'Oubli" },
E10: { type: TMRType.gouffre.type, label: "Gouffre de Junk" },
F10: { type: TMRType.marais.type, label: "Marais Zultants" },
G10: { type: TMRType.cite.type, label: "Cité de Sergal" },
H10: { type: TMRType.plaines.type, label: "Plaines Noires" },
I10: { type: TMRType.lac.type, label: "Lac Wanito" },
J10: { type: TMRType.fleuve.type, label: "Fleuve de l'Oubli" },
K10: { type: TMRType.plaines.type, label: "Plaines Jaunes" },
L10: { type: TMRType.desert.type, label: "Désert de Nicrop" },
M10: { type: TMRType.foret.type, label: "Forêt de Jajou" },
A11: { type: TMRType.desolation.type, label: "Désolation dHier" },
B11: { type: TMRType.cite.type, label: "Cité de Brilz" },
C11: { type: TMRType.pont.type, label: "Pont de Roï" },
D11: { type: TMRType.desolation.type, label: "Désolation de Partout" },
E11: { type: TMRType.lac.type, label: "Lac de Glinster" },
F11: { type: TMRType.cite.type, label: "Cité de Noape" },
G11: { type: TMRType.fleuve.type, label: "Fleuve de l'Oubli" },
H11: { type: TMRType.fleuve.type, label: "Fleuve de l'Oubli" },
I11: { type: TMRType.pont.type, label: "Pont de Yalm" },
J11: { type: TMRType.plaines.type, label: "Plaines de Miltiar" },
K11: { type: TMRType.cite.type, label: "Cité Tonnerre" },
L11: { type: TMRType.collines.type, label: "Collines de Kol" },
M11: { type: TMRType.cite.type, label: "Cité Crapaud" },
A12: { type: TMRType.plaines.type, label: "Plaines Sages" },
B12: { type: TMRType.fleuve.type, label: "Fleuve de l'Oubli" },
C12: { type: TMRType.lac.type, label: "Lac de Fricassa" },
D12: { type: TMRType.collines.type, label: "Collines dHuaï" },
E12: { type: TMRType.monts.type, label: "Monts Ajourés" },
F12: { type: TMRType.necropole.type, label: "Nécropole de Throat" },
G12: { type: TMRType.plaines.type, label: "Plaines de Lufmil" },
H12: { type: TMRType.collines.type, label: "Collines de Tooth" },
I12: { type: TMRType.gouffre.type, label: "Gouffre Abimeux" },
J12: { type: TMRType.cite.type, label: "Cité Folle" },
K12: { type: TMRType.desolation.type, label: "Désolation dAmour" },
L12: { type: TMRType.plaines.type, label: "Plaines Venteuses" },
M12: { type: TMRType.collines.type, label: "Collines Révulsantes" },
A13: { type: TMRType.fleuve.type, label: "Fleuve de l'Oubli" },
B13: { type: TMRType.gouffre.type, label: "Gouffre des Litiges" },
C13: { type: TMRType.desert.type, label: "Désert de Neige" },
D13: { type: TMRType.cite.type, label: "Cité Sordide" },
E13: { type: TMRType.plaines.type, label: "Plaines de Xnez" },
F13: { type: TMRType.foret.type, label: "Forêt des Cris" },
G13: { type: TMRType.plaines.type, label: "Plaines Calcaires" },
H13: { type: TMRType.desolation.type, label: "Désolation de Rien" },
I13: { type: TMRType.monts.type, label: "Monts Bigleux" },
J13: { type: TMRType.gouffre.type, label: "Gouffre de Gromph" },
K13: { type: TMRType.foret.type, label: "Forêt de Kluth" },
L13: { type: TMRType.monts.type, label: "Monts Dormants" },
M13: { type: TMRType.plaines.type, label: "Plaines dAnjou" },
A14: { type: TMRType.collines.type, label: "Collines de Stolis" },
B14: { type: TMRType.necropole.type, label: "Nécropole de Gorlo" },
C14: { type: TMRType.foret.type, label: "Forêt de Bissam" },
D14: { type: TMRType.sanctuaire.type, label: "Sanctuaire Plat" },
E14: { type: TMRType.monts.type, label: "Monts de Quath" },
F14: { type: TMRType.plaines.type, label: "Plaines Brisées" },
G14: { type: TMRType.desert.type, label: "Désert de Sek" },
H14: { type: TMRType.plaines.type, label: "Plaines Blanches" },
I14: { type: TMRType.cite.type, label: "Cité Destituée" },
J14: { type: TMRType.desert.type, label: "Désert de Sank" },
K14: { type: TMRType.necropole.type, label: "Nécropole dAntinéar" },
L14: { type: TMRType.plaines.type, label: "Plaines de Jislith" },
M14: { type: TMRType.desolation.type, label: "Désolation dAprès" },
A15: { type: TMRType.cite.type, label: "Cité de Mielh" },
C15: { type: TMRType.plaines.type, label: "Plaines de Toué" },
E15: { type: TMRType.foret.type, label: "Forêt des Furies" },
G15: { type: TMRType.plaines.type, label: "Plaines des Soupirs" },
I15: { type: TMRType.monts.type, label: "Monts des Dragées" },
K15: { type: TMRType.collines.type, label: "Collines Pourpres" },
M15: { type: TMRType.cite.type, label: "Cité de Klana" }
export const TMRType = {
cite: { name: "cité", genre: "f" },
sanctuaire: { name: "sanctuaire", genre: 'm' },
plaines: { name: "plaines", genre: "fp" },
pont: { name: "pont", genre: "m" },
collines: { name: "collines", genre: "p" },
foret: { name: "forêt", genre: "f" },
monts: { name: "monts", genre: "p" },
desert: { name: "désert", genre: "m" },
fleuve: { name: "fleuve", genre: "m" },
lac: { name: "lac", genre: "m" },
marais: { name: "marais", genre: "m" },
gouffre: { name: "gouffre", genre: "m" },
necropole: { name: "nécropole", genre: "f" },
desolation: { name: "désolation", genre: "f" }
}
/* -------------------------------------------- */
@ -239,16 +251,13 @@ const TMR_MOVE = {
*/
export class TMRUtility {
static init() {
for (let coord in TMRMapping) {
const tmr = TMRMapping[coord]
tmr.coord = coord
tmr.genre = TMRType[tmr.type].genre
if (coord != FLEUVE_COORD) {
tmr.oddq = TMRUtility.coordTMRToOddq(coord)
}
const tmr = TMRMapping[coord];
tmr.coord = coord;
tmr.oddq = TMRUtility.coordTMRToOddq(coord);
tmr.genre = TMRType[tmr.type].genre;
}
let tmrByType = Misc.classify(Object.values(TMRMapping).filter(it => it.coord != FLEUVE_COORD))
let tmrByType = Misc.classify(Object.values(TMRMapping));
for (const [type, list] of Object.entries(tmrByType)) {
TMRType[type].list = list;
}
@ -256,17 +265,14 @@ export class TMRUtility {
/* -------------------------------------------- */
static verifyTMRCoord(coord) {
return Grammar.equalsInsensitive(coord, FLEUVE_COORD) || TMRUtility.getTMR(coord);
return Grammar.equalsInsensitive(coord, 'Fleuve') || TMRUtility.getTMR(coord);
}
/* -------------------------------------------- */
static getTMR(coord) {
return coord == FLEUVE_COORD ? TMRMapping['D1'] : TMRMapping[coord];
return coord == 'Fleuve' ? TMRMapping['D1'] : TMRMapping[coord];
}
static isFleuve(coord) {
return TMRMapping[coord]?.type == TMRType.fleuve.type
}
static getTMRLabel(coord) {
return TMRUtility.getTMR(coord)?.label ?? (coord + ": case inconnue");
}
@ -284,18 +290,18 @@ export class TMRUtility {
static findTMRLike(type, options = { inclusMauvaise: true }) {
const choix = [...Object.values(TMRType)]
if (options.inclusMauvaise) {
choix.push({ name: 'Mauvaise', type: 'mauvaise'});
choix.push({ name: 'Mauvaise' });
}
const selection = Misc.findAllLike(type, choix)
const selection = Misc.findAllLike(type, choix).map(it => it.name);
if (selection.length == 0) {
ui.notifications.warn(`Un type de TMR doit être indiqué, '${type}' n'est pas trouvé dans ${choix}`);
return undefined
}
if (selection.length > 1) {
ui.notifications.warn(`Plusieurs types de TMR pourraient correspondre à '${type}': ${selection.map(it => it.name)}`);
return undefined;
}
return selection[0]
if (selection.length > 1) {
ui.notifications.warn(`Plusieurs types de TMR pourraient correspondre à '${type}': ${selection}`);
return undefined;
}
return selection[0];
}
static typeTmrName(type) {
@ -320,7 +326,7 @@ export class TMRUtility {
/* -------------------------------------------- */
static deplacement(coordOrig, moveName) {
const tmrMove = TMR_MOVE[moveName];
if (!tmrMove) {
if (! tmrMove) {
ui.notifications.error(`Le déplacement dans les TMR '${moveName}' est inconnu`)
return coordOrig
}

View File

@ -1,3 +1,32 @@
// pixiTMR.animate(pixiApp => pixiApp.ticker.add((delta) => {
// if (!sprite.waveAnimation) {
// sprite.waveAnimation = {
// originx: sprite.x,
// movex: 0,
// step: 0.03
// }
// }
// else {
// if (Math.abs(sprite.waveAnimation.movex) > 2) {
// sprite.waveAnimation.step = -sprite.waveAnimation.step
// }
// sprite.waveAnimation.movex += sprite.waveAnimation.step;
// }
// sprite.x = sprite.waveAnimation.originx + sprite.waveAnimation.movex
// }));
// return pixiTMR.square(this.code(),
// {
// zIndex: tmrTokenZIndex.trounoir,
// tint: tmrColors.trounoir,
// alpha: 1,
// taille: () => pixiTMR.sizes.full,
// decallage: {
// x: -pixiTMR.sizes.half,
// y: -pixiTMR.sizes.half
// }
// })
export class TMRAnimations {
static withAnimation(sprite, pixiTMR, ...animations) {

View File

@ -1,39 +1,16 @@
import { SYSTEM_RDD } from "../constants.js";
import { TMRUtility } from "../tmr-utility.js";
import { Draconique } from "./draconique.js";
import { PixiTMR } from "./pixi-tmr.js";
const IMAGE_CARTE_TMR = 'image-carte-tmr';
const TMR_V1 = "systems/foundryvtt-reve-de-dragon/styles/img/ui/tmr-v1.webp";
const TMR_V2 = "systems/foundryvtt-reve-de-dragon/styles/img/ui/tmr-v2.webp";
const TMR_V3_COULEUR = "systems/foundryvtt-reve-de-dragon/styles/img/ui/tmr-v3-couleur.webp";
export class CarteTmr extends Draconique {
static initSettings() {
game.settings.register(SYSTEM_RDD, IMAGE_CARTE_TMR,
{
name: 'Carte des TMR',
hint: "Choix de l'image de la carte des TMR",
scope: "client",
requiresReload: true,
config: true,
choices: {
[TMR_V3_COULEUR]: "TMR Scriptarium v3 couleur",
[TMR_V2]: "TMR Multisim v2",
[TMR_V1]: "TMR NEF v1",
},
default: TMR_V3_COULEUR,
type: String
})
}
type() { return '' }
match(item) { return false; }
manualMessage() { return false }
async onActorCreateOwned(actor, item) { }
code() { return 'tmr' }
img() { return game.settings.get(SYSTEM_RDD, IMAGE_CARTE_TMR) }
img() { return 'systems/foundryvtt-reve-de-dragon/styles/img/ui/tmr.webp' }
createSprite(pixiTMR) {
const img = PixiTMR.getImgFromCode(this.code())

View File

@ -43,9 +43,6 @@ export class EffetsDraconiques {
static augmentationSeuil = new AugmentationSeuil();
static initSettings() {
CarteTmr.initSettings()
}
static init() {
Draconique.init();
Draconique.register(EffetsDraconiques.carteTmr);

View File

@ -184,9 +184,12 @@ export class PixiTMR {
const coordTMR = TMRUtility.oddqToCoordTMR(oddq);
const tmr = TMRUtility.getTMR(coordTMR)
if (tmr) {
return this.tmrDialog.getTokensDetails(coordTMR)
const tmrTooltip = `${coordTMR}: ${TMRUtility.getTMRLabel(coordTMR)}`;
const tokenTooltips = this.tmrDialog.allTokens
.filter(token => token.coordTMR() == coordTMR)
.map(token => token.tooltip);
return [tmrTooltip, ...tokenTooltips].reduce(Misc.joining('\n'))
}
return undefined
}
computeEventOddq(event) {

View File

@ -17,11 +17,11 @@ export class SortReserve extends Draconique {
createSprite(pixiTMR) {
return pixiTMR.sprite(this.code(), {
zIndex: tmrTokenZIndex.sort,
decallage: pixiTMR.sizes.decallage(-0.6, 0),
taille: () => pixiTMR.sizes.half,
decallage: pixiTMR.sizes.decallage(-1, 0),
taille: () => pixiTMR.sizes.third,
});
}
tokens(pixiTMR, linkData, coordTMR, type = undefined) {
if (TMRUtility.getTMR(coordTMR()).type == 'fleuve') {
const tooltip = this.tooltip(linkData)

View File

@ -19,8 +19,8 @@ export class TerreAttache extends Draconique {
createSprite(pixiTMR) {
return pixiTMR.sprite(this.code(), {
zIndex: tmrTokenZIndex.tetes,
decallage: pixiTMR.sizes.decallage(0.8, 0.8),
taille: () => pixiTMR.sizes.half
decallage: pixiTMR.sizes.decallage(1, 1),
taille: () => pixiTMR.sizes.third
});
}

View File

@ -17,7 +17,7 @@ items:
carac_value: 13
niveau: 3
default_diffLibre: 0
categorie: generale
categorie: ''
categorie_parade: ''
iscombat: false
isnaturelle: true
@ -28,9 +28,14 @@ items:
ownership:
default: 0
_stats:
systemId: foundryvtt-reve-de-dragon
systemVersion: 12.0.22
systemId: null
systemVersion: null
coreVersion: '12.331'
createdTime: null
modifiedTime: null
lastModifiedBy: null
compendiumSource: null
duplicateSource: null
_key: '!actors.items!Igt8XPaL7NQrGYlq.shsUV8UpU18c0RJK'
- _id: CYpxxf1uTa78NWR9
name: Esquive
@ -46,7 +51,7 @@ items:
carac_value: 8
niveau: 3
default_diffLibre: 0
categorie: generale
categorie: ''
categorie_parade: ''
iscombat: false
isnaturelle: true
@ -57,9 +62,14 @@ items:
ownership:
default: 0
_stats:
systemId: foundryvtt-reve-de-dragon
systemVersion: 12.0.22
systemId: null
systemVersion: null
coreVersion: '12.331'
createdTime: null
modifiedTime: null
lastModifiedBy: null
compendiumSource: null
duplicateSource: null
_key: '!actors.items!Igt8XPaL7NQrGYlq.CYpxxf1uTa78NWR9'
- _id: lzEdMrKXbOYrWG5S
name: Vigilance
@ -75,7 +85,7 @@ items:
carac_value: 11
niveau: 3
default_diffLibre: 0
categorie: generale
categorie: ''
categorie_parade: ''
iscombat: false
isnaturelle: true
@ -86,14 +96,23 @@ items:
ownership:
default: 0
_stats:
systemId: foundryvtt-reve-de-dragon
systemVersion: 12.0.22
systemId: null
systemVersion: null
coreVersion: '12.331'
createdTime: null
modifiedTime: null
lastModifiedBy: null
compendiumSource: null
duplicateSource: null
_key: '!actors.items!Igt8XPaL7NQrGYlq.lzEdMrKXbOYrWG5S'
- _id: NWmRryjNFkXcd1v9
name: Piétinement
type: competencecreature
sort: 150000
flags:
core:
sourceId: >-
Compendium.foundryvtt-reve-de-dragon.competences-creatures.PrVuVpwuYaZtwRUi
img: systems/foundryvtt-reve-de-dragon/icons/compcreature-pietinement.webp
effects: []
folder: null
@ -115,12 +134,21 @@ items:
default: 0
_stats:
systemId: foundryvtt-reve-de-dragon
systemVersion: 12.0.22
systemVersion: 10.7.19
coreVersion: '12.331'
createdTime: null
modifiedTime: 1686700776394
lastModifiedBy: Hp9ImM4o9YRTSdfu
compendiumSource: >-
Compendium.foundryvtt-reve-de-dragon.competences-creatures.PrVuVpwuYaZtwRUi
duplicateSource: null
_key: '!actors.items!Igt8XPaL7NQrGYlq.NWmRryjNFkXcd1v9'
effects: []
folder: null
sort: 100001
flags:
core:
sourceId: Compendium.foundryvtt-reve-de-dragon.animaux.Igt8XPaL7NQrGYlq
system:
carac:
taille:
@ -228,9 +256,57 @@ system:
<p>&nbsp;</p>
race: ''
notesmj: ''
notesmj: Notes du MJ
blessures:
legeres:
liste:
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
graves:
liste:
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
critiques:
liste:
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
ownership:
default: 0
Q2G6GTdrotKzYGUC: 3
prototypeToken:
flags: {}
name: Aligate
@ -309,7 +385,12 @@ prototypeToken:
texture: null
_stats:
systemId: foundryvtt-reve-de-dragon
systemVersion: 12.0.22
systemVersion: 10.7.19
coreVersion: '12.331'
createdTime: 1663623574848
modifiedTime: 1686701218698
lastModifiedBy: Hp9ImM4o9YRTSdfu
compendiumSource: Compendium.foundryvtt-reve-de-dragon.animaux.Igt8XPaL7NQrGYlq
duplicateSource: null
_key: '!actors!Igt8XPaL7NQrGYlq'

View File

@ -17,7 +17,7 @@ items:
carac_value: 14
niveau: 4
default_diffLibre: 0
categorie: generale
categorie: ''
categorie_parade: ''
iscombat: false
isnaturelle: true
@ -28,9 +28,14 @@ items:
ownership:
default: 0
_stats:
systemId: foundryvtt-reve-de-dragon
systemVersion: 12.0.22
systemId: null
systemVersion: null
coreVersion: '12.331'
createdTime: null
modifiedTime: null
lastModifiedBy: null
compendiumSource: null
duplicateSource: null
_key: '!actors.items!ppjPZoSKp7j841bp.shsUV8UpU18c0RJK'
- _id: yDHZfK4RmwQW4YaW
name: Discrétion
@ -46,7 +51,7 @@ items:
carac_value: 14
niveau: 4
default_diffLibre: 0
categorie: generale
categorie: ''
categorie_parade: ''
iscombat: false
isnaturelle: true
@ -57,9 +62,14 @@ items:
ownership:
default: 0
_stats:
systemId: foundryvtt-reve-de-dragon
systemVersion: 12.0.22
systemId: null
systemVersion: null
coreVersion: '12.331'
createdTime: null
modifiedTime: null
lastModifiedBy: null
compendiumSource: null
duplicateSource: null
_key: '!actors.items!ppjPZoSKp7j841bp.yDHZfK4RmwQW4YaW'
- _id: CYpxxf1uTa78NWR9
name: Esquive
@ -75,7 +85,7 @@ items:
carac_value: 14
niveau: 4
default_diffLibre: 0
categorie: generale
categorie: ''
categorie_parade: ''
iscombat: false
isnaturelle: true
@ -86,9 +96,14 @@ items:
ownership:
default: 0
_stats:
systemId: foundryvtt-reve-de-dragon
systemVersion: 12.0.22
systemId: null
systemVersion: null
coreVersion: '12.331'
createdTime: null
modifiedTime: null
lastModifiedBy: null
compendiumSource: null
duplicateSource: null
_key: '!actors.items!ppjPZoSKp7j841bp.CYpxxf1uTa78NWR9'
- _id: 6DK46pyO0hzEuuUg
name: Morsure
@ -116,8 +131,13 @@ items:
default: 0
_stats:
systemId: foundryvtt-reve-de-dragon
systemVersion: 12.0.22
systemVersion: 10.7.19
coreVersion: '12.331'
createdTime: null
modifiedTime: 1686700776403
lastModifiedBy: Hp9ImM4o9YRTSdfu
compendiumSource: null
duplicateSource: null
_key: '!actors.items!ppjPZoSKp7j841bp.6DK46pyO0hzEuuUg'
- _id: lzEdMrKXbOYrWG5S
name: Vigilance
@ -133,7 +153,7 @@ items:
carac_value: 15
niveau: 6
default_diffLibre: 0
categorie: generale
categorie: ''
categorie_parade: ''
iscombat: false
isnaturelle: true
@ -144,13 +164,21 @@ items:
ownership:
default: 0
_stats:
systemId: foundryvtt-reve-de-dragon
systemVersion: 12.0.22
systemId: null
systemVersion: null
coreVersion: '12.331'
createdTime: null
modifiedTime: null
lastModifiedBy: null
compendiumSource: null
duplicateSource: null
_key: '!actors.items!ppjPZoSKp7j841bp.lzEdMrKXbOYrWG5S'
effects: []
folder: null
sort: 100001
flags:
core:
sourceId: Compendium.foundryvtt-reve-de-dragon.animaux.ppjPZoSKp7j841bp
system:
carac:
taille:
@ -257,12 +285,99 @@ system:
d&eacute;vore.</p>
<h1>Venin</h1>
<p>@UUID[Compendium.foundryvtt-reve-de-dragon.maladies-et-poisons.Item.v7yZidE9mObKO566]{Venin d'Araflate}</p>
<p></p>
<table style="width: 65.039%; height: 65px;" border="1">
<tbody>
<tr style="height: 16px;">
<td style="width: 30.8567%; height: 16px;">Malignit&eacute;</td>
<td style="width: 68.3263%; height: 16px;">6</td>
</tr>
<tr style="height: 16px;">
<td style="width: 30.8567%; height: 16px;">P&eacute;riodicit&eacute;</td>
<td style="width: 68.3263%; height: 16px;">1 round</td>
</tr>
<tr style="height: 16px;">
<td style="width: 30.8567%; height: 16px;">Dommages</td>
<td style="width: 68.3263%; height: 16px;">-1d6 points d'endurance</td>
</tr>
<tr style="height: 17px;">
<td style="width: 30.8567%; height: 17px;">Antidotes</td>
<td style="width: 68.3263%; height: 17px;">-3 \ Liqueur de Bagdol +12, Lait
de lune +6</td>
</tr>
</tbody>
</table>
race: ''
notesmj: ''
notesmj: Notes du MJ
blessures:
legeres:
liste:
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
graves:
liste:
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
critiques:
liste:
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
ownership:
default: 0
jOzRscDxoXZWpGS6: 3
prototypeToken:
flags: {}
name: Araflate
@ -341,7 +456,12 @@ prototypeToken:
texture: null
_stats:
systemId: foundryvtt-reve-de-dragon
systemVersion: 12.0.22
systemVersion: 10.7.19
coreVersion: '12.331'
createdTime: 1663623574886
modifiedTime: 1686701218699
lastModifiedBy: Hp9ImM4o9YRTSdfu
compendiumSource: Compendium.foundryvtt-reve-de-dragon.animaux.ppjPZoSKp7j841bp
duplicateSource: null
_key: '!actors!ppjPZoSKp7j841bp'

View File

@ -17,7 +17,7 @@ items:
carac_value: 8
niveau: 0
default_diffLibre: 0
categorie: generale
categorie: ''
categorie_parade: ''
iscombat: false
isnaturelle: true
@ -28,9 +28,14 @@ items:
ownership:
default: 0
_stats:
systemId: foundryvtt-reve-de-dragon
systemVersion: 12.0.22
systemId: null
systemVersion: null
coreVersion: '12.331'
createdTime: null
modifiedTime: null
lastModifiedBy: null
compendiumSource: null
duplicateSource: null
_key: '!actors.items!Q0i8frS62Mn7SW5c.shsUV8UpU18c0RJK'
- _id: yDHZfK4RmwQW4YaW
name: Discrétion
@ -46,7 +51,7 @@ items:
carac_value: 13
niveau: 4
default_diffLibre: 0
categorie: generale
categorie: ''
categorie_parade: ''
iscombat: false
isnaturelle: true
@ -57,9 +62,14 @@ items:
ownership:
default: 0
_stats:
systemId: foundryvtt-reve-de-dragon
systemVersion: 12.0.22
systemId: null
systemVersion: null
coreVersion: '12.331'
createdTime: null
modifiedTime: null
lastModifiedBy: null
compendiumSource: null
duplicateSource: null
_key: '!actors.items!Q0i8frS62Mn7SW5c.yDHZfK4RmwQW4YaW'
- _id: CYpxxf1uTa78NWR9
name: Esquive
@ -75,7 +85,7 @@ items:
carac_value: 8
niveau: 1
default_diffLibre: 0
categorie: generale
categorie: ''
categorie_parade: ''
iscombat: false
isnaturelle: true
@ -86,9 +96,14 @@ items:
ownership:
default: 0
_stats:
systemId: foundryvtt-reve-de-dragon
systemVersion: 12.0.22
systemId: null
systemVersion: null
coreVersion: '12.331'
createdTime: null
modifiedTime: null
lastModifiedBy: null
compendiumSource: null
duplicateSource: null
_key: '!actors.items!Q0i8frS62Mn7SW5c.CYpxxf1uTa78NWR9'
- _id: 6DK46pyO0hzEuuUg
name: Morsure
@ -116,8 +131,13 @@ items:
default: 0
_stats:
systemId: foundryvtt-reve-de-dragon
systemVersion: 12.0.22
systemVersion: 10.7.19
coreVersion: '12.331'
createdTime: null
modifiedTime: 1686700776417
lastModifiedBy: Hp9ImM4o9YRTSdfu
compendiumSource: null
duplicateSource: null
_key: '!actors.items!Q0i8frS62Mn7SW5c.6DK46pyO0hzEuuUg'
- _id: lzEdMrKXbOYrWG5S
name: Vigilance
@ -133,7 +153,7 @@ items:
carac_value: 12
niveau: 4
default_diffLibre: 0
categorie: generale
categorie: ''
categorie_parade: ''
iscombat: false
isnaturelle: true
@ -144,13 +164,21 @@ items:
ownership:
default: 0
_stats:
systemId: foundryvtt-reve-de-dragon
systemVersion: 12.0.22
systemId: null
systemVersion: null
coreVersion: '12.331'
createdTime: null
modifiedTime: null
lastModifiedBy: null
compendiumSource: null
duplicateSource: null
_key: '!actors.items!Q0i8frS62Mn7SW5c.lzEdMrKXbOYrWG5S'
effects: []
folder: null
sort: 100001
flags:
core:
sourceId: Compendium.foundryvtt-reve-de-dragon.animaux.Q0i8frS62Mn7SW5c
system:
carac:
taille:
@ -250,9 +278,57 @@ system:
d&eacute;vorer tout ce qui bouge. Ses r&eacute;ussites particuli&egrave;res
sont toujours en <em>force</em>.</p>
race: ''
notesmj: ''
notesmj: Notes du MJ
blessures:
legeres:
liste:
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
graves:
liste:
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
critiques:
liste:
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
ownership:
default: 0
jOzRscDxoXZWpGS6: 3
prototypeToken:
flags: {}
name: Baffreux
@ -265,9 +341,9 @@ prototypeToken:
disposition: -1
displayBars: 0
bar1:
attribute: sante.vie
attribute: null
bar2:
attribute: sante.endurance
attribute: null
randomImg: false
alpha: 1
light:
@ -331,7 +407,12 @@ prototypeToken:
texture: null
_stats:
systemId: foundryvtt-reve-de-dragon
systemVersion: 12.0.22
systemVersion: 10.7.19
coreVersion: '12.331'
createdTime: 1663623574857
modifiedTime: 1686701218700
lastModifiedBy: Hp9ImM4o9YRTSdfu
compendiumSource: Compendium.foundryvtt-reve-de-dragon.animaux.Q0i8frS62Mn7SW5c
duplicateSource: null
_key: '!actors!Q0i8frS62Mn7SW5c'

View File

@ -17,7 +17,7 @@ items:
carac_value: 15
niveau: 6
default_diffLibre: 0
categorie: generale
categorie: ''
categorie_parade: ''
iscombat: false
isnaturelle: true
@ -28,9 +28,14 @@ items:
ownership:
default: 0
_stats:
systemId: foundryvtt-reve-de-dragon
systemVersion: 12.0.22
systemId: null
systemVersion: null
coreVersion: '12.331'
createdTime: null
modifiedTime: null
lastModifiedBy: null
compendiumSource: null
duplicateSource: null
_key: '!actors.items!ZLROmHLm6G9pElkk.shsUV8UpU18c0RJK'
- _id: CYpxxf1uTa78NWR9
name: Esquive
@ -46,7 +51,7 @@ items:
carac_value: 10
niveau: 3
default_diffLibre: 0
categorie: generale
categorie: ''
categorie_parade: ''
iscombat: false
isnaturelle: true
@ -57,9 +62,14 @@ items:
ownership:
default: 0
_stats:
systemId: foundryvtt-reve-de-dragon
systemVersion: 12.0.22
systemId: null
systemVersion: null
coreVersion: '12.331'
createdTime: null
modifiedTime: null
lastModifiedBy: null
compendiumSource: null
duplicateSource: null
_key: '!actors.items!ZLROmHLm6G9pElkk.CYpxxf1uTa78NWR9'
- _id: BjqRrGtHtTzuNpZB
name: Griffes et Crocs
@ -87,8 +97,13 @@ items:
default: 0
_stats:
systemId: foundryvtt-reve-de-dragon
systemVersion: 12.0.22
systemVersion: 10.7.19
coreVersion: '12.331'
createdTime: null
modifiedTime: 1686700776423
lastModifiedBy: Hp9ImM4o9YRTSdfu
compendiumSource: null
duplicateSource: null
_key: '!actors.items!ZLROmHLm6G9pElkk.BjqRrGtHtTzuNpZB'
- _id: lzEdMrKXbOYrWG5S
name: Vigilance
@ -104,7 +119,7 @@ items:
carac_value: 13
niveau: 3
default_diffLibre: 0
categorie: generale
categorie: ''
categorie_parade: ''
iscombat: false
isnaturelle: true
@ -115,13 +130,21 @@ items:
ownership:
default: 0
_stats:
systemId: foundryvtt-reve-de-dragon
systemVersion: 12.0.22
systemId: null
systemVersion: null
coreVersion: '12.331'
createdTime: null
modifiedTime: null
lastModifiedBy: null
compendiumSource: null
duplicateSource: null
_key: '!actors.items!ZLROmHLm6G9pElkk.lzEdMrKXbOYrWG5S'
effects: []
folder: null
sort: 100001
flags:
core:
sourceId: Compendium.foundryvtt-reve-de-dragon.animaux.ZLROmHLm6G9pElkk
system:
carac:
taille:
@ -237,9 +260,57 @@ system:
comment vous y prendriez-vous pour le faire sortir de son antre en plein
jour ?</p>
race: ''
notesmj: ''
notesmj: Notes du MJ
blessures:
legeres:
liste:
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
graves:
liste:
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
critiques:
liste:
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
ownership:
default: 0
jOzRscDxoXZWpGS6: 3
prototypeToken:
flags: {}
name: Bandersnatch
@ -318,7 +389,12 @@ prototypeToken:
texture: null
_stats:
systemId: foundryvtt-reve-de-dragon
systemVersion: 12.0.22
systemVersion: 10.7.19
coreVersion: '12.331'
createdTime: 1663623574870
modifiedTime: 1686701218700
lastModifiedBy: Hp9ImM4o9YRTSdfu
compendiumSource: Compendium.foundryvtt-reve-de-dragon.animaux.ZLROmHLm6G9pElkk
duplicateSource: null
_key: '!actors!ZLROmHLm6G9pElkk'

View File

@ -29,8 +29,13 @@ items:
default: 0
_stats:
systemId: foundryvtt-reve-de-dragon
systemVersion: 12.0.22
systemVersion: 10.7.19
coreVersion: '12.331'
createdTime: null
modifiedTime: 1686700776438
lastModifiedBy: Hp9ImM4o9YRTSdfu
compendiumSource: null
duplicateSource: null
_key: '!actors.items!zMvyRrp10dkfcS43.LWQHz5ymNBzh6ZEr'
- _id: shsUV8UpU18c0RJK
name: Course
@ -46,7 +51,7 @@ items:
carac_value: 15
niveau: 6
default_diffLibre: 0
categorie: generale
categorie: ''
categorie_parade: ''
iscombat: false
isnaturelle: true
@ -57,9 +62,14 @@ items:
ownership:
default: 0
_stats:
systemId: foundryvtt-reve-de-dragon
systemVersion: 12.0.22
systemId: null
systemVersion: null
coreVersion: '12.331'
createdTime: null
modifiedTime: null
lastModifiedBy: null
compendiumSource: null
duplicateSource: null
_key: '!actors.items!zMvyRrp10dkfcS43.shsUV8UpU18c0RJK'
- _id: CYpxxf1uTa78NWR9
name: Esquive
@ -75,7 +85,7 @@ items:
carac_value: 10
niveau: 3
default_diffLibre: 0
categorie: generale
categorie: ''
categorie_parade: ''
iscombat: false
isnaturelle: true
@ -86,9 +96,14 @@ items:
ownership:
default: 0
_stats:
systemId: foundryvtt-reve-de-dragon
systemVersion: 12.0.22
systemId: null
systemVersion: null
coreVersion: '12.331'
createdTime: null
modifiedTime: null
lastModifiedBy: null
compendiumSource: null
duplicateSource: null
_key: '!actors.items!zMvyRrp10dkfcS43.CYpxxf1uTa78NWR9'
- _id: lzEdMrKXbOYrWG5S
name: Vigilance
@ -104,7 +119,7 @@ items:
carac_value: 13
niveau: 6
default_diffLibre: 0
categorie: generale
categorie: ''
categorie_parade: ''
iscombat: false
isnaturelle: true
@ -115,14 +130,22 @@ items:
ownership:
default: 0
_stats:
systemId: foundryvtt-reve-de-dragon
systemVersion: 12.0.22
systemId: null
systemVersion: null
coreVersion: '12.331'
createdTime: null
modifiedTime: null
lastModifiedBy: null
compendiumSource: null
duplicateSource: null
_key: '!actors.items!zMvyRrp10dkfcS43.lzEdMrKXbOYrWG5S'
- _id: iwQo9KoK5tfIN7sw
name: Saut
type: competencecreature
sort: 100000
flags:
core:
sourceId: Item.JZDgJ7ySiV84llkK
img: systems/foundryvtt-reve-de-dragon/icons/competence_saut.webp
effects: []
folder: null
@ -132,7 +155,7 @@ items:
carac_value: 15
niveau: 6
default_diffLibre: 0
categorie: generale
categorie: ''
categorie_parade: ''
iscombat: false
isnaturelle: true
@ -143,13 +166,21 @@ items:
ownership:
default: 0
_stats:
systemId: foundryvtt-reve-de-dragon
systemVersion: 12.0.22
systemId: null
systemVersion: null
coreVersion: '12.331'
createdTime: null
modifiedTime: null
lastModifiedBy: null
compendiumSource: Item.JZDgJ7ySiV84llkK
duplicateSource: null
_key: '!actors.items!zMvyRrp10dkfcS43.iwQo9KoK5tfIN7sw'
effects: []
folder: null
sort: 100001
flags:
core:
sourceId: Compendium.foundryvtt-reve-de-dragon.animaux.zMvyRrp10dkfcS43
system:
carac:
taille:
@ -252,9 +283,57 @@ system:
n&rsquo;h&eacute;sitent pas &agrave; charger les intrus pour prot&eacute;ger
biches et faons.</p>
race: ''
notesmj: ''
notesmj: Notes du MJ
blessures:
legeres:
liste:
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
graves:
liste:
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
critiques:
liste:
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
ownership:
default: 0
jOzRscDxoXZWpGS6: 3
prototypeToken:
flags: {}
name: Bramart
@ -333,7 +412,12 @@ prototypeToken:
texture: null
_stats:
systemId: foundryvtt-reve-de-dragon
systemVersion: 12.0.22
systemVersion: 10.7.19
coreVersion: '12.331'
createdTime: 1663623574891
modifiedTime: 1686701218701
lastModifiedBy: Hp9ImM4o9YRTSdfu
compendiumSource: Compendium.foundryvtt-reve-de-dragon.animaux.zMvyRrp10dkfcS43
duplicateSource: null
_key: '!actors!zMvyRrp10dkfcS43'

View File

@ -17,7 +17,7 @@ items:
carac_value: 13
niveau: 3
default_diffLibre: 0
categorie: generale
categorie: ''
categorie_parade: ''
iscombat: false
isnaturelle: true
@ -28,9 +28,14 @@ items:
ownership:
default: 0
_stats:
systemId: foundryvtt-reve-de-dragon
systemVersion: 12.0.22
systemId: null
systemVersion: null
coreVersion: '12.331'
createdTime: null
modifiedTime: null
lastModifiedBy: null
compendiumSource: null
duplicateSource: null
_key: '!actors.items!twCuK1GjVBTUFGXF.shsUV8UpU18c0RJK'
- _id: 4GmpkphbsmQjvVVK
name: Escalade
@ -46,7 +51,7 @@ items:
carac_value: 15
niveau: 4
default_diffLibre: 0
categorie: generale
categorie: ''
categorie_parade: ''
iscombat: false
isnaturelle: true
@ -57,9 +62,14 @@ items:
ownership:
default: 0
_stats:
systemId: foundryvtt-reve-de-dragon
systemVersion: 12.0.22
systemId: null
systemVersion: null
coreVersion: '12.331'
createdTime: null
modifiedTime: null
lastModifiedBy: null
compendiumSource: null
duplicateSource: null
_key: '!actors.items!twCuK1GjVBTUFGXF.4GmpkphbsmQjvVVK'
- _id: CYpxxf1uTa78NWR9
name: Esquive
@ -75,7 +85,7 @@ items:
carac_value: 13
niveau: 5
default_diffLibre: 0
categorie: generale
categorie: ''
categorie_parade: ''
iscombat: false
isnaturelle: true
@ -86,9 +96,14 @@ items:
ownership:
default: 0
_stats:
systemId: foundryvtt-reve-de-dragon
systemVersion: 12.0.22
systemId: null
systemVersion: null
coreVersion: '12.331'
createdTime: null
modifiedTime: null
lastModifiedBy: null
compendiumSource: null
duplicateSource: null
_key: '!actors.items!twCuK1GjVBTUFGXF.CYpxxf1uTa78NWR9'
- _id: BjqRrGtHtTzuNpZB
name: Griffes et Crocs
@ -116,8 +131,13 @@ items:
default: 0
_stats:
systemId: foundryvtt-reve-de-dragon
systemVersion: 12.0.22
systemVersion: 10.7.19
coreVersion: '12.331'
createdTime: null
modifiedTime: 1686700776442
lastModifiedBy: Hp9ImM4o9YRTSdfu
compendiumSource: null
duplicateSource: null
_key: '!actors.items!twCuK1GjVBTUFGXF.BjqRrGtHtTzuNpZB'
- _id: lzEdMrKXbOYrWG5S
name: Vigilance
@ -133,7 +153,7 @@ items:
carac_value: 14
niveau: 3
default_diffLibre: 0
categorie: generale
categorie: ''
categorie_parade: ''
iscombat: false
isnaturelle: true
@ -144,14 +164,22 @@ items:
ownership:
default: 0
_stats:
systemId: foundryvtt-reve-de-dragon
systemVersion: 12.0.22
systemId: null
systemVersion: null
coreVersion: '12.331'
createdTime: null
modifiedTime: null
lastModifiedBy: null
compendiumSource: null
duplicateSource: null
_key: '!actors.items!twCuK1GjVBTUFGXF.lzEdMrKXbOYrWG5S'
- _id: plIWZXJT0XGKJ5ar
name: Saut
type: competencecreature
sort: 200000
flags:
core:
sourceId: Item.JZDgJ7ySiV84llkK
img: systems/foundryvtt-reve-de-dragon/icons/competence_saut.webp
effects: []
folder: null
@ -161,7 +189,7 @@ items:
carac_value: 13
niveau: 3
default_diffLibre: 0
categorie: generale
categorie: ''
categorie_parade: ''
iscombat: false
isnaturelle: true
@ -172,13 +200,21 @@ items:
ownership:
default: 0
_stats:
systemId: foundryvtt-reve-de-dragon
systemVersion: 12.0.22
systemId: null
systemVersion: null
coreVersion: '12.331'
createdTime: null
modifiedTime: null
lastModifiedBy: null
compendiumSource: Item.JZDgJ7ySiV84llkK
duplicateSource: null
_key: '!actors.items!twCuK1GjVBTUFGXF.plIWZXJT0XGKJ5ar'
effects: []
folder: null
sort: 100001
flags:
core:
sourceId: Compendium.foundryvtt-reve-de-dragon.animaux.twCuK1GjVBTUFGXF
system:
carac:
taille:
@ -304,9 +340,57 @@ system:
combat indiqu&eacute;es ne s&rsquo;appliquent qu&rsquo;&agrave; la
pointue.</p>
race: ''
notesmj: ''
notesmj: Notes du MJ
blessures:
legeres:
liste:
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
graves:
liste:
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
critiques:
liste:
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
ownership:
default: 0
jOzRscDxoXZWpGS6: 3
prototypeToken:
flags: {}
name: Brolute rieuse
@ -385,7 +469,12 @@ prototypeToken:
texture: null
_stats:
systemId: foundryvtt-reve-de-dragon
systemVersion: 12.0.22
systemVersion: 10.7.19
coreVersion: '12.331'
createdTime: 1663623574889
modifiedTime: 1686701218702
lastModifiedBy: Hp9ImM4o9YRTSdfu
compendiumSource: Compendium.foundryvtt-reve-de-dragon.animaux.twCuK1GjVBTUFGXF
duplicateSource: null
_key: '!actors!twCuK1GjVBTUFGXF'

View File

@ -2,6 +2,9 @@ _id: LqYHIJf9LVGxRT7S
name: Chamule
type: creature
sort: 100001
flags:
core:
sourceId: Compendium.foundryvtt-reve-de-dragon.animaux.LqYHIJf9LVGxRT7S
img: systems/foundryvtt-reve-de-dragon/icons/creatures/chamule.svg
items:
- _id: shsUV8UpU18c0RJK
@ -17,7 +20,7 @@ items:
carac_value: 12
niveau: 3
default_diffLibre: 0
categorie: generale
categorie: ''
categorie_parade: ''
iscombat: false
isnaturelle: true
@ -29,9 +32,14 @@ items:
ownership:
default: 0
_stats:
systemId: foundryvtt-reve-de-dragon
systemVersion: 12.0.22
systemId: null
systemVersion: null
coreVersion: '12.331'
createdTime: null
modifiedTime: null
lastModifiedBy: null
compendiumSource: null
duplicateSource: null
_key: '!actors.items!LqYHIJf9LVGxRT7S.shsUV8UpU18c0RJK'
- _id: CYpxxf1uTa78NWR9
name: Esquive
@ -46,7 +54,7 @@ items:
carac_value: 8
niveau: 3
default_diffLibre: 0
categorie: generale
categorie: ''
categorie_parade: ''
iscombat: false
isnaturelle: true
@ -58,9 +66,14 @@ items:
ownership:
default: 0
_stats:
systemId: foundryvtt-reve-de-dragon
systemVersion: 12.0.22
systemId: null
systemVersion: null
coreVersion: '12.331'
createdTime: null
modifiedTime: null
lastModifiedBy: null
compendiumSource: null
duplicateSource: null
_key: '!actors.items!LqYHIJf9LVGxRT7S.CYpxxf1uTa78NWR9'
- _id: 6DK46pyO0hzEuuUg
name: Morsure
@ -88,8 +101,13 @@ items:
default: 0
_stats:
systemId: foundryvtt-reve-de-dragon
systemVersion: 12.0.22
systemVersion: 10.7.19
coreVersion: '12.331'
createdTime: null
modifiedTime: 1686700776536
lastModifiedBy: Hp9ImM4o9YRTSdfu
compendiumSource: null
duplicateSource: null
_key: '!actors.items!LqYHIJf9LVGxRT7S.6DK46pyO0hzEuuUg'
- _id: lzEdMrKXbOYrWG5S
name: Vigilance
@ -104,7 +122,7 @@ items:
carac_value: 12
niveau: 0
default_diffLibre: 0
categorie: generale
categorie: ''
categorie_parade: ''
iscombat: false
isnaturelle: true
@ -116,14 +134,23 @@ items:
ownership:
default: 0
_stats:
systemId: foundryvtt-reve-de-dragon
systemVersion: 12.0.22
systemId: null
systemVersion: null
coreVersion: '12.331'
createdTime: null
modifiedTime: null
lastModifiedBy: null
compendiumSource: null
duplicateSource: null
_key: '!actors.items!LqYHIJf9LVGxRT7S.lzEdMrKXbOYrWG5S'
- _id: 3MgAaUHeKGBcbyr5
name: Coup de pied
type: competencecreature
sort: 500000
flags:
core:
sourceId: >-
Compendium.foundryvtt-reve-de-dragon.competences-creatures.Zpl2Bi451vB3r91W
img: systems/foundryvtt-reve-de-dragon/icons/compcreature-coup_de_pied.webp
effects: []
system:
@ -145,8 +172,14 @@ items:
default: 0
_stats:
systemId: foundryvtt-reve-de-dragon
systemVersion: 12.0.22
systemVersion: 10.7.19
coreVersion: '12.331'
createdTime: null
modifiedTime: 1686700776536
lastModifiedBy: Hp9ImM4o9YRTSdfu
compendiumSource: >-
Compendium.foundryvtt-reve-de-dragon.competences-creatures.Zpl2Bi451vB3r91W
duplicateSource: null
_key: '!actors.items!LqYHIJf9LVGxRT7S.3MgAaUHeKGBcbyr5'
effects: []
system:
@ -257,9 +290,57 @@ system:
normalement de graines et de fruits. Si on les laisse go&ucirc;ter &agrave;
la chair, elles deviennent agressives, intraitables, et mordent.</p>
race: ''
notesmj: ''
notesmj: Notes du MJ
blessures:
legeres:
liste:
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
graves:
liste:
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
critiques:
liste:
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
ownership:
default: 0
jOzRscDxoXZWpGS6: 3
prototypeToken:
flags: {}
name: Chamule
@ -339,7 +420,12 @@ prototypeToken:
folder: null
_stats:
systemId: foundryvtt-reve-de-dragon
systemVersion: 12.0.22
systemVersion: 10.7.19
coreVersion: '12.331'
createdTime: 1663623574851
modifiedTime: 1686701218702
lastModifiedBy: Hp9ImM4o9YRTSdfu
compendiumSource: Compendium.foundryvtt-reve-de-dragon.animaux.LqYHIJf9LVGxRT7S
duplicateSource: null
_key: '!actors!LqYHIJf9LVGxRT7S'

View File

@ -17,7 +17,7 @@ items:
carac_value: 14
niveau: 4
default_diffLibre: 0
categorie: generale
categorie: ''
categorie_parade: ''
iscombat: false
isnaturelle: true
@ -28,9 +28,14 @@ items:
ownership:
default: 0
_stats:
systemId: foundryvtt-reve-de-dragon
systemVersion: 12.0.22
systemId: null
systemVersion: null
coreVersion: '12.331'
createdTime: null
modifiedTime: null
lastModifiedBy: null
compendiumSource: null
duplicateSource: null
_key: '!actors.items!76I21ASdWYBqsg8I.shsUV8UpU18c0RJK'
- _id: CYpxxf1uTa78NWR9
name: Esquive
@ -46,7 +51,7 @@ items:
carac_value: 9
niveau: 1
default_diffLibre: 0
categorie: generale
categorie: ''
categorie_parade: ''
iscombat: false
isnaturelle: true
@ -57,9 +62,14 @@ items:
ownership:
default: 0
_stats:
systemId: foundryvtt-reve-de-dragon
systemVersion: 12.0.22
systemId: null
systemVersion: null
coreVersion: '12.331'
createdTime: null
modifiedTime: null
lastModifiedBy: null
compendiumSource: null
duplicateSource: null
_key: '!actors.items!76I21ASdWYBqsg8I.CYpxxf1uTa78NWR9'
- _id: ndNshntOYb1JFNqi
name: Ruade
@ -87,8 +97,13 @@ items:
default: 0
_stats:
systemId: foundryvtt-reve-de-dragon
systemVersion: 12.0.22
systemVersion: 10.7.19
coreVersion: '12.331'
createdTime: null
modifiedTime: 1686700776446
lastModifiedBy: Hp9ImM4o9YRTSdfu
compendiumSource: null
duplicateSource: null
_key: '!actors.items!76I21ASdWYBqsg8I.ndNshntOYb1JFNqi'
- _id: lzEdMrKXbOYrWG5S
name: Vigilance
@ -104,7 +119,7 @@ items:
carac_value: 12
niveau: 3
default_diffLibre: 0
categorie: generale
categorie: ''
categorie_parade: ''
iscombat: false
isnaturelle: true
@ -115,13 +130,21 @@ items:
ownership:
default: 0
_stats:
systemId: foundryvtt-reve-de-dragon
systemVersion: 12.0.22
systemId: null
systemVersion: null
coreVersion: '12.331'
createdTime: null
modifiedTime: null
lastModifiedBy: null
compendiumSource: null
duplicateSource: null
_key: '!actors.items!76I21ASdWYBqsg8I.lzEdMrKXbOYrWG5S'
effects: []
folder: null
sort: 100001
flags:
core:
sourceId: Compendium.foundryvtt-reve-de-dragon.animaux.76I21ASdWYBqsg8I
system:
carac:
taille:
@ -220,9 +243,57 @@ system:
course est rajout&eacute;e une fois pour toutes, mais peut &ecirc;tre
modul&eacute;e par un jet de course sur la table de Course animale.</p>
race: ''
notesmj: ''
notesmj: Notes du MJ
blessures:
legeres:
liste:
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
graves:
liste:
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
critiques:
liste:
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
ownership:
default: 0
jOzRscDxoXZWpGS6: 3
prototypeToken:
flags: {}
name: Cheval
@ -301,7 +372,12 @@ prototypeToken:
texture: null
_stats:
systemId: foundryvtt-reve-de-dragon
systemVersion: 12.0.22
systemVersion: 10.7.19
coreVersion: '12.331'
createdTime: 1663623574839
modifiedTime: 1686701218703
lastModifiedBy: Hp9ImM4o9YRTSdfu
compendiumSource: Compendium.foundryvtt-reve-de-dragon.animaux.76I21ASdWYBqsg8I
duplicateSource: null
_key: '!actors!76I21ASdWYBqsg8I'

View File

@ -2,6 +2,9 @@ _id: XuDpG772k6PAQ5LJ
name: Chiard
type: creature
sort: 100001
flags:
core:
sourceId: Compendium.foundryvtt-reve-de-dragon.animaux.XuDpG772k6PAQ5LJ
img: systems/foundryvtt-reve-de-dragon/icons/creatures/chiard.svg
items:
- _id: shsUV8UpU18c0RJK
@ -17,7 +20,7 @@ items:
carac_value: 12
niveau: 3
default_diffLibre: 0
categorie: generale
categorie: ''
categorie_parade: ''
iscombat: false
isnaturelle: true
@ -29,9 +32,14 @@ items:
ownership:
default: 0
_stats:
systemId: foundryvtt-reve-de-dragon
systemVersion: 12.0.22
systemId: null
systemVersion: null
coreVersion: '12.331'
createdTime: null
modifiedTime: null
lastModifiedBy: null
compendiumSource: null
duplicateSource: null
_key: '!actors.items!XuDpG772k6PAQ5LJ.shsUV8UpU18c0RJK'
- _id: CYpxxf1uTa78NWR9
name: Esquive
@ -46,7 +54,7 @@ items:
carac_value: 10
niveau: 3
default_diffLibre: 0
categorie: generale
categorie: ''
categorie_parade: ''
iscombat: false
isnaturelle: true
@ -58,9 +66,14 @@ items:
ownership:
default: 0
_stats:
systemId: foundryvtt-reve-de-dragon
systemVersion: 12.0.22
systemId: null
systemVersion: null
coreVersion: '12.331'
createdTime: null
modifiedTime: null
lastModifiedBy: null
compendiumSource: null
duplicateSource: null
_key: '!actors.items!XuDpG772k6PAQ5LJ.CYpxxf1uTa78NWR9'
- _id: 6DK46pyO0hzEuuUg
name: Morsure
@ -88,8 +101,13 @@ items:
default: 0
_stats:
systemId: foundryvtt-reve-de-dragon
systemVersion: 12.0.22
systemVersion: 10.7.19
coreVersion: '12.331'
createdTime: null
modifiedTime: 1686700776448
lastModifiedBy: Hp9ImM4o9YRTSdfu
compendiumSource: null
duplicateSource: null
_key: '!actors.items!XuDpG772k6PAQ5LJ.6DK46pyO0hzEuuUg'
- _id: lzEdMrKXbOYrWG5S
name: Vigilance
@ -104,7 +122,7 @@ items:
carac_value: 11
niveau: 3
default_diffLibre: 0
categorie: generale
categorie: ''
categorie_parade: ''
iscombat: false
isnaturelle: true
@ -116,14 +134,22 @@ items:
ownership:
default: 0
_stats:
systemId: foundryvtt-reve-de-dragon
systemVersion: 12.0.22
systemId: null
systemVersion: null
coreVersion: '12.331'
createdTime: null
modifiedTime: null
lastModifiedBy: null
compendiumSource: null
duplicateSource: null
_key: '!actors.items!XuDpG772k6PAQ5LJ.lzEdMrKXbOYrWG5S'
- _id: Rtt7bny59v2jBhuO
name: Saut
type: competencecreature
sort: 200000
flags:
core:
sourceId: Item.JZDgJ7ySiV84llkK
img: systems/foundryvtt-reve-de-dragon/icons/competence_saut.webp
effects: []
system:
@ -132,7 +158,7 @@ items:
carac_value: 12
niveau: 3
default_diffLibre: 0
categorie: generale
categorie: ''
categorie_parade: ''
iscombat: false
isnaturelle: true
@ -144,9 +170,14 @@ items:
ownership:
default: 0
_stats:
systemId: foundryvtt-reve-de-dragon
systemVersion: 12.0.22
systemId: null
systemVersion: null
coreVersion: '12.331'
createdTime: null
modifiedTime: null
lastModifiedBy: null
compendiumSource: Item.JZDgJ7ySiV84llkK
duplicateSource: null
_key: '!actors.items!XuDpG772k6PAQ5LJ.Rtt7bny59v2jBhuO'
effects: []
system:
@ -246,9 +277,57 @@ system:
s&rsquo;il est affam&eacute;. Un individu adulte p&egrave;se en moyenne 40
kg.</p>
race: ''
notesmj: ''
notesmj: Notes du MJ
blessures:
legeres:
liste:
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
graves:
liste:
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
critiques:
liste:
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
ownership:
default: 0
jOzRscDxoXZWpGS6: 3
prototypeToken:
flags: {}
name: Chiard
@ -328,7 +407,12 @@ prototypeToken:
folder: null
_stats:
systemId: foundryvtt-reve-de-dragon
systemVersion: 12.0.22
systemVersion: 10.7.19
coreVersion: '12.331'
createdTime: 1663623574867
modifiedTime: 1686701218704
lastModifiedBy: Hp9ImM4o9YRTSdfu
compendiumSource: Compendium.foundryvtt-reve-de-dragon.animaux.XuDpG772k6PAQ5LJ
duplicateSource: null
_key: '!actors!XuDpG772k6PAQ5LJ'

View File

@ -17,7 +17,7 @@ items:
carac_value: 11
niveau: 3
default_diffLibre: 0
categorie: generale
categorie: ''
categorie_parade: ''
iscombat: false
isnaturelle: true
@ -28,9 +28,14 @@ items:
ownership:
default: 0
_stats:
systemId: foundryvtt-reve-de-dragon
systemVersion: 12.0.22
systemId: null
systemVersion: null
coreVersion: '12.331'
createdTime: null
modifiedTime: null
lastModifiedBy: null
compendiumSource: null
duplicateSource: null
_key: '!actors.items!yL1XStIKWxGnhKvR.shsUV8UpU18c0RJK'
- _id: CYpxxf1uTa78NWR9
name: Esquive
@ -46,7 +51,7 @@ items:
carac_value: 10
niveau: 3
default_diffLibre: 0
categorie: generale
categorie: ''
categorie_parade: ''
iscombat: false
isnaturelle: true
@ -57,9 +62,14 @@ items:
ownership:
default: 0
_stats:
systemId: foundryvtt-reve-de-dragon
systemVersion: 12.0.22
systemId: null
systemVersion: null
coreVersion: '12.331'
createdTime: null
modifiedTime: null
lastModifiedBy: null
compendiumSource: null
duplicateSource: null
_key: '!actors.items!yL1XStIKWxGnhKvR.CYpxxf1uTa78NWR9'
- _id: XgfRxSj8Ty1d3JFM
name: Mandibules
@ -87,8 +97,13 @@ items:
default: 0
_stats:
systemId: foundryvtt-reve-de-dragon
systemVersion: 12.0.22
systemVersion: 10.7.19
coreVersion: '12.331'
createdTime: null
modifiedTime: 1686700776455
lastModifiedBy: Hp9ImM4o9YRTSdfu
compendiumSource: null
duplicateSource: null
_key: '!actors.items!yL1XStIKWxGnhKvR.XgfRxSj8Ty1d3JFM'
- _id: lzEdMrKXbOYrWG5S
name: Vigilance
@ -104,7 +119,7 @@ items:
carac_value: 10
niveau: 3
default_diffLibre: 0
categorie: generale
categorie: ''
categorie_parade: ''
iscombat: false
isnaturelle: true
@ -115,13 +130,21 @@ items:
ownership:
default: 0
_stats:
systemId: foundryvtt-reve-de-dragon
systemVersion: 12.0.22
systemId: null
systemVersion: null
coreVersion: '12.331'
createdTime: null
modifiedTime: null
lastModifiedBy: null
compendiumSource: null
duplicateSource: null
_key: '!actors.items!yL1XStIKWxGnhKvR.lzEdMrKXbOYrWG5S'
effects: []
folder: null
sort: 100001
flags:
core:
sourceId: Compendium.foundryvtt-reve-de-dragon.animaux.yL1XStIKWxGnhKvR
system:
carac:
taille:
@ -227,12 +250,99 @@ system:
que vous nous faites un peu peur ?</p>
<h1>Venin</h1>
<p>@UUID[Compendium.foundryvtt-reve-de-dragon.maladies-et-poisons.Item.cFMUtU6LZG0mKeDl]{Venin de chrasme}</p>
<p></p>
<table style="width: 399px; height: 65px;" border="1">
<tbody>
<tr style="height: 16px;">
<td style="width: 121px; height: 16px;">Malignit&eacute;</td>
<td style="width: 274px; height: 16px;">3</td>
</tr>
<tr style="height: 16px;">
<td style="width: 121px; height: 16px;">P&eacute;riodicit&eacute;</td>
<td style="width: 274px; height: 16px;">1 miute</td>
</tr>
<tr style="height: 16px;">
<td style="width: 121px; height: 16px;">Dommages</td>
<td style="width: 274px; height: 16px;">-1 point de vie</td>
</tr>
<tr style="height: 17px;">
<td style="width: 121px; height: 17px;">Antidotes</td>
<td style="width: 274px; height: 17px;">-2 \ Liqueur de Bagdol +16, Teinture
d'Erozonne +10</td>
</tr>
</tbody>
</table>
race: ''
notesmj: ''
notesmj: Notes du MJ
blessures:
legeres:
liste:
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
graves:
liste:
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
critiques:
liste:
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
ownership:
default: 0
jOzRscDxoXZWpGS6: 3
prototypeToken:
flags: {}
name: Chrasme
@ -311,7 +421,12 @@ prototypeToken:
texture: null
_stats:
systemId: foundryvtt-reve-de-dragon
systemVersion: 12.0.22
systemVersion: 10.7.19
coreVersion: '12.331'
createdTime: 1663623574889
modifiedTime: 1686701218705
lastModifiedBy: Hp9ImM4o9YRTSdfu
compendiumSource: Compendium.foundryvtt-reve-de-dragon.animaux.yL1XStIKWxGnhKvR
duplicateSource: null
_key: '!actors!yL1XStIKWxGnhKvR'

View File

@ -29,8 +29,13 @@ items:
default: 0
_stats:
systemId: foundryvtt-reve-de-dragon
systemVersion: 12.0.22
systemVersion: 10.7.19
coreVersion: '12.331'
createdTime: null
modifiedTime: 1686700776458
lastModifiedBy: Hp9ImM4o9YRTSdfu
compendiumSource: null
duplicateSource: null
_key: '!actors.items!VsEw24DEekBbU69Z.LWQHz5ymNBzh6ZEr'
- _id: shsUV8UpU18c0RJK
name: Course
@ -46,7 +51,7 @@ items:
carac_value: 11
niveau: 3
default_diffLibre: 0
categorie: generale
categorie: ''
categorie_parade: ''
iscombat: false
isnaturelle: true
@ -57,9 +62,14 @@ items:
ownership:
default: 0
_stats:
systemId: foundryvtt-reve-de-dragon
systemVersion: 12.0.22
systemId: null
systemVersion: null
coreVersion: '12.331'
createdTime: null
modifiedTime: null
lastModifiedBy: null
compendiumSource: null
duplicateSource: null
_key: '!actors.items!VsEw24DEekBbU69Z.shsUV8UpU18c0RJK'
- _id: yDHZfK4RmwQW4YaW
name: Discrétion
@ -75,7 +85,7 @@ items:
carac_value: 10
niveau: 3
default_diffLibre: 0
categorie: generale
categorie: ''
categorie_parade: ''
iscombat: false
isnaturelle: true
@ -86,9 +96,14 @@ items:
ownership:
default: 0
_stats:
systemId: foundryvtt-reve-de-dragon
systemVersion: 12.0.22
systemId: null
systemVersion: null
coreVersion: '12.331'
createdTime: null
modifiedTime: null
lastModifiedBy: null
compendiumSource: null
duplicateSource: null
_key: '!actors.items!VsEw24DEekBbU69Z.yDHZfK4RmwQW4YaW'
- _id: CYpxxf1uTa78NWR9
name: Esquive
@ -104,7 +119,7 @@ items:
carac_value: 11
niveau: 3
default_diffLibre: 0
categorie: generale
categorie: ''
categorie_parade: ''
iscombat: false
isnaturelle: true
@ -115,9 +130,14 @@ items:
ownership:
default: 0
_stats:
systemId: foundryvtt-reve-de-dragon
systemVersion: 12.0.22
systemId: null
systemVersion: null
coreVersion: '12.331'
createdTime: null
modifiedTime: null
lastModifiedBy: null
compendiumSource: null
duplicateSource: null
_key: '!actors.items!VsEw24DEekBbU69Z.CYpxxf1uTa78NWR9'
- _id: lzEdMrKXbOYrWG5S
name: Vigilance
@ -133,7 +153,7 @@ items:
carac_value: 13
niveau: 4
default_diffLibre: 0
categorie: generale
categorie: ''
categorie_parade: ''
iscombat: false
isnaturelle: true
@ -144,13 +164,21 @@ items:
ownership:
default: 0
_stats:
systemId: foundryvtt-reve-de-dragon
systemVersion: 12.0.22
systemId: null
systemVersion: null
coreVersion: '12.331'
createdTime: null
modifiedTime: null
lastModifiedBy: null
compendiumSource: null
duplicateSource: null
_key: '!actors.items!VsEw24DEekBbU69Z.lzEdMrKXbOYrWG5S'
effects: []
folder: null
sort: 100001
flags:
core:
sourceId: Compendium.foundryvtt-reve-de-dragon.animaux.VsEw24DEekBbU69Z
system:
carac:
taille:
@ -256,9 +284,57 @@ system:
pr&eacute;dateur qui n&rsquo;h&eacute;site pas &agrave; s&rsquo;attaquer
&agrave; l&rsquo;homme, se servant redoutablement de ses cornes.</p>
race: ''
notesmj: ''
notesmj: Notes du MJ
blessures:
legeres:
liste:
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
graves:
liste:
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
critiques:
liste:
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
ownership:
default: 0
jOzRscDxoXZWpGS6: 3
prototypeToken:
flags: {}
name: Cornicochon
@ -337,7 +413,12 @@ prototypeToken:
texture: null
_stats:
systemId: foundryvtt-reve-de-dragon
systemVersion: 12.0.22
systemVersion: 10.7.19
coreVersion: '12.331'
createdTime: 1663623574860
modifiedTime: 1686701218707
lastModifiedBy: Hp9ImM4o9YRTSdfu
compendiumSource: Compendium.foundryvtt-reve-de-dragon.animaux.VsEw24DEekBbU69Z
duplicateSource: null
_key: '!actors!VsEw24DEekBbU69Z'

View File

@ -17,7 +17,7 @@ items:
carac_value: 13
niveau: 3
default_diffLibre: 0
categorie: generale
categorie: ''
categorie_parade: ''
iscombat: false
isnaturelle: true
@ -28,9 +28,14 @@ items:
ownership:
default: 0
_stats:
systemId: foundryvtt-reve-de-dragon
systemVersion: 12.0.22
systemId: null
systemVersion: null
coreVersion: '12.331'
createdTime: null
modifiedTime: null
lastModifiedBy: null
compendiumSource: null
duplicateSource: null
_key: '!actors.items!IdZUNtuYcDBffZKn.shsUV8UpU18c0RJK'
- _id: CYpxxf1uTa78NWR9
name: Esquive
@ -46,7 +51,7 @@ items:
carac_value: 13
niveau: 3
default_diffLibre: 0
categorie: generale
categorie: ''
categorie_parade: ''
iscombat: false
isnaturelle: true
@ -57,9 +62,14 @@ items:
ownership:
default: 0
_stats:
systemId: foundryvtt-reve-de-dragon
systemVersion: 12.0.22
systemId: null
systemVersion: null
coreVersion: '12.331'
createdTime: null
modifiedTime: null
lastModifiedBy: null
compendiumSource: null
duplicateSource: null
_key: '!actors.items!IdZUNtuYcDBffZKn.CYpxxf1uTa78NWR9'
- _id: BjqRrGtHtTzuNpZB
name: Griffes et Crocs
@ -87,8 +97,13 @@ items:
default: 0
_stats:
systemId: foundryvtt-reve-de-dragon
systemVersion: 12.0.22
systemVersion: 10.7.19
coreVersion: '12.331'
createdTime: null
modifiedTime: 1686700776466
lastModifiedBy: Hp9ImM4o9YRTSdfu
compendiumSource: null
duplicateSource: null
_key: '!actors.items!IdZUNtuYcDBffZKn.BjqRrGtHtTzuNpZB'
- _id: lzEdMrKXbOYrWG5S
name: Vigilance
@ -104,7 +119,7 @@ items:
carac_value: 10
niveau: 0
default_diffLibre: 0
categorie: generale
categorie: ''
categorie_parade: ''
iscombat: false
isnaturelle: true
@ -115,14 +130,22 @@ items:
ownership:
default: 0
_stats:
systemId: foundryvtt-reve-de-dragon
systemVersion: 12.0.22
systemId: null
systemVersion: null
coreVersion: '12.331'
createdTime: null
modifiedTime: null
lastModifiedBy: null
compendiumSource: null
duplicateSource: null
_key: '!actors.items!IdZUNtuYcDBffZKn.lzEdMrKXbOYrWG5S'
- _id: 0bTL8SzhNJoPrXd4
name: Saut
type: competencecreature
sort: 150000
flags:
core:
sourceId: Item.JZDgJ7ySiV84llkK
img: systems/foundryvtt-reve-de-dragon/icons/competence_saut.webp
effects: []
folder: null
@ -132,7 +155,7 @@ items:
carac_value: 13
niveau: 3
default_diffLibre: 0
categorie: generale
categorie: ''
categorie_parade: ''
iscombat: false
isnaturelle: true
@ -143,13 +166,21 @@ items:
ownership:
default: 0
_stats:
systemId: foundryvtt-reve-de-dragon
systemVersion: 12.0.22
systemId: null
systemVersion: null
coreVersion: '12.331'
createdTime: null
modifiedTime: null
lastModifiedBy: null
compendiumSource: Item.JZDgJ7ySiV84llkK
duplicateSource: null
_key: '!actors.items!IdZUNtuYcDBffZKn.0bTL8SzhNJoPrXd4'
effects: []
folder: null
sort: 100001
flags:
core:
sourceId: Compendium.foundryvtt-reve-de-dragon.animaux.IdZUNtuYcDBffZKn
system:
carac:
taille:
@ -259,9 +290,57 @@ system:
Quand il bondit, son attaque est consid&eacute;r&eacute;e comme une
<em>charge</em>.</p>
race: ''
notesmj: ''
notesmj: Notes du MJ
blessures:
legeres:
liste:
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
graves:
liste:
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
critiques:
liste:
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
ownership:
default: 0
jOzRscDxoXZWpGS6: 3
prototypeToken:
flags: {}
name: Dong
@ -340,7 +419,12 @@ prototypeToken:
texture: null
_stats:
systemId: foundryvtt-reve-de-dragon
systemVersion: 12.0.22
systemVersion: 10.7.19
coreVersion: '12.331'
createdTime: 1663623574846
modifiedTime: 1686701218708
lastModifiedBy: Hp9ImM4o9YRTSdfu
compendiumSource: Compendium.foundryvtt-reve-de-dragon.animaux.IdZUNtuYcDBffZKn
duplicateSource: null
_key: '!actors!IdZUNtuYcDBffZKn'

View File

@ -17,7 +17,7 @@ items:
carac_value: 10
niveau: 3
default_diffLibre: 0
categorie: generale
categorie: ''
categorie_parade: ''
iscombat: false
isnaturelle: true
@ -28,9 +28,14 @@ items:
ownership:
default: 0
_stats:
systemId: foundryvtt-reve-de-dragon
systemVersion: 12.0.22
systemId: null
systemVersion: null
coreVersion: '12.331'
createdTime: null
modifiedTime: null
lastModifiedBy: null
compendiumSource: null
duplicateSource: null
_key: '!actors.items!kPDswxsWVnSYitfL.CYpxxf1uTa78NWR9'
- _id: 6DK46pyO0hzEuuUg
name: Morsure
@ -58,8 +63,13 @@ items:
default: 0
_stats:
systemId: foundryvtt-reve-de-dragon
systemVersion: 12.0.22
systemVersion: 10.7.19
coreVersion: '12.331'
createdTime: null
modifiedTime: 1686700776469
lastModifiedBy: Hp9ImM4o9YRTSdfu
compendiumSource: null
duplicateSource: null
_key: '!actors.items!kPDswxsWVnSYitfL.6DK46pyO0hzEuuUg'
- _id: Kt7WlB5Ui97X211z
name: Vol
@ -75,7 +85,7 @@ items:
carac_value: 10
niveau: 3
default_diffLibre: 0
categorie: generale
categorie: ''
categorie_parade: ''
iscombat: false
isnaturelle: true
@ -86,13 +96,21 @@ items:
ownership:
default: 0
_stats:
systemId: foundryvtt-reve-de-dragon
systemVersion: 12.0.22
systemId: null
systemVersion: null
coreVersion: '12.331'
createdTime: null
modifiedTime: null
lastModifiedBy: null
compendiumSource: null
duplicateSource: null
_key: '!actors.items!kPDswxsWVnSYitfL.Kt7WlB5Ui97X211z'
effects: []
folder: null
sort: 100001
flags:
core:
sourceId: Compendium.foundryvtt-reve-de-dragon.animaux.kPDswxsWVnSYitfL
system:
carac:
taille:
@ -214,9 +232,57 @@ system:
d&rsquo;attaque, puisqu&rsquo;il cause des dommages automatiques, mais peut
contrer empoignade ou attaque de dague par le battement de ses ailes.</p>
race: ''
notesmj: ''
notesmj: Notes du MJ
blessures:
legeres:
liste:
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
graves:
liste:
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
critiques:
liste:
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
ownership:
default: 0
jOzRscDxoXZWpGS6: 3
prototypeToken:
flags: {}
name: Drakkule
@ -295,7 +361,12 @@ prototypeToken:
texture: null
_stats:
systemId: foundryvtt-reve-de-dragon
systemVersion: 12.0.22
systemVersion: 10.7.19
coreVersion: '12.331'
createdTime: 1663623574882
modifiedTime: 1686701218708
lastModifiedBy: Hp9ImM4o9YRTSdfu
compendiumSource: Compendium.foundryvtt-reve-de-dragon.animaux.kPDswxsWVnSYitfL
duplicateSource: null
_key: '!actors!kPDswxsWVnSYitfL'

View File

@ -17,7 +17,7 @@ items:
carac_value: 11
niveau: 3
default_diffLibre: 0
categorie: generale
categorie: ''
categorie_parade: ''
iscombat: false
isnaturelle: true
@ -28,9 +28,14 @@ items:
ownership:
default: 0
_stats:
systemId: foundryvtt-reve-de-dragon
systemVersion: 12.0.22
systemId: null
systemVersion: null
coreVersion: '12.331'
createdTime: null
modifiedTime: null
lastModifiedBy: null
compendiumSource: null
duplicateSource: null
_key: '!actors.items!tbBCUzaYThtcq3Ch.CYpxxf1uTa78NWR9'
- _id: lzEdMrKXbOYrWG5S
name: Vigilance
@ -46,7 +51,7 @@ items:
carac_value: 13
niveau: 0
default_diffLibre: 0
categorie: generale
categorie: ''
categorie_parade: ''
iscombat: false
isnaturelle: true
@ -57,9 +62,14 @@ items:
ownership:
default: 0
_stats:
systemId: foundryvtt-reve-de-dragon
systemVersion: 12.0.22
systemId: null
systemVersion: null
coreVersion: '12.331'
createdTime: null
modifiedTime: null
lastModifiedBy: null
compendiumSource: null
duplicateSource: null
_key: '!actors.items!tbBCUzaYThtcq3Ch.lzEdMrKXbOYrWG5S'
- _id: Kt7WlB5Ui97X211z
name: Vol
@ -75,7 +85,7 @@ items:
carac_value: 11
niveau: 3
default_diffLibre: 0
categorie: generale
categorie: ''
categorie_parade: ''
iscombat: false
isnaturelle: true
@ -86,13 +96,21 @@ items:
ownership:
default: 0
_stats:
systemId: foundryvtt-reve-de-dragon
systemVersion: 12.0.22
systemId: null
systemVersion: null
coreVersion: '12.331'
createdTime: null
modifiedTime: null
lastModifiedBy: null
compendiumSource: null
duplicateSource: null
_key: '!actors.items!tbBCUzaYThtcq3Ch.Kt7WlB5Ui97X211z'
effects: []
folder: null
sort: 100001
flags:
core:
sourceId: Compendium.foundryvtt-reve-de-dragon.animaux.tbBCUzaYThtcq3Ch
system:
carac:
taille:
@ -201,9 +219,57 @@ system:
pratiquement pas de m&eacute;moire. Au demeurant adorable, un f&eacute;lorn
de compagnie peut vite devenir assez crispant.</p>
race: ''
notesmj: ''
notesmj: Notes du MJ
blessures:
legeres:
liste:
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
graves:
liste:
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
critiques:
liste:
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
ownership:
default: 0
jOzRscDxoXZWpGS6: 3
prototypeToken:
flags: {}
name: Félorn
@ -282,7 +348,12 @@ prototypeToken:
texture: null
_stats:
systemId: foundryvtt-reve-de-dragon
systemVersion: 12.0.22
systemVersion: 10.7.19
coreVersion: '12.331'
createdTime: 1663623574888
modifiedTime: 1686701218709
lastModifiedBy: Hp9ImM4o9YRTSdfu
compendiumSource: Compendium.foundryvtt-reve-de-dragon.animaux.tbBCUzaYThtcq3Ch
duplicateSource: null
_key: '!actors!tbBCUzaYThtcq3Ch'

View File

@ -17,7 +17,7 @@ items:
carac_value: 10
niveau: 3
default_diffLibre: 0
categorie: generale
categorie: ''
categorie_parade: ''
iscombat: false
isnaturelle: true
@ -28,9 +28,14 @@ items:
ownership:
default: 0
_stats:
systemId: foundryvtt-reve-de-dragon
systemVersion: 12.0.22
systemId: null
systemVersion: null
coreVersion: '12.331'
createdTime: null
modifiedTime: null
lastModifiedBy: null
compendiumSource: null
duplicateSource: null
_key: '!actors.items!f31jeCsQgw3hWjk6.shsUV8UpU18c0RJK'
- _id: yDHZfK4RmwQW4YaW
name: Discrétion
@ -46,7 +51,7 @@ items:
carac_value: 14
niveau: 5
default_diffLibre: 0
categorie: generale
categorie: ''
categorie_parade: ''
iscombat: false
isnaturelle: true
@ -57,9 +62,14 @@ items:
ownership:
default: 0
_stats:
systemId: foundryvtt-reve-de-dragon
systemVersion: 12.0.22
systemId: null
systemVersion: null
coreVersion: '12.331'
createdTime: null
modifiedTime: null
lastModifiedBy: null
compendiumSource: null
duplicateSource: null
_key: '!actors.items!f31jeCsQgw3hWjk6.yDHZfK4RmwQW4YaW'
- _id: 4GmpkphbsmQjvVVK
name: Escalade
@ -75,7 +85,7 @@ items:
carac_value: 14
niveau: 5
default_diffLibre: 0
categorie: generale
categorie: ''
categorie_parade: ''
iscombat: false
isnaturelle: true
@ -86,9 +96,14 @@ items:
ownership:
default: 0
_stats:
systemId: foundryvtt-reve-de-dragon
systemVersion: 12.0.22
systemId: null
systemVersion: null
coreVersion: '12.331'
createdTime: null
modifiedTime: null
lastModifiedBy: null
compendiumSource: null
duplicateSource: null
_key: '!actors.items!f31jeCsQgw3hWjk6.4GmpkphbsmQjvVVK'
- _id: CYpxxf1uTa78NWR9
name: Esquive
@ -104,7 +119,7 @@ items:
carac_value: 12
niveau: 3
default_diffLibre: 0
categorie: generale
categorie: ''
categorie_parade: ''
iscombat: false
isnaturelle: true
@ -115,9 +130,14 @@ items:
ownership:
default: 0
_stats:
systemId: foundryvtt-reve-de-dragon
systemVersion: 12.0.22
systemId: null
systemVersion: null
coreVersion: '12.331'
createdTime: null
modifiedTime: null
lastModifiedBy: null
compendiumSource: null
duplicateSource: null
_key: '!actors.items!f31jeCsQgw3hWjk6.CYpxxf1uTa78NWR9'
- _id: 6DK46pyO0hzEuuUg
name: Morsure
@ -145,8 +165,13 @@ items:
default: 0
_stats:
systemId: foundryvtt-reve-de-dragon
systemVersion: 12.0.22
systemVersion: 10.7.19
coreVersion: '12.331'
createdTime: null
modifiedTime: 1686700776477
lastModifiedBy: Hp9ImM4o9YRTSdfu
compendiumSource: null
duplicateSource: null
_key: '!actors.items!f31jeCsQgw3hWjk6.6DK46pyO0hzEuuUg'
- _id: lzEdMrKXbOYrWG5S
name: Vigilance
@ -162,7 +187,7 @@ items:
carac_value: 13
niveau: 3
default_diffLibre: 0
categorie: generale
categorie: ''
categorie_parade: ''
iscombat: false
isnaturelle: true
@ -173,13 +198,21 @@ items:
ownership:
default: 0
_stats:
systemId: foundryvtt-reve-de-dragon
systemVersion: 12.0.22
systemId: null
systemVersion: null
coreVersion: '12.331'
createdTime: null
modifiedTime: null
lastModifiedBy: null
compendiumSource: null
duplicateSource: null
_key: '!actors.items!f31jeCsQgw3hWjk6.lzEdMrKXbOYrWG5S'
effects: []
folder: null
sort: 100001
flags:
core:
sourceId: Compendium.foundryvtt-reve-de-dragon.animaux.f31jeCsQgw3hWjk6
system:
carac:
taille:
@ -285,9 +318,57 @@ system:
chevreuils, voire aux humains isol&eacute;s. La fourrure de furlong est
tr&egrave;s recherch&eacute;e.</p>
race: ''
notesmj: ''
notesmj: Notes du MJ
blessures:
legeres:
liste:
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
graves:
liste:
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
critiques:
liste:
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
ownership:
default: 0
jOzRscDxoXZWpGS6: 3
prototypeToken:
flags: {}
name: Furlong
@ -300,9 +381,9 @@ prototypeToken:
disposition: -1
displayBars: 0
bar1:
attribute: sante.vie
attribute: null
bar2:
attribute: sante.endurance
attribute: null
randomImg: false
alpha: 1
light:
@ -366,7 +447,12 @@ prototypeToken:
texture: null
_stats:
systemId: foundryvtt-reve-de-dragon
systemVersion: 12.0.22
systemVersion: 10.7.19
coreVersion: '12.331'
createdTime: 1663623574877
modifiedTime: 1686701218709
lastModifiedBy: Hp9ImM4o9YRTSdfu
compendiumSource: Compendium.foundryvtt-reve-de-dragon.animaux.f31jeCsQgw3hWjk6
duplicateSource: null
_key: '!actors!f31jeCsQgw3hWjk6'

View File

@ -7,6 +7,10 @@ items:
name: Morsure
type: competencecreature
sort: 100000
flags:
core:
sourceId: >-
Compendium.foundryvtt-reve-de-dragon.competences-creatures.6DK46pyO0hzEuuUg
img: systems/foundryvtt-reve-de-dragon/icons/compcreature-morsure.webp
effects: []
folder: null
@ -28,13 +32,23 @@ items:
default: 0
_stats:
systemId: foundryvtt-reve-de-dragon
systemVersion: 12.0.22
systemVersion: 10.7.19
coreVersion: '12.331'
createdTime: null
modifiedTime: 1686700776480
lastModifiedBy: Hp9ImM4o9YRTSdfu
compendiumSource: >-
Compendium.foundryvtt-reve-de-dragon.competences-creatures.6DK46pyO0hzEuuUg
duplicateSource: null
_key: '!actors.items!igtHarwizNIUhd8M.bwJZ6nTLX9hohV7Q'
- _id: 7td0EmFMtpwNyWwo
name: Esquive
type: competencecreature
sort: 200000
flags:
core:
sourceId: >-
Compendium.foundryvtt-reve-de-dragon.competences-creatures.CYpxxf1uTa78NWR9
img: systems/foundryvtt-reve-de-dragon/icons/competence_esquive.webp
effects: []
folder: null
@ -44,7 +58,7 @@ items:
carac_value: 15
niveau: 6
default_diffLibre: 0
categorie: generale
categorie: ''
categorie_parade: ''
iscombat: false
isnaturelle: true
@ -55,14 +69,24 @@ items:
ownership:
default: 0
_stats:
systemId: foundryvtt-reve-de-dragon
systemVersion: 12.0.22
systemId: null
systemVersion: null
coreVersion: '12.331'
createdTime: null
modifiedTime: null
lastModifiedBy: null
compendiumSource: >-
Compendium.foundryvtt-reve-de-dragon.competences-creatures.CYpxxf1uTa78NWR9
duplicateSource: null
_key: '!actors.items!igtHarwizNIUhd8M.7td0EmFMtpwNyWwo'
- _id: d2yxJ5c57vMatAQV
name: Discrétion
type: competencecreature
sort: 300000
flags:
core:
sourceId: >-
Compendium.foundryvtt-reve-de-dragon.competences-creatures.yDHZfK4RmwQW4YaW
img: systems/foundryvtt-reve-de-dragon/icons/competence_discretion.webp
effects: []
folder: null
@ -72,7 +96,7 @@ items:
carac_value: 14
niveau: 3
default_diffLibre: 0
categorie: generale
categorie: ''
categorie_parade: ''
iscombat: false
isnaturelle: true
@ -83,14 +107,24 @@ items:
ownership:
default: 0
_stats:
systemId: foundryvtt-reve-de-dragon
systemVersion: 12.0.22
systemId: null
systemVersion: null
coreVersion: '12.331'
createdTime: null
modifiedTime: null
lastModifiedBy: null
compendiumSource: >-
Compendium.foundryvtt-reve-de-dragon.competences-creatures.yDHZfK4RmwQW4YaW
duplicateSource: null
_key: '!actors.items!igtHarwizNIUhd8M.d2yxJ5c57vMatAQV'
- _id: aGm8xRr55CPUo5rM
name: Pickpocket
type: competencecreature
sort: 400000
flags:
core:
sourceId: >-
Compendium.foundryvtt-reve-de-dragon.competences-creatures.sUdXhpuVVOAlcVpo
img: systems/foundryvtt-reve-de-dragon/icons/competence_pickpocket.webp
effects: []
folder: null
@ -100,7 +134,7 @@ items:
carac_value: 14
niveau: 3
default_diffLibre: 0
categorie: generale
categorie: ''
categorie_parade: ''
iscombat: false
isnaturelle: true
@ -111,14 +145,24 @@ items:
ownership:
default: 0
_stats:
systemId: foundryvtt-reve-de-dragon
systemVersion: 12.0.22
systemId: null
systemVersion: null
coreVersion: '12.331'
createdTime: null
modifiedTime: null
lastModifiedBy: null
compendiumSource: >-
Compendium.foundryvtt-reve-de-dragon.competences-creatures.sUdXhpuVVOAlcVpo
duplicateSource: null
_key: '!actors.items!igtHarwizNIUhd8M.aGm8xRr55CPUo5rM'
- _id: bL7lL688cp1s1Vke
name: Vigilance
type: competencecreature
sort: 500000
flags:
core:
sourceId: >-
Compendium.foundryvtt-reve-de-dragon.competences-creatures.lzEdMrKXbOYrWG5S
img: systems/foundryvtt-reve-de-dragon/icons/competence_vigilance.webp
effects: []
folder: null
@ -128,7 +172,7 @@ items:
carac_value: 14
niveau: 0
default_diffLibre: 0
categorie: generale
categorie: ''
categorie_parade: ''
iscombat: false
isnaturelle: true
@ -139,14 +183,24 @@ items:
ownership:
default: 0
_stats:
systemId: foundryvtt-reve-de-dragon
systemVersion: 12.0.22
systemId: null
systemVersion: null
coreVersion: '12.331'
createdTime: null
modifiedTime: null
lastModifiedBy: null
compendiumSource: >-
Compendium.foundryvtt-reve-de-dragon.competences-creatures.lzEdMrKXbOYrWG5S
duplicateSource: null
_key: '!actors.items!igtHarwizNIUhd8M.bL7lL688cp1s1Vke'
- _id: Fu61NMCeLxi9nfSD
name: Course
type: competencecreature
sort: 600000
flags:
core:
sourceId: >-
Compendium.foundryvtt-reve-de-dragon.competences-creatures.shsUV8UpU18c0RJK
img: systems/foundryvtt-reve-de-dragon/icons/competence_course.webp
effects: []
folder: null
@ -156,7 +210,7 @@ items:
carac_value: 15
niveau: 6
default_diffLibre: 0
categorie: generale
categorie: ''
categorie_parade: ''
iscombat: false
isnaturelle: true
@ -167,14 +221,23 @@ items:
ownership:
default: 0
_stats:
systemId: foundryvtt-reve-de-dragon
systemVersion: 12.0.22
systemId: null
systemVersion: null
coreVersion: '12.331'
createdTime: null
modifiedTime: null
lastModifiedBy: null
compendiumSource: >-
Compendium.foundryvtt-reve-de-dragon.competences-creatures.shsUV8UpU18c0RJK
duplicateSource: null
_key: '!actors.items!igtHarwizNIUhd8M.Fu61NMCeLxi9nfSD'
- _id: uW9fTmhw6GBnf1e9
name: Saut
type: competencecreature
sort: 700000
flags:
core:
sourceId: Item.JZDgJ7ySiV84llkK
img: systems/foundryvtt-reve-de-dragon/icons/competence_saut.webp
effects: []
folder: null
@ -184,7 +247,7 @@ items:
carac_value: 15
niveau: 6
default_diffLibre: 0
categorie: generale
categorie: ''
categorie_parade: ''
iscombat: false
isnaturelle: true
@ -195,13 +258,21 @@ items:
ownership:
default: 0
_stats:
systemId: foundryvtt-reve-de-dragon
systemVersion: 12.0.22
systemId: null
systemVersion: null
coreVersion: '12.331'
createdTime: null
modifiedTime: null
lastModifiedBy: null
compendiumSource: Item.JZDgJ7ySiV84llkK
duplicateSource: null
_key: '!actors.items!igtHarwizNIUhd8M.uW9fTmhw6GBnf1e9'
effects: []
folder: null
sort: 100001
flags:
core:
sourceId: Compendium.foundryvtt-reve-de-dragon.animaux.igtHarwizNIUhd8M
system:
carac:
taille:
@ -317,9 +388,57 @@ system:
agressif, le glipzouk ne se bat que s&rsquo;il est accul&eacute; sans
pouvoir fuir.</p>
race: ''
notesmj: ''
notesmj: Notes du MJ
blessures:
legeres:
liste:
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
graves:
liste:
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
critiques:
liste:
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
ownership:
default: 0
jOzRscDxoXZWpGS6: 3
prototypeToken:
flags: {}
name: Glipzouk
@ -332,9 +451,9 @@ prototypeToken:
disposition: -1
displayBars: 0
bar1:
attribute: sante.vie
attribute: null
bar2:
attribute: sante.endurance
attribute: null
randomImg: false
alpha: 1
light:
@ -398,7 +517,12 @@ prototypeToken:
texture: null
_stats:
systemId: foundryvtt-reve-de-dragon
systemVersion: 12.0.22
systemVersion: 10.7.19
coreVersion: '12.331'
createdTime: 1663623574881
modifiedTime: 1686701218712
lastModifiedBy: Hp9ImM4o9YRTSdfu
compendiumSource: Compendium.foundryvtt-reve-de-dragon.animaux.igtHarwizNIUhd8M
duplicateSource: null
_key: '!actors!igtHarwizNIUhd8M'

View File

@ -29,8 +29,13 @@ items:
default: 0
_stats:
systemId: foundryvtt-reve-de-dragon
systemVersion: 12.0.22
systemVersion: 10.0.16
coreVersion: '12.331'
createdTime: null
modifiedTime: 1663624241418
lastModifiedBy: Hp9ImM4o9YRTSdfu
compendiumSource: null
duplicateSource: null
_key: '!actors.items!X7j6D136KAhFvItD.shsUV8UpU18c0RJK'
- _id: JTuBQCPdumw3DfxH
name: Crête
@ -58,8 +63,13 @@ items:
default: 0
_stats:
systemId: foundryvtt-reve-de-dragon
systemVersion: 12.0.22
systemVersion: 10.7.19
coreVersion: '12.331'
createdTime: null
modifiedTime: 1686700776482
lastModifiedBy: Hp9ImM4o9YRTSdfu
compendiumSource: null
duplicateSource: null
_key: '!actors.items!X7j6D136KAhFvItD.JTuBQCPdumw3DfxH'
- _id: yDHZfK4RmwQW4YaW
name: Discrétion
@ -75,7 +85,7 @@ items:
carac_value: 10
niveau: 3
default_diffLibre: 0
categorie: generale
categorie: ''
categorie_parade: ''
iscombat: false
isnaturelle: true
@ -86,9 +96,14 @@ items:
ownership:
default: 0
_stats:
systemId: foundryvtt-reve-de-dragon
systemVersion: 12.0.22
systemId: null
systemVersion: null
coreVersion: '12.331'
createdTime: null
modifiedTime: null
lastModifiedBy: null
compendiumSource: null
duplicateSource: null
_key: '!actors.items!X7j6D136KAhFvItD.yDHZfK4RmwQW4YaW'
- _id: CYpxxf1uTa78NWR9
name: Esquive
@ -104,7 +119,7 @@ items:
carac_value: 9
niveau: 3
default_diffLibre: 0
categorie: generale
categorie: ''
categorie_parade: ''
iscombat: false
isnaturelle: true
@ -115,9 +130,14 @@ items:
ownership:
default: 0
_stats:
systemId: foundryvtt-reve-de-dragon
systemVersion: 12.0.22
systemId: null
systemVersion: null
coreVersion: '12.331'
createdTime: null
modifiedTime: null
lastModifiedBy: null
compendiumSource: null
duplicateSource: null
_key: '!actors.items!X7j6D136KAhFvItD.CYpxxf1uTa78NWR9'
- _id: efl1HdDSKpBfImQ1
name: Pierre Lancée
@ -145,8 +165,13 @@ items:
default: 0
_stats:
systemId: foundryvtt-reve-de-dragon
systemVersion: 12.0.22
systemVersion: 10.0.16
coreVersion: '12.331'
createdTime: null
modifiedTime: 1663624231257
lastModifiedBy: Hp9ImM4o9YRTSdfu
compendiumSource: null
duplicateSource: null
_key: '!actors.items!X7j6D136KAhFvItD.efl1HdDSKpBfImQ1'
- _id: OzHBowOMADRwcVXR
name: Pierre Tenue
@ -174,8 +199,13 @@ items:
default: 0
_stats:
systemId: foundryvtt-reve-de-dragon
systemVersion: 12.0.22
systemVersion: 10.0.16
coreVersion: '12.331'
createdTime: null
modifiedTime: 1663624295697
lastModifiedBy: Hp9ImM4o9YRTSdfu
compendiumSource: null
duplicateSource: null
_key: '!actors.items!X7j6D136KAhFvItD.OzHBowOMADRwcVXR'
- _id: lzEdMrKXbOYrWG5S
name: Vigilance
@ -191,7 +221,7 @@ items:
carac_value: 10
niveau: 3
default_diffLibre: 0
categorie: generale
categorie: ''
categorie_parade: ''
iscombat: false
isnaturelle: true
@ -202,14 +232,22 @@ items:
ownership:
default: 0
_stats:
systemId: foundryvtt-reve-de-dragon
systemVersion: 12.0.22
systemId: null
systemVersion: null
coreVersion: '12.331'
createdTime: null
modifiedTime: null
lastModifiedBy: null
compendiumSource: null
duplicateSource: null
_key: '!actors.items!X7j6D136KAhFvItD.lzEdMrKXbOYrWG5S'
- _id: 2G5PanD98Nj91PQD
name: Saut
type: competencecreature
sort: 750000
flags:
core:
sourceId: Item.JZDgJ7ySiV84llkK
img: systems/foundryvtt-reve-de-dragon/icons/competence_saut.webp
effects: []
folder: null
@ -219,7 +257,7 @@ items:
carac_value: 13
niveau: 3
default_diffLibre: 0
categorie: generale
categorie: ''
categorie_parade: ''
iscombat: false
isnaturelle: true
@ -230,13 +268,21 @@ items:
ownership:
default: 0
_stats:
systemId: foundryvtt-reve-de-dragon
systemVersion: 12.0.22
systemId: null
systemVersion: null
coreVersion: '12.331'
createdTime: null
modifiedTime: null
lastModifiedBy: null
compendiumSource: Item.JZDgJ7ySiV84llkK
duplicateSource: null
_key: '!actors.items!X7j6D136KAhFvItD.2G5PanD98Nj91PQD'
effects: []
folder: null
sort: 100001
flags:
core:
sourceId: Compendium.foundryvtt-reve-de-dragon.animaux.X7j6D136KAhFvItD
system:
carac:
taille:
@ -346,9 +392,57 @@ system:
les glous. Agressifs et omnivores, les glous d&eacute;vorent la chair de
leurs vaincus.</p>
race: ''
notesmj: ''
notesmj: Notes du MJ
blessures:
legeres:
liste:
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
graves:
liste:
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
critiques:
liste:
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
ownership:
default: 0
jOzRscDxoXZWpGS6: 3
prototypeToken:
flags: {}
name: Glou
@ -361,9 +455,9 @@ prototypeToken:
disposition: -1
displayBars: 0
bar1:
attribute: sante.vie
attribute: null
bar2:
attribute: sante.endurance
attribute: null
randomImg: false
alpha: 1
light:
@ -427,7 +521,12 @@ prototypeToken:
texture: null
_stats:
systemId: foundryvtt-reve-de-dragon
systemVersion: 12.0.22
systemVersion: 10.7.19
coreVersion: '12.331'
createdTime: 1663623574862
modifiedTime: 1686701218712
lastModifiedBy: Hp9ImM4o9YRTSdfu
compendiumSource: Compendium.foundryvtt-reve-de-dragon.animaux.X7j6D136KAhFvItD
duplicateSource: null
_key: '!actors!X7j6D136KAhFvItD'

View File

@ -17,7 +17,7 @@ items:
carac_value: 10
niveau: 3
default_diffLibre: 0
categorie: generale
categorie: ''
categorie_parade: ''
iscombat: false
isnaturelle: true
@ -28,9 +28,14 @@ items:
ownership:
default: 0
_stats:
systemId: foundryvtt-reve-de-dragon
systemVersion: 12.0.22
systemId: null
systemVersion: null
coreVersion: '12.331'
createdTime: null
modifiedTime: null
lastModifiedBy: null
compendiumSource: null
duplicateSource: null
_key: '!actors.items!f6wzOaOzdwy51prt.shsUV8UpU18c0RJK'
- _id: yDHZfK4RmwQW4YaW
name: Discrétion
@ -46,7 +51,7 @@ items:
carac_value: 10
niveau: 3
default_diffLibre: 0
categorie: generale
categorie: ''
categorie_parade: ''
iscombat: false
isnaturelle: true
@ -57,9 +62,14 @@ items:
ownership:
default: 0
_stats:
systemId: foundryvtt-reve-de-dragon
systemVersion: 12.0.22
systemId: null
systemVersion: null
coreVersion: '12.331'
createdTime: null
modifiedTime: null
lastModifiedBy: null
compendiumSource: null
duplicateSource: null
_key: '!actors.items!f6wzOaOzdwy51prt.yDHZfK4RmwQW4YaW'
- _id: CYpxxf1uTa78NWR9
name: Esquive
@ -75,7 +85,7 @@ items:
carac_value: 10
niveau: 3
default_diffLibre: 0
categorie: generale
categorie: ''
categorie_parade: ''
iscombat: false
isnaturelle: true
@ -86,9 +96,14 @@ items:
ownership:
default: 0
_stats:
systemId: foundryvtt-reve-de-dragon
systemVersion: 12.0.22
systemId: null
systemVersion: null
coreVersion: '12.331'
createdTime: null
modifiedTime: null
lastModifiedBy: null
compendiumSource: null
duplicateSource: null
_key: '!actors.items!f6wzOaOzdwy51prt.CYpxxf1uTa78NWR9'
- _id: BjqRrGtHtTzuNpZB
name: Griffes et Crocs
@ -116,8 +131,13 @@ items:
default: 0
_stats:
systemId: foundryvtt-reve-de-dragon
systemVersion: 12.0.22
systemVersion: 10.7.19
coreVersion: '12.331'
createdTime: null
modifiedTime: 1686700776484
lastModifiedBy: Hp9ImM4o9YRTSdfu
compendiumSource: null
duplicateSource: null
_key: '!actors.items!f6wzOaOzdwy51prt.BjqRrGtHtTzuNpZB'
- _id: lzEdMrKXbOYrWG5S
name: Vigilance
@ -133,7 +153,7 @@ items:
carac_value: 10
niveau: 3
default_diffLibre: 0
categorie: generale
categorie: ''
categorie_parade: ''
iscombat: false
isnaturelle: true
@ -144,13 +164,21 @@ items:
ownership:
default: 0
_stats:
systemId: foundryvtt-reve-de-dragon
systemVersion: 12.0.22
systemId: null
systemVersion: null
coreVersion: '12.331'
createdTime: null
modifiedTime: null
lastModifiedBy: null
compendiumSource: null
duplicateSource: null
_key: '!actors.items!f6wzOaOzdwy51prt.lzEdMrKXbOYrWG5S'
effects: []
folder: null
sort: 100001
flags:
core:
sourceId: Compendium.foundryvtt-reve-de-dragon.animaux.f6wzOaOzdwy51prt
system:
carac:
taille:
@ -257,7 +285,56 @@ system:
<h1 style="box-sizing: border-box; user-select: text; color: #191813;
font-family: GoudyAcc, sans-serif;">Venin</h1>
<p>@UUID[Compendium.foundryvtt-reve-de-dragon.maladies-et-poisons.Item.IF19EUvrY1HL87lr]{Venin paralysant de goule}</p>
<table style="box-sizing: border-box; user-select: text; width: 395px;
color: #191813; font-family: GoudyAcc, sans-serif; height: 65px;"
border="1">
<tbody style="box-sizing: border-box; user-select: text;">
<tr style="box-sizing: border-box; user-select: text; height: 16px;">
<td style="box-sizing: border-box; user-select: text; width: 122px; height:
16px;">Malignit&eacute;</td>
<td style="box-sizing: border-box; user-select: text; width: 272px; height:
16px;">6</td>
</tr>
<tr style="box-sizing: border-box; user-select: text; height: 16px;">
<td style="box-sizing: border-box; user-select: text; width: 122px; height:
16px;">P&eacute;riodicit&eacute;</td>
<td style="box-sizing: border-box; user-select: text; width: 272px; height:
16px;">1 round</td>
</tr>
<tr style="box-sizing: border-box; user-select: text; height: 16px;">
<td style="box-sizing: border-box; user-select: text; width: 122px; height:
16px;">Dommages</td>
<td style="box-sizing: border-box; user-select: text; width: 272px; height:
16px;">1 ligne de fatigue</td>
</tr>
<tr style="box-sizing: border-box; user-select: text; height: 17px;">
<td style="box-sizing: border-box; user-select: text; width: 122px; height:
17px;">Antidotes</td>
<td style="box-sizing: border-box; user-select: text; width: 272px; height:
17px;">-4 \ Floume-dhu +16</td>
</tr>
</tbody>
</table>
<p>La paralysie intervient quand toutes les lignes de fatigue sont pleines
et dure 6 heures.</p>
@ -267,9 +344,57 @@ system:
(pour une dose": une demi-mesure de chaque). Puis chauffer le m&eacute;lange
jusqu&rsquo;&agrave; couleur bleu-sangue (-2).</p>
race: ''
notesmj: ''
notesmj: Notes du MJ
blessures:
legeres:
liste:
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
graves:
liste:
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
critiques:
liste:
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
ownership:
default: 0
jOzRscDxoXZWpGS6: 3
prototypeToken:
flags: {}
name: Goule
@ -282,9 +407,9 @@ prototypeToken:
disposition: -1
displayBars: 0
bar1:
attribute: sante.vie
attribute: null
bar2:
attribute: sante.endurance
attribute: null
randomImg: false
alpha: 1
light:
@ -348,7 +473,12 @@ prototypeToken:
texture: null
_stats:
systemId: foundryvtt-reve-de-dragon
systemVersion: 12.0.22
systemVersion: 10.7.19
coreVersion: '12.331'
createdTime: 1663623574878
modifiedTime: 1686701218713
lastModifiedBy: Hp9ImM4o9YRTSdfu
compendiumSource: Compendium.foundryvtt-reve-de-dragon.animaux.f6wzOaOzdwy51prt
duplicateSource: null
_key: '!actors!f6wzOaOzdwy51prt'

View File

@ -17,7 +17,7 @@ items:
carac_value: 15
niveau: 5
default_diffLibre: 0
categorie: generale
categorie: ''
categorie_parade: ''
iscombat: false
isnaturelle: true
@ -28,13 +28,21 @@ items:
ownership:
default: 0
_stats:
systemId: foundryvtt-reve-de-dragon
systemVersion: 12.0.22
systemId: null
systemVersion: null
coreVersion: '12.331'
createdTime: null
modifiedTime: null
lastModifiedBy: null
compendiumSource: null
duplicateSource: null
_key: '!actors.items!VCRmWnhzCF9tJTD0.yDHZfK4RmwQW4YaW'
effects: []
folder: null
sort: 100001
flags:
core:
sourceId: Compendium.foundryvtt-reve-de-dragon.animaux.VCRmWnhzCF9tJTD0
system:
carac:
taille:
@ -145,9 +153,57 @@ system:
<p>Tout coup qui touche la grincette l&rsquo;extermine.</p>
race: ''
notesmj: ''
notesmj: Notes du MJ
blessures:
legeres:
liste:
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
graves:
liste:
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
critiques:
liste:
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
ownership:
default: 0
jOzRscDxoXZWpGS6: 3
prototypeToken:
flags: {}
name: Grincette
@ -160,9 +216,9 @@ prototypeToken:
disposition: -1
displayBars: 0
bar1:
attribute: sante.vie
attribute: null
bar2:
attribute: sante.endurance
attribute: null
randomImg: false
alpha: 1
light:
@ -226,7 +282,12 @@ prototypeToken:
texture: null
_stats:
systemId: foundryvtt-reve-de-dragon
systemVersion: 12.0.22
systemVersion: 10.7.19
coreVersion: '12.331'
createdTime: 1663623574858
modifiedTime: 1686701218714
lastModifiedBy: Hp9ImM4o9YRTSdfu
compendiumSource: Compendium.foundryvtt-reve-de-dragon.animaux.VCRmWnhzCF9tJTD0
duplicateSource: null
_key: '!actors!VCRmWnhzCF9tJTD0'

View File

@ -17,7 +17,7 @@ items:
carac_value: 14
niveau: 3
default_diffLibre: 0
categorie: generale
categorie: ''
categorie_parade: ''
iscombat: false
isnaturelle: true
@ -28,9 +28,14 @@ items:
ownership:
default: 0
_stats:
systemId: foundryvtt-reve-de-dragon
systemVersion: 12.0.22
systemId: null
systemVersion: null
coreVersion: '12.331'
createdTime: null
modifiedTime: null
lastModifiedBy: null
compendiumSource: null
duplicateSource: null
_key: '!actors.items!OWuf2ryyCtipWnpE.shsUV8UpU18c0RJK'
- _id: 4GmpkphbsmQjvVVK
name: Escalade
@ -46,7 +51,7 @@ items:
carac_value: 14
niveau: 3
default_diffLibre: 0
categorie: generale
categorie: ''
categorie_parade: ''
iscombat: false
isnaturelle: true
@ -57,9 +62,14 @@ items:
ownership:
default: 0
_stats:
systemId: foundryvtt-reve-de-dragon
systemVersion: 12.0.22
systemId: null
systemVersion: null
coreVersion: '12.331'
createdTime: null
modifiedTime: null
lastModifiedBy: null
compendiumSource: null
duplicateSource: null
_key: '!actors.items!OWuf2ryyCtipWnpE.4GmpkphbsmQjvVVK'
- _id: CYpxxf1uTa78NWR9
name: Esquive
@ -75,7 +85,7 @@ items:
carac_value: 10
niveau: 3
default_diffLibre: 0
categorie: generale
categorie: ''
categorie_parade: ''
iscombat: false
isnaturelle: true
@ -86,9 +96,14 @@ items:
ownership:
default: 0
_stats:
systemId: foundryvtt-reve-de-dragon
systemVersion: 12.0.22
systemId: null
systemVersion: null
coreVersion: '12.331'
createdTime: null
modifiedTime: null
lastModifiedBy: null
compendiumSource: null
duplicateSource: null
_key: '!actors.items!OWuf2ryyCtipWnpE.CYpxxf1uTa78NWR9'
- _id: BjqRrGtHtTzuNpZB
name: Griffes et Crocs
@ -116,8 +131,13 @@ items:
default: 0
_stats:
systemId: foundryvtt-reve-de-dragon
systemVersion: 12.0.22
systemVersion: 10.7.19
coreVersion: '12.331'
createdTime: null
modifiedTime: 1686700776487
lastModifiedBy: Hp9ImM4o9YRTSdfu
compendiumSource: null
duplicateSource: null
_key: '!actors.items!OWuf2ryyCtipWnpE.BjqRrGtHtTzuNpZB'
- _id: lzEdMrKXbOYrWG5S
name: Vigilance
@ -133,7 +153,7 @@ items:
carac_value: 11
niveau: 3
default_diffLibre: 0
categorie: generale
categorie: ''
categorie_parade: ''
iscombat: false
isnaturelle: true
@ -144,14 +164,22 @@ items:
ownership:
default: 0
_stats:
systemId: foundryvtt-reve-de-dragon
systemVersion: 12.0.22
systemId: null
systemVersion: null
coreVersion: '12.331'
createdTime: null
modifiedTime: null
lastModifiedBy: null
compendiumSource: null
duplicateSource: null
_key: '!actors.items!OWuf2ryyCtipWnpE.lzEdMrKXbOYrWG5S'
- _id: wxT2H9CD43z4LlnS
name: Saut
type: competencecreature
sort: 100000
flags:
core:
sourceId: Item.JZDgJ7ySiV84llkK
img: systems/foundryvtt-reve-de-dragon/icons/competence_saut.webp
effects: []
folder: null
@ -161,7 +189,7 @@ items:
carac_value: 14
niveau: 3
default_diffLibre: 0
categorie: generale
categorie: ''
categorie_parade: ''
iscombat: false
isnaturelle: true
@ -172,13 +200,21 @@ items:
ownership:
default: 0
_stats:
systemId: foundryvtt-reve-de-dragon
systemVersion: 12.0.22
systemId: null
systemVersion: null
coreVersion: '12.331'
createdTime: null
modifiedTime: null
lastModifiedBy: null
compendiumSource: Item.JZDgJ7ySiV84llkK
duplicateSource: null
_key: '!actors.items!OWuf2ryyCtipWnpE.wxT2H9CD43z4LlnS'
effects: []
folder: null
sort: 100001
flags:
core:
sourceId: Compendium.foundryvtt-reve-de-dragon.animaux.OWuf2ryyCtipWnpE
system:
carac:
taille:
@ -286,9 +322,57 @@ system:
pr&eacute;matur&eacute;ment. En combat, ses r&eacute;ussites
particuli&egrave;res sont usuellement pass&eacute;es en <em>force</em>.</p>
race: ''
notesmj: ''
notesmj: Notes du MJ
blessures:
legeres:
liste:
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
graves:
liste:
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
critiques:
liste:
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
ownership:
default: 0
jOzRscDxoXZWpGS6: 3
prototypeToken:
flags: {}
name: Grizzal
@ -301,9 +385,9 @@ prototypeToken:
disposition: -1
displayBars: 0
bar1:
attribute: sante.vie
attribute: null
bar2:
attribute: sante.endurance
attribute: null
randomImg: false
alpha: 1
light:
@ -367,7 +451,12 @@ prototypeToken:
texture: null
_stats:
systemId: foundryvtt-reve-de-dragon
systemVersion: 12.0.22
systemVersion: 10.7.19
coreVersion: '12.331'
createdTime: 1663623574854
modifiedTime: 1686701218714
lastModifiedBy: Hp9ImM4o9YRTSdfu
compendiumSource: Compendium.foundryvtt-reve-de-dragon.animaux.OWuf2ryyCtipWnpE
duplicateSource: null
_key: '!actors!OWuf2ryyCtipWnpE'

View File

@ -17,7 +17,7 @@ items:
carac_value: 11
niveau: 4
default_diffLibre: 0
categorie: generale
categorie: ''
categorie_parade: ''
iscombat: false
isnaturelle: true
@ -28,9 +28,14 @@ items:
ownership:
default: 0
_stats:
systemId: foundryvtt-reve-de-dragon
systemVersion: 12.0.22
systemId: null
systemVersion: null
coreVersion: '12.331'
createdTime: null
modifiedTime: null
lastModifiedBy: null
compendiumSource: null
duplicateSource: null
_key: '!actors.items!BgXjyfnolHRQNWCj.CYpxxf1uTa78NWR9'
- _id: ndNshntOYb1JFNqi
name: Serres
@ -58,12 +63,20 @@ items:
default: 0
_stats:
systemId: foundryvtt-reve-de-dragon
systemVersion: 12.0.22
systemVersion: 10.7.19
coreVersion: '12.331'
createdTime: null
modifiedTime: 1686700776491
lastModifiedBy: Hp9ImM4o9YRTSdfu
compendiumSource: null
duplicateSource: null
_key: '!actors.items!BgXjyfnolHRQNWCj.ndNshntOYb1JFNqi'
effects: []
folder: null
sort: 100001
flags:
core:
sourceId: Compendium.foundryvtt-reve-de-dragon.animaux.BgXjyfnolHRQNWCj
system:
carac:
taille:
@ -184,9 +197,57 @@ system:
ne peut pas r&eacute;utiliser son pouvoir sur un personnage qui a
r&eacute;ussi son JR.</p>
race: ''
notesmj: ''
notesmj: Notes du MJ
blessures:
legeres:
liste:
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
graves:
liste:
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
critiques:
liste:
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
ownership:
default: 0
jOzRscDxoXZWpGS6: 3
prototypeToken:
flags: {}
name: Harpie
@ -265,7 +326,12 @@ prototypeToken:
texture: null
_stats:
systemId: foundryvtt-reve-de-dragon
systemVersion: 12.0.22
systemVersion: 10.7.19
coreVersion: '12.331'
createdTime: 1663623574842
modifiedTime: 1686701218715
lastModifiedBy: Hp9ImM4o9YRTSdfu
compendiumSource: Compendium.foundryvtt-reve-de-dragon.animaux.BgXjyfnolHRQNWCj
duplicateSource: null
_key: '!actors!BgXjyfnolHRQNWCj'

View File

@ -17,7 +17,7 @@ items:
carac_value: 12
niveau: 3
default_diffLibre: 0
categorie: generale
categorie: ''
categorie_parade: ''
iscombat: false
isnaturelle: true
@ -28,9 +28,14 @@ items:
ownership:
default: 0
_stats:
systemId: foundryvtt-reve-de-dragon
systemVersion: 12.0.22
systemId: null
systemVersion: null
coreVersion: '12.331'
createdTime: null
modifiedTime: null
lastModifiedBy: null
compendiumSource: null
duplicateSource: null
_key: '!actors.items!lHt8Tyexy3qzAerO.shsUV8UpU18c0RJK'
- _id: CYpxxf1uTa78NWR9
name: Esquive
@ -46,7 +51,7 @@ items:
carac_value: 11
niveau: 3
default_diffLibre: 0
categorie: generale
categorie: ''
categorie_parade: ''
iscombat: false
isnaturelle: true
@ -57,9 +62,14 @@ items:
ownership:
default: 0
_stats:
systemId: foundryvtt-reve-de-dragon
systemVersion: 12.0.22
systemId: null
systemVersion: null
coreVersion: '12.331'
createdTime: null
modifiedTime: null
lastModifiedBy: null
compendiumSource: null
duplicateSource: null
_key: '!actors.items!lHt8Tyexy3qzAerO.CYpxxf1uTa78NWR9'
- _id: BjqRrGtHtTzuNpZB
name: Griffes et Crocs
@ -87,8 +97,13 @@ items:
default: 0
_stats:
systemId: foundryvtt-reve-de-dragon
systemVersion: 12.0.22
systemVersion: 10.7.19
coreVersion: '12.331'
createdTime: null
modifiedTime: 1686700776493
lastModifiedBy: Hp9ImM4o9YRTSdfu
compendiumSource: null
duplicateSource: null
_key: '!actors.items!lHt8Tyexy3qzAerO.BjqRrGtHtTzuNpZB'
- _id: lzEdMrKXbOYrWG5S
name: Vigilance
@ -104,7 +119,7 @@ items:
carac_value: 11
niveau: 3
default_diffLibre: 0
categorie: generale
categorie: ''
categorie_parade: ''
iscombat: false
isnaturelle: true
@ -115,14 +130,22 @@ items:
ownership:
default: 0
_stats:
systemId: foundryvtt-reve-de-dragon
systemVersion: 12.0.22
systemId: null
systemVersion: null
coreVersion: '12.331'
createdTime: null
modifiedTime: null
lastModifiedBy: null
compendiumSource: null
duplicateSource: null
_key: '!actors.items!lHt8Tyexy3qzAerO.lzEdMrKXbOYrWG5S'
- _id: 4JttwOCHxLNbsW4R
name: Saut
type: competencecreature
sort: 1900000
flags:
core:
sourceId: Item.JZDgJ7ySiV84llkK
img: systems/foundryvtt-reve-de-dragon/icons/competence_saut.webp
effects: []
folder: null
@ -132,7 +155,7 @@ items:
carac_value: 12
niveau: 3
default_diffLibre: 0
categorie: generale
categorie: ''
categorie_parade: ''
iscombat: false
isnaturelle: true
@ -143,13 +166,21 @@ items:
ownership:
default: 0
_stats:
systemId: foundryvtt-reve-de-dragon
systemVersion: 12.0.22
systemId: null
systemVersion: null
coreVersion: '12.331'
createdTime: null
modifiedTime: null
lastModifiedBy: null
compendiumSource: Item.JZDgJ7ySiV84llkK
duplicateSource: null
_key: '!actors.items!lHt8Tyexy3qzAerO.4JttwOCHxLNbsW4R'
effects: []
folder: null
sort: 100001
flags:
core:
sourceId: Compendium.foundryvtt-reve-de-dragon.animaux.lHt8Tyexy3qzAerO
system:
carac:
taille:
@ -253,9 +284,57 @@ system:
l&rsquo;un des deux partenaires, g&eacute;n&eacute;ralement le m&acirc;le,
trouve la mort.</p>
race: ''
notesmj: ''
notesmj: Notes du MJ
blessures:
legeres:
liste:
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
graves:
liste:
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
critiques:
liste:
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
ownership:
default: 0
jOzRscDxoXZWpGS6: 3
prototypeToken:
flags: {}
name: Jigstang
@ -268,9 +347,9 @@ prototypeToken:
disposition: -1
displayBars: 0
bar1:
attribute: sante.vie
attribute: null
bar2:
attribute: sante.endurance
attribute: null
randomImg: false
alpha: 1
light:
@ -334,7 +413,12 @@ prototypeToken:
texture: null
_stats:
systemId: foundryvtt-reve-de-dragon
systemVersion: 12.0.22
systemVersion: 10.7.19
coreVersion: '12.331'
createdTime: 1663623574884
modifiedTime: 1686701218716
lastModifiedBy: Hp9ImM4o9YRTSdfu
compendiumSource: Compendium.foundryvtt-reve-de-dragon.animaux.lHt8Tyexy3qzAerO
duplicateSource: null
_key: '!actors!lHt8Tyexy3qzAerO'

View File

@ -17,7 +17,7 @@ items:
carac_value: 12
niveau: 4
default_diffLibre: 0
categorie: generale
categorie: ''
categorie_parade: ''
iscombat: false
isnaturelle: true
@ -28,9 +28,14 @@ items:
ownership:
default: 0
_stats:
systemId: foundryvtt-reve-de-dragon
systemVersion: 12.0.22
systemId: null
systemVersion: null
coreVersion: '12.331'
createdTime: null
modifiedTime: null
lastModifiedBy: null
compendiumSource: null
duplicateSource: null
_key: '!actors.items!YjBDfNoLA7rlofsh.CYpxxf1uTa78NWR9'
- _id: h9ASt4vrvEgxfj7j
name: Tronçonneuse
@ -58,8 +63,13 @@ items:
default: 0
_stats:
systemId: foundryvtt-reve-de-dragon
systemVersion: 12.0.22
systemVersion: 10.7.19
coreVersion: '12.331'
createdTime: null
modifiedTime: 1686700776495
lastModifiedBy: Hp9ImM4o9YRTSdfu
compendiumSource: null
duplicateSource: null
_key: '!actors.items!YjBDfNoLA7rlofsh.h9ASt4vrvEgxfj7j'
- _id: lzEdMrKXbOYrWG5S
name: Vigilance
@ -75,7 +85,7 @@ items:
carac_value: 11
niveau: 3
default_diffLibre: 0
categorie: generale
categorie: ''
categorie_parade: ''
iscombat: false
isnaturelle: true
@ -86,9 +96,14 @@ items:
ownership:
default: 0
_stats:
systemId: foundryvtt-reve-de-dragon
systemVersion: 12.0.22
systemId: null
systemVersion: null
coreVersion: '12.331'
createdTime: null
modifiedTime: null
lastModifiedBy: null
compendiumSource: null
duplicateSource: null
_key: '!actors.items!YjBDfNoLA7rlofsh.lzEdMrKXbOYrWG5S'
- _id: Kt7WlB5Ui97X211z
name: Vol
@ -104,7 +119,7 @@ items:
carac_value: 14
niveau: 6
default_diffLibre: 0
categorie: generale
categorie: ''
categorie_parade: ''
iscombat: false
isnaturelle: true
@ -115,13 +130,21 @@ items:
ownership:
default: 0
_stats:
systemId: foundryvtt-reve-de-dragon
systemVersion: 12.0.22
systemId: null
systemVersion: null
coreVersion: '12.331'
createdTime: null
modifiedTime: null
lastModifiedBy: null
compendiumSource: null
duplicateSource: null
_key: '!actors.items!YjBDfNoLA7rlofsh.Kt7WlB5Ui97X211z'
effects: []
folder: null
sort: 100001
flags:
core:
sourceId: Compendium.foundryvtt-reve-de-dragon.animaux.YjBDfNoLA7rlofsh
system:
carac:
taille:
@ -232,9 +255,57 @@ system:
rebrousser chemin le round suivant et revenir examiner ce qui bouge
encore.</p>
race: ''
notesmj: ''
notesmj: Notes du MJ
blessures:
legeres:
liste:
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
graves:
liste:
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
critiques:
liste:
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
ownership:
default: 0
jOzRscDxoXZWpGS6: 3
prototypeToken:
flags: {}
name: Libelle
@ -247,9 +318,9 @@ prototypeToken:
disposition: -1
displayBars: 0
bar1:
attribute: sante.vie
attribute: null
bar2:
attribute: sante.endurance
attribute: null
randomImg: false
alpha: 1
light:
@ -313,7 +384,12 @@ prototypeToken:
texture: null
_stats:
systemId: foundryvtt-reve-de-dragon
systemVersion: 12.0.22
systemVersion: 10.7.19
coreVersion: '12.331'
createdTime: 1663623574869
modifiedTime: 1686701218716
lastModifiedBy: Hp9ImM4o9YRTSdfu
compendiumSource: Compendium.foundryvtt-reve-de-dragon.animaux.YjBDfNoLA7rlofsh
duplicateSource: null
_key: '!actors!YjBDfNoLA7rlofsh'

View File

@ -17,7 +17,7 @@ items:
carac_value: 12
niveau: 3
default_diffLibre: 0
categorie: generale
categorie: ''
categorie_parade: ''
iscombat: false
isnaturelle: true
@ -28,9 +28,14 @@ items:
ownership:
default: 0
_stats:
systemId: foundryvtt-reve-de-dragon
systemVersion: 12.0.22
systemId: null
systemVersion: null
coreVersion: '12.331'
createdTime: null
modifiedTime: null
lastModifiedBy: null
compendiumSource: null
duplicateSource: null
_key: '!actors.items!99I06oTwCziLTnnl.shsUV8UpU18c0RJK'
- _id: yDHZfK4RmwQW4YaW
name: Discrétion
@ -46,7 +51,7 @@ items:
carac_value: 12
niveau: 3
default_diffLibre: 0
categorie: generale
categorie: ''
categorie_parade: ''
iscombat: false
isnaturelle: true
@ -57,9 +62,14 @@ items:
ownership:
default: 0
_stats:
systemId: foundryvtt-reve-de-dragon
systemVersion: 12.0.22
systemId: null
systemVersion: null
coreVersion: '12.331'
createdTime: null
modifiedTime: null
lastModifiedBy: null
compendiumSource: null
duplicateSource: null
_key: '!actors.items!99I06oTwCziLTnnl.yDHZfK4RmwQW4YaW'
- _id: CYpxxf1uTa78NWR9
name: Esquive
@ -75,7 +85,7 @@ items:
carac_value: 11
niveau: 3
default_diffLibre: 0
categorie: generale
categorie: ''
categorie_parade: ''
iscombat: false
isnaturelle: true
@ -86,9 +96,14 @@ items:
ownership:
default: 0
_stats:
systemId: foundryvtt-reve-de-dragon
systemVersion: 12.0.22
systemId: null
systemVersion: null
coreVersion: '12.331'
createdTime: null
modifiedTime: null
lastModifiedBy: null
compendiumSource: null
duplicateSource: null
_key: '!actors.items!99I06oTwCziLTnnl.CYpxxf1uTa78NWR9'
- _id: 6DK46pyO0hzEuuUg
name: Morsure
@ -116,8 +131,13 @@ items:
default: 0
_stats:
systemId: foundryvtt-reve-de-dragon
systemVersion: 12.0.22
systemVersion: 10.7.19
coreVersion: '12.331'
createdTime: null
modifiedTime: 1686700776497
lastModifiedBy: Hp9ImM4o9YRTSdfu
compendiumSource: null
duplicateSource: null
_key: '!actors.items!99I06oTwCziLTnnl.6DK46pyO0hzEuuUg'
- _id: lzEdMrKXbOYrWG5S
name: Vigilance
@ -133,7 +153,7 @@ items:
carac_value: 13
niveau: 3
default_diffLibre: 0
categorie: generale
categorie: ''
categorie_parade: ''
iscombat: false
isnaturelle: true
@ -144,14 +164,22 @@ items:
ownership:
default: 0
_stats:
systemId: foundryvtt-reve-de-dragon
systemVersion: 12.0.22
systemId: null
systemVersion: null
coreVersion: '12.331'
createdTime: null
modifiedTime: null
lastModifiedBy: null
compendiumSource: null
duplicateSource: null
_key: '!actors.items!99I06oTwCziLTnnl.lzEdMrKXbOYrWG5S'
- _id: PBS6YfmZLbSbwzpH
name: Saut
type: competencecreature
sort: 100000
flags:
core:
sourceId: Item.JZDgJ7ySiV84llkK
img: systems/foundryvtt-reve-de-dragon/icons/competence_saut.webp
effects: []
folder: null
@ -161,7 +189,7 @@ items:
carac_value: 12
niveau: 3
default_diffLibre: 0
categorie: generale
categorie: ''
categorie_parade: ''
iscombat: false
isnaturelle: true
@ -172,13 +200,21 @@ items:
ownership:
default: 0
_stats:
systemId: foundryvtt-reve-de-dragon
systemVersion: 12.0.22
systemId: null
systemVersion: null
coreVersion: '12.331'
createdTime: null
modifiedTime: null
lastModifiedBy: null
compendiumSource: Item.JZDgJ7ySiV84llkK
duplicateSource: null
_key: '!actors.items!99I06oTwCziLTnnl.PBS6YfmZLbSbwzpH'
effects: []
folder: null
sort: 100001
flags:
core:
sourceId: Compendium.foundryvtt-reve-de-dragon.animaux.99I06oTwCziLTnnl
system:
carac:
taille:
@ -286,9 +322,57 @@ system:
vont m&ecirc;me jusqu&rsquo;&agrave; effectuer des razzias sur les
villages.</p>
race: ''
notesmj: ''
notesmj: Notes du MJ
blessures:
legeres:
liste:
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
graves:
liste:
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
critiques:
liste:
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
ownership:
default: 0
jOzRscDxoXZWpGS6: 3
prototypeToken:
flags: {}
name: Lycan
@ -367,7 +451,12 @@ prototypeToken:
texture: null
_stats:
systemId: foundryvtt-reve-de-dragon
systemVersion: 12.0.22
systemVersion: 10.7.19
coreVersion: '12.331'
createdTime: 1663623574841
modifiedTime: 1686701218717
lastModifiedBy: Hp9ImM4o9YRTSdfu
compendiumSource: Compendium.foundryvtt-reve-de-dragon.animaux.99I06oTwCziLTnnl
duplicateSource: null
_key: '!actors!99I06oTwCziLTnnl'

View File

@ -17,7 +17,7 @@ items:
carac_value: 10
niveau: 0
default_diffLibre: 0
categorie: generale
categorie: ''
categorie_parade: ''
iscombat: false
isnaturelle: true
@ -28,9 +28,14 @@ items:
ownership:
default: 0
_stats:
systemId: foundryvtt-reve-de-dragon
systemVersion: 12.0.22
systemId: null
systemVersion: null
coreVersion: '12.331'
createdTime: null
modifiedTime: null
lastModifiedBy: null
compendiumSource: null
duplicateSource: null
_key: '!actors.items!DsE2xomX97onO2mN.shsUV8UpU18c0RJK'
- _id: yDHZfK4RmwQW4YaW
name: Discrétion
@ -46,7 +51,7 @@ items:
carac_value: 12
niveau: 4
default_diffLibre: 0
categorie: generale
categorie: ''
categorie_parade: ''
iscombat: false
isnaturelle: true
@ -57,9 +62,14 @@ items:
ownership:
default: 0
_stats:
systemId: foundryvtt-reve-de-dragon
systemVersion: 12.0.22
systemId: null
systemVersion: null
coreVersion: '12.331'
createdTime: null
modifiedTime: null
lastModifiedBy: null
compendiumSource: null
duplicateSource: null
_key: '!actors.items!DsE2xomX97onO2mN.yDHZfK4RmwQW4YaW'
- _id: CYpxxf1uTa78NWR9
name: Esquive
@ -75,7 +85,7 @@ items:
carac_value: 11
niveau: 3
default_diffLibre: 0
categorie: generale
categorie: ''
categorie_parade: ''
iscombat: false
isnaturelle: true
@ -86,9 +96,14 @@ items:
ownership:
default: 0
_stats:
systemId: foundryvtt-reve-de-dragon
systemVersion: 12.0.22
systemId: null
systemVersion: null
coreVersion: '12.331'
createdTime: null
modifiedTime: null
lastModifiedBy: null
compendiumSource: null
duplicateSource: null
_key: '!actors.items!DsE2xomX97onO2mN.CYpxxf1uTa78NWR9'
- _id: 6DK46pyO0hzEuuUg
name: Morsure
@ -116,8 +131,13 @@ items:
default: 0
_stats:
systemId: foundryvtt-reve-de-dragon
systemVersion: 12.0.22
systemVersion: 10.7.19
coreVersion: '12.331'
createdTime: null
modifiedTime: 1686700776499
lastModifiedBy: Hp9ImM4o9YRTSdfu
compendiumSource: null
duplicateSource: null
_key: '!actors.items!DsE2xomX97onO2mN.6DK46pyO0hzEuuUg'
- _id: efl1HdDSKpBfImQ1
name: Pierre Lancée
@ -145,8 +165,13 @@ items:
default: 0
_stats:
systemId: foundryvtt-reve-de-dragon
systemVersion: 12.0.22
systemVersion: 10.0.16
coreVersion: '12.331'
createdTime: null
modifiedTime: 1663624147664
lastModifiedBy: Hp9ImM4o9YRTSdfu
compendiumSource: null
duplicateSource: null
_key: '!actors.items!DsE2xomX97onO2mN.efl1HdDSKpBfImQ1'
- _id: lzEdMrKXbOYrWG5S
name: Vigilance
@ -162,7 +187,7 @@ items:
carac_value: 10
niveau: 3
default_diffLibre: 0
categorie: generale
categorie: ''
categorie_parade: ''
iscombat: false
isnaturelle: true
@ -173,14 +198,22 @@ items:
ownership:
default: 0
_stats:
systemId: foundryvtt-reve-de-dragon
systemVersion: 12.0.22
systemId: null
systemVersion: null
coreVersion: '12.331'
createdTime: null
modifiedTime: null
lastModifiedBy: null
compendiumSource: null
duplicateSource: null
_key: '!actors.items!DsE2xomX97onO2mN.lzEdMrKXbOYrWG5S'
- _id: WJq3afIoq0xUV2dF
name: Saut
type: competencecreature
sort: 100000
flags:
core:
sourceId: Item.JZDgJ7ySiV84llkK
img: systems/foundryvtt-reve-de-dragon/icons/competence_saut.webp
effects: []
folder: null
@ -190,7 +223,7 @@ items:
carac_value: 12
niveau: 4
default_diffLibre: 0
categorie: generale
categorie: ''
categorie_parade: ''
iscombat: false
isnaturelle: true
@ -201,13 +234,21 @@ items:
ownership:
default: 0
_stats:
systemId: foundryvtt-reve-de-dragon
systemVersion: 12.0.22
systemId: null
systemVersion: null
coreVersion: '12.331'
createdTime: null
modifiedTime: null
lastModifiedBy: null
compendiumSource: Item.JZDgJ7ySiV84llkK
duplicateSource: null
_key: '!actors.items!DsE2xomX97onO2mN.WJq3afIoq0xUV2dF'
effects: []
folder: null
sort: 100001
flags:
core:
sourceId: Compendium.foundryvtt-reve-de-dragon.animaux.DsE2xomX97onO2mN
system:
carac:
taille:
@ -324,9 +365,57 @@ system:
d&eacute;ploy&eacute;e. Certaines de leurs fosses sont assez grandes pour
accueillir des hommes.</p>
race: ''
notesmj: ''
notesmj: Notes du MJ
blessures:
legeres:
liste:
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
graves:
liste:
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
critiques:
liste:
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
ownership:
default: 0
jOzRscDxoXZWpGS6: 3
prototypeToken:
flags: {}
name: Mariol
@ -405,7 +494,12 @@ prototypeToken:
texture: null
_stats:
systemId: foundryvtt-reve-de-dragon
systemVersion: 12.0.22
systemVersion: 10.7.19
coreVersion: '12.331'
createdTime: 1663623574844
modifiedTime: 1686701218718
lastModifiedBy: Hp9ImM4o9YRTSdfu
compendiumSource: Compendium.foundryvtt-reve-de-dragon.animaux.DsE2xomX97onO2mN
duplicateSource: null
_key: '!actors!DsE2xomX97onO2mN'

View File

@ -17,7 +17,7 @@ items:
carac_value: 12
niveau: 3
default_diffLibre: 0
categorie: generale
categorie: ''
categorie_parade: ''
iscombat: false
isnaturelle: true
@ -28,9 +28,14 @@ items:
ownership:
default: 0
_stats:
systemId: foundryvtt-reve-de-dragon
systemVersion: 12.0.22
systemId: null
systemVersion: null
coreVersion: '12.331'
createdTime: null
modifiedTime: null
lastModifiedBy: null
compendiumSource: null
duplicateSource: null
_key: '!actors.items!i7pvn7kgTwIdKYtP.shsUV8UpU18c0RJK'
- _id: CYpxxf1uTa78NWR9
name: Esquive
@ -46,7 +51,7 @@ items:
carac_value: 8
niveau: 3
default_diffLibre: 0
categorie: generale
categorie: ''
categorie_parade: ''
iscombat: false
isnaturelle: true
@ -57,9 +62,14 @@ items:
ownership:
default: 0
_stats:
systemId: foundryvtt-reve-de-dragon
systemVersion: 12.0.22
systemId: null
systemVersion: null
coreVersion: '12.331'
createdTime: null
modifiedTime: null
lastModifiedBy: null
compendiumSource: null
duplicateSource: null
_key: '!actors.items!i7pvn7kgTwIdKYtP.CYpxxf1uTa78NWR9'
- _id: 6DK46pyO0hzEuuUg
name: Morsure
@ -87,8 +97,13 @@ items:
default: 0
_stats:
systemId: foundryvtt-reve-de-dragon
systemVersion: 12.0.22
systemVersion: 10.7.19
coreVersion: '12.331'
createdTime: null
modifiedTime: 1686700776538
lastModifiedBy: Hp9ImM4o9YRTSdfu
compendiumSource: null
duplicateSource: null
_key: '!actors.items!i7pvn7kgTwIdKYtP.6DK46pyO0hzEuuUg'
- _id: lzEdMrKXbOYrWG5S
name: Vigilance
@ -104,7 +119,7 @@ items:
carac_value: 12
niveau: 0
default_diffLibre: 0
categorie: generale
categorie: ''
categorie_parade: ''
iscombat: false
isnaturelle: true
@ -115,14 +130,23 @@ items:
ownership:
default: 0
_stats:
systemId: foundryvtt-reve-de-dragon
systemVersion: 12.0.22
systemId: null
systemVersion: null
coreVersion: '12.331'
createdTime: null
modifiedTime: null
lastModifiedBy: null
compendiumSource: null
duplicateSource: null
_key: '!actors.items!i7pvn7kgTwIdKYtP.lzEdMrKXbOYrWG5S'
- _id: 3MgAaUHeKGBcbyr5
name: Coup de pied
type: competencecreature
sort: 500000
flags:
core:
sourceId: >-
Compendium.foundryvtt-reve-de-dragon.competences-creatures.Zpl2Bi451vB3r91W
img: systems/foundryvtt-reve-de-dragon/icons/compcreature-coup_de_pied.webp
effects: []
folder: null
@ -144,12 +168,21 @@ items:
default: 0
_stats:
systemId: foundryvtt-reve-de-dragon
systemVersion: 12.0.22
systemVersion: 10.7.19
coreVersion: '12.331'
createdTime: null
modifiedTime: 1686700776538
lastModifiedBy: Hp9ImM4o9YRTSdfu
compendiumSource: >-
Compendium.foundryvtt-reve-de-dragon.competences-creatures.Zpl2Bi451vB3r91W
duplicateSource: null
_key: '!actors.items!i7pvn7kgTwIdKYtP.3MgAaUHeKGBcbyr5'
effects: []
folder: null
sort: 100001
flags:
core:
sourceId: Compendium.foundryvtt-reve-de-dragon.animaux.i7pvn7kgTwIdKYtP
system:
carac:
taille:
@ -240,9 +273,65 @@ system:
<p>La mule est une le croisement entre un cheval et une &acirc;nesse.
Adulte, la mule p&egrave;se 300 kg pour 1m65 au garrot.</p>
race: ''
notesmj: ''
notesmj: Notes du MJ
blessures:
legeres:
liste:
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
loc: ''
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
loc: ''
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
loc: ''
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
loc: ''
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
loc: ''
graves:
liste:
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
loc: ''
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
loc: ''
critiques:
liste:
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
loc: ''
ownership:
default: 0
Q2G6GTdrotKzYGUC: 3
prototypeToken:
flags: {}
name: Mule
@ -321,7 +410,12 @@ prototypeToken:
texture: null
_stats:
systemId: foundryvtt-reve-de-dragon
systemVersion: 12.0.22
systemVersion: 10.7.19
coreVersion: '12.331'
createdTime: 1663623574879
modifiedTime: 1686701218719
lastModifiedBy: Hp9ImM4o9YRTSdfu
compendiumSource: Compendium.foundryvtt-reve-de-dragon.animaux.i7pvn7kgTwIdKYtP
duplicateSource: null
_key: '!actors!i7pvn7kgTwIdKYtP'

View File

@ -17,7 +17,7 @@ items:
carac_value: 15
niveau: 5
default_diffLibre: 0
categorie: generale
categorie: ''
categorie_parade: ''
iscombat: false
isnaturelle: true
@ -28,13 +28,21 @@ items:
ownership:
default: 0
_stats:
systemId: foundryvtt-reve-de-dragon
systemVersion: 12.0.22
systemId: null
systemVersion: null
coreVersion: '12.331'
createdTime: null
modifiedTime: null
lastModifiedBy: null
compendiumSource: null
duplicateSource: null
_key: '!actors.items!0ogeNTXl7IwYfWZR.Kt7WlB5Ui97X211z'
effects: []
folder: null
sort: 100001
flags:
core:
sourceId: Compendium.foundryvtt-reve-de-dragon.animaux.0ogeNTXl7IwYfWZR
system:
carac:
taille:
@ -147,9 +155,57 @@ system:
revoit plus. Paranos affirme par ailleurs que tuer un oiseau-oracle porte
une terrible malchance.</p>
race: ''
notesmj: ''
notesmj: Notes du MJ
blessures:
legeres:
liste:
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
graves:
liste:
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
critiques:
liste:
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
ownership:
default: 0
jOzRscDxoXZWpGS6: 3
prototypeToken:
flags: {}
name: Oiseau-oracle
@ -162,9 +218,9 @@ prototypeToken:
disposition: -1
displayBars: 0
bar1:
attribute: sante.vie
attribute: null
bar2:
attribute: sante.endurance
attribute: null
randomImg: false
alpha: 1
light:
@ -228,7 +284,12 @@ prototypeToken:
texture: null
_stats:
systemId: foundryvtt-reve-de-dragon
systemVersion: 12.0.22
systemVersion: 10.7.19
coreVersion: '12.331'
createdTime: 1663623574837
modifiedTime: 1686701218719
lastModifiedBy: Hp9ImM4o9YRTSdfu
compendiumSource: Compendium.foundryvtt-reve-de-dragon.animaux.0ogeNTXl7IwYfWZR
duplicateSource: null
_key: '!actors!0ogeNTXl7IwYfWZR'

View File

@ -17,7 +17,7 @@ items:
carac_value: 14
niveau: 4
default_diffLibre: 0
categorie: generale
categorie: ''
categorie_parade: ''
iscombat: false
isnaturelle: true
@ -28,9 +28,14 @@ items:
ownership:
default: 0
_stats:
systemId: foundryvtt-reve-de-dragon
systemVersion: 12.0.22
systemId: null
systemVersion: null
coreVersion: '12.331'
createdTime: null
modifiedTime: null
lastModifiedBy: null
compendiumSource: null
duplicateSource: null
_key: '!actors.items!c2CVCRQY3FiZXFre.shsUV8UpU18c0RJK'
- _id: qilRzXpVaGceNmQp
name: Dague
@ -58,8 +63,13 @@ items:
default: 0
_stats:
systemId: foundryvtt-reve-de-dragon
systemVersion: 12.0.22
systemVersion: 10.0.16
coreVersion: '12.331'
createdTime: null
modifiedTime: 1663624101180
lastModifiedBy: Hp9ImM4o9YRTSdfu
compendiumSource: null
duplicateSource: null
_key: '!actors.items!c2CVCRQY3FiZXFre.qilRzXpVaGceNmQp'
- _id: yDHZfK4RmwQW4YaW
name: Discrétion
@ -75,7 +85,7 @@ items:
carac_value: 13
niveau: 5
default_diffLibre: 0
categorie: generale
categorie: ''
categorie_parade: ''
iscombat: false
isnaturelle: true
@ -86,9 +96,14 @@ items:
ownership:
default: 0
_stats:
systemId: foundryvtt-reve-de-dragon
systemVersion: 12.0.22
systemId: null
systemVersion: null
coreVersion: '12.331'
createdTime: null
modifiedTime: null
lastModifiedBy: null
compendiumSource: null
duplicateSource: null
_key: '!actors.items!c2CVCRQY3FiZXFre.yDHZfK4RmwQW4YaW'
- _id: CYpxxf1uTa78NWR9
name: Esquive
@ -104,7 +119,7 @@ items:
carac_value: 13
niveau: 5
default_diffLibre: 0
categorie: generale
categorie: ''
categorie_parade: ''
iscombat: false
isnaturelle: true
@ -115,9 +130,14 @@ items:
ownership:
default: 0
_stats:
systemId: foundryvtt-reve-de-dragon
systemVersion: 12.0.22
systemId: null
systemVersion: null
coreVersion: '12.331'
createdTime: null
modifiedTime: null
lastModifiedBy: null
compendiumSource: null
duplicateSource: null
_key: '!actors.items!c2CVCRQY3FiZXFre.CYpxxf1uTa78NWR9'
- _id: BjqRrGtHtTzuNpZB
name: Griffes et Crocs
@ -145,8 +165,13 @@ items:
default: 0
_stats:
systemId: foundryvtt-reve-de-dragon
systemVersion: 12.0.22
systemVersion: 10.7.19
coreVersion: '12.331'
createdTime: null
modifiedTime: 1686700776504
lastModifiedBy: Hp9ImM4o9YRTSdfu
compendiumSource: null
duplicateSource: null
_key: '!actors.items!c2CVCRQY3FiZXFre.BjqRrGtHtTzuNpZB'
- _id: lzEdMrKXbOYrWG5S
name: Vigilance
@ -162,7 +187,7 @@ items:
carac_value: 17
niveau: 5
default_diffLibre: 0
categorie: generale
categorie: ''
categorie_parade: ''
iscombat: false
isnaturelle: true
@ -173,14 +198,22 @@ items:
ownership:
default: 0
_stats:
systemId: foundryvtt-reve-de-dragon
systemVersion: 12.0.22
systemId: null
systemVersion: null
coreVersion: '12.331'
createdTime: null
modifiedTime: null
lastModifiedBy: null
compendiumSource: null
duplicateSource: null
_key: '!actors.items!c2CVCRQY3FiZXFre.lzEdMrKXbOYrWG5S'
- _id: tqslo53FM201P3PM
name: Saut
type: competencecreature
sort: 100000
flags:
core:
sourceId: Item.JZDgJ7ySiV84llkK
img: systems/foundryvtt-reve-de-dragon/icons/competence_saut.webp
effects: []
folder: null
@ -190,7 +223,7 @@ items:
carac_value: 14
niveau: 4
default_diffLibre: 0
categorie: generale
categorie: ''
categorie_parade: ''
iscombat: false
isnaturelle: true
@ -201,13 +234,21 @@ items:
ownership:
default: 0
_stats:
systemId: foundryvtt-reve-de-dragon
systemVersion: 12.0.22
systemId: null
systemVersion: null
coreVersion: '12.331'
createdTime: null
modifiedTime: null
lastModifiedBy: null
compendiumSource: Item.JZDgJ7ySiV84llkK
duplicateSource: null
_key: '!actors.items!c2CVCRQY3FiZXFre.tqslo53FM201P3PM'
effects: []
folder: null
sort: 100001
flags:
core:
sourceId: Compendium.foundryvtt-reve-de-dragon.animaux.c2CVCRQY3FiZXFre
system:
carac:
taille:
@ -316,9 +357,57 @@ system:
pantodars peuvent assez facilement s&rsquo;apprivoiser"; devenus adultes,
ils sont &eacute;tonnamment fid&egrave;les.</p>
race: ''
notesmj: ''
notesmj: Notes du MJ
blessures:
legeres:
liste:
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
graves:
liste:
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
critiques:
liste:
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
ownership:
default: 0
jOzRscDxoXZWpGS6: 3
prototypeToken:
flags: {}
name: Pantodar
@ -331,9 +420,9 @@ prototypeToken:
disposition: -1
displayBars: 0
bar1:
attribute: sante.vie
attribute: null
bar2:
attribute: sante.endurance
attribute: null
randomImg: false
alpha: 1
light:
@ -397,7 +486,12 @@ prototypeToken:
texture: null
_stats:
systemId: foundryvtt-reve-de-dragon
systemVersion: 12.0.22
systemVersion: 10.7.19
coreVersion: '12.331'
createdTime: 1663623574872
modifiedTime: 1686701218720
lastModifiedBy: Hp9ImM4o9YRTSdfu
compendiumSource: Compendium.foundryvtt-reve-de-dragon.animaux.c2CVCRQY3FiZXFre
duplicateSource: null
_key: '!actors!c2CVCRQY3FiZXFre'

View File

@ -17,7 +17,7 @@ items:
carac_value: 12
niveau: 3
default_diffLibre: 0
categorie: generale
categorie: ''
categorie_parade: ''
iscombat: false
isnaturelle: true
@ -28,9 +28,14 @@ items:
ownership:
default: 0
_stats:
systemId: foundryvtt-reve-de-dragon
systemVersion: 12.0.22
systemId: null
systemVersion: null
coreVersion: '12.331'
createdTime: null
modifiedTime: null
lastModifiedBy: null
compendiumSource: null
duplicateSource: null
_key: '!actors.items!eGvgsF9uiR4vKLB2.shsUV8UpU18c0RJK'
- _id: 4GmpkphbsmQjvVVK
name: Escalade
@ -46,7 +51,7 @@ items:
carac_value: 15
niveau: 5
default_diffLibre: 0
categorie: generale
categorie: ''
categorie_parade: ''
iscombat: false
isnaturelle: true
@ -57,9 +62,14 @@ items:
ownership:
default: 0
_stats:
systemId: foundryvtt-reve-de-dragon
systemVersion: 12.0.22
systemId: null
systemVersion: null
coreVersion: '12.331'
createdTime: null
modifiedTime: null
lastModifiedBy: null
compendiumSource: null
duplicateSource: null
_key: '!actors.items!eGvgsF9uiR4vKLB2.4GmpkphbsmQjvVVK'
- _id: CYpxxf1uTa78NWR9
name: Esquive
@ -75,7 +85,7 @@ items:
carac_value: 12
niveau: 5
default_diffLibre: 0
categorie: generale
categorie: ''
categorie_parade: ''
iscombat: false
isnaturelle: true
@ -86,9 +96,14 @@ items:
ownership:
default: 0
_stats:
systemId: foundryvtt-reve-de-dragon
systemVersion: 12.0.22
systemId: null
systemVersion: null
coreVersion: '12.331'
createdTime: null
modifiedTime: null
lastModifiedBy: null
compendiumSource: null
duplicateSource: null
_key: '!actors.items!eGvgsF9uiR4vKLB2.CYpxxf1uTa78NWR9'
- _id: BjqRrGtHtTzuNpZB
name: Griffes et Crocs
@ -116,8 +131,13 @@ items:
default: 0
_stats:
systemId: foundryvtt-reve-de-dragon
systemVersion: 12.0.22
systemVersion: 10.7.19
coreVersion: '12.331'
createdTime: null
modifiedTime: 1686700776508
lastModifiedBy: Hp9ImM4o9YRTSdfu
compendiumSource: null
duplicateSource: null
_key: '!actors.items!eGvgsF9uiR4vKLB2.BjqRrGtHtTzuNpZB'
- _id: lzEdMrKXbOYrWG5S
name: Vigilance
@ -133,7 +153,7 @@ items:
carac_value: 10
niveau: 3
default_diffLibre: 0
categorie: generale
categorie: ''
categorie_parade: ''
iscombat: false
isnaturelle: true
@ -144,14 +164,22 @@ items:
ownership:
default: 0
_stats:
systemId: foundryvtt-reve-de-dragon
systemVersion: 12.0.22
systemId: null
systemVersion: null
coreVersion: '12.331'
createdTime: null
modifiedTime: null
lastModifiedBy: null
compendiumSource: null
duplicateSource: null
_key: '!actors.items!eGvgsF9uiR4vKLB2.lzEdMrKXbOYrWG5S'
- _id: 8O8e3Msr2KPZqwkY
name: Saut
type: competencecreature
sort: 1900000
flags:
core:
sourceId: Item.JZDgJ7ySiV84llkK
img: systems/foundryvtt-reve-de-dragon/icons/competence_saut.webp
effects: []
folder: null
@ -161,7 +189,7 @@ items:
carac_value: 15
niveau: 5
default_diffLibre: 0
categorie: generale
categorie: ''
categorie_parade: ''
iscombat: false
isnaturelle: true
@ -172,13 +200,21 @@ items:
ownership:
default: 0
_stats:
systemId: foundryvtt-reve-de-dragon
systemVersion: 12.0.22
systemId: null
systemVersion: null
coreVersion: '12.331'
createdTime: null
modifiedTime: null
lastModifiedBy: null
compendiumSource: Item.JZDgJ7ySiV84llkK
duplicateSource: null
_key: '!actors.items!eGvgsF9uiR4vKLB2.8O8e3Msr2KPZqwkY'
effects: []
folder: null
sort: 100001
flags:
core:
sourceId: Compendium.foundryvtt-reve-de-dragon.animaux.eGvgsF9uiR4vKLB2
system:
carac:
taille:
@ -290,9 +326,57 @@ system:
particuli&egrave;res sont toujours pass&eacute;es en
<em>rapidit&eacute;</em>.</p>
race: ''
notesmj: ''
notesmj: Notes du MJ
blessures:
legeres:
liste:
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
graves:
liste:
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
critiques:
liste:
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
ownership:
default: 0
jOzRscDxoXZWpGS6: 3
prototypeToken:
flags: {}
name: Quileurbist
@ -305,9 +389,9 @@ prototypeToken:
disposition: -1
displayBars: 0
bar1:
attribute: sante.vie
attribute: null
bar2:
attribute: sante.endurance
attribute: null
randomImg: false
alpha: 1
light:
@ -371,7 +455,12 @@ prototypeToken:
texture: null
_stats:
systemId: foundryvtt-reve-de-dragon
systemVersion: 12.0.22
systemVersion: 10.7.19
coreVersion: '12.331'
createdTime: 1663623574876
modifiedTime: 1686701218721
lastModifiedBy: Hp9ImM4o9YRTSdfu
compendiumSource: Compendium.foundryvtt-reve-de-dragon.animaux.eGvgsF9uiR4vKLB2
duplicateSource: null
_key: '!actors!eGvgsF9uiR4vKLB2'

View File

@ -7,6 +7,10 @@ items:
name: Morsure (maladie)
type: competencecreature
sort: 100000
flags:
core:
sourceId: >-
Compendium.foundryvtt-reve-de-dragon.competences-creatures.6DK46pyO0hzEuuUg
img: systems/foundryvtt-reve-de-dragon/icons/compcreature-morsure.webp
effects: []
folder: null
@ -28,13 +32,23 @@ items:
default: 0
_stats:
systemId: foundryvtt-reve-de-dragon
systemVersion: 12.0.22
systemVersion: 10.7.19
coreVersion: '12.331'
createdTime: null
modifiedTime: 1686700776510
lastModifiedBy: Hp9ImM4o9YRTSdfu
compendiumSource: >-
Compendium.foundryvtt-reve-de-dragon.competences-creatures.6DK46pyO0hzEuuUg
duplicateSource: null
_key: '!actors.items!icS4ht40EGkUbUus.0z35nbSeViandim4'
- _id: w1BjJ6evq83ZMieY
name: Esquive
type: competencecreature
sort: 200000
flags:
core:
sourceId: >-
Compendium.foundryvtt-reve-de-dragon.competences-creatures.CYpxxf1uTa78NWR9
img: systems/foundryvtt-reve-de-dragon/icons/competence_esquive.webp
effects: []
folder: null
@ -44,7 +58,7 @@ items:
carac_value: 10
niveau: 2
default_diffLibre: 0
categorie: generale
categorie: ''
categorie_parade: ''
iscombat: false
isnaturelle: true
@ -55,14 +69,24 @@ items:
ownership:
default: 0
_stats:
systemId: foundryvtt-reve-de-dragon
systemVersion: 12.0.22
systemId: null
systemVersion: null
coreVersion: '12.331'
createdTime: null
modifiedTime: null
lastModifiedBy: null
compendiumSource: >-
Compendium.foundryvtt-reve-de-dragon.competences-creatures.CYpxxf1uTa78NWR9
duplicateSource: null
_key: '!actors.items!icS4ht40EGkUbUus.w1BjJ6evq83ZMieY'
- _id: dv9QLfHGa5ZwDN7l
name: Course
type: competencecreature
sort: 300000
flags:
core:
sourceId: >-
Compendium.foundryvtt-reve-de-dragon.competences-creatures.shsUV8UpU18c0RJK
img: systems/foundryvtt-reve-de-dragon/icons/competence_course.webp
effects: []
folder: null
@ -72,7 +96,7 @@ items:
carac_value: 11
niveau: 3
default_diffLibre: 0
categorie: generale
categorie: ''
categorie_parade: ''
iscombat: false
isnaturelle: true
@ -83,14 +107,24 @@ items:
ownership:
default: 0
_stats:
systemId: foundryvtt-reve-de-dragon
systemVersion: 12.0.22
systemId: null
systemVersion: null
coreVersion: '12.331'
createdTime: null
modifiedTime: null
lastModifiedBy: null
compendiumSource: >-
Compendium.foundryvtt-reve-de-dragon.competences-creatures.shsUV8UpU18c0RJK
duplicateSource: null
_key: '!actors.items!icS4ht40EGkUbUus.dv9QLfHGa5ZwDN7l'
- _id: VdLbNp5bz8hU6KDl
name: Discrétion
type: competencecreature
sort: 400000
flags:
core:
sourceId: >-
Compendium.foundryvtt-reve-de-dragon.competences-creatures.yDHZfK4RmwQW4YaW
img: systems/foundryvtt-reve-de-dragon/icons/competence_discretion.webp
effects: []
folder: null
@ -100,7 +134,7 @@ items:
carac_value: 10
niveau: 3
default_diffLibre: 0
categorie: generale
categorie: ''
categorie_parade: ''
iscombat: false
isnaturelle: true
@ -111,14 +145,24 @@ items:
ownership:
default: 0
_stats:
systemId: foundryvtt-reve-de-dragon
systemVersion: 12.0.22
systemId: null
systemVersion: null
coreVersion: '12.331'
createdTime: null
modifiedTime: null
lastModifiedBy: null
compendiumSource: >-
Compendium.foundryvtt-reve-de-dragon.competences-creatures.yDHZfK4RmwQW4YaW
duplicateSource: null
_key: '!actors.items!icS4ht40EGkUbUus.VdLbNp5bz8hU6KDl'
- _id: TXC25fwUDxF6Qp5A
name: Vigilance
type: competencecreature
sort: 500000
flags:
core:
sourceId: >-
Compendium.foundryvtt-reve-de-dragon.competences-creatures.lzEdMrKXbOYrWG5S
img: systems/foundryvtt-reve-de-dragon/icons/competence_vigilance.webp
effects: []
folder: null
@ -128,7 +172,7 @@ items:
carac_value: 10
niveau: 3
default_diffLibre: 0
categorie: generale
categorie: ''
categorie_parade: ''
iscombat: false
isnaturelle: true
@ -139,13 +183,22 @@ items:
ownership:
default: 0
_stats:
systemId: foundryvtt-reve-de-dragon
systemVersion: 12.0.22
systemId: null
systemVersion: null
coreVersion: '12.331'
createdTime: null
modifiedTime: null
lastModifiedBy: null
compendiumSource: >-
Compendium.foundryvtt-reve-de-dragon.competences-creatures.lzEdMrKXbOYrWG5S
duplicateSource: null
_key: '!actors.items!icS4ht40EGkUbUus.TXC25fwUDxF6Qp5A'
effects: []
folder: null
sort: 100001
flags:
core:
sourceId: Compendium.foundryvtt-reve-de-dragon.animaux.icS4ht40EGkUbUus
system:
carac:
taille:
@ -297,9 +350,57 @@ system:
<p>&nbsp;</p>
race: ''
notesmj: ''
notesmj: Notes du MJ
blessures:
legeres:
liste:
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
graves:
liste:
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
critiques:
liste:
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
ownership:
default: 0
jOzRscDxoXZWpGS6: 3
prototypeToken:
flags: {}
name: Rananècre
@ -378,7 +479,12 @@ prototypeToken:
texture: null
_stats:
systemId: foundryvtt-reve-de-dragon
systemVersion: 12.0.22
systemVersion: 10.7.19
coreVersion: '12.331'
createdTime: 1663623574880
modifiedTime: 1686701218721
lastModifiedBy: Hp9ImM4o9YRTSdfu
compendiumSource: Compendium.foundryvtt-reve-de-dragon.animaux.icS4ht40EGkUbUus
duplicateSource: null
_key: '!actors!icS4ht40EGkUbUus'

View File

@ -17,7 +17,7 @@ items:
carac_value: 16
niveau: 5
default_diffLibre: 0
categorie: generale
categorie: ''
categorie_parade: ''
iscombat: false
isnaturelle: true
@ -28,9 +28,14 @@ items:
ownership:
default: 0
_stats:
systemId: foundryvtt-reve-de-dragon
systemVersion: 12.0.22
systemId: null
systemVersion: null
coreVersion: '12.331'
createdTime: null
modifiedTime: null
lastModifiedBy: null
compendiumSource: null
duplicateSource: null
_key: '!actors.items!sAcoQO3vvDDEJFva.shsUV8UpU18c0RJK'
- _id: yDHZfK4RmwQW4YaW
name: Discrétion
@ -46,7 +51,7 @@ items:
carac_value: 16
niveau: 5
default_diffLibre: 0
categorie: generale
categorie: ''
categorie_parade: ''
iscombat: false
isnaturelle: true
@ -57,9 +62,14 @@ items:
ownership:
default: 0
_stats:
systemId: foundryvtt-reve-de-dragon
systemVersion: 12.0.22
systemId: null
systemVersion: null
coreVersion: '12.331'
createdTime: null
modifiedTime: null
lastModifiedBy: null
compendiumSource: null
duplicateSource: null
_key: '!actors.items!sAcoQO3vvDDEJFva.yDHZfK4RmwQW4YaW'
- _id: CYpxxf1uTa78NWR9
name: Esquive
@ -75,7 +85,7 @@ items:
carac_value: 14
niveau: 5
default_diffLibre: 0
categorie: generale
categorie: ''
categorie_parade: ''
iscombat: false
isnaturelle: true
@ -86,9 +96,14 @@ items:
ownership:
default: 0
_stats:
systemId: foundryvtt-reve-de-dragon
systemVersion: 12.0.22
systemId: null
systemVersion: null
coreVersion: '12.331'
createdTime: null
modifiedTime: null
lastModifiedBy: null
compendiumSource: null
duplicateSource: null
_key: '!actors.items!sAcoQO3vvDDEJFva.CYpxxf1uTa78NWR9'
- _id: BjqRrGtHtTzuNpZB
name: Griffes et Crocs
@ -116,8 +131,13 @@ items:
default: 0
_stats:
systemId: foundryvtt-reve-de-dragon
systemVersion: 12.0.22
systemVersion: 10.7.19
coreVersion: '12.331'
createdTime: null
modifiedTime: 1686700776512
lastModifiedBy: Hp9ImM4o9YRTSdfu
compendiumSource: null
duplicateSource: null
_key: '!actors.items!sAcoQO3vvDDEJFva.BjqRrGtHtTzuNpZB'
- _id: lzEdMrKXbOYrWG5S
name: Vigilance
@ -133,7 +153,7 @@ items:
carac_value: 17
niveau: 5
default_diffLibre: 0
categorie: generale
categorie: ''
categorie_parade: ''
iscombat: false
isnaturelle: true
@ -144,14 +164,22 @@ items:
ownership:
default: 0
_stats:
systemId: foundryvtt-reve-de-dragon
systemVersion: 12.0.22
systemId: null
systemVersion: null
coreVersion: '12.331'
createdTime: null
modifiedTime: null
lastModifiedBy: null
compendiumSource: null
duplicateSource: null
_key: '!actors.items!sAcoQO3vvDDEJFva.lzEdMrKXbOYrWG5S'
- _id: WML1KyyQrFRbmsLn
name: Saut
type: competencecreature
sort: 1900000
flags:
core:
sourceId: Item.JZDgJ7ySiV84llkK
img: systems/foundryvtt-reve-de-dragon/icons/competence_saut.webp
effects: []
folder: null
@ -161,7 +189,7 @@ items:
carac_value: 16
niveau: 5
default_diffLibre: 0
categorie: generale
categorie: ''
categorie_parade: ''
iscombat: false
isnaturelle: true
@ -172,13 +200,21 @@ items:
ownership:
default: 0
_stats:
systemId: foundryvtt-reve-de-dragon
systemVersion: 12.0.22
systemId: null
systemVersion: null
coreVersion: '12.331'
createdTime: null
modifiedTime: null
lastModifiedBy: null
compendiumSource: Item.JZDgJ7ySiV84llkK
duplicateSource: null
_key: '!actors.items!sAcoQO3vvDDEJFva.WML1KyyQrFRbmsLn'
effects: []
folder: null
sort: 100001
flags:
core:
sourceId: Compendium.foundryvtt-reve-de-dragon.animaux.sAcoQO3vvDDEJFva
system:
carac:
taille:
@ -287,9 +323,57 @@ system:
<em>charge</em>. Au sol, ses r&eacute;ussites particuli&egrave;res sont
usuellement pass&eacute;es en <em>rapidit&eacute;</em>.</p>
race: ''
notesmj: ''
notesmj: Notes du MJ
blessures:
legeres:
liste:
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
graves:
liste:
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
critiques:
liste:
- active: false
premiers_soins: 0
soins_complets: 0
jours: 0
localisation: ''
ownership:
default: 0
jOzRscDxoXZWpGS6: 3
prototypeToken:
flags: {}
name: Sanguinox
@ -368,7 +452,12 @@ prototypeToken:
texture: null
_stats:
systemId: foundryvtt-reve-de-dragon
systemVersion: 12.0.22
systemVersion: 10.7.19
coreVersion: '12.331'
createdTime: 1663623574887
modifiedTime: 1686701218722
lastModifiedBy: Hp9ImM4o9YRTSdfu
compendiumSource: Compendium.foundryvtt-reve-de-dragon.animaux.sAcoQO3vvDDEJFva
duplicateSource: null
_key: '!actors!sAcoQO3vvDDEJFva'

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