Compare commits

..

3 Commits

Author SHA1 Message Date
a996c9e9be Suppression items inutiles
Les compétences de personnages ne sont pas
utilisables/visibles sur les entités
2024-12-07 19:23:12 +01:00
5357ca89bc Rename compétence Équitation 2024-12-07 19:23:12 +01:00
e772bccc87 Import compétences avec spécialisations
ie: Musique (Harpe) +6
2024-12-07 19:23:12 +01:00
453 changed files with 12012 additions and 8779 deletions

View File

@ -1,60 +1,4 @@
# 12.0 # 12.0
## 12.0.34 - la tête d'Astrobazzarh
- support de liens "jets de dés"
- on peut ajouter des liens "jet de dés" dans les journaux, descriptions, notes, maladresses, ...
- avec la syntaxe `@roll[...]` on peut ajouter le lien vers:
- un jet de caractéristique/compétence `@roll[carac/competence/difficulte]` / `@roll[carac/difficulte]` / `@roll[carac/competence]`
- une formule foundry `@roll[2d6]` pour lancer 2d6
- une manipulation alchimique `@roll[couleur vert-bleu]`
- les liens "jet avec caractéristiques" s'appliquent:
- à tous les tokens sélectionnés
- sinon, à l'acteur propriétaire (dans le cas d'un Item) ou à l'acteur courant
- sinon, au personnage du joueur
- on peut poster les liens dans le tchat pour proposer un jet aux joueurs
- gestion des blocs secrets dans les descriptions
## 12.0.33 - la vieillesse d'Astrobazzarh
- retour de l'expérience pour les joueurs
- suppression du message "Pas de caractéristique" sur les jets d'odorat-goût
## 12.0.32 - les rêveries d'Astrobazzarh
- Ajout des Items Race pour gérer les ajustements liés aux races
## 12.0.31 - le mausolée d'Astrobazzarh
- Correction: les automatisation de combat jouer-MJ fonctionnentde nouveau
## 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 ## 12.0.26 - Astrobazzarh le Haut-rêvant
- bouton pour le don de haut-rêve en un clic - 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" - les compétences de draconic ne sont plus précédées de "Voie de"
@ -151,9 +95,11 @@
- encodage de l'export en windows-1252 - encodage de l'export en windows-1252
- export de l'esquive avec armure et sans armure - 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 - 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 ## 12.0.8 - La quincaillerie d'Astrobazzarh
- le propriétaire est indiqué dans les feuilles d'équipements/compétences/... - le propriétaire est indiqué dans les feuilles d'équipements/compétences/...

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.3 KiB

View File

@ -1,191 +1 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?> <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>
<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>

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="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>
<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>

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="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>
<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>

Before

Width:  |  Height:  |  Size: 5.6 KiB

After

Width:  |  Height:  |  Size: 2.8 KiB

View File

@ -33,8 +33,8 @@
guidetolerance="10" guidetolerance="10"
inkscape:pageopacity="0" inkscape:pageopacity="0"
inkscape:pageshadow="2" inkscape:pageshadow="2"
inkscape:window-width="2513" inkscape:window-width="2014"
inkscape:window-height="1633" inkscape:window-height="1404"
id="namedview32" id="namedview32"
showgrid="false" showgrid="false"
inkscape:zoom="2.2094112" inkscape:zoom="2.2094112"
@ -43,8 +43,7 @@
inkscape:window-x="0" inkscape:window-x="0"
inkscape:window-y="0" inkscape:window-y="0"
inkscape:window-maximized="0" inkscape:window-maximized="0"
inkscape:current-layer="svg30" inkscape:current-layer="svg30" />
inkscape:document-rotation="0" />
<defs <defs
id="defs24"> id="defs24">
<filter <filter
@ -115,13 +114,11 @@
<g <g
class="" class=""
transform="translate(-2.1627108,-0.3)" transform="translate(-2.1627108,-0.3)"
id="g28" id="g28">
style="stroke:#000080;stroke-width:5;stroke-miterlimit:4;stroke-dasharray:none">
<path <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" 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="#ffffff"
fill-opacity="1" fill-opacity="1"
id="path26" id="path26" />
style="stroke:#000080;stroke-width:5;stroke-miterlimit:4;stroke-dasharray:none" />
</g> </g>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 6.1 KiB

After

Width:  |  Height:  |  Size: 5.9 KiB

View File

@ -33,8 +33,8 @@
guidetolerance="10" guidetolerance="10"
inkscape:pageopacity="0" inkscape:pageopacity="0"
inkscape:pageshadow="2" inkscape:pageshadow="2"
inkscape:window-width="2665" inkscape:window-width="1680"
inkscape:window-height="1441" inkscape:window-height="1083"
id="namedview54" id="namedview54"
showgrid="false" showgrid="false"
inkscape:zoom="1.5990661" inkscape:zoom="1.5990661"
@ -43,8 +43,7 @@
inkscape:window-x="0" inkscape:window-x="0"
inkscape:window-y="0" inkscape:window-y="0"
inkscape:window-maximized="0" inkscape:window-maximized="0"
inkscape:current-layer="svg52" inkscape:current-layer="svg52" />
inkscape:document-rotation="0" />
<defs <defs
id="defs46"> id="defs46">
<filter <filter
@ -179,15 +178,13 @@
<g <g
class="" class=""
id="g50" id="g50"
transform="matrix(1.1287777,0,0,1.1287777,-32.967091,-40.026839)" 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">
<path <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" 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="#003fb2"
fill-opacity="1" fill-opacity="1"
transform="matrix(0.9,0,0,0.9,25.6,25.6)" transform="matrix(0.9,0,0,0.9,25.6,25.6)"
filter="url(#shadow-1)" filter="url(#shadow-1)"
id="path48" id="path48" />
style="stroke:#000000;stroke-width:4.92174461;stroke-miterlimit:4;stroke-dasharray:none" />
</g> </g>
</svg> </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="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>
<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>

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="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>
<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>

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="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>
<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>

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="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>
<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>

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="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>
<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>

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="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>
<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>

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;" style="height: 256px; width: 256px;"
version="1.1" version="1.1"
id="svg24" id="svg24"
sodipodi:docname="sort-reserve-humide.svg" sodipodi:docname="sort-reserve-humide3.svg"
inkscape:version="1.0.1 (3bc2e813f5, 2020-09-07)"> inkscape:version="1.0.1 (3bc2e813f5, 2020-09-07)">
<metadata <metadata
id="metadata30"> id="metadata30">
@ -35,70 +35,68 @@
guidetolerance="10" guidetolerance="10"
inkscape:pageopacity="0" inkscape:pageopacity="0"
inkscape:pageshadow="2" inkscape:pageshadow="2"
inkscape:window-width="2660" inkscape:window-width="2794"
inkscape:window-height="1472" inkscape:window-height="1756"
id="namedview26" id="namedview26"
showgrid="false" showgrid="false"
inkscape:zoom="1.4393497" inkscape:zoom="2.8786993"
inkscape:cx="557.39157" inkscape:cx="323.66586"
inkscape:cy="411.60399" inkscape:cy="227.70764"
inkscape:window-x="0" inkscape:window-x="0"
inkscape:window-y="0" inkscape:window-y="0"
inkscape:window-maximized="0" inkscape:window-maximized="0"
inkscape:current-layer="svg24" inkscape:current-layer="svg24" />
inkscape:document-rotation="0" />
<g <g
id="g881" id="g881"
transform="translate(2.1482304,2.80716)" 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">
<path <path
d="m 243.94189,104.37921 -82.23331,178.13543 82.23331,27.44784 z" d="m 243.94189,104.37921 -82.23331,178.13543 82.23331,27.44784 z"
class="" class=""
fill="#f4e3d7" fill="#f4e3d7"
fill-opacity="1" fill-opacity="1"
id="path2" 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 <path
d="m 263.7837,104.37921 v 205.58327 l 82.23331,-27.44784 z" d="m 263.7837,104.37921 v 205.58327 l 82.23331,-27.44784 z"
class="" class=""
fill="#f4e3d7" fill="#f4e3d7"
fill-opacity="1" fill-opacity="1"
id="path4" 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 <path
d="M 168.21228,221.005 18.274279,239.7445 141.75653,278.32581 Z" d="M 168.21228,221.005 18.274279,239.7445 141.75653,278.32581 Z"
class="" class=""
fill="#f4e3d7" fill="#f4e3d7"
fill-opacity="1" fill-opacity="1"
id="path6" 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 <path
d="M 339.51331,221.005 365.96906,278.32581 489.5395,239.7445 Z" d="M 339.51331,221.005 365.96906,278.32581 489.5395,239.7445 Z"
class="" class=""
fill="#f4e3d7" fill="#f4e3d7"
fill-opacity="1" fill-opacity="1"
id="path8" 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 <path
d="M -0.24475089,254.73609 114.97007,398.80973 230.27308,326.7178 Z" d="M -0.24475089,254.73609 114.97007,398.80973 230.27308,326.7178 Z"
class="" class=""
fill="#f4e3d7" fill="#f4e3d7"
fill-opacity="1" fill-opacity="1"
id="path10" 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 <path
d="M 507.94829,254.73609 277.45251,326.7178 392.75552,398.80973 Z" d="M 507.94829,254.73609 277.45251,326.7178 392.75552,398.80973 Z"
class="" class=""
fill="#f4e3d7" fill="#f4e3d7"
fill-opacity="1" fill-opacity="1"
id="path12" 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 <path
d="M 253.8628,335.42615 147.37837,402.00647 H 360.34722 Z" d="M 253.8628,335.42615 147.37837,402.00647 H 360.34722 Z"
class="" class=""
fill="#f4e3d7" fill="#f4e3d7"
fill-opacity="1" fill-opacity="1"
id="path14" 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> </g>
</svg> </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" inkscape:window-height="1268"
id="namedview34" id="namedview34"
showgrid="false" showgrid="false"
inkscape:zoom="0.7031648" inkscape:zoom="1.9888504"
inkscape:cx="1044.9871" inkscape:cx="256"
inkscape:cy="610.71305" inkscape:cy="256"
inkscape:window-x="518" inkscape:window-x="0"
inkscape:window-y="680" inkscape:window-y="0"
inkscape:window-maximized="0" inkscape:window-maximized="0"
inkscape:current-layer="svg32" inkscape:current-layer="svg32" />
inkscape:document-rotation="0" />
<defs <defs
id="defs24"> id="defs24">
<filter <filter
@ -122,12 +121,12 @@
class="" class=""
transform="translate(1,-1)" transform="translate(1,-1)"
id="g30" 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 <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" 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="#ffffff"
fill-opacity="1" fill-opacity="1"
id="path28" 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> </g>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 6.2 KiB

After

Width:  |  Height:  |  Size: 6.0 KiB

View File

@ -33,18 +33,17 @@
guidetolerance="10" guidetolerance="10"
inkscape:pageopacity="0" inkscape:pageopacity="0"
inkscape:pageshadow="2" inkscape:pageshadow="2"
inkscape:window-width="1879" inkscape:window-width="1553"
inkscape:window-height="1569" inkscape:window-height="1145"
id="namedview34" id="namedview34"
showgrid="false" showgrid="false"
inkscape:zoom="1.4374483" inkscape:zoom="1.4374483"
inkscape:cx="256" inkscape:cx="256"
inkscape:cy="256" inkscape:cy="256"
inkscape:window-x="460" inkscape:window-x="0"
inkscape:window-y="170" inkscape:window-y="0"
inkscape:window-maximized="0" inkscape:window-maximized="0"
inkscape:current-layer="svg32" inkscape:current-layer="svg32" />
inkscape:document-rotation="0" />
<defs <defs
id="defs24"> id="defs24">
<filter <filter
@ -117,11 +116,11 @@
fill="#4a4a4a" fill="#4a4a4a"
fill-opacity="0.5" fill-opacity="0.5"
id="path26" id="path26"
style="fill:#3a174d;fill-opacity:0.69999999" /> style="fill:#333333;fill-opacity:0.69999999" />
<path <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" 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="#602000"
fill-opacity="1" fill-opacity="1"
id="path28" id="path28"
style="fill:#380f4d;fill-opacity:1" /> style="fill:#401060;fill-opacity:1" />
</svg> </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="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>
<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>

Before

Width:  |  Height:  |  Size: 6.1 KiB

After

Width:  |  Height:  |  Size: 3.4 KiB

View File

@ -40,7 +40,6 @@
"possession": "Possession", "possession": "Possession",
"potion": "Potion", "potion": "Potion",
"queue": "Queue de Dragon", "queue": "Queue de Dragon",
"race": "Race",
"recettealchimique": "Recette alchimique", "recettealchimique": "Recette alchimique",
"recettecuisine": "Recette de cuisine", "recettecuisine": "Recette de cuisine",
"rencontre": "Rencontre TMR", "rencontre": "Rencontre TMR",

View File

@ -12,18 +12,17 @@ import { RdDSheetUtility } from "./rdd-sheet-utility.js";
import { STATUSES } from "./settings/status-effects.js"; import { STATUSES } from "./settings/status-effects.js";
import { MAINS_DIRECTRICES } from "./actor.js"; import { MAINS_DIRECTRICES } from "./actor.js";
import { RdDBaseActorReveSheet } from "./actor/base-actor-reve-sheet.js"; import { RdDBaseActorReveSheet } from "./actor/base-actor-reve-sheet.js";
import { ITEM_TYPES, RdDItem } from "./item.js"; import { RdDItem } from "./item.js";
import { RdDItemBlessure } from "./item/blessure.js"; import { RdDItemBlessure } from "./item/blessure.js";
import { RdDEmpoignade } from "./rdd-empoignade.js"; import { RdDEmpoignade } from "./rdd-empoignade.js";
import { RdDBaseActorSangSheet } from "./actor/base-actor-sang-sheet.js"; import { RdDBaseActorSangSheet } from "./actor/base-actor-sang-sheet.js";
import { RdDCoeur } from "./coeur/rdd-coeur.js"; import { RdDCoeur } from "./coeur/rdd-coeur.js";
import { AppPersonnageAleatoire } from "./actor/random/app-personnage-aleatoire.js"; import { AppPersonnageAleatoire } from "./actor/random/app-personnage-aleatoire.js";
import { RdDItemRace } from "./item/race.js";
import { RdDTextEditor } from "./apps/rdd-text-roll-editor.js";
/* -------------------------------------------- */ /* -------------------------------------------- */
/** /**
* Extend the basic ActorSheet with some very simple modifications * Extend the basic ActorSheet with some very simple modifications
* @extends {ActorSheet}
*/ */
export class RdDActorSheet extends RdDBaseActorSangSheet { export class RdDActorSheet extends RdDBaseActorSangSheet {
@ -45,8 +44,8 @@ export class RdDActorSheet extends RdDBaseActorSangSheet {
cssClass: this.isEditable ? "editable" : "locked", cssClass: this.isEditable ? "editable" : "locked",
limited: this.actor.limited, limited: this.actor.limited,
owner: this.actor.isOwner, owner: this.actor.isOwner,
biographie: await RdDTextEditor.enrichHTML(this.actor.system.biographie, this.actor), biographie: await TextEditor.enrichHTML(this.actor.system.biographie, { async: true }),
notes: await RdDTextEditor.enrichHTML(this.actor.system.notes, this.actor), notes: await TextEditor.enrichHTML(this.actor.system.notes, { async: true }),
}); });
foundry.utils.mergeObject(formData.calc, { foundry.utils.mergeObject(formData.calc, {
surenc: this.actor.computeMalusSurEncombrement(), surenc: this.actor.computeMalusSurEncombrement(),
@ -84,7 +83,7 @@ export class RdDActorSheet extends RdDBaseActorSangSheet {
formData.combat.push(RdDItemArme.corpsACorps(actor)); formData.combat.push(RdDItemArme.corpsACorps(actor));
formData.combat.push(RdDItemArme.empoignade(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.combat = RdDCombatManager.listActionsArmes(formData.combat, formData.competences, formData.system.carac);
formData.empoignades = this.actor.getEmpoignades(); formData.empoignades = this.actor.getEmpoignades();
@ -99,7 +98,6 @@ export class RdDActorSheet extends RdDBaseActorSangSheet {
cacheTMR: this.actor.isTMRCache() cacheTMR: this.actor.isTMRCache()
} }
formData.race = actor.itemTypes[ITEM_TYPES.race].find(it => true)
formData.subacteurs = { formData.subacteurs = {
vehicules: this.actor.listeVehicules(), vehicules: this.actor.listeVehicules(),
montures: this.actor.listeMontures(), montures: this.actor.listeMontures(),
@ -186,7 +184,7 @@ export class RdDActorSheet extends RdDBaseActorSangSheet {
// Equip Inventory Item // Equip Inventory Item
this.html.find('.item-equip').click(async event => this.actor.equiperObjet(RdDSheetUtility.getItemId(event))) 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()) this.html.find('.button-appel-chance').click(async event => this.actor.rollAppelChance())
@ -217,12 +215,12 @@ export class RdDActorSheet extends RdDBaseActorSangSheet {
// Boutons spéciaux MJs // Boutons spéciaux MJs
this.html.find('.forcer-tmr-aleatoire').click(async event => this.actor.reinsertionAleatoire("Action MJ")) 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('.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()) this.html.find('.afficher-tmr').click(async event => this.actor.changeTMRVisible())
} }
// Points de reve actuel // Points de reve actuel
this.html.find('.roll-reve-actuel').click(async event => this.actor.rollCarac('reve-actuel', {resistance:true})) this.html.find('.roll-reve-actuel').click(async event => this.actor.rollCarac('reve-actuel', true))
this.html.find('.empoignade-label a').click(async event => RdDEmpoignade.onAttaqueEmpoignadeFromItem(RdDSheetUtility.getItem(event, this.actor))) this.html.find('.empoignade-label a').click(async event => RdDEmpoignade.onAttaqueEmpoignadeFromItem(RdDSheetUtility.getItem(event, this.actor)))
this.html.find('.roll-arme').click(async event => this.actor.rollArme(foundry.utils.duplicate(this._getEventArmeCombat(event)), 'competence')) this.html.find('.roll-arme').click(async event => this.actor.rollArme(foundry.utils.duplicate(this._getEventArmeCombat(event)), 'competence'))
@ -287,8 +285,6 @@ export class RdDActorSheet extends RdDBaseActorSangSheet {
this.html.find('.ptreve-actuel-plus').click(async event => this.actor.reveActuelIncDec(1)) 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('.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-plus').click(async event => this.actor.santeIncDec("fatigue", 1))
this.html.find('.fatigue-moins').click(async event => this.actor.santeIncDec("fatigue", -1)) this.html.find('.fatigue-moins').click(async event => this.actor.santeIncDec("fatigue", -1))
} }

View File

@ -17,7 +17,7 @@ import { RdDItemSigneDraconique } from "./item/signedraconique.js";
import { ReglesOptionnelles } from "./settings/regles-optionnelles.js"; import { ReglesOptionnelles } from "./settings/regles-optionnelles.js";
import { EffetsDraconiques } from "./tmr/effets-draconiques.js"; import { EffetsDraconiques } from "./tmr/effets-draconiques.js";
import { Draconique } from "./tmr/draconique.js"; import { Draconique } from "./tmr/draconique.js";
import { LIST_CARAC_PERSONNAGE, RdDCarac } from "./rdd-carac.js"; import { RdDCarac } from "./rdd-carac.js";
import { DialogConsommer } from "./dialog-item-consommer.js"; import { DialogConsommer } from "./dialog-item-consommer.js";
import { DialogFabriquerPotion } from "./dialog-fabriquer-potion.js"; import { DialogFabriquerPotion } from "./dialog-fabriquer-potion.js";
import { RollDataAjustements } from "./rolldata-ajustements.js"; import { RollDataAjustements } from "./rolldata-ajustements.js";
@ -39,13 +39,10 @@ import { DialogChoixXpCarac } from "./dialog-choix-xp-carac.js";
import { RdDItemArme } from "./item-arme.js"; import { RdDItemArme } from "./item-arme.js";
import { RdDCombatManager } from "./rdd-combat.js"; import { RdDCombatManager } from "./rdd-combat.js";
import { RdDItemTete } from "./item/tete.js"; import { RdDItemTete } from "./item/tete.js";
import { DialogSelect } from "./dialog-select.js"; import { SystemCompendiums } from "./settings/system-compendiums.js";
import { PAS_DE_DRACONIC, POSSESSION_SANS_DRACONIC } from "./item/base-items.js";
import { RdDItemRace } from "./item/race.js";
export const MAINS_DIRECTRICES = ['Droitier', 'Gaucher', 'Ambidextre'] 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. * Extend the base Actor entity by defining a custom roll data structure which is ideal for the Simple system.
@ -59,7 +56,7 @@ export class RdDActor extends RdDBaseActorSang {
*/ */
prepareActorData() { prepareActorData() {
RdDItemRace.applyRacialLimits(this) 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((this.getForce() + 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.tir.value = Math.floor((parseInt(this.system.carac.vue.value) + parseInt(this.system.carac.dexterite.value)) / 2);
@ -96,14 +93,11 @@ export class RdDActor extends RdDBaseActorSang {
isHautRevant() { return this.system.attributs.hautrevant.value != "" } isHautRevant() { return this.system.attributs.hautrevant.value != "" }
/* -------------------------------------------- */ /* -------------------------------------------- */
getAgilite() { return Misc.toInt(this.system.carac.agilite?.value ?? 0) } getAgilite() { return this.system.carac.agilite?.value ?? 0 }
getChance() { return Misc.toInt(this.system.carac.chance?.value ?? 0) } getChance() { return this.system.carac.chance?.value ?? 0 }
getReveActuel() { return Misc.toInt(this.system.reve?.reve?.value) ?? this.carac.reve.value ?? 0 } getReveActuel() { return this.system.reve?.reve?.value ?? this.carac.reve.value ?? 0 }
getChanceActuel() { getChanceActuel() { return this.system.compteurs.chance?.value ?? 10 }
return Number.isNumeric(this.system.compteurs.chance.value) ?
Misc.toInt(this.system.compteurs.chance.value) : this.getChance()
}
getMoralTotal() { return this.system.compteurs.moral?.value ?? 0 } getMoralTotal() { return this.system.compteurs.moral?.value ?? 0 }
getEnduranceMax() { return Math.max(1, Math.max(this.getTaille() + this.getConstitution(), this.getVieMax() + this.getVolonte())) } getEnduranceMax() { return Math.max(1, Math.max(this.getTaille() + this.getConstitution(), this.getVieMax() + this.getVolonte())) }
@ -158,9 +152,10 @@ export class RdDActor extends RdDBaseActorSang {
/* -------------------------------------------- */ /* -------------------------------------------- */
getDemiReve() { return this.system.reve.tmrpos.coord } getDemiReve() { return this.system.reve.tmrpos.coord }
getDraconicList() { return this.itemTypes[ITEM_TYPES.competence].filter(it => it.system.categorie == 'draconic') } 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() { 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)) .sort(Misc.descending(it => it.system.niveau))
.find(it => true) .find(it => true)
} }
@ -661,16 +656,18 @@ export class RdDActor extends RdDBaseActorSang {
/* -------------------------------------------- */ /* -------------------------------------------- */
async updateCarac(caracName, to) { async updateCarac(caracName, to) {
to = Number(to) if (caracName == "force") {
if (!RdDItemRace.checkRacialMax(this, caracName, to)) { if (Number(to) > this.getTaille() + 4) {
return ui.notifications.warn("Votre FORCE doit être au maximum de TAILLE+4");
return;
}
} }
if (caracName == LIST_CARAC_PERSONNAGE.reve.code) { if (caracName == "reve") {
if (to > Misc.toInt(this.system.reve.seuil.value)) { if (to > Misc.toInt(this.system.reve.seuil.value)) {
this.setPointsDeSeuil(to); this.setPointsDeSeuil(to);
} }
} }
if (caracName == LIST_CARAC_PERSONNAGE.chance.code) { if (caracName == "chance") {
if (to > Misc.toInt(this.system.compteurs.chance.value)) { if (to > Misc.toInt(this.system.compteurs.chance.value)) {
this.setPointsDeChance(to); this.setPointsDeChance(to);
} }
@ -993,32 +990,6 @@ export class RdDActor extends RdDBaseActorSang {
} }
} }
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) { async reinsertionAleatoire(raison, accessible = tmr => true) {
const innaccessible = this.buildTMRInnaccessible(); const innaccessible = this.buildTMRInnaccessible();
@ -1082,11 +1053,6 @@ export class RdDActor extends RdDBaseActorSang {
await this.update({ "system.reve.reve.value": reve }); 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() { async regainPointDeSeuil() {
const seuil = Misc.toInt(this.system.reve.seuil.value); const seuil = Misc.toInt(this.system.reve.seuil.value);
@ -1387,7 +1353,7 @@ export class RdDActor extends RdDBaseActorSang {
} }
await RdDResolutionTable.rollData(ethylismeData.jetVie); await RdDResolutionTable.rollData(ethylismeData.jetVie);
this.gererExperience(ethylismeData.jetVie); this._gererExperience(ethylismeData.jetVie);
RollDataAjustements.calcul(ethylismeData.jetVie, this); RollDataAjustements.calcul(ethylismeData.jetVie, this);
if (ethylismeData.jetVie.rolled.isSuccess) { if (ethylismeData.jetVie.rolled.isSuccess) {
ethylisme.nb_doses++; ethylisme.nb_doses++;
@ -1419,7 +1385,7 @@ export class RdDActor extends RdDBaseActorSang {
finalLevel: Number(ethylisme.value) + Number(this.system.compteurs.moral.value) finalLevel: Number(ethylisme.value) + Number(this.system.compteurs.moral.value)
} }
await RdDResolutionTable.rollData(ethylismeData.jetVolonte); await RdDResolutionTable.rollData(ethylismeData.jetVolonte);
this.gererExperience(ethylismeData.jetVolonte); this._gererExperience(ethylismeData.jetVolonte);
RollDataAjustements.calcul(ethylismeData.jetVolonte, this); RollDataAjustements.calcul(ethylismeData.jetVolonte, this);
} }
} }
@ -1530,12 +1496,13 @@ export class RdDActor extends RdDBaseActorSang {
}; };
} }
/* -------------------------------------------- */ /* -------------------------------------------- */
isCaracMax(code) { isCaracMax(code) {
return RdDItemRace.isRacialMax(this, code) if (code == 'force' && parseInt(this.system.carac.force.value) >= parseInt(this.system.carac.taille.value) + 4) {
return true;
}
return false
} }
async checkCaracXP(caracName, display = true) { async checkCaracXP(caracName, display = true) {
let carac = this.findCaracByName(caracName); let carac = this.findCaracByName(caracName);
if (carac && carac.xp > 0) { if (carac && carac.xp > 0) {
@ -1596,7 +1563,7 @@ export class RdDActor extends RdDBaseActorSang {
/* -------------------------------------------- */ /* -------------------------------------------- */
async appliquerAjoutExperience(rollData, hideChatMessage = 'show') { async appliquerAjoutExperience(rollData, hideChatMessage = 'show') {
if (!Misc.hasConnectedGM()) { if (!Misc.isFirstConnectedGM()) {
return return
} }
hideChatMessage = hideChatMessage == 'hide' || (Misc.isRollModeHiddenToPlayer() && !game.user.isGM) hideChatMessage = hideChatMessage == 'hide' || (Misc.isRollModeHiddenToPlayer() && !game.user.isGM)
@ -1662,12 +1629,10 @@ export class RdDActor extends RdDBaseActorSang {
/* -------------------------------------------- */ /* -------------------------------------------- */
async rollUnSort(coord) { async rollUnSort(coord) {
if (RdDEmpoignade.checkEmpoignadeEnCours(this)) { RdDEmpoignade.checkEmpoignadeEnCours(this)
return
}
if (EffetsDraconiques.isSortImpossible(this)) { if (EffetsDraconiques.isSortImpossible(this)) {
ui.notifications.error("Une queue ou un souffle vous empèche de lancer de sort!") ui.notifications.error("Une queue ou un souffle vous empèche de lancer de sort!");
return return;
} }
// Duplication car les pts de reve sont modifiés dans le sort // Duplication car les pts de reve sont modifiés dans le sort
let sorts = foundry.utils.duplicate(this.$filterSortList(this.itemTypes['sort'], coord)); let sorts = foundry.utils.duplicate(this.$filterSortList(this.itemTypes['sort'], coord));
@ -1799,8 +1764,38 @@ export class RdDActor extends RdDBaseActorSang {
} }
} }
/**
* Méthode pour faire un jet prédéterminer sans ouvrir la fenêtre de dialogue
* @param {*} caracName
* @param {*} compName
* @param {*} diff
* @param {*} options
* @returns
*/
async doRollCaracCompetence(caracName, compName, diff, options = { title: "" }) {
const carac = this.getCaracByName(caracName);
if (!carac) {
ui.notifications.warn(`${this.name} n'a pas de caractéristique correspondant à ${caracName}`)
return;
}
const competence = this.getCompetence(compName);
let rollData = {
alias: this.getAlias(),
caracValue: Number(carac.value),
selectedCarac: carac,
competence: competence,
diffLibre: diff,
show: { title: options?.title ?? '' }
};
RollDataAjustements.calcul(rollData, this);
await RdDResolutionTable.rollData(rollData);
this._gererExperience(rollData);
await RdDResolutionTable.displayRollData(rollData, this)
return rollData.rolled;
}
/* -------------------------------------------- */ /* -------------------------------------------- */
gererExperience(rollData) { _gererExperience(rollData) {
const callback = this.createCallbackExperience(); const callback = this.createCallbackExperience();
if (callback.condition(rollData)) { if (callback.condition(rollData)) {
callback.action(rollData); callback.action(rollData);
@ -1850,6 +1845,26 @@ export class RdDActor extends RdDBaseActorSang {
return undefined; return undefined;
} }
async rollCaracCompetence(caracName, compName, diff, options = { title: "" }) {
RdDEmpoignade.checkEmpoignadeEnCours(this)
const competence = this.getCompetence(compName);
await this.openRollDialog({
name: 'jet-competence',
label: 'Jet ' + Grammar.apostrophe('de', competence.name),
template: 'systems/foundryvtt-reve-de-dragon/templates/dialog-roll-competence.html',
rollData: {
alias: this.getAlias(),
carac: this.system.carac,
selectedCarac: this.getCaracByName(caracName),
selectedCaracName: caracName,
diffLibre: diff,
competence: competence,
show: { title: options?.title ?? '' }
},
callbackAction: r => this.$onRollCompetence(r, options)
});
}
/* -------------------------------------------- */ /* -------------------------------------------- */
async rollTache(id, options = {}) { async rollTache(id, options = {}) {
RdDEmpoignade.checkEmpoignadeEnCours(this) RdDEmpoignade.checkEmpoignadeEnCours(this)
@ -2222,6 +2237,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 = () => { }) { async appelDestinee(onSuccess = () => { }, onEchec = () => { }) {
let destinee = this.system.compteurs.destinee?.value ?? 0; let destinee = this.system.compteurs.destinee?.value ?? 0;
@ -2983,14 +3004,12 @@ export class RdDActor extends RdDBaseActorSang {
/* -------------------------------------------- */ /* -------------------------------------------- */
async onCreateItem(item, options, id) { async onCreateItem(item, options, id) {
switch (item.type) { switch (item.type) {
case ITEM_TYPES.tete: case 'tete':
case ITEM_TYPES.queue: case 'queue':
case ITEM_TYPES.ombre: case 'ombre':
case ITEM_TYPES.souffle: case 'souffle':
await this.onCreateOwnedDraconique(item, options, id) await this.onCreateOwnedDraconique(item, options, id);
break break;
case ITEM_TYPES.race:
await this.onCreateOwnedRace(item, options, id)
} }
await item.onCreateItemTemporel(this); await item.onCreateItemTemporel(this);
await item.onCreateDecoupeComestible(this); await item.onCreateDecoupeComestible(this);
@ -2998,19 +3017,16 @@ export class RdDActor extends RdDBaseActorSang {
async onDeleteItem(item, options, id) { async onDeleteItem(item, options, id) {
switch (item.type) { switch (item.type) {
case ITEM_TYPES.tete: case 'tete':
case ITEM_TYPES.queue: case 'queue':
case ITEM_TYPES.ombre: case 'ombre':
case ITEM_TYPES.souffle: case 'souffle':
await this.onDeleteOwnedDraconique(item, options, id) await this.onDeleteOwnedDraconique(item, options, id)
break break
case ITEM_TYPES.race: case 'casetmr':
await this.onDeleteOwnedRace(item, options, id)
break
case ITEM_TYPES.casetmr:
await this.onDeleteOwnedCaseTmr(item, options, id) await this.onDeleteOwnedCaseTmr(item, options, id)
break break
case ITEM_TYPES.empoignade: case 'empoignade':
await RdDEmpoignade.deleteLinkedEmpoignade(this.id, item) await RdDEmpoignade.deleteLinkedEmpoignade(this.id, item)
break break
} }
@ -3039,35 +3055,6 @@ export class RdDActor extends RdDBaseActorSang {
} }
} }
async onCreateOwnedRace(item, options, id) {
if (Misc.isFirstConnectedGM()) {
const raceIds = this.itemTypes[ITEM_TYPES.race].map(it => it.id).filter(id => id != item.id)
if (raceIds.length > 0) {
await this.deleteEmbeddedDocuments('Item', raceIds)
}
await this._applyRaceCaracUpdates(item, 1)
}
}
async onDeleteOwnedRace(item, options, id) {
if (Misc.isFirstConnectedGM()) {
await this._applyRaceCaracUpdates(item, -1)
}
}
async _applyRaceCaracUpdates(item, sign) {
const updates = {};
RdDCarac.caracs(it => true).forEach(c => {
const toAdd = Number(foundry.utils.getProperty(item, c.path)) * sign
if (toAdd != 0) {
updates[c.path] = Number(foundry.utils.getProperty(this, c.path)) + toAdd
}
})
if (Object.keys(updates).length > 0) {
await this.update(updates)
}
}
/* -------------------------------------------- */ /* -------------------------------------------- */
async onDeleteOwnedCaseTmr(item, options, id) { async onDeleteOwnedCaseTmr(item, options, id) {
if (Misc.isFirstConnectedGM()) { if (Misc.isFirstConnectedGM()) {

View File

@ -1,6 +1,4 @@
import { RdDTextEditor } from "../apps/rdd-text-roll-editor.js";
import { Grammar } from "../grammar.js"; import { Grammar } from "../grammar.js";
import { ITEM_TYPES } from "../item.js";
import { RdDSheetUtility } from "../rdd-sheet-utility.js"; import { RdDSheetUtility } from "../rdd-sheet-utility.js";
import { RdDBaseActorSheet } from "./base-actor-sheet.js"; import { RdDBaseActorSheet } from "./base-actor-sheet.js";
@ -28,7 +26,7 @@ export class RdDBaseActorReveSheet extends RdDBaseActorSheet {
this.html.find('.button-encaissement').click(async event => this.actor.encaisser()) this.html.find('.button-encaissement').click(async event => this.actor.encaisser())
this.html.find('.roll-carac').click(async event => { this.html.find('.roll-carac').click(async event => {
this.actor.rollCarac(Grammar.toLowerCaseNoAccent(event.currentTarget.attributes['data-carac-name'].value))}) this.actor.rollCarac(Grammar.toLowerCaseNoAccent(event.currentTarget.attributes['data-carac-name'].value))});
this.html.find('.roll-competence').click(async event => this.actor.rollCompetence(RdDSheetUtility.getItemId(event))); this.html.find('.roll-competence').click(async event => this.actor.rollCompetence(RdDSheetUtility.getItemId(event)));
this.html.find('.endurance-plus').click(async event => this.actor.santeIncDec("endurance", 1)); this.html.find('.endurance-plus').click(async event => this.actor.santeIncDec("endurance", 1));
this.html.find('.endurance-moins').click(async event => this.actor.santeIncDec("endurance", -1)); this.html.find('.endurance-moins').click(async event => this.actor.santeIncDec("endurance", -1));
@ -38,33 +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('.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('.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 })
)
this.html.find('.roll-text').click(async event => await RdDTextEditor.rollText(event, this.actor))
this.html.find('.chat-roll-text').click(async event => await RdDTextEditor.chatRollText(event))
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,28 +1,34 @@
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 { Grammar } from "../grammar.js";
import { RdDItemCompetence } from "../item-competence.js";
import { Misc } from "../misc.js"; import { Misc } from "../misc.js";
import { RdDEmpoignade } from "../rdd-empoignade.js";
import { RdDResolutionTable } from "../rdd-resolution-table.js"; import { RdDResolutionTable } from "../rdd-resolution-table.js";
import { RdDEncaisser } from "../rdd-roll-encaisser.js"; import { RdDEncaisser } from "../rdd-roll-encaisser.js";
import { RdDRoll } from "../rdd-roll.js"; import { RdDRoll } from "../rdd-roll.js";
import { RdDUtility } from "../rdd-utility.js"; import { RdDUtility } from "../rdd-utility.js";
import { ReglesOptionnelles } from "../settings/regles-optionnelles.js"; import { ReglesOptionnelles } from "../settings/regles-optionnelles.js";
import { RdDBaseActor } from "./base-actor.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 { RdDItemCompetenceCreature } from "../item-competencecreature.js";
import { RdDItemArme } from "../item-arme.js";
import { StatusEffects } from "../settings/status-effects.js"; import { StatusEffects } from "../settings/status-effects.js";
import { ITEM_TYPES } from "../item.js";
import { Targets } from "../targets.js"; import { Targets } from "../targets.js";
import { RdDPossession } from "../rdd-possession.js";
import { RdDCombat, RdDCombatManager } from "../rdd-combat.js";
import { RdDConfirm } from "../rdd-confirm.js"; import { RdDConfirm } from "../rdd-confirm.js";
import { ENTITE_INCARNE, SHOW_DICE, SYSTEM_RDD } from "../constants.js";
import { RdDItemArme } from "../item-arme.js";
import { RdDCarac } from "../rdd-carac.js"; import { RdDCarac } from "../rdd-carac.js";
import { ChatUtility } from "../chat-utility.js"; const POSSESSION_SANS_DRACONIC = {
import { DialogValidationEncaissement } from "../dialog-validation-encaissement.js"; img: 'systems/foundryvtt-reve-de-dragon/icons/entites/possession.webp',
import { RdDCombat } from "../rdd-combat.js"; name: 'Sans draconic',
import { RdDEmpoignade } from "../rdd-empoignade.js"; system: {
import { RdDPossession } from "../rdd-possession.js"; niveau: 0,
import { BASE_CORPS_A_CORPS, BASE_ESQUIVE, POSSESSION_SANS_DRACONIC } from "../item/base-items.js"; defaut_carac: "reve-actuel",
import { RollDataAjustements } from "../rolldata-ajustements.js"; }
};
/** /**
* Classe de base pour les acteurs disposant de rêve (donc, pas des objets) * Classe de base pour les acteurs disposant de rêve (donc, pas des objets)
@ -38,15 +44,6 @@ export class RdDBaseActorReve extends RdDBaseActor {
this.system.sante.endurance.value = Math.min(this.system.sante.endurance.value, this.system.sante.endurance.max) 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() { getCaracChanceActuelle() {
return { return {
label: 'Chance actuelle', label: 'Chance actuelle',
@ -63,6 +60,7 @@ export class RdDBaseActorReve extends RdDBaseActor {
}; };
} }
getTaille() { return Misc.toInt(this.system.carac.taille?.value) } getTaille() { return Misc.toInt(this.system.carac.taille?.value) }
getConstitution() { return this.getReve() } getConstitution() { return this.getReve() }
getForce() { return this.getReve() } getForce() { return this.getReve() }
@ -165,24 +163,24 @@ export class RdDBaseActorReve extends RdDBaseActor {
} }
return RdDItemCompetence.findCompetence(this.items, idOrName, options) return RdDItemCompetence.findCompetence(this.items, idOrName, options)
} }
getCompetences(name) {
getCompetences(name, options = { onMessage: message => { } }) { return RdDItemCompetence.findCompetences(this.items, name)
return RdDItemCompetence.findCompetences(this.items, name, options)
} }
getCompetenceCorpsACorps(options = {}) {
getCompetenceCorpsACorps(options = { onMessage: message => { } }) { return this.getCompetence("Corps à corps", options)
return this.getCompetence(BASE_CORPS_A_CORPS.name, options) ?? BASE_CORPS_A_CORPS
} }
getCompetencesEsquive() {
getCompetencesEsquive(options = { onMessage: message => { } }) { return this.getCompetences("esquive")
return this.getCompetences(BASE_ESQUIVE.name, options) ?? [BASE_ESQUIVE]
} }
getArmeParade(armeParadeId) { 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) { getPossession(possessionId) {
return this.itemTypes[ITEM_TYPES.possession].find(it => it.system.possessionid == possessionId); return this.itemTypes[ITEM_TYPES.possession].find(it => it.system.possessionid == possessionId);
@ -294,57 +292,6 @@ export class RdDBaseActorReve extends RdDBaseActor {
createCallbackAppelAuMoral() { return this.createEmptyCallback(); } createCallbackAppelAuMoral() { return this.createEmptyCallback(); }
async _onCloseRollDialog(html) { } async _onCloseRollDialog(html) { }
async rollCaracCompetence(caracName, compName, diff, options = { title: "" }) {
RdDEmpoignade.checkEmpoignadeEnCours(this)
const competence = this.getCompetence(compName);
await this.openRollDialog({
name: 'jet-competence',
label: competence? 'Jet ' + Grammar.apostrophe('de', competence.name) : `Jet sans compétence (${compName})`,
template: 'systems/foundryvtt-reve-de-dragon/templates/dialog-roll-competence.html',
rollData: {
alias: this.getAlias(),
carac: this.system.carac,
selectedCarac: this.getCaracByName(caracName),
selectedCaracName: caracName,
diffLibre: diff,
competence: competence,
show: { title: options?.title ?? '' }
},
callbackAction: r => this.$onRollCompetence(r, options)
});
}
/**
* Méthode pour faire un jet prédéterminer sans ouvrir la fenêtre de dialogue
* @param {*} caracName code ou label de la caractéristique. On peut utiliser 'intel' pour Intellect.
* @param {*} compName nom de compétence ou nom abrégé.
* @param {*} diff difficulté (0 si undefined)
* @param {*} options
* @returns le jet effectué
*/
async doRollCaracCompetence(caracName, compName, diff, options = { title: "" }) {
const carac = this.getCaracByName(caracName);
if (!carac) {
ui.notifications.warn(`${this.name} n'a pas de caractéristique correspondant à ${caracName}`)
return
}
const competence = this.getCompetence(compName);
let rollData = {
alias: this.getAlias(),
caracValue: Number(carac.value),
selectedCarac: carac,
competence: competence,
diffLibre: diff ?? 0,
show: { title: options?.title ?? '' }
}
RollDataAjustements.calcul(rollData, this);
await RdDResolutionTable.rollData(rollData);
this.gererExperience(rollData);
await RdDResolutionTable.displayRollData(rollData, this)
return rollData.rolled;
}
gererExperience(rollData) { }
/* -------------------------------------------- */ /* -------------------------------------------- */
async roll() { async roll() {
RdDEmpoignade.checkEmpoignadeEnCours(this) RdDEmpoignade.checkEmpoignadeEnCours(this)
@ -363,14 +310,24 @@ export class RdDBaseActorReve extends RdDBaseActor {
competences: this.itemTypes['competence'] competences: this.itemTypes['competence']
}, },
callbackAction: r => this.$onRollCaracResult(r) callbackAction: r => this.$onRollCaracResult(r)
}) });
} }
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, options = {}) { async rollCarac(caracName, jetResistance = undefined) {
if (Grammar.equalsInsensitive(caracName, 'taille')) { if (Grammar.equalsInsensitive(caracName, 'taille')) {
return return
} }
foundry.utils.mergeObject(options, { resistance: false, diff: 0 }, { overwrite: false })
RdDEmpoignade.checkEmpoignadeEnCours(this) RdDEmpoignade.checkEmpoignadeEnCours(this)
let selectedCarac = this.getCaracByName(caracName) let selectedCarac = this.getCaracByName(caracName)
console.log("selectedCarac", selectedCarac) console.log("selectedCarac", selectedCarac)
@ -381,8 +338,7 @@ export class RdDBaseActorReve extends RdDBaseActor {
rollData: { rollData: {
selectedCarac: selectedCarac, selectedCarac: selectedCarac,
competences: this.itemTypes['competence'], competences: this.itemTypes['competence'],
diffLibre: options.diff ?? 0, jetResistance: jetResistance ? caracName : undefined
jetResistance: options.resistance ? caracName : undefined
}, },
callbackAction: r => this.$onRollCaracResult(r) callbackAction: r => this.$onRollCaracResult(r)
}); });
@ -550,7 +506,7 @@ export class RdDBaseActorReve extends RdDBaseActor {
|| entite.isEntiteAccordee(this)) { || entite.isEntiteAccordee(this)) {
return true; 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 = { const rollData = {
alias: this.getAlias(), alias: this.getAlias(),
rolled: rolled, rolled: rolled,

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 { ReglesOptionnelles } from "../settings/regles-optionnelles.js";
import { STATUSES } from "../settings/status-effects.js"; import { STATUSES } from "../settings/status-effects.js";
import { ITEM_TYPES } from "../item.js"; import { ITEM_TYPES } from "../item.js";

View File

@ -5,7 +5,6 @@ import { RdDSheetUtility } from "../rdd-sheet-utility.js";
import { Monnaie } from "../item-monnaie.js"; import { Monnaie } from "../item-monnaie.js";
import { RdDItem, ITEM_TYPES } from "../item.js"; import { RdDItem, ITEM_TYPES } from "../item.js";
import { RdDItemCompetenceCreature } from "../item-competencecreature.js"; import { RdDItemCompetenceCreature } from "../item-competencecreature.js";
import { RdDTextEditor } from "../apps/rdd-text-roll-editor.js";
/* -------------------------------------------- */ /* -------------------------------------------- */
/** /**
@ -36,8 +35,8 @@ export class RdDBaseActorSheet extends ActorSheet {
img: this.actor.img, img: this.actor.img,
name: this.actor.name, name: this.actor.name,
system: this.actor.system, system: this.actor.system,
description: await RdDTextEditor.enrichHTML(this.actor.system.description, this.actor), description: await TextEditor.enrichHTML(this.actor.system.description, { async: true }),
notesmj: await RdDTextEditor.enrichHTML(this.actor.system.notesmj, this.actor), notesmj: await TextEditor.enrichHTML(this.actor.system.notesmj, { async: true }),
options: RdDSheetUtility.mergeDocumentRights(this.options, this.actor, this.isEditable), options: RdDSheetUtility.mergeDocumentRights(this.options, this.actor, this.isEditable),
effects: this.actor.effects effects: this.actor.effects
} }
@ -178,6 +177,21 @@ export class RdDBaseActorSheet extends ActorSheet {
this.options.vueDetaillee = !this.options.vueDetaillee; this.options.vueDetaillee = !this.options.vueDetaillee;
this.render(true); 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) { _rechercherKeyup(event) {

View File

@ -21,7 +21,7 @@ export class RdDBaseActor extends Actor {
static $findCaracByName(carac, name) { static $findCaracByName(carac, name) {
const caracList = Object.entries(carac); const caracList = Object.entries(carac);
let entry = Misc.findFirstLike(name, caracList, { mapper: it => it[0], description: 'caractéristique', onMessage: m => { } }); let entry = Misc.findFirstLike(name, caracList, { mapper: it => it[0], description: 'caractéristique' });
if (!entry || entry.length == 0) { if (!entry || entry.length == 0) {
entry = Misc.findFirstLike(name, caracList, { mapper: it => it[1].label, description: 'caractéristique' }); entry = Misc.findFirstLike(name, caracList, { mapper: it => it[1].label, description: 'caractéristique' });
} }
@ -81,6 +81,7 @@ export class RdDBaseActor extends Actor {
} }
} }
static getRealActor(actorId, tokenId) { static getRealActor(actorId, tokenId) {
if (tokenId) { if (tokenId) {
let token = canvas.tokens.get(tokenId) let token = canvas.tokens.get(tokenId)
@ -160,11 +161,8 @@ export class RdDBaseActor extends Actor {
return RdDBaseActor.$findCaracByName(carac, name); return RdDBaseActor.$findCaracByName(carac, name);
} }
mapCarac(caracCode) { return caracCode }
getCaracByName(name) { getCaracByName(name) {
name = this.mapCarac(Grammar.toLowerCaseNoAccent(name)) switch (Grammar.toLowerCaseNoAccent(name)) {
switch (name) {
case 'reve-actuel': case 'reve actuel': case 'reve-actuel': case 'reve actuel':
return this.getCaracReveActuel(); return this.getCaracReveActuel();
case 'chance-actuelle': case 'chance-actuelle': case 'chance-actuelle': case 'chance-actuelle':
@ -178,19 +176,11 @@ export class RdDBaseActor extends Actor {
await super._preCreate(data, options, user); await super._preCreate(data, options, user);
// Configure prototype token settings // Configure prototype token settings
if (this.type === "personnage") { const prototypeToken = {};
this.updateSource({ if (this.type === "personnage") Object.assign(prototypeToken, {
sight: { enabled: true }, sight: { enabled: true }, actorLink: true, disposition: CONST.TOKEN_DISPOSITIONS.FRIENDLY
actorLink: options.fromCompendium ? data.prototypeToken.actorLink : true, });
disposition: CONST.TOKEN_DISPOSITIONS.FRIENDLY this.updateSource({ prototypeToken });
})
} else {
const prototypeToken = {
sight: { enabled: true },
disposition: CONST.TOKEN_DISPOSITIONS.NEUTRAL
}
this.updateSource({ prototypeToken });
}
} }
/* -------------------------------------------- */ /* -------------------------------------------- */

View File

@ -1,6 +1,4 @@
import { Grammar } from "../grammar.js";
import { ITEM_TYPES } from "../item.js"; import { ITEM_TYPES } from "../item.js";
import { LIST_CARAC_AUTRES } from "../rdd-carac.js";
import { RdDBaseActorSang } from "./base-actor-sang.js"; import { RdDBaseActorSang } from "./base-actor-sang.js";
export class RdDCreature extends RdDBaseActorSang { export class RdDCreature extends RdDBaseActorSang {
@ -34,16 +32,4 @@ export class RdDCreature extends RdDBaseActorSang {
} }
} }
mapCarac(caracCode) {
switch (caracCode) {
case 'vue': case 'ouie': case 'odoratgout': case 'empathie': case 'perception':
return 'perception'
case 'agilite':
return 'force'
case 'force': case 'constitution': case 'taille': case 'reve': case 'volonte':
return caracCode
}
return undefined
}
} }

View File

@ -1,7 +1,6 @@
import { RdDBaseActorReveSheet } from "./base-actor-reve-sheet.js"; import { RdDBaseActorReveSheet } from "./base-actor-reve-sheet.js";
import { RdDSheetUtility } from "../rdd-sheet-utility.js"; import { RdDSheetUtility } from "../rdd-sheet-utility.js";
import { RdDUtility } from "../rdd-utility.js"; import { RdDUtility } from "../rdd-utility.js";
import { DialogSelect } from "../dialog-select.js";
export class RdDActorEntiteSheet extends RdDBaseActorReveSheet { export class RdDActorEntiteSheet extends RdDBaseActorReveSheet {
@ -15,8 +14,6 @@ export class RdDActorEntiteSheet extends RdDBaseActorReveSheet {
async getData() { async getData() {
let formData = await super.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)) 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 } }) .map(actor => { return { id: actor.id, name: actor.name, img: actor.img } })
return formData return formData
@ -35,30 +32,26 @@ export class RdDActorEntiteSheet extends RdDBaseActorReveSheet {
let compName = event.currentTarget.attributes.compname.value; let compName = event.currentTarget.attributes.compname.value;
this.actor.updateCreatureCompetence(compName, "carac_value", parseInt(event.target.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 => { this.html.find('.creature-dommages').change(async event => {
let compName = event.currentTarget.attributes.compname.value; let compName = event.currentTarget.attributes.compname.value;
this.actor.updateCreatureCompetence(compName, "dommages", parseInt(event.target.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 => { this.html.find('.resonance-delete').click(async event => {
const li = RdDSheetUtility.getEventElement(event); const li = RdDSheetUtility.getEventElement(event);
const actorId = li.data("actor-id"); const actorId = li.data("actor-id");
if (actorId) { if (actorId) {
const actorResonance = game.actors.get(actorId); const actorResonance = game.actors.get(actorId);
RdDUtility.confirmSubActeurDelete(this, actorResonance, li, () => { RdDUtility.confirmSubActeurDelete(this, actorResonance, li, () => {
this.resonanceDelete(actorId); console.log('Delete : ', actorId);
this.deleteSubActeur(actorId);
RdDUtility.slideOnDelete(this, li); RdDUtility.slideOnDelete(this, li);
}) });
} }
}) });
} }
async _onDropActor(event, dragData) { async _onDropActor(event, dragData) {
@ -67,13 +60,7 @@ export class RdDActorEntiteSheet extends RdDBaseActorReveSheet {
super._onDropActor(event, dragData) super._onDropActor(event, dragData)
} }
async resonanceAdd(actorId) { async deleteSubActeur(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);
let newResonances = this.actor.system.sante.resonnance.actors.filter(id => id != actorId); let newResonances = this.actor.system.sante.resonnance.actors.filter(id => id != actorId);
await this.actor.update({ 'system.sante.resonnance.actors': newResonances }, { renderSheet: false }); 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 { ENTITE_INCARNE, ENTITE_NONINCARNE } from "../constants.js";
import { ITEM_TYPES } from "../item.js"; import { ITEM_TYPES } from "../item.js";
import { Misc } from "../misc.js"; import { Misc } from "../misc.js";
import { RdDCarac } from "../rdd-carac.js";
import { RdDEncaisser } from "../rdd-roll-encaisser.js"; import { RdDEncaisser } from "../rdd-roll-encaisser.js";
import { STATUSES } from "../settings/status-effects.js"; import { STATUSES } from "../settings/status-effects.js";
import { RdDBaseActorReve } from "./base-actor-reve.js"; import { RdDBaseActorReve } from "./base-actor-reve.js";
@ -19,23 +18,12 @@ export class RdDEntite extends RdDBaseActorReve {
isEntite(typeentite = []) { isEntite(typeentite = []) {
return (typeentite.length == 0 || typeentite.includes(this.system.definition.typeentite)); return (typeentite.length == 0 || typeentite.includes(this.system.definition.typeentite));
} }
isNonIncarnee() { return this.isEntite([ENTITE_NONINCARNE]) } isNonIncarnee() { return this.isEntite([ENTITE_NONINCARNE]) }
getReveActuel() { getReveActuel() {
return Misc.toInt(this.system.carac.reve?.value) 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() } getForce() { return this.getReve() }
getAgilite() { return this.getReve() } getAgilite() { return this.getReve() }
getChance() { return this.getReve() } getChance() { return this.getReve() }
@ -76,7 +64,6 @@ export class RdDEntite extends RdDBaseActorReve {
} }
return {} return {}
} }
async encaisser() { async encaisser() {
if (this.isNonIncarnee()) { if (this.isNonIncarnee()) {
return return
@ -117,14 +104,4 @@ export class RdDEntite extends RdDBaseActorReve {
super.setEntiteReveAccordee(actor) super.setEntiteReveAccordee(actor)
} }
} }
mapCarac(caracCode) {
switch (caracCode) {
case 'taille':
case 'reve':
return caracCode
}
return 'reve'
}
} }

View File

@ -6,8 +6,8 @@ import { ExportScriptarium } from "./export-scriptarium.js";
import { CATEGORIES_COMPETENCES, CATEGORIES_DRACONIC, Mapping } from "./mapping.js"; import { CATEGORIES_COMPETENCES, CATEGORIES_DRACONIC, Mapping } from "./mapping.js";
export class RdDActorExportSheet extends RdDActorSheet { export class RdDActorExportSheet extends RdDActorSheet {
static init() { static async init() {
loadTemplates([ await loadTemplates([
"systems/foundryvtt-reve-de-dragon/templates/actor/export-scriptarium/arme.hbs", "systems/foundryvtt-reve-de-dragon/templates/actor/export-scriptarium/arme.hbs",
"systems/foundryvtt-reve-de-dragon/templates/actor/export-scriptarium/blessure.hbs", "systems/foundryvtt-reve-de-dragon/templates/actor/export-scriptarium/blessure.hbs",
"systems/foundryvtt-reve-de-dragon/templates/actor/export-scriptarium/blessures.hbs", "systems/foundryvtt-reve-de-dragon/templates/actor/export-scriptarium/blessures.hbs",
@ -23,7 +23,6 @@ export class RdDActorExportSheet extends RdDActorSheet {
]) ])
Actors.registerSheet(SYSTEM_RDD, RdDActorExportSheet, { types: ["personnage"], makeDefault: false, label: "Feuille simplifiée" }) Actors.registerSheet(SYSTEM_RDD, RdDActorExportSheet, { types: ["personnage"], makeDefault: false, label: "Feuille simplifiée" })
} }
static get defaultOptions() { static get defaultOptions() {
return foundry.utils.mergeObject(RdDActorSheet.defaultOptions, { return foundry.utils.mergeObject(RdDActorSheet.defaultOptions, {
template: "systems/foundryvtt-reve-de-dragon/templates/actor/export-scriptarium/actor-encart-sheet.hbs", template: "systems/foundryvtt-reve-de-dragon/templates/actor/export-scriptarium/actor-encart-sheet.hbs",

View File

@ -83,7 +83,6 @@ const MAPPING_BASE = [
{ column: "protectionarmure", colName: 'Protection', getter: (actor, context) => Mapping.getProtectionArmure(actor, context) }, { column: "protectionarmure", colName: 'Protection', getter: (actor, context) => Mapping.getProtectionArmure(actor, context) },
{ column: "malus_armure", getter: (actor, context) => Mapping.getMalusArmure(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: "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: "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: "endurance_actuel", rollClass: 'jet-endurance', getter: (actor, context) => actor.system.sante.endurance.value },
{ column: "esquive", getter: (actor, context) => Mapping.getEsquive(context) }, { column: "esquive", getter: (actor, context) => Mapping.getEsquive(context) },
@ -279,7 +278,7 @@ export class Mapping {
const race = ['', 'humain'].includes(Grammar.toLowerCaseNoAccent(actor.system.race)) ? '' : (actor.system.race + ' ') const race = ['', 'humain'].includes(Grammar.toLowerCaseNoAccent(actor.system.race)) ? '' : (actor.system.race + ' ')
const heure = actor.system.heure const heure = actor.system.heure
const hn = `${sexeFeminin} à l'heure ${RdDTimestamp.definition(heure).avecArticle}` 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 taille = actor.system.taille
const poids = actor.system.poids const poids = actor.system.poids
const cheveux = actor.system.cheveux ? `cheveux ${actor.system.cheveux}` : undefined const cheveux = actor.system.cheveux ? `cheveux ${actor.system.cheveux}` : undefined

View File

@ -6,7 +6,6 @@ import { Grammar } from "../grammar.js";
import { Misc } from "../misc.js"; import { Misc } from "../misc.js";
import { ENTITE_INCARNE, ENTITE_NONINCARNE } from "../constants.js"; import { ENTITE_INCARNE, ENTITE_NONINCARNE } from "../constants.js";
import { RdDItemTete } from "../item/tete.js"; import { RdDItemTete } from "../item/tete.js";
import { ITEM_TYPES } from "../item.js";
const WHITESPACES = "\\s+" const WHITESPACES = "\\s+"
const NUMERIC = "[\\+\\-]?\\d+" const NUMERIC = "[\\+\\-]?\\d+"
@ -27,28 +26,23 @@ const MANIEMENTS = {
'de lancer': (weapon) => { return { name: weapon.system.lancer, categorie: 'lancer' } }, 'de lancer': (weapon) => { return { name: weapon.system.lancer, categorie: 'lancer' } },
'de jet': (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' } }, 'à 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' } }, 'à deux main': (weapon) => { return { name: weapon.system.competence.replace("à 1 main", "à 2 main"), categorie: 'melee' } },
'mêlée': (weapon) => { return { name: weapon.system.competence, 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_WEAPON_MANIEMENT = "(?<maniement>(" + Misc.join(Object.keys(MANIEMENTS), '|') + "))"
const XREGEXP_SORT_VOIE = "(?<voies>[OHNT](\\/[OHNT])*)" const XREGEXP_SORT_VOIE = "(?<voies>[OHNT](\\/[OHNT])*)"
const XREGEXP_SORT_NAME = "(?<name>[^\\(]+)" const XREGEXP_SORT_NAME = "(?<name>[^\\(]+)"
const XREGEXP_SORT_CASE = "(?<coord>([A-Za-zÀ-ÖØ-öø-ÿ\\s\\-]+|[A-M]\\d{1,2}))" const XREGEXP_SORT_CASE = "\\((?<case>([A-Za-zÀ-ÖØ-öø-ÿ\\s\\-]+|[A-M]\\d{1,2})+)\\)";
const XREGEXP_SORT = "(" + XREGEXP_SORT_VOIE const XREGEXP_SORT = "(" + XREGEXP_SORT_VOIE
+ WHITESPACES + XREGEXP_SORT_NAME + WHITESPACES + XREGEXP_SORT_NAME
+ WHITESPACES + "\\(" + XREGEXP_SORT_CASE + "\\)" + WHITESPACES + XREGEXP_SORT_CASE
+ WHITESPACES + "R(?<diff>([\\-\\d]+|(\\w|\\s)+))" + WHITESPACES + "R(?<diff>([\\-\\d]+|(\\w|\\s)+))"
+ WHITESPACES + "r(?<reve>(\\d+(\\+)?|\\s\\w+))" + WHITESPACES + "r(?<reve>(\\d+(\\+)?|\\s\\w+))"
+ "(" + WHITESPACES + "\\+(?<bonus>\\d+)\\s?%" + WHITESPACES + "en" + WHITESPACES + "(?<bonuscase>[A-M]\\d{1,2})" + ")?" + "(" + 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 // Main class for parsing a stat block
export class RdDStatBlockParser { export class RdDStatBlockParser {
@ -164,18 +158,26 @@ export class RdDStatBlockParser {
switch (type) { switch (type) {
case "creature": case "creature":
RdDStatBlockParser.parseCreature(statString, actorData) RdDStatBlockParser.parseCreature(statString, actorData)
await RdDStatBlockParser.parseCompetences(statString, actorData, items)
break break
case "entite": case "entite":
RdDStatBlockParser.parseEntite(statString, actorData) RdDStatBlockParser.parseEntite(statString, actorData)
await RdDStatBlockParser.parseCompetences(statString, actorData, items)
break break
case "personnage": }
await RdDStatBlockParser.parseArmors(statString, actorData, items); if (type == "personnage") {
await RdDStatBlockParser.parseCompetences(statString, actorData, items); // Now process armors
await RdDStatBlockParser.parseWeapons(statString, items); await RdDStatBlockParser.parseArmors(statString, actorData, items);
await RdDStatBlockParser.parseHautReve(statString, actorData, items); }
RdDStatBlockParser.parsePersonnage(statString, actorData);
// 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); const name = RdDStatBlockParser.extractName(type, statString);
@ -185,7 +187,6 @@ export class RdDStatBlockParser {
let newActor = await RdDBaseActorReve.create({ name, type, system: actorData, items }); let newActor = await RdDBaseActorReve.create({ name, type, system: actorData, items });
await newActor.remiseANeuf() await newActor.remiseANeuf()
await RdDStatBlockParser.adjustAttacks(newActor)
await RdDStatBlockParser.setValeursActuelles(newActor, statString) await RdDStatBlockParser.setValeursActuelles(newActor, statString)
await newActor?.sheet.render(true) await newActor?.sheet.render(true)
} }
@ -194,16 +195,17 @@ export class RdDStatBlockParser {
const competences = await SystemCompendiums.getCompetences(actorData.flags.type); const competences = await SystemCompendiums.getCompetences(actorData.flags.type);
//console.log("Competences : ", competences); //console.log("Competences : ", competences);
for (let competence of competences) { for (let competence of competences) {
let pushed = actorData.flags.type != "personnage" let compSourceString = statString
let compNameToSearch = RdDStatBlockParser.fixCompName(competence.name) let compNameToSearch = RdDStatBlockParser.fixCompName(competence.name)
XRegExp.forEach(statString, XRegExp("\\s" + compNameToSearch + compParser[actorData.flags.type], 'giu'), let compMatch = XRegExp.exec(compSourceString, XRegExp("\\s" + compNameToSearch + compParser[actorData.flags.type], 'giu'))
function (compMatch, i) { while (compMatch) {
items.push(RdDStatBlockParser.prepareCompetence(actorData, competence, compMatch)) items.push(RdDStatBlockParser.prepareCompetence(actorData, competence, compMatch))
if (!compMatch.special) {
pushed = true // pour gérer les compétences avec spécialisations, si elle est trouvée, chercher si elle apparaît dans la suite
} compSourceString = compSourceString.substring(compSourceString.indexOf(compNameToSearch) + compNameToSearch.length)
}) compMatch = XRegExp.exec(compSourceString, XRegExp("\\s" + compNameToSearch + compParser[actorData.flags.type], 'giu'))
if (!pushed) { }
if (actorData.flags.type == "personnage" && compSourceString.length == statString.length) {
// ajout niveau de base // ajout niveau de base
items.push(competence.toObject()) items.push(competence.toObject())
} }
@ -260,7 +262,7 @@ export class RdDStatBlockParser {
} }
let weapMatch = XRegExp.exec(statString, XRegExp(weapon.name let weapMatch = XRegExp.exec(statString, XRegExp(weapon.name
+ "(\\s*" + XREGEXP_WEAPON_MANIEMENT + ")?" + "(\\s*" + XREGEXP_WEAPON_MANIEMENT + ")?"
+ "\\s+(?<value>[\\+\\-]?\\d+)", 'giu')); + "\\s+(?<value>\\+\\d+)", 'giu'));
if (weapMatch) { if (weapMatch) {
weapon = weapon.toObject(); weapon = weapon.toObject();
weapon.system.equipe = 'true'; weapon.system.equipe = 'true';
@ -289,21 +291,6 @@ export class RdDStatBlockParser {
} }
} }
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) { static async setValeursActuelles(newActor, statString) {
const updates = { const updates = {
} }
@ -338,10 +325,10 @@ export class RdDStatBlockParser {
XRegExp.forEach(statString, XRegExp(XREGEXP_SORT, 'gu' /* keep case sensitive to match the spell draconic skill */), XRegExp.forEach(statString, XRegExp(XREGEXP_SORT, 'gu' /* keep case sensitive to match the spell draconic skill */),
function (matchSort, i) { function (matchSort, i) {
actorData.flags.hautRevant = true
const sortName = Grammar.toLowerCaseNoAccent(matchSort.name).trim().replace("", "'"); const sortName = Grammar.toLowerCaseNoAccent(matchSort.name).trim().replace("", "'");
let sort = sorts.find(s => Grammar.toLowerCaseNoAccent(s.name) == sortName) let sort = sorts.find(s => Grammar.toLowerCaseNoAccent(s.name) == sortName)
if (sort) { if (sort) {
actorData.flags.hautRevant = true
sort = sort.toObject(); sort = sort.toObject();
if (matchSort.bonus && matchSort.bonuscase) { if (matchSort.bonus && matchSort.bonuscase) {
sort.system.bonuscase = `${matchSort.bonuscase}:${matchSort.bonus}`; sort.system.bonuscase = `${matchSort.bonuscase}:${matchSort.bonus}`;
@ -351,38 +338,7 @@ export class RdDStatBlockParser {
else { else {
ui.notifications.warn(`Impossible de trouver le sort ${matchSort.name} / ${sortName}`) 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) { if (actorData.flags.hautRevant) {
const donHR = await RdDItemTete.teteDonDeHautReve(); const donHR = await RdDItemTete.teteDonDeHautReve();
@ -420,9 +376,9 @@ export class RdDStatBlockParser {
actorData.taille = taille.value; actorData.taille = taille.value;
} }
// Get weight // Get weight
const poids = XRegExp.exec(statString, XRegExp(",\\s+(?<value>\\d+)\\s+kg", 'giu')); const poids = XRegExp.exec(statString, XRegExp("(?<value>\\d+ kg)", 'giu'));
if (poids?.value) { if (poids?.value) {
actorData.poids = poids.value + ' kg'; actorData.poids = poids.value;
} }
// Get cheveux // Get cheveux
const cheveux = XRegExp.exec(statString, XRegExp("kg,\\s+(?<value>[A-Za-zÀ-ÖØ-öø-ÿ\\s\\-]+),\\s+yeux", 'giu')); const cheveux = XRegExp.exec(statString, XRegExp("kg,\\s+(?<value>[A-Za-zÀ-ÖØ-öø-ÿ\\s\\-]+),\\s+yeux", 'giu'));
@ -443,7 +399,7 @@ export class RdDStatBlockParser {
} }
static parseCreature(statString, actorData) { static parseCreature(statString, actorData) {
let protection = XRegExp.exec(statString, XRegExp("protection(\\s+naturelle)?\\s+(?<value>[\\-]?\\d+)", 'giu')); let protection = XRegExp.exec(statString, XRegExp("protection\\s+(?<value>[\\-]?\\d+)", 'giu'));
if (protection?.value) { if (protection?.value) {
actorData.attributs.protection.value = Number(protection.value); actorData.attributs.protection.value = Number(protection.value);
} }
@ -469,40 +425,33 @@ export class RdDStatBlockParser {
} }
static parseActorType(statString) { static parseActorType(statString) {
let force = XRegExp.exec(statString, XRegExp("Force\\s+(?<value>[\\+\\-]?\\d+)", 'giu')) let niveau = XRegExp.exec(statString, XRegExp("Niveau\\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')) let perception = XRegExp.exec(statString, XRegExp("perception\\s+(?<value>\\d+)", 'giu'))
if (!force) { if (perception?.value) {
return "entite"
}
if (!vue || perception) {
return "creature" return "creature"
} }
if (niveau?.value) {
return "entite"
}
return "personnage" return "personnage"
} }
static extractName(actorType, statString) { static extractName(actorType, statString) {
if (actorType == "personnage") { switch (actorType) {
// Check if ',né le' is present case "personnage":
let namePersonnage = "Importé" // Check if ',né le' is present
if (statString.includes(", né")) { let namePersonnage = "Importé"
// Name is all string before first comma ',' if (statString.includes(", né")) {
namePersonnage = XRegExp.exec(statString, XRegExp("(?<value>[\\p{Letter}\'\\-\\s\\d]+),", 'giu')); // Name is all string before first comma ','
} else { namePersonnage = XRegExp.exec(statString, XRegExp("(?<value>[\\p{Letter}\\s\\d]+),", 'giu'));
namePersonnage = XRegExp.exec(statString, XRegExp("(?<value>[\\p{Letter}\'\\-\\s\\d]+)\\s+TAILLE", 'giu')); } else {
} namePersonnage = XRegExp.exec(statString, XRegExp("(?<value>[\\p{Letter}\\s\\d]+)\\s+TAILLE", 'giu'));
if (namePersonnage?.value) { }
return Misc.upperFirst(namePersonnage?.value.toLowerCase()); if (namePersonnage?.value) {
} return Misc.upperFirst(namePersonnage?.value);
}
} }
const name = XRegExp.exec(statString, XRegExp("(?<value>.+)\\s+taille", 'giu')); 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é"); return Misc.upperFirst(name?.value || "Importé");
} }

View File

@ -1,78 +0,0 @@
import "./xregexp-all.js";
import { SystemCompendiums } from "../settings/system-compendiums.js";
import { ACTOR_TYPES } from "../item.js";
import { TextRollAlchimie } from "./textroll/text-roll-alchimie.js";
import { TextRollCaracCompetence } from "./textroll/text-roll-carac-competence.js";
import { TextRollFormula } from "./textroll/text-roll-formula.js";
import { TextRollManager } from "./textroll/text-roll-formatter.js";
const TEXT_ROLL_MANAGERS = [
new TextRollAlchimie(),
new TextRollCaracCompetence(),
new TextRollFormula()]
export class RdDTextEditor {
static registerChatCallbacks(html) {
html.on("click", '.roll-text', async event => await RdDTextEditor.rollText(event))
}
static async enrichHTML(text, object, options = {showlink:true}) {
const context = {
text,
object,
options,
competences: await SystemCompendiums.getCompetences(ACTOR_TYPES.personnage),
}
for (let manager of TEXT_ROLL_MANAGERS) {
context.code = manager.code
context.template = manager.template
context.text = await manager.onReplaceRoll(context);
}
return await TextEditor.enrichHTML(context.text, {
relativeTo: object,
secrets: object?.isOwner,
async: true
})
}
static async _applyReplaceAll(manager, context) {
context.code = manager.code
context.template = manager.template
context.text = await manager.onReplaceRoll(context);
return context.text
}
static getEventElement(event) {
return $(event.currentTarget)?.parents(".roll-text-link");
}
static async rollText(event, actor) {
const code = TextRollManager.getNode(event)?.data('code')
const manager = TEXT_ROLL_MANAGERS.find(it => it.code == code)
if (manager) {
await manager.onRollText(event, actor)
}
}
static async chatRollText(event) {
const node = TextRollManager.getNode(event);
if (node) {
const code = node.data('code')
const param = node.data('json')
const manager = TEXT_ROLL_MANAGERS.find(it => it.code == code)
const text = await TextRollManager.createRollText(
{
code,
template: manager.template,
options: { showLink: false }
},
param)
ChatMessage.create({
content: text
})
}
}
}

View File

@ -1,79 +0,0 @@
import "../xregexp-all.js";
import { ACTOR_TYPES, ITEM_TYPES } from "../../item.js";
import { RdDCarac } from "../../rdd-carac.js";
import { RdDUtility } from "../../rdd-utility.js";
import { RdDAlchimie } from "../../rdd-alchimie.js";
import { TextRollManager } from "./text-roll-formatter.js";
const REGEX_ALCHIMIE_TERMES = "(?<termes>(\\w|-)+)"
const REGEX_ALCHIMIE_MANIP = "(?<manip>(couleur|consistance))"
const XREGEXP_ROLL_ALCHIMIE = XRegExp("@roll\\[" + REGEX_ALCHIMIE_MANIP + "\\s+" + REGEX_ALCHIMIE_TERMES + "\\]", 'giu')
const XREGEXP_ROLL_ALCHIMIE_MANIP = XRegExp("@" + REGEX_ALCHIMIE_MANIP + "\\{" + REGEX_ALCHIMIE_TERMES + "\\}", 'giu')
/**
* classe pour gérer les jets d'alchimie
*/
export class TextRollAlchimie {
get code() { return 'alchimie' }
get template() { return `systems/foundryvtt-reve-de-dragon/templates/apps/textroll/link-text-roll-alchimie.hbs` }
async onReplaceRoll(context) {
const handler = new AlchimieTextBuilder(context)
return await handler.replaceAll()
}
async onRollText(event, actor) {
actor = this.getSelectedActor(actor)
if (actor) {
const node = TextRollManager.getNode(event)
const recetteId = node.data('recetteid')
const manip = node.data('manip')
const termes = node.data('termes')
if (recetteId) {
await actor.effectuerTacheAlchimie(recetteId, manip, termes)
}
else {
const carac = RdDCarac.caracDetails(RdDAlchimie.getCaracTache(manip))
const diff = RdDAlchimie.getDifficulte(termes)
await actor.rollCaracCompetence(carac.code, 'Alchimie', diff)
}
}
}
getSelectedActor(actor) {
actor = actor ?? RdDUtility.getSelectedActor()
if (actor && actor.type == ACTOR_TYPES.personnage) {
return actor
}
return undefined
}
}
class AlchimieTextBuilder {
constructor(context) {
this.context = context
}
async replaceAll() {
await XRegExp.forEach(this.context.text, XREGEXP_ROLL_ALCHIMIE, async (rollMatch, i) => await this.replaceMatch(rollMatch, i))
await XRegExp.forEach(this.context.text, XREGEXP_ROLL_ALCHIMIE_MANIP, async (rollMatch, i) => await this.replaceMatch(rollMatch, i))
return this.context.text
}
async replaceMatch(rollMatch, i) {
if (rollMatch.termes && rollMatch.manip) {
const manip = rollMatch.manip
const termes = rollMatch.termes
const carac = RdDCarac.caracDetails(RdDAlchimie.getCaracTache(manip))
const diff = RdDAlchimie.getDifficulte(termes)
const recette = (this.context.object instanceof Item && this.context.object.type == ITEM_TYPES.recettealchimique) ? this.context.object : undefined
const replacement = await TextRollManager.createRollText(this.context,
{
code: this.context.code,
manip, termes, carac, diff, recetteid: recette?.id,
})
this.context.text = this.context.text.replace(rollMatch[0], replacement);
}
}
}

View File

@ -1,98 +0,0 @@
import "../xregexp-all.js";
import { RdDCarac } from "../../rdd-carac.js";
import { RdDItemCompetence } from "../../item-competence.js";
import { RdDUtility } from "../../rdd-utility.js";
import { TextRollManager } from "./text-roll-formatter.js";
const REGECP_CARAC = "(?<carac>[A-Za-zÀ-ÖØ-öø-ÿ\\s\\-]+)"
const REGEXP_COMP = "(\\/(?<competence>[A-Za-zÀ-ÖØ-öø-ÿ\\s\\-]+))?"
const REGEXP_DIFF = "(/(?<diff>[\\+\\-]?\\d+(d\\d+)?))?"
const REGEXP_ROLL_CARAC_COMP = REGECP_CARAC + REGEXP_COMP + REGEXP_DIFF
const XREGEXP_ROLL_CARAC_COMP = XRegExp("@roll\\[" + REGEXP_ROLL_CARAC_COMP + "\\]", 'giu')
/**
* classe pour gérer les jets de caractéristique/compétence depuis
* les journaux/descriptions
*/
export class TextRollCaracCompetence {
get code() { return 'carac' }
get template() { return `systems/foundryvtt-reve-de-dragon/templates/apps/textroll/link-text-roll-carac-competence.hbs` }
async onReplaceRoll(context) {
const handler = new CaracCompetenceTextBuilder(context)
return await handler.replaceAll()
}
async onRollText(event, actor) {
const node = TextRollManager.getNode(event)
const caracCode = node.data('carac-code')
if (caracCode) {
const competence = node.data('competence')
const diff = await this.calculDiff(node)
const actors = this.getSelectedActors(actor)
actors.forEach(async it => await this.doRoll(it, caracCode, competence, diff))
}
}
async calculDiff(node) {
const diff = node.data('diff') ?? 0
if (!Number.isInteger(diff)) {
const roll = new Roll(diff)
await roll.evaluate()
await roll.toMessage({ flavor: `La difficulté de ${diff} a donné ${roll.total}` })
return roll.total
}
return diff
}
async doRoll(actor, caracCode, competence, diff) {
caracCode = actor.mapCarac(caracCode)
if (caracCode) {
if (competence) {
await actor.rollCaracCompetence(caracCode, competence, diff)
}
else {
await actor.rollCarac(caracCode, { diff })
}
}
}
getSelectedActors(actor) {
const selected = canvas.tokens.controlled.map(it => it.actor).filter(it => it)
if (selected.length > 0) {
return selected
}
actor = actor ?? RdDUtility.getSelectedActor()
if (actor) {
return [actor]
}
return []
}
}
class CaracCompetenceTextBuilder {
constructor(context) {
this.context = context
}
async replaceAll() {
await XRegExp.forEach(this.context.text, XREGEXP_ROLL_CARAC_COMP, async (rollMatch, i) => await this.replaceMatch(rollMatch, i))
return this.context.text
}
async replaceMatch(rollMatch, i) {
const carac = RdDCarac.caracDetails(rollMatch.carac)
if (carac) {
const competence = rollMatch.competence ? RdDItemCompetence.findCompetence(this.context.competences, rollMatch.competence) : undefined
const replacement = await TextRollManager.createRollText(this.context,
{
code: this.context.code,
carac: carac,
competence: competence?.name,
diff: rollMatch.diff,
})
this.context.text = this.context.text.replace(rollMatch[0], replacement)
}
}
}

View File

@ -1,13 +0,0 @@
export class TextRollManager {
static async createRollText(context, param) {
return await renderTemplate(context.template, {
param, options: context.options
})
}
static getNode(event) {
return $(event.currentTarget)?.parents(".roll-text-link");
}
}

View File

@ -1,51 +0,0 @@
import "../xregexp-all.js";
import { TextRollManager } from "./text-roll-formatter.js";
const REGEXP_ROLL_FORMULA = "(?<formula>[^\\[\\]]+)"
const XREGEXP_ROLL_FORMULA = XRegExp("@roll\\[" + REGEXP_ROLL_FORMULA + "\\]", 'giu')
/**
* classe pour gérer les jets de dés (formules Foundry)
*/
export class TextRollFormula {
get code() { return 'formula' }
get template() { return `systems/foundryvtt-reve-de-dragon/templates/apps/textroll/link-text-roll-formula.hbs` }
async onReplaceRoll(context) {
const handler = new FormulaTextBuilder(context)
return await handler.replaceAll()
}
async onRollText(event, actor) {
const node = TextRollManager.getNode(event)
const rollFormula = node.data('roll-formula')
if (rollFormula) {
const roll = new Roll(rollFormula)
await roll.evaluate()
await roll.toMessage()
}
}
}
class FormulaTextBuilder {
constructor(context) {
this.context = context
}
async replaceAll() {
await XRegExp.forEach(this.context.text, XREGEXP_ROLL_FORMULA,
async (rollMatch, i) => await this.replaceMatch(rollMatch, i))
return this.context.text
}
async replaceMatch(rollMatch, i) {
if (rollMatch.formula) {
const replacement = await TextRollManager.createRollText(this.context,
{
code: this.context.code,
formula: rollMatch.formula,
})
this.context.text = this.context.text.replace(rollMatch[0], replacement)
}
}
}

View File

@ -2002,7 +2002,7 @@ XRegExp.exec = function (str, regex, pos, sticky) {
*/ */
XRegExp.forEach = async function (str, regex, callback) { XRegExp.forEach = function (str, regex, callback) {
var pos = 0; var pos = 0;
var i = -1; var i = -1;
var match; var match;
@ -2014,7 +2014,7 @@ XRegExp.forEach = async function (str, regex, callback) {
// at least. Actually, because of the way `XRegExp.exec` caches globalized versions of // at least. Actually, because of the way `XRegExp.exec` caches globalized versions of
// regexes, mutating the regex will not have any effect on the iteration or matched strings, // regexes, mutating the regex will not have any effect on the iteration or matched strings,
// which is a nice side effect that brings extra safety. // which is a nice side effect that brings extra safety.
await callback(match, ++i, str, regex); callback(match, ++i, str, regex);
pos = match.index + (match[0].length || 1); pos = match.index + (match[0].length || 1);
} }
}; };

View File

@ -1,7 +1,6 @@
import { Misc } from "./misc.js"; import { Misc } from "./misc.js";
import { SYSTEM_RDD, SYSTEM_SOCKET_ID } from "./constants.js"; import { SYSTEM_RDD, SYSTEM_SOCKET_ID } from "./constants.js";
import { RdDTimestamp } from "./time/rdd-timestamp.js"; import { RdDTimestamp } from "./time/rdd-timestamp.js";
import { RdDTextEditor } from "./apps/rdd-text-roll-editor.js";
/** /**
@ -199,7 +198,6 @@ export class ChatUtility {
static async onCreateChatMessage(chatMessage, options, id) { static async onCreateChatMessage(chatMessage, options, id) {
if (chatMessage.isAuthor) { if (chatMessage.isAuthor) {
await chatMessage.setFlag(SYSTEM_RDD, 'rdd-timestamp', game.system.rdd.calendrier.getTimestamp()); await chatMessage.setFlag(SYSTEM_RDD, 'rdd-timestamp', game.system.rdd.calendrier.getTimestamp());
await chatMessage.update({ content: await RdDTextEditor.enrichHTML(chatMessage.content, undefined, {showLink:false}) })
} }
} }
} }

View File

@ -1,5 +1,6 @@
import { RdDBaseActor } from "../actor/base-actor.js"; import { RdDBaseActor } from "../actor/base-actor.js";
import { ChatUtility } from "../chat-utility.js"; import { ChatUtility } from "../chat-utility.js";
import { ReglesOptionnelles } from "../settings/regles-optionnelles.js";
const INFO_COEUR = 'info-coeur'; const INFO_COEUR = 'info-coeur';

View File

@ -1,13 +1,13 @@
export const SYSTEM_RDD = 'foundryvtt-reve-de-dragon' export const SYSTEM_RDD = 'foundryvtt-reve-de-dragon';
export const SYSTEM_SOCKET_ID = 'system.foundryvtt-reve-de-dragon' export const SYSTEM_SOCKET_ID = 'system.foundryvtt-reve-de-dragon';
export const LOG_HEAD = 'RdD | ' export const LOG_HEAD = 'RdD | ';
export const HIDE_DICE = 'hide' export const HIDE_DICE = 'hide';
export const SHOW_DICE = 'show' export const SHOW_DICE = 'show';
export const ENTITE_INCARNE = 'incarne' export const ENTITE_INCARNE = 'incarne';
export const ENTITE_NONINCARNE = 'nonincarne' export const ENTITE_NONINCARNE = 'nonincarne';
export const ENTITE_BLURETTE = 'blurette' export const ENTITE_BLURETTE = 'blurette';
export const RDD_CONFIG = { export const RDD_CONFIG = {
niveauEthylisme : [ niveauEthylisme : [

View File

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

View File

@ -1,7 +1,6 @@
import { Grammar } from "./grammar.js"; import { Grammar } from "./grammar.js";
import { RdDItemCompetenceCreature } from "./item-competencecreature.js" import { RdDItemCompetenceCreature } from "./item-competencecreature.js"
import { ITEM_TYPES } from "./item.js"; import { ITEM_TYPES } from "./item.js";
import { BASE_CORPS_A_CORPS } from "./item/base-items.js";
import { RdDCombatManager } from "./rdd-combat.js"; import { RdDCombatManager } from "./rdd-combat.js";
const nomCategorieParade = { const nomCategorieParade = {
@ -237,13 +236,13 @@ export class RdDItemArme extends Item {
} }
static corpsACorps(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 let melee = actor ? actor.system.carac['melee'].value : 0
return { return {
_id: competence.id, _id: competence?.id,
name: 'Corps à corps', name: 'Corps à corps',
type: ITEM_TYPES.arme, type: ITEM_TYPES.arme,
img: competence.img, img: 'systems/foundryvtt-reve-de-dragon/icons/competence_corps_a_corps.webp',
system: { system: {
initiative: RdDCombatManager.calculInitiative(competence.system.niveau, melee), initiative: RdDCombatManager.calculInitiative(competence.system.niveau, melee),
equipe: true, equipe: true,

View File

@ -1,6 +1,5 @@
import { Grammar } from "./grammar.js"; import { Grammar } from "./grammar.js";
import { RdDItem } from "./item.js"; import { RdDItem } from "./item.js";
import { SANS_COMPETENCE } from "./item/base-items.js";
import { Misc } from "./misc.js"; import { Misc } from "./misc.js";
const competenceTroncs = [["Esquive", "Dague", "Corps à corps"], const competenceTroncs = [["Esquive", "Dague", "Corps à corps"],
@ -138,7 +137,7 @@ export class RdDItemCompetence extends Item {
/* -------------------------------------------- */ /* -------------------------------------------- */
static computeEconomieXPTronc(competences) { static computeEconomieXPTronc(competences) {
return competenceTroncs.map( 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 // 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))) .map(it => RdDItemCompetence.computeDeltaXP(it?.system.base ?? -11, Math.min(it?.system.niveau ?? -11, 0)))
.sort(Misc.ascending()) .sort(Misc.ascending())
@ -204,12 +203,26 @@ export class RdDItemCompetence extends Item {
} }
/* -------------------------------------------- */ /* -------------------------------------------- */
static findCompetences(list, name, options = {}) { static findCompetences(list, name) {
options = foundry.utils.mergeObject(options, { preFilter: it => it.isCompetence(), description: 'compétence' }, { overwrite: false, inplace: false }); return Misc.findAllLike(name, list, { filter: it => it.isCompetence(), description: 'compétence' });
return Misc.findAllLike(name, list, options);
} }
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) { static findFirstItem(list, idOrName, options) {
return list.find(it => it.id == idOrName && options.preFilter(it)) return list.find(it => it.id == idOrName && options.preFilter(it))
@ -259,9 +272,8 @@ export class RdDItemCompetence extends Item {
/* -------------------------------------------- */ /* -------------------------------------------- */
static triVisible(competences) { static triVisible(competences) {
return competences return competences.filter(it => !it.system.isHidden)
? competences.filter(it => !it.system.isHidden).sort((a, b) => RdDItemCompetence.compare(a, b)) .sort((a, b) => RdDItemCompetence.compare(a, b))
: []
} }
static $positionTri(comp) { static $positionTri(comp) {

View File

@ -1,5 +1,6 @@
import { RdDItemSort } from "./item-sort.js"; import { RdDItemSort } from "./item-sort.js";
import { RdDUtility } from "./rdd-utility.js"; import { RdDUtility } from "./rdd-utility.js";
import { RdDAlchimie } from "./rdd-alchimie.js";
import { RdDItemCompetence } from "./item-competence.js"; import { RdDItemCompetence } from "./item-competence.js";
import { RdDHerbes } from "./rdd-herbes.js"; import { RdDHerbes } from "./rdd-herbes.js";
import { RdDGemme } from "./rdd-gemme.js"; import { RdDGemme } from "./rdd-gemme.js";
@ -11,9 +12,8 @@ import { SystemCompendiums } from "./settings/system-compendiums.js";
import { Misc } from "./misc.js"; import { Misc } from "./misc.js";
import { RdDTimestamp } from "./time/rdd-timestamp.js"; import { RdDTimestamp } from "./time/rdd-timestamp.js";
import { RdDItemCompetenceCreature } from "./item-competencecreature.js"; import { RdDItemCompetenceCreature } from "./item-competencecreature.js";
import { ACTOR_TYPES, ITEM_TYPES, RdDItem } from "./item.js"; import { ITEM_TYPES, RdDItem } from "./item.js";
import { FLEUVE_COORD, TMRUtility } from "./tmr-utility.js"; import { FLEUVE_COORD, TMRUtility } from "./tmr-utility.js";
import { RdDTextEditor } from "./apps/rdd-text-roll-editor.js";
/** /**
* Extend the basic ItemSheet for RdD specific items * Extend the basic ItemSheet for RdD specific items
@ -97,11 +97,11 @@ export class RdDItemSheet extends ItemSheet {
name: this.item.name, name: this.item.name,
system: this.item.system, system: this.item.system,
actorId: this.actor?.id, actorId: this.actor?.id,
description: await RdDTextEditor.enrichHTML(this.item.system.description, this.item), description: await TextEditor.enrichHTML(this.item.system.description, { async: true }),
descriptionmj: await RdDTextEditor.enrichHTML(this.item.system.descriptionmj, this.item), descriptionmj: await TextEditor.enrichHTML(this.item.system.descriptionmj, { async: true }),
isComestible: this.item.getUtilisationCuisine(), isComestible: this.item.getUtilisationCuisine(),
options: RdDSheetUtility.mergeDocumentRights(this.options, this.item, this.isEditable), options: RdDSheetUtility.mergeDocumentRights(this.options, this.item, this.isEditable),
competences: await SystemCompendiums.getCompetences(ACTOR_TYPES.personnage), competences: await SystemCompendiums.getCompetences('personnage'),
categories: RdDItem.getCategories(this.item.type), categories: RdDItem.getCategories(this.item.type),
} }
@ -120,17 +120,18 @@ export class RdDItemSheet extends ItemSheet {
formData.competences = formData.competences.filter(it => it.isCompetenceArme()) formData.competences = formData.competences.filter(it => it.isCompetenceArme())
} }
if (this.item.type == ITEM_TYPES.recettecuisine) { if (this.item.type == ITEM_TYPES.recettecuisine) {
formData.ingredients = await RdDTextEditor.enrichHTML(this.item.system.ingredients, this.item) formData.ingredients = await TextEditor.enrichHTML(this.object.system.ingredients, { async: true })
} }
if (this.item.type == ITEM_TYPES.extraitpoetique) { if (this.item.type == ITEM_TYPES.extraitpoetique) {
formData.extrait = await RdDTextEditor.enrichHTML(this.item.system.extrait, this.item) formData.extrait = await TextEditor.enrichHTML(this.object.system.extrait, { async: true })
formData.texte = await RdDTextEditor.enrichHTML(this.item.system.texte, this.item) formData.texte = await TextEditor.enrichHTML(this.object.system.texte, { async: true })
} }
if (this.item.type == ITEM_TYPES.recettealchimique) { if (this.item.type == ITEM_TYPES.recettealchimique) {
formData.manipulation = await RdDTextEditor.enrichHTML(this.item.system.manipulation, this.item) RdDAlchimie.processManipulation(this.item, this.actor?.id);
formData.utilisation = await RdDTextEditor.enrichHTML(this.item.system.utilisation, this.item) formData.manipulation_update = await TextEditor.enrichHTML(this.object.system.manipulation_update, { async: true })
formData.enchantement = await RdDTextEditor.enrichHTML(this.item.system.enchantement, this.item) formData.utilisation = await TextEditor.enrichHTML(this.object.system.utilisation, { async: true })
formData.sureffet = await RdDTextEditor.enrichHTML(this.item.system.sureffet, this.item) 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 == ITEM_TYPES.gemme) {
formData.gemmeTypeList = RdDGemme.getGemmeTypeOptionList(); formData.gemmeTypeList = RdDGemme.getGemmeTypeOptionList();
@ -206,8 +207,17 @@ export class RdDItemSheet extends ItemSheet {
this.html.find('.creer-potion-base').click((event) => this._getEventActor(event).actionHerbe(this.item)); this.html.find('.creer-potion-base').click((event) => this._getEventActor(event).actionHerbe(this.item));
this.html.find('input[name="system.cacher_points_de_tache"]').change(async event => await this.item.update({ 'system.cacher_points_de_tache': event.currentTarget.checked })); this.html.find('input[name="system.cacher_points_de_tache"]').change(async event => await this.item.update({ 'system.cacher_points_de_tache': event.currentTarget.checked }));
this.html.find('.roll-text').click(async event => await RdDTextEditor.rollText(event, this.actor)) this.html.find('.alchimie-tache a').click((event) => {
this.html.find('.chat-roll-text').click(async event => await RdDTextEditor.chatRollText(event)) let actor = this._getEventActor(event);
if (actor) {
let recetteId = event.currentTarget.attributes['data-recette-id'].value;
let tacheName = event.currentTarget.attributes['data-alchimie-tache'].value;
let tacheData = event.currentTarget.attributes['data-alchimie-data'].value;
actor.effectuerTacheAlchimie(recetteId, tacheName, tacheData);
} else {
ui.notifications.info("Impossible trouver un acteur pour réaliser cette tache Alchimique.");
}
});
if (this.actor) { if (this.actor) {
this.html.find('.item-split').click(async event => RdDSheetUtility.splitItem(RdDSheetUtility.getItem(event, this.actor), this.actor, this.getActionRenderItem())); this.html.find('.item-split').click(async event => RdDSheetUtility.splitItem(RdDSheetUtility.getItem(event, this.actor), this.actor, this.getActionRenderItem()));
@ -262,7 +272,7 @@ export class RdDItemSheet extends ItemSheet {
} }
} }
async supprimerBonusCase(deleteCoord) { async supprimerBonusCase(deleteCoord){
if (this.item.type == ITEM_TYPES.sort) { if (this.item.type == ITEM_TYPES.sort) {
const oldList = RdDItemSort.getBonusCaseList(this.item) const oldList = RdDItemSort.getBonusCaseList(this.item)
const newList = oldList.filter(it => it.case != deleteCoord); const newList = oldList.filter(it => it.case != deleteCoord);

View File

@ -8,7 +8,6 @@ import { SystemCompendiums } from "./settings/system-compendiums.js";
import { RdDRaretes } from "./item/raretes.js"; import { RdDRaretes } from "./item/raretes.js";
import { CATEGORIES_COMPETENCES } from "./item-competence.js"; import { CATEGORIES_COMPETENCES } from "./item-competence.js";
import { CATEGORIES_COMPETENCES_CREATURES } from "./item-competencecreature.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 = { export const ACTOR_TYPES = {
personnage: 'personnage', personnage: 'personnage',
@ -45,7 +44,6 @@ export const ITEM_TYPES = {
danse: 'danse', danse: 'danse',
chant: 'chant', chant: 'chant',
jeu: 'jeu', jeu: 'jeu',
race: 'race',
recettecuisine: 'recettecuisine', recettecuisine: 'recettecuisine',
oeuvre: 'oeuvre', oeuvre: 'oeuvre',
recettealchimique: 'recettealchimique', recettealchimique: 'recettealchimique',
@ -246,13 +244,13 @@ export class RdDItem extends Item {
isEsquive() { isEsquive() {
return (this.isCompetence() return (this.isCompetence()
&& this.system.categorie == 'melee' && this.system.categorie == 'melee'
&& Grammar.includesLowerCaseNoAccent(this.name, BASE_ESQUIVE.name)); && Grammar.includesLowerCaseNoAccent(this.name, 'Esquive'));
} }
isCorpsACorps() { isCorpsACorps() {
return this.isCompetence() return this.isCompetence()
&& this.system.categorie == 'melee' && this.system.categorie == 'melee'
&& Grammar.includesLowerCaseNoAccent(this.name, BASE_CORPS_A_CORPS.name) && Grammar.includesLowerCaseNoAccent(this.name, 'Corps à Corps')
} }
isCompetenceArme() { isCompetenceArme() {
@ -604,7 +602,7 @@ export class RdDItem extends Item {
if (!other || !this.isInventaire()) { if (!other || !this.isInventaire()) {
return [false, undefined]; return [false, undefined];
} }
if (this.isConteneur()) { if (this.isConteneur()){
return [false, `Impossible de regrouper des conteneurs, ils ne sont pas empilables`]; return [false, `Impossible de regrouper des conteneurs, ils ne sont pas empilables`];
} }
if (this.system.quantite == undefined) { if (this.system.quantite == undefined) {

View File

@ -1,11 +1,9 @@
import { ITEM_TYPES, RdDItem } from "../item.js"; import { RdDItem } from "../item.js";
import { Misc } from "../misc.js"; import { Misc } from "../misc.js";
import { ReglesOptionnelles } from "../settings/regles-optionnelles.js"; import { ReglesOptionnelles } from "../settings/regles-optionnelles.js";
export class RdDItemArmure extends RdDItem { export class RdDItemArmure extends RdDItem {
static get ITEM_TYPE() { return ITEM_TYPES.armure }
static get defaultIcon() { static get defaultIcon() {
return "systems/foundryvtt-reve-de-dragon/icons/armes_armures/armure_plaques.webp"; return "systems/foundryvtt-reve-de-dragon/icons/armes_armures/armure_plaques.webp";
} }

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

@ -1,100 +0,0 @@
import { ITEM_TYPES, RdDItem } from "../item.js";
import { Misc } from "../misc.js";
import { LIST_CARAC_PERSONNAGE, RdDCarac } from "../rdd-carac.js";
export class RdDItemRace extends RdDItem {
static get ITEM_TYPE() { return ITEM_TYPES.race }
static get defaultIcon() {
return "systems/foundryvtt-reve-de-dragon/icons/humanoides/humain.webp";
}
static checkRacialMax(actor, code, value) {
const race = RdDItemRace.getRace(actor)
if (code == LIST_CARAC_PERSONNAGE.force.code) {
if (!race.isForceValid(actor, value)) {
ui.notifications.warn(race.system.carac.force.limitmessage)
return false
}
}
const carac = RdDCarac.carac(code)
if (race.isMax(actor, code, value - 1)) {
ui.notifications.warn(`${value} est supérieure au maximum de ${carac.label}`)
return false
}
return true
}
static applyRacialLimits(actor) {
const race = RdDItemRace.getRace(actor)
actor.system.carac.taille.value = race.getValidTaille(actor.getTaille())
actor.system.carac.force.value = Math.min(
actor.getForce(),
race.getForceMax(actor))
}
static isRacialMax(actor, code, value = undefined) {
return RdDItemRace.getRace(actor).isMax(actor, code, value)
}
static getRace(actor) {
return actor.itemTypes[ITEM_TYPES.race].find(it => true) ?? RdDItemRace.getFallbackRace()
}
static getFallbackRace() {
if (RdDItemRace.fallback == undefined) {
RdDItemRace.fallback = new RdDItemRace({ name: 'Humain', type: RdDItemRace.ITEM_TYPE })
}
return RdDItemRace.fallback
}
isMax(actor, code, value = undefined) {
const path = RdDCarac.carac(code)?.path
if (value == undefined) {
value = path ? foundry.utils.getProperty(actor, path) : 0
}
if (code == LIST_CARAC_PERSONNAGE.force.code) {
return value >= this.getForceMax(actor)
}
const max = foundry.utils.getProperty(this, path) ?? -1
return (max > 0 && value >= max)
}
getValidTaille(taille) {
const min = Math.max(this.system.carac.taille.min, 0)
if (min > taille) {
ui.notifications.warn("La Taille est inférieur au minimum racial")
return min
}
const raceMax = this.system.carac.taille.max;
const max = raceMax < 0 ? taille + 1 : raceMax
if (max < taille) {
ui.notifications.warn("La Taille est supérieure au maximum racial")
return max
}
return taille
}
isForceValid(actor, value) {
return value <= this.getForceMax(actor)
}
getForceMax(actor) {
const terms = this.system.carac.force.limit.replaceAll(' ', '').split('+')
return terms.map(
it => {
const term = Number.parseInt(it)
if (Number.isInteger(term)) {
return term
}
const path = RdDCarac.carac(it)?.path
if (path) {
return foundry.utils.getProperty(actor, path)
}
return 0
}
).reduce(Misc.sum());
}
}

View File

@ -1,12 +1,11 @@
import { RdDBaseActorSheet } from "../actor/base-actor-sheet.js"; import { RdDBaseActorSheet } from "../actor/base-actor-sheet.js";
import { ITEM_TYPES } from "../item.js";
import { RdDSheetUtility } from "../rdd-sheet-utility.js"; import { RdDSheetUtility } from "../rdd-sheet-utility.js";
import { RdDUtility } from "../rdd-utility.js"; import { RdDUtility } from "../rdd-utility.js";
import { RdDItemInventaireSheet } from "./sheet-base-inventaire.js"; import { RdDItemInventaireSheet } from "./sheet-base-inventaire.js";
export class RdDConteneurItemSheet extends RdDItemInventaireSheet { export class RdDConteneurItemSheet extends RdDItemInventaireSheet {
static get ITEM_TYPE() { return ITEM_TYPES.conteneur }; static get ITEM_TYPE() { return "conteneur" };
async getData() { async getData() {
const formData = await super.getData(); const formData = await super.getData();

View File

@ -106,7 +106,7 @@ export class RdDItemSigneDraconique extends RdDItem {
} }
static async randomSigneDescription() { static async randomSigneDescription() {
return await RdDRollTables.drawTextFromRollTable("Signes draconiques", {toChat:false}); return await RdDRollTables.drawTextFromRollTable("Signes draconiques", false);
} }
} }

View File

@ -1,29 +0,0 @@
import { RdDTextEditor } from "../apps/rdd-text-roll-editor.js";
import { SYSTEM_RDD } from "../constants.js";
import { Misc } from "../misc.js";
export class RdDJournalSheet extends JournalTextPageSheet {
static register() {
DocumentSheetConfig.unregisterSheet(JournalEntryPage, "core", JournalTextPageSheet)
DocumentSheetConfig.registerSheet(JournalEntryPage,
SYSTEM_RDD,
RdDJournalSheet, {
types: ["text"],
makeDefault: true,
});
}
async getData(options) {
const journalData = await super.getData(options);
journalData.editor.content = await RdDTextEditor.enrichHTML(journalData.document.text.content, this.object)
return journalData
}
activateListeners(html) {
super.activateListeners(html);
html.find('.roll-text').click(async event => await RdDTextEditor.rollText(event, this.actor))
html.find('.chat-roll-text').click(async event => await RdDTextEditor.chatRollText(event))
}
}

View File

@ -2,11 +2,10 @@ import { RdDBaseActor } from "./actor/base-actor.js";
import { LOG_HEAD, SYSTEM_RDD } from "./constants.js"; import { LOG_HEAD, SYSTEM_RDD } from "./constants.js";
import { Grammar } from "./grammar.js"; import { Grammar } from "./grammar.js";
import { Monnaie } from "./item-monnaie.js"; import { Monnaie } from "./item-monnaie.js";
import { RdDItem, ITEM_TYPES, ACTOR_TYPES } from "./item.js"; import { RdDItem, ITEM_TYPES } from "./item.js";
import { RdDTimestamp } from "./time/rdd-timestamp.js"; import { RdDTimestamp } from "./time/rdd-timestamp.js";
import { RdDRaretes } from "./item/raretes.js"; import { RdDRaretes } from "./item/raretes.js";
import { VOIES_DRACONIC } from "./item-sort.js"; import { VOIES_DRACONIC } from "./item-sort.js";
import { SystemCompendiums } from "./settings/system-compendiums.js";
class Migration { class Migration {
get code() { return "sample"; } get code() { return "sample"; }
@ -567,27 +566,6 @@ class _12_0_26_MigrationVoieSorts extends Migration {
} }
} }
class _12_0_32_MigrationRaces extends Migration {
get code() { return "migration-races" }
get version() { return "12.0.32" }
async migrate() {
const races = await SystemCompendiums.getItems("races", ITEM_TYPES.race)
await game.actors.filter(it => it.type == ACTOR_TYPES.personnage).forEach(async actor => {
if (actor.itemTypes[ITEM_TYPES.race].length == 0) {
const raceName = actor.system.race ?? 'Humain'
const race = races.find(it => Grammar.equalsInsensitive(raceName, it.name))
if (race) {
console.log(this.code, `Adding race ${race.name} to actor ${actor.name}`)
actor.createEmbeddedDocuments('Item', [race])
console.log(this.code, `Neutralizing race ${race.name} adjustments for actor ${actor.name}`)
actor._applyRaceCaracUpdates(race, -1)
}
}
})
}
}
export class Migrations { export class Migrations {
static getMigrations() { static getMigrations() {
return [ return [
@ -607,8 +585,7 @@ export class Migrations {
new _10_7_19_CategorieCompetenceCreature(), new _10_7_19_CategorieCompetenceCreature(),
new _10_7_19_PossessionsEntiteVictime(), new _10_7_19_PossessionsEntiteVictime(),
new _11_2_20_MigrationAstrologie(), new _11_2_20_MigrationAstrologie(),
new _12_0_26_MigrationVoieSorts(), new _12_0_26_MigrationVoieSorts()
new _12_0_32_MigrationRaces(),
]; ];
} }

View File

@ -1,12 +1,5 @@
import { Grammar } from "./grammar.js"; import { Grammar } from "./grammar.js";
const DEFAULT_FIND_OPTIONS = {
mapper: it => it.name,
preFilter: it => true,
description: 'valeur',
onMessage: m => ui.notifications.info(m)
}
/** /**
* This class is intended as a placeholder for utility methods unrelated * This class is intended as a placeholder for utility methods unrelated
* to actual classes of the game system or of FoundryVTT * to actual classes of the game system or of FoundryVTT
@ -29,7 +22,7 @@ export class Misc {
const isPositiveNumber = value != NaN && value > 0; const isPositiveNumber = value != NaN && value > 0;
return isPositiveNumber ? "+" + number : number return isPositiveNumber ? "+" + number : number
} }
static modulo(n, m) { static modulo(n, m) {
return ((n % m) + m) % m; return ((n % m) + m) % m;
} }
@ -172,7 +165,7 @@ export class Misc {
static firstConnectedGM() { static firstConnectedGM() {
if (foundry.utils.isNewerVersion(game.release.version, '12.0')) { if (foundry.utils.isNewerVersion(game.release.version, '12.0')) {
return game.users.activeGM return game.users.activeGM
} }
return game.users.find(u => u.isGM && u.active); return game.users.find(u => u.isGM && u.active);
} }
@ -204,7 +197,7 @@ export class Misc {
} }
static isFirstOwnerPlayer(document) { static isFirstOwnerPlayer(document) {
if (!document.testUserPermission) { if (!document.testUserPermission){
return false return false
} }
return game.users.find(u => document.testUserPermission(u, CONST.DOCUMENT_OWNERSHIP_LEVELS.OWNER)) == game.user return game.users.find(u => document.testUserPermission(u, CONST.DOCUMENT_OWNERSHIP_LEVELS.OWNER)) == game.user
@ -216,10 +209,6 @@ export class Misc {
static isFirstConnectedGM() { static isFirstConnectedGM() {
return game.user == Misc.firstConnectedGM(); return game.user == Misc.firstConnectedGM();
} }
static hasConnectedGM() {
return Misc.firstConnectedGM();
}
static firstConnectedGMId() { static firstConnectedGMId() {
return Misc.firstConnectedGM()?.id; return Misc.firstConnectedGM()?.id;
@ -237,7 +226,13 @@ export class Misc {
/* -------------------------------------------- */ /* -------------------------------------------- */
static findFirstLike(value, elements, options = {}) { static findFirstLike(value, elements, options = {}) {
options = foundry.utils.mergeObject(DEFAULT_FIND_OPTIONS, options, { overwrite: true, inplace: false }); options = foundry.utils.mergeObject({
mapper: it => it.name,
preFilter: it => true,
description: 'valeur',
onMessage: m => ui.notifications.info(m)
}, options);
const subset = this.findAllLike(value, elements, options); const subset = this.findAllLike(value, elements, options);
if (subset.length == 0) { if (subset.length == 0) {
console.log(`Aucune ${options.description} pour ${value}`); console.log(`Aucune ${options.description} pour ${value}`);
@ -256,7 +251,13 @@ export class Misc {
} }
static findAllLike(value, elements, options = {}) { static findAllLike(value, elements, options = {}) {
options = foundry.utils.mergeObject(DEFAULT_FIND_OPTIONS, options, { overwrite: true, inplace: false }); options = foundry.utils.mergeObject({
mapper: it => it.name,
preFilter: it => true,
description: 'valeur',
onMessage: m => ui.notifications.info(m)
}, options);
if (!value) { if (!value) {
options.onMessage(`Pas de ${options.description} correspondant à une valeur vide`); options.onMessage(`Pas de ${options.description} correspondant à une valeur vide`);
return []; return [];

View File

@ -1,8 +1,48 @@
/* -------------------------------------------- */
import { Misc } from "./misc.js"; import { Misc } from "./misc.js";
const matchOperations = new RegExp(/@(\w*){([\w\-]+)}/ig);
const matchOperationTerms = new RegExp(/@(\w*){([\w\-]+)}/i);
/* -------------------------------------------- */
export class RdDAlchimie { export class RdDAlchimie {
static getDifficulte(termes) {
let elements = termes.split('-'); /* -------------------------------------------- */
static processManipulation(recette, actorId = undefined) {
let manip = recette.system.manipulation;
let matchArray = manip.match(matchOperations);
if (matchArray) {
for (let matchStr of matchArray) {
let result = matchStr.match(matchOperationTerms);
if (result[1] && result[2]) {
let commande = Misc.upperFirst(result[1]);
let replacement = this[`_alchimie${commande}`](recette, result[2], actorId);
manip = manip.replace(result[0], replacement);
}
}
}
recette.system.manipulation_update = manip;
}
/* -------------------------------------------- */
static _alchimieCouleur(recette, couleurs, actorId) {
return RdDAlchimie._alchimieLink(recette, couleurs, actorId, 'couleur', 'Température');
}
/* -------------------------------------------- */
static _alchimieConsistance(recette, consistances, actorId) {
return RdDAlchimie._alchimieLink(recette, consistances, actorId, 'consistance', 'Consistance');
}
static _alchimieLink(recette, termes, actorId, tacheAlchimie, labelTache) {
const difficulte = RdDAlchimie.getDifficulte(termes);
const link = actorId ? ` <a data-recette-id="${recette._id}" data-actor-id="${actorId}" data-alchimie-tache="${tacheAlchimie}" data-alchimie-data="${termes}">` : '';
const endLink = actorId ? '</a>' : '';
return `<span class="alchimie-tache">${link}${labelTache} ${termes} (${difficulte})${endLink}</span>`;
}
/* -------------------------------------------- */
static getDifficulte(aspects) {
let elements = aspects.split('-');
let composantes = elements.length; let composantes = elements.length;
let distincts = Object.keys(Misc.classifyFirst(elements, it => it)).length; let distincts = Object.keys(Misc.classifyFirst(elements, it => it)).length;
if (distincts == 1) { if (distincts == 1) {
@ -18,4 +58,5 @@ export class RdDAlchimie {
} }
return 'intellect'; return 'intellect';
} }
} }

View File

@ -3,98 +3,42 @@ import { Misc } from "./misc.js";
const TABLE_CARACTERISTIQUES_DERIVEES = { const TABLE_CARACTERISTIQUES_DERIVEES = {
// xp: coût pour passer du niveau inférieur à ce niveau // 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 }, 1: { xp: 3, 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 }, 2: { xp: 3, 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' }, 3: { xp: 4, 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' }, 4: { xp: 4, 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' }, 5: { xp: 5, 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' }, 6: { xp: 5, 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é' }, 7: { xp: 6, 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é' }, 8: { xp: 6, 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' }, 9: { xp: 7, 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' }, 10: { xp: 7, 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' }, 11: { xp: 8, 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é' }, 12: { xp: 8, 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' }, 13: { xp: 9, 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' }, 14: { xp: 9, 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' }, 15: { xp: 10, 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' }, 16: { xp: 20, 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 }, 17: { xp: 30, 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 }, 18: { xp: 40, 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 }, 19: { xp: 50, 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 }, 20: { xp: 60, 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 }, 21: { xp: 70, 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 }, 22: { xp: 80, 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 }, 23: { xp: 90, 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 }, 24: { xp: 100, 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 }, 25: { xp: 110, 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 }, 26: { xp: 120, 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 }, 27: { xp: 130, 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 }, 28: { xp: 140, 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 }, 29: { xp: 150, 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 }, 30: { xp: 160, 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 }, 31: { xp: 170, 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 } 32: { xp: 180, poids: "1501-2000", poidsMin: 1501, poidsMax: 2000, plusdom: +11, sconst: 10, sust: 17 }
}; };
export const LIST_CARAC_PERSONNAGE = {
'taille': { code: 'taille', label: 'Taille', isCarac: true, path: 'system.carac.taille.value' },
'apparence': { code: 'apparence', label: 'Apparence', isCarac: true, path: 'system.carac.apparence.value' },
'constitution': { code: 'constitution', label: 'Constitution', isCarac: true, path: 'system.carac.constitution.value' },
'force': { code: 'force', label: 'Force', isCarac: true, path: 'system.carac.force.value' },
'agilite': { code: 'agilite', label: 'Agilité', isCarac: true, path: 'system.carac.agilite.value' },
'dexterite': { code: 'dexterite', label: 'Dextérité', isCarac: true, path: 'system.carac.dexterite.value' },
'vue': { code: 'vue', label: 'Vue', isCarac: true, path: 'system.carac.vue.value' },
'ouie': { code: 'ouie', label: 'Ouïe', isCarac: true, path: 'system.carac.ouie.value' },
'odoratgout': { code: 'odoratgout', label: 'Odorat-Goût', isCarac: true, path: 'system.carac.odoratgout.value' },
'volonte': { code: 'volonte', label: 'Volonté', isCarac: true, path: 'system.carac.volonte.value' },
'intellect': { code: 'intellect', label: 'Intellect', isCarac: true, path: 'system.carac.intellect.value' },
'empathie': { code: 'empathie', label: 'Empathie', isCarac: true, path: 'system.carac.empathie.value' },
'reve': { code: 'reve', label: 'Rêve', isCarac: true, path: 'system.carac.reve.value' },
'chance': { code: 'chance', label: 'Chance', isCarac: true, path: 'system.carac.chance.value' },
'protection': { code: 'protection', label: 'Protection naturelle', isCarac: false, path: 'system.attributs.protection.value' },
'beaute': { code: 'beaute', label: 'Beauté', isCarac: false, path: 'system.background.beaute.value' }
}
export const LIST_CARAC_AUTRES = {
'perception': { code: 'perception', label: 'Perception', path: 'system.carac.perception.value' },
}
const LIST_CARAC_DERIVEE = {
'melee': { code: "melee", label: 'Mêlée', path: 'system.carac.melee.value' },
'tir': { code: "tir", label: 'Tir', path: 'system.carac.tir.value' },
'lancer': { code: "lancer", label: 'Lancer', path: 'system.carac.lancer.value' },
'derobee': { code: "derobee", label: 'Dérobée', path: 'system.carac.derobee.value' },
'chance-actuelle': { code: "chance-actuelle", label: 'Chance actuelle', path: 'system.carac.lancer.value' },
'reve-actuel': { code: "reve-actuel", label: 'Rêve actuel', path: 'system.reve.reve.value' },
}
const LIST_CARAC_ROLL = Object.values(LIST_CARAC_PERSONNAGE).filter(it => it.isCarac && it.code != 'taille')
.concat(Object.values(LIST_CARAC_AUTRES))
.concat(Object.values(LIST_CARAC_DERIVEE))
export class RdDCarac { export class RdDCarac {
static caracDetails(name) {
let entry = Misc.findFirstLike(name, LIST_CARAC_ROLL, { mapper: it => it.code, description: 'caractéristique', onMessage: m => { } })
if (entry) {
return entry
}
return Misc.findFirstLike(name, LIST_CARAC_ROLL, { mapper: it => it.label, description: 'caractéristique' })
}
static carac(code) {
return LIST_CARAC_PERSONNAGE[code]
}
static label(code) {
return RdDCarac.carac(code)?.label ?? '---'
}
static caracs(filter = it => it.isCarac) {
return Object.values(LIST_CARAC_PERSONNAGE).filter(filter)
}
static isAgiliteOuDerobee(selectedCarac) { static isAgiliteOuDerobee(selectedCarac) {
return selectedCarac?.label.match(/(Agilité|Dérobée)/); return selectedCarac?.label.match(/(Agilité|Dérobée)/);
} }

View File

@ -228,19 +228,16 @@ export class RdDCombatManager extends Combat {
static $prepareAttaqueArme(infoAttaque) { static $prepareAttaqueArme(infoAttaque) {
const comp = infoAttaque.competences.find(it => Grammar.equalsInsensitive(it.name, infoAttaque.competence)) const comp = infoAttaque.competences.find(it => Grammar.equalsInsensitive(it.name, infoAttaque.competence))
const arme = infoAttaque.arme; const arme = infoAttaque.arme;
const attaque = foundry.utils.duplicate(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)
attaque.action = 'attaque'; attaque.action = 'attaque';
attaque.system.competence = infoAttaque.competence; attaque.system.competence = infoAttaque.competence;
attaque.system.dommagesReels = infoAttaque.dommagesReel; attaque.system.dommagesReels = infoAttaque.dommagesReel;
attaque.system.infoMain = infoAttaque.infoMain; 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 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) attaque.system.initiative = RdDCombatManager.calculInitiative(comp.system.niveau, infoAttaque.carac[comp.system.defaut_carac].value, ajustement);
return attaque return attaque;
} }
/* -------------------------------------------- */ /* -------------------------------------------- */
@ -472,15 +469,15 @@ export class RdDCombat {
/* -------------------------------------------- */ /* -------------------------------------------- */
static registerChatCallbacks(html) { static registerChatCallbacks(html) {
for (let button of [ for (let button of [
'.parer-button', '#parer-button',
'.esquiver-button', '#esquiver-button',
'.particuliere-attaque', '#particuliere-attaque',
'.encaisser-button', '#encaisser-button',
'.appel-chance-defense', '#appel-chance-defense',
'.appel-destinee-defense', '#appel-destinee-defense',
'.appel-chance-attaque', '#appel-chance-attaque',
'.appel-destinee-attaque', '#appel-destinee-attaque',
'.echec-total-attaque', '#echec-total-attaque',
]) { ]) {
html.on("click", button, event => { html.on("click", button, event => {
const rddCombat = RdDCombat.rddCombatForAttackerAndDefender( const rddCombat = RdDCombat.rddCombatForAttackerAndDefender(
@ -539,22 +536,22 @@ export class RdDCombat {
const compId = event.currentTarget.attributes['data-compid']?.value; const compId = event.currentTarget.attributes['data-compid']?.value;
switch (button) { switch (button) {
case '.particuliere-attaque': return await this.choixParticuliere(attackerRoll, event.currentTarget.attributes['data-mode'].value); case '#particuliere-attaque': return await this.choixParticuliere(attackerRoll, event.currentTarget.attributes['data-mode'].value);
case '.parer-button': return this.parade(attackerRoll, armeParadeId); case '#parer-button': return this.parade(attackerRoll, armeParadeId);
case '.esquiver-button': return this.esquive(attackerRoll, compId, competence); case '#esquiver-button': return this.esquive(attackerRoll, compId, competence);
case '0encaisser-button': return this.encaisser(attackerRoll, defenderRoll); case '#encaisser-button': return this.encaisser(attackerRoll, defenderRoll);
case '.echec-total-attaque': return this._onEchecTotal(attackerRoll); case '#echec-total-attaque': return this._onEchecTotal(attackerRoll);
case '.appel-chance-attaque': return this.attacker.rollAppelChance( case '#appel-chance-attaque': return this.attacker.rollAppelChance(
() => this.attaqueChanceuse(attackerRoll), () => this.attaqueChanceuse(attackerRoll),
() => this._onEchecTotal(attackerRoll)); () => this._onEchecTotal(attackerRoll));
case '.appel-chance-defense': return this.defender.rollAppelChance( case '#appel-chance-defense': return this.defender.rollAppelChance(
() => this.defenseChanceuse(attackerRoll, defenderRoll), () => this.defenseChanceuse(attackerRoll, defenderRoll),
() => this.afficherOptionsDefense(attackerRoll, defenderRoll, { defenseChance: true })); () => this.afficherOptionsDefense(attackerRoll, defenderRoll, { defenseChance: true }));
case '.appel-destinee-attaque': return this.attacker.appelDestinee( case '#appel-destinee-attaque': return this.attacker.appelDestinee(
() => this.attaqueSignificative(attackerRoll), () => this.attaqueSignificative(attackerRoll),
() => { }); () => { });
case '.appel-destinee-defense': return this.defender.appelDestinee( case '#appel-destinee-defense': return this.defender.appelDestinee(
() => this.defenseDestinee(defenderRoll), () => this.defenseDestinee(defenderRoll),
() => { }); () => { });
} }
@ -752,6 +749,7 @@ export class RdDCombat {
dialog.render(true); dialog.render(true);
} }
/* -------------------------------------------- */ /* -------------------------------------------- */
_prepareAttaque(competence, arme) { _prepareAttaque(competence, arme) {
let rollData = { let rollData = {
@ -967,6 +965,7 @@ export class RdDCombat {
async _onAttaqueEchec(rollData) { async _onAttaqueEchec(rollData) {
console.log("RdDCombat.onAttaqueEchec >>>", rollData); console.log("RdDCombat.onAttaqueEchec >>>", rollData);
await RdDResolutionTable.displayRollData(rollData, this.attacker, 'chat-resultat-attaque.html'); await RdDResolutionTable.displayRollData(rollData, this.attacker, 'chat-resultat-attaque.html');
} }
/* -------------------------------------------- */ /* -------------------------------------------- */

View File

@ -28,11 +28,9 @@ import { Environnement } from "./environnement.js"
import { RdDActor } from "./actor.js" import { RdDActor } from "./actor.js"
import { RdDBaseActor } from "./actor/base-actor.js" import { RdDBaseActor } from "./actor/base-actor.js"
import { RdDCreature } from "./actor/creature.js"
import { RdDCommerce } from "./actor/commerce.js" import { RdDCommerce } from "./actor/commerce.js"
import { RdDEntite } from "./actor/entite.js" import { RdDEntite } from "./actor/entite.js"
import { RdDVehicule } from "./actor/vehicule.js" import { RdDVehicule } from "./actor/vehicule.js"
import { RdDActorSheet } from "./actor-sheet.js" import { RdDActorSheet } from "./actor-sheet.js"
import { RdDCommerceSheet } from "./actor/commerce-sheet.js" import { RdDCommerceSheet } from "./actor/commerce-sheet.js"
import { RdDCreatureSheet } from "./actor/creature-sheet.js" import { RdDCreatureSheet } from "./actor/creature-sheet.js"
@ -40,7 +38,6 @@ import { RdDActorEntiteSheet } from "./actor/entite-sheet.js"
import { RdDActorVehiculeSheet } from "./actor/vehicule-sheet.js" import { RdDActorVehiculeSheet } from "./actor/vehicule-sheet.js"
import { RdDItem } from "./item.js" import { RdDItem } from "./item.js"
import { RdDItemArmure } from "./item/armure.js"
import { RdDItemBlessure } from "./item/blessure.js" import { RdDItemBlessure } from "./item/blessure.js"
import { RdDItemService } from "./item/service.js" import { RdDItemService } from "./item/service.js"
import { RdDItemMaladie } from "./item/maladie.js" import { RdDItemMaladie } from "./item/maladie.js"
@ -48,11 +45,7 @@ import { RdDItemPoison } from "./item/poison.js"
import { RdDItemSigneDraconique } from "./item/signedraconique.js" import { RdDItemSigneDraconique } from "./item/signedraconique.js"
import { RdDItemQueue } from "./item/queue.js" import { RdDItemQueue } from "./item/queue.js"
import { RdDItemOmbre } from "./item/ombre.js" import { RdDItemOmbre } from "./item/ombre.js"
import { RdDItemSort } from "./item-sort.js"
import { RdDItemTete } from "./item/tete.js"
import { RdDItemRace } from "./item/race.js"
import { RdDItemSouffle } from "./item/souffle.js" import { RdDItemSouffle } from "./item/souffle.js"
import { RdDRencontre } from "./item/rencontre.js" import { RdDRencontre } from "./item/rencontre.js"
import { RdDItemSheet } from "./item-sheet.js" import { RdDItemSheet } from "./item-sheet.js"
@ -64,19 +57,20 @@ import { RdDPlanteItemSheet } from "./item/sheet-plante.js"
import { RdDIngredientItemSheet } from "./item/sheet-ingredient.js" import { RdDIngredientItemSheet } from "./item/sheet-ingredient.js"
import { RdDFauneItemSheet } from "./item/sheet-faune.js" import { RdDFauneItemSheet } from "./item/sheet-faune.js"
import { RdDConteneurItemSheet } from "./item/sheet-conteneur.js" import { RdDConteneurItemSheet } from "./item/sheet-conteneur.js"
import { RdDItemInventaireSheet } from "./item/sheet-base-inventaire.js"
import { RdDSigneDraconiqueItemSheet } from "./item/sheet-signedraconique.js" import { RdDSigneDraconiqueItemSheet } from "./item/sheet-signedraconique.js"
import { RdDItemInventaireSheet } from "./item/sheet-base-inventaire.js"
import { AppAstrologie } from "./sommeil/app-astrologie.js" import { AppAstrologie } from "./sommeil/app-astrologie.js"
import { RdDItemArmure } from "./item/armure.js"
import { AutoAdjustDarkness } from "./time/auto-adjust-darkness.js" import { AutoAdjustDarkness } from "./time/auto-adjust-darkness.js"
import { RdDCreature } from "./actor/creature.js"
import { RdDTMRDialog } from "./rdd-tmr-dialog.js" import { RdDTMRDialog } from "./rdd-tmr-dialog.js"
import { OptionsAvancees } from "./settings/options-avancees.js" import { OptionsAvancees } from "./settings/options-avancees.js"
import { ExportScriptarium } from "./actor/export-scriptarium/export-scriptarium.js" import { ExportScriptarium } from "./actor/export-scriptarium/export-scriptarium.js"
import { AppPersonnageAleatoire } from "./actor/random/app-personnage-aleatoire.js" import { AppPersonnageAleatoire } from "./actor/random/app-personnage-aleatoire.js"
import { RdDActorExportSheet } from "./actor/export-scriptarium/actor-encart-sheet.js" import { RdDActorExportSheet } from "./actor/export-scriptarium/actor-encart-sheet.js"
import { RdDStatBlockParser } from "./apps/rdd-import-stats.js" import { RdDStatBlockParser } from "./apps/rdd-import-stats.js"
import { RdDJournalSheet } from "./journal/journal-sheet.js" import { RdDItemSort } from "./item-sort.js"
import { RdDTextEditor } from "./apps/rdd-text-roll-editor.js" import { RdDItemTete } from "./item/tete.js"
/** /**
* RdD system * RdD system
@ -87,9 +81,9 @@ export class SystemReveDeDragon {
static start() { static start() {
const system = new SystemReveDeDragon() const system = new SystemReveDeDragon()
Hooks.once('init', () => system.onInit()) Hooks.once('init', async () => await system.onInit())
Hooks.once('diceSoNiceReady', (dice3d) => RdDDice.diceSoNiceReady(dice3d)) Hooks.once('diceSoNiceReady', (dice3d) => RdDDice.diceSoNiceReady(dice3d))
Hooks.once('ready', () => system.onReady()) Hooks.once('ready', async () => await system.onReady())
} }
constructor() { constructor() {
@ -105,7 +99,6 @@ export class SystemReveDeDragon {
poison: RdDItemPoison, poison: RdDItemPoison,
queue: RdDItemQueue, queue: RdDItemQueue,
tete: RdDItemTete, tete: RdDItemTete,
race: RdDItemRace,
rencontre: RdDRencontre, rencontre: RdDRencontre,
service: RdDItemService, service: RdDItemService,
signedraconique: RdDItemSigneDraconique, signedraconique: RdDItemSigneDraconique,
@ -123,7 +116,7 @@ export class SystemReveDeDragon {
/* -------------------------------------------- */ /* -------------------------------------------- */
/* Foundry VTT Initialization */ /* Foundry VTT Initialization */
/* -------------------------------------------- */ /* -------------------------------------------- */
onInit() { async onInit() {
game.system.rdd = this game.system.rdd = this
this.AppAstrologie = AppAstrologie this.AppAstrologie = AppAstrologie
@ -142,7 +135,6 @@ export class SystemReveDeDragon {
RdDCalendrier.initSettings() RdDCalendrier.initSettings()
SystemCompendiums.initSettings() SystemCompendiums.initSettings()
DialogChronologie.initSettings() DialogChronologie.initSettings()
EffetsDraconiques.initSettings()
RdDTMRDialog.initSettings() RdDTMRDialog.initSettings()
Environnement.initSettings() Environnement.initSettings()
@ -187,7 +179,7 @@ export class SystemReveDeDragon {
Actors.registerSheet(SYSTEM_RDD, RdDActorVehiculeSheet, { types: ["vehicule"], makeDefault: true }) Actors.registerSheet(SYSTEM_RDD, RdDActorVehiculeSheet, { types: ["vehicule"], makeDefault: true })
Actors.registerSheet(SYSTEM_RDD, RdDActorEntiteSheet, { types: ["entite"], makeDefault: true }) Actors.registerSheet(SYSTEM_RDD, RdDActorEntiteSheet, { types: ["entite"], makeDefault: true })
Items.unregisterSheet("core", ItemSheet) Items.unregisterSheet("core", ItemSheet)
RdDActorExportSheet.init() await RdDActorExportSheet.init()
RdDItemSheet.register(RdDSigneDraconiqueItemSheet) RdDItemSheet.register(RdDSigneDraconiqueItemSheet)
RdDItemSheet.register(RdDRencontreItemSheet) RdDItemSheet.register(RdDRencontreItemSheet)
@ -198,7 +190,6 @@ export class SystemReveDeDragon {
RdDItemSheet.register(RdDIngredientItemSheet) RdDItemSheet.register(RdDIngredientItemSheet)
RdDItemSheet.register(RdDServiceItemSheet) RdDItemSheet.register(RdDServiceItemSheet)
RdDItemSheet.register(RdDBlessureItemSheet) RdDItemSheet.register(RdDBlessureItemSheet)
RdDJournalSheet.register()
Items.registerSheet(SYSTEM_RDD, RdDItemInventaireSheet, { Items.registerSheet(SYSTEM_RDD, RdDItemInventaireSheet, {
types: [ types: [
@ -209,9 +200,8 @@ export class SystemReveDeDragon {
Items.registerSheet(SYSTEM_RDD, RdDItemSheet, { Items.registerSheet(SYSTEM_RDD, RdDItemSheet, {
types: [ types: [
"competence", "competencecreature", "competence", "competencecreature",
"recettealchimique", "musique", "chant", "danse", "jeu", "race", "recettealchimique", "musique", "chant", "danse", "jeu", "recettecuisine", "oeuvre",
"recettecuisine", "oeuvre", "meditation", "meditation", "queue", "ombre", "souffle", "tete", "casetmr", "sort", "sortreserve",
"queue", "ombre", "souffle", "tete", "casetmr", "sort", "sortreserve",
"nombreastral", "tache", "maladie", "poison", "possession", "nombreastral", "tache", "maladie", "poison", "possession",
"tarot", "extraitpoetique", "empoignade" "tarot", "extraitpoetique", "empoignade"
], makeDefault: true ], makeDefault: true

View File

@ -8,7 +8,6 @@ import { RdDCarac } from "./rdd-carac.js";
import { RdDResolutionTable } from "./rdd-resolution-table.js"; import { RdDResolutionTable } from "./rdd-resolution-table.js";
import { ReglesOptionnelles } from "./settings/regles-optionnelles.js"; import { ReglesOptionnelles } from "./settings/regles-optionnelles.js";
import { Grammar } from "./grammar.js"; import { Grammar } from "./grammar.js";
import { ACTOR_TYPES } from "./item.js";
/** /**
* Extend the base Dialog entity to select roll parameters * Extend the base Dialog entity to select roll parameters
@ -63,7 +62,7 @@ export class RdDRoll extends Dialog {
forceDiceResult: -1 forceDiceResult: -1
} }
// Mini patch :Ajout du rêve actuel // Mini patch :Ajout du rêve actuel
if (actor.type == ACTOR_TYPES.personnage) { if (actor.system.type == "personnage") {
defaultRollData.carac["reve-actuel"] = actor.system.reve.reve defaultRollData.carac["reve-actuel"] = actor.system.reve.reve
} }
@ -132,12 +131,11 @@ export class RdDRoll extends Dialog {
console.log('RdDRoll.activateListeners', this.rollData); console.log('RdDRoll.activateListeners', this.rollData);
// Update html, according to rollData // Update html, according to rollData
if (!this.rollData.selectedCarac && this.rollData.competence) { if (this.rollData.competence) {
const defaut_carac = this.rollData.competence.system.defaut_carac
// Set the default carac from the competence item // Set the default carac from the competence item
this.rollData.selectedCarac = this.rollData.carac[this.actor.mapCarac(this.rollData.competence.system.defaut_carac)] this.rollData.selectedCarac = this.rollData.carac[defaut_carac];
} this.html.find("[name='carac']").val(defaut_carac);
if (this.rollData.selectedCarac) {
this.html.find("[name='carac']").val(RdDCarac.caracDetails(this.rollData.selectedCarac.label).code)
} }
if (this.rollData.selectedSort) { if (this.rollData.selectedSort) {
this.setSelectedSort(this.rollData.selectedSort); this.setSelectedSort(this.rollData.selectedSort);
@ -175,7 +173,7 @@ export class RdDRoll extends Dialog {
this.updateRollResult(html); this.updateRollResult(html);
this.html.find("[name='diffLibre']").val(this.rollData.diffLibre); this.html.find("[name='diffLibre']").val(this.rollData.diffLibre);
}); });
this.html.find('.roll-text').change((event) => { this.html.find('.roll-carac-competence').change((event) => {
const competence = event.currentTarget.value const competence = event.currentTarget.value
this.rollData.competence = this.rollData.competences.find(it => Grammar.equalsInsensitive(it.name, competence)) this.rollData.competence = this.rollData.competences.find(it => Grammar.equalsInsensitive(it.name, competence))
this.updateRollResult(html); this.updateRollResult(html);

View File

@ -1,4 +1,3 @@
import { RdDTextEditor } from "./apps/rdd-text-roll-editor.js";
import { CompendiumTable, CompendiumTableHelpers, SystemCompendiums } from "./settings/system-compendiums.js"; import { CompendiumTable, CompendiumTableHelpers, SystemCompendiums } from "./settings/system-compendiums.js";
export class RdDRollTables { export class RdDRollTables {
@ -29,8 +28,8 @@ export class RdDRollTables {
} }
/* -------------------------------------------- */ /* -------------------------------------------- */
static async drawTextFromRollTable(tableName, options = {}) { static async drawTextFromRollTable(tableName, toChat) {
const drawResult = await RdDRollTables.genericGetTableResult(tableName, options.toChat); const drawResult = await RdDRollTables.genericGetTableResult(tableName, toChat);
return drawResult.text; return drawResult.text;
} }
@ -104,7 +103,7 @@ export class RdDRollTables {
static async getMaladresse(options = { toChat: false, arme: false }) { static async getMaladresse(options = { toChat: false, arme: false }) {
return await RdDRollTables.drawTextFromRollTable( return await RdDRollTables.drawTextFromRollTable(
options.arme ? "Maladresse armé" : "Maladresses non armé", options.arme ? "Maladresse armé" : "Maladresses non armé",
options) options.toChat);
} }
} }

View File

@ -176,7 +176,7 @@ export class RdDTMRDialog extends Dialog {
} }
bringSubDialogToTop() { bringSubDialogToTop() {
if (this.subdialog?.bringToTop && this.subdialog?.element && this.subdialog?.element[0]) { if (this.subdialog?.bringToTop && this.subdialog?.element[0]) {
this.subdialog.bringToTop(); this.subdialog.bringToTop();
} }
} }
@ -241,11 +241,10 @@ export class RdDTMRDialog extends Dialog {
this._getTokensRencontres().forEach(t => this._trackToken(t)) this._getTokensRencontres().forEach(t => this._trackToken(t))
this._getTokensSortsReserve().forEach(t => this._trackToken(t)) this._getTokensSortsReserve().forEach(t => this._trackToken(t))
} }
/* -------------------------------------------- */ /* -------------------------------------------- */
updateTokens() { updateTokens() {
this._removeTokens(t => true); this._removeTokens(t => true);
this.allTokens = []
this.loadRencontres(); this.loadRencontres();
this.loadCasesSpeciales(); this.loadCasesSpeciales();
this._createTokens(); this._createTokens();
@ -1134,14 +1133,6 @@ export class RdDTMRDialog extends Dialog {
return tmr; 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) { _removeTokens(filter = it => true) {
this.allTokens.filter(filter).forEach(token => this.pixiTMR.removeToken(token)) this.allTokens.filter(filter).forEach(token => this.pixiTMR.removeToken(token))
@ -1153,7 +1144,7 @@ export class RdDTMRDialog extends Dialog {
return return
} }
if (this.demiReve === token && this.isDemiReveCache()) { if (this.demiReve === token && this.isDemiReveCache()) {
return return;
} }
this.pixiTMR.positionToken(token); this.pixiTMR.positionToken(token);
if (!this.allTokens.includes(token)) { if (!this.allTokens.includes(token)) {

View File

@ -21,8 +21,6 @@ import { RdDCoeur } from "./coeur/rdd-coeur.js";
import { APP_ASTROLOGIE_REFRESH } from "./sommeil/app-astrologie.js"; import { APP_ASTROLOGIE_REFRESH } from "./sommeil/app-astrologie.js";
import { RDD_CONFIG } from "./constants.js"; import { RDD_CONFIG } from "./constants.js";
import { RdDBaseActor } from "./actor/base-actor.js"; import { RdDBaseActor } from "./actor/base-actor.js";
import { RdDCarac } from "./rdd-carac.js";
import { RdDTextEditor } from "./apps/rdd-text-roll-editor.js";
/* -------------------------------------------- */ /* -------------------------------------------- */
// This table starts at 0 -> niveau -10 // This table starts at 0 -> niveau -10
@ -107,7 +105,7 @@ export class RdDUtility {
} }
/* -------------------------------------------- */ /* -------------------------------------------- */
static preloadHandlebarsTemplates() { static async preloadHandlebarsTemplates() {
const templatePaths = [ const templatePaths = [
//Character Sheets //Character Sheets
'systems/foundryvtt-reve-de-dragon/templates/actor-sheet.html', 'systems/foundryvtt-reve-de-dragon/templates/actor-sheet.html',
@ -263,25 +261,8 @@ export class RdDUtility {
'systems/foundryvtt-reve-de-dragon/templates/chat-fabriquer-potion-base.html', 'systems/foundryvtt-reve-de-dragon/templates/chat-fabriquer-potion-base.html',
'systems/foundryvtt-reve-de-dragon/templates/chat-signe-draconique-actor.html' 'systems/foundryvtt-reve-de-dragon/templates/chat-signe-draconique-actor.html'
]; ];
// foundry et options
Handlebars.registerHelper('RDD_CONFIG', path => RDD_CONFIG[path])
Handlebars.registerHelper('linkCompendium', (pack, id, name) => RdDUtility.linkCompendium(pack, id, name));
Handlebars.registerHelper('regle-optionnelle', (option) => ReglesOptionnelles.isUsing(option));
Handlebars.registerHelper('plusMoins', diff => (diff > 0 ? '+' : '') + Math.round(diff))
// Handle v12 removal of this helper
Handlebars.registerHelper('select', function (selected, options) {
const escapedValue = RegExp.escape(Handlebars.escapeExpression(selected));
const rgx = new RegExp(' value=[\"\']' + escapedValue + '[\"\']');
const html = options.fn(this);
return html.replace(rgx, "$& selected");
})
// logic
Handlebars.registerHelper('either', (a, b) => a ?? b); Handlebars.registerHelper('either', (a, b) => a ?? b);
// string manipulation
Handlebars.registerHelper('upperFirst', str => Misc.upperFirst(str ?? 'Null')); Handlebars.registerHelper('upperFirst', str => Misc.upperFirst(str ?? 'Null'));
Handlebars.registerHelper('lowerFirst', str => Misc.lowerFirst(str ?? 'Null')); Handlebars.registerHelper('lowerFirst', str => Misc.lowerFirst(str ?? 'Null'));
Handlebars.registerHelper('uppercase', str => str?.toUpperCase() ?? ''); Handlebars.registerHelper('uppercase', str => str?.toUpperCase() ?? '');
@ -290,58 +271,50 @@ export class RdDUtility {
Handlebars.registerHelper('grammar-apostrophe', (article, str) => Grammar.apostrophe(article, str)); Handlebars.registerHelper('grammar-apostrophe', (article, str) => Grammar.apostrophe(article, str));
Handlebars.registerHelper('grammar-un', str => Grammar.articleIndetermine(str)); Handlebars.registerHelper('grammar-un', str => Grammar.articleIndetermine(str));
Handlebars.registerHelper('grammar-accord', (genre, ...args) => Grammar.accord(genre, args)); Handlebars.registerHelper('grammar-accord', (genre, ...args) => Grammar.accord(genre, args));
Handlebars.registerHelper('json-stringify', object => JSON.stringify(object))
// math Handlebars.registerHelper('RDD_CONFIG', path => RDD_CONFIG[path])
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('computeResolutionScore', (row, col) => RdDResolutionTable.computePercentage(row, col));
Handlebars.registerHelper('computeResolutionChances', (row, col) => RdDResolutionTable.computeChances(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));
// gestion des dates et heures
Handlebars.registerHelper('timestamp-imgSigneHeure', (heure) => { return new Handlebars.SafeString(RdDTimestamp.imgSigneHeure(heure)) }); 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-imgSigne', (heure) => { return new Handlebars.SafeString(RdDTimestamp.imgSigne(heure)) });
Handlebars.registerHelper('timestamp-extract', timestamp => new RdDTimestamp(timestamp).toCalendrier()); Handlebars.registerHelper('timestamp-extract', timestamp => new RdDTimestamp(timestamp).toCalendrier());
Handlebars.registerHelper('timestamp-formulesDuree', () => RdDTimestamp.formulesDuree()); Handlebars.registerHelper('timestamp-formulesDuree', () => RdDTimestamp.formulesDuree());
Handlebars.registerHelper('timestamp-formulesPeriode', () => RdDTimestamp.formulesPeriode()); 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('actor-default', (actorType, ...path) => RdDBaseActor.getDefaultValue(actorType, path.slice(0, -1)));
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('filtreTriCompetences', competences => RdDItemCompetence.triVisible(competences));
Handlebars.registerHelper('experienceLog-topic', topic => ExperienceLog.labelTopic(topic)); Handlebars.registerHelper('linkCompendium', (pack, id, name) => RdDUtility.linkCompendium(pack, id, name));
Handlebars.registerHelper('carac-label', (code) => RdDCarac.label(code))
// 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('uniteQuantite', (itemId, actorId) => RdDUtility.getItem(itemId, actorId)?.getUniteQuantite());
Handlebars.registerHelper('isFieldInventaireModifiable', (type, field) => RdDItem.isFieldInventaireModifiable(type, field)); Handlebars.registerHelper('isFieldInventaireModifiable', (type, field) => RdDItem.isFieldInventaireModifiable(type, field));
// Items
Handlebars.registerHelper('rarete-getChamp', (rarete, field) => RdDRaretes.getChamp(rarete, field)); Handlebars.registerHelper('rarete-getChamp', (rarete, field) => RdDRaretes.getChamp(rarete, field));
// TMRs Handlebars.registerHelper('plusMoins', diff => (diff > 0 ? '+' : '') + Math.round(diff))
Handlebars.registerHelper('caseTmr-label', coord => TMRUtility.getTMRLabel(coord)); Handlebars.registerHelper('experienceLog-topic', topic => ExperienceLog.labelTopic(topic));
Handlebars.registerHelper('caseTmr-type', coord => TMRUtility.getTMRType(coord));
Handlebars.registerHelper('typeTmr-name', type => TMRUtility.typeTmrName(type));
Handlebars.registerHelper('effetRencontre-name', coord => TMRUtility.typeTmrName(coord));
loadTemplates(templatePaths); // Handle v12 removal of this helper
Handlebars.registerHelper('select', function (selected, options) {
const escapedValue = RegExp.escape(Handlebars.escapeExpression(selected));
const rgx = new RegExp(' value=[\"\']' + escapedValue + '[\"\']');
const html = options.fn(this);
return html.replace(rgx, "$& selected");
});
return loadTemplates(templatePaths);
} }
static getItem(itemId, actorId = undefined) { static getItem(itemId, actorId = undefined) {
@ -697,7 +670,6 @@ export class RdDUtility {
RdDCombat.registerChatCallbacks(html) RdDCombat.registerChatCallbacks(html)
RdDEmpoignade.registerChatCallbacks(html) RdDEmpoignade.registerChatCallbacks(html)
RdDCoeur.registerChatCallbacks(html) RdDCoeur.registerChatCallbacks(html)
RdDTextEditor.registerChatCallbacks(html)
// Gestion spécifique message passeurs // Gestion spécifique message passeurs
html.on("click", '.tmr-passeur-coord a', event => { html.on("click", '.tmr-passeur-coord a', event => {
@ -936,7 +908,7 @@ export class RdDUtility {
/*-------------------------------------------- */ /*-------------------------------------------- */
static checkThanatosXP(compName) { static checkThanatosXP(compName) {
if (compName.includes('Thanatos')) { if (compName.includes('Thanatos')) {
let message = "Vous avez mis des points d'Expérience en Thanatos !<br>Vous devez réduire manuellement d'un même montant d'XP une autre compétence Draconique."; let message = "Vous avez mis des points d'Expérience dans la Voie de Thanatos !<br>Vous devez réduire manuellement d'un même montant d'XP une autre compétence Draconique.";
ChatMessage.create({ ChatMessage.create({
whisper: ChatUtility.getUserAndGMs(), whisper: ChatUtility.getUserAndGMs(),
content: message content: message

View File

@ -168,7 +168,7 @@ export class RollDataAjustements {
// s'assurer de la correction des infos rollData // s'assurer de la correction des infos rollData
foundry.utils.mergeObject(rollData, { ajustements: {}, use: {} }, { overwrite: false }) foundry.utils.mergeObject(rollData, { ajustements: {}, use: {} }, { overwrite: false })
for (let key in referenceAjustements) { for (var key in referenceAjustements) {
const reference = referenceAjustements[key]; const reference = referenceAjustements[key];
rollData.ajustements[key] = { rollData.ajustements[key] = {
visible: reference.isVisible && reference.isVisible(rollData, actor), visible: reference.isVisible && reference.isVisible(rollData, actor),

View File

@ -15,7 +15,6 @@ const CONFIGURABLE_COMPENDIUMS = {
'ombres-de-thanatos': { label: "Ombres de Thanatos", type: "Item" }, 'ombres-de-thanatos': { label: "Ombres de Thanatos", type: "Item" },
'souffles-de-dragon': { label: "Souffles de Dragon", type: "Item" }, 'souffles-de-dragon': { label: "Souffles de Dragon", type: "Item" },
'tarot-draconique': { label: "Tarots draconiques", type: "Item" }, 'tarot-draconique': { label: "Tarots draconiques", type: "Item" },
'races': { label: "Races", type: "Item" },
'rencontres': { label: "Rencontres dans les TMR", type: "Item" }, 'rencontres': { label: "Rencontres dans les TMR", type: "Item" },
'tetes-de-dragon-pour-haut-revants': { label: "Têtes de dragons (haut-rêvant)", type: "Item" }, 'tetes-de-dragon-pour-haut-revants': { label: "Têtes de dragons (haut-rêvant)", type: "Item" },
'tetes-de-dragon-pour-tous-personnages': { label: "Têtes de dragons (tous)", type: "Item" }, 'tetes-de-dragon-pour-tous-personnages': { label: "Têtes de dragons (tous)", type: "Item" },

View File

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

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 { export class TMRAnimations {
static withAnimation(sprite, pixiTMR, ...animations) { 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 { Draconique } from "./draconique.js";
import { PixiTMR } from "./pixi-tmr.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 { 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 '' } type() { return '' }
match(item) { return false; } match(item) { return false; }
manualMessage() { return false } manualMessage() { return false }
async onActorCreateOwned(actor, item) { } async onActorCreateOwned(actor, item) { }
code() { return 'tmr' } 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) { createSprite(pixiTMR) {
const img = PixiTMR.getImgFromCode(this.code()) const img = PixiTMR.getImgFromCode(this.code())

View File

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

View File

@ -184,9 +184,12 @@ export class PixiTMR {
const coordTMR = TMRUtility.oddqToCoordTMR(oddq); const coordTMR = TMRUtility.oddqToCoordTMR(oddq);
const tmr = TMRUtility.getTMR(coordTMR) const tmr = TMRUtility.getTMR(coordTMR)
if (tmr) { 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) { computeEventOddq(event) {

View File

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

View File

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

View File

@ -125,39 +125,39 @@ system:
carac: carac:
taille: taille:
type: number type: number
value: 23 value: '23'
label: Taille label: Taille
xp: 0 xp: 0
derivee: false derivee: false
constitution: constitution:
type: number type: number
value: 18 value: '18'
label: Constitution label: Constitution
xp: 0 xp: '0'
derivee: false derivee: false
force: force:
type: number type: number
value: 18 value: '18'
label: Force label: Force
xp: 0 xp: '0'
derivee: false derivee: false
perception: perception:
type: number type: number
value: 11 value: '11'
label: Perception label: Perception
xp: 0 xp: '0'
derivee: false derivee: false
volonte: volonte:
type: number type: number
value: 7 value: '7'
label: Volonté label: Volonté
xp: 0 xp: '0'
derivee: false derivee: false
reve: reve:
type: number type: number
value: 8 value: '8'
label: Rêve label: Rêve
xp: 0 xp: '0'
derivee: false derivee: false
sante: sante:
vie: vie:
@ -190,12 +190,12 @@ system:
derivee: true derivee: true
encombrement: encombrement:
type: number type: number
value: 20 value: '20'
label: Encombrement label: Encombrement
derivee: false derivee: false
protection: protection:
type: number type: number
value: 4 value: '4'
label: Protection label: Protection
derivee: false derivee: false
compteurs: compteurs:

View File

@ -155,37 +155,37 @@ system:
carac: carac:
taille: taille:
type: number type: number
value: 3 value: '3'
label: Taille label: Taille
xp: 0 xp: 0
derivee: false derivee: false
constitution: constitution:
type: number type: number
value: 12 value: '12'
label: Constitution label: Constitution
xp: 0 xp: 0
derivee: false derivee: false
force: force:
type: number type: number
value: 7 value: '7'
label: Force label: Force
xp: 0 xp: 0
derivee: false derivee: false
perception: perception:
type: number type: number
value: 15 value: '15'
label: Perception label: Perception
xp: 0 xp: 0
derivee: false derivee: false
volonte: volonte:
type: number type: number
value: 10 value: '10'
label: Volonté label: Volonté
xp: 0 xp: 0
derivee: false derivee: false
reve: reve:
type: number type: number
value: 7 value: '7'
label: Rêve label: Rêve
xp: 0 xp: 0
derivee: false derivee: false
@ -210,7 +210,7 @@ system:
attributs: attributs:
plusdom: plusdom:
type: number type: number
value: -2 value: '-2'
label: +dom label: +dom
derivee: true derivee: true
vitesse: vitesse:
@ -220,12 +220,12 @@ system:
derivee: true derivee: true
encombrement: encombrement:
type: number type: number
value: 0 value: '0'
label: Encombrement label: Encombrement
derivee: false derivee: false
protection: protection:
type: number type: number
value: -3 value: '-3'
label: Protection label: Protection
derivee: false derivee: false
compteurs: compteurs:
@ -257,8 +257,47 @@ system:
d&eacute;vore.</p> d&eacute;vore.</p>
<h1>Venin</h1> <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: '' race: ''
notesmj: '' notesmj: ''
ownership: ownership:

View File

@ -155,37 +155,37 @@ system:
carac: carac:
taille: taille:
type: number type: number
value: 19 value: '19'
label: Taille label: Taille
xp: 0 xp: 0
derivee: false derivee: false
constitution: constitution:
type: number type: number
value: 18 value: '18'
label: Constitution label: Constitution
xp: 0 xp: 0
derivee: false derivee: false
force: force:
type: number type: number
value: 18 value: '18'
label: Force label: Force
xp: 0 xp: 0
derivee: false derivee: false
perception: perception:
type: number type: number
value: 12 value: '12'
label: Perception label: Perception
xp: 0 xp: 0
derivee: false derivee: false
volonte: volonte:
type: number type: number
value: 4 value: '4'
label: Volonté label: Volonté
xp: 0 xp: 0
derivee: false derivee: false
reve: reve:
type: number type: number
value: 6 value: '6'
label: Rêve label: Rêve
xp: 0 xp: 0
derivee: false derivee: false
@ -220,12 +220,12 @@ system:
derivee: true derivee: true
encombrement: encombrement:
type: number type: number
value: 0 value: '0'
label: Encombrement label: Encombrement
derivee: false derivee: false
protection: protection:
type: number type: number
value: 2 value: '2'
label: Protection label: Protection
derivee: false derivee: false
compteurs: compteurs:

View File

@ -126,37 +126,37 @@ system:
carac: carac:
taille: taille:
type: number type: number
value: 33 value: '33'
label: Taille label: Taille
xp: 0 xp: 0
derivee: false derivee: false
constitution: constitution:
type: number type: number
value: 26 value: '26'
label: Constitution label: Constitution
xp: 0 xp: 0
derivee: false derivee: false
force: force:
type: number type: number
value: 26 value: '26'
label: Force label: Force
xp: 0 xp: 0
derivee: false derivee: false
perception: perception:
type: number type: number
value: 13 value: '13'
label: Perception label: Perception
xp: 0 xp: 0
derivee: false derivee: false
volonte: volonte:
type: number type: number
value: 3 value: '3'
label: Volonté label: Volonté
xp: 0 xp: 0
derivee: false derivee: false
reve: reve:
type: number type: number
value: 10 value: '10'
label: Rêve label: Rêve
xp: 0 xp: 0
derivee: false derivee: false
@ -191,12 +191,12 @@ system:
derivee: true derivee: true
encombrement: encombrement:
type: number type: number
value: 0 value: '0'
label: Encombrement label: Encombrement
derivee: false derivee: false
protection: protection:
type: number type: number
value: 2 value: '2'
label: Protection label: Protection
derivee: false derivee: false
compteurs: compteurs:

View File

@ -154,37 +154,37 @@ system:
carac: carac:
taille: taille:
type: number type: number
value: 20 value: '20'
label: Taille label: Taille
xp: 0 xp: 0
derivee: false derivee: false
constitution: constitution:
type: number type: number
value: 15 value: '15'
label: Constitution label: Constitution
xp: 0 xp: 0
derivee: false derivee: false
force: force:
type: number type: number
value: 16 value: '16'
label: Force label: Force
xp: 0 xp: 0
derivee: false derivee: false
perception: perception:
type: number type: number
value: 13 value: '13'
label: Perception label: Perception
xp: 0 xp: 0
derivee: false derivee: false
volonte: volonte:
type: number type: number
value: 9 value: '9'
label: Volonté label: Volonté
xp: 0 xp: 0
derivee: false derivee: false
reve: reve:
type: number type: number
value: 10 value: '10'
label: Rêve label: Rêve
xp: 0 xp: 0
derivee: false derivee: false
@ -219,12 +219,12 @@ system:
derivee: true derivee: true
encombrement: encombrement:
type: number type: number
value: 0 value: '0'
label: Encombrement label: Encombrement
derivee: false derivee: false
protection: protection:
type: number type: number
value: 1 value: '1'
label: Protection label: Protection
derivee: false derivee: false
compteurs: compteurs:

View File

@ -183,37 +183,37 @@ system:
carac: carac:
taille: taille:
type: number type: number
value: 7 value: '7'
label: Taille label: Taille
xp: 0 xp: 0
derivee: false derivee: false
constitution: constitution:
type: number type: number
value: 12 value: '12'
label: Constitution label: Constitution
xp: 0 xp: 0
derivee: false derivee: false
force: force:
type: number type: number
value: 11 value: '11'
label: Force label: Force
xp: 0 xp: 0
derivee: false derivee: false
perception: perception:
type: number type: number
value: 14 value: '14'
label: Perception label: Perception
xp: 0 xp: 0
derivee: false derivee: false
volonte: volonte:
type: number type: number
value: 8 value: '8'
label: Volonté label: Volonté
xp: 0 xp: 0
derivee: false derivee: false
reve: reve:
type: number type: number
value: 15 value: '15'
label: Rêve label: Rêve
xp: 0 xp: 0
derivee: false derivee: false
@ -248,12 +248,12 @@ system:
derivee: true derivee: true
encombrement: encombrement:
type: number type: number
value: 0 value: '0'
label: Encombrement label: Encombrement
derivee: false derivee: false
protection: protection:
type: number type: number
value: 0 value: '0'
label: Protection label: Protection
derivee: false derivee: false
compteurs: compteurs:

View File

@ -153,37 +153,37 @@ system:
carac: carac:
taille: taille:
type: number type: number
value: 21 value: '21'
label: Taille label: Taille
xp: 0 xp: 0
derivee: false derivee: false
constitution: constitution:
type: number type: number
value: 17 value: '17'
label: Constitution label: Constitution
xp: 0 xp: 0
derivee: false derivee: false
force: force:
type: number type: number
value: 16 value: '16'
label: Force label: Force
xp: 0 xp: 0
derivee: false derivee: false
perception: perception:
type: number type: number
value: 12 value: '12'
label: Perception label: Perception
xp: 0 xp: 0
derivee: false derivee: false
volonte: volonte:
type: number type: number
value: 12 value: '12'
label: Volonté label: Volonté
xp: 0 xp: 0
derivee: false derivee: false
reve: reve:
type: number type: number
value: 12 value: '12'
label: Rêve label: Rêve
xp: 0 xp: 0
derivee: false derivee: false
@ -218,12 +218,12 @@ system:
derivee: true derivee: true
encombrement: encombrement:
type: number type: number
value: 18 value: '18'
label: Encombrement label: Encombrement
derivee: false derivee: false
protection: protection:
type: number type: number
value: 1 value: '1'
label: Protection label: Protection
derivee: false derivee: false
compteurs: compteurs:

View File

@ -126,37 +126,37 @@ system:
carac: carac:
taille: taille:
type: number type: number
value: 25 value: '25'
label: Taille label: Taille
xp: 0 xp: 0
derivee: false derivee: false
constitution: constitution:
type: number type: number
value: 18 value: '18'
label: Constitution label: Constitution
xp: 0 xp: 0
derivee: false derivee: false
force: force:
type: number type: number
value: 20 value: '20'
label: Force label: Force
xp: 0 xp: 0
derivee: false derivee: false
perception: perception:
type: number type: number
value: 12 value: '12'
label: Perception label: Perception
xp: 0 xp: 0
derivee: false derivee: false
volonte: volonte:
type: number type: number
value: 8 value: '8'
label: Volonté label: Volonté
xp: 0 xp: 0
derivee: false derivee: false
reve: reve:
type: number type: number
value: 10 value: '10'
label: Rêve label: Rêve
xp: 0 xp: 0
derivee: false derivee: false
@ -191,12 +191,12 @@ system:
derivee: true derivee: true
encombrement: encombrement:
type: number type: number
value: 22 value: '22'
label: Encombrement label: Encombrement
derivee: false derivee: false
protection: protection:
type: number type: number
value: 2 value: '2'
label: Protection label: Protection
derivee: false derivee: false
compteurs: compteurs:

View File

@ -153,37 +153,37 @@ system:
carac: carac:
taille: taille:
type: number type: number
value: 6 value: '6'
label: Taille label: Taille
xp: 0 xp: 0
derivee: false derivee: false
constitution: constitution:
type: number type: number
value: 10 value: '10'
label: Constitution label: Constitution
xp: 0 xp: 0
derivee: false derivee: false
force: force:
type: number type: number
value: 10 value: '10'
label: Force label: Force
xp: 0 xp: 0
derivee: false derivee: false
perception: perception:
type: number type: number
value: 11 value: '11'
label: Perception label: Perception
xp: 0 xp: 0
derivee: false derivee: false
volonte: volonte:
type: number type: number
value: 8 value: '8'
label: Volonté label: Volonté
xp: 0 xp: 0
derivee: false derivee: false
reve: reve:
type: number type: number
value: 8 value: '8'
label: Rêve label: Rêve
xp: 0 xp: 0
derivee: false derivee: false
@ -218,12 +218,12 @@ system:
derivee: true derivee: true
encombrement: encombrement:
type: number type: number
value: 0 value: '0'
label: Encombrement label: Encombrement
derivee: false derivee: false
protection: protection:
type: number type: number
value: -1 value: '-1'
label: Protection label: Protection
derivee: false derivee: false
compteurs: compteurs:

View File

@ -126,37 +126,37 @@ system:
carac: carac:
taille: taille:
type: number type: number
value: 7 value: '7'
label: Taille label: Taille
xp: 0 xp: 0
derivee: false derivee: false
constitution: constitution:
type: number type: number
value: 9 value: '9'
label: Constitution label: Constitution
xp: 0 xp: 0
derivee: false derivee: false
force: force:
type: number type: number
value: 11 value: '11'
label: Force label: Force
xp: 0 xp: 0
derivee: false derivee: false
perception: perception:
type: number type: number
value: 10 value: '10'
label: Perception label: Perception
xp: 0 xp: 0
derivee: false derivee: false
volonte: volonte:
type: number type: number
value: 3 value: '3'
label: Volonté label: Volonté
xp: 0 xp: 0
derivee: false derivee: false
reve: reve:
type: number type: number
value: 2 value: '2'
label: Rêve label: Rêve
xp: 0 xp: 0
derivee: false derivee: false
@ -184,19 +184,19 @@ system:
value: '+0' value: '+0'
label: +dom label: +dom
derivee: true derivee: true
encombrement:
type: number
value: 0
label: Encombrement
derivee: false
vitesse: vitesse:
type: string type: string
value: 12/28 value: 12/28
label: Vitesse label: Vitesse
derivee: true derivee: true
encombrement:
type: number
value: '0'
label: Encombrement
derivee: false
protection: protection:
type: number type: number
value: 4 value: '4'
label: Protection label: Protection
derivee: false derivee: false
compteurs: compteurs:
@ -207,19 +207,67 @@ system:
value: 0 value: 0
label: Sur-encombrement label: Sur-encombrement
description: >- description: >-
<h1>Description</h1><p>Description Le chrasme (prononcer krasme) est une <h1>Description</h1>
sorte de cafard géant à carapace de crabe aux jointures poilues. Il mesure
en moyenne 1 m de haut sur 1m50 de long, et peut peser jusquà 50 kg. Doté <p>Description Le chrasme (prononcer krasme) est une sorte de cafard
de mandibules acérées et puissantes, il est redouté pour son venin g&eacute;ant &agrave; carapace de crabe aux jointures poilues. Il mesure en
mortel.</p><h1>Mœurs</h1><p>Le chrasme vit dans les lieux sombres, cavernes moyenne 1 m de haut sur 1m50 de long, et peut peser jusqu&rsquo;&agrave; 50
et souterrains, où il se nourrit de tout. Paranos le Moindre affirme quà kg. Dot&eacute; de mandibules ac&eacute;r&eacute;es et puissantes, il est
défaut dune meilleure chère, il peut même se sustenter de cailloux. Il redout&eacute; pour son venin mortel.</p>
déteste la lumière comme son cousin de petite taille, mais a toutefois un
comportement différent: au lieu de fuir, il entre dans une rage féroce et se <h1>M&oelig;urs</h1>
rue sur le porteur de lumière pour le réduire en charpie. Savez-vous, cher
Paranos, que vous nous faites un peu peur <p>Le chrasme vit dans les lieux sombres, cavernes et souterrains, o&ugrave;
?</p><h1>Venin</h1><p>@UUID[Compendium.foundryvtt-reve-de-dragon.maladies-et-poisons.Item.cFMUtU6LZG0mKeDl]{Venin il se nourrit de tout. Paranos le Moindre affirme qu&rsquo;&agrave;
de chrasme}</p><p></p> d&eacute;faut d&rsquo;une meilleure ch&egrave;re, il peut m&ecirc;me se
sustenter de cailloux. Il d&eacute;teste la lumi&egrave;re comme son cousin
de petite taille, mais a toutefois un comportement diff&eacute;rent: au lieu
de fuir, il entre dans une rage f&eacute;roce et se rue sur le porteur de
lumi&egrave;re pour le r&eacute;duire en charpie. Savez-vous, cher Paranos,
que vous nous faites un peu peur ?</p>
<h1>Venin</h1>
<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: '' race: ''
notesmj: '' notesmj: ''
ownership: ownership:
@ -302,13 +350,7 @@ prototypeToken:
texture: null texture: null
_stats: _stats:
systemId: foundryvtt-reve-de-dragon systemId: foundryvtt-reve-de-dragon
systemVersion: 12.0.32 systemVersion: 12.0.22
coreVersion: '12.331' coreVersion: '12.331'
createdTime: null
modifiedTime: 1736537299708
lastModifiedBy: Hp9ImM4o9YRTSdfu
compendiumSource: null
duplicateSource: null
flags: {}
_key: '!actors!yL1XStIKWxGnhKvR' _key: '!actors!yL1XStIKWxGnhKvR'

View File

@ -155,37 +155,37 @@ system:
carac: carac:
taille: taille:
type: number type: number
value: 20 value: '20'
label: Taille label: Taille
xp: 0 xp: 0
derivee: false derivee: false
constitution: constitution:
type: number type: number
value: 18 value: '18'
label: Constitution label: Constitution
xp: 0 xp: 0
derivee: false derivee: false
force: force:
type: number type: number
value: 16 value: '16'
label: Force label: Force
xp: 0 xp: 0
derivee: false derivee: false
perception: perception:
type: number type: number
value: 13 value: '13'
label: Perception label: Perception
xp: 0 xp: 0
derivee: false derivee: false
volonte: volonte:
type: number type: number
value: 7 value: '7'
label: Volonté label: Volonté
xp: 0 xp: 0
derivee: false derivee: false
reve: reve:
type: number type: number
value: 9 value: '9'
label: Rêve label: Rêve
xp: 0 xp: 0
derivee: false derivee: false
@ -220,12 +220,12 @@ system:
derivee: true derivee: true
encombrement: encombrement:
type: number type: number
value: 0 value: '0'
label: Encombrement label: Encombrement
derivee: false derivee: false
protection: protection:
type: number type: number
value: 3 value: '3'
label: Protection label: Protection
derivee: false derivee: false
compteurs: compteurs:

View File

@ -154,37 +154,37 @@ system:
carac: carac:
taille: taille:
type: number type: number
value: 12 value: '12'
label: Taille label: Taille
xp: 0 xp: 0
derivee: false derivee: false
constitution: constitution:
type: number type: number
value: 12 value: '12'
label: Constitution label: Constitution
xp: 0 xp: 0
derivee: false derivee: false
force: force:
type: number type: number
value: 15 value: '15'
label: Force label: Force
xp: 0 xp: 0
derivee: false derivee: false
perception: perception:
type: number type: number
value: 10 value: '10'
label: Perception label: Perception
xp: 0 xp: 0
derivee: false derivee: false
volonte: volonte:
type: number type: number
value: 6 value: '6'
label: Volonté label: Volonté
xp: 0 xp: 0
derivee: false derivee: false
reve: reve:
type: number type: number
value: 4 value: '4'
label: Rêve label: Rêve
xp: 0 xp: 0
derivee: false derivee: false
@ -219,12 +219,12 @@ system:
derivee: true derivee: true
encombrement: encombrement:
type: number type: number
value: 0 value: '0'
label: Encombrement label: Encombrement
derivee: false derivee: false
protection: protection:
type: number type: number
value: 3 value: '3'
label: Protection label: Protection
derivee: false derivee: false
compteurs: compteurs:

View File

@ -97,37 +97,37 @@ system:
carac: carac:
taille: taille:
type: number type: number
value: 4 value: '4'
label: Taille label: Taille
xp: 0 xp: 0
derivee: false derivee: false
constitution: constitution:
type: number type: number
value: 10 value: '10'
label: Constitution label: Constitution
xp: 0 xp: 0
derivee: false derivee: false
force: force:
type: number type: number
value: 8 value: '8'
label: Force label: Force
xp: 0 xp: 0
derivee: false derivee: false
perception: perception:
type: number type: number
value: 12 value: '12'
label: Perception label: Perception
xp: 0 xp: 0
derivee: false derivee: false
volonte: volonte:
type: number type: number
value: 7 value: '7'
label: Volonté label: Volonté
xp: 0 xp: 0
derivee: false derivee: false
reve: reve:
type: number type: number
value: 7 value: '7'
label: Rêve label: Rêve
xp: 0 xp: 0
derivee: false derivee: false
@ -152,7 +152,7 @@ system:
attributs: attributs:
plusdom: plusdom:
type: number type: number
value: -1 value: '-1'
label: +dom label: +dom
derivee: true derivee: true
vitesse: vitesse:
@ -162,12 +162,12 @@ system:
derivee: true derivee: true
encombrement: encombrement:
type: number type: number
value: 0 value: '0'
label: Encombrement label: Encombrement
derivee: false derivee: false
protection: protection:
type: number type: number
value: -3 value: '-3'
label: Protection label: Protection
derivee: false derivee: false
compteurs: compteurs:
@ -203,10 +203,10 @@ system:
<p>En combat, quand un drakkule r&eacute;ussit une particuli&egrave;re et <p>En combat, quand un drakkule r&eacute;ussit une particuli&egrave;re et
cause au moins une blessure l&eacute;g&egrave;re, il reste accroch&eacute; cause au moins une blessure l&eacute;g&egrave;re, il reste accroch&eacute;
&agrave; sa victime qui perd alors automatiquement @roll[1d6] points &agrave; sa victime qui perd alors automatiquement 1d6 points
d&rsquo;endurance par round sous l&rsquo;effet de la saign&eacute;e. Quand d&rsquo;endurance par round sous l&rsquo;effet de la saign&eacute;e. Quand
l&rsquo;endurance tombe &agrave; z&eacute;ro, le drakkule continue &agrave; l&rsquo;endurance tombe &agrave; z&eacute;ro, le drakkule continue &agrave;
la vider de son sang &agrave; raison de @roll[1d6] points de vie par round. Le la vider de son sang &agrave; raison de 1d6 points de vie par round. Le
drakkule ne se d&eacute;tache que <em>bless&eacute; gravement </em>ou drakkule ne se d&eacute;tache que <em>bless&eacute; gravement </em>ou
<em>sonn&eacute;</em>. Pour se d&eacute;gager, la victime ne peut utiliser <em>sonn&eacute;</em>. Pour se d&eacute;gager, la victime ne peut utiliser
que Corps &agrave; corps (totaliser 2 points d&rsquo;empoignade) ou une que Corps &agrave; corps (totaliser 2 points d&rsquo;empoignade) ou une

View File

@ -97,37 +97,37 @@ system:
carac: carac:
taille: taille:
type: number type: number
value: 2 value: '2'
label: Taille label: Taille
xp: 0 xp: 0
derivee: false derivee: false
constitution: constitution:
type: number type: number
value: 8 value: '8'
label: Constitution label: Constitution
xp: 0 xp: 0
derivee: false derivee: false
force: force:
type: number type: number
value: 3 value: '3'
label: Force label: Force
xp: 0 xp: 0
derivee: false derivee: false
perception: perception:
type: number type: number
value: 13 value: '13'
label: Perception label: Perception
xp: 0 xp: 0
derivee: false derivee: false
volonte: volonte:
type: number type: number
value: 10 value: '10'
label: Volonté label: Volonté
xp: 0 xp: 0
derivee: false derivee: false
reve: reve:
type: number type: number
value: 11 value: '11'
label: Rêve label: Rêve
xp: 0 xp: 0
derivee: false derivee: false
@ -152,7 +152,7 @@ system:
attributs: attributs:
plusdom: plusdom:
type: number type: number
value: -4 value: '-4'
label: +dom label: +dom
derivee: true derivee: true
vitesse: vitesse:
@ -162,12 +162,12 @@ system:
derivee: true derivee: true
encombrement: encombrement:
type: number type: number
value: 0 value: '0'
label: Encombrement label: Encombrement
derivee: false derivee: false
protection: protection:
type: number type: number
value: -6 value: '-6'
label: Protection label: Protection
derivee: false derivee: false
compteurs: compteurs:

View File

@ -184,37 +184,37 @@ system:
carac: carac:
taille: taille:
type: number type: number
value: 7 value: '7'
label: Taille label: Taille
xp: 0 xp: 0
derivee: false derivee: false
constitution: constitution:
type: number type: number
value: 12 value: '12'
label: Constitution label: Constitution
xp: 0 xp: 0
derivee: false derivee: false
force: force:
type: number type: number
value: 11 value: '11'
label: Force label: Force
xp: 0 xp: 0
derivee: false derivee: false
perception: perception:
type: number type: number
value: 13 value: '13'
label: Perception label: Perception
xp: 0 xp: 0
derivee: false derivee: false
volonte: volonte:
type: number type: number
value: 10 value: '10'
label: Volonté label: Volonté
xp: 0 xp: 0
derivee: false derivee: false
reve: reve:
type: number type: number
value: 10 value: '10'
label: Rêve label: Rêve
xp: 0 xp: 0
derivee: false derivee: false
@ -249,12 +249,12 @@ system:
derivee: true derivee: true
encombrement: encombrement:
type: number type: number
value: 0 value: '0'
label: Encombrement label: Encombrement
derivee: false derivee: false
protection: protection:
type: number type: number
value: 0 value: '0'
label: Protection label: Protection
derivee: false derivee: false
compteurs: compteurs:

View File

@ -206,37 +206,37 @@ system:
carac: carac:
taille: taille:
type: number type: number
value: 6 value: '6'
label: Taille label: Taille
xp: 0 xp: 0
derivee: false derivee: false
constitution: constitution:
type: number type: number
value: 10 value: '10'
label: Constitution label: Constitution
xp: 0 xp: 0
derivee: false derivee: false
force: force:
type: number type: number
value: 9 value: '9'
label: Force label: Force
xp: 0 xp: 0
derivee: false derivee: false
perception: perception:
type: number type: number
value: 14 value: '14'
label: Perception label: Perception
xp: 0 xp: 0
derivee: false derivee: false
volonte: volonte:
type: number type: number
value: 11 value: '11'
label: Volonté label: Volonté
xp: 0 xp: 0
derivee: false derivee: false
reve: reve:
type: number type: number
value: 12 value: '12'
label: Rêve label: Rêve
xp: 0 xp: 0
derivee: false derivee: false
@ -261,7 +261,7 @@ system:
attributs: attributs:
plusdom: plusdom:
type: number type: number
value: -1 value: '-1'
label: +dom label: +dom
derivee: true derivee: true
vitesse: vitesse:
@ -271,12 +271,12 @@ system:
derivee: true derivee: true
encombrement: encombrement:
type: number type: number
value: 0 value: '0'
label: Encombrement label: Encombrement
derivee: false derivee: false
protection: protection:
type: number type: number
value: 0 value: '0'
label: Protection label: Protection
derivee: false derivee: false
compteurs: compteurs:

View File

@ -241,39 +241,39 @@ system:
carac: carac:
taille: taille:
type: number type: number
value: 16 value: '16'
label: Taille label: Taille
xp: 0 xp: 0
derivee: false derivee: false
constitution: constitution:
type: number type: number
value: 15 value: '15'
label: Constitution label: Constitution
xp: 0 xp: '0'
derivee: false derivee: false
force: force:
type: number type: number
value: 13 value: '13'
label: Force label: Force
xp: 0 xp: '0'
derivee: false derivee: false
perception: perception:
type: number type: number
value: 10 value: '10'
label: Perception label: Perception
xp: 0 xp: '0'
derivee: false derivee: false
volonte: volonte:
type: number type: number
value: 8 value: '8'
label: Volonté label: Volonté
xp: 0 xp: '0'
derivee: false derivee: false
reve: reve:
type: number type: number
value: 10 value: '10'
label: Rêve label: Rêve
xp: 0 xp: '0'
derivee: false derivee: false
sante: sante:
vie: vie:
@ -306,12 +306,12 @@ system:
derivee: true derivee: true
encombrement: encombrement:
type: number type: number
value: 0 value: '0'
label: Encombrement label: Encombrement
derivee: false derivee: false
protection: protection:
type: number type: number
value: 4 value: '4'
label: Protection label: Protection
derivee: false derivee: false
compteurs: compteurs:

View File

@ -155,37 +155,37 @@ system:
carac: carac:
taille: taille:
type: number type: number
value: 11 value: '11'
label: Taille label: Taille
xp: 0 xp: 0
derivee: false derivee: false
constitution: constitution:
type: number type: number
value: 14 value: '14'
label: Constitution label: Constitution
xp: 0 xp: 0
derivee: false derivee: false
force: force:
type: number type: number
value: 13 value: '13'
label: Force label: Force
xp: 0 xp: 0
derivee: false derivee: false
perception: perception:
type: number type: number
value: 10 value: '10'
label: Perception label: Perception
xp: 0 xp: 0
derivee: false derivee: false
volonte: volonte:
type: number type: number
value: 7 value: '7'
label: Volonté label: Volonté
xp: 0 xp: 0
derivee: false derivee: false
reve: reve:
type: number type: number
value: 10 value: '10'
label: Rêve label: Rêve
xp: 0 xp: 0
derivee: false derivee: false
@ -220,12 +220,12 @@ system:
derivee: true derivee: true
encombrement: encombrement:
type: number type: number
value: 0 value: '0'
label: Encombrement label: Encombrement
derivee: false derivee: false
protection: protection:
type: number type: number
value: 0 value: '0'
label: Protection label: Protection
derivee: false derivee: false
compteurs: compteurs:
@ -257,8 +257,56 @@ system:
<h1 style="box-sizing: border-box; user-select: text; color: #191813; <h1 style="box-sizing: border-box; user-select: text; color: #191813;
font-family: GoudyAcc, sans-serif;">Venin</h1> 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 <p>La paralysie intervient quand toutes les lignes de fatigue sont pleines
et dure 6 heures.</p> et dure 6 heures.</p>

View File

@ -137,7 +137,7 @@ system:
elles-m&ecirc;mes, leur grincement involontaire est une torture. Toute elles-m&ecirc;mes, leur grincement involontaire est une torture. Toute
personne se trouvant dans un rayon de 10m doit manquer un jet personne se trouvant dans un rayon de 10m doit manquer un jet
d&rsquo;OU&Iuml;E &agrave; +5. Si le jet r&eacute;ussit, perte de 1 point d&rsquo;OU&Iuml;E &agrave; +5. Si le jet r&eacute;ussit, perte de 1 point
d&rsquo;endurance, puis jet de @roll[volonté/-5]. Si le jet de d&rsquo;endurance, puis jet de VOLONT&Eacute; &agrave; -5. Si le jet de
VOLONT&Eacute; &eacute;choue, le personnage est sonn&eacute; VOLONT&Eacute; &eacute;choue, le personnage est sonn&eacute;
jusqu&rsquo;&agrave; la fin du round suivant.</p> jusqu&rsquo;&agrave; la fin du round suivant.</p>

View File

@ -183,37 +183,37 @@ system:
carac: carac:
taille: taille:
type: number type: number
value: 23 value: '23'
label: Taille label: Taille
xp: 0 xp: 0
derivee: false derivee: false
constitution: constitution:
type: number type: number
value: 20 value: '20'
label: Constitution label: Constitution
xp: 0 xp: 0
derivee: false derivee: false
force: force:
type: number type: number
value: 20 value: '20'
label: Force label: Force
xp: 0 xp: 0
derivee: false derivee: false
perception: perception:
type: number type: number
value: 11 value: '11'
label: Perception label: Perception
xp: 0 xp: 0
derivee: false derivee: false
volonte: volonte:
type: number type: number
value: 8 value: '8'
label: Volonté label: Volonté
xp: 0 xp: 0
derivee: false derivee: false
reve: reve:
type: number type: number
value: 10 value: '10'
label: Rêve label: Rêve
xp: 0 xp: 0
derivee: false derivee: false
@ -248,12 +248,12 @@ system:
derivee: true derivee: true
encombrement: encombrement:
type: number type: number
value: 0 value: '0'
label: Encombrement label: Encombrement
derivee: false derivee: false
protection: protection:
type: number type: number
value: 3 value: '3'
label: Protection label: Protection
derivee: false derivee: false
compteurs: compteurs:

View File

@ -68,37 +68,37 @@ system:
carac: carac:
taille: taille:
type: number type: number
value: 9 value: '9'
label: Taille label: Taille
xp: 0 xp: 0
derivee: false derivee: false
constitution: constitution:
type: number type: number
value: 11 value: '11'
label: Constitution label: Constitution
xp: 0 xp: 0
derivee: false derivee: false
force: force:
type: number type: number
value: 12 value: '12'
label: Force label: Force
xp: 0 xp: 0
derivee: false derivee: false
perception: perception:
type: number type: number
value: 11 value: '11'
label: Perception label: Perception
xp: 0 xp: 0
derivee: false derivee: false
volonte: volonte:
type: number type: number
value: 12 value: '12'
label: Volonté label: Volonté
xp: 0 xp: 0
derivee: false derivee: false
reve: reve:
type: number type: number
value: 11 value: '11'
label: Rêve label: Rêve
xp: 0 xp: 0
derivee: false derivee: false
@ -133,12 +133,12 @@ system:
derivee: true derivee: true
encombrement: encombrement:
type: number type: number
value: 0 value: '0'
label: Encombrement label: Encombrement
derivee: false derivee: false
protection: protection:
type: number type: number
value: 4 value: '4'
label: Protection label: Protection
derivee: false derivee: false
compteurs: compteurs:
@ -174,8 +174,8 @@ system:
agressivit&eacute; s&rsquo;appliquant aux humano&iuml;des. S&rsquo;agissant agressivit&eacute; s&rsquo;appliquant aux humano&iuml;des. S&rsquo;agissant
d&rsquo;un pouvoir inn&eacute;, elles n&rsquo;ont ni &agrave; monter dans d&rsquo;un pouvoir inn&eacute;, elles n&rsquo;ont ni &agrave; monter dans
les TMR, ni &agrave; d&eacute;penser de points de r&ecirc;ve. La victime les TMR, ni &agrave; d&eacute;penser de points de r&ecirc;ve. La victime
doit jouer un jet de r&eacute;sistance standard, @roll[reve-actuel/-8], et en cas doit jouer un jet de r&eacute;sistance standard, r-8, et en cas
d&rsquo;&eacute;chec, r&eacute;ussir un jet de @roll[Volonté/-3] d&rsquo;&eacute;chec, r&eacute;ussir un jet de VOLONT&Eacute; &agrave; -3
pour pouvoir attaquer la harpie. Le JR n&rsquo;est &agrave; jouer pour pouvoir attaquer la harpie. Le JR n&rsquo;est &agrave; jouer
qu&rsquo;une seule fois, tandis qu&rsquo;en cas d&rsquo;&eacute;chec, le jet qu&rsquo;une seule fois, tandis qu&rsquo;en cas d&rsquo;&eacute;chec, le jet
de VOLONT&Eacute; est &agrave; jouer tous les rounds. La non de VOLONT&Eacute; est &agrave; jouer tous les rounds. La non

View File

@ -154,37 +154,37 @@ system:
carac: carac:
taille: taille:
type: number type: number
value: 11 value: '11'
label: Taille label: Taille
xp: 0 xp: 0
derivee: false derivee: false
constitution: constitution:
type: number type: number
value: 13 value: '13'
label: Constitution label: Constitution
xp: 0 xp: 0
derivee: false derivee: false
force: force:
type: number type: number
value: 13 value: '13'
label: Force label: Force
xp: 0 xp: 0
derivee: false derivee: false
perception: perception:
type: number type: number
value: 11 value: '11'
label: Perception label: Perception
xp: 0 xp: 0
derivee: false derivee: false
volonte: volonte:
type: number type: number
value: 6 value: '6'
label: Volonté label: Volonté
xp: 0 xp: 0
derivee: false derivee: false
reve: reve:
type: number type: number
value: 10 value: '10'
label: Rêve label: Rêve
xp: 0 xp: 0
derivee: false derivee: false
@ -219,12 +219,12 @@ system:
derivee: true derivee: true
encombrement: encombrement:
type: number type: number
value: 0 value: '0'
label: Encombrement label: Encombrement
derivee: false derivee: false
protection: protection:
type: number type: number
value: 2 value: '2'
label: Protection label: Protection
derivee: false derivee: false
compteurs: compteurs:

View File

@ -126,37 +126,37 @@ system:
carac: carac:
taille: taille:
type: number type: number
value: 3 value: '3'
label: Taille label: Taille
xp: 0 xp: 0
derivee: false derivee: false
constitution: constitution:
type: number type: number
value: 4 value: '4'
label: Constitution label: Constitution
xp: 0 xp: 0
derivee: false derivee: false
force: force:
type: number type: number
value: 7 value: '7'
label: Force label: Force
xp: 0 xp: 0
derivee: false derivee: false
perception: perception:
type: number type: number
value: 11 value: '11'
label: Perception label: Perception
xp: 0 xp: 0
derivee: false derivee: false
volonte: volonte:
type: number type: number
value: 2 value: '2'
label: Volonté label: Volonté
xp: 0 xp: 0
derivee: false derivee: false
reve: reve:
type: number type: number
value: 2 value: '2'
label: Rêve label: Rêve
xp: 0 xp: 0
derivee: false derivee: false
@ -181,7 +181,7 @@ system:
attributs: attributs:
plusdom: plusdom:
type: number type: number
value: 0 value: '0'
label: +dom label: +dom
derivee: true derivee: true
vitesse: vitesse:
@ -191,12 +191,12 @@ system:
derivee: true derivee: true
encombrement: encombrement:
type: number type: number
value: 0 value: '0'
label: Encombrement label: Encombrement
derivee: false derivee: false
protection: protection:
type: number type: number
value: -6 value: '-6'
label: Protection label: Protection
derivee: false derivee: false
compteurs: compteurs:

View File

@ -183,37 +183,37 @@ system:
carac: carac:
taille: taille:
type: number type: number
value: 8 value: '8'
label: Taille label: Taille
xp: 0 xp: 0
derivee: false derivee: false
constitution: constitution:
type: number type: number
value: 11 value: '11'
label: Constitution label: Constitution
xp: 0 xp: 0
derivee: false derivee: false
force: force:
type: number type: number
value: 12 value: '12'
label: Force label: Force
xp: 0 xp: 0
derivee: false derivee: false
perception: perception:
type: number type: number
value: 13 value: '13'
label: Perception label: Perception
xp: 0 xp: 0
derivee: false derivee: false
volonte: volonte:
type: number type: number
value: 10 value: '10'
label: Volonté label: Volonté
xp: 0 xp: 0
derivee: false derivee: false
reve: reve:
type: number type: number
value: 10 value: '10'
label: Rêve label: Rêve
xp: 0 xp: 0
derivee: false derivee: false
@ -248,12 +248,12 @@ system:
derivee: true derivee: true
encombrement: encombrement:
type: number type: number
value: 0 value: '0'
label: Encombrement label: Encombrement
derivee: false derivee: false
protection: protection:
type: number type: number
value: 0 value: '0'
label: Protection label: Protection
derivee: false derivee: false
compteurs: compteurs:

View File

@ -212,37 +212,37 @@ system:
carac: carac:
taille: taille:
type: number type: number
value: 5 value: '5'
label: Taille label: Taille
xp: 0 xp: 0
derivee: false derivee: false
constitution: constitution:
type: number type: number
value: 11 value: '11'
label: Constitution label: Constitution
xp: 0 xp: 0
derivee: false derivee: false
force: force:
type: number type: number
value: 9 value: '9'
label: Force label: Force
xp: 0 xp: 0
derivee: false derivee: false
perception: perception:
type: number type: number
value: 10 value: '10'
label: Perception label: Perception
xp: 0 xp: 0
derivee: false derivee: false
volonte: volonte:
type: number type: number
value: 10 value: '10'
label: Volonté label: Volonté
xp: 0 xp: 0
derivee: false derivee: false
reve: reve:
type: number type: number
value: 10 value: '10'
label: Rêve label: Rêve
xp: 0 xp: 0
derivee: false derivee: false
@ -267,7 +267,7 @@ system:
attributs: attributs:
plusdom: plusdom:
type: number type: number
value: -1 value: '-1'
label: +dom label: +dom
derivee: true derivee: true
vitesse: vitesse:
@ -277,12 +277,12 @@ system:
derivee: true derivee: true
encombrement: encombrement:
type: number type: number
value: 0 value: '0'
label: Encombrement label: Encombrement
derivee: false derivee: false
protection: protection:
type: number type: number
value: 0 value: '0'
label: Protection label: Protection
derivee: false derivee: false
compteurs: compteurs:

View File

@ -154,37 +154,37 @@ system:
carac: carac:
taille: taille:
type: number type: number
value: 23 value: '23'
label: Taille label: Taille
xp: 0 xp: 0
derivee: false derivee: false
constitution: constitution:
type: number type: number
value: 17 value: '17'
label: Constitution label: Constitution
xp: 0 xp: 0
derivee: false derivee: false
force: force:
type: number type: number
value: 17 value: '17'
label: Force label: Force
xp: 0 xp: 0
derivee: false derivee: false
perception: perception:
type: number type: number
value: 12 value: '12'
label: Perception label: Perception
xp: 0 xp: 0
derivee: false derivee: false
volonte: volonte:
type: number type: number
value: 12 value: '12'
label: Volonté label: Volonté
xp: 0 xp: 0
derivee: false derivee: false
reve: reve:
type: number type: number
value: 12 value: '12'
label: Rêve label: Rêve
xp: 0 xp: 0
derivee: false derivee: false
@ -219,12 +219,12 @@ system:
derivee: true derivee: true
encombrement: encombrement:
type: number type: number
value: 18 value: '18'
label: Encombrement label: Encombrement
derivee: false derivee: false
protection: protection:
type: number type: number
value: 1 value: '1'
label: Protection label: Protection
derivee: false derivee: false
compteurs: compteurs:

View File

@ -39,37 +39,37 @@ system:
carac: carac:
taille: taille:
type: number type: number
value: 2 value: '2'
label: Taille label: Taille
xp: 0 xp: 0
derivee: false derivee: false
constitution: constitution:
type: number type: number
value: 4 value: '4'
label: Constitution label: Constitution
xp: 0 xp: 0
derivee: false derivee: false
force: force:
type: number type: number
value: 1 value: '1'
label: Force label: Force
xp: 0 xp: 0
derivee: false derivee: false
perception: perception:
type: number type: number
value: 15 value: '15'
label: Perception label: Perception
xp: 0 xp: 0
derivee: false derivee: false
volonte: volonte:
type: number type: number
value: 17 value: '17'
label: Volonté label: Volonté
xp: 0 xp: 0
derivee: false derivee: false
reve: reve:
type: number type: number
value: 18 value: '18'
label: Rêve label: Rêve
xp: 0 xp: 0
derivee: false derivee: false
@ -104,12 +104,12 @@ system:
derivee: true derivee: true
encombrement: encombrement:
type: number type: number
value: 0 value: '0'
label: Encombrement label: Encombrement
derivee: false derivee: false
protection: protection:
type: number type: number
value: -8 value: '-8'
label: Protection label: Protection
derivee: false derivee: false
compteurs: compteurs:

View File

@ -212,39 +212,39 @@ system:
carac: carac:
taille: taille:
type: number type: number
value: 13 value: '13'
label: Taille label: Taille
xp: 0 xp: 0
derivee: false derivee: false
constitution: constitution:
type: number type: number
value: 14 value: '14'
label: Constitution label: Constitution
xp: 0 xp: '0'
derivee: false derivee: false
force: force:
type: number type: number
value: 15 value: '15'
label: Force label: Force
xp: 0 xp: '0'
derivee: false derivee: false
perception: perception:
type: number type: number
value: 17 value: '17'
label: Perception label: Perception
xp: 0 xp: '0'
derivee: false derivee: false
volonte: volonte:
type: number type: number
value: 15 value: '15'
label: Volonté label: Volonté
xp: 0 xp: '0'
derivee: false derivee: false
reve: reve:
type: number type: number
value: 12 value: '12'
label: Rêve label: Rêve
xp: 0 xp: '0'
derivee: false derivee: false
sante: sante:
vie: vie:
@ -277,12 +277,12 @@ system:
derivee: true derivee: true
encombrement: encombrement:
type: number type: number
value: 0 value: '0'
label: Encombrement label: Encombrement
derivee: false derivee: false
protection: protection:
type: number type: number
value: 2 value: '2'
label: Protection label: Protection
derivee: false derivee: false
compteurs: compteurs:

View File

@ -183,37 +183,37 @@ system:
carac: carac:
taille: taille:
type: number type: number
value: 14 value: '14'
label: Taille label: Taille
xp: 0 xp: 0
derivee: false derivee: false
constitution: constitution:
type: number type: number
value: 14 value: '14'
label: Constitution label: Constitution
xp: 0 xp: 0
derivee: false derivee: false
force: force:
type: number type: number
value: 18 value: '18'
label: Force label: Force
xp: 0 xp: 0
derivee: false derivee: false
perception: perception:
type: number type: number
value: 10 value: '10'
label: Perception label: Perception
xp: 0 xp: 0
derivee: false derivee: false
volonte: volonte:
type: number type: number
value: 10 value: '10'
label: Volonté label: Volonté
xp: 0 xp: 0
derivee: false derivee: false
reve: reve:
type: number type: number
value: 10 value: '10'
label: Rêve label: Rêve
xp: 0 xp: 0
derivee: false derivee: false
@ -248,12 +248,12 @@ system:
derivee: true derivee: true
encombrement: encombrement:
type: number type: number
value: 0 value: '0'
label: Encombrement label: Encombrement
derivee: false derivee: false
protection: protection:
type: number type: number
value: 5 value: '5'
label: Protection label: Protection
derivee: false derivee: false
compteurs: compteurs:

View File

@ -150,37 +150,37 @@ system:
carac: carac:
taille: taille:
type: number type: number
value: 10 value: '10'
label: Taille label: Taille
xp: 0 xp: 0
derivee: false derivee: false
constitution: constitution:
type: number type: number
value: 10 value: '10'
label: Constitution label: Constitution
xp: 0 xp: 0
derivee: false derivee: false
force: force:
type: number type: number
value: 10 value: '10'
label: Force label: Force
xp: 0 xp: 0
derivee: false derivee: false
perception: perception:
type: number type: number
value: 10 value: '10'
label: Perception label: Perception
xp: 0 xp: 0
derivee: false derivee: false
volonte: volonte:
type: number type: number
value: 10 value: '10'
label: Volonté label: Volonté
xp: 0 xp: 0
derivee: false derivee: false
reve: reve:
type: number type: number
value: 10 value: '10'
label: Rêve label: Rêve
xp: 0 xp: 0
derivee: false derivee: false
@ -205,22 +205,22 @@ system:
attributs: attributs:
plusdom: plusdom:
type: number type: number
value: 0 value: '0'
label: +dom label: +dom
derivee: true derivee: true
vitesse: vitesse:
type: string type: string
value: 0 value: '0'
label: Vitesse label: Vitesse
derivee: true derivee: true
encombrement: encombrement:
type: number type: number
value: 0 value: '0'
label: Encombrement label: Encombrement
derivee: false derivee: false
protection: protection:
type: number type: number
value: 0 value: '0'
label: Protection label: Protection
derivee: false derivee: false
compteurs: compteurs:

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