Compare commits

..

94 Commits

Author SHA1 Message Date
dffaa29fd1 Fix termes dans les fenetres de creation 2024-02-29 21:22:42 +01:00
c49e2a850b Fix termes dans les fenetres de creation 2024-02-29 20:59:06 +01:00
a5a9cc334e Fix termes dans les fenetres de creation 2024-02-29 20:45:25 +01:00
43e49a0eb8 New common CounterClass 2024-02-08 12:46:49 +01:00
5ab551da9e Rework usage log 2024-02-05 18:08:35 +01:00
2a9e98f8c7 Ajout tirage de la force des rencontres avec /tmrr, ajout de bouton pour appliquer complètement les blessures 2024-01-30 23:18:21 +01:00
669982ec4a Ajout tirage de la force des rencontres avec /tmrr, ajout de bouton pour appliquer complètement les blessures 2024-01-28 20:43:23 +01:00
34183cd1a7 Ajout tirage de la force des rencontres avec /tmrr, ajout de bouton pour appliquer complètement les blessures 2024-01-28 20:41:00 +01:00
f7eae3ac1e Fix version+changelog 2024-01-02 18:51:22 +01:00
623044c936 Sync fiche 2024-01-02 18:43:42 +01:00
94caf4040b Affichage souffle 2023-12-30 14:20:05 +01:00
d577e2d2ec Merge pull request '11.2.13 - Les cent pas d'Akarlikarlikar' (#694) from VincentVk/foundryvtt-reve-de-dragon:v11 into v11
Reviewed-on: #694
2023-12-26 23:44:30 +01:00
050cd80dae Version 11.2.13 2023-12-26 19:07:36 +01:00
3f098cab31 Commande /voyage
Ajout de la commande /voyage pour gérer la fatigue en voyage
2023-12-26 19:06:13 +01:00
4274bce7d5 minor cleanup 2023-12-26 19:06:13 +01:00
25d68d265e Image acteur dans les message de tours 2023-12-26 19:06:13 +01:00
c1c192f710 Merge pull request '11.2.12 - Le somnifère d'Akarlikarlikar' (#693) from VincentVk/foundryvtt-reve-de-dragon:v11 into v11
Reviewed-on: #693
2023-12-24 12:42:15 +01:00
7f64cd03f9 Version 11.2.12 2023-12-22 23:55:21 +01:00
3ac9f487d0 Fix: perte de rêve potions enchantées
La perte de rêve des potions enchantées bloquait le processus de
récupération de château dormant
2023-12-22 20:12:58 +01:00
fa67c3d9c1 Merge pull request 'Version 11.2.11' (#692) from VincentVk/foundryvtt-reve-de-dragon:v11 into v11
Reviewed-on: #692
2023-12-22 09:30:48 +01:00
5b443f9ac0 Version 11.2.11 2023-12-22 02:25:30 +01:00
b0098574a0 Fix: refoulement
Le refoulement ne fonctionnait plus. Merci à javascript+VSCode
pour l'incapacité de fournir de l'analyse de code statique...
2023-12-22 02:21:22 +01:00
5729f7e926 Bordure des images de profils
Remplacement de la bordure noire inesthétique avec des images de
profil sous forme de badge ronds, en utilisant juste une variation
de couleur de fond.
2023-12-22 02:21:22 +01:00
0b66c945b8 Mise à jour couleur images compcreature
Passage du blanc à la couleur habituelle
2023-12-22 02:21:22 +01:00
f0fc44e00f Merge pull request '11.2.10 - Les expériences d'Akarlikarlikar' (#691) from VincentVk/foundryvtt-reve-de-dragon:v11 into v11
Reviewed-on: #691
2023-12-11 09:34:21 +01:00
6b7c2ad2f9 Version 11.2.10 2023-12-10 22:26:52 +01:00
0ac5d317ce Icônes des boutons cuisiner/manger 2023-12-10 22:19:51 +01:00
f8a90fc3c3 Fontawsome solid
traduction de fas => fa-solid
2023-12-10 22:19:51 +01:00
6dd647b787 Expérience des caractéristiques dérivées
Une fenêtre de répartition est ouverte quand plusieurs
caractéristiques peuvent recevoir l'expérience. Sinon,
l'expérience est attribuée automatiquement.

L'expérience n'est plus ajoutée en Force si supérieure à Taille+4
2023-12-10 22:19:51 +01:00
1c55491ac7 Ajustements des tooltips TMR 2023-12-10 22:19:50 +01:00
2b08678518 Merge pull request 'Version 11.2.9 - La barbe d'Akarlikarlikar' (#690) from VincentVk/foundryvtt-reve-de-dragon:v11 into v11
Reviewed-on: #690
2023-12-09 16:23:41 +01:00
355f2e4088 Version 11.2.9 2023-12-09 15:33:33 +01:00
e0862105f9 Icône d'état empoignade 2023-12-09 15:33:33 +01:00
3ab48511a0 Sort en réserve en fleuve
Les sorts en réserve en fleuve sont indiqués sur toutes les cases fleuve
2023-12-09 15:33:33 +01:00
05cd02b694 Fix: deprecation effects flags.core.statusId
Remplacement de la logique basée sur les flags par le set de "statuses"
2023-12-09 15:33:33 +01:00
56a5d06f16 Fix erreur console ouverture TMR
quand TMR pas affichées, bringToTop ne marche pas
2023-12-09 15:33:32 +01:00
f34db764cb Permettre les jets de chance sans astrologie
Quand on fait un jet de chance pour la journée, permettre de
ne pas utiliser l'ajustement astrologique
2023-12-09 15:33:32 +01:00
7267cd4096 Amélioration de tooltips
- style en phase avec le système
- icones attaque/d6/soins pour le HUD
- tooltip plus détaillé pour le HUD
- icône et bouton pour déterminer les chiffres astraux (astrologie)
- tooltips pour les boutons archétype
- suppression de log sur chaque point de coeur
2023-12-09 15:33:32 +01:00
e4bd2d2f27 Merge pull request 'v11' (#689) from VincentVk/foundryvtt-reve-de-dragon:v11 into v11
Reviewed-on: #689
2023-12-08 13:24:05 +01:00
eb09714579 Version 11.2.8 2023-12-08 04:03:53 +01:00
62cc3fc96b Correction de l'ajustement de luminosité
On passe de la nuit début vaisseau au jour fin vaisseau
2023-12-08 04:00:17 +01:00
5e140546ea Les tooltips de compétences et l'expérience
Limitation du tooltip sur les compétences qui masquait les
informations d'expérience
2023-12-08 03:07:27 +01:00
ab9a21f402 Utilisation de get plutôt que find par id 2023-12-08 02:38:57 +01:00
8e41250f64 Affichage de cœur dans les ajustements 2023-12-08 02:38:23 +01:00
095eed9da3 Fix: éliminer le risque de jets qui plante
Bloquait les rencontres en TMR.

Quand un rollData ne contient pas les sous-noeuds pouvant être
utilisés par les ajustements possibles, le jet de dés était perdu.

Le calcul d'ajustements ajoute maintenant les noeuds use/ajustements
s'ils ne sont pas fournis, pour éviter le risque.
2023-12-08 02:37:47 +01:00
55c98d1dce Merge pull request '11.2.7' (#688) from VincentVk/foundryvtt-reve-de-dragon:v11 into v11
Reviewed-on: #688
2023-12-04 09:29:35 +01:00
b5dc14687e Version 11.2.7 2023-12-04 02:35:47 +01:00
1208eb8ae1 Amélioration des tooltips
- title/alt remplacés par des data-tooltip
- description de ce que font les boutons
- description des items survolés
2023-12-04 02:32:26 +01:00
a46acb7952 Merge pull request 'Action de visualisation avec droits limités' (#687) from VincentVk/foundryvtt-reve-de-dragon:v11 into v11
Reviewed-on: #687
2023-12-03 20:05:31 +01:00
a68057900d Action de visualisation avec droits limités 2023-12-02 14:40:39 +01:00
57bc1b6c1f Merge pull request '11.2.6 - Les réveils difficiles d'Akarlikarlikar' (#686) from VincentVk/foundryvtt-reve-de-dragon:v11 into v11
Reviewed-on: #686
2023-11-28 00:17:04 +01:00
6101bc91a6 Version 11.2.6 2023-11-27 23:49:43 +01:00
33ced5715d Le coeur s'applique à ChâteauDormant 2023-11-27 23:45:33 +01:00
50db9ba709 Fix Chateau Dormant pour les potions 2023-11-27 23:43:45 +01:00
957e31b188 Fix subacteurs 2023-11-27 14:32:39 +01:00
74571c9966 Correction sur Items 2023-11-26 22:51:33 +01:00
5155fb4669 Correction sur Class 2023-11-26 19:58:32 +01:00
698ed75d46 Fix version 2023-11-24 08:52:42 +01:00
37ba7166bf Merge pull request 'v11.2.2 - Les tendres moments d'Akarlikarlikar' (#685) from VincentVk/foundryvtt-reve-de-dragon:v11 into v11
Reviewed-on: #685
2023-11-24 08:51:05 +01:00
28af8c3c58 v11.2.2 - Les tendres moments d'Akarlikarlikar
- On peut maintenant avoir des points de cœur pour des suivants/
   compagnons
  - diminuer les points de coeurs fait perdre du moral
  - on peut proposer un tendre moment
  - les jets de volonté peuvent être ajustés selon les points de cœur
- Fixes
  - La résistance est de 1 par défaut pour les équipements
  - Les armes de créatures sont de nouveau utilisables depuis les tokens
  - Pas de notifications de signe draconique quand on regarde les TMR
   sans monter
  - Correction d'un problème de contextes WebGL causé par des
   ouvertures/fermetures de TMRs
  - On peut maintenant prendre un objet d'un acteur-token pour
    l'ajouter à un autre acteur
  - On ne peut plus donner d'objets d'un acteur à un acteur-token
2023-11-24 03:02:18 +01:00
4a03c222d5 Gestion des points de coeur
- Les suivants/compagnons/amoureux sont dans l'onglet description
- si acteurs "liés", ils peuvent avoir des points de coeur
- les jets de volonté peuvent être ajustés s'ils concernent un
  compagnon pour lequel on a du coeur
- on peut ajouter des points de coeur (entre la gestion de Chateau
  dormant par le gardien et le jet de repos si ce mode est utilisé)
- on peut retirer des points de coeur en perdant du moral (mêmes
  conditions)
- on peut passer de tendres moments si les deux acteurs acceptent
- les tendre moments font jouer un jet de moral adapté
- on peut perdre un point de coeur suite à un tendre moment qui ne fait
  pas gagner de moral
2023-11-24 02:57:43 +01:00
135546467d Envoi de message à plusieurs acteurs 2023-11-24 02:51:59 +01:00
b5db2a9ef3 Cleanup - preparation Coeur
Simplification de code:
- des Méthodes simples sur une ligne
- utilisation de item.update au lieu de updateEmbeddedDocuments
  quand possibe
- renommage des templates SubActeur
- déplacement de logs quand compétence non trouvée
2023-11-24 02:51:59 +01:00
bfb7b9b6bf taille des options 2023-11-24 02:51:59 +01:00
f0b7306885 Fix: animaux
- état général corrigé
- ajout de blessure, mise à jour endurance, ...
- calcul du malus d'état général
- ajustement des jets selon points de vie perdus
2023-11-24 02:51:52 +01:00
af410c1823 Typo: Tarot, Le Gibet 'Chute' 2023-11-24 02:49:49 +01:00
bf2b387fc4 Fix: Hooks.once('ready') not called
Sur Firefor, le onReady n'est jamais appelé, le système n'est alors
pas totalement initialisé, toute la partie calendrier n'est pas prête,
et donc les ajustement d'astrologie.
2023-11-24 02:49:49 +01:00
dfd915f8d1 Fix: prendre un objet d'un token
On peut maintenant prendre un objet à l'acteur d'un token non lié.

Avertissement quand on donne un objet à un token
2023-11-23 17:08:37 +01:00
4fe487a0ec Fix: problème de contexte WebGL
WARNING: Too many active WebGL contexts. Oldest context will be lost.

Semble lié à la destruction incorrecte de l'Application PIXI des TMR,
en cas de nombreuses ouvertures/fermetures
2023-11-23 17:08:37 +01:00
0ec31d8ddc Fix: double class 2023-11-23 00:33:19 +01:00
1bee911c35 Fix: pas de notification de signe si viewonly 2023-11-23 00:33:19 +01:00
ed7471875f Fix: armes des créatures utilisables 2023-11-23 00:33:18 +01:00
f50e9cd305 Déplacement terre d'attache 2023-11-21 21:08:46 +01:00
a2fcb9a453 Résistance 1 par défaut 2023-11-21 21:08:46 +01:00
3018e3522c Merge pull request 'v11.2.1 - La technique d'Akarlikarlikar' (#684) from VincentVk/foundryvtt-reve-de-dragon:v11 into v11
Reviewed-on: #684
2023-11-20 23:32:34 +01:00
d16dec3278 Résistance par défaut de 1
Pour que les armes ne soient pas cassées par défaut
2023-11-20 18:55:01 +01:00
339e128b98 Version 11.2.1 - La technique d'Akarlikarlikar
- On peut créer des armes pour Corps à corps et Esquive. Barreaux de
chaise, armes improvisées, techniques d'art martiaux, pas de côté pour
faire trébucher l'adversaire... A vous de voir comment imaginer de
nouvelles "armes".
- Les armes avec une résistance de 0 ne peuvent pas être utilisées,
une image et un rappel indiquent qu'elles sont cassées
2023-11-20 18:42:29 +01:00
b1b56c13bf Montrer les armes cassées
Vu qu'elles ne peuvent pas être utilisées, permet de savoir pourquoi
2023-11-20 17:24:50 +01:00
b07a3e18df Autoriser les armes de corps-à-corps
Barreaux de chaise, armes improvisées, techniques d'art martiaux, ...
peuvent être gérés comme des armes.
2023-11-20 17:24:50 +01:00
f446d897a7 Merge pull request 'v11.2.0 - Les Terres médianes d'Akarlikarlikar' (#683) from VincentVk/foundryvtt-reve-de-dragon:v11 into v11
Reviewed-on: #683
2023-11-20 07:04:11 +01:00
4e89720341 Version 11.2.0 2023-11-20 00:44:27 +01:00
c1a5bd6eb3 Fix: jets d'encaissement forcés par le Gardien
Les jets d'encaissement forcés par le gardien ne peuvent plus donner
le deuxième d10 négatif si le MJ force un résultat inférieur à 11
2023-11-20 00:44:26 +01:00
bfd3b0d74a Réduction de l'espace des TMR 2023-11-20 00:44:26 +01:00
da3091dc4b Fix: urgence draconique, complément 2023-11-20 00:44:26 +01:00
c7e00749c9 Fix: deplacement aleatoire
Le déplacement aléatoire ne prenait pas compte de la différence
entre colonnes paires/impaires
2023-11-15 22:11:44 +01:00
30d41861fa Support hot reload for templates and css 2023-11-15 22:03:57 +01:00
60cebe60eb Fix #99 2023-11-15 16:34:59 +01:00
ac09e1854b Typo: Tricollet 2023-11-14 01:51:32 +01:00
9ff68884ce Merge pull request 'v11.1.6 - Les dissections de Werther de Zloth' (#682) from VincentVk/foundryvtt-reve-de-dragon:v11 into v11
Reviewed-on: #682
2023-11-12 22:15:26 +01:00
09986115b8 Version 11.1.6 2023-11-12 21:18:52 +01:00
511ee5f241 Fix: encaissement joueur à valider par MJ 2023-11-12 21:18:07 +01:00
306d7c2150 Fix: délai de guérison après rétrogradation
Lorsqu'une blessure critique/grave rétrograde naturellement, le délai
avant le jet de récupération suivant est correctement augmenté.
2023-11-12 21:17:38 +01:00
5624bb1bf3 Merge pull request 'Fix: ajout de compétences aux créatures' (#681) from VincentVk/foundryvtt-reve-de-dragon:v11 into v11
Reviewed-on: #681
2023-11-12 16:35:40 +01:00
b588c5f7f8 Fix: ajout de compétences aux créatures 2023-11-12 15:06:58 +01:00
270 changed files with 3935 additions and 2095 deletions

View File

@ -1,4 +1,100 @@
# v11.0
# 11.2
## 11.2.16 - La Tri d'Akarlikarlikar
- Tri alphabétique des items dans la fenêtre de création
- Mise à jour comptage de monde
## 11.2.15 - La Table d'Akarlikarlikar
- Tirage automatique de la foce d'une rencontre (via la commande /tmrr)
- Ajout de boutons pour ajouter des blessures "complètes" (ie avec perte d'endurance/vie)
## 11.2.14 - Les petits pas d'Akarlikarlikar
- Correction sur la gestion de la surprise
- Ordre des messages sur les cases humides
## 11.2.13 - Les cent pas d'Akarlikarlikar
- Ajout de la commande /voyage pour gérer la fatigue de marche des voyageurs
## 11.2.12 - Le somnifère d'Akarlikarlikar
- Fix: les potions enchantées n'empêchent plus de finir correctement Château Dormant
## 11.2.11 - Le miroir d'Akarlikarlikar
- Changement des images de compétence de créatures morsure/pinces pour être dans le thème
- Suppression de la bordure autour des portraits d'acteurs, remplacés par un légèr éclaircissement du fond
- Fix: le refoulement ajoute correctement un souffle et revient à 0 en cas d'échec
## 11.2.10 - Les expériences d'Akarlikarlikar
- En cas d'expérience des caractéristiques dérivées,
- si plusieurs caractéristiques pourraient recevoir l'expérience, une fenêtre demande au joueur
- si une seule caractéristique peut recevoir de l'expérience, c'est attribué automatiquement
- Si la force est au maximum pour la taille personnage, on ne peut plus gagner d'expérience
## 11.2.9 - La barbe d'Akarlikarlikar
- Amélioration des textes de tooltips
- Les tooltips sont plus dans le thème de couleur du système Rêve de Dragon
- Ajouts d'icones pour les attaque/initiative/soins dans les raccourcis sur les tokens (HUD)
- Ajout d'une icône et transformation en bouton du lien pour accéder à l'astrologie et aux chiffres astraux
- Suppression de message de log inutile sur chaque point de coeur
- On peut désactiver l'ajustement astrologique sur les jets de chance (pour des jts de chances non liés à une heure)- Fix: suppression de quelques cas d'erreur lors de l'ouverture des TMR
- Fix: suppression du warning de depréciation effects flags.core.statusId
- Les sorts en réserve en fleuve sont indiqués sur toutes les cases fleuve
- Changement de l'icône d'état d'empoignade pour suivre les couleurs des autres icônes d'état
## 11.2.8 - L'éclairage d'Akarlikarlikar
- l'ajustement de la lumière jour/nuit s'étale sur moins de temps (vaisseau et Lyre)
- les nouveaux tooltips ne masquent plus l'information d'expérience
- les jets de dés pour maîtriser les rencontres fonctionnent de nouveau
## 11.2.7 - Les explications d'Akarlikarlikar
- Ajout de tooltips sur la plupart des boutons, liens clickables, objets, tâches, ...
- Fix: on peut de nouveau regarder l'inventaire avec les droits limités/observateur
## 11.2.6 - Les réveils difficiles d'Akarlikarlikar
- Les changements de points de Cœur sont temporaires jusqu'à fin Château Dormant
- Fix: tous les petits fixes (feuille qui s'ouvre plus, compagnons animaux, potions qui bloquent Château Dormant, ...)
## 11.2.2 - Les tendres moments d'Akarlikarlikar
- On peut maintenant avoir des points de Cœur pour des suivants/compagnons
- diminuer les points de coeurs fait perdre du moral
- on peut proposer un tendre moment
- les jets de volonté peuvent être ajustés selon les points de Cœur
- Fixes
- La résistance est de 1 par défaut pour les équipements
- Les armes de créatures sont de nouveau utilisables depuis les tokens
- Pas de notifications de signe draconique quand on regarde les TMR sans monter
- Correction d'un problème de contextes WebGL causé par des ouvertures/fermetures de TMRs
- On peut maintenant prendre un objet d'un acteur-token pour l'ajouter à un autre acteur
- On ne peut plus donner d'objets d'un acteur à un acteur-token
- L'état général est correctement calculé, affiché, et utilisé pour les animaux
- On peut ajouter des blessures manuellement aux animaux
- Le texte de la carte de Tarot "Le Gibet" est corrigé
- Sur Firefox, le calendrier est correctement initialisé, les ajustements astrologiques
ne bloquent plus les jets de dés
## v11.2.1 - La technique d'Akarlikarlikar
- On peut créer des armes pour Corps à corps et Esquive. Barreaux de chaise, armes improvisées, techniques d'art martiaux, pas de côté pour faire trébucher l'adversaire... A vous de voir comment imaginer de nouvelles "armes".
- Les armes avec une résistance de 0 ne peuvent pas être utilisées, une image et un rappel indiquent qu'elles sont cassées
Vu qu'elles ne peuvent pas être utilisées, permet de savoir pourquoi
## v11.2.0 - Les Terres médianes d'Akarlikarlikar
- Les TMRs sont redimensionables
- Nouveaux graphismes plus lisibles dans les TMRs
- Nouveau code couleur des icônes dans les TMR:
- noir: case innaccessible
- rouge: empêche l'usage du haut-rêve
- vert: bonus de tête de dragon permanent
- bleu: la case doit être vaincue
- blanc: effet temporaire (sort en réserve, présent des cités)
- Fix: les déplacements aléatoires prennent bien compte des colonnes paires/impaires
- Fix: Le Tricollet prend deux "L"
- Fix: Les jets d'encaissement forcés par le gardien à un résultat inférieur à 11 ne peuvent plus donner un deuxième d10 négatif
# v11.1
## v11.1.6 - Les dissections de Werther de Zloth
- Fix: on peut de nouveau donner des compétences aux créatures
- Fix: le délai de guérison d'une blessure rétrogradée est correctement appliqué
- Fix: l'encaissement à valider par le MJ fonctionne de nouveau
## v11.1.5 - Werther de Zloth l'Onirique
- Fixes:
- la demande de défense ne marchait plus
@ -48,6 +144,7 @@
- certaines macros ne marchaient pas pour les créatures/entités/véhicules/commerces
- en cas de charge, les particulières sont toujours en force (p125)
# v11.0
## v11.0.28 - les fractures de Khrachtchoum
- La gravité de la blessure est affichée dans le résumé de l'encaissement
- Lors du changement d'acteur pendant le round

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.1 KiB

After

Width:  |  Height:  |  Size: 8.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.4 KiB

After

Width:  |  Height:  |  Size: 11 KiB

BIN
icons/empoignade.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.4 KiB

1
icons/tmr/attache.svg Normal file
View File

@ -0,0 +1 @@
<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>

After

Width:  |  Height:  |  Size: 3.0 KiB

1
icons/tmr/conquete.svg Normal file
View File

@ -0,0 +1 @@
<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>

After

Width:  |  Height:  |  Size: 3.1 KiB

View File

@ -0,0 +1 @@
<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>

After

Width:  |  Height:  |  Size: 2.8 KiB

124
icons/tmr/demi-reve.svg Normal file
View File

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

After

Width:  |  Height:  |  Size: 5.9 KiB

View File

@ -0,0 +1,55 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
viewBox="0 0 512 512"
style="height: 512px; width: 512px;"
version="1.1"
id="svg6"
sodipodi:docname="desorientation.svg"
inkscape:version="1.0.1 (3bc2e813f5, 2020-09-07)">
<metadata
id="metadata12">
<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>
<defs
id="defs10" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1599"
inkscape:window-height="932"
id="namedview8"
showgrid="false"
inkscape:zoom="1.3119567"
inkscape:cx="256"
inkscape:cy="256"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="0"
inkscape:current-layer="svg6" />
<path
d="m 203.97,23 -18.032,4.844 11.656,43.468 c -25.837,8.076 -50.32,21.653 -71.594,40.75 l -31.47,-31.468 -13.218,13.22 31.376,31.374 c -19.467,21.125 -33.414,45.53 -41.813,71.343 l -42.313,-11.343 -4.843,18.063 42.25,11.313 c -6.057,27.3 -6.157,55.656 -0.345,83 l -41.904,11.216 4.843,18.064 41.812,-11.22 c 6.693,21.225 17.114,41.525 31.25,59.876 l -29.97,52.688 -16.81,29.593 29.56,-16.842 52.657,-29.97 c 18.41,14.216 38.784,24.69 60.094,31.407 l -11.22,41.844 18.033,4.81 11.218,-41.905 c 27.345,5.808 55.698,5.686 83,-0.375 l 11.312,42.28 18.063,-4.81 -11.344,-42.376 c 25.812,-8.4 50.217,-22.315 71.342,-41.78 l 31.375,31.373 13.22,-13.218 -31.47,-31.47 c 19.09,-21.266 32.643,-45.738 40.72,-71.563 l 43.53,11.657 4.813,-18.063 -43.625,-11.686 c 5.68,-27.044 5.576,-55.06 -0.344,-82.063 l 43.97,-11.78 -4.813,-18.063 L 440.908,197 c -6.73,-20.866 -17.08,-40.79 -31.032,-58.844 l 29.97,-52.656 16.842,-29.563 -29.593,16.844 -52.656,29.97 C 356.441,88.876 336.565,78.553 315.782,71.845 l 11.783,-44 L 309.5,23 297.72,66.97 c -27,-5.925 -55.02,-6.05 -82.064,-0.376 z m 201.56,85 -108.28,190.313 -0.75,0.437 -40.844,-40.875 -148.72,148.72 -2.186,1.25 109.125,-191.75 41.78,41.78 L 405.532,108 Z m -149.686,10.594 c 21.858,0 43.717,5.166 63.594,15.47 l -116.625,66.342 -2.22,1.28 -1.28,2.22 -66.25,116.406 c -26.942,-52.04 -18.616,-117.603 25.03,-161.25 26.99,-26.988 62.38,-40.468 97.75,-40.468 z m 122.72,74.594 c 26.994,52.054 18.67,117.672 -25.002,161.343 -43.66,43.662 -109.263,52.005 -161.312,25.033 l 116.438,-66.282 2.25,-1.25 1.25,-2.25 66.375,-116.592 z"
fill="#d0021b"
fill-opacity="1"
id="path2"
style="fill:#401060;fill-opacity:1" />
</svg>

After

Width:  |  Height:  |  Size: 3.1 KiB

190
icons/tmr/fermeture.svg Normal file
View File

@ -0,0 +1,190 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
viewBox="0 0 512 512"
style="height: 512px; width: 512px;"
version="1.1"
id="svg52"
sodipodi:docname="fermeture.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="1680"
inkscape:window-height="1083"
id="namedview54"
showgrid="false"
inkscape:zoom="1.5990661"
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"
transform="matrix(1.1287777,0,0,1.1287777,-32.967091,-40.026839)">
<path
d="M 72.877,31.904 C 71.887,31.89 70.919,31.91 69.889,32.002 43.67,35.408 22.545,61.005 18,93.775 v 26.15 c 2.296,16.266 8.804,30.665 17.848,41.565 -6.58,1.237 -12.504,3.53 -17.848,6.717 v 23.813 c 22.983,0.386 43.265,14.03 57.31,34.318 C 89.56,246.92 98,274.598 98,305 98,335.402 89.56,363.08 75.31,383.662 61.266,403.95 40.984,417.592 18,417.98 v 8.577 L 23.03,494 H 30.7 L 138.904,332.176 140,304 c 0.732,-41.132 16.536,-59.598 32,-48 4.26,3.195 8.3,6.024 12.135,8.533 l 23.574,-35.258 c -21.607,-17.4 -59.103,-43.23 -90.68,-68.658 10.89,-13.647 17.894,-32.612 17.894,-53.627 C 134.924,65.494 108.478,32 76,32 74.88,31.964 73.867,31.918 72.877,31.904 Z m 366.246,0 c -0.99,0.014 -2.002,0.06 -3.123,0.096 -32.478,0 -58.924,33.494 -58.924,74.99 0,21.015 7.005,39.98 17.895,53.627 -31.577,25.43 -69.073,51.26 -90.68,68.658 l 23.577,35.258 A 232.03,232.03 0 0 0 340,256 c 15.464,-11.598 31.268,6.868 32,48 l 1.096,28.174 L 481.3,494 h 7.67 L 494,426.557 v -8.578 C 471.017,417.591 450.735,403.949 436.69,383.661 422.44,363.08 414,335.402 414,305 c 0,-30.402 8.44,-58.08 22.69,-78.662 14.045,-20.288 34.327,-33.932 57.31,-34.318 v -23.813 c -5.344,-3.187 -11.27,-5.48 -17.848,-6.717 9.044,-10.9 15.552,-25.3 17.848,-41.566 V 93.774 C 489.454,61.004 468.33,35.408 442.11,32.002 a 28.52,28.52 0 0 0 -2.987,-0.098 z m -290.365,14.854 40.068,110.215 47.34,-31.653 z m 214.484,0 -87.408,78.562 47.34,31.653 z M 230.25,150.93 213.625,162.047 435.588,494 h 24.057 z m 51.5,0 -14.922,22.316 12.03,17.99 19.517,-29.19 z M 18,210.018 v 189.964 c 15.993,-0.38 30.943,-9.855 42.512,-26.566 C 72.322,356.356 80,332.036 80,305 80,277.965 72.322,253.643 60.512,236.584 48.942,219.874 33.992,210.398 18,210.018 Z m 476,0 c -15.993,0.38 -30.943,9.855 -42.512,26.566 C 439.678,253.644 432,277.964 432,305 c 0,27.035 7.678,51.357 19.488,68.416 11.57,16.71 26.52,26.186 42.512,26.566 z M 233.145,223.62 52.355,494 H 76.412 L 245.174,241.61 Z M 134.748,439.14 98.066,494 h 34.55 z m 242.504,0 2.13,54.86 h 34.552 z"
fill="#003fb2"
fill-opacity="1"
transform="matrix(0.9,0,0,0.9,25.6,25.6)"
filter="url(#shadow-1)"
id="path48" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 6.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 44 KiB

1
icons/tmr/maitrisee.svg Normal file
View File

@ -0,0 +1 @@
<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>

After

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 25 KiB

1
icons/tmr/pelerinage.svg Normal file
View File

@ -0,0 +1 @@
<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>

After

Width:  |  Height:  |  Size: 2.7 KiB

1
icons/tmr/periple.svg Normal file
View File

@ -0,0 +1 @@
<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>

After

Width:  |  Height:  |  Size: 2.4 KiB

1
icons/tmr/present.svg Normal file
View File

@ -0,0 +1 @@
<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>

After

Width:  |  Height:  |  Size: 2.3 KiB

1
icons/tmr/rencontre.svg Normal file
View File

@ -0,0 +1 @@
<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>

After

Width:  |  Height:  |  Size: 4.0 KiB

1
icons/tmr/reserve.svg Normal file
View File

@ -0,0 +1 @@
<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>

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 45 KiB

View File

@ -0,0 +1,102 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
viewBox="0 0 512 512"
style="height: 256px; width: 256px;"
version="1.1"
id="svg24"
sodipodi:docname="sort-reserve-humide3.svg"
inkscape:version="1.0.1 (3bc2e813f5, 2020-09-07)">
<metadata
id="metadata30">
<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>
<defs
id="defs28" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="2794"
inkscape:window-height="1756"
id="namedview26"
showgrid="false"
inkscape:zoom="2.8786993"
inkscape:cx="323.66586"
inkscape:cy="227.70764"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="0"
inkscape:current-layer="svg24" />
<g
id="g881"
transform="translate(2.1482304,2.80716)">
<path
d="m 243.94189,104.37921 -82.23331,178.13543 82.23331,27.44784 z"
class=""
fill="#f4e3d7"
fill-opacity="1"
id="path2"
style="stroke-width:1.10232" />
<path
d="m 263.7837,104.37921 v 205.58327 l 82.23331,-27.44784 z"
class=""
fill="#f4e3d7"
fill-opacity="1"
id="path4"
style="stroke-width:1.10232" />
<path
d="M 168.21228,221.005 18.274279,239.7445 141.75653,278.32581 Z"
class=""
fill="#f4e3d7"
fill-opacity="1"
id="path6"
style="stroke-width:1.10232" />
<path
d="M 339.51331,221.005 365.96906,278.32581 489.5395,239.7445 Z"
class=""
fill="#f4e3d7"
fill-opacity="1"
id="path8"
style="stroke-width:1.10232" />
<path
d="M -0.24475089,254.73609 114.97007,398.80973 230.27308,326.7178 Z"
class=""
fill="#f4e3d7"
fill-opacity="1"
id="path10"
style="stroke-width:1.10232" />
<path
d="M 507.94829,254.73609 277.45251,326.7178 392.75552,398.80973 Z"
class=""
fill="#f4e3d7"
fill-opacity="1"
id="path12"
style="stroke-width:1.10232" />
<path
d="M 253.8628,335.42615 147.37837,402.00647 H 360.34722 Z"
class=""
fill="#f4e3d7"
fill-opacity="1"
id="path14"
style="stroke-width:1.10232" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.9 KiB

132
icons/tmr/sort-reserve.svg Normal file
View File

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

After

Width:  |  Height:  |  Size: 6.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

126
icons/tmr/trounoir.svg Normal file
View File

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

After

Width:  |  Height:  |  Size: 6.0 KiB

1
icons/tmr/urgence.svg Normal file
View File

@ -0,0 +1 @@
<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>

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

View File

@ -1,55 +1,56 @@
{
"TYPES": {
"Actor": {
"Personnage": "Personnage",
"Creature": "Créature",
"Entite": "Entité de cauchemar",
"Commerce": "Commerce",
"Vehicule": "Véhicule"
"personnage": "Personnage",
"creature": "Créature",
"entite": "Entité de cauchemar",
"commerce": "Commerce",
"vehicule": "Véhicule"
},
"Item": {
"Arme": "Arme",
"Armure": "Armure",
"Blessure": "Blessure",
"Casetmr": "TMR spéciale",
"Chant": "Chant",
"Competence": "Compétence",
"Competencecreature": "Compétence de créature",
"Conteneur": "Conteneur",
"Danse": "Danse",
"Extraitpoetique": "Extrait poetique",
"Faune": "Faune",
"Gemme": "Gemme",
"Herbe": "Herbe",
"Ingredient": "Ingrédient",
"Jeu": "Jeu",
"Livre": "Livre",
"Maladie": "Maladie",
"Meditation": "Méditation",
"Monnaie": "Monnaie",
"Munition": "Munition",
"Musique": "Musique",
"Nombreastral": "Nombre astral",
"Nourritureboisson": "Nourriture & boisson",
"Objet": "Objet",
"Oeuvre": "Oeuvre",
"Ombre": "Ombre de Thanatos",
"Plante": "Plante",
"Poison": "Poison",
"Possession": "Possession",
"Potion": "Potion",
"Queue": "Queue de Dragon",
"Recettealchimique": "Recette alchimique",
"Recettecuisine": "Recette de cuisine",
"Rencontre": "Rencontre TMR",
"Service": "Service",
"Signedraconique": "Signe draconique",
"Sort": "Sort",
"Sortreserve": "Sort en réserve",
"Souffle": "Souffle de Dragon",
"Tache": "Tâche",
"Tarot": "Carte de tarot",
"Tete": "te de Dragon"
"arme": "Arme",
"armure": "Armure",
"blessure": "Blessure",
"casetmr": "Case TMR spéciale",
"chant": "Chant",
"competence": "Compétence",
"competencecreature": "Compétence de créature",
"conteneur": "Conteneur",
"danse": "Danse",
"empoignade": "Empoignade",
"extraitpoetique": "Extrait poetique",
"faune": "Faune",
"gemme": "Gemme",
"herbe": "Herbe",
"ingredient": "Ingrédient",
"jeu": "Jeu",
"livre": "Livre",
"maladie": "Maladie",
"meditation": "Méditation",
"monnaie": "Monnaie",
"munition": "Munition",
"musique": "Musique",
"nombreastral": "Nombre astral",
"nourritureboisson": "Nourriture & boisson",
"objet": "Objet",
"oeuvre": "Oeuvre",
"ombre": "Ombre de Thanatos",
"plante": "Plante",
"poison": "Poison",
"possession": "Possession",
"potion": "Potion",
"queue": "Queue de Dragon",
"recettealchimique": "Recette alchimique",
"recettecuisine": "Recette de cuisine",
"rencontre": "Rencontre TMR",
"service": "Service",
"signedraconique": "Signe draconique",
"sort": "Sort",
"sortreserve": "Sort en réserve",
"souffle": "Souffle de Dragon",
"tache": "Tâche",
"tarot": "Carte de tarot",
"tete": "Tête de Dragon"
}
},
"EFFECT": {

View File

@ -15,14 +15,16 @@ import { RdDBaseActorReveSheet } from "./actor/base-actor-reve-sheet.js";
import { RdDItem } from "./item.js";
import { RdDItemBlessure } from "./item/blessure.js";
import { RdDEmpoignade } from "./rdd-empoignade.js";
import { RdDBaseActorSangSheet } from "./actor/base-actor-sang-sheet.js";
import { ChatUtility } from "./chat-utility.js";
import { RdDCoeur } from "./coeur/rdd-coeur.js";
/* -------------------------------------------- */
/**
* Extend the basic ActorSheet with some very simple modifications
* @extends {ActorSheet}
*/
export class RdDActorSheet extends RdDBaseActorReveSheet {
export class RdDActorSheet extends RdDBaseActorSangSheet {
/** @override */
static get defaultOptions() {
@ -118,6 +120,18 @@ export class RdDActorSheet extends RdDBaseActorReveSheet {
HtmlUtility.showControlWhen(this.html.find(".appliquerFatigue"), ReglesOptionnelles.isUsing("appliquer-fatigue"));
this.html.find('.subacteur-open').click(async event => {
const subActorId = RdDSheetUtility.getEventItemData(event, 'subactor-id');
this.openSubActeur(subActorId);
})
this.html.find('.show-hide-competences').click(async event => {
this.options.showCompNiveauBase = !this.options.showCompNiveauBase;
this.render(true);
});
this.html.find('.visu-tmr').click(async event => this.actor.displayTMR("visu"))
// Everything below here is only needed if the sheet is editable
if (!this.options.editable) return;
@ -126,35 +140,20 @@ export class RdDActorSheet extends RdDBaseActorReveSheet {
this.actor.conjurerPossession(poss)
})
this.html.find('.subacteur-label a').click(async event => {
let actorId = RdDSheetUtility.getEventItemData(event, 'actor-id');
let actor = game.actors.get(actorId);
if (actor) {
actor.sheet.render(true);
}
});
this.html.find('.subacteur-coeur-toggle a').click(async event => {
const subActorIdactorId = RdDSheetUtility.getEventItemData(event, 'subactor-id')
const coeurNombre = $(event.currentTarget).data('numero-coeur')
RdDCoeur.toggleSubActeurCoeur(this.actor.id, subActorIdactorId, coeurNombre)
})
this.html.find('.subacteur-tendre-moment').click(async event => {
const subActorId = RdDSheetUtility.getEventItemData(event, 'subactor-id')
RdDCoeur.startSubActeurTendreMoment(this.actor.id, subActorId)
})
this.html.find('.subacteur-delete').click(async event => {
const li = RdDSheetUtility.getEventElement(event);
const actorId = li.data("actor-id");
if (actorId) {
const subActor = game.actors.get(actorId);
RdDUtility.confirmerSuppressionSubacteur(this, subActor, li, () => {
console.log('Delete : ', subActor.id);
this.actor.removeSubacteur(subActor.id);
RdDUtility.slideOnDelete(this, li);
});
}
});
this.html.find('.experiencelog-delete').click(async event => {
const li = this.html.find(event.currentTarget)?.parents(".experiencelog");
const key = Number(li.data("key") ?? -1);
await this.actor.deleteExperienceLog(key, 1);
});
this.html.find('.experiencelog-delete-previous').click(async event => {
const li = this.html.find(event.currentTarget)?.parents(".experiencelog");
const key = Number(li.data("key") ?? -1);
await this.actor.deleteExperienceLog(0, key + 1);
});
const subActorId = li.data("subactor-id");
this.deleteSubActeur(subActorId, li);
})
this.html.find("input.derivee-value[name='system.compteurs.stress.value']").change(async event => {
this.actor.updateCompteurValue("stress", parseInt(event.target.value));
});
@ -162,16 +161,11 @@ export class RdDActorSheet extends RdDBaseActorReveSheet {
this.actor.updateCompteurValue("experience", parseInt(event.target.value));
});
this.html.find('.creer-tache').click(async event => {
this.createEmptyTache();
});
this.html.find('.creer-tache').click(async event => this.createEmptyTache());
this.html.find('.creer-une-oeuvre').click(async event => this.selectTypeOeuvreToCreate());
this.html.find('.creer-tache-blessure-legere').click(async event => RdDItemBlessure.createTacheSoinBlessure(this.actor, 2));
this.html.find('.creer-tache-blessure-grave').click(async event => RdDItemBlessure.createTacheSoinBlessure(this.actor, 4));
this.html.find('.creer-tache-blessure-critique').click(async event => RdDItemBlessure.createTacheSoinBlessure(this.actor, 6));
this.html.find('.creer-blessure-legere').click(async event => RdDItemBlessure.createBlessure(this.actor, 2));
this.html.find('.creer-blessure-grave').click(async event => RdDItemBlessure.createBlessure(this.actor, 4));
this.html.find('.creer-blessure-critique').click(async event => RdDItemBlessure.createBlessure(this.actor, 6));
this.html.find('.creer-une-oeuvre').click(async event => this.selectTypeOeuvreToCreate());
this.html.find('.blessure-premierssoins-done').change(async event => {
const blessure = this.getBlessure(event);
@ -191,71 +185,44 @@ export class RdDActorSheet extends RdDBaseActorReveSheet {
});
// 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('.chance-actuelle').click(async event => this.actor.rollCarac('chance-actuelle'))
// Roll Carac
this.html.find('.chance-actuelle').click(async event => {
this.actor.rollCarac('chance-actuelle');
});
this.html.find('.chance-appel').click(async event => this.actor.rollAppelChance())
this.html.find('.chance-appel').click(async event => {
this.actor.rollAppelChance();
});
this.html.find('[name="jet-astrologie"]').click(async event => this.actor.astrologieNombresAstraux())
this.html.find('.tache-label a').click(async event => this.actor.rollTache(RdDSheetUtility.getItemId(event)))
this.html.find('.meditation-label a').click(async event => this.actor.rollMeditation(RdDSheetUtility.getItemId(event)))
// Roll Skill
this.html.find('[name="jet-astrologie"]').click(async event => {
this.actor.astrologieNombresAstraux();
});
this.html.find('.tache-label a').click(async event => {
this.actor.rollTache(RdDSheetUtility.getItemId(event));
});
this.html.find('.meditation-label a').click(async event => {
this.actor.rollMeditation(RdDSheetUtility.getItemId(event));
});
this.html.find('.chant-label a').click(async event => {
this.actor.rollChant(RdDSheetUtility.getItemId(event));
});
this.html.find('.danse-label a').click(async event => {
this.actor.rollDanse(RdDSheetUtility.getItemId(event));
});
this.html.find('.musique-label a').click(async event => {
this.actor.rollMusique(RdDSheetUtility.getItemId(event));
});
this.html.find('.oeuvre-label a').click(async event => {
this.actor.rollOeuvre(RdDSheetUtility.getItemId(event));
});
this.html.find('.jeu-label a').click(async event => {
this.actor.rollJeu(RdDSheetUtility.getItemId(event));
});
this.html.find('.recettecuisine-label a').click(async event => {
this.actor.rollRecetteCuisine(RdDSheetUtility.getItemId(event));
});
this.html.find('.chant-label a').click(async event => this.actor.rollChant(RdDSheetUtility.getItemId(event)))
this.html.find('.danse-label a').click(async event => this.actor.rollDanse(RdDSheetUtility.getItemId(event)))
this.html.find('.musique-label a').click(async event => this.actor.rollMusique(RdDSheetUtility.getItemId(event)))
this.html.find('.oeuvre-label a').click(async event => this.actor.rollOeuvre(RdDSheetUtility.getItemId(event)))
this.html.find('.jeu-label a').click(async event => this.actor.rollJeu(RdDSheetUtility.getItemId(event)))
this.html.find('.recettecuisine-label a').click(async event => this.actor.rollRecetteCuisine(RdDSheetUtility.getItemId(event)))
// Boutons spéciaux MJs
this.html.find('.forcer-tmr-aleatoire').click(async event => {
this.actor.reinsertionAleatoire("Action MJ");
});
this.html.find('.afficher-tmr').click(async event => {
this.actor.changeTMRVisible();
});
if (game.user.isGM) {
// experience log
this.html.find('.experiencelog-delete').click(async event => {
const li = this.html.find(event.currentTarget)?.parents(".experiencelog");
const key = Number(li.data("key") ?? -1);
await this.actor.deleteExperienceLog(key, 1);
});
this.html.find('.experiencelog-delete-previous').click(async event => {
const li = this.html.find(event.currentTarget)?.parents(".experiencelog");
const key = Number(li.data("key") ?? -1);
await this.actor.deleteExperienceLog(0, key + 1);
});
// Boutons spéciaux MJs
this.html.find('.forcer-tmr-aleatoire').click(async event => this.actor.reinsertionAleatoire("Action MJ"))
this.html.find('.afficher-tmr').click(async event => this.actor.changeTMRVisible())
}
// Points de reve actuel
this.html.find('.ptreve-actuel a').click(async event => {
this.actor.rollCarac('reve-actuel', true);
});
this.html.find('.ptreve-actuel a').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('.arme-label a').click(async event => this.actor.rollArme(duplicate(this._getEventArmeCombat(event))))
// Suite empoignade
this.html.find('.empoignade-label a').click(async event => {
let emp = RdDSheetUtility.getItem(event, this.actor)
RdDEmpoignade.onAttaqueEmpoignadeFromItem(emp)
});
// Roll Weapon1
this.html.find('.arme-label a').click(async event => {
let arme = this._getEventArmeCombat(event);
this.actor.rollArme(duplicate(arme));
});
// Initiative pour l'arme
this.html.find('.arme-initiative a').click(async event => {
let combatant = game.combat.combatants.find(c => c.actor.id == this.actor.id);
@ -267,21 +234,15 @@ export class RdDActorSheet extends RdDBaseActorReveSheet {
}
});
// Display TMR
this.html.find('.visu-tmr').click(async event => { this.actor.displayTMR("visu") })
this.html.find('.monte-tmr').click(async event => { this.actor.displayTMR("normal") })
this.html.find('.monte-tmr-rapide').click(async event => { this.actor.displayTMR("rapide") })
this.html.find('.repos').click(async event => { await this.actor.repos() })
this.html.find('.carac-xp-augmenter').click(async event => {
let caracName = event.currentTarget.name.replace("augmenter.", "");
this.actor.updateCaracXPAuto(caracName);
});
this.html.find('.competence-xp-augmenter').click(async event => {
this.actor.updateCompetenceXPAuto(RdDSheetUtility.getItemId(event));
});
this.html.find('.competence-stress-augmenter').click(async event => {
this.actor.updateCompetenceStress(RdDSheetUtility.getItemId(event));
});
this.html.find('.monte-tmr').click(async event => this.actor.displayTMR("normal"))
this.html.find('.monte-tmr-rapide').click(async event => this.actor.displayTMR("rapide"))
this.html.find('.repos').click(async event => await this.actor.repos())
this.html.find('.carac-xp-augmenter').click(async event => this.actor.updateCaracXPAuto(event.currentTarget.name.replace("augmenter.", "")))
this.html.find('.competence-xp-augmenter').click(async event => this.actor.updateCompetenceXPAuto(RdDSheetUtility.getItemId(event)))
this.html.find('.competence-stress-augmenter').click(async event => this.actor.updateCompetenceStress(RdDSheetUtility.getItemId(event)))
if (this.options.vueDetaillee) {
// On carac change
@ -308,86 +269,28 @@ export class RdDActorSheet extends RdDBaseActorReveSheet {
let compName = event.currentTarget.attributes.compname.value;
this.actor.updateCompetenceArchetype(compName, parseInt(event.target.value));
});
this.html.find('.nouvelle-incarnation').click(async event => this.actor.nouvelleIncarnation())
}
this.html.find('.nouvelle-incarnation').click(async event => {
this.actor.nouvelleIncarnation();
});
this.html.find('.show-hide-competences').click(async event => {
this.options.showCompNiveauBase = !this.options.showCompNiveauBase;
this.render(true);
});
// On pts de reve change
this.html.find('.pointsreve-value').change(async event => {
let reveValue = event.currentTarget.value;
this.actor.update({ "system.reve.reve.value": reveValue });
});
this.html.find('.pointsreve-value').change(async event => this.actor.update({ "system.reve.reve.value": event.currentTarget.value }))
this.html.find('.seuil-reve-value').change(async event => this.actor.setPointsDeSeuil(event.currentTarget.value))
// On seuil de reve change
this.html.find('.seuil-reve-value').change(async event => {
console.log("seuil-reve-value", event.currentTarget)
this.actor.setPointsDeSeuil(event.currentTarget.value);
});
this.html.find('.stress-test').click(async event => this.actor.transformerStress())
this.html.find('.moral-malheureux').click(async event => this.actor.jetDeMoral('malheureuse'))
this.html.find('.moral-neutre').click(async event => this.actor.jetDeMoral('neutre'))
this.html.find('.moral-heureux').click(async event => this.actor.jetDeMoral('heureuse'))
this.html.find('.ethylisme-test').click(async event => this.actor.jetEthylisme())
this.html.find('.stress-test').click(async event => {
this.actor.transformerStress();
});
this.html.find('.moral-malheureux').click(async event => {
this.actor.jetDeMoral('malheureuse');
});
this.html.find('.moral-neutre').click(async event => {
this.actor.jetDeMoral('neutre');
});
this.html.find('.moral-heureux').click(async event => {
this.actor.jetDeMoral('heureuse');
});
this.html.find('.ethylisme-test').click(async event => {
this.actor.jetEthylisme();
});
this.html.find('.jet-vie').click(async event => {
this.actor.jetDeVie();
});
this.html.find('.jet-endurance').click(async event => {
await this.jetEndurance();
});
this.html.find('.vie-plus').click(async event => {
this.actor.santeIncDec("vie", 1);
});
this.html.find('.vie-moins').click(async event => {
this.actor.santeIncDec("vie", -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('.fatigue-plus').click(async event => {
this.actor.santeIncDec("fatigue", 1);
});
this.html.find('.fatigue-moins').click(async event => {
this.actor.santeIncDec("fatigue", -1);
});
}
async jetEndurance() {
const endurance = this.actor.getEnduranceActuelle()
const result = await this.actor.jetEndurance(endurance);
ChatMessage.create({
content: `Jet d'Endurance : ${result.jetEndurance} / ${endurance}
<br>${this.actor.name} a ${result.sonne ? 'échoué' : 'réussi'} son Jet d'Endurance ${result.sonne ? 'et devient Sonné' : ''}`,
whisper: ChatUtility.getWhisperRecipientsAndGMs(this.actor.name)
});
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('.fatigue-plus').click(async event => this.actor.santeIncDec("fatigue", 1))
this.html.find('.fatigue-moins').click(async event => this.actor.santeIncDec("fatigue", -1))
}
getBlessure(event) {
const itemId = this.html.find(event.currentTarget).parents(".item-blessure").data('item-id');
const blessure = this.actor.getItem(itemId, 'blessure');
return blessure;
const blessureId = this.html.find(event.currentTarget).parents(".item-blessure").data('item-id');
return this.actor.getItem(blessureId, 'blessure');
}
isCompetenceAffichable(competence) {
@ -401,6 +304,21 @@ export class RdDActorSheet extends RdDBaseActorReveSheet {
super._onDropActor(event, dragData);
}
openSubActeur(actorId) {
game.actors.get(actorId)?.sheet.render(true)
}
deleteSubActeur(actorId, li) {
if (actorId) {
const subActor = game.actors.get(actorId);
RdDUtility.confirmSubActeurDelete(this, subActor, li, () => {
console.log('Delete : ', subActor.id);
this.actor.deleteSubActeur(subActor.id);
RdDUtility.slideOnDelete(this, li);
});
}
}
/* -------------------------------------------- */
async selectTypeOeuvreToCreate() {
let types = RdDItem.getTypesOeuvres();

View File

@ -34,6 +34,8 @@ import { RdDEmpoignade } from "./rdd-empoignade.js";
import { ExperienceLog, XP_TOPIC } from "./actor/experience-log.js";
import { TYPES } from "./item.js";
import { RdDBaseActorSang } from "./actor/base-actor-sang.js";
import { RdDCoeur } from "./coeur/rdd-coeur.js";
import { DialogChoixXpCarac } from "./dialog-choix-xp-carac.js";
export const MAINS_DIRECTRICES = ['Droitier', 'Gaucher', 'Ambidextre']
@ -55,21 +57,20 @@ export class RdDActor extends RdDBaseActorSang {
/* -------------------------------------------- */
$computeCaracDerivee() {
this.system.carac.force.value = Math.min(this.system.carac.force.value, parseInt(this.system.carac.taille.value) + 4);
this.system.carac.derobee.value = Math.floor(parseInt(((21 - this.system.carac.taille.value)) + parseInt(this.system.carac.agilite.value)) / 2);
let bonusDomKey = Math.floor((parseInt(this.system.carac.force.value) + parseInt(this.system.carac.taille.value)) / 2);
let tailleData = RdDCarac.getCaracDerivee(bonusDomKey);
this.system.attributs.plusdom.value = tailleData.plusdom;
this.system.attributs.sconst.value = RdDCarac.calculSConst(this.system.carac.constitution.value);
this.system.attributs.sust.value = RdDCarac.getCaracDerivee(this.system.carac.taille.value).sust;
this.system.attributs.encombrement.value = (parseInt(this.system.carac.force.value) + parseInt(this.system.carac.taille.value)) / 2;
this.system.carac.melee.value = Math.floor((parseInt(this.system.carac.force.value) + parseInt(this.system.carac.agilite.value)) / 2);
this.system.carac.tir.value = Math.floor((parseInt(this.system.carac.vue.value) + parseInt(this.system.carac.dexterite.value)) / 2);
this.system.carac.lancer.value = Math.floor((parseInt(this.system.carac.tir.value) + parseInt(this.system.carac.force.value)) / 2);
this.system.carac.derobee.value = Math.floor(parseInt(((21 - this.system.carac.taille.value)) + parseInt(this.system.carac.agilite.value)) / 2);
let bonusDomKey = Math.floor((parseInt(this.system.carac.force.value) + parseInt(this.system.carac.taille.value)) / 2);
let tailleData = RdDCarac.getCaracDerivee(bonusDomKey);
this.system.attributs.plusdom.value = tailleData.plusdom;
this.system.attributs.encombrement.value = (parseInt(this.system.carac.force.value) + parseInt(this.system.carac.taille.value)) / 2;
this.system.attributs.sconst.value = RdDCarac.calculSConst(this.system.carac.constitution.value);
this.system.attributs.sust.value = RdDCarac.getCaracDerivee(this.system.carac.taille.value).sust;
this.system.sante.vie.max = Math.ceil((parseInt(this.system.carac.taille.value) + parseInt(this.system.carac.constitution.value)) / 2);
this.system.sante.vie.value = Math.min(this.system.sante.vie.value, this.system.sante.vie.max)
@ -83,29 +84,27 @@ export class RdDActor extends RdDBaseActorSang {
this.system.compteurs.chance.max = this.system.carac.chance.value;
}
$computeIsHautRevant() {
this.system.attributs.hautrevant.value = this.itemTypes['tete'].find(it => Grammar.equalsInsensitive(it.name, 'don de haut-reve'))
? "Haut rêvant"
: "";
}
/* -------------------------------------------- */
canReceive(item) {
return ![TYPES.competencecreature, TYPES.tarot, TYPES.service].includes(item.type)
}
/* -------------------------------------------- */
isPersonnage() { return true }
isHautRevant() { return this.system.attributs.hautrevant.value != "" }
getReveActuel() {
return Misc.toInt(this.system.reve?.reve?.value ?? this.carac.reve.value);
}
getChanceActuel() {
return Misc.toInt(this.system.compteurs.chance?.value ?? 10);
}
/* -------------------------------------------- */
getAgilite() { return Number(this.system.carac.agilite?.value ?? 0) }
getChance() { return Number(this.system.carac.chance?.value ?? 0) }
/* -------------------------------------------- */
getMoralTotal() {
return Number(this.system.compteurs.moral?.value ?? 0);
}
getReveActuel() { return Misc.toInt(this.system.reve?.reve?.value ?? this.carac.reve.value) }
getChanceActuel() { return Misc.toInt(this.system.compteurs.chance?.value ?? 10) }
getMoralTotal() { return Number(this.system.compteurs.moral?.value ?? 0) }
/* -------------------------------------------- */
getEtatGeneral(options = { ethylisme: false }) {
@ -130,41 +129,19 @@ export class RdDActor extends RdDBaseActorSang {
}
/* -------------------------------------------- */
getTache(id) {
return this.findItemLike(id, 'tache');
}
getMeditation(id) {
return this.findItemLike(id, 'meditation');
}
getChant(id) {
return this.findItemLike(id, 'chant');
}
getDanse(id) {
return this.findItemLike(id, 'danse');
}
getMusique(id) {
return this.findItemLike(id, 'musique');
}
getOeuvre(id, type = 'oeuvre') {
return this.findItemLike(id, type);
}
getJeu(id) {
return this.findItemLike(id, 'jeu');
}
getRecetteCuisine(id) {
return this.findItemLike(id, 'recettecuisine');
}
/* -------------------------------------------- */
getDraconicList() {
return this.itemTypes[TYPES.competence].filter(it => it.system.categorie == 'draconic')
}
/* -------------------------------------------- */
getBestDraconic() {
const list = this.getDraconicList()
.sort(Misc.descending(it => it.system.niveau))
return duplicate(list[0])
}
getTache(id) { return this.findItemLike(id, 'tache') }
getMeditation(id) { return this.findItemLike(id, 'meditation') }
getChant(id) { return this.findItemLike(id, 'chant') }
getDanse(id) { return this.findItemLike(id, 'danse') }
getMusique(id) { return this.findItemLike(id, 'musique') }
getOeuvre(id, type = 'oeuvre') { return this.findItemLike(id, type) }
getJeu(id) { return this.findItemLike(id, 'jeu') }
getRecetteCuisine(id) { return this.findItemLike(id, 'recettecuisine') }
/* -------------------------------------------- */
getDemiReve() { return this.system.reve.tmrpos.coord }
getDraconicList() { return this.itemTypes[TYPES.competence].filter(it => it.system.categorie == 'draconic') }
getBestDraconic() { return duplicate(this.getDraconicList().sort(Misc.descending(it => it.system.niveau)).find(it => true)) }
getDraconicOuPossession() {
return [...this.getDraconicList().filter(it => it.system.niveau >= 0),
super.getDraconicOuPossession()]
@ -172,36 +149,36 @@ export class RdDActor extends RdDBaseActorSang {
.find(it => true)
}
getDemiReve() {
return this.system.reve.tmrpos.coord;
}
/* -------------------------------------------- */
async verifierPotionsEnchantees() {
let potionsEnchantees = this.filterItems(it => it.type == 'potion' && it.system.categorie.toLowerCase().includes('enchant'));
for (let potion of potionsEnchantees) {
if (!potion.system.prpermanent) {
console.log(potion);
let newPr = (potion.system.pr > 0) ? potion.system.pr - 1 : 0;
let update = { _id: potion._id, 'system.pr': newPr };
const updated = await this.updateEmbeddedDocuments('Item', [update]); // Updates one EmbeddedEntity
async $perteRevePotionsEnchantees() {
let potions = this.itemTypes[TYPES.potion]
.filter(it => Grammar.includesLowerCaseNoAccent(it.system.categorie, 'enchanté') && !it.system.prpermanent)
let messageData = {
pr: newPr,
const potionUpdates = await Promise.all(potions.map(async it => {
const nouveauReve = Math.max(it.system.pr - 1, 0)
ChatMessage.create({
whisper: ChatUtility.getWhisperRecipientsAndGMs(this.name),
content: await renderTemplate(`systems/foundryvtt-reve-de-dragon/templates/chat-potionenchantee-chateaudormant.html`, {
pr: nouveauReve,
alias: this.name,
potionName: potion.name,
potionImg: potion.img
}
ChatMessage.create({
whisper: ChatUtility.getWhisperRecipientsAndGMs(this.name),
content: await renderTemplate(`systems/foundryvtt-reve-de-dragon/templates/chat-potionenchantee-chateaudormant.html`, messageData)
});
potionName: it.name,
potionImg: it.img
})
})
return {
_id: it._id,
'system.pr': nouveauReve,
'system.quantite': nouveauReve > 0 ? it.system.quantite : 0
}
}
}))
await this.updateEmbeddedDocuments('Item', potionUpdates);
}
/* -------------------------------------------- */
hasArmeeMeleeEquipee() { // Return true si l'acteur possède au moins 1 arme de mêlée équipée
/** --------------------------------------------
* @returns true si l'acteur possède au moins 1 arme de mêlée équipée
*/
hasArmeeMeleeEquipee() {
return this.itemTypes['arme'].find(it => it.system.equipe && it.system.competence != "")
}
@ -229,12 +206,12 @@ export class RdDActor extends RdDBaseActorSang {
}
/* -------------------------------------------- */
async grisReve(nGrisReve) {
async grisReve(nbJours) {
let message = {
whisper: ChatUtility.getWhisperRecipientsAndGMs(this.name),
content: `${nGrisReve} jours de gris rêve sont passés. `
content: `${nbJours} jours de gris rêve sont passés. `
};
for (let i = 0; i < nGrisReve; i++) {
for (let i = 0; i < nbJours; i++) {
await this.dormir(4, { grisReve: true });
await this._recuperationSante(message);
@ -252,17 +229,16 @@ export class RdDActor extends RdDBaseActorSang {
}
async _recuperationSante(message) {
const maladiesPoisons = this._maladiePoisons(message);
const maladiesPoisons = this.getMaladiePoisons();
const isMaladeEmpoisonne = maladiesPoisons.length > 0;
this._messageRecuperationMaladiePoisons(maladiesPoisons, message);
await this._recuperationBlessures(message, isMaladeEmpoisonne);
await this._recupererBlessures(message, isMaladeEmpoisonne);
await this._recupererVie(message, isMaladeEmpoisonne);
}
_maladiePoisons(message) {
const actifs = this.items.filter(item => item.type == 'maladie' || (item.type == 'poison' && item.system.active));
return actifs;
getMaladiePoisons() {
return this.items.filter(item => item.type == 'maladie' || (item.type == 'poison' && item.system.active));
}
_messageRecuperationMaladiePoisons(maladiesPoisons, message) {
@ -275,12 +251,9 @@ export class RdDActor extends RdDBaseActorSang {
case 1: message.content += ` d'un mal inconnu`; break;
default: message.content += ` de ${nonIdentifies.length} maux inconnus`; break;
}
if (identifies.length > 0 && nonIdentifies.length > 0) { message.content += ' et' }
if (identifies.length > 0) {
if (nonIdentifies > 0) {
message.content += ' et';
} else {
message.content += ' de ' + identifies.map(it => it.name).reduce(Misc.joining(', '));
}
message.content += ' de ' + identifies.map(it => it.name).reduce(Misc.joining(', '));
}
}
}
@ -300,7 +273,8 @@ export class RdDActor extends RdDBaseActorSang {
await this.retourSeuilDeReve(message);
await this.setBonusPotionSoin(0);
await this.retourSust(message);
await this.verifierPotionsEnchantees();
await this.$perteRevePotionsEnchantees();
await RdDCoeur.applyCoeurChateauDormant(this, message)
if (message.content != "") {
message.content = `A la fin Chateau Dormant, ${message.content}<br>Un nouveau jour se lève`;
ChatMessage.create(message);
@ -367,7 +341,7 @@ export class RdDActor extends RdDBaseActorSang {
}
/* -------------------------------------------- */
async _recuperationBlessures(message, isMaladeEmpoisonne) {
async _recupererBlessures(message, isMaladeEmpoisonne) {
const timestamp = game.system.rdd.calendrier.getTimestamp()
const blessures = this.filterItems(it => it.system.gravite > 0, TYPES.blessure).sort(Misc.ascending(it => it.system.gravite))
@ -428,7 +402,7 @@ export class RdDActor extends RdDBaseActorSang {
content: 'Remise à neuf de ' + this.name
});
await this.supprimerBlessures(it => true);
await this.removeEffects(e => e.flags.core.statusId !== STATUSES.StatusDemiReve);
await this.removeEffects(e => e.id != STATUSES.StatusDemiReve);
const updates = {
'system.sante.endurance.value': this.system.sante.endurance.max,
'system.sante.vie.value': this.system.sante.vie.max,
@ -661,7 +635,7 @@ export class RdDActor extends RdDBaseActorSang {
/* -------------------------------------------- */
async sortMisEnReserve(sort, draconic, coord, ptreve) {
await this.createEmbeddedDocuments("Item", [{
type: 'sortreserve',
type: TYPES.sortreserve,
name: sort.name,
img: sort.img,
system: { sortid: sort._id, draconic: (draconic?.name ?? sort.system.draconic), ptreve: ptreve, coord: coord, heurecible: 'Vaisseau' }
@ -688,7 +662,7 @@ export class RdDActor extends RdDBaseActorSang {
this.setPointsDeChance(to);
}
}
let selectedCarac = RdDBaseActor._findCaracByName(this.system.carac, caracName);
let selectedCarac = this.findCaracByName(caracName);
const from = selectedCarac.value
await this.update({ [`system.carac.${caracName}.value`]: to });
await ExperienceLog.add(this, XP_TOPIC.CARAC, from, to, caracName);
@ -699,7 +673,7 @@ export class RdDActor extends RdDBaseActorSang {
if (caracName == 'Taille') {
return;
}
let selectedCarac = RdDBaseActor._findCaracByName(this.system.carac, caracName);
let selectedCarac = this.findCaracByName(caracName);
if (!selectedCarac.derivee) {
const from = Number(selectedCarac.xp);
await this.update({ [`system.carac.${caracName}.xp`]: to });
@ -713,7 +687,7 @@ export class RdDActor extends RdDBaseActorSang {
if (caracName == 'Taille') {
return;
}
let carac = RdDBaseActor._findCaracByName(this.system.carac, caracName);
let carac = this.findCaracByName(caracName);
if (carac) {
carac = duplicate(carac);
const fromXp = Number(carac.xp);
@ -794,10 +768,8 @@ export class RdDActor extends RdDBaseActorSang {
const toNiveau = compValue ?? RdDItemCompetence.getNiveauBase(competence.system.categorie, competence.getCategories());
this.notifyCompetencesTronc(competence, toNiveau);
const fromNiveau = competence.system.niveau;
await this.updateEmbeddedDocuments('Item', [{ _id: competence.id, 'system.niveau': toNiveau }]);
await competence.update({ 'system.niveau': toNiveau });
await ExperienceLog.add(this, XP_TOPIC.NIVEAU, fromNiveau, toNiveau, competence.name, true);
} else {
console.log("Competence not found", idOrName);
}
}
@ -821,13 +793,11 @@ export class RdDActor extends RdDBaseActorSang {
if (isNaN(toXp) || typeof (toXp) != 'number') toXp = 0;
const fromXp = competence.system.xp;
this.checkCompetenceXP(idOrName, toXp);
await this.updateEmbeddedDocuments('Item', [{ _id: competence.id, 'system.xp': toXp }]);
await competence.update({ 'system.xp': toXp });
await ExperienceLog.add(this, XP_TOPIC.XP, fromXp, toXp, competence.name, true);
if (toXp > fromXp) {
RdDUtility.checkThanatosXP(idOrName);
}
} else {
console.log("Competence not found", idOrName);
}
}
@ -837,23 +807,19 @@ export class RdDActor extends RdDBaseActorSang {
if (competence) {
if (isNaN(toXpSort) || typeof (toXpSort) != 'number') toXpSort = 0;
const fromXpSort = competence.system.xp_sort;
await this.updateEmbeddedDocuments('Item', [{ _id: competence.id, 'system.xp_sort': toXpSort }]);
await competence.update({ 'system.xp_sort': toXpSort });
await ExperienceLog.add(this, XP_TOPIC.XPSORT, fromXpSort, toXpSort, competence.name, true);
if (toXpSort > fromXpSort) {
RdDUtility.checkThanatosXP(idOrName);
}
} else {
console.log("Competence not found", idOrName);
}
}
/* -------------------------------------------- */
async updateCompetenceArchetype(idOrName, compValue) {
let competence = this.getCompetence(idOrName);
let competence = this.getCompetence(idOrName)
if (competence) {
await this.updateEmbeddedDocuments('Item', [{ _id: competence.id, 'system.niveau_archetype': Math.max(compValue ?? 0, 0) }]);
} else {
console.log("Competence not found", idOrName);
await competence.update({ 'system.niveau_archetype': Math.max(compValue ?? 0, 0) });
}
}
@ -909,12 +875,6 @@ export class RdDActor extends RdDBaseActorSang {
}
/* -------------------------------------------- */
$computeIsHautRevant() {
this.system.attributs.hautrevant.value = this.itemTypes['tete'].find(it => Grammar.equalsInsensitive(it.name, 'don de haut-reve'))
? "Haut rêvant"
: "";
}
malusEthylisme() {
return Math.min(0, (this.system.compteurs.ethylisme?.value ?? 0));
}
@ -939,7 +899,7 @@ export class RdDActor extends RdDBaseActorSang {
/* -------------------------------------------- */
async ajouterRefoulement(value = 1, refouler) {
const refoulement = this.system.reve.refoulement.value + value;
let refoulement = this.system.reve.refoulement.value + value;
const roll = new Roll("1d20");
await roll.evaluate({ async: true });
await roll.toMessage({ flavor: `${this.name} refoule ${refouler} pour ${value} points de refoulement (total: ${refoulement})` });
@ -1110,17 +1070,6 @@ export class RdDActor extends RdDBaseActorSang {
return `${this.name} a obtenu 1 sur son Jet d'Endurance et a gagné 1 point d'Expérience en Constitution. Ce point d'XP a été ajouté automatiquement.`;
}
/* -------------------------------------------- */
_computeEnduranceMax() {
const diffVie = this.system.sante.vie.max - this.system.sante.vie.value;
const maxEndVie = this.system.sante.endurance.max - (diffVie * 2);
const nbGraves = this.countBlessures(it => it.isGrave()) > 0
const nbCritiques = this.countBlessures(it => it.isCritique()) > 0
const maxEndGraves = Math.floor(this.system.sante.endurance.max / (2 * nbGraves));
const maxEndCritiques = nbCritiques > 0 ? 1 : this.system.sante.endurance.max;
return Math.max(0, Math.min(maxEndVie, maxEndGraves, maxEndCritiques));
}
/* -------------------------------------------- */
async jetDeMoral(situation, messageReussi = undefined, messageManque = undefined) {
const jetMoral = await this._jetDeMoral(situation);
@ -1152,18 +1101,19 @@ export class RdDActor extends RdDBaseActorSang {
/* -------------------------------------------- */
async moralIncDec(ajustementMoral) {
if (ajustementMoral != 0) {
ajustementMoral = Math.sign(ajustementMoral)
let moral = Misc.toInt(this.system.compteurs.moral.value) + ajustementMoral
if (moral > 3) { // exaltation
const exaltation = Misc.toInt(this.system.compteurs.exaltation.value) + ajustementMoral;
await this.updateCompteurValue('exaltation', exaltation);
const startMoral = parseInt(this.system.compteurs.moral.value)
const moralTheorique = startMoral + ajustementMoral
if (moralTheorique > 3) { // exaltation
const ajoutExaltation = moralTheorique - 3
const exaltation = parseInt(this.system.compteurs.exaltation.value) + ajoutExaltation
await this.updateCompteurValue('exaltation', exaltation)
}
if (moral < -3) { // dissolution
const dissolution = Misc.toInt(this.system.compteurs.dissolution.value) - ajustementMoral;
await this.updateCompteurValue('dissolution', dissolution);
if (moralTheorique < -3) { // dissolution
const ajoutDissolution = -3 - moralTheorique
const dissolution = parseInt(this.system.compteurs.dissolution.value) + ajoutDissolution
await this.updateCompteurValue('dissolution', dissolution)
}
moral = Math.max(-3, Math.min(moral, 3));
await this.updateCompteurValue('moral', moral);
await this.updateCompteurValue('moral', Math.max(-3, Math.min(moralTheorique, 3)));
}
return this.system.compteurs.moral.value;
}
@ -1219,8 +1169,8 @@ export class RdDActor extends RdDBaseActorSang {
title: "Nourriture brute",
content: `Que faire de votre ${item.name}`,
buttons: {
'cuisiner': { icon: '<i class="fas fa-check"></i>', label: 'Cuisiner', callback: async () => await this.preparerNourriture(item) },
'manger': { icon: '<i class="fas fa-check"></i>', label: 'Manger cru', callback: async () => await this.mangerNourriture(item, onActionItem) }
'cuisiner': { icon: '<i class="fa-solid fa-utensils"></i>', label: 'Cuisiner', callback: async () => await this.preparerNourriture(item) },
'manger': { icon: '<i class="fa-solid fa-drumstick-bite"></i>', label: 'Manger cru', callback: async () => await this.mangerNourriture(item, onActionItem) }
}
});
return utilisation.render(true);
@ -1310,7 +1260,7 @@ export class RdDActor extends RdDBaseActorSang {
if (exotisme < 0 || qualite < 0) {
const competence = qualite > 0 ? 'cuisine' : undefined
const difficulte = Math.min(exotisme, qualite)
const rolled = await this.doRollCaracCompetence('volonte', competence, difficulte, { title: `tente de surmonter l'exotisme de ${item.name}` })
const rolled = await this.doRollCaracCompetence('volonte', competence, difficulte, { title: `tente de surmonter l'exotisme de ${item.name}` })
return rolled.isSuccess
}
return true;
@ -1525,8 +1475,14 @@ export class RdDActor extends RdDBaseActorSang {
}
/* -------------------------------------------- */
isCaracMax(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) {
let carac = RdDBaseActor._findCaracByName(this.system.carac, caracName);
let carac = this.findCaracByName(caracName);
if (carac && carac.xp > 0) {
const niveauSuivant = Number(carac.value) + 1;
let xpNeeded = RdDCarac.getCaracNextXp(niveauSuivant);
@ -1587,8 +1543,11 @@ export class RdDActor extends RdDBaseActorSang {
async appliquerAjoutExperience(rollData, hideChatMessage = 'show') {
hideChatMessage = hideChatMessage == 'hide' || (Misc.isRollModeHiddenToPlayer() && !game.user.isGM)
let xpData = await this._appliquerExperience(rollData.rolled, rollData.selectedCarac.label, rollData.competence, rollData.jetResistance);
if (xpData) {
const content = await renderTemplate(`systems/foundryvtt-reve-de-dragon/templates/chat-actor-gain-xp.html`, xpData);
if (xpData.length) {
const content = await renderTemplate(`systems/foundryvtt-reve-de-dragon/templates/chat-actor-gain-xp.html`, {
actor: this,
xpData
});
if (hideChatMessage) {
ChatUtility.blindMessageToGM({ content: content });
}
@ -1751,7 +1710,7 @@ export class RdDActor extends RdDBaseActorSang {
if (rollData.competence.name.includes('Thanatos')) { // Si Thanatos
await this.update({ "system.reve.reve.thanatosused": true });
}
let reveActuel = this.system.reve.reve.value;
let reveActuel = parseInt(this.system.reve.reve.value)
if (rolled.isSuccess) { // Réussite du sort !
if (rolled.isPart) {
rollData.depenseReve = Math.max(Math.floor(rollData.depenseReve / 2), 1);
@ -1857,7 +1816,10 @@ export class RdDActor extends RdDBaseActorSang {
}
blessuresASoigner() {
return this.filterItems(it => it.system.gravite > 0 && it.system.gravite <= 6 && !(it.system.premierssoins.done && it.system.soinscomplets.done), 'blessure')
return (this.itemTypes[TYPES.blessure])
.filter(it => it.system.gravite > 0 && it.system.gravite <= 6)
.filter(it => !(it.system.premierssoins.done && it.system.soinscomplets.done))
.sort(Misc.descending(b => (b.system.premierssoins.done ? "A" : "B") + b.system.gravite))
}
async getTacheBlessure(blesse, blessure) {
@ -2315,9 +2277,7 @@ export class RdDActor extends RdDBaseActorSang {
});
return undefined;
}
if (caracName == 'Vie') caracName = 'constitution';
if (caracName == 'derobee') caracName = 'agilite';
if (caracName == 'reve-actuel') caracName = 'reve';
let xp = Math.abs(rolled.finalLevel);
// impair: arrondi inférieur en carac
let xpCarac = competence ? Math.floor(xp / 2) : Math.max(Math.floor(xp / 2), 1);
@ -2330,11 +2290,10 @@ export class RdDActor extends RdDBaseActorSang {
// max 1 xp sur jets de résistance
xpCarac = Math.min(1, xpCarac);
}
let xpData = { alias: this.name, caracName, xpCarac, competence, xpCompetence };
await this._xpCompetence(xpData);
await this._xpCarac(xpData);
return xpData;
return [
...(await this._xpCompetence({ competence, xpCompetence })),
...(await this._xpCarac({ caracName, xpCarac }))
];
}
/* -------------------------------------------- */
@ -2342,31 +2301,67 @@ export class RdDActor extends RdDBaseActorSang {
if (xpData.competence) {
const from = Number(xpData.competence.system.xp);
const to = from + xpData.xpCompetence;
let update = { _id: xpData.competence._id, 'system.xp': to };
await this.updateEmbeddedDocuments('Item', [update]);
await this.updateEmbeddedDocuments('Item', [{ _id: xpData.competence._id, 'system.xp': to }]);
xpData.checkComp = await this.checkCompetenceXP(xpData.competence.name, undefined, false);
await ExperienceLog.add(this, XP_TOPIC.XP, from, to, xpData.competence.name);
return [xpData]
}
return []
}
/* -------------------------------------------- */
async _xpCarac(xpData) {
if (xpData.xpCarac > 0) {
let carac = duplicate(this.system.carac);
let selectedCarac = RdDBaseActor._findCaracByName(carac, xpData.caracName);
if (!selectedCarac.derivee) {
const from = Number(selectedCarac.xp);
const to = from + xpData.xpCarac;
selectedCarac.xp = to;
await this.update({ "system.carac": carac });
xpData.checkCarac = await this.checkCaracXP(selectedCarac.label, false);
await ExperienceLog.add(this, XP_TOPIC.XPCARAC, from, to, xpData.caracName);
const carac = duplicate(this.system.carac)
const code = RdDBaseActor._findCaracNode(carac, xpData.caracName)
const selectedCarac = carac[code]
if (this.isCaracMax(code)) {
ui.notifications.info(`Pas d'expérience: la caractéristique '${selectedCarac.label}' est déjà au maximum pour ${this.name}`)
return []
}
if (selectedCarac && !selectedCarac.derivee) {
const from = Number(selectedCarac.xp)
const to = from + xpData.xpCarac
selectedCarac.xp = to
await this.update({ "system.carac": carac })
xpData.checkCarac = await this.checkCaracXP(selectedCarac.label, false)
await ExperienceLog.add(this, XP_TOPIC.XPCARAC, from, to, xpData.caracName)
return [xpData]
} else {
xpData.caracRepartitionManuelle = true;
return await this._xpCaracDerivee(xpData)
}
}
return []
}
async _xpCaracDerivee(xpData) {
const caracs = RdDActor._getComposantsCaracDerivee(xpData.caracName)
.map(c => mergeObject(this.system.carac[c], { isMax: this.isCaracMax(c) }))
switch (caracs.filter(it => !it.isMax).length) {
case 0:
xpData.caracRepartitionManuelle = true;
return [xpData]
case 1:
xpData.caracName = caracs.find(it => !it.isMax).label
return this._xpCarac(xpData)
default:
await DialogChoixXpCarac.choix(this, xpData, caracs)
return []
}
}
static _getComposantsCaracDerivee(caracName) {
switch (Grammar.toLowerCaseNoAccent(caracName)) {
case 'vie': return ['constitution']
case 'tir': return ['vue', 'dexterite']
case 'lancer': return ['force', 'dexterite', 'vue']
case 'melee': return ['force', 'agilite']
case 'derobee': return ['agilite']
}
return []
}
/* -------------------------------------------- */
async resetNombresAstraux() {
const deletions = this.itemTypes['nombreastral'].map(it => it._id);
@ -2468,7 +2463,7 @@ export class RdDActor extends RdDBaseActorSang {
draconic: this.getDraconicList(),
sort: this.itemTypes['sort'],
signes: this.itemTypes['signedraconique'],
caracReve: this.system.carac.reve.value,
caracReve: parseInt(this.system.carac.reve.value),
pointsReve: this.getReveActuel(),
isRapide: isRapide,
isGM: game.user.isGM,
@ -2476,7 +2471,8 @@ export class RdDActor extends RdDBaseActorSang {
}
this.tmrApp = await RdDTMRDialog.create(this, tmrFormData);
this.tmrApp.render(true);
await this.tmrApp.render(true);
await this.tmrApp.onDeplacement()
}
/* -------------------------------------------- */
@ -2558,7 +2554,7 @@ export class RdDActor extends RdDBaseActorSang {
/* -------------------------------------------- */
verifierForceMin(item) {
if (item.type == 'arme' && item.system.force > this.system.carac.force.value) {
if (item.type == 'arme' && item.system.force > parseInt(this.system.carac.force.value)) {
ChatMessage.create({
content: `<strong>${this.name} s'est équipé(e) de l'arme ${item.name}, mais n'a pas une force suffisante pour l'utiliser normalement </strong>
(${item.system.force} nécessaire pour une Force de ${this.system.carac.force.value})`
@ -2571,7 +2567,7 @@ export class RdDActor extends RdDBaseActorSang {
let item = this.getEmbeddedDocument('Item', itemID);
if (item?.isEquipable()) {
const isEquipe = !item.system.equipe;
await this.updateEmbeddedDocuments('Item', [{ _id: item.id, "system.equipe": isEquipe }]);
await item.update({ "system.equipe": isEquipe });
this.computeEncTotal();
if (isEquipe)
this.verifierForceMin(item);
@ -2687,85 +2683,121 @@ export class RdDActor extends RdDBaseActorSang {
}
/* -------------------------------------------- */
listeVehicules() {
const listeVehichules = this.system.subacteurs?.vehicules ?? [];
return this._buildActorLinksList(listeVehichules, vehicle => RdDActor._vehicleData(vehicle));
static $transformSubActeurSuivant = (suivant, link) => {
return mergeObject(RdDBaseActor.extractActorMin(suivant), {
ephemere: !suivant.prototypeToken.actorLink,
coeur: link.coeur ?? 0,
prochainCoeur: link.prochainCoeur ?? link.coeur ?? 0
})
};
listeSuivants(filter = suivant => true) {
return RdDActor.$buildSubActorLinks(
this.system.subacteurs.suivants.filter(filter), RdDActor.$transformSubActeurSuivant
)
}
/* -------------------------------------------- */
listeSuivants() {
return this._buildActorLinksList(this.system.subacteurs?.suivants ?? []);
}
/* -------------------------------------------- */
listeMontures() {
return this._buildActorLinksList(this.system.subacteurs?.montures ?? []);
}
/* -------------------------------------------- */
_buildActorLinksList(links, actorTransformation = it => RdDActor._buildActorData(it)) {
return links.map(link => game.actors.get(link.id))
.filter(it => it != undefined)
.map(actorTransformation);
}
/* -------------------------------------------- */
static _vehicleData(vehicle) {
return {
id: vehicle.id,
name: vehicle.name,
img: vehicle.img,
system: {
categorie: vehicle.system.categorie,
etat: vehicle.system.etat
}
};
}
/* -------------------------------------------- */
static _buildActorData(it) {
return { id: it.id, name: it.name, img: it.img };
}
/* -------------------------------------------- */
async pushSubacteur(actor, dataArray, dataPath, dataName) {
let alreadyPresent = dataArray.find(attached => attached.id == actor._id);
if (!alreadyPresent) {
let newArray = duplicate(dataArray);
newArray.push({ id: actor._id });
await this.update({ [dataPath]: newArray });
} else {
ui.notifications.warn(dataName + " est déja attaché à ce Personnage.");
getSuivant(subActorId) {
const suivant = this.system.subacteurs.suivants.find(it => it.id == subActorId);
if (suivant) {
return RdDActor.$transformSubActeurSuivant(game.actors.get(suivant.id), suivant);
}
return undefined
}
getPointsCoeur(subActorId) {
return this.getSuivant(subActorId)?.coeur ?? 0;
}
async setPointsCoeur(subActorId, coeurs, options = { immediat: false }) {
const newSuivants = duplicate(this.system.subacteurs.suivants)
const amoureux = newSuivants.find(it => it.id == subActorId);
if (amoureux) {
amoureux[options.immediat ? 'coeur' : 'prochainCoeur'] = coeurs
await this.update({ 'system.subacteurs.suivants': newSuivants });
}
}
/* -------------------------------------------- */
static $transformSubActeurVehicule = (vehicle, link) => {
return mergeObject(RdDBaseActor.extractActorMin(vehicle), {
system: { categorie: vehicle.system.categorie, etat: vehicle.system.etat }
})
};
listeVehicules() {
return RdDActor.$buildSubActorLinks(this.system.subacteurs.vehicules, RdDActor.$transformSubActeurVehicule)
}
/* -------------------------------------------- */
static $transformSubActeurCreature = (actor, link) => RdDBaseActor.extractActorMin(actor)
listeMontures() {
return RdDActor.$buildSubActorLinks(this.system.subacteurs.montures, RdDActor.$transformSubActeurCreature);
}
/* -------------------------------------------- */
static $buildSubActorLinks(subActors, actorTransformation = (actor, link) => undefined) {
if (!subActors) {
return []
}
return subActors.map(link => {
const actor = game.actors.get(link.id)
return actor ? actorTransformation(actor, link) : undefined
})
.filter(it => it != undefined)
.sort(Misc.ascending(it => it.name))
}
/* -------------------------------------------- */
addSubActeur(subActor) {
if (subActor?.id == this.id) {
ui.notifications.warn("Vous ne pouvez pas attacher un acteur à lui même")
if (!this.isAddSubActeurAllowed(subActor)) {
return
}
else if (!subActor?.isOwner) {
ui.notifications.warn("Vous n'avez pas les droits sur l'acteur que vous attachez.")
}
else {
if (subActor.type == 'vehicule') {
this.pushSubacteur(subActor, this.system.subacteurs.vehicules, 'system.subacteurs.vehicules', 'Ce Véhicule');
} else if (subActor.type == 'creature') {
this.pushSubacteur(subActor, this.system.subacteurs.montures, 'system.subacteurs.montures', 'Cette Monture');
} else if (subActor.type == 'personnage') {
this.pushSubacteur(subActor, this.system.subacteurs.suivants, 'system.subacteurs.suivants', 'Ce Suivant');
}
const subActorOnlyId = { id: subActor._id };
if (subActor.type == 'vehicule') {
this.pushSubActeur(subActorOnlyId, this.system.subacteurs.vehicules, `system.subacteurs.vehicules`, `Le véhicule ${subActor.name}`)
} else if (subActor.type == 'creature') {
this.pushSubActeur(subActorOnlyId, this.system.subacteurs.montures, 'system.subacteurs.montures', `L'animal ${subActor.name}`)
} else if (subActor.type == 'personnage') {
this.pushSubActeur(subActorOnlyId, this.system.subacteurs.suivants, 'system.subacteurs.suivants', `Le compagnon ${subActor.name}`)
}
}
/* -------------------------------------------- */
async removeSubacteur(actorId) {
let newVehicules = this.system.subacteurs.vehicules.filter(function (obj, index, arr) { return obj.id != actorId });
let newSuivants = this.system.subacteurs.suivants.filter(function (obj, index, arr) { return obj.id != actorId });
let newMontures = this.system.subacteurs.montures.filter(function (obj, index, arr) { return obj.id != actorId });
await this.update({ 'system.subacteurs.vehicules': newVehicules }, { renderSheet: false });
await this.update({ 'system.subacteurs.suivants': newSuivants }, { renderSheet: false });
await this.update({ 'system.subacteurs.montures': newMontures }, { renderSheet: false });
async pushSubActeur(subActor, dataArray, dataPath, dataName) {
let alreadyPresent = dataArray.find(attached => attached.id == subActor.id);
if (!alreadyPresent) {
let newArray = [...dataArray, subActor]
await this.update({ [dataPath]: newArray });
} else {
ui.notifications.warn(dataName + " est déja attaché à " + this.name);
}
}
isAddSubActeurAllowed(subActor) {
if (subActor?.id == undefined) {
ui.notifications.warn("Aucun acteur à ajouter")
return false
}
if (subActor?.id == this.id) {
ui.notifications.warn("Vous ne pouvez pas attacher un acteur à lui même")
return false
}
else if (!subActor?.isOwner) {
ui.notifications.warn("Vous n'avez pas les droits sur l'acteur que vous attachez.")
return false
}
return true
}
async deleteSubActeur(actorId) {
['vehicules', 'suivants', 'montures'].forEach(async type => {
const subList = this.system.subacteurs[type];
if (subList.find(it => it.id == actorId)) {
let newList = subList.filter(it => it.id != actorId)
await this.update({ [`system.subacteurs.${type}`]: newList }, { renderSheet: false });
}
})
}
/* -------------------------------------------- */
@ -2936,9 +2968,7 @@ export class RdDActor extends RdDBaseActorSang {
}
/* -------------------------------------------- */
isEffectAllowed(statusId) {
return true
}
isEffectAllowed(effectId) { return true }
/* -------------------------------------------- */
async onPreUpdateItem(item, change, options, id) {

View File

@ -1,3 +1,4 @@
import { Grammar } from "../grammar.js";
import { RdDSheetUtility } from "../rdd-sheet-utility.js";
import { RdDBaseActorSheet } from "./base-actor-sheet.js";
@ -23,42 +24,18 @@ export class RdDBaseActorReveSheet extends RdDBaseActorSheet {
// Everything below here is only needed if the sheet is editable
if (!this.options.editable) return;
this.html.find('.encaisser-direct').click(async event => {
this.actor.encaisser();
})
this.html.find('.remise-a-neuf').click(async event => {
if (game.user.isGM) {
this.actor.remiseANeuf();
}
});
this.html.find('.encaisser-direct').click(async event => this.actor.encaisser())
this.html.find('.carac-label a').click(async event => this.actor.rollCarac(Grammar.toLowerCaseNoAccent(event.currentTarget.attributes.name.value)));
this.html.find('a.competence-label').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-moins').click(async event => this.actor.santeIncDec("endurance", -1));
this.html.find('.carac-label a').click(async event => {
let caracName = event.currentTarget.attributes.name.value;
this.actor.rollCarac(caracName.toLowerCase());
});
if (game.user.isGM) {
this.html.find('.remise-a-neuf').click(async event => this.actor.remiseANeuf())
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('a.competence-label').click(async event => {
this.actor.rollCompetence(RdDSheetUtility.getItemId(event));
});
this.html.find('.delete-active-effect').click(async event => {
if (game.user.isGM) {
let effect = this.html.find(event.currentTarget).parents(".active-effect").data('effect');
this.actor.removeEffect(effect);
}
});
this.html.find('.enlever-tous-effets').click(async event => {
if (game.user.isGM) {
await this.actor.removeEffects();
}
});
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);
});
}
}

View File

@ -174,38 +174,38 @@ export class RdDBaseActorReve extends RdDBaseActor {
}
const path = getFieldPath(fieldName);
if (path) {
await this.updateEmbeddedDocuments('Item', [{ _id: competence.id, [path]: value }]); // updates one EmbeddedEntity
await competence.update({ [path]: value });
}
}
}
/* -------------------------------------------- */
isEffectAllowed(statusId) { return true }
isEffectAllowed(effectId) { return true }
getEffects(filter = e => true) {
return this.getEmbeddedCollection("ActiveEffect").filter(filter);
}
getEffect(statusId) {
return this.getEmbeddedCollection("ActiveEffect").find(it => it.flags?.core?.statusId == statusId);
getEffect(effectId) {
return this.getEmbeddedCollection("ActiveEffect").find(it => it.statuses?.has(effectId));
}
async setEffect(statusId, status) {
if (this.isEffectAllowed(statusId)) {
const effect = this.getEffect(statusId);
async setEffect(effectId, status) {
if (this.isEffectAllowed(effectId)) {
const effect = this.getEffect(effectId);
if (!status && effect) {
await this.deleteEmbeddedDocuments('ActiveEffect', [effect.id]);
}
if (status && !effect) {
await this.createEmbeddedDocuments("ActiveEffect", [StatusEffects.status(statusId)]);
await this.createEmbeddedDocuments("ActiveEffect", [StatusEffects.prepareActiveEffect(effectId)]);
}
}
}
async removeEffect(statusId) {
const effect = this.getEffect(statusId);
async removeEffect(id) {
const effect = this.getEmbeddedCollection("ActiveEffect").find(it => it.id == id);
if (effect) {
await this.deleteEmbeddedDocuments('ActiveEffect', [effect.id]);
await this.deleteEmbeddedDocuments('ActiveEffect', [id]);
}
}
@ -287,10 +287,10 @@ export class RdDBaseActorReve extends RdDBaseActor {
getCarac() {
// TODO: le niveau d'une entité de cauchemar devrait être exclu...
const carac = mergeObject(duplicate(this.system.carac),
{
'reve-actuel': this.getCaracReveActuel(),
'chance-actuelle': this.getCaracChanceActuelle()
});
{
'reve-actuel': this.getCaracReveActuel(),
'chance-actuelle': this.getCaracChanceActuelle()
});
return carac;
}
@ -362,6 +362,10 @@ export class RdDBaseActorReve extends RdDBaseActor {
*/
rollArme(arme, categorieArme = "competence") {
let compToUse = this.$getCompetenceArme(arme, categorieArme)
if (!RdDItemArme.isArmeUtilisable(arme)) {
ui.notifications.warn(`Arme inutilisable: ${arme.name} a une résistance de 0 ou moins`)
return
}
if (!Targets.hasTargets()) {
RdDConfirm.confirmer({
settingConfirmer: "confirmer-combat-sans-cible",
@ -374,17 +378,16 @@ export class RdDBaseActorReve extends RdDBaseActor {
this.rollCompetence(compToUse, { tryTarget: false })
}
});
return;
return
}
Targets.selectOneToken(target => {
if (Targets.isTargetEntite(target)) {
ui.notifications.warn(`Vous ne pouvez pas attaquer une entité non incarnée avec votre ${arme.name}!!!!`);
return;
return
}
const competence = this.getCompetence(compToUse)
//console.log("RollArme", competence, arme)
if (competence.isCompetencePossession()) {
return RdDPossession.onAttaquePossession(target, this, competence);
}
@ -427,7 +430,7 @@ export class RdDBaseActorReve extends RdDBaseActor {
RdDBaseActor.remoteActorCall({
tokenId: this.token?.id,
actorId: this.id,
method: 'appliquerEncaissement',
method: 'encaisserDommages',
args: [rollData, show, attackerId]
});
return;

View File

@ -0,0 +1,46 @@
import { ChatUtility } from "../chat-utility.js";
import { RdDItemBlessure } from "../item/blessure.js";
import { RdDBaseActorReveSheet } from "./base-actor-reve-sheet.js";
/* -------------------------------------------- */
/**
* Extend the basic ActorSheet with some very simple modifications
* @extends {ActorSheet}
*/
export class RdDBaseActorSangSheet extends RdDBaseActorReveSheet {
/* -------------------------------------------- */
/** @override */
activateListeners(html) {
super.activateListeners(html);
// Everything below here is only needed if the sheet is editable
if (!this.options.editable) return;
this.html.find('.creer-blessure-legere').click(async event => RdDItemBlessure.createBlessure(this.actor, 2));
this.html.find('.creer-blessure-grave').click(async event => RdDItemBlessure.createBlessure(this.actor, 4));
this.html.find('.creer-blessure-critique').click(async event => RdDItemBlessure.createBlessure(this.actor, 6));
this.html.find('.subir-blessure-contusion').click(async event => RdDItemBlessure.applyFullBlessure(this.actor, 2));
this.html.find('.subir-blessure-legere').click(async event => RdDItemBlessure.applyFullBlessure(this.actor, 2));
this.html.find('.subir-blessure-grave').click(async event => RdDItemBlessure.applyFullBlessure(this.actor, 4));
this.html.find('.subir-blessure-critique').click(async event => RdDItemBlessure.applyFullBlessure(this.actor, 6));
this.html.find('.jet-vie').click(async event => this.actor.jetDeVie())
this.html.find('.jet-endurance').click(async event => await this.jetEndurance())
this.html.find('.vie-plus').click(async event => this.actor.santeIncDec("vie", 1))
this.html.find('.vie-moins').click(async event => this.actor.santeIncDec("vie", -1))
}
async jetEndurance() {
const endurance = this.actor.getEnduranceActuelle()
const result = await this.actor.jetEndurance(endurance);
ChatMessage.create({
content: `Jet d'Endurance : ${result.jetEndurance} / ${endurance}
<br>${this.actor.name} a ${result.sonne ? 'échoué' : 'réussi'} son Jet d'Endurance ${result.sonne ? 'et devient Sonné' : ''}`,
whisper: ChatUtility.getWhisperRecipientsAndGMs(this.actor.name)
});
}
}

View File

@ -20,25 +20,17 @@ export class RdDBaseActorSang extends RdDBaseActorReve {
getProtectionNaturelle() { return Number(this.system.attributs?.protection?.value ?? 0) }
getSConst() { return 0 }
getEnduranceMax() {
return Math.max(1, Math.min(this.system.sante.endurance.max, MAX_ENDURANCE_FATIGUE));
}
getEnduranceMax() { return Math.max(1, Math.min(this.system.sante.endurance.max, MAX_ENDURANCE_FATIGUE)) }
getFatigueActuelle() {
if (ReglesOptionnelles.isUsing("appliquer-fatigue")) {
return Math.max(0, Math.min(this.getFatigueMax(), this.system.sante.fatigue?.value));
return Math.max(0, Math.min(this.getFatigueMax(), this.system.sante.fatigue?.value ?? 0));
}
return 0;
}
getFatigueRestante() {
return this.getFatigueMax() - this.getFatigueActuelle();
}
getFatigueMin() {
return this.system.sante.endurance.max - this.system.sante.endurance.value;
}
getFatigueRestante() { return this.getFatigueMax() - this.getFatigueActuelle() }
getFatigueMin() { return this.system.sante.endurance.max - this.system.sante.endurance.value }
getFatigueMax() { return this.getEnduranceMax() * 2 }
malusFatigue() {
@ -56,19 +48,11 @@ export class RdDBaseActorSang extends RdDBaseActorReve {
return Math.min(0, Math.floor(this.getEncombrementMax() - this.encTotal));
}
isDead() {
return this.system.sante.vie.value < -this.getSConst()
}
isDead() { return this.system.sante.vie.value < -this.getSConst() }
nbBlessuresLegeres() {
return this.itemTypes[TYPES.blessure].filter(it => it.isLegere()).length;
}
nbBlessuresGraves() {
return this.itemTypes[TYPES.blessure].filter(it => it.isGrave()).length;
}
nbBlessuresCritiques() {
return this.itemTypes[TYPES.blessure].filter(it => it.isCritique()).length;
}
nbBlessuresLegeres() { return this.itemTypes[TYPES.blessure].filter(it => it.isLegere()).length }
nbBlessuresGraves() { return this.itemTypes[TYPES.blessure].filter(it => it.isGrave()).length }
nbBlessuresCritiques() { return this.itemTypes[TYPES.blessure].filter(it => it.isCritique()).length }
/* -------------------------------------------- */
computeResumeBlessure() {
@ -97,7 +81,6 @@ export class RdDBaseActorSang extends RdDBaseActorReve {
}
blessuresASoigner() { return [] }
getEtatGeneral(options = { ethylisme: false }) { return 0 }
async computeArmure(attackerRoll) { return this.getProtectionNaturelle() }
async remiseANeuf() { }
@ -173,6 +156,16 @@ export class RdDBaseActorSang extends RdDBaseActorReve {
}
/* -------------------------------------------- */
_computeEnduranceMax() {
const diffVie = this.system.sante.vie.max - this.system.sante.vie.value;
const maxEndVie = this.system.sante.endurance.max - (diffVie * 2);
const nbGraves = this.countBlessures(it => it.isGrave()) > 0
const nbCritiques = this.countBlessures(it => it.isCritique()) > 0
const maxEndGraves = Math.floor(this.system.sante.endurance.max / (2 * nbGraves));
const maxEndCritiques = nbCritiques > 0 ? 1 : this.system.sante.endurance.max;
return Math.max(0, Math.min(maxEndVie, maxEndGraves, maxEndCritiques));
}
/* -------------------------------------------- */
async ajouterBlessure(encaissement, attacker = undefined) {
@ -196,7 +189,7 @@ export class RdDBaseActorSang extends RdDBaseActorReve {
this.setEffect(STATUSES.StatusComma, true);
encaissement.mort = true;
ChatMessage.create({
content: `<img class="chat-icon" src="icons/svg/skull.svg" alt="charge" />
content: `<img class="chat-icon" src="icons/svg/skull.svg" data-tooltip="charge" />
<strong>${this.name} vient de succomber à une seconde blessure critique ! Que les Dragons gardent son Archétype en paix !</strong>`
});
}
@ -277,14 +270,10 @@ export class RdDBaseActorSang extends RdDBaseActorReve {
}
/* -------------------------------------------- */
async computeEtatGeneral() {
this.system.compteurs.etat.value = this.malusVie() + this.malusFatigue() + this.malusEthylisme();
}
malusVie() {
return Math.min(this.system.sante.vie.value - this.system.sante.vie.max, 0);
}
async computeEtatGeneral() { this.system.compteurs.etat.value = this.malusVie() + this.malusFatigue() + this.malusEthylisme() }
getEtatGeneral(options = { ethylisme: false }) { return this.system.compteurs.etat.value }
malusVie() { return Math.min(this.system.sante.vie.value - this.system.sante.vie.max, 0) }
malusEthylisme() { return 0 }

View File

@ -15,7 +15,6 @@ export class RdDBaseActorSheet extends ActorSheet {
/** @override */
static get defaultOptions() {
RdDUtility.initAfficheContenu();
return mergeObject(ActorSheet.defaultOptions, {
classes: ["rdd", "sheet", "actor"],
tabs: [{ navSelector: ".sheet-tabs", contentSelector: ".sheet-body", initial: "carac" }],
@ -132,20 +131,14 @@ export class RdDBaseActorSheet extends ActorSheet {
super.activateListeners(html);
this.html = html;
if (!this.options.editable) return;
this.html.find('.item-action').click(async event => {
const item = RdDSheetUtility.getItem(event, this.actor);
item?.actionPrincipale(this.actor, async () => this.render())
});
this.html.find('.conteneur-name a').click(async event => {
RdDUtility.toggleAfficheContenu(this.getItemId(event));
this.render(true);
});
this.html.find('.actor-montrer').click(async event => this.actor.postActorToChat());
this.html.find('.item-edit').click(async event => this.getItem(event)?.sheet.render(true))
this.html.find('.item-montrer').click(async event => this.getItem(event)?.postItemToChat());
this.html.find('.actor-montrer').click(async event => this.actor.postActorToChat());
this.html.find('.recherche')
.each((index, field) => {
this._rechercheSelectArea(field);
@ -153,9 +146,16 @@ export class RdDBaseActorSheet extends ActorSheet {
.keyup(async event => this._rechercherKeyup(event))
.change(async event => this._rechercherKeyup(event));
this.html.find('.recherche').prop("disabled", false);
// Everything below here is only needed if the sheet is editable
if (!this.options.editable) return;
this.html.find('.item-action').click(async event => {
const item = RdDSheetUtility.getItem(event, this.actor);
item?.actionPrincipale(this.actor, async () => this.render())
});
this.html.find('.item-split').click(async event => {
const item = this.getItem(event);
RdDSheetUtility.splitItem(item, this.actor);

View File

@ -11,16 +11,14 @@ import { SystemCompendiums } from "../settings/system-compendiums.js";
import { APP_ASTROLOGIE_REFRESH } from "../sommeil/app-astrologie.js";
export class RdDBaseActor extends Actor {
/* -------------------------------------------- */
static _findCaracByName(carac, name) {
name = Grammar.toLowerCaseNoAccent(name);
switch (name) {
case 'reve-actuel': case 'reve actuel':
return carac.reve;
case 'chance-actuelle': case 'chance actuelle':
return carac.chance;
}
static _findCaracNode(carac, name) {
return Object.entries(carac)
.filter(it => Grammar.equalsInsensitive(it[1].label, name))
.map(it => it[0])
.find(it => it);
}
static $findCaracByName(carac, name) {
const caracList = Object.entries(carac);
let entry = Misc.findFirstLike(name, caracList, { mapper: it => it[0], description: 'caractéristique' });
if (!entry || entry.length == 0) {
@ -29,21 +27,10 @@ export class RdDBaseActor extends Actor {
return entry && entry.length > 0 ? carac[entry[0]] : undefined;
}
getCaracByName(name) {
switch (Grammar.toLowerCaseNoAccent(name)) {
case 'reve-actuel': case 'reve actuel':
return this.getCaracReveActuel();
case 'chance-actuelle': case 'chance-actuelle':
return this.getCaracChanceActuelle();
}
return RdDBaseActor._findCaracByName(this.system.carac, name);
}
static getDefaultImg(itemType) {
return game.system.rdd.actorClasses[itemType]?.defaultIcon ?? defaultItemImg[itemType];
}
/* -------------------------------------------- */
static init() {
Hooks.on("preUpdateItem", (item, change, options, id) => RdDBaseActor.getParentActor(item)?.onPreUpdateItem(item, change, options, id));
Hooks.on("createItem", (item, options, id) => RdDBaseActor.getParentActor(item)?.onCreateItem(item, options, id));
@ -79,13 +66,7 @@ export class RdDBaseActor extends Actor {
static onRemoteActorCall(callData, userId) {
if (userId == game.user.id) {
let actor = game.actors.get(callData?.actorId);
if (callData.tokenId) {
let token = canvas.tokens.placeables.find(t => t.id == callData.tokenId)
if (token) {
actor = token.actor
}
}
const actor = RdDBaseActor.getRealActor(callData?.actorId, callData?.tokenId);
if (Misc.isOwnerPlayerOrUniqueConnectedGM(actor)) { // Seul le joueur choisi effectue l'appel: le joueur courant si propriétaire de l'actor, ou le MJ sinon
const args = callData.args;
console.info(`RdDBaseActor.onRemoteActorCall: pour l'Actor ${callData.actorId}, appel de RdDBaseActor.${callData.method}(`, ...args, ')');
@ -94,17 +75,29 @@ export class RdDBaseActor extends Actor {
}
}
static getRealActor(actorId, tokenId) {
if (tokenId) {
let token = canvas.tokens.get(tokenId)
if (token) {
return token.actor
}
}
return game.actors.get(actorId)
}
static extractActorMin = (actor) => { return { id: actor?.id, type: actor?.type, name: actor?.name, img: actor?.img }; };
static getParentActor(document) {
return document?.parent instanceof Actor ? document.parent : undefined
}
/**
* Cet methode surcharge Actor.create() pour ajouter si besoin des Items par défaut:
* Cette methode surcharge Actor.create() pour ajouter si besoin des Items par défaut:
* compétences et monnaies.
*
* @param {Object} actorData template d'acteur auquel ajouter des informations.
* @param {Object} options optionspour customiser la création
*/
*
* @param {Object} actorData template d'acteur auquel ajouter des informations.
* @param {Object} options optionspour customiser la création
*/
static async create(actorData, options) {
// import depuis un compendium
if (actorData instanceof Array) {
@ -140,6 +133,31 @@ export class RdDBaseActor extends Actor {
super(docData, context);
}
findCaracByName(name) {
name = Grammar.toLowerCaseNoAccent(name)
switch (name) {
case 'reve-actuel': case 'reve actuel':
return this.system.carac.reve
case 'chance-actuelle': case 'chance actuelle':
return this.system.carac.chance
case 'vie':
return this.system.sante.vie
}
const carac = this.system.carac;
return RdDBaseActor.$findCaracByName(carac, name);
}
getCaracByName(name) {
switch (Grammar.toLowerCaseNoAccent(name)) {
case 'reve-actuel': case 'reve actuel':
return this.getCaracReveActuel();
case 'chance-actuelle': case 'chance-actuelle':
return this.getCaracChanceActuelle();
}
return this.findCaracByName(name);
}
/* -------------------------------------------- */
async _preCreate(data, options, user) {
await super._preCreate(data, options, user);
@ -181,6 +199,8 @@ export class RdDBaseActor extends Actor {
return undefined;
}
listeSuivants(filter = suivant => true) { return [] }
listeSuivants(filter = suivant => true) { return [] }
listItems(type = undefined) { return (type ? this.itemTypes[type] : this.items); }
filterItems(filter, type = undefined) { return (type ? this.itemTypes[type] : this.items)?.filter(filter) ?? []; }
findItemLike(idOrName, type) {
@ -238,7 +258,7 @@ export class RdDBaseActor extends Actor {
let item = this.getItem(id);
if (item && item.isInventaire()) {
const quantite = Math.max(0, item.system.quantite + value);
await this.updateEmbeddedDocuments('Item', [{ _id: item.id, 'system.quantite': quantite }]);
await item.update({ 'system.quantite': quantite });
}
}
@ -464,14 +484,15 @@ export class RdDBaseActor extends Actor {
}
async processDropItem(params) {
const targetActorId = this.id;
const sourceActorId = params.sourceActorId;
const itemId = params.itemId;
const destId = params.destId;
const srcId = params.srcId;
const targetActorId = this.id
const sourceActorId = params.sourceActorId
const sourceTokenId = params.sourceTokenId
const itemId = params.itemId
const destId = params.destId
const srcId = params.srcId
if (sourceActorId && sourceActorId != targetActorId) {
console.log("Moving objects", sourceActorId, targetActorId, itemId);
this.moveItemsBetweenActors(itemId, sourceActorId);
console.log("Moving objects", sourceActorId, sourceTokenId, targetActorId, itemId);
this.moveItemsBetweenActors(itemId, sourceActorId, sourceTokenId);
return false;
}
let result = true;
@ -544,8 +565,7 @@ export class RdDBaseActor extends Actor {
}
/* -------------------------------------------- */
/** Ajoute un item dans un conteneur, sur la base
* de leurs ID */
/** Ajoute un item dans un conteneur, sur la base de leurs ID */
async ajouterDansConteneur(item, conteneur, onAjouterDansConteneur) {
if (!conteneur) {
// TODO: afficher
@ -553,10 +573,8 @@ export class RdDBaseActor extends Actor {
}
else if (conteneur.isConteneur()) {
item.estContenu = true;
await this.updateEmbeddedDocuments('Item', [{
_id: conteneur.id,
'system.contenu': [...conteneur.system.contenu, item.id]
}]);
const nouveauContenu = [...conteneur.system.contenu, item.id];
await conteneur.update({ 'system.contenu': nouveauContenu });
onAjouterDansConteneur(item.id, conteneur.id);
}
}
@ -616,19 +634,16 @@ export class RdDBaseActor extends Actor {
async enleverDeConteneur(item, conteneur, onEnleverDeConteneur) {
if (conteneur?.isConteneur()) {
item.estContenu = false;
await this.updateEmbeddedDocuments('Item', [{
_id: conteneur.id,
'system.contenu': conteneur.system.contenu.filter(id => id != item.id)
}]);
const contenu = conteneur.system.contenu.filter(id => id != item.id);
await conteneur.update({ 'system.contenu': contenu });
onEnleverDeConteneur();
}
}
/* -------------------------------------------- */
async moveItemsBetweenActors(itemId, sourceActorId) {
let itemsList = []
let sourceActor = game.actors.get(sourceActorId);
itemsList.push({ id: itemId, conteneurId: undefined }); // Init list
async moveItemsBetweenActors(itemId, sourceActorId, sourceTokenId) {
let sourceActor = RdDBaseActor.getRealActor(sourceActorId, sourceTokenId)
let itemsList = [{ id: itemId, conteneurId: undefined }]
sourceActor.buildSubConteneurObjetList(itemId, itemsList); // Get itemId list
const itemsDataToCreate = itemsList.map(it => sourceActor.getItem(it.id))
@ -641,20 +656,17 @@ export class RdDBaseActor extends Actor {
for (let item of itemsList) { // Second boucle pour traiter la remise en conteneurs
// gestion conteneur/contenu
if (item.conteneurId) { // l'Objet était dans un conteneur
let newConteneurId = itemMap[item.conteneurId]; // Get conteneur
let newConteneur = this.getItem(newConteneurId);
let newItemId = itemMap[item.id]; // Get newItem
const newConteneurId = itemMap[item.conteneurId];
const newConteneur = this.getItem(newConteneurId);
const newItemId = itemMap[item.id]; // Get newItem
console.log('New conteneur filling!', newConteneur, newItemId, item);
let contenu = duplicate(newConteneur.system.contenu);
contenu.push(newItemId);
await this.updateEmbeddedDocuments('Item', [{ _id: newConteneurId, 'system.contenu': contenu }]);
const nouveauContenu = [...newConteneur.system.contenu, newItemId]
await newConteneur.update({ 'system.contenu': nouveauContenu })
}
}
for (let item of itemsList) {
await sourceActor.deleteEmbeddedDocuments('Item', [item.id]);
}
const deletedItemIds = itemsList.map(it => it.id)
await sourceActor.deleteEmbeddedDocuments('Item', deletedItemIds);
}
_buildMapOldNewId(itemsList, newItems) {
@ -689,7 +701,7 @@ export class RdDBaseActor extends Actor {
async rollAppelChance() { this.actionImpossible("appel à la chance") }
async jetDeMoral() { this.actionImpossible("jet de moral") }
async actionPrincipale(item, onActionItem = async () => { }) {
async actionPrincipale(item, onActionItem = async () => { }) {
switch (item.type) {
case TYPES.conteneur: return await item.sheet.render(true);
}

View File

@ -1,14 +1,15 @@
import { RdDBaseActorReveSheet } from "./base-actor-reve-sheet.js";
import { RdDBaseActorSangSheet } from "./base-actor-sang-sheet.js";
/**
* Extend the basic ActorSheet with some very simple modifications
* @extends {ActorSheet}
*/
export class RdDCreatureSheet extends RdDBaseActorReveSheet {
export class RdDCreatureSheet extends RdDBaseActorSangSheet {
/** @override */
static get defaultOptions() {
return mergeObject(RdDBaseActorReveSheet.defaultOptions, {
return mergeObject(RdDBaseActorSangSheet.defaultOptions, {
template: "systems/foundryvtt-reve-de-dragon/templates/actor-creature-sheet.html",
width: 640, height: 720
});

View File

@ -1,4 +1,5 @@
import { ENTITE_INCARNE } from "../constants.js";
import { TYPES } from "../item.js";
import { STATUSES } from "../settings/status-effects.js";
import { RdDBaseActorSang } from "./base-actor-sang.js";
@ -17,12 +18,11 @@ export class RdDCreature extends RdDBaseActorSang {
async remiseANeuf() {
await this.removeEffects(e => true);
await this.supprimerBlessures(it => true);
const updates = {
await this.update({
'system.sante.endurance.value': this.system.sante.endurance.max,
'system.sante.vie.value': this.system.sante.vie.max,
'system.sante.fatigue.value': 0
};
await this.update(updates);
});
}
async finDeRoundBlessures() {
@ -33,8 +33,8 @@ export class RdDCreature extends RdDBaseActorSang {
}
}
isEffectAllowed(statusId) {
return [STATUSES.StatusComma].includes(statusId);
isEffectAllowed(effectId) {
return [STATUSES.StatusComma].includes(effectId);
}
isEntiteAccordee(attacker) {
@ -53,13 +53,11 @@ export class RdDCreature extends RdDBaseActorSang {
// déjà accordé
return;
}
resonnance.actors.push(attacker.id);
await this.update({ "system.sante.resonnance": resonnance });
await this.update({ "system.sante.resonnance": [...resonnance, attacker.id] });
}
else {
super.setEntiteReveAccordee(attacker)
}
}
}

View File

@ -45,18 +45,17 @@ export class RdDActorEntiteSheet extends RdDBaseActorReveSheet {
const actorId = li.data("actor-id");
if (actorId) {
const actorResonance = game.actors.get(actorId);
RdDUtility.confirmerSuppressionSubacteur(this, actorResonance, li, () => {
RdDUtility.confirmSubActeurDelete(this, actorResonance, li, () => {
console.log('Delete : ', actorId);
this.removeSubacteur(actorId);
this.deleteSubActeur(actorId);
RdDUtility.slideOnDelete(this, li);
});
}
});
}
async removeSubacteur(actorId) {
async deleteSubActeur(actorId) {
let newResonances = this.actor.system.sante.resonnance.actors.filter(id => id != actorId);
await this.actor.update({ 'system.sante.resonnance.actors': newResonances }, { renderSheet: false });
}
}

View File

@ -70,8 +70,8 @@ export class RdDEntite extends RdDBaseActorReve {
await RdDEncaisser.encaisser(this)
}
isEffectAllowed(statusId) {
return [STATUSES.StatusComma].includes(statusId);
isEffectAllowed(effectId) {
return [STATUSES.StatusComma].includes(effectId);
}
async onAppliquerJetEncaissement(encaissement, attacker) {

View File

@ -6,8 +6,6 @@ export class RdDActorVehiculeSheet extends RdDBaseActorSheet {
/** @override */
static get defaultOptions() {
RdDUtility.initAfficheContenu();
return mergeObject(RdDBaseActorSheet.defaultOptions, {
template: "systems/foundryvtt-reve-de-dragon/templates/actor-vehicule-sheet.html",
width: 640, height: 720,

View File

@ -14,8 +14,8 @@ export class ChatUtility {
case "msg_user_ui_notifications": return ChatUtility.onNotifyUser(sockmsg.data);
}
}
/* -------------------------------------------- */
static notifyUser(userId, level = 'info', message) {
const socketData = {
@ -71,7 +71,7 @@ export class ChatUtility {
}
static removeChatMessageId(messageId) {
if (messageId){
if (messageId) {
ChatUtility.removeMessages({ messageId: messageId });
}
}
@ -118,9 +118,10 @@ export class ChatUtility {
}
/* -------------------------------------------- */
static getWhisperRecipientsAndGMs(name) {
let recep1 = ChatMessage.getWhisperRecipients(name) || [];
return recep1.concat(ChatMessage.getWhisperRecipients('GM'));
static getWhisperRecipientsAndGMs(...names) {
let recipients = [...ChatMessage.getWhisperRecipients('GM')]
names.forEach(name => recipients.push(...ChatMessage.getWhisperRecipients(name)))
return recipients
}
/* -------------------------------------------- */

169
module/coeur/rdd-coeur.js Normal file
View File

@ -0,0 +1,169 @@
import { RdDBaseActor } from "../actor/base-actor.js";
import { ChatUtility } from "../chat-utility.js";
import { ReglesOptionnelles } from "../settings/regles-optionnelles.js";
const INFO_COEUR = 'info-coeur';
export class RdDCoeur {
static registerChatCallbacks(html) {
html.on("click", 'a.accepter-tendre-moment', event => {
RdDCoeur.accepterTendreMoment(RdDCoeur.extractInfoCoeur(event))
})
html.on("click", 'a.refuser-tendre-moment', event => {
RdDCoeur.refuserTendreMoment(RdDCoeur.extractInfoCoeur(event))
})
html.on("click", 'a.perdre-point-coeur-douceur', event => {
RdDCoeur.perdreEnDouceur(
RdDCoeur.extractInfoCoeur(event),
event.currentTarget.attributes['data-actor-id'].value)
})
}
static addTagsInfoCoeur(infoCoeur, chatMessage = undefined) {
if (chatMessage) {
infoCoeur.chatMessageId = chatMessage.id
}
else {
chatMessage = game.messages.get(infoCoeur.chatMessageId)
}
ChatUtility.setMessageData(chatMessage, INFO_COEUR, infoCoeur);
}
static extractInfoCoeur(event) {
return ChatUtility.getMessageData(ChatUtility.getChatMessage(event), INFO_COEUR)
}
static getInfoCoeur(sourceActorId, targetActorId) {
const sourceActor = game.actors.get(sourceActorId)
const targetActor = game.actors.get(targetActorId)
if (sourceActor && targetActor) {
return {
source: {
actor: RdDBaseActor.extractActorMin(sourceActor),
coeur: sourceActor.getPointsCoeur(targetActorId),
},
target: {
actor: RdDBaseActor.extractActorMin(targetActor),
coeur: targetActor.getPointsCoeur(sourceActorId),
}
}
}
return {}
}
static async toggleSubActeurCoeur(actorId, subActorId, toggleCoeur) {
const actor = game.actors.get(actorId)
const amoureux = actor.getSuivant(subActorId)
if (toggleCoeur <= amoureux.coeur) {
if (toggleCoeur > amoureux.prochainCoeur) {
toggleCoeur = amoureux.coeur
}
else {
toggleCoeur = amoureux.coeur - 1
}
}
else if (toggleCoeur <= amoureux.prochainCoeur) {
toggleCoeur = Math.max(amoureux.coeur, toggleCoeur - 1)
}
actor.setPointsCoeur(subActorId, Math.max(0, Math.min(toggleCoeur, 4)))
}
static async applyCoeurChateauDormant(actor, message) {
const newSuivants = duplicate(actor.system.subacteurs.suivants)
let count = 0
newSuivants.forEach(async link => {
const suivant = game.actors.get(link.id)
const prochainCoeur = link.prochainCoeur ?? 0;
const coeurCourant = link.coeur ?? 0;
const diff = prochainCoeur - coeurCourant
if (diff < 0) {
await actor.moralIncDec(-4);
link.coeur = Math.max(0, coeurCourant - 1)
link.prochainCoeur = link.coeur
message.content += `<br>Votre c&oelig;ur brisé pour ${suivant.name} vous fait perdre 4 points de moral, il vous reste ${link.coeur} points de C&oelig;ur.`
count++
}
else if (diff > 0) {
link.coeur = Math.min(prochainCoeur, 4)
message.content += `<br>Votre c&oelig;ur bat fort, vous avez maintenant ${link.coeur} points de C&oelig;ur pour ${suivant.name}.`
link.prochainCoeur = link.coeur
count++
}
}
)
if (count > 0) {
await actor.update({ 'system.subacteurs.suivants': newSuivants });
}
}
static async startSubActeurTendreMoment(actorId, subActeurId) {
const infoCoeur = RdDCoeur.getInfoCoeur(actorId, subActeurId)
if (infoCoeur.target?.actor.id) {
// TODO: passer par une fenêtre pour saisir sa proposition (lieu, heure, ...)
const chatHtml = await renderTemplate(`systems/foundryvtt-reve-de-dragon/templates/coeur/chat-proposer-tendre-moment.hbs`, infoCoeur)
const chatMessage = await ChatMessage.create({
whisper: ChatUtility.getWhisperRecipientsAndGMs(infoCoeur.target?.actor.name),
content: chatHtml
})
RdDCoeur.addTagsInfoCoeur(infoCoeur, chatMessage)
}
}
static async accepterTendreMoment(infoCoeur) {
const target = game.actors.get(infoCoeur.target.actor.id)
if (!target.isOwner) {
ui.notifications.warn(`vous ne pouvez pas accepter pour ${infoCoeur.target.actor.name}`)
return
}
ChatUtility.removeChatMessageId(infoCoeur.chatMessageId)
infoCoeur.target.jetTendre = (await (new Roll('1d6').evaluate({ async: true }))).total
infoCoeur.source.jetTendre = (await (new Roll('1d6').evaluate({ async: true }))).total
const diff = Math.abs(infoCoeur.source.jetTendre - infoCoeur.target.jetTendre)
for (let amoureux of [infoCoeur.source, infoCoeur.target]) {
const actorAmoureux = game.actors.get(amoureux.actor.id);
amoureux.situation = diff <= amoureux.coeur ? 'heureux' : 'neutre'
amoureux.gainMoral = await actorAmoureux.jetDeMoral(amoureux.situation)
}
const chatHtml = await renderTemplate(`systems/foundryvtt-reve-de-dragon/templates/coeur/chat-accepter-tendre-moment.hbs`, infoCoeur)
const chatMessage = await ChatMessage.create({
whisper: ChatUtility.getWhisperRecipientsAndGMs(infoCoeur.source?.actor.name, infoCoeur.target?.actor.name),
content: chatHtml
})
RdDCoeur.addTagsInfoCoeur(infoCoeur, chatMessage)
}
static async refuserTendreMoment(infoCoeur) {
const target = game.actors.get(infoCoeur.target.actor.id)
if (!target.isOwner) {
ui.notifications.warn(`vous ne pouvez pas refuser pour ${infoCoeur.target.actor.name}`)
return
}
ChatUtility.removeChatMessageId(infoCoeur.chatMessageId)
const chatHtml = await renderTemplate(`systems/foundryvtt-reve-de-dragon/templates/coeur/chat-refuser-tendre-moment.hbs`, infoCoeur)
await ChatMessage.create({
whisper: ChatUtility.getWhisperRecipientsAndGMs(infoCoeur.source?.actor.name, infoCoeur.target?.actor.name),
content: chatHtml
});
}
static async perdreEnDouceur(infoCoeur, actorId) {
const [amoureux, partenaire] = (infoCoeur.source.actor.id == actorId
? [infoCoeur.source, infoCoeur.target]
: (infoCoeur.target.actor.id == actorId
? [infoCoeur.target, infoCoeur.source]
: [undefined, undefined]))
if (amoureux.perteCoeur) {
ui.notifications.warn(`Le point de c&oelig;ur a déjà été perdu`)
}
else if (amoureux.coeur > 0) {
const actor = game.actors.get(actorId)
if (actor.isOwner) {
await actor.setPointsCoeur(partenaire?.actor.id, amoureux.coeur - 1, { immediat: true })
amoureux.perteCoeur = true
RdDCoeur.addTagsInfoCoeur(infoCoeur)
}
}
}
}

View File

@ -0,0 +1,84 @@
export class DialogChoixXpCarac extends Dialog {
static async choix(actor, xpData, caracs) {
caracs = caracs.map(it => mergeObject({ ajout: 0 }, it))
xpData = mergeObject({ reste: xpData.xpCarac }, xpData)
const dialogData = {
title: `Choisissez la répartition d'expérience`,
content: await renderTemplate("systems/foundryvtt-reve-de-dragon/templates/dialog-choix-xp-carac.hbs", {
actor,
caracDerivee: actor.findCaracByName(xpData.caracName),
xpData,
caracs
}),
}
const dialogOptions = {
classes: ["rdd-dialog-select"],
width: 400,
height: 'fit-content',
'z-index': 99999
}
new DialogChoixXpCarac(dialogData, dialogOptions, actor, xpData, caracs).render(true)
}
constructor(dialogData, dialogOptions, actor, xpData, caracs) {
dialogData = mergeObject(dialogData, {
default: 'appliquer',
buttons: {
'appliquer': { icon:'<i class="fa-solid fa-check"></i>', label: "Ajouter la répartition", callback: it => this.appliquerSelection() }
}
})
super(dialogData, dialogOptions)
this.actor = actor
this.xpData = xpData
this.caracs = caracs
}
activateListeners(html) {
//TODO
super.activateListeners(html)
this.html = html
this.html.find("li.xpCarac-option .xpCarac-moins").click(event =>
this.ajouterXp(event, -1)
)
this.html.find("li.xpCarac-option .xpCarac-plus").click(event =>
this.ajouterXp(event, 1)
)
}
async ajouterXp(event, delta) {
const liCarac = this.html.find(event.currentTarget)?.parents("li.xpCarac-option")
const label = liCarac?.data("carac-label")
const carac = this.caracs.find(c => c.label == label)
if (carac.ajout + delta < 0) {
ui.notifications.warn(`Impossible de diminuer les points à répartir en ${carac.label} en dessous de 0`)
return
}
if (this.xpData.reste - delta < 0) {
ui.notifications.warn(`Il ne reste plus de points à répartir en ${carac.label}`)
return
}
carac.ajout += delta
this.xpData.reste -= delta
liCarac.find("input.xpCarac-view-ajout").val(carac.ajout)
this.html.find("input.xpCarac-reste").val(this.xpData.reste)
}
async appliquerSelection() {
if (this.xpData.reste > 0) {
ui.notifications.warn(`Il vous reste ${this.xpData.reste} points à répartir`)
return
}
this.caracs.filter(c => c.ajout > 0).forEach(c => {
const xpData = { caracName: c.label, xpCarac: c.ajout }
this.actor._xpCarac(xpData)
})
await super.close()
}
async close() { }
_getHeaderButtons() { return [] }
}

View File

@ -1,37 +0,0 @@
export class DialogSelectTarget extends Dialog {
constructor(html, onSelectTarget, targets) {
const options = {
classes: ["rdd-dialog-select-target"],
width: 'fit-content',
height: 'fit-content',
'max-height': 600,
'z-index': 99999
};
const conf = {
title: "Choisir une cible",
content: html,
buttons: {}
};
super(conf, options);
this.onSelectTarget = onSelectTarget;
this.targets = targets;
}
activateListeners(html) {
super.activateListeners(html);
this.html = html;
this.html.find("li.select-target").click((event) => {
this.targetSelected(this.html.find(event.currentTarget)?.data("token-id"));
});
}
targetSelected(tokenId) {
const target = this.targets.find(it => it.id == tokenId);
this.close();
if (target) {
this.onSelectTarget(target);
}
}
}

45
module/dialog-select.js Normal file
View File

@ -0,0 +1,45 @@
export class DialogSelect extends Dialog {
static extractIdNameImg(it) { return { id: it.id, name: it.name, img: it.img } }
static async select(selectData, onSelectChoice) {
const html = await renderTemplate("systems/foundryvtt-reve-de-dragon/templates/dialog-select.html", selectData)
const dialogData = {
title: selectData.title ?? selectData.label,
content: html,
buttons: {}
}
const dialogOptions = {
classes: ["rdd-dialog-select"],
width: 'fit-content',
height: 'fit-content',
'max-height': 600,
'z-index': 99999
}
new DialogSelect(dialogData, dialogOptions, selectData, onSelectChoice).render(true)
}
constructor(dialogData, dialogOptions, selectionData, onSelectChoice) {
super(dialogData, dialogOptions)
this.selectionData = selectionData
this.onSelectChoice = onSelectChoice
}
activateListeners(html) {
super.activateListeners(html)
this.html = html
this.html.find("li.select-choice").click(event =>
this.choiceSelected(this.html.find(event.currentTarget)?.data("id"))
)
}
choiceSelected(selectedId) {
const selected = this.selectionData.find(it => it.id == selectedId)
this.close()
if (selected) {
this.onSelectChoice(selected)
}
}
}

View File

@ -166,7 +166,11 @@ export class RdDItemArme extends Item {
}
static isArmeUtilisable(arme) {
return arme.type == 'arme' && arme.system.equipe && (arme.system.resistance > 0 || arme.system.portee_courte > 0);
switch (arme.type) {
case TYPES.arme: return arme.system.equipe && (arme.system.resistance > 0 || arme.system.portee_courte > 0)
case TYPES.competencecreature: return true
}
return false
}
static ajoutCorpsACorps(armes, actor) {
@ -191,6 +195,7 @@ export class RdDItemArme extends Item {
dommagesReels: 0,
mortalite: 'non-mortel',
competence: 'Corps à corps',
resistance: 1,
deuxmains: true,
categorie_parade: 'sans-armes'
}

View File

@ -227,25 +227,15 @@ export class RdDItem extends Item {
}
isCorpsACorps() {
return (this.isCompetence()
return this.isCompetence()
&& this.system.categorie == 'melee'
&& Grammar.includesLowerCaseNoAccent(this.name, 'Corps à Corps'));
&& Grammar.includesLowerCaseNoAccent(this.name, 'Corps à Corps')
}
isCompetenceArme() {
if (this.isCompetence()) {
switch (this.system.categorie) {
case 'melee':
return !this.isCorpsACorps() && !this.isEsquive()
case 'tir':
case 'lancer':
return true;
}
}
return false;
return this.isCompetence() && [ 'melee','tir', 'lancer'].includes(this.system.categorie)
}
isCompetencePossession() { return TYPES.competencecreature == this.type && this.system.categorie == "possession" }
isTemporel() { return typesObjetsTemporels.includes(this.type) }
isOeuvre() { return typesObjetsOeuvres.includes(this.type) }

View File

@ -1,6 +1,7 @@
import { RdDItem } from "../item.js";
import { Misc } from "../misc.js";
import { RdDTimestamp } from "../time/rdd-timestamp.js";
import { ChatUtility } from "../chat-utility.js";
const BASE_TACHE_SOIN_BLESSURE = {
type: "tache",
@ -14,10 +15,10 @@ const TACHES_SOIN_BLESSURE = {
}
const definitionsBlessures = [
{ type: "contusion", gravite: 0, label: 'Contusion/éraflure', max: 100, icon: "systems/foundryvtt-reve-de-dragon/icons/sante/eraflure.webp" },
{ type: "legere", gravite: 2, label: 'Légère', max: 5, icon: "systems/foundryvtt-reve-de-dragon/icons/sante/blessure.webp" },
{ type: "grave", gravite: 4, label: 'Grave', max: 2, icon: "systems/foundryvtt-reve-de-dragon/icons/sante/blessure.webp" },
{ type: "critique", gravite: 6, label: 'Critique', max: 1, icon: "systems/foundryvtt-reve-de-dragon/icons/sante/blessure.webp" },
{ type: "contusion", gravite: 0, endurance: "1d4", vie: 0, label: 'Contusion/éraflure', max: 100, icon: "systems/foundryvtt-reve-de-dragon/icons/sante/eraflure.webp" },
{ type: "legere", gravite: 2, endurance: "1d6", vie: 0, label: 'Légère', max: 5, icon: "systems/foundryvtt-reve-de-dragon/icons/sante/blessure.webp" },
{ type: "grave", gravite: 4, endurance: "2d6", vie: -2, label: 'Grave', max: 2, icon: "systems/foundryvtt-reve-de-dragon/icons/sante/blessure.webp" },
{ type: "critique", gravite: 6, endurance: "-100", vie: -4, label: 'Critique', max: 1, icon: "systems/foundryvtt-reve-de-dragon/icons/sante/blessure.webp" },
{ type: "mort", gravite: 8, label: 'Mort', max: 1, icon: "systems/foundryvtt-reve-de-dragon/icons/sante/mort.webp" }
]
@ -40,6 +41,32 @@ export class RdDItemBlessure extends RdDItem {
}
return mergeObject(duplicate(BASE_TACHE_SOIN_BLESSURE), tache)
}
static async applyFullBlessure(actor, gravite) {
const definition = RdDItemBlessure.getDefinition(gravite)
let lostEndurance = 0
let lostVie = 0
if (definition.endurance) {
lostEndurance = new Roll(definition.endurance).roll({async: false}).total;
actor.santeIncDec("endurance", -Number(lostEndurance));
}
if (definition.vie) {
lostVie = definition.vie
actor.santeIncDec("vie", definition.vie)
}
await this.createBlessure(actor, gravite)
ChatMessage.create({
content: `Blessure ${definition.label} appliquée à ${actor.name}`+
`<br>Perte d'endurance : ${lostEndurance}`+
`<br>Perte de Vie : ${lostVie}`,
whisper: ChatUtility.getWhisperRecipientsAndGMs(actor.name)
});
}
static async createBlessure(actor, gravite, localisation = '', attacker) {
const definition = RdDItemBlessure.getDefinition(gravite)
const blessure = {
@ -115,7 +142,10 @@ export class RdDItemBlessure extends RdDItem {
if (!isMaladeEmpoisonne && rolled.isSuccess && this.peutRetrograder(graviteMoindre, moindres)) {
message.content += ` -- une blessure ${label} cicatrise`;
mergeObject(update, {
system: { gravite: graviteMoindre, fin: { indexDate: timestamp.addJours(graviteMoindre).indexDate } }
system: {
gravite: graviteMoindre,
temporel: { fin: { indexDate: timestamp.addJours(graviteMoindre).indexDate } }
}
});
}
else {

View File

@ -22,6 +22,10 @@ export class Misc {
const isPositiveNumber = value != NaN && value > 0;
return isPositiveNumber ? "+" + number : number
}
static modulo(n, m) {
return ((n % m) + m) % m;
}
static sum() {
return (a, b) => Number(a) + Number(b);
@ -205,6 +209,7 @@ export class Misc {
const subset = this.findAllLike(value, elements, options);
if (subset.length == 0) {
console.log(`Aucune ${options.description} pour ${value}`);
return undefined
}
if (subset.length == 1) {

View File

@ -19,10 +19,6 @@ export class RdDBonus {
}
static isAjustementAstrologique(rollData) {
return RdDCarac.isChance(rollData.selectedCarac) ||
rollData.selectedSort?.system.isrituel;
}
/* -------------------------------------------- */
static isDefenseAttaqueFinesse(rollData) {
if (rollData.isEmpoignade && rollData.rolled?.isPart) {
@ -36,20 +32,18 @@ export class RdDBonus {
/* -------------------------------------------- */
static dmg(rollData, dmgActor, isEntiteIncarnee = false) {
let dmg = { total: 0 };
if (rollData.arme && rollData.arme.name.toLowerCase() == "esquive") {
// Specific case management
ui.notifications.warn("Calcul de bonus dégats sur esquive !");
} else {
dmg.dmgArme = RdDBonus._dmgArme(rollData);
dmg.penetration = RdDBonus._peneration(rollData);
dmg.dmgTactique = RdDBonus.dmgBonus(rollData.tactique);
dmg.dmgParticuliere = RdDBonus._dmgParticuliere(rollData);
dmg.dmgSurprise = RdDBonus.dmgBonus(rollData.ajustements?.attaqueDefenseurSurpris.used);
dmg.dmgActor = rollData.selectedCarac ? RdDBonus._dmgPerso(dmgActor, rollData.selectedCarac.label, dmg.dmgArme) : 0;
dmg.total = dmg.dmgSurprise + dmg.dmgTactique + dmg.dmgArme + dmg.dmgActor + dmg.dmgParticuliere;
dmg.mortalite = RdDBonus._calculMortalite(rollData, isEntiteIncarnee)
const dmgArme = RdDBonus._dmgArme(rollData)
let dmg = {
total: 0,
dmgArme: dmgArme,
penetration: RdDBonus._peneration(rollData),
dmgTactique: RdDBonus.dmgBonus(rollData.tactique),
dmgParticuliere: RdDBonus._dmgParticuliere(rollData),
dmgSurprise: RdDBonus.dmgBonus(rollData.ajustements?.attaqueDefenseurSurpris.used),
mortalite: RdDBonus._calculMortalite(rollData, isEntiteIncarnee),
dmgActor: RdDBonus._dmgPerso(dmgActor, rollData.selectedCarac?.label, dmgArme)
}
dmg.total = dmg.dmgSurprise + dmg.dmgTactique + dmg.dmgArme + dmg.dmgActor + dmg.dmgParticuliere;
return dmg;
}
@ -93,6 +87,9 @@ export class RdDBonus {
/* -------------------------------------------- */
static _dmgPerso(dmgActor, categorie, dmgArme) {
if (categorie == undefined) {
return 0
}
switch (categorie) {
case "Tir": return 0;
case "Lancer": return Math.max(0, Math.min(dmgArme, dmgActor));

View File

@ -328,8 +328,8 @@ export class RdDCombatManager extends Combat {
}
}
options = [
{ name: "Incrémenter initiative", condition: true, icon: '<i class="fas fa-plus"></i>', callback: target => { RdDCombatManager.incDecInit(target.data('combatant-id'), +0.01); } },
{ name: "Décrémenter initiative", condition: true, icon: '<i class="fas fa-minus"></i>', callback: target => { RdDCombatManager.incDecInit(target.data('combatant-id'), -0.01); } }
{ name: "Incrémenter initiative", condition: true, icon: '<i class="fa-solid fa-plus"></i>', callback: target => { RdDCombatManager.incDecInit(target.data('combatant-id'), +0.01); } },
{ name: "Décrémenter initiative", condition: true, icon: '<i class="fa-solid fa-minus"></i>', callback: target => { RdDCombatManager.incDecInit(target.data('combatant-id'), -0.01); } }
].concat(options);
}
/* -------------------------------------------- */
@ -515,7 +515,7 @@ export class RdDCombat {
static _callJetDeVie(event) {
let actorId = event.currentTarget.attributes['data-actorId'].value;
let tokenId = event.currentTarget.attributes['data-tokenId'].value;
let token = canvas.tokens.placeables.find(t => t.id == tokenId)
let token = canvas.tokens.get(tokenId)
const actor = token?.actor ?? game.actors.get(actorId);
if (actor?.isOwner) {
actor.jetDeVie();
@ -754,11 +754,11 @@ export class RdDCombat {
/* -------------------------------------------- */
async attaque(competence, arme) {
if (!await this.attacker.accorder(this.defender, 'avant-attaque')) {
return;
return
}
if (arme.system.cac == 'empoignade') {
RdDEmpoignade.onAttaqueEmpoignade(this.attacker, this.defender)
return;
return
}
RdDEmpoignade.checkEmpoignadeEnCours(this.attacker)
@ -1307,6 +1307,7 @@ export class RdDCombat {
blessuresStatus: actor.computeResumeBlessure(),
SConst: actor.getSConst(),
actorId: actor.id,
actor: actor,
tokenId: tokenId,
isGrave: actor.countBlessures(it => it.isGrave()) > 0,
isCritique: actor.countBlessures(it => it.isCritique()) > 0

View File

@ -16,6 +16,7 @@ import { RdDRollTables } from "./rdd-rolltables.js";
import { RdDUtility } from "./rdd-utility.js";
import { FenetreRechercheTirage } from "./tirage/fenetre-recherche-tirage.js";
import { TMRUtility } from "./tmr-utility.js";
import { DialogFatigueVoyage } from "./voyage/dialog-fatigue-voyage.js";
const rddRollNumeric = /^(\d+)\s*([\+\-]?\d+)?\s*(s)?/;
@ -76,6 +77,7 @@ export class RdDCommands {
this.registerCommand({ path: ["/tirer", "desir"], func: (content, msg, params) => RdDRollTables.getDesirLancinant('chat'), descr: "Tire un Désir Lancinant" });
this.registerCommand({ path: ["/tirer", "rencontre"], func: (content, msg, params) => this.getRencontreTMR(params), descr: `Détermine une rencontre dans les TMR (synonyme de "/tmrr")` });
this.registerCommand({ path: ["/tirage"], func: (content, msg, params) => this.tirage(), descr: "Ouvre la fenêtre de recherche et tirage" });
this.registerCommand({ path: ["/voyage"], func: (content, msg, params) => this.voyage(msg, params), descr: "Gérer le voyage" });
this.registerCommand({ path: ["/sommeil"], func: (content, msg, params) => this.sommeil(msg, params), descr: "Prépare le passage de journée pour chateau dormant" });
this.registerCommand({ path: ["/meteo"], func: (content, msg, params) => this.getMeteo(msg, params), descr: "Propose une météo marine" });
@ -298,7 +300,7 @@ export class RdDCommands {
async getRencontreTMR(params) {
if (params.length == 1 || params.length == 2) {
return game.system.rdd.rencontresTMR.rollRencontre(params[0], params[1])
}
}
return false;
}
@ -485,10 +487,13 @@ export class RdDCommands {
}
async tirage() {
FenetreRechercheTirage.create();
FenetreRechercheTirage.create()
}
async voyage() {
DialogFatigueVoyage.create()
}
async sommeil() {
DialogChateauDormant.create();
DialogChateauDormant.create()
}
}

View File

@ -164,7 +164,7 @@ export class RdDDice {
if (options.showDice == HIDE_DICE || !game.modules.get("dice-so-nice")?.active || !game.dice3d) {
return;
}
let { whisper, blind } = RdDDice._getWhisperBlind(options);
if (options.forceDiceResult?.total) {
let terms = await RdDDice._getForcedTerms(options);
@ -197,48 +197,25 @@ export class RdDDice {
function terms1d100(total) {
const unites = total % 10;
const dizaines = Math.floor(total / 10);
return [{
resultLabel: dizaines * 10,
d100Result: total,
result: dizaines,
type: "d100",
vectors: [],
options: {}
},
{
resultLabel: unites,
d100Result: total,
result: unites,
type: "d10",
vectors: [],
options: {}
}];
return [
{ type: "d100", result: dizaines, resultLabel: dizaines * 10, vectors: [], options: {}, d100Result: total },
{ type: "d10", result: unites, resultLabel: unites, vectors: [], options: {}, d100Result: total }
];
}
async function terms2d10(total) {
if (total>20 || total<2) { return undefined }
let first = await RdDDice.d10();
let second = Math.min(total-first, 10);
first = Math.max(first, total-second);
return [{
resultLabel:first,
result: first,
type: "d10",
vectors: [],
options: {}
},
{
resultLabel: second,
result: second,
type: "d10",
vectors: [],
options: {}
}];
if (total > 20 || total < 2) { return undefined }
const first = await RdDDice.fakeD10(Math.min(10, total - 1));
const second = total - first;
return [
{ type: "d10", result: first, resultLabel: first, vectors: [], options: {} },
{ type: "d10", result: second, resultLabel: second, vectors: [], options: {} }
];
}
}
static async d10() {
let roll = new Roll('1d10');
static async fakeD10(faces) {
let roll = new Roll(`1d${faces}`);
await roll.evaluate({ async: true });
return roll.total;
}

View File

@ -65,7 +65,7 @@ export class RdDHotbar {
await this.createItemMacro(item, slot++, 'pugilat')
await this.createItemMacro(item, slot++, 'empoignade')
}
if (item.isCompetenceArme()) {
else if (item.isCompetenceArme()) {
ui.notifications.info(`${item.name} est une compétence d'arme, la macro n'est pas liée à un arme.<br>
Créez la macro depuis l'arme ou l'onglet combat pour garder les automatisations de combat.`);
}

View File

@ -63,6 +63,7 @@ import { AppAstrologie } from "./sommeil/app-astrologie.js";
import { RdDItemArmure } from "./item/armure.js";
import { AutoAdjustDarkness as AutoAdjustDarkness } from "./time/auto-adjust-darkness.js";
import { RdDCreature } from "./actor/creature.js";
import { RdDTMRDialog } from "./rdd-tmr-dialog.js";
/**
* RdD system
@ -72,9 +73,10 @@ import { RdDCreature } from "./actor/creature.js";
export class SystemReveDeDragon {
static start() {
const system = new SystemReveDeDragon();
Hooks.once('init', async () => await system.onInit());
Hooks.once('diceSoNiceReady', (dice3d) => RdDDice.diceSoNiceReady(dice3d));
const system = new SystemReveDeDragon()
Hooks.once('init', async () => await system.onInit())
Hooks.once('diceSoNiceReady', (dice3d) => RdDDice.diceSoNiceReady(dice3d))
Hooks.once('ready', () => system.onReady())
}
constructor() {
@ -201,12 +203,12 @@ export class SystemReveDeDragon {
RdDCompendiumOrganiser.init();
EffetsDraconiques.init()
TMRUtility.init();
await RdDTMRDialog.init()
RdDHotbar.initDropbar();
RdDPossession.init();
TMRRencontres.init();
Environnement.init();
Hooks.once('ready', () => this.onReady());
}
initSystemSettings() {
@ -264,16 +266,16 @@ export class SystemReveDeDragon {
/* -------------------------------------------- */
/* Foundry VTT Initialization */
/* -------------------------------------------- */
// CSS patch for v9
if (game.version) {
let sidebar = document.getElementById("sidebar");
sidebar.style.width = "min-content";
}
game.system.rdd.calendrier = new RdDCalendrier();
if (Misc.isUniqueConnectedGM()) {
new Migrations().migrate();
this.messageDeBienvenue();
this.registerUsageCount(SYSTEM_RDD);
import("https://www.uberwald.me/fvtt_appcount/count-class-ready.js").then(moduleCounter=>{
console.log("ClassCounter loaded", moduleCounter)
moduleCounter.ClassCounter.registerUsageCount()
}).catch(err=>
console.log("No stats available, giving up.")
)
}
StatusEffects.onReady();
@ -304,30 +306,6 @@ export class SystemReveDeDragon {
` });
}
}
/* -------------------------------------------- */
// Register world usage statistics
async registerUsageCount(registerKey) {
if (game.user.isGM) {
game.settings.register("world", "world-key", {
name: "Unique world key",
scope: "world",
config: false,
default: "NONE",
type: String
});
let worldKey = game.settings.get("world", "world-key")
if (worldKey == undefined || worldKey == "") {
worldKey = randomID(32)
game.settings.set("world", "world-key", worldKey)
}
let regURL = `https://www.uberwald.me/fvtt_appcount/count.php?name="${registerKey}"&worldKey="${worldKey}"&version="${game.release.generation}.${game.release.build}"&system="${game.system.id}"&systemversion="${game.system.version}"`
$.ajax(regURL)
/* -------------------------------------------- */
}
}
}
SystemReveDeDragon.start();

View File

@ -22,7 +22,7 @@ export class RdDRoll extends Dialog {
const html = await renderTemplate(dialogConfig.html, rollData);
let options = { classes: ["rdd-roll-dialog"], width: 650, height: 'fit-content', 'z-index': 99999, close: html => {} };
let options = { classes: ["rdd-roll-dialog"], width: 650, height: 'fit-content', 'z-index': 99999, close: html => { } };
if (dialogConfig.close) {
options.close = dialogConfig.close;
}
@ -37,14 +37,17 @@ export class RdDRoll extends Dialog {
difficultesLibres: CONFIG.RDD.difficultesLibres,
etat: actor.getEtatGeneral(),
moral: actor.getMoralTotal(), /* La valeur du moral pour les jets de volonté */
amoureux: actor.listeSuivants(it => it.coeur > 0),
carac: actor.system.carac,
finalLevel: 0,
diffConditions: 0,
diffLibre: rollData.competence?.system.default_diffLibre ?? 0,
perteMoralEchec: false, /* Pour l'affichage dans le chat */
use: {
astrologique: true,
moral: false, /* Est-ce que le joueur demande d'utiliser le moral ? Utile si le joueur change plusieurs fois de carac associée. */
libre: true,
coeur: undefined,
conditions: true,
surenc: actor.isSurenc(),
encTotal: true
@ -174,6 +177,15 @@ export class RdDRoll extends Dialog {
this.rollData.competence = this.rollData.competences.find(it => it.name == competence);
this.updateRollResult(html);
});
this.html.find('.select-suivant-coeur').change((event) => {
const selectedActorId = event.currentTarget.value;
this.rollData.use.coeur = this.actor.getSuivant(selectedActorId)
if (this.rollData.use.coeur) {
this.html.find(".utilisation-coeur img.selected-suivant-coeur").attr('src', this.rollData.use.coeur?.img)
this.html.find(".utilisation-coeur img.selected-suivant-coeur").attr('title', this.rollData.use.coeur?.name)
}
this.updateRollResult(html);
});
this.html.find('.roll-signedraconique').change((event) => {
let sortKey = Misc.toInt(event.currentTarget.value);
this.setSelectedSigneDraconique(this.rollData.signes[sortKey]);
@ -203,6 +215,10 @@ export class RdDRoll extends Dialog {
this.rollData[attribute] = event.currentTarget.checked;
this.updateRollResult(html);
});
this.html.find('input.use-astrologique').change((event) => {
this.rollData.use.astrologique = event.currentTarget.checked;
this.updateRollResult(html);
});
this.html.find('input.use-encTotal').change((event) => {
this.rollData.use.encTotal = event.currentTarget.checked;
this.updateRollResult(html);
@ -300,17 +316,20 @@ export class RdDRoll extends Dialog {
const resolutionTable = await RdDResolutionTable.buildHTMLTable(RdDResolutionTable.subTable(rollData.caracValue, rollData.finalLevel))
const adjustements = await this.buildAjustements(rollData);
HtmlUtility.showControlWhen(this.html.find(".use-encTotal"), rollData.ajustements.encTotal.visible && RdDCarac.isAgiliteOuDerobee(rollData.selectedCarac));
HtmlUtility.showControlWhen(this.html.find(".use-surenc"), rollData.ajustements.surenc.visible && RdDCarac.isActionPhysique(rollData.selectedCarac));
HtmlUtility.showControlWhen(this.html.find(".use-astrologique"), rollData.ajustements.astrologique.visible);
HtmlUtility.showControlWhen(this.html.find(".utilisation-moral"), rollData.use.appelAuMoral);
HtmlUtility.showControlWhen(this.html.find(".divAppelAuMoral"), rollData.use.appelAuMoral);
HtmlUtility.showControlWhen(this.html.find(".utilisation-coeur"), rollData.ajustements.coeur.visible);
HtmlUtility.showControlWhen(this.html.find(".utilisation-coeur img.selected-suivant-coeur"), rollData.ajustements.coeur.visible && rollData.use.coeur != undefined)
// HtmlUtility.showControlWhen(this.html.find(".diffMoral"), rollData.ajustements.moral.used);
// Mise à jour valeurs
this.html.find(".dialog-roll-title").text(this._getTitle(rollData));
this.html.find("input.check-mortalite").prop('checked', rollData.dmg.mortalite == 'non-mortel');
this.html.find("label.dmg-arme-actor").text(rollData.dmg.mortalite == 'empoignade'? 'empoignade': Misc.toSignedString(rollData.dmg.total) );
this.html.find("label.dmg-arme-actor").text(rollData.dmg.mortalite == 'empoignade' ? 'empoignade' : Misc.toSignedString(rollData.dmg.total));
this.html.find("label.arme-mortalite").text(rollData.dmg.mortalite);
// this.html.find("[name='dmg-arme-actor']").text(rollData.dmg.mortalite == 'empoignade'? 'empoignade': Misc.toSignedString(rollData.dmg.total) );
// this.html.find("[name='arme-mortalite']").text(rollData.dmg.mortalite);

View File

@ -43,11 +43,17 @@ export class RdDSheetUtility {
item = await RdDItem.getCorrespondingItem(item);
}
if (actor.canReceive(item)) {
if (!actor.prototypeToken.actorLink && actor.token) {
ui.notifications.warn(`Impossible de donner ${item.name} à ${actor.name}, c'est un acteur temporaire
<br>La suppression de son token entraînera la perte définitive de ${item.name}.`)
return
}
return {
destId: destItemId,
targetActorId: actor.id,
itemId: item.id,
sourceActorId: item.actor?.id,
sourceTokenId: item.actor?.token?.id,
srcId: objetVersConteneur[item.id],
onEnleverConteneur: () => { delete objetVersConteneur[item.id]; },
onAjouterDansConteneur: (itemId, conteneurId) => { objetVersConteneur[itemId] = conteneurId; }

View File

@ -1,4 +1,4 @@
import { SHOW_DICE } from "./constants.js";
import { SHOW_DICE, SYSTEM_RDD } from "./constants.js";
import { RollDataAjustements } from "./rolldata-ajustements.js";
import { RdDUtility } from "./rdd-utility.js";
import { TMRUtility } from "./tmr-utility.js";
@ -16,19 +16,43 @@ import { RdDDice } from "./rdd-dice.js";
import { STATUSES } from "./settings/status-effects.js";
import { RdDRencontre } from "./item/rencontre.js";
import { RdDTimestamp } from "./time/rdd-timestamp.js";
import { TYPES } from "./item.js";
import { Misc } from "./misc.js";
const TMR_DISPLAY_SIZE = {
code: 'tmr-display-size',
range: {
min: 32,
max: 128,
step: 8,
},
def: 64,
clamp: (size, inc = 0) => Math.max(TMR_DISPLAY_SIZE.range.min, Math.min(size + (inc * TMR_DISPLAY_SIZE.range.step), TMR_DISPLAY_SIZE.range.max)),
get: () => TMR_DISPLAY_SIZE.clamp(game.settings.get(SYSTEM_RDD, TMR_DISPLAY_SIZE.code) ?? TMR_DISPLAY_SIZE.def),
set: (size) => game.settings.set(SYSTEM_RDD, TMR_DISPLAY_SIZE.code, TMR_DISPLAY_SIZE.clamp(size)),
};
/* -------------------------------------------- */
export class RdDTMRDialog extends Dialog {
static async init() {
game.settings.register(SYSTEM_RDD, TMR_DISPLAY_SIZE.code, {
name: 'Taille des cases des TMR',
hint: "Taille en pixel des cases des TMR (réglable directement dans la fenêtre des TMR)",
scope: "client",
config: true,
default: TMR_DISPLAY_SIZE.def,
type: Number,
range: TMR_DISPLAY_SIZE.range
})
await PixiTMR.init()
}
static async create(actor, tmrData) {
let html = await renderTemplate('systems/foundryvtt-reve-de-dragon/templates/dialog-tmr.html', tmrData);
if (tmrData.mode != 'visu') {
// Notification au MJ
if (tmrData.mode != 'visu' && !game.user.isGM) {
ChatMessage.create({ content: actor.name + " est monté dans les TMR en mode : " + tmrData.mode, whisper: ChatMessage.getWhisperRecipients("GM") });
}
return new RdDTMRDialog(html, actor, tmrData);
}
@ -37,21 +61,16 @@ export class RdDTMRDialog extends Dialog {
const dialogConf = {
title: "Terres Médianes de Rêve",
content: html,
buttons: {
closeButton: {
label: "Fermer", callback: html => this.close()
}
},
default: "closeButton"
buttons: {}
}
const dialogOptions = {
classes: ["tmrdialog"],
width: 920, maxheight: 1024, height: 'fit-content',
width: 'fit-content',
height: 'fit-content',
'max-height': 1024,
'z-index': 40
}
super(dialogConf, dialogOptions);
this.tmrdata = duplicate(tmrData);
this.actor = actor;
this.actor.tmrApp = this; // reference this app in the actor structure
@ -62,25 +81,96 @@ export class RdDTMRDialog extends Dialog {
this.loadCasesSpeciales();
this.allTokens = [];
this.rencontreState = 'aucune';
this.pixiTMR = new PixiTMR(this);
this.subdialog = undefined
this.callbacksOnAnimate = [];
this.displaySize = undefined
if (!this.viewOnly) {
this._tellToGM(this.actor.name + " monte dans les terres médianes (" + tmrData.mode + ")");
}
this.callbacksOnAnimate = [];
const displaySize = TMR_DISPLAY_SIZE.clamp(game.settings.get(SYSTEM_RDD, TMR_DISPLAY_SIZE.code) ?? TMR_DISPLAY_SIZE.def);
this.pixiTMR = new PixiTMR(this, displaySize);
this.resizePixiTMR(displaySize)
}
// load the texture we need
this.pixiTMR.load((loader, resources) => this.createPixiSprites());
resizePixiTMR(displaySize) {
if (displaySize != this.displaySize) {
this.displaySize = displaySize
this.pixiTMR.resizeTMR(displaySize);
this._removeTokens()
this.allTokens = []
this.createPixiSprites()
this.pixiTMR.loadAnimations();
}
}
/* -------------------------------------------- */
async activateListeners(html) {
super.activateListeners(html);
this.html = html;
// this.activateTMRSize()
this.addTMRMap()
this.html.find('div.tmr-size a.tmr-size-zoom-minus*').click(event => {
this.$changeTMRSize(-1)
});
this.html.find('div.tmr-size a.tmr-size-zoom-plus*').click(event => {
this.$changeTMRSize(1)
});
if (this.viewOnly) {
this.html.find('.lancer-sort').remove();
this.html.find('.lire-signe-draconique').remove();
return;
}
HtmlUtility.showControlWhen(this.html.find(".appliquerFatigue"), ReglesOptionnelles.isUsing("appliquer-fatigue"));
HtmlUtility.showControlWhen(this.html.find(".lire-signe-draconique"), this.actor.isResonanceSigneDraconique(this._getCoordActor()));
this.html.find('form.tmr-dialog *').click(event => this.subdialog?.bringToTop());
// Roll Sort
this.html.find('.lancer-sort').click(event => this.actor.rollUnSort(this._getCoordActor()));
this.html.find('.lire-signe-draconique').click(event => this.actor.rollLireSigneDraconique(this._getCoordActor()));
this.html.find('img.tmr-move').click(event => this.deplacementTMR(this.html.find(event.currentTarget)?.data('move')));
// Gestion du cout de montée en points de rêve
await this.actor.reveActuelIncDec(this.calculCoutMonteeTMR());
this.cumulFatigue += this.fatigueParCase;
// Le reste...
this.updateValuesDisplay();
}
async onDeplacement() {
await this.manageRencontre(TMRUtility.getTMR(this._getCoordActor()));
}
addTMRMap() {
const tmrCell = document.getElementsByClassName("tmr-map")[0];
tmrCell.childNodes.forEach(node => tmrCell.removeChild(node))
tmrCell.append(this.pixiTMR.view);
}
$changeTMRSize(inc) {
let displaySize = TMR_DISPLAY_SIZE.clamp(this.displaySize, inc)
if (displaySize != this.displaySize) {
game.settings.set(SYSTEM_RDD, TMR_DISPLAY_SIZE.code, TMR_DISPLAY_SIZE.clamp(displaySize))
this.resizePixiTMR(displaySize)
this.render()
}
}
async forceTMRDisplay() {
this.bringToTop();
if (this.subdialog) {
this.subdialog.bringToTop();
if (this.rendered) {
this.bringToTop()
if (this.subdialog?.bringToTop) {
this.subdialog.bringToTop();
}
}
}
async restoreTMRAfterAction() {
this.subdialog = undefined
await this.maximize();
@ -89,15 +179,15 @@ export class RdDTMRDialog extends Dialog {
forceTMRContinueAction() {
ui.notifications.warn('Vous devez finir votre action avant de continuer dans les TMR');
this.subdialog.bringToTop();
if (this.subdialog?.bringToTop) {
this.subdialog.bringToTop();
}
return;
}
setTMRPendingAction(dialog) {
this.subdialog = dialog
if (dialog instanceof Application) {
dialog.bringToTop();
}
this.forceTMRDisplay()
}
isDemiReveCache() {
@ -110,11 +200,11 @@ export class RdDTMRDialog extends Dialog {
}
get sortsReserve() {
return this.actor.itemTypes['sortreserve'];
return this.actor.itemTypes[TYPES.sortreserve];
}
getSortsReserve(coord) {
return this.actor.itemTypes['sortreserve'].filter(// Reserve sur une case fleuve ou normale
return this.actor.itemTypes[TYPES.sortreserve].filter(// Reserve sur une case fleuve ou normale
TMRUtility.getTMR(coord).type == 'fleuve'
? it => TMRUtility.getTMR(it.system.coord).type == 'fleuve'
: it => it.system.coord == coord
@ -129,8 +219,8 @@ export class RdDTMRDialog extends Dialog {
/* -------------------------------------------- */
createPixiSprites() {
this.pixiTMR.setup()
this.updateTokens();
this.forceDemiRevePositionView();
this.updateTokens()
this.forceDemiRevePositionView()
}
/* -------------------------------------------- */
@ -160,26 +250,21 @@ export class RdDTMRDialog extends Dialog {
/* -------------------------------------------- */
_getTokensCasesTmr() {
return this.casesSpeciales.map(c => this._tokenCaseSpeciale(c)).filter(token => token);
}
_getTokensRencontres() {
return this.rencontresExistantes.map(it => this._tokenRencontre(it));
}
_getTokensSortsReserve() {
return this.actor.itemTypes['sortreserve'].map(it => this._tokenSortEnReserve(it));
return Misc.concat(this.casesSpeciales.map(caseSpeciale =>
Draconique.get(caseSpeciale.system.specific)?.token(this.pixiTMR, caseSpeciale, () => caseSpeciale.system.coord)
))
}
/* -------------------------------------------- */
_tokenRencontre(rencontre) {
return EffetsDraconiques.rencontre.token(this.pixiTMR, rencontre, () => rencontre.system.coord);
_getTokensRencontres() {
return Misc.concat(this.rencontresExistantes.map(rencontre =>
EffetsDraconiques.rencontre.tokens(this.pixiTMR, rencontre, () => rencontre.system.coord)
))
}
_tokenCaseSpeciale(casetmr) {
const caseData = casetmr;
const draconique = Draconique.get(caseData.system.specific);
return draconique?.token(this.pixiTMR, caseData, () => caseData.system.coord);
}
_tokenSortEnReserve(sortReserve) {
return EffetsDraconiques.sortReserve.token(this.pixiTMR, sortReserve, () => sortReserve.system.coord);
_getTokensSortsReserve() {
const sortsReserve = this.actor.itemTypes[TYPES.sortreserve];
return Misc.concat(sortsReserve.map(sortReserve =>
EffetsDraconiques.sortReserve.tokens(this.pixiTMR, sortReserve, () => sortReserve.system.coord)))
}
_tokenDemiReve() {
@ -187,78 +272,28 @@ export class RdDTMRDialog extends Dialog {
}
forceDemiRevePositionView() {
this.notifierResonanceSigneDraconique(this._getActorCoord());
this.notifierResonanceSigneDraconique(this._getCoordActor());
this._trackToken(this.demiReve);
}
_getActorCoord() {
_getCoordActor() {
return this.actor.system.reve.tmrpos.coord;
}
/* -------------------------------------------- */
async moveFromKey(move) {
async deplacementTMR(move) {
if (this.subdialog) {
return this.forceTMRContinueAction();
}
let oddq = TMRUtility.coordTMRToOddq(this._getActorCoord());
if (move == 'top') oddq.row -= 1;
if (move == 'bottom') oddq.row += 1;
if (move.includes('left')) oddq.col -= 1;
if (move.includes('right')) oddq.col += 1;
if (oddq.col % 2 == 1) {
if (move == 'top-left') oddq.row -= 1;
if (move == 'top-right') oddq.row -= 1;
} else {
if (move == 'bottom-left') oddq.row += 1;
if (move == 'bottom-right') oddq.row += 1;
}
let targetCoord = TMRUtility.oddqToCoordTMR(oddq);
await this._deplacerDemiReve(targetCoord, 'normal');
const coordOrig = this._getCoordActor();
const coordTarget = TMRUtility.deplacement(coordOrig, move);
await this._deplacerDemiReve(coordTarget, 'normal');
this.checkQuitterTMR();
}
/* -------------------------------------------- */
async activateListeners(html) {
super.activateListeners(html);
this.html = html;
document.getElementsByClassName("tmr-row")
.item(0)
.insertCell(0)
.append(this.pixiTMR.view);
if (this.viewOnly) {
this.html.find('.lancer-sort').remove();
this.html.find('.lire-signe-draconique').remove();
return;
}
HtmlUtility.showControlWhen(this.html.find(".appliquerFatigue"), ReglesOptionnelles.isUsing("appliquer-fatigue"));
HtmlUtility.showControlWhen(this.html.find(".lire-signe-draconique"), this.actor.isResonanceSigneDraconique(this._getActorCoord()));
this.html.find('tr.tmr-row *').click(event => this.subdialog?.bringToTop());
// Roll Sort
this.html.find('.lancer-sort').click(event => this.actor.rollUnSort(this._getActorCoord()));
this.html.find('.lire-signe-draconique').click(event => this.actor.rollLireSigneDraconique(this._getActorCoord()));
this.html.find('#dir-top').click(event=> this.moveFromKey("top"));
this.html.find('#dir-top-left').click(event=> this.moveFromKey("top-left"));
this.html.find('#dir-top-right').click(event=> this.moveFromKey("top-right"));
this.html.find('#dir-bottom-left').click(event=> this.moveFromKey("bottom-left"));
this.html.find('#dir-bottom-right').click(event=> this.moveFromKey("bottom-right"));
this.html.find('#dir-bottom').click(event=> this.moveFromKey("bottom"));
// Gestion du cout de montée en points de rêve
let reveCout = ((this.tmrdata.isRapide && !EffetsDraconiques.isDeplacementAccelere(this.actor)) ? -2 : -1) - this.actor.countMonteeLaborieuse();
await this.actor.reveActuelIncDec(reveCout);
this.cumulFatigue += this.fatigueParCase;
// Le reste...
this.updateValuesDisplay();
let tmr = TMRUtility.getTMR(this._getActorCoord());
await this.manageRencontre(tmr);
calculCoutMonteeTMR() {
return ((this.tmrdata.isRapide && !EffetsDraconiques.isDeplacementAccelere(this.actor)) ? -2 : -1) - this.actor.countMonteeLaborieuse();
}
/* -------------------------------------------- */
@ -266,7 +301,7 @@ export class RdDTMRDialog extends Dialog {
if (!this.rendered) {
return;
}
const coord = this._getActorCoord();
const coord = this._getCoordActor();
HtmlUtility.showControlWhen(this.html.find(".lire-signe-draconique"), this.actor.isResonanceSigneDraconique(coord));
@ -297,7 +332,6 @@ export class RdDTMRDialog extends Dialog {
if (this.subdialog) {
return this.forceTMRContinueAction()
}
this.descenteTMR = true;
if (this.actor.tmrApp) {
this.actor.tmrApp = undefined; // Cleanup reference
@ -309,6 +343,8 @@ export class RdDTMRDialog extends Dialog {
this.cumulFatigue)
}
await super.close();
this.pixiTMR.close()
this.pixiTMR = undefined
}
/* -------------------------------------------- */
@ -424,7 +460,7 @@ export class RdDTMRDialog extends Dialog {
nbRounds: 1,
canClose: false,
selectedCarac: { label: "reve-actuel" },
tmr: TMRUtility.getTMR(this._getActorCoord())
tmr: TMRUtility.getTMR(this._getCoordActor())
}
await this._tentativeMaitrise(rencontreData);
@ -543,7 +579,7 @@ export class RdDTMRDialog extends Dialog {
}
this.descenteTMR = false;
this.currentRencontre = undefined;
if (this._presentCite(tmr)) {
if (await this._presentCite(tmr)) {
return;
}
this.currentRencontre = await this._jetDeRencontre(tmr);
@ -554,7 +590,7 @@ export class RdDTMRDialog extends Dialog {
}
else {
const dialog = new RdDTMRRencontreDialog(this.actor, this.currentRencontre, tmr);
dialog.render(true);
await dialog.render(true);
this.setTMRPendingAction(dialog);
}
}
@ -564,11 +600,11 @@ export class RdDTMRDialog extends Dialog {
}
/* -------------------------------------------- */
_presentCite(tmr) {
async _presentCite(tmr) {
const presentCite = this.casesSpeciales.find(c => EffetsDraconiques.presentCites.isCase(c, tmr.coord));
if (presentCite) {
const caseData = presentCite;
const dialog = EffetsDraconiques.presentCites.choisirUnPresent(caseData, present => {
const dialog = await EffetsDraconiques.presentCites.choisirUnPresent(caseData, present => {
this._utiliserPresentCite(presentCite, present, tmr)
this.restoreTMRAfterAction();
});
@ -607,19 +643,18 @@ export class RdDTMRDialog extends Dialog {
if (rencontre) {
return game.system.rdd.rencontresTMR.calculRencontre(rencontre, tmr);
}
let locTMR = (this.isDemiReveCache()
const coordTMR = (this.isDemiReveCache()
? TMRUtility.getTMRType(tmr.coord) + " ??"
: tmr.label + " (" + tmr.coord + ")");
const fakeDialogRencontre = { bringToTop: () => { } };
this.setTMRPendingAction(fakeDialogRencontre)
let myRoll = await RdDDice.rollTotal("1dt", { showDice: SHOW_DICE });
this.setTMRPendingAction({ bringToTop: () => { } })
const myRoll = await RdDDice.rollTotal("1dt", { showDice: SHOW_DICE });
this.restoreTMRAfterAction()
if (myRoll == 7) {
this._tellToUser(myRoll + ": Rencontre en " + locTMR);
this._tellToUser(myRoll + ": Rencontre en " + coordTMR);
return await game.system.rdd.rencontresTMR.getRencontreAleatoire(tmr, this.actor.isMauvaiseRencontre())
} else {
this._tellToUser(myRoll + ": Pas de rencontre en " + locTMR);
this._tellToUser(myRoll + ": Pas de rencontre en " + coordTMR);
return undefined;
}
}
@ -665,7 +700,6 @@ export class RdDTMRDialog extends Dialog {
}
async _resultatMaitriseCaseHumide(rollData) {
await this.souffleSiEchecTotal(rollData);
if (rollData.rolled.isSuccess && rollData.double) {
rollData.previous = { rolled: rollData.rolled, ajustements: rollData.ajustements };
rollData.double = undefined;
@ -680,6 +714,7 @@ export class RdDTMRDialog extends Dialog {
if (rollData.rolled.isEchec) {
await this.close();
}
await this.souffleSiEchecTotal(rollData);
}
/* -------------------------------------------- */
@ -933,19 +968,18 @@ export class RdDTMRDialog extends Dialog {
if (this.subdialog) {
return this.forceTMRContinueAction()
}
let clickOddq = TMRUtility.computeEventOddq(event);
let currentOddq = TMRUtility.coordTMRToOddq(this._getActorCoord());
let targetCoord = TMRUtility.oddqToCoordTMR(clickOddq);
let currentCoord = TMRUtility.oddqToCoordTMR(currentOddq);
const currentCoord = this._getCoordActor()
const currentOddq = TMRUtility.coordTMRToOddq(currentCoord)
const targetOddq = this.pixiTMR.computeEventOddq(event)
const targetCoord = TMRUtility.oddqToCoordTMR(targetOddq)
// Validation de la case de destination (gestion du cas des rencontres qui peuvent téléporter)
let deplacementType = this._calculDeplacement(targetCoord, currentCoord, currentOddq, clickOddq);
const typeDeplacement = this._calculDeplacement(targetCoord, currentCoord, currentOddq, targetOddq);
if (this.isDemiReveCache()) {
if (this.isTerreAttache(targetCoord)
|| this.isConnaissanceFleuve(currentCoord, targetCoord)
|| deplacementType == 'changeur') {
|| typeDeplacement == 'changeur') {
// déplacement possible
await this.actor.setTMRVisible(true);
this.demiReve = this._tokenDemiReve();
@ -960,11 +994,11 @@ export class RdDTMRDialog extends Dialog {
}
}
switch (deplacementType) {
switch (typeDeplacement) {
case 'normal':
case 'changeur':
case 'passeur':
await this._deplacerDemiReve(targetCoord, deplacementType);
await this._deplacerDemiReve(targetCoord, typeDeplacement);
break;
case 'messager':
await this._messagerDemiReve(targetCoord);
@ -1048,7 +1082,7 @@ export class RdDTMRDialog extends Dialog {
}
async notifierResonanceSigneDraconique(coord) {
if (this.actor.isResonanceSigneDraconique(coord)) {
if (!this.viewOnly && this.actor.isResonanceSigneDraconique(coord)) {
ChatMessage.create({
whisper: ChatUtility.getWhisperRecipientsAndGMs(game.user.name),
content: await renderTemplate(`systems/foundryvtt-reve-de-dragon/templates/chat-signe-draconique-resonance.html`, { alias: this.actor.name, typeTMR: TMRUtility.getTMRType(coord) })
@ -1084,12 +1118,15 @@ export class RdDTMRDialog extends Dialog {
}
/* -------------------------------------------- */
_removeTokens(filter) {
_removeTokens(filter = it => true) {
this.allTokens.filter(filter).forEach(token => this.pixiTMR.removeToken(token))
}
/* -------------------------------------------- */
_trackToken(token) {
if (!token) {
return
}
if (this.demiReve === token && this.isDemiReveCache()) {
return;
}

View File

@ -90,7 +90,6 @@ export class RdDTokenHud {
if (target?.actor) {
const hudSoins = { blessures: target.actor.blessuresASoigner() ?? [] };
if (hudSoins.blessures.length > 0) {
// soins
const controlIconTarget = html.find('.control-icon[data-action=combat]');
await RdDTokenHud._configureSubMenu(controlIconTarget,
'systems/foundryvtt-reve-de-dragon/templates/hud-actor-soins.hbs',

View File

@ -17,6 +17,7 @@ import { RdDTimestamp } from "./time/rdd-timestamp.js";
import { RdDRaretes } from "./item/raretes.js";
import { RdDEmpoignade } from "./rdd-empoignade.js";
import { ExperienceLog } from "./actor/experience-log.js";
import { RdDCoeur } from "./coeur/rdd-coeur.js";
/* -------------------------------------------- */
// This table starts at 0 -> niveau -10
@ -62,12 +63,6 @@ const cumulFatigueMatrix = _cumulSegmentsFatigue(fatigueMatrix);
const fatigueMalus = [0, 0, 0, -1, -1, -1, -2, -3, -4, -5, -6, -7]; // Provides the malus for each segment of fatigue
const fatigueLineSize = [3, 6, 7, 8, 9, 10, 11, 12];
const fatigueLineMalus = [0, -1, -2, -3, -4, -5, -6, -7];
const fatigueMarche = {
"aise": { "4": 1, "6": 2, "8": 3, "10": 4, "12": 6 },
"malaise": { "4": 2, "6": 3, "8": 4, "10": 6 },
"difficile": { "4": 3, "6": 4, "8": 6 },
"tresdifficile": { "4": 4, "6": 6 }
}
/* -------------------------------------------- */
const nomEthylisme = ["Emeché", "Gris", "Pinté", "Pas frais", "Ivre", "Bu", "Complètement fait", "Ivre mort"];
@ -75,22 +70,22 @@ const nomEthylisme = ["Emeché", "Gris", "Pinté", "Pas frais", "Ivre", "Bu", "C
/* -------------------------------------------- */
const definitionsEncaissement = {
"mortel": [
{ minimum: undefined, maximum: 0, endurance: "0", vie: "0", gravite: -1},
{ minimum: 1, maximum: 10, endurance: "1d4", vie: "0", gravite: 0},
{ minimum: 11, maximum: 15, endurance: "1d6", vie: "0", gravite: 2},
{ minimum: 16, maximum: 19, endurance: "2d6", vie: "2", gravite: 4},
{ minimum: 20, maximum: undefined, endurance: "100", vie: "4 + @over20", gravite: 6},
{ minimum: undefined, maximum: 0, endurance: "0", vie: "0", gravite: -1 },
{ minimum: 1, maximum: 10, endurance: "1d4", vie: "0", gravite: 0 },
{ minimum: 11, maximum: 15, endurance: "1d6", vie: "0", gravite: 2 },
{ minimum: 16, maximum: 19, endurance: "2d6", vie: "2", gravite: 4 },
{ minimum: 20, maximum: undefined, endurance: "100", vie: "4 + @over20", gravite: 6 },
],
"non-mortel": [
{ minimum: undefined, maximum: 0, endurance: "0", vie: "0", gravite: -1},
{ minimum: undefined, maximum: 0, endurance: "0", vie: "0", gravite: -1 },
{ minimum: 1, maximum: 10, endurance: "1d4", vie: "0", gravite: 0 },
{ minimum: 11, maximum: 15, endurance: "1d6", vie: "0", gravite: 0 },
{ minimum: 16, maximum: 19, endurance: "2d6", vie: "0", gravite: 2 },
{ minimum: 20, maximum: undefined, endurance: "100", vie: "0", gravite: 2 },
],
"entiteincarnee": [
{ minimum: undefined, maximum: 0, endurance: "0", vie: "0", gravite: -1},
{ minimum: 1, maximum: 10, endurance: "1d4", vie: "0", gravite: 0},
{ minimum: undefined, maximum: 0, endurance: "0", vie: "0", gravite: -1 },
{ minimum: 1, maximum: 10, endurance: "1d4", vie: "0", gravite: 0 },
{ minimum: 11, maximum: 15, endurance: "1d6", vie: "0", gravite: 0 },
{ minimum: 16, maximum: 19, endurance: "2d6", vie: "0", gravite: 0 },
{ minimum: 20, maximum: undefined, endurance: "3d6 + @over20", vie: "0", gravite: 0 },
@ -99,7 +94,8 @@ const definitionsEncaissement = {
/* -------------------------------------------- */
export class RdDUtility {
// persistent handling of conteneur show/hide
static afficheContenu = {}
/* -------------------------------------------- */
static async init() {
Hooks.on("renderChatMessage", async (app, html, msg) => RdDUtility.onRenderChatMessage(app, html, msg));
@ -165,15 +161,16 @@ export class RdDUtility {
'systems/foundryvtt-reve-de-dragon/templates/actor/inventaire.html',
'systems/foundryvtt-reve-de-dragon/templates/actor/inventaire-item.html',
"systems/foundryvtt-reve-de-dragon/templates/actor/inventaire-monnaie.html",
'systems/foundryvtt-reve-de-dragon/templates/actor/liens-animaux.html',
'systems/foundryvtt-reve-de-dragon/templates/actor/liens-suivants.html',
'systems/foundryvtt-reve-de-dragon/templates/actor/liens-vehicules.html',
'systems/foundryvtt-reve-de-dragon/templates/actor/liens-animaux.hbs',
'systems/foundryvtt-reve-de-dragon/templates/actor/liens-suivants.hbs',
'systems/foundryvtt-reve-de-dragon/templates/actor/liens-vehicules.hbs',
'systems/foundryvtt-reve-de-dragon/templates/actor/commerce-inventaire.html',
'systems/foundryvtt-reve-de-dragon/templates/actor/commerce-inventaire-item.html',
//Items
'systems/foundryvtt-reve-de-dragon/templates/scripts/autocomplete-script.hbs',
'systems/foundryvtt-reve-de-dragon/templates/scripts/autocomplete.hbs',
'systems/foundryvtt-reve-de-dragon/templates/item/boutons-comestible.html',
'systems/foundryvtt-reve-de-dragon/templates/item/icon-arme-broken.hbs',
'systems/foundryvtt-reve-de-dragon/templates/item/temporel.hbs',
'systems/foundryvtt-reve-de-dragon/templates/item/partial-inventaire.html',
'systems/foundryvtt-reve-de-dragon/templates/item/partial-environnement.html',
@ -201,8 +198,12 @@ export class RdDUtility {
'systems/foundryvtt-reve-de-dragon/templates/enum-tmr-effet.html',
'systems/foundryvtt-reve-de-dragon/templates/enum-tmr-type.html',
// Partials
'systems/foundryvtt-reve-de-dragon/templates/coeur/chat-effet-tendre-moment.hbs',
'systems/foundryvtt-reve-de-dragon/templates/coeur/afficher-coeur.hbs',
'systems/foundryvtt-reve-de-dragon/templates/tirage/liste-resultats-recherche.hbs',
'systems/foundryvtt-reve-de-dragon/templates/time/horloge.hbs',
'systems/foundryvtt-reve-de-dragon/templates/voyage/fatigue-actor.hbs',
'systems/foundryvtt-reve-de-dragon/templates/voyage/option-vitesse-fatigue.hbs',
'systems/foundryvtt-reve-de-dragon/templates/common/timestamp.hbs',
'systems/foundryvtt-reve-de-dragon/templates/common/periodicite.hbs',
'systems/foundryvtt-reve-de-dragon/templates/common/enum-duree.hbs',
@ -210,14 +211,16 @@ export class RdDUtility {
'systems/foundryvtt-reve-de-dragon/templates/partial-description-overflow.html',
'systems/foundryvtt-reve-de-dragon/templates/partial-description-sort.html',
'systems/foundryvtt-reve-de-dragon/templates/partial-roll-ajustements.html',
'systems/foundryvtt-reve-de-dragon/templates/partial-roll-astrologique.hbs',
'systems/foundryvtt-reve-de-dragon/templates/partial-roll-coeur.hbs',
'systems/foundryvtt-reve-de-dragon/templates/partial-roll-competences.html',
'systems/foundryvtt-reve-de-dragon/templates/partial-roll-diffLibre.html',
'systems/foundryvtt-reve-de-dragon/templates/partial-roll-diffFixe.html',
'systems/foundryvtt-reve-de-dragon/templates/partial-roll-diffCondition.html',
'systems/foundryvtt-reve-de-dragon/templates/partial-roll-surenc.html',
'systems/foundryvtt-reve-de-dragon/templates/partial-roll-enctotal.html',
'systems/foundryvtt-reve-de-dragon/templates/partial-roll-moral.html',
'systems/foundryvtt-reve-de-dragon/templates/partial-roll-forcer.html',
'systems/foundryvtt-reve-de-dragon/templates/partial-roll-competences.html',
'systems/foundryvtt-reve-de-dragon/templates/partial-roll-moral.html',
'systems/foundryvtt-reve-de-dragon/templates/partial-roll-surenc.html',
'systems/foundryvtt-reve-de-dragon/templates/partial-select-carac.html',
'systems/foundryvtt-reve-de-dragon/templates/partial-item-hautrevant.html',
'systems/foundryvtt-reve-de-dragon/templates/partial-item-frequence.html',
@ -281,6 +284,7 @@ export class RdDUtility {
Handlebars.registerHelper('timestamp-formulesDuree', () => RdDTimestamp.formulesDuree());
Handlebars.registerHelper('timestamp-formulesPeriode', () => RdDTimestamp.formulesPeriode());
Handlebars.registerHelper('array-includes', (array, value) => array.includes(value));
Handlebars.registerHelper('min', (...args) => Math.min(...args.slice(0, -1)));
Handlebars.registerHelper('regle-optionnelle', (option) => ReglesOptionnelles.isUsing(option));
Handlebars.registerHelper('trier', list => list.sort((a, b) => a.name.localeCompare(b.name)));
@ -289,7 +293,7 @@ export class RdDUtility {
Handlebars.registerHelper('uniteQuantite', (itemId, actorId) => RdDUtility.getItem(itemId, actorId)?.getUniteQuantite());
Handlebars.registerHelper('isFieldInventaireModifiable', (type, field) => RdDItem.isFieldInventaireModifiable(type, field));
Handlebars.registerHelper('rarete-getChamp', (rarete, field) => RdDRaretes.getChamp(rarete, field));
Handlebars.registerHelper('plusMoins', diff => (diff > 0 ? '+' : '') + Math.round(diff))
Handlebars.registerHelper('experienceLog-topic', topic => ExperienceLog.labelTopic(topic));
@ -322,24 +326,16 @@ export class RdDUtility {
}
/* -------------------------------------------- */
static getNomEthylisme(niveauEthylisme) {
let index = -niveauEthylisme;
return index < 0 ? 'Aucun' : nomEthylisme[index];
}
static getNomEthylisme(niveauEthylisme) { return niveauEthylisme > 0 ? 'Aucun' : nomEthylisme[-niveauEthylisme] }
/* -------------------------------------------- */
static initAfficheContenu() { // persistent handling of conteneur show/hide
if (!this.afficheContenu)
this.afficheContenu = {};
}
/* -------------------------------------------- */
static toggleAfficheContenu(conteneurId) {
this.afficheContenu[conteneurId] = !this.afficheContenu[conteneurId];
RdDUtility.afficheContenu[conteneurId] = !RdDUtility.afficheContenu[conteneurId];
}
/* -------------------------------------------- */
static getAfficheContenu(conteneurId) {
if (conteneurId)
return this.afficheContenu[conteneurId];
return RdDUtility.afficheContenu[conteneurId];
return undefined;
}
@ -650,8 +646,9 @@ export class RdDUtility {
/* -------------------------------------------- */
static async chatListeners(html) {
RdDCombat.registerChatCallbacks(html);
RdDEmpoignade.registerChatCallbacks(html);
RdDCombat.registerChatCallbacks(html)
RdDEmpoignade.registerChatCallbacks(html)
RdDCoeur.registerChatCallbacks(html)
// Gestion spécifique message passeurs
html.on("click", '.tmr-passeur-coord a', event => {
@ -810,7 +807,7 @@ export class RdDUtility {
}
/* -------------------------------------------- */
static confirmerSuppressionSubacteur(sheet, subActor, htmlToDelete, onSuppression = ()=>{}) {
static confirmSubActeurDelete(sheet, subActor, htmlToDelete, onSuppression = () => { }) {
RdDConfirm.confirmer({
settingConfirmer: "confirmation-supprimer-lien-acteur",
content: `<p>Etes vous certain de vouloir supprimer le lien vers ${subActor.name} ?</p>`,

View File

@ -64,32 +64,44 @@ export const referenceAjustements = {
},
encTotal: {
isVisible: (rollData, actor) => RdDCarac.isAgiliteOuDerobee(rollData.selectedCarac) && RdDItemCompetence.isMalusEncombrementTotal(rollData.competence),
isUsed: (rollData, actor) => !rollData.oeuvre && RdDCarac.isAgiliteOuDerobee(rollData.selectedCarac) && RdDItemCompetence.isMalusEncombrementTotal(rollData.competence) && rollData.use.encTotal,
isUsed: (rollData, actor) => !rollData.oeuvre && RdDCarac.isAgiliteOuDerobee(rollData.selectedCarac) && RdDItemCompetence.isMalusEncombrementTotal(rollData.competence) && rollData.use?.encTotal,
getLabel: (rollData, actor) => 'Encombrement total',
getValue: (rollData, actor) => -actor.getEncTotal()
},
surenc: {
isVisible: (rollData, actor) => RdDCarac.isActionPhysique(rollData.selectedCarac) && actor.isSurenc(),
isUsed: (rollData, actor) => rollData.use?.surenc && RdDCarac.isActionPhysique(rollData.selectedCarac),
isUsed: (rollData, actor) => rollData.use.surenc && RdDCarac.isActionPhysique(rollData.selectedCarac),
getLabel: (rollData, actor) => 'Sur-encombrement',
getValue: (rollData, actor) => actor.computeMalusSurEncombrement()
},
rituel: {
isUsed: (rollData, actor) => actor.isPersonnage() && ReglesOptionnelles.isUsing("astrologie") && rollData.selectedSort?.system.isrituel,
getLabel: (rollData, actor) => 'Astrologique',
getValue: (rollData, actor) => actor.ajustementAstrologique()
},
astrologique: {
isVisible: (rollData, actor) => actor.isPersonnage() && ReglesOptionnelles.isUsing("astrologie") && RdDCarac.isChance(rollData.selectedCarac),
isUsed: (rollData, actor) => RdDCarac.isChance(rollData.selectedCarac) && rollData.use.astrologique,
getLabel: (rollData, actor) => 'Astrologique',
getValue: (rollData, actor) => actor.ajustementAstrologique()
},
moral: {
isVisible: (rollData, actor) => actor.isPersonnage() && RdDCarac.isActionPhysique(rollData.selectedCarac) && rollData.use?.moral,
isUsed: (rollData, actor) => rollData.use?.moral,
isUsed: (rollData, actor) => rollData.use.moral,
getLabel: (rollData, actor) => 'Appel au moral',
getValue: (rollData, actor) => 1
},
coeur: {
isVisible: (rollData, actor) => actor.isPersonnage() && RdDCarac.isVolonte(rollData.selectedCarac),
isUsed: (rollData, actor) => rollData.use.coeur != undefined,
getLabel: (rollData, actor) => 'Ajustement de c&oelig;ur',
getValue: (rollData, actor) => -2 * (rollData.use.coeur?.coeur ?? 0)
},
moralTotal: {
isUsed: (rollData, actor) => RdDCarac.isVolonte(rollData.selectedCarac),
getLabel: (rollData, actor) => 'Moral',
getValue: (rollData, actor) => actor.getMoralTotal()
},
astrologique: {
isUsed: (rollData, actor) => ReglesOptionnelles.isUsing("astrologie") && RdDBonus.isAjustementAstrologique(rollData),
getLabel: (rollData, actor) => 'Astrologique',
getValue: (rollData, actor) => actor.ajustementAstrologique()
},
facteurSign: {
isUsed: (rollData, actor) => rollData.diviseurSignificative > 1,
getLabel: (rollData, actor) => Misc.getFractionHtml(rollData.diviseurSignificative),
@ -135,7 +147,7 @@ export const referenceAjustements = {
getLabel: (rollData, actor) => "Force de l'alcool: ",
getValue: (rollData, actor) => rollData.forceAlcool,
},
ethylisme:{
ethylisme: {
isVisible: (rollData, actor) => rollData.ethylisme != undefined,
isUsed: (rollData, actor) => rollData.ethylisme != undefined,
getLabel: (rollData, actor) => "Ethylisme - " + RdDUtility.getNomEthylisme(rollData.ethylisme),
@ -153,7 +165,9 @@ export class RollDataAjustements {
/* -------------------------------------------- */
static calcul(rollData, actor) {
rollData.ajustements = {};
// s'assurer de la correction des infos rollData
mergeObject(rollData, { ajustements: {}, use: {} }, { overwrite: false })
for (var key in referenceAjustements) {
const reference = referenceAjustements[key];
rollData.ajustements[key] = {
@ -185,4 +199,5 @@ export class RollDataAjustements {
RdDCarac.isChance(selectedCarac) ||
(RdDCarac.isReve(selectedCarac) && !rollData.competence);
}
}

View File

@ -74,8 +74,8 @@ export class ReglesOptionnelles extends FormApplication {
mergeObject(options, {
id: "regles-optionnelles",
template: "systems/foundryvtt-reve-de-dragon/templates/settings/regles-optionnelles.html",
height: 600,
width: 450,
height: 650,
width: 550,
minimizable: false,
closeOnSubmit: true,
title: "Règles optionnelles"

View File

@ -1,13 +1,13 @@
import { SYSTEM_RDD } from "../constants.js";
export const STATUSES = {
StatusStunned : 'stun',
StatusStunned: 'stun',
StatusBleeding: 'bleeding',
StatusProne: 'prone',
StatusGrappling: 'grappling',
StatusGrappled: 'grappled',
StatusRestrained: 'restrain',
StatusUnconscious: 'unconscious',
StatusUnconscious: 'unconscious',
StatusBlind: 'blind',
StatusComma: 'comma',
StatusDead: 'dead',
@ -18,8 +18,8 @@ const rddStatusEffects = [
{ rdd: true, id: STATUSES.StatusStunned, label: 'EFFECT.StatusStunned', icon: 'icons/svg/stoned.svg', "duration.rounds": 1 },
{ rdd: true, id: STATUSES.StatusBleeding, label: 'EFFECT.StatusBleeding', icon: 'icons/svg/blood.svg' },
{ rdd: true, id: STATUSES.StatusProne, label: 'EFFECT.StatusProne', icon: 'icons/svg/falling.svg' },
{ rdd: true, id: STATUSES.StatusGrappling, tint: '#33cc33', label: 'EFFECT.StatusGrappling', icon: 'systems/foundryvtt-reve-de-dragon/icons/competence_corps_a_corps.webp' },
{ rdd: true, id: STATUSES.StatusGrappled, tint: '#ff9900', label: 'EFFECT.StatusGrappled', icon: 'systems/foundryvtt-reve-de-dragon/icons/competence_corps_a_corps.webp' },
{ rdd: true, id: STATUSES.StatusGrappling, tint: '#33cc33', label: 'EFFECT.StatusGrappling', icon: 'systems/foundryvtt-reve-de-dragon/icons/empoignade.svg' },
{ rdd: true, id: STATUSES.StatusGrappled, tint: '#ff9900', label: 'EFFECT.StatusGrappled', icon: 'systems/foundryvtt-reve-de-dragon/icons/empoignade.svg' },
{ rdd: true, id: STATUSES.StatusRestrained, label: 'EFFECT.StatusRestrained', icon: 'icons/svg/net.svg' },
{ rdd: true, id: STATUSES.StatusUnconscious, label: 'EFFECT.StatusUnconscious', icon: 'icons/svg/unconscious.svg' },
{ rdd: true, id: STATUSES.StatusBlind, label: 'EFFECT.StatusBlind', icon: 'icons/svg/blind.svg' },
@ -29,13 +29,16 @@ const rddStatusEffects = [
];
const demiReveStatusEffect = rddStatusEffects.find(it => it.id == STATUSES.StatusDemiReve);
const statusDemiSurprise = [STATUSES.StatusStunned, STATUSES.StatusProne, STATUSES.StatusRestrained];
const statusSurpriseTotale = [STATUSES.StatusUnconscious, STATUSES.StatusBlind, STATUSES.StatusComma];
const statusDemiSurprise = new Set([STATUSES.StatusStunned, STATUSES.StatusProne, STATUSES.StatusRestrained])
const statusSurpriseTotale = new Set([STATUSES.StatusUnconscious, STATUSES.StatusBlind, STATUSES.StatusComma])
export class StatusEffects extends FormApplication {
static onReady() {
const rddStatusIds = rddStatusEffects.map(it => it.id);
rddStatusEffects.forEach(it => it.flags = { core: { statusId: it.id } });
const rddEffectIds = rddStatusEffects.map(it => it.id);
rddStatusEffects.forEach(it => {
it.statuses = new Set()
it.statuses.add(it.id)
})
const defaultStatusEffectIds = CONFIG.statusEffects.map(it => it.id);
game.settings.register(SYSTEM_RDD, "use-status-effects", {
name: "use-status-effects",
@ -54,37 +57,47 @@ export class StatusEffects extends FormApplication {
restricted: true
});
CONFIG.RDD.allEffects = rddStatusEffects.concat(CONFIG.statusEffects.filter(it => !rddStatusIds.includes(it.id)));
CONFIG.RDD.allEffects = rddStatusEffects.concat(CONFIG.statusEffects.filter(it => !rddEffectIds.includes(it.id)));
StatusEffects._setUseStatusEffects(StatusEffects._getUseStatusEffects());
console.log('statusEffects', CONFIG.statusEffects);
}
static valeurSurprise(effect, isCombat) {
// const id = StatusEffects.statusId(effect);
if (statusSurpriseTotale.includes(effect.flags?.core?.statusId)) {
if (statusSurpriseTotale.intersects(effect.statuses)) {
return 2;
}
return statusDemiSurprise.includes(effect.flags?.core?.statusId) || (isCombat && effect.flags?.core?.statusId == STATUSES.StatusDemiReve) ? 1 : 0;
if (statusDemiSurprise.intersects(effect.statuses)) {
return 1
}
if (isCombat && effect.statuses.find(e => e == STATUSES.StatusDemiReve)) {
return 1
}
return 0
}
static _getUseStatusEffects() {
return game.settings.get(SYSTEM_RDD, "use-status-effects")?.split(',') ?? [];
return game.settings.get(SYSTEM_RDD, "use-status-effects")?.split(',') ?? [];
}
static _setUseStatusEffects(statusIds) {
static _setUseStatusEffects(effectIds) {
if (game.user.isGM) {
game.settings.set(SYSTEM_RDD, "use-status-effects", statusIds.join());
game.settings.set(SYSTEM_RDD, "use-status-effects", effectIds.join());
}
for (let effect of CONFIG.RDD.allEffects) {
effect.active = effect.rdd || statusIds.includes(effect.flags?.core?.statusId);
effect.active = effect.rdd || effectIds.includes(effect.id);
}
CONFIG.statusEffects = CONFIG.RDD.allEffects.filter(it => it.active);
}
static status(statusId) {
return rddStatusEffects.find(it => it.flags?.core?.statusId == statusId);
static prepareActiveEffect(effectId) {
let status = rddStatusEffects.find(it => it.id == effectId)
if (status) {
status = duplicate(status)
status.statuses = [effectId]
}
return status;
}
static demiReve() {

View File

@ -301,11 +301,12 @@ export class CompendiumTableHelpers {
table,
isGM: game.user.isGM,
});
ChatMessage.create({
const messageData = {
user: game.user.id,
whisper: game.user.id,
content: flavorContent
}, { rollMode: "gmroll" });
};
ChatMessage.create(messageData, { rollMode: "gmroll" });
}
}

View File

@ -116,10 +116,10 @@ export class AppAstrologie extends Application {
super.activateListeners(html);
this.html = html;
this.html.find('select[name="signe-astral"]').change(event => {
this.selectNombreAstral(this.html.find('select[name="signe-astral"]').val());
this.selectNombreAstral(event.currentTarget.value);
})
this.html.find('select[name="signe-naissance"]').change(event => {
this.selectHeureNaissance(this.html.find('select[name="signe-naissance"]').val());
this.selectHeureNaissance(event.currentTarget.value);
})
this.html.find('td.nombre-astral').click(event => {
this.selectNombreAstral(Number.parseInt(event.currentTarget.attributes['data-nombre-astral'].value) - 1);

View File

@ -21,7 +21,7 @@ export class DialogRepos extends Dialog {
}
constructor(html, actor) {
let options = { classes: ["DialogCreateSigneDraconiqueActorsActors"], width: 400, height: 'fit-content', 'z-index': 99999 };
let options = { classes: ["dialog-repos"], width: 400, height: 'fit-content', 'z-index': 99999 };
let conf = {
title: "Se reposer",
content: html,

View File

@ -1,5 +1,5 @@
import { ENTITE_NONINCARNE } from "./constants.js";
import { DialogSelectTarget } from "./dialog-select-target.js";
import { DialogSelect } from "./dialog-select.js";
export class Targets {
static listTargets() {
@ -11,10 +11,7 @@ export class Targets {
}
static extractTokenData(target) {
if (!target) {
return undefined
}
return { id: target.id, name: target.document.name, img: target.document.texture.src ?? target.actor.img ?? 'icons/svg/mystery-man.svg' };
return { id: target?.id, name: target?.document.name, img: target?.document.texture.src ?? target?.actor.img ?? 'icons/svg/mystery-man.svg' };
}
static isTargetEntite(target) {
@ -30,11 +27,12 @@ export class Targets {
return;
default:
{
const tokens = targets.map(it => Targets.extractTokenData(it))
const html = await renderTemplate("systems/foundryvtt-reve-de-dragon/templates/dialog-select-target.html", {
tokens: tokens
});
new DialogSelectTarget(html, onSelectTarget, targets).render(true);
const selectData = {
title: "Choisir une cible",
label: "Choisir une seule des cibles",
list: targets.map(it => Targets.extractTokenData(it))
};
DialogSelect.select(selectData, onSelectTarget);
}
}
}

View File

@ -2,7 +2,6 @@ import { SHOW_DICE, SYSTEM_RDD } from "../constants.js";
import { Grammar } from "../grammar.js";
import { Misc } from "../misc.js";
import { RdDDice } from "../rdd-dice.js";
import { AutoAdjustDarkness } from "./auto-adjust-darkness.js";
export const WORLD_TIMESTAMP_SETTING = "calendrier";
@ -16,14 +15,14 @@ export const RDD_MINUTES_PAR_JOUR = 1440; //RDD_HEURES_PAR_JOUR * RDD_MINUTES_PA
const ROUNDS_PAR_MINUTE = 10;
const DEFINITION_HEURES = [
{ key: "vaisseau", label: "Vaisseau", lettreFont: 'v', saison: "Printemps" , darkness: 0.7},
{ key: "sirene", label: "Sirène", lettreFont: 'i', saison: "Printemps" , darkness: 0.4},
{ key: "faucon", label: "Faucon", lettreFont: 'f', saison: "Printemps" , darkness: 0},
{ key: "couronne", label: "Couronne", lettreFont: '', saison: "Eté" , darkness: 0},
{ key: "vaisseau", label: "Vaisseau", lettreFont: 'v', saison: "Printemps", darkness: 0.9 },
{ key: "sirene", label: "Sirène", lettreFont: 'i', saison: "Printemps", darkness: 0.1 },
{ key: "faucon", label: "Faucon", lettreFont: 'f', saison: "Printemps", darkness: 0 },
{ key: "couronne", label: "Couronne", lettreFont: '', saison: "Eté", darkness: 0 },
{ key: "dragon", label: "Dragon", lettreFont: 'd', saison: "Eté", darkness: 0 },
{ key: "epees", label: "Epées", lettreFont: 'e', saison: "Eté", darkness: 0},
{ key: "lyre", label: "Lyre", lettreFont: 'l', saison: "Automne", darkness: 0.4 },
{ key: "serpent", label: "Serpent", lettreFont: 's', saison: "Automne", darkness: 0.7 },
{ key: "epees", label: "Epées", lettreFont: 'e', saison: "Eté", darkness: 0 },
{ key: "lyre", label: "Lyre", lettreFont: 'l', saison: "Automne", darkness: 0.1 },
{ key: "serpent", label: "Serpent", lettreFont: 's', saison: "Automne", darkness: 0.9 },
{ key: "poissonacrobate", label: "Poisson Acrobate", lettreFont: 'p', saison: "Automne", darkness: 1 },
{ key: "araignee", label: "Araignée", lettreFont: 'a', saison: "Hiver", darkness: 1 },
{ key: "roseau", label: "Roseau", lettreFont: 'r', saison: "Hiver", darkness: 1 },
@ -98,10 +97,10 @@ export class RdDTimestamp {
*/
static definition(signe) {
if (signe == undefined) {
signe = 0;
signe = 0
}
if (Number.isInteger(signe)) {
return DEFINITION_HEURES[signe % RDD_HEURES_PAR_JOUR];
return DEFINITION_HEURES[Misc.modulo(signe, RDD_HEURES_PAR_JOUR)]
}
let definition = DEFINITION_HEURES.find(it => it.key == signe);
if (!definition) {
@ -115,14 +114,11 @@ export class RdDTimestamp {
}
static imgSigne(signe) {
return signe == undefined ? '' : `<img class="img-signe-heure" src="${signe.webp}" alt="${signe.label}" title="${signe.label}"/>`
return signe == undefined ? '' : `<img class="img-signe-heure" src="${signe.webp}" data-tooltip="${signe.label}"/>`
}
static ajustementAstrologiqueHeure(hn, nbAstral, heure) {
let ecart = (hn + nbAstral - heure) % RDD_HEURES_PAR_JOUR;
if (ecart < 0) {
ecart = (ecart + RDD_HEURES_PAR_JOUR) % RDD_HEURES_PAR_JOUR;
}
let ecart = Misc.modulo(hn + nbAstral - heure, RDD_HEURES_PAR_JOUR);
switch (ecart) {
case 0: return 4;
case 4: case 8: return 2;
@ -158,11 +154,13 @@ export class RdDTimestamp {
}
static defHeure(heure) {
return DEFINITION_HEURES.find(it => (it.heure) == heure % RDD_HEURES_PAR_JOUR);
heure = Misc.modulo(heure, RDD_HEURES_PAR_JOUR);
return DEFINITION_HEURES.find(it => it.heure == heure)
}
static findHeure(heure) {
heure = Grammar.toLowerCaseNoAccentNoSpace(heure);
let parHeureOuLabel = DEFINITION_HEURES.filter(it => (it.heure) == parseInt(heure) % RDD_HEURES_PAR_JOUR || Grammar.toLowerCaseNoAccentNoSpace(it.label) == heure);
let parHeureOuLabel = DEFINITION_HEURES.filter(it => Grammar.toLowerCaseNoAccentNoSpace(it.label) == heure || it.heure == Misc.modulo(parseInt(heure), RDD_HEURES_PAR_JOUR));
if (parHeureOuLabel.length == 1) {
return parHeureOuLabel[0];
}
@ -232,19 +230,19 @@ export class RdDTimestamp {
}
get annee() { return Math.floor(this.indexDate / RDD_JOURS_PAR_AN) }
get mois() { return Math.floor((this.indexDate % RDD_JOURS_PAR_AN) / RDD_JOURS_PAR_MOIS) }
get jour() { return (this.indexDate % RDD_JOURS_PAR_AN) % RDD_JOURS_PAR_MOIS }
get mois() { return Math.floor(Misc.modulo(this.indexDate, RDD_JOURS_PAR_AN) / RDD_JOURS_PAR_MOIS) }
get jour() { return Misc.modulo(Misc.modulo(this.indexDate, RDD_JOURS_PAR_AN), RDD_JOURS_PAR_MOIS) }
get heure() { return Math.floor(this.indexMinute / RDD_MINUTES_PAR_HEURES) }
get minute() { return this.indexMinute % RDD_MINUTES_PAR_HEURES }
get minute() { return Misc.modulo(this.indexMinute, RDD_MINUTES_PAR_HEURES) }
get round() { return ROUNDS_PAR_MINUTE * (this.indexMinute - Math.floor(this.indexMinute)) }
get angleHeure() { return this.indexMinute / RDD_MINUTES_PAR_JOUR * 360 - 45 }
get angleMinute() { return this.indexMinute / RDD_MINUTES_PAR_HEURES * 360 + 45 }
get darkness() {
const darknessDebut = RdDTimestamp.definition(this.heure).darkness *100
const darknessFin = RdDTimestamp.definition(this.heure + 1).darkness *100
const darknessDebut = 100 * RdDTimestamp.definition(this.heure).darkness
const darknessFin = 100 * RdDTimestamp.definition(this.heure + 1).darkness
const darknessMinute = Math.round((darknessFin - darknessDebut) * this.minute / RDD_MINUTES_PAR_HEURES);
return (darknessDebut + darknessMinute)/100
return (darknessDebut + darknessMinute) / 100
}
/**
@ -297,7 +295,7 @@ export class RdDTimestamp {
const heure = this.heure + heures;
return new RdDTimestamp({
indexDate: this.indexDate + Math.floor(heure / RDD_HEURES_PAR_JOUR),
indexMinute: this.indexMinute + (heure % RDD_HEURES_PAR_JOUR) * RDD_MINUTES_PAR_HEURES
indexMinute: this.indexMinute + Misc.modulo(heure, RDD_HEURES_PAR_JOUR) * RDD_MINUTES_PAR_HEURES
})
}
@ -347,7 +345,7 @@ export class RdDTimestamp {
return {
jours: jours,
heures: Math.floor(minutes / RDD_MINUTES_PAR_HEURES),
minutes: minutes % RDD_MINUTES_PAR_HEURES
minutes: Misc.modulo(minutes, RDD_MINUTES_PAR_HEURES)
}
}
}

View File

@ -1,27 +1,64 @@
/* -------------------------------------------- */
export const tmrConstants = {
col1_y: 30,
col2_y: 55,
cellw: 55,
cellh: 55,
gridx: 28,
gridy: 28,
// tailles
third: 18,
half: 27.5,
twoThird: 36,
full: 55,
// decallages
center: { x: 0, y: 0 },
top: { x: 0, y: -11.5 },
topLeft: { x: -11.5, y: -11.5 },
left: { x: -11.5, y: 0 },
bottomLeft: { x: -11.5, y: 11.5 },
bottom: { x: 0, y: 11.5 },
bottomRight: { x: 11.5, y: 11.5 },
right: { x: 11.5, y: 0 },
topRight: { x: 11.5, y: -11.5 },
export class TMRConstants {
constructor({ size = 64 }) {
// tailles
this.size = size
this.half = this.size / 2
this.quarter = this.size / 4
this.third = this.size / 3
this.twoThird = this.size * 2 / 3
this.full = this.size
// positions
this.col1_y = this.half
this.col2_y = this.size
this.cellw = this.size
this.cellh = this.size
this.gridx = this.half
this.gridy = this.half
// decallages
this.center = { x: 0, y: 0 }
this.top = { x: 0, y: -this.quarter }
this.topLeft = { x: -this.quarter, y: -this.quarter }
this.left = { x: -this.quarter, y: 0 }
this.bottomLeft = { x: -this.quarter, y: this.quarter }
this.bottom = { x: 0, y: this.quarter }
this.bottomRight = { x: this.quarter, y: this.quarter }
this.right = { x: this.quarter, y: 0 }
this.topRight = { x: this.quarter, y: -this.quarter }
this.marginx = 1
this.marginy = 1
}
decallage(x, y) {
return {
x: x * this.third,
y: y * this.third
}
}
computeEventPosition(event) {
if (!event.nativeEvent.target.getBoundingClientRect) {
return { x: 0, y: 0 }
}
const canvasRect = event.nativeEvent.target.getBoundingClientRect();
return {
x: event.nativeEvent.clientX - canvasRect.left,
y: event.nativeEvent.clientY - canvasRect.top
}
}
computeEventOddq(event) {
var { x, y } = this.computeEventPosition(event);
return this.computeOddq(x, y);
}
computeOddq(x, y) {
const col = Math.floor(x / this.cellw)
const decallageColonne = col % 2 == 0 ? this.col1_y : this.col2_y
const row = Math.floor((y - decallageColonne) / this.cellh)
return { col, row, x, y }
}
}
// couleurs
@ -35,13 +72,15 @@ export const tmrColors = {
rencontre: 0xFF0000,
casehumide: 0x1050F0,
}
export const tmrTokenZIndex = {
sort: 40,
tetes: 20,
casehumide: 10,
conquete: 30,
tetes: 20,
sort: 30,
conquete: 40,
rencontre: 50,
trounoir: 60,
demireve: 70,
tooltip: 100,
}

View File

@ -39,6 +39,8 @@ export class TMRRencontres {
const frequence = it => it.system.frequence[codeTerrain];
const row = await this.table.getRandom(frequence, filtreMauvaise, forcedRoll);
if (row) {
console.log("DORM", row);
//row.document.system.computedForce = new Roll(row.document.system.formula).roll({async: false}).total;
await CompendiumTableHelpers.tableRowToChatMessage(row);
}

View File

@ -1,7 +1,6 @@
import { Misc } from "./misc.js";
import { Grammar } from "./grammar.js";
import { RdDDice } from "./rdd-dice.js";
import { tmrConstants } from "./tmr-constants.js";
/* -------------------------------------------- */
const TMRMapping = {
@ -228,16 +227,28 @@ export const TMRType = {
}
/* -------------------------------------------- */
const tmrRandomMovePatten =
[{ name: 'top', col: 0, row: -1 },
{ name: 'topright', col: 1, row: -1 },
{ name: 'botright', col: 1, row: 1 },
{ name: 'bot', col: 0, row: 1 },
{ name: 'botleft', col: -1, row: 1 },
{ name: 'topleft', col: -1, row: -1 }
]
const TMR_MOVE = {
"top": { even: { row: -1, col: 0 }, odd: { row: -1, col: 0 }, },
"topleft": { even: { row: -1, col: -1 }, odd: { row: 0, col: -1 }, },
"topright": { even: { row: -1, col: 1 }, odd: { row: 0, col: 1 }, },
"bottomleft": { even: { row: 0, col: -1 }, odd: { row: 1, col: -1 }, },
"bottomright": { even: { row: 0, col: 1 }, odd: { row: 1, col: 1 }, },
"bottom": { even: { row: 1, col: 0 }, odd: { row: 1, col: 0 }, },
}
/* -------------------------------------------- */
/* --------------------------------------------
* Pour comprendre les conversions entre coordonnées
* - "TMR" A1, ... M15
* - oddq: {col, row}
* - axial: { q, r )
*
* Un site intéressant: https://www.redblobgames.com/grids/hexagons/#distances
*
* Pour être concis, le code TMR lettre(colonne)-ligne correspond à une grille hexagonale en coordonnées "odd-q"
* (lettre => col, ligne => row).
*
* Pour les calculs de distance, les coordonnées axiales sont beaucoup plus pratiques.
*/
export class TMRUtility {
static init() {
for (let coord in TMRMapping) {
@ -313,17 +324,33 @@ export class TMRUtility {
}
/* -------------------------------------------- */
static async getDirectionPattern() {
return await RdDDice.rollOneOf(tmrRandomMovePatten);
static deplacement(coordOrig, moveName) {
const tmrMove = TMR_MOVE[moveName];
if (! tmrMove) {
ui.notifications.error(`Le déplacement dans les TMR '${moveName}' est inconnu`)
return coordOrig
}
const fromOddq = TMRUtility.coordTMRToOddq(coordOrig);
const move = TMRUtility.getOddqMove(tmrMove, fromOddq);
const toOddq = TMRUtility.addOddq(fromOddq, move);
return TMRUtility.oddqToCoordTMR(toOddq);
}
static getOddqMove(tmrMove, oddq) {
return oddq.col % 2 == 1 ? tmrMove.odd : tmrMove.even;
}
static async getDirectionPattern(oddq) {
const tmrMove = await RdDDice.rollOneOf(Object.values(TMR_MOVE));
return TMRUtility.getOddqMove(tmrMove, oddq);
}
/* -------------------------------------------- */
static async deplaceTMRAleatoire(actor, coord) {
const currentOddq = TMRUtility.coordTMRToOddq(coord);
const direction = await TMRUtility.getDirectionPattern();
currentOddq.col = currentOddq.col + direction.col;
currentOddq.row = currentOddq.row + direction.row;
if (this.isOddqInTMR(currentOddq)) { // Sortie de carte ! Ré-insertion aléatoire
const oddq = TMRUtility.coordTMRToOddq(coord);
const direction = await TMRUtility.getDirectionPattern(oddq);
const currentOddq = TMRUtility.addOddq(oddq, direction)
if (TMRUtility.isOddqInTMR(currentOddq)) { // Sortie de carte ! Ré-insertion aléatoire
return TMRUtility.getTMR(TMRUtility.oddqToCoordTMR(currentOddq));
} else {
return await actor.reinsertionAleatoire('Sortie de carte');
@ -360,15 +387,15 @@ export class TMRUtility {
*
*/
static getTMRPortee(coord, portee) {
let centerOddq = this.coordTMRToOddq(coord);
let centerOddq = TMRUtility.coordTMRToOddq(coord);
let caseList = [];
for (let dcol = -portee; dcol <= portee; dcol++) { // rows
for (let drow = -portee; drow <= portee; drow++) { // columns
const currentOddq = { col: centerOddq.col + dcol, row: centerOddq.row + drow };
if (this.isOddqInTMR(currentOddq)) {
let dist = this.distanceOddq(centerOddq, currentOddq);
if (TMRUtility.isOddqInTMR(currentOddq)) {
let dist = TMRUtility.distanceOddq(centerOddq, currentOddq);
if (dist <= portee) {
caseList.push(this.oddqToCoordTMR(currentOddq)); // Inside the area
caseList.push(TMRUtility.oddqToCoordTMR(currentOddq)); // Inside the area
}
}
}
@ -376,40 +403,6 @@ export class TMRUtility {
return caseList;
}
// /* -------------------------------------------- */
static computeEventPosition(event) {
if (!event.nativeEvent.target.getBoundingClientRect) {
return { x: 0, y: 0 }
}
const canvasRect = event.nativeEvent.target.getBoundingClientRect();
return {
x: event.nativeEvent.clientX - canvasRect.left,
y: event.nativeEvent.clientY - canvasRect.top
};
}
/* -------------------------------------------- */
static computeEventOddq(event) {
var { x, y } = TMRUtility.computeEventPosition(event);
return TMRUtility.computeOddq(x, y);
}
static computeOddq(x, y) {
const col = Math.floor(x / tmrConstants.cellw); // [From 0 -> 12]
const decallageColonne = col % 2 == 0 ? tmrConstants.col1_y : tmrConstants.col2_y;
const row = Math.floor((y - decallageColonne) / tmrConstants.cellh); // [From 0 -> 14]
return { col, row };
}
static computeEventCoord(event) {
const oddq = TMRUtility.computeEventOddq(event);
return TMRUtility.oddqToCoordTMR(oddq);
}
/* -------------------------------------------- */
// https://www.redblobgames.com/grids/hexagons/#distances
// TMR Letter-row correspond to "odd-q" grid (letter => col, numeric => row )
/* -------------------------------------------- */
static coordTMRToOddq(coordTMR) {
let col = coordTMR.charCodeAt(0) - 65;
@ -432,17 +425,13 @@ export class TMRUtility {
row >= 0 &&
(row + col % 2 <= 14)
);
// if (x >= 0 && x < 13 && y >= 0 && y < 14) return true;
// if (x >= 0 && x < 13 && x % 2 == 0 && y == 14) return true;
// return false;
}
/* -------------------------------------------- */
static distanceCoordTMR(coord1, coord2) {
let oddq1 = this.coordTMRToOddq(coord1);
let oddq2 = this.coordTMRToOddq(coord2);
return this.distanceOddq(oddq1, oddq2);
let oddq1 = TMRUtility.coordTMRToOddq(coord1);
let oddq2 = TMRUtility.coordTMRToOddq(coord2);
return TMRUtility.distanceOddq(oddq1, oddq2);
}
/* -------------------------------------------- */
@ -450,13 +439,13 @@ export class TMRUtility {
const axial1 = TMRUtility.oddqToAxial(oddq1);
const axial2 = TMRUtility.oddqToAxial(oddq2);
return TMRUtility.distanceAxial(axial1, axial2);
}
// const dx = oddq2.col - oddq1.col;
// const dy = oddq2.row - oddq1.row;
// const abs_dx = Math.abs(dx);
// const abs_dy = Math.abs(dy);
// const distance = Math.sign(dx) == Math.sign(dy) ? Math.max(abs_dx, abs_dy) : (abs_dx + abs_dy);
// return distance;
static addOddq(move, oddq) {
return {
row: oddq.row + move.row,
col: oddq.col + move.col
}
}
static oddqToAxial(pos) {
@ -480,20 +469,4 @@ export class TMRUtility {
};
}
// function axial_to_cube(hex):
// var q = hex.q
// var r = hex.r
// var s = -q - r
// return Cube(q, r, s)
// }
// /* -------------------------------------------- */
// static computeRealPictureCoordinates(coordOddq) {
// let decallagePairImpair = (coordOddq.col % 2 == 0) ? tmrConstants.col1_y : tmrConstants.col2_y;
// return {
// x: tmrConstants.gridx + (coordOddq.col * tmrConstants.cellw),
// y: tmrConstants.gridy + (coordOddq.row * tmrConstants.cellh) + decallagePairImpair
// }
// }
}

107
module/tmr/animation.js Normal file
View File

@ -0,0 +1,107 @@
// pixiTMR.animate(pixiApp => pixiApp.ticker.add((delta) => {
// if (!sprite.waveAnimation) {
// sprite.waveAnimation = {
// originx: sprite.x,
// movex: 0,
// step: 0.03
// }
// }
// else {
// if (Math.abs(sprite.waveAnimation.movex) > 2) {
// sprite.waveAnimation.step = -sprite.waveAnimation.step
// }
// sprite.waveAnimation.movex += sprite.waveAnimation.step;
// }
// sprite.x = sprite.waveAnimation.originx + sprite.waveAnimation.movex
// }));
// return pixiTMR.square(this.code(),
// {
// zIndex: tmrTokenZIndex.trounoir,
// tint: tmrColors.trounoir,
// alpha: 1,
// taille: () => pixiTMR.sizes.full,
// decallage: {
// x: -pixiTMR.sizes.half,
// y: -pixiTMR.sizes.half
// }
// })
export class TMRAnimations {
static withAnimation(sprite, pixiTMR, ...animations) {
if (animations.length > 0) {
animations.forEach(animation =>
pixiTMR.animate(pixiApp => pixiApp.ticker.add(delta => animation(sprite, delta)))
)
}
return sprite
}
static rotation(options = { frequence: () => 1, angle: () => 1 }) {
return (sprite, delta) => {
if (!sprite.tmrConfig) {
sprite.tmrConfig = { nextTick: 0 }
}
sprite.tmrConfig.nextTick -= delta
if (sprite.tmrConfig.nextTick <= 0) {
sprite.tmrConfig.nextTick = options.frequence(delta)
sprite.angle += options.angle(delta)
}
}
}
static changeZoom(range = { min: 0.8, max: 1.2, step: 0.005 }) {
return (sprite, delta) => {
if (!sprite.tmrConfig) {
sprite.tmrConfig = TMRAnimations.startRange(range)
}
sprite.tmrConfig.current += (sprite.tmrConfig.step * delta)
if (sprite.tmrConfig.current < sprite.tmrConfig.min) {
sprite.tmrConfig.step = Math.abs(sprite.tmrConfig.step)
}
else if (sprite.tmrConfig.current > sprite.tmrConfig.max) {
sprite.tmrConfig.step = -Math.abs(sprite.tmrConfig.step)
}
const taille = sprite.tmrConfig.current * sprite.taille()
sprite.width = taille
sprite.height = taille
}
}
static verticalAxis(options = { step: 1 }) {
return (sprite, delta) => {
if (!sprite.tmrConfig) {
sprite.tmrConfig = this.startRange({
min: -Math.PI / 2,
max: Math.PI / 2,
step: options.step * Math.PI / 180,
})
}
sprite.tmrConfig.current += (sprite.tmrConfig.step * delta)
sprite.width = Math.cos(sprite.tmrConfig.current) * sprite.taille()
}
}
static startRange(range) {
range.current = TMRAnimations.randomInSegment(range)
const min = range.min
if (min > range.max) {
range.min = range.max
range.max = min
}
return range
}
static outOfRange(range) {
return range.current < range.min || range.current > range.max
}
static randomInSegment(range) {
const min = range.min
const max = range.max
const step = range.step
return min + (Math.floor(Math.random() / step) * step) * (max - min)
}
}

View File

@ -4,10 +4,6 @@ import { Misc } from "../misc.js";
export class AugmentationSeuil extends Draconique {
constructor() {
super();
}
type() { return 'tete' }
match(item) { return Draconique.isTeteDragon(item) && Grammar.toLowerCaseNoAccent(item.name).includes('augmentation du seuil de reve'); }
manualMessage() { return false }

View File

@ -4,10 +4,6 @@ import { PixiTMR } from "./pixi-tmr.js";
export class CarteTmr extends Draconique {
constructor() {
super();
}
type() { return '' }
match(item) { return false; }
manualMessage() { return false }
@ -20,10 +16,10 @@ export class CarteTmr extends Draconique {
const img = PixiTMR.getImgFromCode(this.code())
const sprite = new PIXI.Sprite(PIXI.utils.TextureCache[img]);
// Setup the position of the TMR
sprite.x = 0;
sprite.y = 0;
sprite.width = 722;
sprite.height = 860;
sprite.x = pixiTMR.pixiApp.screen.x;
sprite.y = pixiTMR.pixiApp.screen.y;
sprite.width = pixiTMR.pixiApp.screen.width;
sprite.height = pixiTMR.pixiApp.screen.height;
// Rotate around the center
sprite.anchor.set(0);
sprite.buttonMode = true;
@ -31,9 +27,5 @@ export class CarteTmr extends Draconique {
return sprite;
}
computeTooltip(coordTMR) {
const tmr = TMRUtility.getTMR(coordTMR)
return tmr? TMRUtility.getTMRLabel(coordTMR) : '';
}
}

View File

@ -1,40 +1,38 @@
import { Grammar } from "../grammar.js";
import { RdDDice } from "../rdd-dice.js";
import { TMRUtility } from "../tmr-utility.js";
import { tmrConstants, tmrColors, tmrTokenZIndex } from "../tmr-constants.js";
import { tmrTokenZIndex } from "../tmr-constants.js";
import { Draconique } from "./draconique.js";
import { TMRAnimations } from "./animation.js";
export class Conquete extends Draconique {
constructor() {
super();
}
type() { return 'queue' }
match(item) { return Draconique.isQueueDragon(item) && Grammar.toLowerCaseNoAccent(item.name).includes('conquete'); }
manualMessage() { return false }
async onActorCreateOwned(actor, item) { await this._creerConquete(actor, item); }
code() { return 'conquete' }
tooltip(linkData) { return `${this.tmrLabel(linkData)}: doit être conquis` }
img() { return 'icons/svg/combat.svg' }
tooltip(linkData) { return `Doit être conquis` }
img() { return 'systems/foundryvtt-reve-de-dragon/icons/tmr/conquete.svg' }
createSprite(pixiTMR) {
return pixiTMR.sprite(this.code(),
{
return TMRAnimations.withAnimation(
pixiTMR.sprite(this.code(), {
zIndex: tmrTokenZIndex.conquete,
color: tmrColors.queues,
taille: tmrConstants.full,
decallage: { x: 2, y: 0 }
});
decallage: pixiTMR.sizes.decallage(0, 0),
taille: () => pixiTMR.sizes.half,
}),
pixiTMR,
TMRAnimations.changeZoom()
)
}
async _creerConquete(actor, queue) {
let existants = actor.items.filter(it => this.isCase(it)).map(it => it.system.coord);
let possibles = TMRUtility.filterTMR(tmr => !TMRUtility.isCaseHumide(tmr) && !existants.includes(tmr.coord));
let conquete = await RdDDice.rollOneOf(possibles);
await this.createCaseTmr(actor, 'Conquête: ' + conquete.label, conquete, queue.id);
await this.createCaseTmr(actor, 'Conquête', conquete, queue.id);
}
async onActorDeleteCaseTmr(actor, casetmr) {

View File

@ -1,34 +1,30 @@
import { Grammar } from "../grammar.js";
import { TMRUtility } from "../tmr-utility.js";
import { tmrConstants, tmrTokenZIndex } from "../tmr-constants.js";
import { tmrTokenZIndex } from "../tmr-constants.js";
import { Draconique } from "./draconique.js";
export class Debordement extends Draconique {
constructor() {
super();
}
type() { return 'souffle' }
match(item) { return Draconique.isSouffleDragon(item) && Grammar.toLowerCaseNoAccent(item.name).includes('debordement'); }
manualMessage() { return false }
async onActorCreateOwned(actor, souffle) {
const existants = actor.items.filter(it => this.isCase(it)).map(it => it.system.coord);
const tmr = await TMRUtility.getTMRAleatoire(it => !(TMRUtility.isCaseHumide(it) || existants.includes(it.coord)));
await this.createCaseTmr(actor, 'Debordement: ' + tmr.label, tmr, souffle.id);
await this.createCaseTmr(actor, 'Debordement', tmr, souffle.id);
}
code() { return 'debordement' }
tooltip(linkData) { return `Débordement en ${this.tmrLabel(linkData)}` }
img() { return 'systems/foundryvtt-reve-de-dragon/icons/tmr/wave.webp' }
tooltip(linkData) { return `Débordement` }
img() { return 'systems/foundryvtt-reve-de-dragon/icons/tmr/debordement.svg' }
createSprite(pixiTMR) {
return pixiTMR.sprite(this.code(), {
const sprite = pixiTMR.sprite(this.code(), {
zIndex: tmrTokenZIndex.casehumide,
alpha: 0.6,
taille: tmrConstants.full,
decallage: tmrConstants.center
});
decallage: pixiTMR.sizes.decallage(0, 2/3),
taille: () => pixiTMR.sizes.half,
})
return sprite;
}
}

View File

@ -1,12 +1,8 @@
import { tmrConstants, tmrColors, tmrTokenZIndex } from "../tmr-constants.js";
import { tmrColors, tmrTokenZIndex } from "../tmr-constants.js";
import { Draconique } from "./draconique.js";
export class DemiReve extends Draconique {
constructor() {
super();
}
type() { return '' }
match(item) { return false; }
manualMessage() { return false }
@ -18,9 +14,9 @@ export class DemiReve extends Draconique {
createSprite(pixiTMR) {
const sprite = pixiTMR.sprite(this.code(), {
color: tmrColors.demireve,
tint: tmrColors.demireve,
zIndex: tmrTokenZIndex.demireve,
taille: (tmrConstants.full * 0.7)
taille: () => pixiTMR.sizes.twoThird
});
pixiTMR.animate(pixiApp => pixiApp.ticker.add((delta) => sprite.rotation -= 0.01 * delta));
return sprite;

View File

@ -1,14 +1,12 @@
import { Grammar } from "../grammar.js";
import { Misc } from "../misc.js";
import { RdDDice } from "../rdd-dice.js";
import { TMRUtility, TMRType} from "../tmr-utility.js";
import { tmrConstants, tmrColors, tmrTokenZIndex } from "../tmr-constants.js";
import { TMRUtility, TMRType } from "../tmr-utility.js";
import { tmrTokenZIndex } from "../tmr-constants.js";
import { Draconique } from "./draconique.js";
import { TMRAnimations } from "./animation.js";
export class Desorientation extends Draconique {
constructor() {
super();
}
type() { return 'souffle' }
match(item) { return Draconique.isSouffleDragon(item) && Grammar.toLowerCaseNoAccent(item.name).includes('desorientation'); }
@ -28,24 +26,27 @@ export class Desorientation extends Draconique {
code() { return 'desorientation' }
tooltip(linkData) { return `Désorientation, cette case n'existe plus !` }
img() { return 'icons/svg/explosion.svg' }
img() { return 'systems/foundryvtt-reve-de-dragon/icons/tmr/desorientation.svg' }
createSprite(pixiTMR) {
return pixiTMR.sprite(this.code(),
{
return TMRAnimations.withAnimation(
pixiTMR.sprite(this.code(), {
zIndex: tmrTokenZIndex.trounoir,
color: tmrColors.trounoir,
alpha: 1,
taille: tmrConstants.full,
decallage: { x: 2, y: 2 },
});
taille: () => pixiTMR.sizes.full,
}),
pixiTMR,
TMRAnimations.rotation({
frequence: delta => 2^(2 + Math.random() * 12) * 70,
angle: delta => (Math.floor(Math.random() * 2) - 1) * 30
})
)
}
async _creerCasesTmr(actor, type, souffle) {
const existants = actor.items.filter(it => this.isCase(it)).map(it => it.system.coord);
let tmrs = TMRUtility.filterTMR(it => it.type == type && !existants.includes(it.coord));
for (let tmr of tmrs) {
await this.createCaseTmr(actor, 'Désorientation: ' + tmr.label, tmr, souffle.id);
await this.createCaseTmr(actor, 'Désorientation', tmr, souffle.id);
}
}

View File

@ -9,16 +9,17 @@ const registeredEffects = [
* Définition des informations d'une "draconique" (queue, ombre, tête, souffle) qui influence les TMR
*/
export class Draconique {
static init() {
}
static isCaseTMR(item) { return item.type == TYPES.casetmr; }
static isQueueDragon(item) { return item.isQueueDragon(); }
static isSouffleDragon(item) { return item.type == TYPES.souffle; }
static isTeteDragon(item) { return item.type == TYPES.tete; }
static isQueueSouffle(item) { return Draconique.isQueueDragon(item) || Draconique.isSouffleDragon(item); }
tmrLabel(linkData) { return TMRUtility.getTMRLabel(linkData.system.coord); }
static register(draconique) {
registeredEffects[draconique.code()] = draconique;
static register(draconique, code = undefined) {
registeredEffects[code ?? draconique.code()] = draconique;
if (draconique.img()) {
PixiTMR.register(draconique.code(), draconique.img())
}
@ -33,6 +34,8 @@ export class Draconique {
return registeredEffects[code];
}
tmrLabel(linkData) { return TMRUtility.getTMRLabel(linkData.system.coord); }
/**
* @param item un Item quelconque
* @returns true si l'item correspond
@ -87,6 +90,15 @@ export class Draconique {
*/
token(pixiTMR, linkData, coordTMR, type = undefined) {
const tooltip = this.tooltip(linkData);
return this._createToken(pixiTMR, linkData, coordTMR, type, tooltip);
}
tokens(pixiTMR, linkData, coordTMR, type = undefined) {
const tooltip = this.tooltip(linkData);
return [this._createToken(pixiTMR, linkData, coordTMR, type, tooltip)];
}
_createToken(pixiTMR, linkData, coordTMR, type, tooltip) {
const token = {
sprite: this.createSprite(pixiTMR),
coordTMR: coordTMR,
@ -96,32 +108,13 @@ export class Draconique {
return token;
}
/**
* methode en charge de recalculer le tooltip lorsque la souris bouge
* @param {*} event evenement contenant les coordonnées
* @param {*} sprite sprite pour laquelle calculer le tooltip
*/
computeTooltip(event, sprite) {
if (sprite.isOver) {
const oddq = TMRUtility.computeEventOddq(event);
const coord = TMRUtility.oddqToCoordTMR(oddq);
const tmr = TMRUtility.getTMR(coord)
if (tmr){
const label = TMRUtility.getTMRLabel(coord);
const text = this.tooltip(this.linkData);
return text ? `${coord}: ${label}\n${text}` : `${coord}: ${label}`
}
}
return '';
}
/**
* factory d'élément graphique PIXI correpsondant à l'objet draconique
* @param {*} pixiTMR instance de PixiTMR qui gère les tooltips, les méthodes de création de sprite standard, les clicks.
*/
createSprite(pixiTMR) {
if (this.img()) {
return pixiTMR.sprite(this.code());
return pixiTMR.sprite(this.code())
}
else {
return pixiTMR.circle()
@ -143,7 +136,9 @@ export class Draconique {
async createCaseTmr(actor, label, tmr, sourceId = undefined) {
const casetmrData = {
name: label, type: 'casetmr', img: this.img(),
name: label,
type: 'casetmr',
img: this.img(),
system: { coord: tmr.coord, specific: this.code(), sourceid: sourceId }
};
await actor.createEmbeddedDocuments('Item', [casetmrData]);

View File

@ -6,7 +6,7 @@ import { ReserveExtensible } from "./reserve-extensible.js";
import { DemiReve } from "./demi-reve.js";
import { TrouNoir } from "./trou-noir.js";
import { Rencontre } from "./rencontre.js";
import { SortReserve } from "./sort-reserve.js";
import { SortReserve, SortReserveHumide } from "./sort-reserve.js";
import { CarteTmr } from "./carte-tmr.js";
import { PontImpraticable } from "./pont-impraticable.js";
import { Draconique } from "./draconique.js";
@ -20,12 +20,13 @@ import { Grammar } from "../grammar.js";
import { AugmentationSeuil } from "./augmentation-seuil.js";
import { TYPES } from "../item.js";
export class EffetsDraconiques {
static carteTmr = new CarteTmr();
static demiReve = new DemiReve();
static rencontre = new Rencontre();
static sortReserve = new SortReserve();
static sortReserveHumide = new SortReserveHumide();
static debordement = new Debordement();
static presentCites = new PresentCites();
static fermetureCites = new FermetureCites();
@ -39,13 +40,17 @@ export class EffetsDraconiques {
static pelerinage = new Pelerinage();
static periple = new Periple();
static urgenceDraconique = new UrgenceDraconique();
static augmentationSeuil = new AugmentationSeuil();
static init() {
Draconique.init();
Draconique.register(EffetsDraconiques.carteTmr);
// icône TMR
Draconique.register(EffetsDraconiques.demiReve);
Draconique.register(EffetsDraconiques.rencontre);
Draconique.register(EffetsDraconiques.sortReserve);
Draconique.register(EffetsDraconiques.sortReserveHumide);
Draconique.register(EffetsDraconiques.debordement);
Draconique.register(EffetsDraconiques.fermetureCites);
Draconique.register(EffetsDraconiques.queteEaux);
@ -59,6 +64,7 @@ export class EffetsDraconiques {
Draconique.register(EffetsDraconiques.pelerinage);
Draconique.register(EffetsDraconiques.periple);
Draconique.register(EffetsDraconiques.urgenceDraconique);
// effets sans icône TMR
Draconique.register(EffetsDraconiques.augmentationSeuil)
}
@ -184,5 +190,4 @@ export class EffetsDraconiques {
return EffetsDraconiques.soufflesDragon(actor, 'péage').length > 0;
}
}

View File

@ -1,39 +1,32 @@
import { Grammar } from "../grammar.js";
import { TMRUtility } from "../tmr-utility.js";
import { tmrConstants, tmrColors, tmrTokenZIndex } from "../tmr-constants.js";
import { tmrTokenZIndex } from "../tmr-constants.js";
import { Draconique } from "./draconique.js";
export class FermetureCites extends Draconique {
constructor() {
super();
}
type() { return 'souffle' }
match(item) { return Draconique.isSouffleDragon(item) && Grammar.toLowerCaseNoAccent(item.name).includes('fermeture des cites'); }
manualMessage() { return false }
async onActorCreateOwned(actor, souffle) { await this._fermerLesCites(actor, souffle); }
code() { return 'fermeture' }
tooltip(linkData) { return `La ${this.tmrLabel(linkData)} est fermée` }
img() { return 'icons/svg/door-closed.svg' }
tooltip(linkData) { return `Cité fermée` }
img() { return 'systems/foundryvtt-reve-de-dragon/icons/tmr/fermeture.svg' }
createSprite(pixiTMR) {
return pixiTMR.sprite(this.code(),
{
zIndex: tmrTokenZIndex.conquete,
color: tmrColors.souffle,
alpha: 0.9,
taille: tmrConstants.full,
decallage: { x: 2, y: 0 }
});
return pixiTMR.sprite(this.code(), {
zIndex: tmrTokenZIndex.conquete,
decallage: pixiTMR.sizes.decallage(0, 0),
taille: () => pixiTMR.sizes.full
})
}
async _fermerLesCites(actor, souffle) {
let existants = actor.items.filter(it => this.isCase(it)).map(it => it.system.coord);
let ouvertes = TMRUtility.filterTMR(it => it.type == 'cite' && !existants.includes(it.coord));
for (let tmr of ouvertes) {
await this.createCaseTmr(actor, 'Fermeture: ' + tmr.label, tmr, souffle.id);
await this.createCaseTmr(actor, 'Fermeture', tmr, souffle.id);
}
}
}

View File

@ -1,37 +1,36 @@
import { Grammar } from "../grammar.js";
import { TMRUtility } from "../tmr-utility.js";
import { tmrConstants, tmrTokenZIndex } from "../tmr-constants.js";
import { tmrTokenZIndex } from "../tmr-constants.js";
import { Draconique } from "./draconique.js";
import { TMRAnimations } from "./animation.js";
export class Pelerinage extends Draconique {
constructor() {
super();
}
type() { return 'queue' }
match(item) { return Draconique.isQueueDragon(item) && Grammar.toLowerCaseNoAccent(item.name).includes('pelerinage'); }
manualMessage() { return false }
async onActorCreateOwned(actor, queue) {
async onActorCreateOwned(actor, queue) {
let tmr = await TMRUtility.getTMRAleatoire();
await this.createCaseTmr(actor, 'Pèlerinage: ' + tmr.label, tmr, queue.id);
await this.createCaseTmr(actor, 'Pèlerinage', tmr, queue.id);
}
code() { return 'pelerinage' }
tooltip(linkData) { return `Votre pèlerinage en ${this.tmrLabel(linkData)}` }
img() { return 'systems/foundryvtt-reve-de-dragon/icons/tmr/pelerin.webp' }
tooltip(linkData) { return `Lieu de pèlerinage` }
img() { return 'systems/foundryvtt-reve-de-dragon/icons/tmr/pelerinage.svg' }
createSprite(pixiTMR) {
return pixiTMR.sprite(this.code(), {
zIndex: tmrTokenZIndex.conquete,
alpha: 1,
taille: tmrConstants.full,
decallage: tmrConstants.center
});
return TMRAnimations.withAnimation(
pixiTMR.sprite(this.code(), {
zIndex: tmrTokenZIndex.conquete,
decallage: pixiTMR.sizes.decallage(0, 0),
taille: () => pixiTMR.sizes.half,
}),
pixiTMR,
TMRAnimations.changeZoom()
)
}
async onActorDeleteCaseTmr(actor, casetmr) {
await actor.deleteEmbeddedDocuments('Item', [casetmr.system.sourceid]);
}

View File

@ -1,15 +1,12 @@
import { Grammar } from "../grammar.js";
import { RdDDice } from "../rdd-dice.js";
import { TMRUtility } from "../tmr-utility.js";
import { tmrConstants, tmrTokenZIndex } from "../tmr-constants.js";
import { tmrTokenZIndex } from "../tmr-constants.js";
import { Draconique } from "./draconique.js";
import { TMRAnimations } from "./animation.js";
export class Periple extends Draconique {
constructor() {
super();
}
type() { return 'souffle' }
match(item) { return Draconique.isSouffleDragon(item) && Grammar.toLowerCaseNoAccent(item.name).includes('periple'); }
manualMessage() { return false }
@ -18,22 +15,25 @@ export class Periple extends Draconique {
let terrain = (await RdDDice.rollTotal("1d2")) == 1 ? 'sanctuaire' : 'necropole';
let tmrs = TMRUtility.getListTMR(terrain);
for (let tmr of tmrs) {
await this.createCaseTmr(actor, 'Périple: ' + tmr.label, tmr, souffle.id);
await this.createCaseTmr(actor, 'Périple', tmr, souffle.id);
}
}
code() { return 'periple' }
tooltip(linkData) { return `Votre Périple passe par ${this.tmrLabel(linkData)}` }
img() { return 'systems/foundryvtt-reve-de-dragon/icons/tmr/pelerin.webp' }
tooltip(linkData) { return `Etape de périple` }
img() { return 'systems/foundryvtt-reve-de-dragon/icons/tmr/periple.svg' }
createSprite(pixiTMR) {
return pixiTMR.sprite(this.code(), {
zIndex: tmrTokenZIndex.conquete,
alpha: 1,
taille: tmrConstants.full,
decallage: tmrConstants.center
});
return TMRAnimations.withAnimation(
pixiTMR.sprite(this.code(), {
zIndex: tmrTokenZIndex.conquete,
decallage: pixiTMR.sizes.decallage(0, 0),
taille: () => pixiTMR.sizes.half
}),
pixiTMR,
TMRAnimations.changeZoom()
)
}
getDifficulte(tmr) {
switch (tmr.type) {

View File

@ -1,35 +1,64 @@
import { SYSTEM_RDD } from "../constants.js";
import { Misc } from "../misc.js";
import { RdDTMRDialog } from "../rdd-tmr-dialog.js";
import { tmrConstants, tmrTokenZIndex } from "../tmr-constants.js";
import { TMRConstants, tmrTokenZIndex } from "../tmr-constants.js";
import { TMRUtility } from "../tmr-utility.js";
import { EffetsDraconiques } from "./effets-draconiques.js";
export const tooltipStyle = new PIXI.TextStyle({
fontFamily: 'CaslonAntique',
fontSize: 18,
fill: '#FFFFFF',
stroke: '#000000',
strokeThickness: 3
});
export class PixiTMR {
static textures = []
constructor(tmrDialog) {
static getImgFromCode(code) {
return PixiTMR.textures[code]
}
static register(name, img) {
PixiTMR.textures[name] = img;
}
static async init() {
await Promise.all(
Object.values(PixiTMR.textures)
.filter(img => img != undefined)
.map(async img => PIXI.Sprite.from(await PIXI.Assets.load(img)))
)
}
constructor(tmrDialog, displaySize) {
this.tmrDialog = tmrDialog;
this.callbacksOnAnimate = [];
this.pixiApp = new PIXI.Application({ width: 720, height: 860 });
this.sizes = new TMRConstants({ size: displaySize })
console.info(`Creation d'Application PIXI pour les TMR de ${tmrDialog.actor.name}`)
this.pixiApp = new PIXI.Application(PixiTMR.computeTMRSize(this.sizes));
this.pixiApp.eventMode = 'static';
this.pixiApp.stage.sortableChildren = true;
this.tooltip = new PIXI.Text('', tooltipStyle);
this.tooltipStyle = new PIXI.TextStyle({
fontFamily: 'CaslonAntique',
fontSize: 16,
fill: '#FFFFFF',
stroke: '#000000',
strokeThickness: 4
});
this.tooltip = new PIXI.Text('', this.tooltipStyle);
this.tooltip.zIndex = 1000
this.pixiApp.stage.addChild(this.tooltip);
}
close() {
console.info(`Destruction d'Application PIXI pour les TMR de ${this.tmrDialog.actor.name}`)
this.pixiApp.destroy();
this.pixiApp = undefined
}
static computeTMRSize(sizeConstants) {
return { width: sizeConstants.cellw * 13 + sizeConstants.marginx, height: sizeConstants.cellh / 2 + sizeConstants.cellh * 15 + sizeConstants.marginy }
}
resizeTMR(displaySize) {
this.sizes = new TMRConstants({ size: displaySize })
const appSize = PixiTMR.computeTMRSize(this.sizes)
this.pixiApp.renderer.resize(appSize.width, appSize.height)
this.tooltipStyle.fontSize = Math.max(this.sizes.size / 3, 16)
}
get view() {
@ -48,24 +77,11 @@ export class PixiTMR {
.on('pointerout', event => this.onHideTooltip(event));
}
async load(onLoad = (loader, resources) => { }) {
// WIP - Deprecated since v7 : let loader = new PIXI.Loader();
for (const [name, img] of Object.entries(PixiTMR.textures)) {
const texture = await PIXI.Assets.load(img);
let image = PIXI.Sprite.from(texture);
}
onLoad();
async loadAnimations() {
for (let onAnimate of this.callbacksOnAnimate) {
onAnimate();
}
}
static getImgFromCode(code) {
return PixiTMR.textures[code]
}
static register(name, img) {
PixiTMR.textures[name] = img;
this.pixiApp.ticker.start();
}
animate(animation = pixiApp => { }) {
@ -90,33 +106,48 @@ export class PixiTMR {
sprite(code, options = {}) {
let img = PixiTMR.getImgFromCode(code)
const texture = PIXI.utils.TextureCache[img];
const texture = PIXI.utils.TextureCache[img]
if (!texture) {
console.error("Texture manquante", code, PIXI.utils.TextureCache)
return;
}
let sprite = new PIXI.Sprite(texture);
sprite.width = options.taille ?? tmrConstants.half;
sprite.height = options.taille ?? tmrConstants.half;
sprite.anchor.set(0.5);
if (options.color) {
sprite.tint = options.color;
sprite.taille = options.taille ?? (() => this.sizes.half)
sprite.width = sprite.taille()
sprite.height = sprite.taille()
sprite.anchor.set(0.5)
if (options.tint) {
sprite.tint = options.tint
}
sprite.zIndex = options.zIndex ?? tmrTokenZIndex.casehumide + 1;
sprite.alpha = options.alpha ?? 0.75;
sprite.decallage = options.decallage ?? tmrConstants.center;
this.pixiApp.stage.addChild(sprite);
return sprite;
sprite.zIndex = options.zIndex ?? tmrTokenZIndex.casehumide + 1
sprite.alpha = options.alpha ?? 1
sprite.decallage = options.decallage ?? this.sizes.center
this.pixiApp.stage.addChild(sprite)
return sprite
}
circle(code, options = {}) {
let sprite = new PIXI.Graphics()
sprite.taille = options.taille ?? (() => this.sizes.half)
sprite.decallage = options.decallage ?? this.sizes.topLeft
sprite.beginFill(options.tint, options.opacity)
sprite.drawCircle(0, 0, sprite.taille())
sprite.endFill()
this.pixiApp.stage.addChild(sprite)
return sprite
}
square(code, options = {}) {
let sprite = new PIXI.Graphics();
sprite.beginFill(options.color, options.opacity);
sprite.drawCircle(0, 0, (options.taille ?? 12) / 2);
sprite.endFill();
sprite.decallage = options.decallage ?? tmrConstants.topLeft;
this.pixiApp.stage.addChild(sprite);
return sprite;
sprite.taille = options.taille ?? (() => this.sizes.half)
sprite.decallage = options.decallage ?? this.sizes.topLeft
sprite.beginFill(options.tint, options.opacity)
const size = sprite.taille();
sprite.drawRect(0, 0, size, size)
sprite.endFill()
this.pixiApp.stage.addChild(sprite)
return sprite
}
onClickBackground(event) {
@ -131,7 +162,7 @@ export class PixiTMR {
this.tooltip.text = this.computeTooltip(event);
}
}
onShowTooltip(event) {
if (!this.carteTMR.isOver) {
this.setTooltipPosition(event);
@ -149,25 +180,27 @@ export class PixiTMR {
}
computeTooltip(event) {
const oddq = TMRUtility.computeEventOddq(event);
const oddq = this.sizes.computeEventOddq(event);
const coordTMR = TMRUtility.oddqToCoordTMR(oddq);
const tmr = TMRUtility.getTMR(coordTMR)
if (tmr) {
const labelTMR = TMRUtility.getTMRLabel(coordTMR);
const tmrTooltip = `${coordTMR}: ${TMRUtility.getTMRLabel(coordTMR)}`;
const tokenTooltips = this.tmrDialog.allTokens
.filter(token => token.coordTMR() == coordTMR)
.map(token => token.tooltip);
const tmrTooltip = `${coordTMR}: ${labelTMR}`;
return [tmrTooltip, ...tokenTooltips].reduce(Misc.joining('\n'))
}
}
setTooltipPosition(event) {
var { x, y } = TMRUtility.computeEventPosition(event);
const oddq = TMRUtility.computeOddq(x, y);
computeEventOddq(event) {
return this.sizes.computeEventOddq(event)
}
this.tooltip.x = x + (oddq.col > 8 ? -3 * tmrConstants.full : tmrConstants.half);
this.tooltip.y = y + (oddq.row > 10 ? -tmrConstants.half : tmrConstants.half);
setTooltipPosition(event) {
const oddq = this.sizes.computeEventOddq(event);
this.tooltip.x = oddq.x + (oddq.col > 7 ? -2.5 * this.sizes.full : this.sizes.quarter);
this.tooltip.y = oddq.y + (oddq.row > 10 ? -this.sizes.size : 0);
}
positionToken(token) {
@ -175,11 +208,11 @@ export class PixiTMR {
const sprite = token.sprite;
const oddq = TMRUtility.coordTMRToOddq(token.coordTMR());
const decallagePairImpair = (oddq.col % 2 == 0) ? tmrConstants.col1_y : tmrConstants.col2_y;
const dx = (sprite.decallage == undefined) ? 0 : sprite.decallage.x;
const dy = (sprite.decallage == undefined) ? 0 : sprite.decallage.y;
sprite.x = tmrConstants.gridx + (oddq.col * tmrConstants.cellw) + dx;
sprite.y = tmrConstants.gridy + (oddq.row * tmrConstants.cellh) + dy + decallagePairImpair;
const decallagePairImpair = (oddq.col % 2 == 0) ? this.sizes.col1_y : this.sizes.col2_y;
const dx = sprite.decallage?.x ?? 0
const dy = sprite.decallage?.y ?? 0
sprite.x = this.sizes.gridx + (oddq.col * this.sizes.cellw) + dx;
sprite.y = this.sizes.gridy + (oddq.row * this.sizes.cellh) + dy + decallagePairImpair;
}
}
@ -190,10 +223,9 @@ export class PixiTMR {
}
getCaseRectangle(oddq) {
let decallagePairImpair = (oddq.col % 2 == 0) ? tmrConstants.col1_y : tmrConstants.col2_y;
let x = tmrConstants.gridx + (oddq.col * tmrConstants.cellw) - (tmrConstants.cellw / 2);
let y = tmrConstants.gridy + (oddq.row * tmrConstants.cellh) - (tmrConstants.cellh / 2) + decallagePairImpair;
return { x: x, y: y, w: tmrConstants.cellw, h: tmrConstants.cellh };
const decallagePairImpair = (oddq.col % 2 == 0) ? this.sizes.col1_y : this.sizes.col2_y;
const x = this.sizes.gridx + (oddq.col * this.sizes.cellw) - (this.sizes.cellw / 2);
const y = this.sizes.gridy + (oddq.row * this.sizes.cellh) - (this.sizes.cellh / 2) + decallagePairImpair;
return { x, y, w: this.sizes.cellw, h: this.sizes.cellh };
}
}

View File

@ -1,35 +1,30 @@
import { Grammar } from "../grammar.js";
import { TMRUtility } from "../tmr-utility.js";
import { tmrConstants, tmrTokenZIndex } from "../tmr-constants.js";
import { tmrTokenZIndex } from "../tmr-constants.js";
import { Draconique } from "./draconique.js";
export class PontImpraticable extends Draconique {
constructor() {
super();
}
type() { return 'souffle' }
match(item) { return Draconique.isSouffleDragon(item) && Grammar.toLowerCaseNoAccent(item.name).includes('impraticabilite des ponts'); }
async onActorCreateOwned(actor, souffle) {
const ponts = TMRUtility.getListTMR('pont');
for (let tmr of ponts) {
await this.createCaseTmr(actor, 'Pont impraticable: ' + tmr.label, tmr, souffle.id);
await this.createCaseTmr(actor, 'Pont impraticable', tmr, souffle.id);
}
}
code() { return 'pont-impraticable' }
tooltip(linkData) { return `${this.tmrLabel(linkData)} impraticable` }
img() { return 'systems/foundryvtt-reve-de-dragon/icons/tmr/wave.webp' }
tooltip(linkData) { return `Pont impraticable` }
img() { return 'systems/foundryvtt-reve-de-dragon/icons/tmr/debordement.svg' }
createSprite(pixiTMR) {
return pixiTMR.sprite(this.code(),
{
zIndex: tmrTokenZIndex.casehumide,
alpha: 0.6,
taille: tmrConstants.full,
decallage: tmrConstants.center
decallage: pixiTMR.sizes.decallage(0, 2/3),
taille: () => pixiTMR.sizes.half,
});
}

View File

@ -1,31 +1,26 @@
import { ChatUtility } from "../chat-utility.js";
import { Grammar } from "../grammar.js";
import { TMRUtility } from "../tmr-utility.js";
import { tmrConstants, tmrTokenZIndex } from "../tmr-constants.js";
import { tmrTokenZIndex } from "../tmr-constants.js";
import { Draconique } from "./draconique.js";
export class PresentCites extends Draconique {
constructor() {
super();
}
type() { return 'tete' }
match(item) { return Draconique.isTeteDragon(item) && Grammar.toLowerCaseNoAccent(item.name).includes('present des cites'); }
manualMessage() { return false }
async onActorCreateOwned(actor, tete) { await this._ajouterPresents(actor, tete); }
code() { return 'present-cites' }
tooltip(linkData) { return `La ${this.tmrLabel(linkData)} a un présent` }
img() { return 'systems/foundryvtt-reve-de-dragon/icons/tmr/gift.webp' }
tooltip(linkData) { return `La cité a un présent` }
img() { return 'systems/foundryvtt-reve-de-dragon/icons/tmr/present.svg' }
createSprite(pixiTMR) {
return pixiTMR.sprite(this.code(),
{
zIndex: tmrTokenZIndex.tetes,
alpha: 0.9,
taille: tmrConstants.third,
decallage: tmrConstants.topRight
decallage: pixiTMR.sizes.decallage(-1, -1),
taille: () => pixiTMR.sizes.third
});
}
@ -40,7 +35,7 @@ export class PresentCites extends Draconique {
else {
let cites = TMRUtility.filterTMR(it => it.type == 'cite');
for (let tmr of cites) {
await this.createCaseTmr(actor, 'Présent: ' + tmr.label, tmr, tete.id);
await this.createCaseTmr(actor, 'Présent', tmr, tete.id);
}
}
}
@ -54,7 +49,7 @@ export class PresentCites extends Draconique {
content: `La ${this.tmrLabel(casetmr)} vous offre un présent, faites votre choix`,
buttons: buttons
});
dialog.render(true);
await dialog.render(true);
return dialog
}

View File

@ -1,28 +1,26 @@
import { Grammar } from "../grammar.js";
import { tmrConstants, tmrColors, tmrTokenZIndex } from "../tmr-constants.js";
import { tmrTokenZIndex } from "../tmr-constants.js";
import { TMRUtility } from "../tmr-utility.js";
import { Draconique } from "./draconique.js";
export class QueteEaux extends Draconique {
constructor() {
super();
}
type() { return 'tete' }
match(item) { return Draconique.isTeteDragon(item) && Grammar.toLowerCaseNoAccent(item.name).includes("quete des eaux"); }
manualMessage() { return "Vous devrez re-configurer votre Quête des Eaux une fois un lac ou marais vaincu" }
manualMessage() { return "Vous devrez re-configurer votre Nouvelle Quête des Eaux une fois un lac ou marais vaincu" }
async onActorCreateOwned(actor, tete) {
await this.createCaseTmr(actor, "Quête des eaux à déterminer", { coord: 'A0' }, tete.id);
await this.createCaseTmr(actor, "Nouvelle Quête des Eaux", { coord: 'A0' }, tete.id);
}
code() { return 'maitrisee' }
tooltip(linkData) { return `Quête des eaux, le ${this.tmrLabel(linkData)} est maîtrisé` }
img() { return 'icons/svg/bridge.svg' }
tooltip(linkData) { return `Quête des eaux, ${TMRUtility.getTMRType(linkData.system.coord)} maîtrisé` }
img() { return 'systems/foundryvtt-reve-de-dragon/icons/tmr/maitrisee.svg' }
createSprite(pixiTMR) {
return pixiTMR.sprite(this.code(), {
zIndex: tmrTokenZIndex.casehumide + 1,
color: tmrColors.tetes,
decallage: tmrConstants.topRight
decallage: pixiTMR.sizes.decallage(0, -2 / 3),
taille: () => pixiTMR.sizes.half
});
}
}

View File

@ -1,12 +1,8 @@
import { tmrConstants, tmrColors, tmrTokenZIndex } from "../tmr-constants.js";
import { tmrTokenZIndex } from "../tmr-constants.js";
import { Draconique } from "./draconique.js";
export class Rencontre extends Draconique {
constructor() {
super();
}
type() { return '' }
match(item) { return false; }
manualMessage() { return false }
@ -14,14 +10,13 @@ export class Rencontre extends Draconique {
code() { return 'rencontre' }
tooltip(rencontre) { return `${rencontre.name} de force ${rencontre.system.force}` }
img() { return 'systems/foundryvtt-reve-de-dragon/icons/heures/hd06.webp' }
img() { return 'systems/foundryvtt-reve-de-dragon/icons/tmr/rencontre.svg' }
createSprite(pixiTMR) {
return pixiTMR.sprite(this.code(), {
zIndex: tmrTokenZIndex.rencontre,
color: tmrColors.rencontre,
taille: tmrConstants.full,
decallage: { x: 2, y: 2 }
});
decallage: pixiTMR.sizes.decallage(0, 0),
taille: () => pixiTMR.sizes.twoThird,
})
}
}

View File

@ -1,16 +1,13 @@
import { Grammar } from "../grammar.js";
import { TMRUtility } from "../tmr-utility.js";
import { tmrConstants, tmrTokenZIndex } from "../tmr-constants.js";
import { tmrTokenZIndex } from "../tmr-constants.js";
import { Draconique } from "./draconique.js";
export class ReserveExtensible extends Draconique {
constructor() {
super();
}
type() { return 'tete' }
match(item) { return Draconique.isTeteDragon(item) && Grammar.toLowerCaseNoAccent(item.name).includes("reserve extensible"); }
manualMessage() { return "Vous pouvez re-configurer votre Réserve extensible" }
manualMessage() { return "Vous pouvez re-configurer votre Nouvelle Réserve extensible" }
async onActorCreateOwned(actor, tete) {
const existants = actor.items.filter(it => this.isCase(it)).map(it => it.system.coord);
const selectedTMR = await TMRUtility.getTMRAleatoire(tmr => !(tmr.type == 'fleuve' || existants.includes(tmr.coord)));
@ -18,14 +15,15 @@ export class ReserveExtensible extends Draconique {
}
code() { return 'reserve_extensible' }
tooltip(linkData) { return `Réserve extensible en ${this.tmrLabel(linkData)} !` }
img() { return 'systems/foundryvtt-reve-de-dragon/icons/tmr/treasure-chest.webp' }
tooltip(linkData) { return `Réserve extensible` }
img() { return 'systems/foundryvtt-reve-de-dragon/icons/tmr/reserve.svg' }
createSprite(pixiTMR) {
return pixiTMR.sprite(this.code(), {
zIndex: tmrTokenZIndex.tetes,
alpha: 0.7,
decallage: tmrConstants.left
decallage: pixiTMR.sizes.decallage(-1, 1),
taille: () => pixiTMR.sizes.third
});
}

View File

@ -1,12 +1,10 @@
import { tmrConstants, tmrTokenZIndex } from "../tmr-constants.js";
import { tmrTokenZIndex } from "../tmr-constants.js";
import { TMRUtility } from "../tmr-utility.js";
import { Draconique } from "./draconique.js";
import { EffetsDraconiques } from "./effets-draconiques.js";
export class SortReserve extends Draconique {
constructor() {
super();
}
type() { return '' }
match(item) { return false; }
manualMessage() { return false }
@ -14,13 +12,28 @@ export class SortReserve extends Draconique {
code() { return 'sortreserve' }
tooltip(sort) { return `${sort.name}, r${sort.system.ptreve}` }
img() { return 'systems/foundryvtt-reve-de-dragon/icons/tmr/scroll.webp' }
img() { return 'systems/foundryvtt-reve-de-dragon/icons/tmr/sort-reserve.svg' }
createSprite(pixiTMR) {
return pixiTMR.sprite(this.code(), {
zIndex: tmrTokenZIndex.sort,
alpha: 0.5,
decallage: tmrConstants.right
decallage: pixiTMR.sizes.decallage(-1, 0),
taille: () => pixiTMR.sizes.third,
});
}
tokens(pixiTMR, linkData, coordTMR, type = undefined) {
if (TMRUtility.getTMR(coordTMR()).type == 'fleuve') {
const tooltip = this.tooltip(linkData)
const fleuves = TMRUtility.getListTMR('fleuve')
return fleuves.map(f => EffetsDraconiques.sortReserveHumide._createToken(pixiTMR, linkData, () => f.coord, type?? this.code(), tooltip))
}
return super.tokens(pixiTMR, linkData, coordTMR, type)
}
}
export class SortReserveHumide extends SortReserve {
code() { return 'sortreservehumide' }
tooltip(sort) { return `${sort.name} en fleuve, r${sort.system.ptreve}` }
img() { return 'systems/foundryvtt-reve-de-dragon/icons/tmr/sort-reserve-humide.svg' }
}

View File

@ -1,29 +1,26 @@
import { Grammar } from "../grammar.js";
import { tmrConstants, tmrColors, tmrTokenZIndex } from "../tmr-constants.js";
import { tmrTokenZIndex } from "../tmr-constants.js";
import { Draconique } from "./draconique.js";
export class TerreAttache extends Draconique {
constructor() {
super();
}
type() { return 'tete' }
match(item) { return Draconique.isTeteDragon(item) && Grammar.toLowerCaseNoAccent(item.name).includes("terre d'attache"); }
manualMessage() { return "Vous pouvez re-configurer votre Terre d'Attache" }
manualMessage() { return "Vous pouvez re-configurer votre Nouvelle Terre d'attache" }
async onActorCreateOwned(actor, tete) {
await this.createCaseTmr(actor, "Terre d'attache à déterminer", { coord: 'A0' }, tete.id);
await this.createCaseTmr(actor, "Nouvelle Terre d'attache", { coord: 'A0' }, tete.id);
}
code() { return 'attache' }
tooltip(linkData) { return `Terre d'attache en ${this.tmrLabel(linkData)} !` }
img() { return 'icons/svg/anchor.svg' }
tooltip(linkData) { return `Terre d'attache` }
img() { return 'systems/foundryvtt-reve-de-dragon/icons/tmr/attache.svg' }
createSprite(pixiTMR) {
return pixiTMR.sprite(this.code(), {
zIndex: tmrTokenZIndex.tetes,
color: tmrColors.tetes,
decallage: tmrConstants.topLeft
decallage: pixiTMR.sizes.decallage(1, 1),
taille: () => pixiTMR.sizes.third
});
}

View File

@ -1,12 +1,9 @@
import { Grammar } from "../grammar.js";
import { TMRUtility } from "../tmr-utility.js";
import { tmrConstants, tmrColors, tmrTokenZIndex } from "../tmr-constants.js";
import { tmrTokenZIndex } from "../tmr-constants.js";
import { Draconique } from "./draconique.js";
export class TrouNoir extends Draconique {
constructor() {
super();
}
type() { return 'souffle' }
match(item) { return Draconique.isSouffleDragon(item) && Grammar.toLowerCaseNoAccent(item.name).includes('trou noir'); }
@ -15,21 +12,19 @@ export class TrouNoir extends Draconique {
async onActorCreateOwned(actor, souffle) {
const existants = actor.items.filter(it => this.isCase(it)).map(it => it.system.coord);
const selectedTMR = await TMRUtility.getTMRAleatoire(tmr => !(TMRUtility.isCaseHumide(tmr) || existants.includes(tmr.coord)));
await this.createCaseTmr(actor, 'Trou noir: ' + selectedTMR.label, selectedTMR, souffle.id);
await this.createCaseTmr(actor, 'Trou noir', selectedTMR, souffle.id);
}
code() { return 'trounoir' }
tooltip(linkData) { return `Trou noir en ${this.tmrLabel(linkData)} !` }
img() { return 'icons/svg/explosion.svg' }
tooltip(linkData) { return `Trou noir` }
img() { return 'systems/foundryvtt-reve-de-dragon/icons/tmr/trounoir.svg' }
createSprite(pixiTMR) {
return pixiTMR.sprite(this.code(),
{
zIndex: tmrTokenZIndex.trounoir,
color: tmrColors.trounoir,
alpha: 1, taille:
tmrConstants.full,
decallage: { x: 2, y: 2 },
decallage: pixiTMR.sizes.decallage(0, 0),
taille: () => pixiTMR.sizes.full,
});
}

View File

@ -3,8 +3,10 @@ import { Grammar } from "../grammar.js";
import { Misc } from "../misc.js";
import { RdDRollTables } from "../rdd-rolltables.js";
import { TMRUtility } from "../tmr-utility.js";
import { tmrConstants, tmrColors, tmrTokenZIndex } from "../tmr-constants.js";
import { tmrTokenZIndex } from "../tmr-constants.js";
import { Draconique } from "./draconique.js";
import { TYPES } from "../item.js";
import { TMRAnimations } from "./animation.js";
export class UrgenceDraconique extends Draconique {
@ -27,7 +29,7 @@ export class UrgenceDraconique extends Draconique {
const demiReve = actor.getDemiReve();
coordSortsReserve.sort(Misc.ascending(t => TMRUtility.distanceCoordTMR(t, demiReve)));
const tmr = TMRUtility.getTMR(coordSortsReserve[0]);
await this.createCaseTmr(actor, 'Urgence draconique: ' + tmr.label, tmr, queue.id);
await this.createCaseTmr(actor, 'Urgence draconique', tmr, queue.id);
}
}
@ -36,16 +38,18 @@ export class UrgenceDraconique extends Draconique {
}
code() { return 'urgence' }
tooltip(linkData) { return `Urgence draconique!` }
img() { return 'systems/foundryvtt-reve-de-dragon/icons/tmr/pelerin.webp' }
tooltip(linkData) { return `Urgence draconique` }
img() { return 'systems/foundryvtt-reve-de-dragon/icons/tmr/urgence.svg' }
createSprite(pixiTMR) {
return pixiTMR.sprite(this.code(),
{
return TMRAnimations.withAnimation(
pixiTMR.sprite(this.code(), {
zIndex: tmrTokenZIndex.conquete,
color: tmrColors.queues,
taille: tmrConstants.full,
decallage: { x: 2, y: 0 }
});
decallage: pixiTMR.sizes.decallage(0, 0),
taille: () => pixiTMR.sizes.half,
}),
pixiTMR,
TMRAnimations.changeZoom()
)
}
}

View File

@ -0,0 +1,182 @@
import { TYPES } from "../item.js"
import { RdDItemCompetence } from "../item-competence.js"
import { ChatUtility } from "../chat-utility.js"
const CODES_COMPETENCES_VOYAGE = ['Extérieur', 'Forêt', 'Montagne', 'Marais', 'Glace', 'Equitation']
const TABLEAU_FATIGUE_MARCHE = [
{
code: "aise", label: "Aisé", description: "Route ou chemin",
survies: ['Extérieur', 'Equitation'],
vitesses: [{ vitesse: 4, fatigue: 1 }, { vitesse: 6, fatigue: 2 }, { vitesse: 8, fatigue: 3 }, { vitesse: 10, fatigue: 4 }, { vitesse: 12, fatigue: 6 }],
},
{
code: "malaise", label: "Malaisé", description: "Hors piste (herbes et buissons)",
survies: ['Extérieur', 'Equitation'],
vitesses: [{ vitesse: 4, fatigue: 2 }, { vitesse: 6, fatigue: 3 }, { vitesse: 8, fatigue: 4 }, { vitesse: 10, fatigue: 6 }],
},
{
code: "difficile", label: "Difficile", description: "Hors piste (collines, forêt)",
survies: ['Extérieur', 'Forêt', 'Glace', 'Equitation'],
vitesses: [{ vitesse: 4, fatigue: 3 }, { vitesse: 6, fatigue: 4 }, { vitesse: 8, fatigue: 6 }],
},
{
code: "tresdifficile", label: "Très difficile", description: "Hors piste (montagne, jungle, marais)",
survies: ['Forêt', 'Montagne', 'Marais', 'Glace'],
vitesses: [{ vitesse: 4, fatigue: 4 }, { vitesse: 6, fatigue: 6 }],
},
]
export class DialogFatigueVoyage extends Dialog {
static dialog = undefined
static async create() {
if (!game.user.isGM) {
return
}
if (!DialogFatigueVoyage.dialog) {
const playerActors = game.actors.filter(actor => actor.hasPlayerOwner && actor.isPersonnage())
.map(actor => DialogFatigueVoyage.prepareActor(actor))
const parameters = {
tableauFatigueMarche: TABLEAU_FATIGUE_MARCHE,
playerActors: playerActors,
nombreHeures: 1,
}
DialogFatigueVoyage.setModeDeplacement(parameters, undefined, undefined)
const html = await renderTemplate("systems/foundryvtt-reve-de-dragon/templates/voyage/dialog-fatigue-voyage.hbs", parameters);
DialogFatigueVoyage.dialog = new DialogFatigueVoyage(html, parameters);
}
DialogFatigueVoyage.dialog.render(true);
}
static setModeDeplacement(parameters, code, vitesse) {
const ligneFatigueMarche = TABLEAU_FATIGUE_MARCHE.find(it => it.code == code) ?? TABLEAU_FATIGUE_MARCHE[0]
const rythme = ligneFatigueMarche.vitesses.find(it => it.vitesse == vitesse) ?? ligneFatigueMarche.vitesses[0]
parameters.typeTerrain = ligneFatigueMarche
parameters.vitesseDeplacement = rythme.vitesse
parameters.fatigueHoraire = rythme.fatigue
}
static prepareActor(actor) {
const competencesVoyage = {}
CODES_COMPETENCES_VOYAGE.forEach(codeSurvie =>
competencesVoyage[codeSurvie] = RdDItemCompetence.findCompetence(actor.itemTypes[TYPES.competence], codeSurvie, { onMessage: () => { } })
)
return {
actor: actor,
selected: true,
ajustementFatigue: 0,
competencesVoyage: competencesVoyage
}
}
constructor(html, parameters) {
const options = {
classes: ["dialog-fatigue-voyage"],
width: 600,
height: 'fit-content',
'max-height': 900,
'z-index': 99999
}
const conf = {
title: "Fatigue de voyage",
content: html,
buttons: {}
}
super(conf, options);
this.parameters = parameters
this.controls = {}
}
activateListeners(html) {
if (this.html == undefined) {
html.find('select[name="code-terrain"]').trigger("focus")
}
this.html = html;
super.activateListeners(html);
this.html.find('select[name="code-terrain"]').change(event => this.changeParameters())
this.html.find('select[name="vitesse-deplacement"]').change(event => this.changeParameters())
this.html.find('input[name="nombre-heures"]').change(event => this.changeParameters())
this.html.find('button[name="appliquer-fatigue"]').click(event => this.appliquerFatigue())
}
changeParameters() {
this.changeTerrain(this.html.find('select[name="code-terrain"]').val())
this.changeVitesse(this.html.find('select[name="vitesse-deplacement"]').val())
this.changeNombreHeures(this.html.find('input[name="nombre-heures"]').val())
this.setFatigue()
}
async changeTerrain(codeTerrain) {
if (this.parameters.typeTerrain.code != codeTerrain) {
const selectVitesseDeplacement = this.html.find('select[name="vitesse-deplacement"]')
const vitesse = selectVitesseDeplacement.val()
selectVitesseDeplacement.empty()
DialogFatigueVoyage.setModeDeplacement(this.parameters, codeTerrain, vitesse)
this.parameters.typeTerrain.vitesses.forEach(async rythme => {
selectVitesseDeplacement.append(await renderTemplate('systems/foundryvtt-reve-de-dragon/templates/voyage/option-vitesse-fatigue.hbs', rythme))
})
selectVitesseDeplacement.val(this.parameters.vitesseDeplacement).change()
}
}
async changeVitesse(vitesse) {
if (this.parameters.vitesseDeplacement != vitesse) {
DialogFatigueVoyage.setModeDeplacement(this.parameters, this.parameters.typeTerrain.code, vitesse)
}
}
async changeNombreHeures(nombreHeures) {
this.parameters.nombreHeures = parseInt(nombreHeures)
}
async setFatigue() {
this.html.find('input[name="base-fatigue"]').val(this.parameters.nombreHeures * this.parameters.fatigueHoraire)
}
async appliquerFatigue() {
const fatigueBase = parseInt(this.html.find('input[name="base-fatigue"]').val() ?? 0)
const actors = jQuery.map(
this.html.find('div.fatigue-actors-list li.list-item'),
it => this.$extractActor(this.html.find(it))
)
actors.filter(it => it.selected)
.forEach(async it => {
const perteFatigue = fatigueBase + it.ajustement
ChatMessage.create({
whisper: ChatUtility.getWhisperRecipientsAndGMs(it.actor.name),
content: await renderTemplate(
'systems/foundryvtt-reve-de-dragon/templates/voyage/chat-fatigue_voyage.hbs', mergeObject(it,
{
parameters: this.parameters,
fatigueBase: fatigueBase,
perteFatigue: perteFatigue,
isVoyage: fatigueBase == this.parameters.nombreHeures * this.parameters.fatigueHoraire
})
),
})
await it.actor.santeIncDec("fatigue", perteFatigue)
})
}
$extractActor(actorRow) {
const actor = game.actors.get(actorRow.data('actor-id'))
if (!actor) {
ui.notifications.warn(`Acteur ${it.actorId} introuvable`)
}
return {
actor: actor,
ajustement: parseInt(actorRow.find('input[name="ajustement-fatigue"]').val() ?? 0),
selected: actor && actorRow.find('input[name="selectionner-acteur"]').is(':checked')
}
}
async close() {
DialogFatigueVoyage.dialog = undefined
await super.close()
}
}

File diff suppressed because one or more lines are too long

View File

@ -1,206 +1,206 @@
{"name":"Argent (1 sol)","type":"monnaie","img":"systems/foundryvtt-reve-de-dragon/icons/objets/piece_argent_sol.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Item.6M7WG9ciKuoYtN9i"}},"_id":"0I30m9qcYJk6UR6o","system":{"description":"","descriptionmj":"","encombrement":null,"quantite":null,"qualite":0,"cout":1,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Frequente","frequence":18},{"milieu":"Villes","rarete":"Commune","frequence":54}]},"ownership":{"default":0,"jtRmvSuwkwMmIMf0":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206013,"modifiedTime":1676074487962,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"0Vgscex1VV4ybSUQ","name":"Bonnet de laine","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/bonnet_laine.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.0Vgscex1VV4ybSUQ"}},"system":{"description":"","descriptionmj":"","encombrement":0.05,"quantite":1,"qualite":0,"cout":0.06,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Commune","frequence":54},{"milieu":"Villes","rarete":"Commune","frequence":54}],"equipe":false,"resistance":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206013,"modifiedTime":1676074487962,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"1Dc4KzZageae7lhI","name":"Balles de jongleur","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/balle_jongleur.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.1Dc4KzZageae7lhI"}},"system":{"description":"","descriptionmj":"","encombrement":0.1,"quantite":4,"qualite":0,"cout":0.32,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Rare","frequence":6},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"equipe":false,"resistance":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206013,"modifiedTime":1676074487962,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"0Vgscex1VV4ybSUQ","name":"Bonnet de laine","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/bonnet_laine.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.0Vgscex1VV4ybSUQ"}},"system":{"description":"","descriptionmj":"","encombrement":0.05,"quantite":1,"qualite":0,"cout":0.06,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Commune","frequence":54},{"milieu":"Villes","rarete":"Commune","frequence":54}],"equipe":false,"resistance":1},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206013,"modifiedTime":1676074487962,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"1Dc4KzZageae7lhI","name":"Balles de jongleur","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/balle_jongleur.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.1Dc4KzZageae7lhI"}},"system":{"description":"","descriptionmj":"","encombrement":0.1,"quantite":4,"qualite":0,"cout":0.32,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Rare","frequence":6},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"equipe":false,"resistance":1},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206013,"modifiedTime":1676074487962,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"1O7IJiQSDYxJ5VsD","name":"Bouclier moyen","type":"arme","img":"systems/foundryvtt-reve-de-dragon/icons/armes_armures/bouclier_moyen.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.1O7IJiQSDYxJ5VsD"}},"system":{"description":"","descriptionmj":"","equipe":false,"encombrement":2,"quantite":1,"qualite":0,"cout":6,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Frequente","frequence":18},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"resistance":15,"categorie_parade":"boucliers","dommages":"0","penetration":0,"force":"11","competence":"Bouclier","lancer":"","tir":"","portee_courte":0,"portee_moyenne":0,"portee_extreme":0,"magique":false,"ecaille_efficacite":null,"resistance_magique":null,"rapide":false,"deuxmains":false,"unemain":false,"initpremierround":"hast"},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206014,"modifiedTime":1676074487962,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"name":"Provisions cuites","type":"nourritureboisson","img":"systems/foundryvtt-reve-de-dragon/icons/objets/provision_cuite.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.1keQMXTZ2iriOuJh"}},"_id":"1keQMXTZ2iriOuJh","system":{"description":"<p>pain, fromage, viande s&eacute;ch&eacute;e...</p>","descriptionmj":"","encombrement":0.1,"quantite":1,"qualite":0,"cout":0.02,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Commune","frequence":54},{"milieu":"Villes","rarete":"Commune","frequence":54}],"sust":1,"exotisme":0,"cuisinier":"","boisson":false,"desaltere":0,"alcoolise":false,"force":0},"ownership":{"default":0,"wYnBx3HmLfGzsj7P":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206014,"modifiedTime":1676074487962,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"2y61gBIFbATQaKDl","name":"1 m2 de laine","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/tissu_laine.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.2y61gBIFbATQaKDl"}},"system":{"description":"","descriptionmj":"","encombrement":0.2,"quantite":1,"qualite":0,"cout":0.1,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Commune","frequence":54},{"milieu":"Villes","rarete":"Commune","frequence":54}],"equipe":false,"resistance":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206014,"modifiedTime":1676074487962,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"name":"Poinçon","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/poincon_2.webp","effects":[],"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.F6ZHJth4t0PA5PMB"}},"system":{"description":"","descriptionmj":"","encombrement":0.05,"quantite":1,"qualite":0,"cout":0.1,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Frequente","frequence":18},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"equipe":false,"resistance":0},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206019,"modifiedTime":1676074352881,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"},"_id":"39iYJ6mJuy3Kno1C","folder":null,"sort":0,"ownership":{"default":0,"Hp9ImM4o9YRTSdfu":3}}
{"_id":"3DJePXhrDWQxbUeM","name":"Dé à jouer en os","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/des_en_os.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.3DJePXhrDWQxbUeM"}},"system":{"description":"","descriptionmj":"","encombrement":0.01,"quantite":1,"qualite":0,"cout":0.1,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Frequente","frequence":18},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"equipe":false,"resistance":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206015,"modifiedTime":1676074487962,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"name":"Lime","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/lime.webp","effects":[],"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.Lz4dA2NwxdSZ3FZK"}},"system":{"description":"","descriptionmj":"","encombrement":0.2,"quantite":1,"qualite":0,"cout":0.5,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Frequente","frequence":18},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"equipe":false,"resistance":0},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206022,"modifiedTime":1676074352882,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"},"_id":"3WpH3WZk0dPzvhiu","folder":null,"sort":0,"ownership":{"default":0,"Hp9ImM4o9YRTSdfu":3}}
{"_id":"3cn9nWtY0Vb1PLTx","name":"Dague de jet","type":"arme","img":"systems/foundryvtt-reve-de-dragon/icons/objets/dagues.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.3cn9nWtY0Vb1PLTx"}},"system":{"description":"<p>Chaque point de force au dessus de 10 augmente les port&eacute;es de 1m.</p>\n<p>Chaque point de force en dessous de 9 diminue les port&eacute;es de 1m.</p>","descriptionmj":"","equipe":false,"encombrement":0.5,"quantite":1,"qualite":0,"cout":3,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Rare","frequence":6},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"resistance":0,"categorie_parade":"","dommages":"1","penetration":0,"force":"0","competence":"Dague","lancer":"Dague de jet","tir":"","portee_courte":3,"portee_moyenne":8,"portee_extreme":15,"magique":false,"ecaille_efficacite":0,"resistance_magique":0,"rapide":true,"deuxmains":false,"unemain":true,"initpremierround":"dague"},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206015,"modifiedTime":1676074487962,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"3t0NhMC0cFQyCZGH","name":"Soufflet","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/soufflet.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.3t0NhMC0cFQyCZGH"}},"system":{"description":"","descriptionmj":"","encombrement":0.2,"quantite":1,"qualite":0,"cout":0.4,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Rare","frequence":6},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"equipe":false,"resistance":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206015,"modifiedTime":1676074487963,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"2y61gBIFbATQaKDl","name":"1 m2 de laine","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/tissu_laine.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.2y61gBIFbATQaKDl"}},"system":{"description":"","descriptionmj":"","encombrement":0.2,"quantite":1,"qualite":0,"cout":0.1,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Commune","frequence":54},{"milieu":"Villes","rarete":"Commune","frequence":54}],"equipe":false,"resistance":1},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206014,"modifiedTime":1676074487962,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"name":"Poinçon","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/poincon_2.webp","effects":[],"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.F6ZHJth4t0PA5PMB"}},"system":{"description":"","descriptionmj":"","encombrement":0.05,"quantite":1,"qualite":0,"cout":0.1,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Frequente","frequence":18},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"equipe":false,"resistance":1},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206019,"modifiedTime":1676074352881,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"},"_id":"39iYJ6mJuy3Kno1C","folder":null,"sort":0,"ownership":{"default":0,"Hp9ImM4o9YRTSdfu":3}}
{"_id":"3DJePXhrDWQxbUeM","name":"Dé à jouer en os","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/des_en_os.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.3DJePXhrDWQxbUeM"}},"system":{"description":"","descriptionmj":"","encombrement":0.01,"quantite":1,"qualite":0,"cout":0.1,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Frequente","frequence":18},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"equipe":false,"resistance":1},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206015,"modifiedTime":1676074487962,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"name":"Lime","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/lime.webp","effects":[],"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.Lz4dA2NwxdSZ3FZK"}},"system":{"description":"","descriptionmj":"","encombrement":0.2,"quantite":1,"qualite":0,"cout":0.5,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Frequente","frequence":18},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"equipe":false,"resistance":1},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206022,"modifiedTime":1676074352882,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"},"_id":"3WpH3WZk0dPzvhiu","folder":null,"sort":0,"ownership":{"default":0,"Hp9ImM4o9YRTSdfu":3}}
{"_id":"3cn9nWtY0Vb1PLTx","name":"Dague de jet","type":"arme","img":"systems/foundryvtt-reve-de-dragon/icons/objets/dagues.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.3cn9nWtY0Vb1PLTx"}},"system":{"description":"<p>Chaque point de force au dessus de 10 augmente les port&eacute;es de 1m.</p>\n<p>Chaque point de force en dessous de 9 diminue les port&eacute;es de 1m.</p>","descriptionmj":"","equipe":false,"encombrement":0.5,"quantite":1,"qualite":0,"cout":3,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Rare","frequence":6},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"resistance":1,"categorie_parade":"","dommages":"1","penetration":0,"force":"0","competence":"Dague","lancer":"Dague de jet","tir":"","portee_courte":3,"portee_moyenne":8,"portee_extreme":15,"magique":false,"ecaille_efficacite":0,"resistance_magique":0,"rapide":true,"deuxmains":false,"unemain":true,"initpremierround":"dague"},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206015,"modifiedTime":1676074487962,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"3t0NhMC0cFQyCZGH","name":"Soufflet","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/soufflet.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.3t0NhMC0cFQyCZGH"}},"system":{"description":"","descriptionmj":"","encombrement":0.2,"quantite":1,"qualite":0,"cout":0.4,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Rare","frequence":6},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"equipe":false,"resistance":1},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206015,"modifiedTime":1676074487963,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"3uWCDH1NOjHJpVo1","name":"Maillet","type":"arme","img":"systems/foundryvtt-reve-de-dragon/icons/objets/maillet.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.3uWCDH1NOjHJpVo1"}},"system":{"description":"","descriptionmj":"","equipe":false,"encombrement":0.1,"quantite":1,"qualite":0,"cout":0.05,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Frequente","frequence":18},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"resistance":7,"categorie_parade":"","dommages":"1","penetration":0,"force":"7","competence":"Masse à 1 main","lancer":"","tir":"","portee_courte":0,"portee_moyenne":0,"portee_extreme":0,"magique":false,"ecaille_efficacite":0,"resistance_magique":0,"rapide":false,"deuxmains":false,"unemain":true,"initpremierround":"masse"},"ownership":{"default":0,"Q4cUvqxCxMoTJXDL":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206015,"modifiedTime":1676074487963,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"4GeV81qoJrjHIgzR","name":"Tournegraisse","type":"potion","img":"systems/foundryvtt-reve-de-dragon/icons/objets/tournegraisse.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.4GeV81qoJrjHIgzR"}},"system":{"description":"<p>Cr&egrave;me sirupeuse blanch&acirc;tre.</p>","descriptionmj":"","encombrement":0.1,"quantite":1,"qualite":0,"cout":2,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Rarissime","frequence":2},{"milieu":"Villes","rarete":"Rare","frequence":6}],"temporel":{"debut":{"indexDate":-1,"indexMinute":0},"fin":{"indexDate":-1,"indexMinute":0}},"rarete":"","categorie":"Remede","herbe":"","herbebrins":0,"herbebonus":0,"reposalchimique":false,"pr":0,"prpermanent":false,"prdate":0,"soinherbe":"","soinherbebonus":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206015,"modifiedTime":1676074487963,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"4LFXefT0HFpaXQLx","name":"Briquet à silex","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/briquet.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.4LFXefT0HFpaXQLx"}},"system":{"description":"","descriptionmj":"","encombrement":0.08,"quantite":1,"qualite":0,"cout":0.4,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Frequente","frequence":18},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"equipe":false,"resistance":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206015,"modifiedTime":1676074487963,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"4LFXefT0HFpaXQLx","name":"Briquet à silex","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/briquet.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.4LFXefT0HFpaXQLx"}},"system":{"description":"","descriptionmj":"","encombrement":0.08,"quantite":1,"qualite":0,"cout":0.4,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Frequente","frequence":18},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"equipe":false,"resistance":1},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206015,"modifiedTime":1676074487963,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"4qPaCKONcrsK6JbQ","name":"Pichet de grès (1 litre)","type":"conteneur","img":"systems/foundryvtt-reve-de-dragon/icons/objets/pichet.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.4qPaCKONcrsK6JbQ"}},"system":{"description":"","descriptionmj":"","encombrement":0.3,"quantite":1,"qualite":0,"cout":0.3,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Frequente","frequence":18},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"contenu":[],"capacite":0.5,"equipe":false},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206016,"modifiedTime":1676074487963,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"4qoLpa4shvkgDZRy","name":"Culottes de velours","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/culottes_velours.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.4qoLpa4shvkgDZRy"}},"system":{"description":"","descriptionmj":"","encombrement":0.2,"quantite":1,"qualite":0,"cout":6,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Rare","frequence":6},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"equipe":false,"resistance":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206016,"modifiedTime":1676074487963,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"4qoLpa4shvkgDZRy","name":"Culottes de velours","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/culottes_velours.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.4qoLpa4shvkgDZRy"}},"system":{"description":"","descriptionmj":"","encombrement":0.2,"quantite":1,"qualite":0,"cout":6,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Rare","frequence":6},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"equipe":false,"resistance":1},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206016,"modifiedTime":1676074487963,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"5GOk9cMApM4dBcIU","name":"Casserole de fer (1 litre)","type":"conteneur","img":"systems/foundryvtt-reve-de-dragon/icons/objets/casserole.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.5GOk9cMApM4dBcIU"}},"system":{"description":"","descriptionmj":"","encombrement":0.2,"quantite":1,"qualite":0,"cout":0.3,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Rare","frequence":6},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"contenu":[],"capacite":0.5,"equipe":false},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206016,"modifiedTime":1676074487963,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"65SRmXVcyiG5ZW9l","name":"Cuillère de fer","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/cuillere_fer.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.65SRmXVcyiG5ZW9l"}},"system":{"description":"","descriptionmj":"","encombrement":0.05,"quantite":1,"qualite":0,"cout":0.1,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Frequente","frequence":18},{"milieu":"Villes","rarete":"Commune","frequence":54}],"equipe":false,"resistance":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206016,"modifiedTime":1676074487963,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"6MVWA3DYbpw8122A","name":"Entonnoir de fer","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/entonnoir.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.6MVWA3DYbpw8122A"}},"system":{"description":"","descriptionmj":"","encombrement":0.1,"quantite":1,"qualite":0,"cout":0.15,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Rare","frequence":6},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"equipe":false,"resistance":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206016,"modifiedTime":1676074487963,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"65SRmXVcyiG5ZW9l","name":"Cuillère de fer","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/cuillere_fer.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.65SRmXVcyiG5ZW9l"}},"system":{"description":"","descriptionmj":"","encombrement":0.05,"quantite":1,"qualite":0,"cout":0.1,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Frequente","frequence":18},{"milieu":"Villes","rarete":"Commune","frequence":54}],"equipe":false,"resistance":1},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206016,"modifiedTime":1676074487963,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"6MVWA3DYbpw8122A","name":"Entonnoir de fer","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/entonnoir.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.6MVWA3DYbpw8122A"}},"system":{"description":"","descriptionmj":"","encombrement":0.1,"quantite":1,"qualite":0,"cout":0.15,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Rare","frequence":6},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"equipe":false,"resistance":1},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206016,"modifiedTime":1676074487963,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"6s5QjArwz9w9JIGL","name":"Double dragonne","type":"arme","img":"systems/foundryvtt-reve-de-dragon/icons/armes_armures/double_dragonne.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.6s5QjArwz9w9JIGL"}},"system":{"description":"<p>Apparue vers la fin du Second &Acirc;ge, c&rsquo;&eacute;tait<em> une grande &eacute;p&eacute;e &agrave; deux mains</em>. Encombrante et prohibant le bouclier, c&rsquo;&eacute;tait avant tout une &eacute;p&eacute;e de duel et de frime.</p>","descriptionmj":"","equipe":false,"encombrement":4,"quantite":1,"qualite":0,"cout":50,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Rarissime","frequence":2},{"milieu":"Villes","rarete":"Rare","frequence":6}],"resistance":13,"categorie_parade":"epees-lourdes","dommages":"5","penetration":0,"force":"13","competence":"Epée à 2 mains","lancer":"","tir":"","portee_courte":0,"portee_moyenne":0,"portee_extreme":0,"magique":false,"ecaille_efficacite":null,"resistance_magique":null,"rapide":false,"deuxmains":true,"unemain":false,"initpremierround":"hast"},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206017,"modifiedTime":1676074487963,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"name":"Luth","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/luth.webp","effects":[],"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.bgkEBYUEFLvAaeVf"}},"system":{"description":"","descriptionmj":"","encombrement":1,"quantite":1,"qualite":0,"cout":7,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Rare","frequence":6},{"milieu":"Villes","rarete":"Rare","frequence":6}],"equipe":false,"resistance":0},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206109,"modifiedTime":1676074487919,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"},"folder":null,"sort":0,"ownership":{"default":0,"Hp9ImM4o9YRTSdfu":3},"_id":"72CKhDHc22VSnDX1"}
{"name":"Luth","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/luth.webp","effects":[],"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.bgkEBYUEFLvAaeVf"}},"system":{"description":"","descriptionmj":"","encombrement":1,"quantite":1,"qualite":0,"cout":7,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Rare","frequence":6},{"milieu":"Villes","rarete":"Rare","frequence":6}],"equipe":false,"resistance":1},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206109,"modifiedTime":1676074487919,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"},"folder":null,"sort":0,"ownership":{"default":0,"Hp9ImM4o9YRTSdfu":3},"_id":"72CKhDHc22VSnDX1"}
{"_id":"7B9sKLf4ipRyyEjF","name":"Bouclier lourd","type":"arme","img":"systems/foundryvtt-reve-de-dragon/icons/armes_armures/bouclier_grand.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.7B9sKLf4ipRyyEjF"}},"system":{"description":"","descriptionmj":"","equipe":false,"encombrement":3,"quantite":1,"qualite":0,"cout":8,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Rare","frequence":6},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"resistance":20,"categorie_parade":"boucliers","dommages":"0","penetration":0,"force":"13","competence":"Bouclier","lancer":"","tir":"","portee_courte":0,"portee_moyenne":0,"portee_extreme":0,"magique":false,"ecaille_efficacite":null,"resistance_magique":null,"rapide":false,"deuxmains":false,"unemain":false,"initpremierround":"hast"},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206017,"modifiedTime":1676074487963,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"7YuWWsFIuZgakGUS","name":"Mortier en marbre","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/mortier.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.7YuWWsFIuZgakGUS"}},"system":{"description":"","descriptionmj":"","encombrement":0.3,"quantite":1,"qualite":0,"cout":0.2,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Rare","frequence":6},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"equipe":false,"resistance":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206017,"modifiedTime":1676074487963,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"7c7CO626TCo4lg8b","name":"Petite scie cadre","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/scie.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.7c7CO626TCo4lg8b"}},"system":{"description":"","descriptionmj":"","encombrement":1,"quantite":1,"qualite":0,"cout":6,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Frequente","frequence":18},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"equipe":false,"resistance":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206017,"modifiedTime":1676074487963,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"7u9yAlaFhKcVdEC6","name":"Matériel de chirurgie","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/materiel_chirurgie.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.7u9yAlaFhKcVdEC6"}},"system":{"description":"<p>(pincettes, lancette, crin, aiguille)</p>","descriptionmj":"","encombrement":0.06,"quantite":1,"qualite":0,"cout":1,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Rare","frequence":6},{"milieu":"Villes","rarete":"Rare","frequence":6}],"equipe":false,"resistance":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206017,"modifiedTime":1676074487963,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"8bwP6zncdFP0O9ew","name":"Corde (10 m)","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/corde.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.8bwP6zncdFP0O9ew"}},"system":{"description":"","descriptionmj":"","encombrement":1,"quantite":1,"qualite":0,"cout":0.3,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Commune","frequence":54},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"equipe":false,"resistance":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206017,"modifiedTime":1676074487964,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"7YuWWsFIuZgakGUS","name":"Mortier en marbre","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/mortier.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.7YuWWsFIuZgakGUS"}},"system":{"description":"","descriptionmj":"","encombrement":0.3,"quantite":1,"qualite":0,"cout":0.2,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Rare","frequence":6},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"equipe":false,"resistance":1},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206017,"modifiedTime":1676074487963,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"7c7CO626TCo4lg8b","name":"Petite scie cadre","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/scie.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.7c7CO626TCo4lg8b"}},"system":{"description":"","descriptionmj":"","encombrement":1,"quantite":1,"qualite":0,"cout":6,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Frequente","frequence":18},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"equipe":false,"resistance":1},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206017,"modifiedTime":1676074487963,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"7u9yAlaFhKcVdEC6","name":"Matériel de chirurgie","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/materiel_chirurgie.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.7u9yAlaFhKcVdEC6"}},"system":{"description":"<p>(pincettes, lancette, crin, aiguille)</p>","descriptionmj":"","encombrement":0.06,"quantite":1,"qualite":0,"cout":1,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Rare","frequence":6},{"milieu":"Villes","rarete":"Rare","frequence":6}],"equipe":false,"resistance":1},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206017,"modifiedTime":1676074487963,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"8bwP6zncdFP0O9ew","name":"Corde (10 m)","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/corde.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.8bwP6zncdFP0O9ew"}},"system":{"description":"","descriptionmj":"","encombrement":1,"quantite":1,"qualite":0,"cout":0.3,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Commune","frequence":54},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"equipe":false,"resistance":1},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206017,"modifiedTime":1676074487964,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"92GDNmNVa2u0gzpx","name":"Massette","type":"arme","img":"systems/foundryvtt-reve-de-dragon/icons/armes_armures/massette.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.92GDNmNVa2u0gzpx"}},"system":{"description":"","descriptionmj":"","equipe":false,"encombrement":1,"quantite":1,"qualite":0,"cout":2,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Frequente","frequence":18},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"resistance":8,"categorie_parade":"","dommages":"2","penetration":0,"force":"9","competence":"Masse à 1 main","lancer":"","tir":"","portee_courte":0,"portee_moyenne":0,"portee_extreme":0,"magique":false,"ecaille_efficacite":0,"resistance_magique":0,"rapide":true,"deuxmains":false,"unemain":true,"initpremierround":"masse"},"ownership":{"default":0,"Q4cUvqxCxMoTJXDL":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206017,"modifiedTime":1676074487964,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"9cLkTDugz84gpHUB","name":"Bitume de Camphre","type":"potion","img":"systems/foundryvtt-reve-de-dragon/icons/objets/bitume_de_camphre.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.9cLkTDugz84gpHUB"}},"system":{"description":"<p>Cr&egrave;me sirupeuse gris&acirc;tre.</p>","descriptionmj":"","encombrement":0.1,"quantite":1,"qualite":0,"cout":2,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Rarissime","frequence":2},{"milieu":"Villes","rarete":"Rare","frequence":6}],"temporel":{"debut":{"indexDate":-1,"indexMinute":0},"fin":{"indexDate":-1,"indexMinute":0}},"rarete":"","categorie":"Remede","herbe":"","herbebrins":0,"herbebonus":0,"reposalchimique":false,"pr":0,"prpermanent":false,"prdate":0,"soinherbe":"","soinherbebonus":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206018,"modifiedTime":1676074487964,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"A3jx5dPkk5IeXSXn","name":"Lait de lune","type":"potion","img":"systems/foundryvtt-reve-de-dragon/icons/objets/lait_de_lune.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.A3jx5dPkk5IeXSXn"}},"system":{"description":"<p>Fluide.</p>\n<p>Lait de laie.</p>","descriptionmj":"","encombrement":0.1,"quantite":1,"qualite":0,"cout":1,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Rarissime","frequence":2},{"milieu":"Villes","rarete":"Rare","frequence":6}],"temporel":{"debut":{"indexDate":-1,"indexMinute":0},"fin":{"indexDate":-1,"indexMinute":0}},"rarete":"","categorie":"Remede","herbe":"","herbebrins":0,"herbebonus":0,"reposalchimique":false,"pr":0,"prpermanent":false,"prdate":0,"soinherbe":"","soinherbebonus":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206018,"modifiedTime":1676074487964,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"name":"Bronze (10 deniers)","type":"monnaie","img":"systems/foundryvtt-reve-de-dragon/icons/objets/piece_bronze_epees.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Item.hifMbbRrRdQxflsx"}},"_id":"A8UcYUIIlb6YfczN","system":{"description":"","descriptionmj":"","encombrement":0.01,"quantite":1,"qualite":0,"cout":0.1,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Commune","frequence":54},{"milieu":"Villes","rarete":"Commune","frequence":54}]},"ownership":{"default":0,"jtRmvSuwkwMmIMf0":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206018,"modifiedTime":1676074487964,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"A9nMgTyEwYzdA0zT","name":"Manteau de velours","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/manteau_velours.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.A9nMgTyEwYzdA0zT"}},"system":{"description":"","descriptionmj":"","encombrement":1,"quantite":1,"qualite":0,"cout":10,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Rarissime","frequence":2},{"milieu":"Villes","rarete":"Rare","frequence":6}],"equipe":false,"resistance":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206018,"modifiedTime":1676074487964,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"AOQsKTjIbcy8NV9t","name":"Pierre à aiguiser","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/pierre_a_aiguiser.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.AOQsKTjIbcy8NV9t"}},"system":{"description":"","descriptionmj":"","encombrement":0.2,"quantite":1,"qualite":0,"cout":0.3,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Frequente","frequence":18},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"equipe":false,"resistance":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206018,"modifiedTime":1676074487964,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"name":"Alêne","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/poincon_2.webp","effects":[],"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.F6ZHJth4t0PA5PMB"}},"system":{"description":"","descriptionmj":"","encombrement":0.05,"quantite":1,"qualite":0,"cout":0.1,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Frequente","frequence":18},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"equipe":false,"resistance":0},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206019,"modifiedTime":1676074487919,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"},"folder":null,"sort":0,"ownership":{"default":0,"Hp9ImM4o9YRTSdfu":3},"_id":"AWQTOfz3HoidgUOf"}
{"_id":"A9nMgTyEwYzdA0zT","name":"Manteau de velours","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/manteau_velours.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.A9nMgTyEwYzdA0zT"}},"system":{"description":"","descriptionmj":"","encombrement":1,"quantite":1,"qualite":0,"cout":10,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Rarissime","frequence":2},{"milieu":"Villes","rarete":"Rare","frequence":6}],"equipe":false,"resistance":1},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206018,"modifiedTime":1676074487964,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"AOQsKTjIbcy8NV9t","name":"Pierre à aiguiser","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/pierre_a_aiguiser.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.AOQsKTjIbcy8NV9t"}},"system":{"description":"","descriptionmj":"","encombrement":0.2,"quantite":1,"qualite":0,"cout":0.3,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Frequente","frequence":18},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"equipe":false,"resistance":1},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206018,"modifiedTime":1676074487964,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"name":"Alêne","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/poincon_2.webp","effects":[],"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.F6ZHJth4t0PA5PMB"}},"system":{"description":"","descriptionmj":"","encombrement":0.05,"quantite":1,"qualite":0,"cout":0.1,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Frequente","frequence":18},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"equipe":false,"resistance":1},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206019,"modifiedTime":1676074487919,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"},"folder":null,"sort":0,"ownership":{"default":0,"Hp9ImM4o9YRTSdfu":3},"_id":"AWQTOfz3HoidgUOf"}
{"_id":"As5kYvyOrWrr8KJm","name":"Etui à luth de cuir","type":"conteneur","img":"systems/foundryvtt-reve-de-dragon/icons/objets/etui_luth.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.As5kYvyOrWrr8KJm"}},"system":{"description":"","descriptionmj":"","encombrement":0.2,"quantite":1,"qualite":0,"cout":1,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Rare","frequence":6},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"contenu":[],"capacite":1,"equipe":false},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206018,"modifiedTime":1676074487964,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"B2BhuxveVKMnD8fe","name":"Bottes de cuir souple","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/bottes_de_cuir.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.B2BhuxveVKMnD8fe"}},"system":{"description":"","descriptionmj":"","encombrement":0.4,"quantite":1,"qualite":0,"cout":2,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Frequente","frequence":18},{"milieu":"Villes","rarete":"Commune","frequence":54}],"equipe":false,"resistance":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206018,"modifiedTime":1676074487964,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"B2BhuxveVKMnD8fe","name":"Bottes de cuir souple","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/bottes_de_cuir.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.B2BhuxveVKMnD8fe"}},"system":{"description":"","descriptionmj":"","encombrement":0.4,"quantite":1,"qualite":0,"cout":2,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Frequente","frequence":18},{"milieu":"Villes","rarete":"Commune","frequence":54}],"equipe":false,"resistance":1},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206018,"modifiedTime":1676074487964,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"BQPhNy9AUCpEGgFg","name":"Couteau de cuisine","type":"arme","img":"systems/foundryvtt-reve-de-dragon/icons/objets/couteau-cuisine.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.BQPhNy9AUCpEGgFg"}},"system":{"description":"","descriptionmj":"","equipe":false,"encombrement":0.2,"quantite":1,"qualite":0,"cout":1,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Frequente","frequence":18},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"resistance":6,"categorie_parade":"dagues","dommages":"1","penetration":0,"force":"0","competence":"Dague","lancer":"Dague de jet","tir":"","portee_courte":3,"portee_moyenne":8,"portee_extreme":15,"magique":false,"ecaille_efficacite":null,"resistance_magique":null,"rapide":true,"deuxmains":false,"unemain":true,"initpremierround":"dague"},"ownership":{"default":0,"Q4cUvqxCxMoTJXDL":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206018,"modifiedTime":1676074487964,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"CMtQM06J3BZsHHxH","name":"Sandales","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/sandales.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.CMtQM06J3BZsHHxH"}},"system":{"description":"","descriptionmj":"","encombrement":0.1,"quantite":1,"qualite":0,"cout":0.3,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Frequente","frequence":18},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"equipe":false,"resistance":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206018,"modifiedTime":1676074487964,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"CQSxJv1mgmIeMCbM","name":"Grappin","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/grappin.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.CQSxJv1mgmIeMCbM"}},"system":{"description":"","descriptionmj":"","encombrement":0.5,"quantite":1,"qualite":0,"cout":2,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Rare","frequence":6},{"milieu":"Villes","rarete":"Rare","frequence":6}],"equipe":false,"resistance":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206018,"modifiedTime":1676074487964,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"name":"Râpe","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/lime.webp","effects":[],"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.Lz4dA2NwxdSZ3FZK"}},"system":{"description":"","descriptionmj":"","encombrement":0.2,"quantite":1,"qualite":0,"cout":0.5,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Frequente","frequence":18},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"equipe":false,"resistance":0},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206022,"modifiedTime":1676074487919,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"},"folder":null,"sort":0,"ownership":{"default":0,"Hp9ImM4o9YRTSdfu":3},"_id":"DJIvE20bU09h4YXw"}
{"_id":"CMtQM06J3BZsHHxH","name":"Sandales","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/sandales.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.CMtQM06J3BZsHHxH"}},"system":{"description":"","descriptionmj":"","encombrement":0.1,"quantite":1,"qualite":0,"cout":0.3,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Frequente","frequence":18},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"equipe":false,"resistance":1},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206018,"modifiedTime":1676074487964,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"CQSxJv1mgmIeMCbM","name":"Grappin","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/grappin.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.CQSxJv1mgmIeMCbM"}},"system":{"description":"","descriptionmj":"","encombrement":0.5,"quantite":1,"qualite":0,"cout":2,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Rare","frequence":6},{"milieu":"Villes","rarete":"Rare","frequence":6}],"equipe":false,"resistance":1},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206018,"modifiedTime":1676074487964,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"name":"Râpe","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/lime.webp","effects":[],"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.Lz4dA2NwxdSZ3FZK"}},"system":{"description":"","descriptionmj":"","encombrement":0.2,"quantite":1,"qualite":0,"cout":0.5,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Frequente","frequence":18},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"equipe":false,"resistance":1},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206022,"modifiedTime":1676074487919,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"},"folder":null,"sort":0,"ownership":{"default":0,"Hp9ImM4o9YRTSdfu":3},"_id":"DJIvE20bU09h4YXw"}
{"_id":"ElweMV283IUpqaik","name":"Sable-Poudre","type":"potion","img":"systems/foundryvtt-reve-de-dragon/icons/objets/sable_poudre.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.ElweMV283IUpqaik"}},"system":{"description":"<p>Granul&eacute;s. Poudre blanche.</p>","descriptionmj":"","encombrement":0.1,"quantite":1,"qualite":0,"cout":2,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Rarissime","frequence":2},{"milieu":"Villes","rarete":"Rare","frequence":6}],"temporel":{"debut":{"indexDate":-1,"indexMinute":0},"fin":{"indexDate":-1,"indexMinute":0}},"rarete":"","categorie":"Remede","herbe":"","herbebrins":0,"herbebonus":0,"reposalchimique":false,"pr":0,"prpermanent":false,"prdate":0,"soinherbe":"","soinherbebonus":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206019,"modifiedTime":1676074487964,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"Eospy1EFNlhgOyXc","name":"Lacet de cuir (1 m)","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/lacet.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.Eospy1EFNlhgOyXc"}},"system":{"description":"","descriptionmj":"","encombrement":0.01,"quantite":1,"qualite":0,"cout":0.06,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Frequente","frequence":18},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"equipe":false,"resistance":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206019,"modifiedTime":1676074487964,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"Eospy1EFNlhgOyXc","name":"Lacet de cuir (1 m)","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/lacet.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.Eospy1EFNlhgOyXc"}},"system":{"description":"","descriptionmj":"","encombrement":0.01,"quantite":1,"qualite":0,"cout":0.06,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Frequente","frequence":18},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"equipe":false,"resistance":1},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206019,"modifiedTime":1676074487964,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"FH3mSvdebfhIL2Af","name":"Topazoïne","type":"potion","img":"systems/foundryvtt-reve-de-dragon/icons/objets/topazoine.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.FH3mSvdebfhIL2Af"}},"system":{"description":"<p>Granul&eacute;s. Coquille d'oeuf de cane broy&eacute;.</p>","descriptionmj":"","encombrement":0.1,"quantite":1,"qualite":0,"cout":2,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Rarissime","frequence":2},{"milieu":"Villes","rarete":"Rare","frequence":6}],"temporel":{"debut":{"indexDate":-1,"indexMinute":0},"fin":{"indexDate":-1,"indexMinute":0}},"rarete":"","categorie":"Remede","herbe":"","herbebrins":0,"herbebonus":0,"reposalchimique":false,"pr":0,"prpermanent":false,"prdate":0,"soinherbe":"","soinherbebonus":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206019,"modifiedTime":1676074487964,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"FaNRC7YQzibSdqZU","name":"Plume de fer","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/plume_de_fer.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.FaNRC7YQzibSdqZU"}},"system":{"description":"","descriptionmj":"","encombrement":0.01,"quantite":1,"qualite":0,"cout":0.1,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Rarissime","frequence":2},{"milieu":"Villes","rarete":"Rare","frequence":6}],"equipe":false,"resistance":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206019,"modifiedTime":1676074487964,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"FaNRC7YQzibSdqZU","name":"Plume de fer","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/plume_de_fer.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.FaNRC7YQzibSdqZU"}},"system":{"description":"","descriptionmj":"","encombrement":0.01,"quantite":1,"qualite":0,"cout":0.1,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Rarissime","frequence":2},{"milieu":"Villes","rarete":"Rare","frequence":6}],"equipe":false,"resistance":1},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206019,"modifiedTime":1676074487964,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"Flx5inKGs1GQKoYq","name":"Tube à parchemins","type":"conteneur","img":"systems/foundryvtt-reve-de-dragon/icons/objets/tube_parchemin.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.Flx5inKGs1GQKoYq"}},"system":{"description":"","descriptionmj":"","encombrement":0.1,"quantite":1,"qualite":0,"cout":0.5,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Rare","frequence":6},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"contenu":[],"capacite":1.3,"equipe":false},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206019,"modifiedTime":1676074487964,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"GAJIShPe7WugrIVO","name":"Manteau de fourrure","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/manteau_fourrure.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.GAJIShPe7WugrIVO"}},"system":{"description":"<p>En fonction de la qualit&eacute; de la fourrure, le prix d'un tel manteau peut varier de 1 &agrave; 20 sols.</p>","descriptionmj":"","encombrement":1,"quantite":1,"qualite":0,"cout":0,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Frequente","frequence":18},{"milieu":"Villes","rarete":"Rare","frequence":6}],"equipe":false,"resistance":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206020,"modifiedTime":1676074487964,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"GiquTnEsiVZn7m6Y","name":"Bas de soie","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/bas_soie.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.GiquTnEsiVZn7m6Y"}},"system":{"description":"","descriptionmj":"","encombrement":0,"quantite":1,"qualite":0,"cout":3,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Frequente","frequence":18},{"milieu":"Villes","rarete":"Rare","frequence":6}],"equipe":false,"resistance":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206020,"modifiedTime":1676074487965,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"Gp9ZrwXkqZbJoVVT","name":"1 m² de toile de voile","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/voile.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.Gp9ZrwXkqZbJoVVT"}},"system":{"description":"","descriptionmj":"","encombrement":0.2,"quantite":1,"qualite":0,"cout":0.1,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Rare","frequence":6},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"equipe":false,"resistance":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206020,"modifiedTime":1676074487965,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"GAJIShPe7WugrIVO","name":"Manteau de fourrure","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/manteau_fourrure.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.GAJIShPe7WugrIVO"}},"system":{"description":"<p>En fonction de la qualit&eacute; de la fourrure, le prix d'un tel manteau peut varier de 1 &agrave; 20 sols.</p>","descriptionmj":"","encombrement":1,"quantite":1,"qualite":0,"cout":0,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Frequente","frequence":18},{"milieu":"Villes","rarete":"Rare","frequence":6}],"equipe":false,"resistance":1},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206020,"modifiedTime":1676074487964,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"GiquTnEsiVZn7m6Y","name":"Bas de soie","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/bas_soie.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.GiquTnEsiVZn7m6Y"}},"system":{"description":"","descriptionmj":"","encombrement":0,"quantite":1,"qualite":0,"cout":3,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Frequente","frequence":18},{"milieu":"Villes","rarete":"Rare","frequence":6}],"equipe":false,"resistance":1},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206020,"modifiedTime":1676074487965,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"Gp9ZrwXkqZbJoVVT","name":"1 m² de toile de voile","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/voile.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.Gp9ZrwXkqZbJoVVT"}},"system":{"description":"","descriptionmj":"","encombrement":0.2,"quantite":1,"qualite":0,"cout":0.1,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Rare","frequence":6},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"equipe":false,"resistance":1},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206020,"modifiedTime":1676074487965,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"HdciYu5J2SrJO8e3","name":"Épée gnome","type":"arme","img":"systems/foundryvtt-reve-de-dragon/icons/armes_armures/epee_gnome.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.HdciYu5J2SrJO8e3"}},"system":{"description":"<p>C&rsquo;est une &eacute;p&eacute;e <em>courte</em>, essentiellement fabriqu&eacute;e et port&eacute;e par les Gnomes au Second &Acirc;ge.</p>","descriptionmj":"","equipe":false,"encombrement":1,"quantite":1,"qualite":0,"cout":12,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Frequente","frequence":18},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"resistance":12,"categorie_parade":"epees-courtes","dommages":"2","penetration":0,"force":"8","competence":"Epée à 1 main","lancer":"","tir":"","portee_courte":0,"portee_moyenne":0,"portee_extreme":0,"magique":false,"ecaille_efficacite":null,"resistance_magique":null,"rapide":true,"deuxmains":false,"unemain":true,"initpremierround":"epeegnome"},"ownership":{"default":0,"Q4cUvqxCxMoTJXDL":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206020,"modifiedTime":1676074487965,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"HjbB4f1CDz96Hv88","name":"Rasoir","type":"arme","img":"systems/foundryvtt-reve-de-dragon/icons/objets/rasoir.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.HjbB4f1CDz96Hv88"}},"system":{"description":"","descriptionmj":"","equipe":false,"encombrement":0.1,"quantite":1,"qualite":0,"cout":2,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Rare","frequence":6},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"resistance":0,"categorie_parade":"dagues","dommages":"1","penetration":0,"force":"0","competence":"Dague","lancer":"Dague de jet","tir":"","portee_courte":3,"portee_moyenne":8,"portee_extreme":15,"magique":false,"ecaille_efficacite":0,"resistance_magique":0,"rapide":false,"deuxmains":false,"unemain":false,"initpremierround":"dague"},"ownership":{"default":0,"Q4cUvqxCxMoTJXDL":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206021,"modifiedTime":1676074487965,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"HsIJSPQ46cec22Y2","name":"Couverture de laine","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/couverture_laine.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.HsIJSPQ46cec22Y2"}},"system":{"description":"","descriptionmj":"","encombrement":0.6,"quantite":1,"qualite":0,"cout":0.3,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Commune","frequence":54},{"milieu":"Villes","rarete":"Commune","frequence":54}],"equipe":false,"resistance":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206021,"modifiedTime":1676074487965,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"Ig9qIzaZ5SveXLF7","name":"Pelle","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/pelle.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.Ig9qIzaZ5SveXLF7"}},"system":{"description":"","descriptionmj":"","encombrement":1,"quantite":1,"qualite":0,"cout":1,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Frequente","frequence":18},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"equipe":false,"resistance":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206021,"modifiedTime":1676074487965,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"HjbB4f1CDz96Hv88","name":"Rasoir","type":"arme","img":"systems/foundryvtt-reve-de-dragon/icons/objets/rasoir.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.HjbB4f1CDz96Hv88"}},"system":{"description":"","descriptionmj":"","equipe":false,"encombrement":0.1,"quantite":1,"qualite":0,"cout":2,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Rare","frequence":6},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"resistance":1,"categorie_parade":"dagues","dommages":"1","penetration":0,"force":"0","competence":"Dague","lancer":"Dague de jet","tir":"","portee_courte":3,"portee_moyenne":8,"portee_extreme":15,"magique":false,"ecaille_efficacite":0,"resistance_magique":0,"rapide":false,"deuxmains":false,"unemain":false,"initpremierround":"dague"},"ownership":{"default":0,"Q4cUvqxCxMoTJXDL":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206021,"modifiedTime":1676074487965,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"HsIJSPQ46cec22Y2","name":"Couverture de laine","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/couverture_laine.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.HsIJSPQ46cec22Y2"}},"system":{"description":"","descriptionmj":"","encombrement":0.6,"quantite":1,"qualite":0,"cout":0.3,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Commune","frequence":54},{"milieu":"Villes","rarete":"Commune","frequence":54}],"equipe":false,"resistance":1},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206021,"modifiedTime":1676074487965,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"Ig9qIzaZ5SveXLF7","name":"Pelle","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/pelle.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.Ig9qIzaZ5SveXLF7"}},"system":{"description":"","descriptionmj":"","encombrement":1,"quantite":1,"qualite":0,"cout":1,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Frequente","frequence":18},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"equipe":false,"resistance":1},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206021,"modifiedTime":1676074487965,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"InTxnjInfBYHsqcR","name":"Poêle à frire (40 cm)","type":"conteneur","img":"systems/foundryvtt-reve-de-dragon/icons/objets/poele.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.InTxnjInfBYHsqcR"}},"system":{"description":"","descriptionmj":"","encombrement":0.3,"quantite":1,"qualite":0,"cout":0.5,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Rare","frequence":6},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"contenu":[],"capacite":0.5,"equipe":false},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206021,"modifiedTime":1676074487965,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"JXMef7FXVOG1XYWO","name":"Elixir des gnomes","type":"potion","img":"systems/foundryvtt-reve-de-dragon/icons/objets/elixir_des_gnomes.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.JXMef7FXVOG1XYWO"}},"system":{"description":"<p>Fluide.</p>\n<p>Liqueur violette.</p>","descriptionmj":"","encombrement":0.1,"quantite":1,"qualite":0,"cout":1,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Rarissime","frequence":2},{"milieu":"Villes","rarete":"Rare","frequence":6}],"temporel":{"debut":{"indexDate":-1,"indexMinute":0},"fin":{"indexDate":-1,"indexMinute":0}},"rarete":"","categorie":"Remede","herbe":"","herbebrins":0,"herbebonus":0,"reposalchimique":false,"pr":0,"prpermanent":false,"prdate":0,"soinherbe":"","soinherbebonus":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206021,"modifiedTime":1676074487965,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"JfxFBlokIegRWTDo","name":"Torche 1/2 heure (60 min)","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/torche.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.JfxFBlokIegRWTDo"}},"system":{"description":"","descriptionmj":"","encombrement":0.3,"quantite":1,"qualite":0,"cout":0.02,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Commune","frequence":54},{"milieu":"Villes","rarete":"Commune","frequence":54}],"equipe":false,"resistance":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206021,"modifiedTime":1676074487965,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"JfxFBlokIegRWTDo","name":"Torche 1/2 heure (60 min)","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/torche.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.JfxFBlokIegRWTDo"}},"system":{"description":"","descriptionmj":"","encombrement":0.3,"quantite":1,"qualite":0,"cout":0.02,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Commune","frequence":54},{"milieu":"Villes","rarete":"Commune","frequence":54}],"equipe":false,"resistance":1},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206021,"modifiedTime":1676074487965,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"JhQZDbsmFZBLRcln","name":"Sac en jute (20 litres)","type":"conteneur","img":"systems/foundryvtt-reve-de-dragon/icons/objets/sac_jute_20.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.JhQZDbsmFZBLRcln"}},"system":{"description":"","descriptionmj":"","encombrement":0.05,"quantite":1,"qualite":0,"cout":0.04,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Frequente","frequence":18},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"contenu":[],"capacite":10,"equipe":false},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206021,"modifiedTime":1676074487965,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"K4n2JuDnoHDUPCZG","name":"Bouilloire de fer (2 litres)","type":"conteneur","img":"systems/foundryvtt-reve-de-dragon/icons/objets/bouilloire.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.K4n2JuDnoHDUPCZG"}},"system":{"description":"","descriptionmj":"","encombrement":0.5,"quantite":1,"qualite":0,"cout":0.5,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Rare","frequence":6},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"contenu":[],"capacite":1,"equipe":false},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206022,"modifiedTime":1676074487965,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"KQZIK8ltQ3sQiDGe","name":"Mailles de Fer","type":"armure","img":"systems/foundryvtt-reve-de-dragon/icons/armes_armures/mailles.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.KQZIK8ltQ3sQiDGe"}},"system":{"description":"<p>Grand haubert de mailles avec capuche À enfiler sur une cotte de cuir souple ou de drap matelassé) + bottes de cuir / métal.</p>\n<p>&nbsp;</p>","descriptionmj":"","equipe":false,"encombrement":6,"quantite":1,"qualite":0,"cout":50,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Rarissime","frequence":2},{"milieu":"Villes","rarete":"Rare","frequence":6}],"protection":"5","deterioration":null,"malus":-4},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206022,"modifiedTime":1676074487965,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"KlydiUbayqBgJB6J","name":"Tablette de cire","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/tablette_cire.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.KlydiUbayqBgJB6J"}},"system":{"description":"","descriptionmj":"","encombrement":0.1,"quantite":1,"qualite":0,"cout":0.2,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Frequente","frequence":18},{"milieu":"Villes","rarete":"Rare","frequence":6}],"equipe":false,"resistance":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206022,"modifiedTime":1676074487965,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"KvzSNxISkWDoilO8","name":"Gemme Inconnue","type":"objet","flags":{"core":{"sourceId":"Item.V3V3wUXNCG6gzJFB"}},"img":"systems/foundryvtt-reve-de-dragon/icons/gemmes/seliphane.webp","effects":[],"system":{"description":"","descriptionmj":"","encombrement":null,"quantite":1,"qualite":0,"cout":0,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Rarissime","frequence":2},{"milieu":"Villes","rarete":"Rare","frequence":6}],"equipe":false,"resistance":0},"ownership":{"default":0,"Q4cUvqxCxMoTJXDL":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206022,"modifiedTime":1676074487965,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"KlydiUbayqBgJB6J","name":"Tablette de cire","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/tablette_cire.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.KlydiUbayqBgJB6J"}},"system":{"description":"","descriptionmj":"","encombrement":0.1,"quantite":1,"qualite":0,"cout":0.2,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Frequente","frequence":18},{"milieu":"Villes","rarete":"Rare","frequence":6}],"equipe":false,"resistance":1},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206022,"modifiedTime":1676074487965,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"KvzSNxISkWDoilO8","name":"Gemme Inconnue","type":"objet","flags":{"core":{"sourceId":"Item.V3V3wUXNCG6gzJFB"}},"img":"systems/foundryvtt-reve-de-dragon/icons/gemmes/seliphane.webp","effects":[],"system":{"description":"","descriptionmj":"","encombrement":null,"quantite":1,"qualite":0,"cout":0,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Rarissime","frequence":2},{"milieu":"Villes","rarete":"Rare","frequence":6}],"equipe":false,"resistance":1},"ownership":{"default":0,"Q4cUvqxCxMoTJXDL":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206022,"modifiedTime":1676074487965,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"LZPEdSIv3KywCwdk","name":"Liquide","type":"munition","img":"systems/foundryvtt-reve-de-dragon/icons/liquides/liquide_neutre.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.LZPEdSIv3KywCwdk"}},"system":{"description":"<p>1 mesure (20cl) d'un liquide.</p>\n<p><em>(&agrave; modifier/compl&eacute;ter)</em></p>","descriptionmj":"","encombrement":0.1,"quantite":1,"qualite":0,"cout":0,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Frequente","frequence":18},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"equipe":false},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206022,"modifiedTime":1676074487965,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"LaAP5tsP1Sc43hKO","name":"Lanterne à huile","type":"conteneur","img":"systems/foundryvtt-reve-de-dragon/icons/objets/lanterne_huile.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.LaAP5tsP1Sc43hKO"}},"system":{"description":"","descriptionmj":"","encombrement":1,"quantite":1,"qualite":0,"cout":5,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Rare","frequence":6},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"contenu":[],"capacite":0.3,"equipe":false},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206022,"modifiedTime":1676074487965,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"LkE8EjPfao9m6Rn7","name":"Huile de Sélikanthe","type":"potion","img":"systems/foundryvtt-reve-de-dragon/icons/objets/huile_de_selikanthe.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.LkE8EjPfao9m6Rn7"}},"system":{"description":"<p>Fluide.</p>\n<p>Liquide l&eacute;g&egrave;rement huileux.</p>","descriptionmj":"","encombrement":0.1,"quantite":1,"qualite":0,"cout":1,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Rarissime","frequence":2},{"milieu":"Villes","rarete":"Rare","frequence":6}],"temporel":{"debut":{"indexDate":-1,"indexMinute":0},"fin":{"indexDate":-1,"indexMinute":0}},"rarete":"","categorie":"Remede","herbe":"","herbebrins":0,"herbebonus":0,"reposalchimique":false,"pr":0,"prpermanent":false,"prdate":0,"soinherbe":"","soinherbebonus":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206022,"modifiedTime":1676074487965,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"M1RgJDuQUvxjqJVV","name":"Chandelle de suif (1 heure)","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/chandelle.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.M1RgJDuQUvxjqJVV"}},"system":{"description":"","descriptionmj":"","encombrement":0.1,"quantite":1,"qualite":0,"cout":0.02,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Frequente","frequence":18},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"equipe":false,"resistance":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206022,"modifiedTime":1676074487966,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"M1RgJDuQUvxjqJVV","name":"Chandelle de suif (1 heure)","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/chandelle.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.M1RgJDuQUvxjqJVV"}},"system":{"description":"","descriptionmj":"","encombrement":0.1,"quantite":1,"qualite":0,"cout":0.02,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Frequente","frequence":18},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"equipe":false,"resistance":1},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206022,"modifiedTime":1676074487966,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"MGvyXFQJpv6nNynl","name":"Masse lourde","type":"arme","img":"systems/foundryvtt-reve-de-dragon/icons/armes_armures/masse_lourde.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.MGvyXFQJpv6nNynl"}},"system":{"description":"","descriptionmj":"","equipe":false,"encombrement":3,"quantite":1,"qualite":0,"cout":4,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Rare","frequence":6},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"resistance":10,"categorie_parade":"","dommages":"3/4","penetration":0,"force":"12/11","competence":"Masse à 1 main","lancer":"","tir":"","portee_courte":0,"portee_moyenne":0,"portee_extreme":0,"magique":false,"ecaille_efficacite":0,"resistance_magique":0,"rapide":false,"deuxmains":true,"unemain":true,"initpremierround":"masse"},"ownership":{"default":0,"Q4cUvqxCxMoTJXDL":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206023,"modifiedTime":1676074487966,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"MQxgfYTEQEUhG116","name":"Épée bâtarde","type":"arme","img":"systems/foundryvtt-reve-de-dragon/icons/armes_armures/epee_batarde.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.MQxgfYTEQEUhG116"}},"system":{"description":"<p>Comme son nom l&rsquo;indique, c&rsquo;est une <em>b&acirc;tarde </em>de l'&eacute;p&eacute;e longue et de l'&eacute;p&eacute;e sorde, &agrave; la fois longue et large, pouvant s&rsquo;utiliser &agrave; une ou deux mains.</p>","descriptionmj":"","equipe":false,"encombrement":3,"quantite":1,"qualite":0,"cout":30,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Rarissime","frequence":2},{"milieu":"Villes","rarete":"Rare","frequence":6}],"resistance":14,"categorie_parade":"epees-lourdes","dommages":"4/5","penetration":0,"force":"13/12","competence":"Epée à 1 main","lancer":"","tir":"","portee_courte":0,"portee_moyenne":0,"portee_extreme":0,"magique":false,"ecaille_efficacite":null,"resistance_magique":null,"rapide":false,"deuxmains":true,"unemain":true,"initpremierround":"epeebatarde"},"ownership":{"default":0,"Q4cUvqxCxMoTJXDL":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206023,"modifiedTime":1676074487966,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"Mbh2M8JS1Rf0vxEX","name":"Harpe","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/harpe.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.Mbh2M8JS1Rf0vxEX"}},"system":{"description":"","descriptionmj":"","encombrement":1,"quantite":1,"qualite":0,"cout":5,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Rarissime","frequence":2},{"milieu":"Villes","rarete":"Rare","frequence":6}],"equipe":false,"resistance":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206023,"modifiedTime":1676074487966,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"Mbh2M8JS1Rf0vxEX","name":"Harpe","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/harpe.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.Mbh2M8JS1Rf0vxEX"}},"system":{"description":"","descriptionmj":"","encombrement":1,"quantite":1,"qualite":0,"cout":5,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Rarissime","frequence":2},{"milieu":"Villes","rarete":"Rare","frequence":6}],"equipe":false,"resistance":1},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206023,"modifiedTime":1676074487966,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"NCp2kdTKmQGyAh1U","name":"Dague","type":"arme","img":"systems/foundryvtt-reve-de-dragon/icons/armes_armures/dague.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sheetClass":"","sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.NCp2kdTKmQGyAh1U"}},"system":{"description":"","descriptionmj":"","equipe":false,"encombrement":0.5,"quantite":1,"qualite":0,"cout":3,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Frequente","frequence":18},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"resistance":8,"categorie_parade":"dagues","dommages":"1","penetration":0,"force":"7","competence":"Dague","lancer":"Dague de jet","tir":"","portee_courte":3,"portee_moyenne":8,"portee_extreme":15,"magique":false,"ecaille_efficacite":null,"resistance_magique":null,"rapide":true,"deuxmains":false,"unemain":true,"initpremierround":"dague"},"ownership":{"default":0,"Q4cUvqxCxMoTJXDL":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206023,"modifiedTime":1676074487966,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"NNLhxjFsoJVdFuit","name":"Bouteille de verre (1 litre)","type":"conteneur","img":"systems/foundryvtt-reve-de-dragon/icons/objets/bouteille_verre.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.NNLhxjFsoJVdFuit"}},"system":{"description":"","descriptionmj":"","encombrement":0.2,"quantite":1,"qualite":0,"cout":0.7,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Rare","frequence":6},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"contenu":[],"capacite":0.5,"equipe":false},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206023,"modifiedTime":1676074487966,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"OXFFRZOqlhZDJas3","name":"Béret de velours","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/beret_velours.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.OXFFRZOqlhZDJas3"}},"system":{"description":"","descriptionmj":"","encombrement":0.05,"quantite":1,"qualite":0,"cout":3,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Rare","frequence":6},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"equipe":false,"resistance":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206023,"modifiedTime":1676074487966,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"OXFFRZOqlhZDJas3","name":"Béret de velours","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/beret_velours.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.OXFFRZOqlhZDJas3"}},"system":{"description":"","descriptionmj":"","encombrement":0.05,"quantite":1,"qualite":0,"cout":3,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Rare","frequence":6},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"equipe":false,"resistance":1},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206023,"modifiedTime":1676074487966,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"OYWzXiQUFsjU5AF2","name":"Perles de Bjwal","type":"potion","img":"systems/foundryvtt-reve-de-dragon/icons/objets/perles_bjwal.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.OYWzXiQUFsjU5AF2"}},"system":{"description":"<p>Petits granul&eacute;s translucides.</p>","descriptionmj":"","encombrement":0.1,"quantite":1,"qualite":0,"cout":1,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Rarissime","frequence":2},{"milieu":"Villes","rarete":"Rare","frequence":6}],"temporel":{"debut":{"indexDate":-1,"indexMinute":0},"fin":{"indexDate":-1,"indexMinute":0}},"rarete":"","categorie":"Remede","herbe":"","herbebrins":0,"herbebonus":0,"reposalchimique":false,"pr":0,"prpermanent":false,"prdate":0,"soinherbe":"","soinherbebonus":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206023,"modifiedTime":1676074487966,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"P0yc6QfgKVmM0fpu","name":"Ecuelle de grès","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/ecuelle_gres.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.P0yc6QfgKVmM0fpu"}},"system":{"description":"","descriptionmj":"","encombrement":0.1,"quantite":1,"qualite":0,"cout":0.1,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Frequente","frequence":18},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"equipe":false,"resistance":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206023,"modifiedTime":1676074487966,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"P0yc6QfgKVmM0fpu","name":"Ecuelle de grès","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/ecuelle_gres.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.P0yc6QfgKVmM0fpu"}},"system":{"description":"","descriptionmj":"","encombrement":0.1,"quantite":1,"qualite":0,"cout":0.1,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Frequente","frequence":18},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"equipe":false,"resistance":1},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206023,"modifiedTime":1676074487966,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"PAqV7Fj8AFEpfEpy","name":"Provisions non-cuites","type":"nourritureboisson","img":"systems/foundryvtt-reve-de-dragon/icons/objets/provision_crue.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Item.2P30CKBRVIPiTf3Z"}},"system":{"description":"","descriptionmj":"","encombrement":0.1,"quantite":1,"qualite":0,"cout":0.01,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Commune","frequence":54},{"milieu":"Villes","rarete":"Commune","frequence":54}],"sust":1,"exotisme":0,"cuisinier":"","boisson":false,"desaltere":0,"alcoolise":false,"force":0},"ownership":{"default":0,"wYnBx3HmLfGzsj7P":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206023,"modifiedTime":1676074487966,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"PH2J4zR0hwXSg0vc","name":"Charbon de bois 1 kg","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/charbon.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.PH2J4zR0hwXSg0vc"}},"system":{"description":"","descriptionmj":"","encombrement":0.04,"quantite":1,"qualite":0,"cout":0.06,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Frequente","frequence":18},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"equipe":false,"resistance":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206023,"modifiedTime":1676074487966,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"PH2J4zR0hwXSg0vc","name":"Charbon de bois 1 kg","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/charbon.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.PH2J4zR0hwXSg0vc"}},"system":{"description":"","descriptionmj":"","encombrement":0.04,"quantite":1,"qualite":0,"cout":0.06,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Frequente","frequence":18},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"equipe":false,"resistance":1},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206023,"modifiedTime":1676074487966,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"PSc92VlQCdNnbPlg","name":"Lance courte","type":"arme","img":"systems/foundryvtt-reve-de-dragon/icons/armes_armures/lance.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.PSc92VlQCdNnbPlg"}},"system":{"description":"","descriptionmj":"","equipe":false,"encombrement":2,"quantite":1,"qualite":0,"cout":3,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Frequente","frequence":18},{"milieu":"Villes","rarete":"Rare","frequence":6}],"resistance":5,"categorie_parade":"lances","dommages":"2","penetration":0,"force":"8","competence":"Lance","lancer":"","tir":"","portee_courte":0,"portee_moyenne":0,"portee_extreme":0,"magique":false,"ecaille_efficacite":null,"resistance_magique":null,"rapide":true,"deuxmains":false,"unemain":true,"initpremierround":"lance"},"ownership":{"default":0,"Q4cUvqxCxMoTJXDL":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206024,"modifiedTime":1676074487966,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"PaJoTirnA6h4F3pH","name":"Hameçon","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/hame%C3%A7on.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.PaJoTirnA6h4F3pH"}},"system":{"description":"","descriptionmj":"","encombrement":0.01,"quantite":1,"qualite":0,"cout":0.1,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Frequente","frequence":18},{"milieu":"Villes","rarete":"Rare","frequence":6}],"equipe":false,"resistance":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206024,"modifiedTime":1676074487966,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"PaJoTirnA6h4F3pH","name":"Hameçon","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/hame%C3%A7on.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.PaJoTirnA6h4F3pH"}},"system":{"description":"","descriptionmj":"","encombrement":0.01,"quantite":1,"qualite":0,"cout":0.1,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Frequente","frequence":18},{"milieu":"Villes","rarete":"Rare","frequence":6}],"equipe":false,"resistance":1},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206024,"modifiedTime":1676074487966,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"PkDJ36j7mS3Kfetp","name":"Bouteille de grès (1 litre)","type":"conteneur","img":"systems/foundryvtt-reve-de-dragon/icons/objets/bouteille_gres.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.PkDJ36j7mS3Kfetp"}},"system":{"description":"","descriptionmj":"","encombrement":0.3,"quantite":1,"qualite":0,"cout":0.4,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Rare","frequence":6},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"contenu":[],"capacite":0.5,"equipe":false},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206024,"modifiedTime":1676074487967,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"PrnJrG50u1UPdlJN","name":"Liqueur de Bagdol","type":"potion","img":"systems/foundryvtt-reve-de-dragon/icons/objets/liqueur_de_bagdol.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.PrnJrG50u1UPdlJN"}},"system":{"description":"<p>Fluide. Liquide noir et odorant.</p>","descriptionmj":"","encombrement":0.1,"quantite":1,"qualite":0,"cout":0.5,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Rarissime","frequence":2},{"milieu":"Villes","rarete":"Rare","frequence":6}],"temporel":{"debut":{"indexDate":-1,"indexMinute":0},"fin":{"indexDate":-1,"indexMinute":0}},"rarete":"","categorie":"Remede","herbe":"","herbebrins":0,"herbebonus":0,"reposalchimique":false,"pr":0,"prpermanent":false,"prdate":0,"soinherbe":"","soinherbebonus":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206024,"modifiedTime":1676074487967,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"PuuPn6WGfU8uBAyb","name":"Robe de soie","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/robe_soie.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.PuuPn6WGfU8uBAyb"}},"system":{"description":"","descriptionmj":"","encombrement":0,"quantite":1,"qualite":0,"cout":10,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Rarissime","frequence":2},{"milieu":"Villes","rarete":"Rare","frequence":6}],"equipe":false,"resistance":0},"ownership":{"default":0,"jOzRscDxoXZWpGS6":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206024,"modifiedTime":1676074487967,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"PuuPn6WGfU8uBAyb","name":"Robe de soie","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/robe_soie.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.PuuPn6WGfU8uBAyb"}},"system":{"description":"","descriptionmj":"","encombrement":0,"quantite":1,"qualite":0,"cout":10,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Rarissime","frequence":2},{"milieu":"Villes","rarete":"Rare","frequence":6}],"equipe":false,"resistance":1},"ownership":{"default":0,"jOzRscDxoXZWpGS6":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206024,"modifiedTime":1676074487967,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"Qh4Tp7lZ6wLnX4w0","name":"Bâton","type":"arme","img":"systems/foundryvtt-reve-de-dragon/icons/armes_armures/baton.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.Qh4Tp7lZ6wLnX4w0"}},"system":{"description":"","descriptionmj":"","equipe":false,"encombrement":2,"quantite":1,"qualite":0,"cout":0.5,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Commune","frequence":54},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"resistance":8,"categorie_parade":"","dommages":"1","penetration":0,"force":"9","competence":"Masse à 2 mains","lancer":"","tir":"","portee_courte":0,"portee_moyenne":0,"portee_extreme":0,"magique":false,"ecaille_efficacite":null,"resistance_magique":null,"rapide":false,"deuxmains":true,"unemain":false,"initpremierround":"baton"},"ownership":{"default":0,"Q4cUvqxCxMoTJXDL":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206024,"modifiedTime":1676074487967,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"RKr1ZhTvC6poiNa1","name":"Gros Clou","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/gros_clou.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.RKr1ZhTvC6poiNa1"}},"system":{"description":"","descriptionmj":"","encombrement":0.1,"quantite":1,"qualite":0,"cout":0.05,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Rare","frequence":6},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"equipe":false,"resistance":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206024,"modifiedTime":1676074487967,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"RNxCQWMDy06uQ8uj","name":"Ecuelle de fer","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/ecuelle_fer.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.RNxCQWMDy06uQ8uj"}},"system":{"description":"","descriptionmj":"","encombrement":0.1,"quantite":1,"qualite":0,"cout":0.15,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Rare","frequence":6},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"equipe":false,"resistance":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206024,"modifiedTime":1676074487967,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"RSni2r8jLccvkc9i","name":"Cristal alchimique","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/cristal_alchimique.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.RSni2r8jLccvkc9i"}},"system":{"description":"","descriptionmj":"","encombrement":0.09,"quantite":1,"qualite":0,"cout":4,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Rarissime","frequence":2},{"milieu":"Villes","rarete":"Rare","frequence":6}],"equipe":false,"resistance":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206024,"modifiedTime":1676074487967,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"RKr1ZhTvC6poiNa1","name":"Gros Clou","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/gros_clou.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.RKr1ZhTvC6poiNa1"}},"system":{"description":"","descriptionmj":"","encombrement":0.1,"quantite":1,"qualite":0,"cout":0.05,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Rare","frequence":6},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"equipe":false,"resistance":1},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206024,"modifiedTime":1676074487967,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"RNxCQWMDy06uQ8uj","name":"Ecuelle de fer","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/ecuelle_fer.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.RNxCQWMDy06uQ8uj"}},"system":{"description":"","descriptionmj":"","encombrement":0.1,"quantite":1,"qualite":0,"cout":0.15,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Rare","frequence":6},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"equipe":false,"resistance":1},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206024,"modifiedTime":1676074487967,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"RSni2r8jLccvkc9i","name":"Cristal alchimique","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/cristal_alchimique.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.RSni2r8jLccvkc9i"}},"system":{"description":"","descriptionmj":"","encombrement":0.09,"quantite":1,"qualite":0,"cout":4,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Rarissime","frequence":2},{"milieu":"Villes","rarete":"Rare","frequence":6}],"equipe":false,"resistance":1},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206024,"modifiedTime":1676074487967,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"RWYaq8tnpgrkh5ED","name":"Flacon de grès (40 cl)","type":"conteneur","img":"systems/foundryvtt-reve-de-dragon/icons/objets/flacon_gres1.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.RWYaq8tnpgrkh5ED"}},"system":{"description":"","descriptionmj":"","encombrement":0.2,"quantite":1,"qualite":0,"cout":0.15,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Frequente","frequence":18},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"contenu":[],"capacite":0.2,"equipe":false},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206025,"modifiedTime":1676074487967,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"name":"Herbe à pipe","type":"herbe","img":"systems/foundryvtt-reve-de-dragon/icons/botanique/Endorlotte.webp","system":{"description":"","descriptionmj":"","encombrement":0,"quantite":1,"qualite":0.01,"cout":0.01,"milieu":"","environnement":[],"sust":0,"exotisme":0,"niveau":0,"base":0,"categorie":"Autre"},"effects":[],"flags":{"core":{"sourceId":"Item.wxmHkhTTzPNepN4d"}},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1676073283027,"modifiedTime":1676074487920,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"},"folder":null,"sort":0,"ownership":{"default":0,"Hp9ImM4o9YRTSdfu":3},"_id":"RcfER27g7gX4YGFd"}
{"_id":"Reqo8GC9p7GI9k9N","name":"Chope de grès (20 cl)","type":"conteneur","img":"systems/foundryvtt-reve-de-dragon/icons/objets/chope_gres.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.Reqo8GC9p7GI9k9N"}},"system":{"description":"","descriptionmj":"","encombrement":0.1,"quantite":1,"qualite":0,"cout":0.1,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Commune","frequence":54},{"milieu":"Villes","rarete":"Commune","frequence":54}],"contenu":[],"capacite":0.1,"equipe":false},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206025,"modifiedTime":1676074487967,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"Ri5QtS98FTfgHk2N","name":"Javeline","type":"arme","img":"systems/foundryvtt-reve-de-dragon/icons/armes_armures/javeline.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.Ri5QtS98FTfgHk2N"}},"system":{"description":"","descriptionmj":"","equipe":false,"encombrement":1,"quantite":1,"qualite":0,"cout":1,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Frequente","frequence":18},{"milieu":"Villes","rarete":"Rare","frequence":6}],"resistance":5,"categorie_parade":"lances","dommages":"1","penetration":0,"force":"7","competence":"Lance","lancer":"Javelot","tir":"","portee_courte":6,"portee_moyenne":12,"portee_extreme":20,"magique":false,"ecaille_efficacite":0,"resistance_magique":0,"rapide":true,"deuxmains":false,"unemain":true,"initpremierround":"hast"},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206025,"modifiedTime":1676074487967,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"Ro5cOOtLLB0lMlzl","name":"Javelot","type":"arme","img":"systems/foundryvtt-reve-de-dragon/icons/objets/javelot.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.Ro5cOOtLLB0lMlzl"}},"system":{"description":"<p>Chaque point de force au dessus de 10 augmente les port&eacute;es de 1m.</p>\n<p>Chaque point de force en dessous de 9 diminue les port&eacute;es de 1m.</p>","descriptionmj":"","equipe":false,"encombrement":1,"quantite":1,"qualite":0,"cout":1,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Frequente","frequence":18},{"milieu":"Villes","rarete":"Rare","frequence":6}],"resistance":0,"categorie_parade":"lances","dommages":"1","penetration":0,"force":"0","competence":"Lance","lancer":"Javelot","tir":"","portee_courte":6,"portee_moyenne":12,"portee_extreme":20,"magique":false,"ecaille_efficacite":0,"resistance_magique":0,"rapide":true,"deuxmains":false,"unemain":true,"initpremierround":"hast"},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206025,"modifiedTime":1676074487967,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"RyW0z9Y5UeZSYjFZ","name":"Savon 500g","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/savon.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.RyW0z9Y5UeZSYjFZ"}},"system":{"description":"","descriptionmj":"","encombrement":0.2,"quantite":1,"qualite":0,"cout":0.2,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Frequente","frequence":18},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"equipe":false,"resistance":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206025,"modifiedTime":1676074487967,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"Ro5cOOtLLB0lMlzl","name":"Javelot","type":"arme","img":"systems/foundryvtt-reve-de-dragon/icons/objets/javelot.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.Ro5cOOtLLB0lMlzl"}},"system":{"description":"<p>Chaque point de force au dessus de 10 augmente les port&eacute;es de 1m.</p>\n<p>Chaque point de force en dessous de 9 diminue les port&eacute;es de 1m.</p>","descriptionmj":"","equipe":false,"encombrement":1,"quantite":1,"qualite":0,"cout":1,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Frequente","frequence":18},{"milieu":"Villes","rarete":"Rare","frequence":6}],"resistance":1,"categorie_parade":"lances","dommages":"1","penetration":0,"force":"0","competence":"Lance","lancer":"Javelot","tir":"","portee_courte":6,"portee_moyenne":12,"portee_extreme":20,"magique":false,"ecaille_efficacite":0,"resistance_magique":0,"rapide":true,"deuxmains":false,"unemain":true,"initpremierround":"hast"},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206025,"modifiedTime":1676074487967,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"RyW0z9Y5UeZSYjFZ","name":"Savon 500g","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/savon.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.RyW0z9Y5UeZSYjFZ"}},"system":{"description":"","descriptionmj":"","encombrement":0.2,"quantite":1,"qualite":0,"cout":0.2,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Frequente","frequence":18},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"equipe":false,"resistance":1},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206025,"modifiedTime":1676074487967,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"S3bLtbXe6BzEFCjt","name":"Plaques de Fer","type":"armure","img":"systems/foundryvtt-reve-de-dragon/icons/armes_armures/armure_plaques.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.S3bLtbXe6BzEFCjt"}},"system":{"description":"<p>L'armure classique du chevalier. Armure complète de plaques (heaume, cuirasse, épaulières, cubitières, ventrière, cuissards, jambières).</p>\n<p>&nbsp;</p>","descriptionmj":"","equipe":false,"encombrement":8,"quantite":1,"qualite":0,"cout":100,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Rarissime","frequence":2},{"milieu":"Villes","rarete":"Rare","frequence":6}],"protection":"6","deterioration":0,"malus":-6},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206026,"modifiedTime":1676074487967,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"name":"Carreau d'arbalète","type":"munition","img":"systems/foundryvtt-reve-de-dragon/icons/objets/fleche.webp","system":{"description":"","descriptionmj":"","encombrement":0.1,"quantite":1,"qualite":0,"cout":0.1,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Frequente","frequence":18},{"milieu":"Villes","rarete":"Rare","frequence":6}]},"effects":[],"flags":{"core":{"sourceId":"Item.SHsq6zY7THX0pF0r"}},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1676067642744,"modifiedTime":1676074487967,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"},"_id":"SHsq6zY7THX0pF0r","folder":null,"sort":0,"ownership":{"default":0,"Hp9ImM4o9YRTSdfu":3}}
{"_id":"SZyBQbInuUGASlGb","name":"Tambourin","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/tambourin.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.SZyBQbInuUGASlGb"}},"system":{"description":"","descriptionmj":"","encombrement":0.1,"quantite":1,"qualite":0,"cout":0.5,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Frequente","frequence":18},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"equipe":false,"resistance":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206026,"modifiedTime":1676074487967,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"Sm28dG9isppoQzPQ","name":"Bas de lin","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/bas_lin.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.Sm28dG9isppoQzPQ"}},"system":{"description":"","descriptionmj":"","encombrement":0,"quantite":1,"qualite":0,"cout":0.3,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Commune","frequence":54},{"milieu":"Villes","rarete":"Commune","frequence":54}],"equipe":false,"resistance":0},"ownership":{"default":0,"jOzRscDxoXZWpGS6":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206026,"modifiedTime":1676074487967,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"SrV0r5hnGdKeSIHR","name":"Cuillère de bois","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/cuillere_bois.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.SrV0r5hnGdKeSIHR"}},"system":{"description":"","descriptionmj":"","encombrement":0.03,"quantite":1,"qualite":0,"cout":0.03,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Commune","frequence":54},{"milieu":"Villes","rarete":"Commune","frequence":54}],"equipe":false,"resistance":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206026,"modifiedTime":1676074487967,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"SsnGNjTekvB50uWa","name":"Chapeau de cuir souple","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/chapeau_cuir.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.SsnGNjTekvB50uWa"}},"system":{"description":"","descriptionmj":"","encombrement":0.08,"quantite":1,"qualite":0,"cout":0.5,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Frequente","frequence":18},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"equipe":false,"resistance":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206026,"modifiedTime":1676074487967,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"SZyBQbInuUGASlGb","name":"Tambourin","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/tambourin.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.SZyBQbInuUGASlGb"}},"system":{"description":"","descriptionmj":"","encombrement":0.1,"quantite":1,"qualite":0,"cout":0.5,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Frequente","frequence":18},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"equipe":false,"resistance":1},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206026,"modifiedTime":1676074487967,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"Sm28dG9isppoQzPQ","name":"Bas de lin","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/bas_lin.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.Sm28dG9isppoQzPQ"}},"system":{"description":"","descriptionmj":"","encombrement":0,"quantite":1,"qualite":0,"cout":0.3,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Commune","frequence":54},{"milieu":"Villes","rarete":"Commune","frequence":54}],"equipe":false,"resistance":1},"ownership":{"default":0,"jOzRscDxoXZWpGS6":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206026,"modifiedTime":1676074487967,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"SrV0r5hnGdKeSIHR","name":"Cuillère de bois","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/cuillere_bois.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.SrV0r5hnGdKeSIHR"}},"system":{"description":"","descriptionmj":"","encombrement":0.03,"quantite":1,"qualite":0,"cout":0.03,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Commune","frequence":54},{"milieu":"Villes","rarete":"Commune","frequence":54}],"equipe":false,"resistance":1},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206026,"modifiedTime":1676074487967,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"SsnGNjTekvB50uWa","name":"Chapeau de cuir souple","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/chapeau_cuir.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.SsnGNjTekvB50uWa"}},"system":{"description":"","descriptionmj":"","encombrement":0.08,"quantite":1,"qualite":0,"cout":0.5,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Frequente","frequence":18},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"equipe":false,"resistance":1},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206026,"modifiedTime":1676074487967,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"TKsUXJq9w7ezcFGQ","name":"Hache de bataille","type":"arme","img":"systems/foundryvtt-reve-de-dragon/icons/armes_armures/hache_bataille.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.TKsUXJq9w7ezcFGQ"}},"system":{"description":"","descriptionmj":"","equipe":false,"encombrement":2,"quantite":1,"qualite":0,"cout":15,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Frequente","frequence":18},{"milieu":"Villes","rarete":"Rare","frequence":6}],"resistance":8,"categorie_parade":"haches","dommages":"3/4","penetration":0,"force":"12/11","competence":"Hache à 1 main","lancer":"","tir":"","portee_courte":0,"portee_moyenne":0,"portee_extreme":0,"magique":false,"ecaille_efficacite":0,"resistance_magique":0,"rapide":false,"deuxmains":true,"unemain":true,"initpremierround":"hachebataille"},"ownership":{"default":0,"Q4cUvqxCxMoTJXDL":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206026,"modifiedTime":1676074487968,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"TY6Ft8a6WfxD6pD9","name":"Bobineau de fil","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/bobineau.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.TY6Ft8a6WfxD6pD9"}},"system":{"description":"","descriptionmj":"","encombrement":0.01,"quantite":1,"qualite":0,"cout":0.1,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Commune","frequence":54},{"milieu":"Villes","rarete":"Commune","frequence":54}],"equipe":false,"resistance":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206026,"modifiedTime":1676074487968,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"UDmq6CY3NsttcHe4","name":"Peigne en corne","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/peigne.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.UDmq6CY3NsttcHe4"}},"system":{"description":"","descriptionmj":"","encombrement":0.04,"quantite":1,"qualite":0,"cout":0.4,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Frequente","frequence":18},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"equipe":false,"resistance":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206026,"modifiedTime":1676074487968,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"TY6Ft8a6WfxD6pD9","name":"Bobineau de fil","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/bobineau.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.TY6Ft8a6WfxD6pD9"}},"system":{"description":"","descriptionmj":"","encombrement":0.01,"quantite":1,"qualite":0,"cout":0.1,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Commune","frequence":54},{"milieu":"Villes","rarete":"Commune","frequence":54}],"equipe":false,"resistance":1},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206026,"modifiedTime":1676074487968,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"UDmq6CY3NsttcHe4","name":"Peigne en corne","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/peigne.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.UDmq6CY3NsttcHe4"}},"system":{"description":"","descriptionmj":"","encombrement":0.04,"quantite":1,"qualite":0,"cout":0.4,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Frequente","frequence":18},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"equipe":false,"resistance":1},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206026,"modifiedTime":1676074487968,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"UE79xKWXTwYAn70K","name":"Arme dhast","type":"arme","img":"systems/foundryvtt-reve-de-dragon/icons/armes_armures/hast.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.UE79xKWXTwYAn70K"}},"system":{"description":"","descriptionmj":"","equipe":false,"encombrement":4,"quantite":1,"qualite":0,"cout":10,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Rare","frequence":6},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"resistance":8,"categorie_parade":"hast","dommages":"4","penetration":0,"force":"12","competence":"Armes d'hast","lancer":"","tir":"","portee_courte":0,"portee_moyenne":0,"portee_extreme":0,"magique":false,"ecaille_efficacite":null,"resistance_magique":null,"rapide":false,"deuxmains":true,"unemain":false,"initpremierround":"hast"},"ownership":{"default":0,"Q4cUvqxCxMoTJXDL":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206026,"modifiedTime":1676074487968,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"UICiMF3wBeLsqm8L","name":"Pipe en bois","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/pipe.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.UICiMF3wBeLsqm8L"}},"system":{"description":"","descriptionmj":"","encombrement":0.04,"quantite":1,"qualite":0,"cout":0.1,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Frequente","frequence":18},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"equipe":false,"resistance":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206026,"modifiedTime":1676074487968,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"UMfXFhVhdoVQVEKy","name":"Fronde","type":"arme","img":"systems/foundryvtt-reve-de-dragon/icons/objets/fronde.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.UMfXFhVhdoVQVEKy"}},"system":{"description":"<p>Peut tirer tous les rounds.</p>","descriptionmj":"","equipe":false,"encombrement":0.08,"quantite":1,"qualite":0,"cout":0.6,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Frequente","frequence":18},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"resistance":0,"categorie_parade":"","dommages":"1","penetration":0,"force":"0","competence":"","lancer":"","tir":"Fronde","portee_courte":8,"portee_moyenne":15,"portee_extreme":25,"magique":false,"ecaille_efficacite":0,"resistance_magique":0,"rapide":false,"deuxmains":false,"unemain":false,"initpremierround":"hast"},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206026,"modifiedTime":1676074487968,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"UICiMF3wBeLsqm8L","name":"Pipe en bois","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/pipe.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.UICiMF3wBeLsqm8L"}},"system":{"description":"","descriptionmj":"","encombrement":0.04,"quantite":1,"qualite":0,"cout":0.1,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Frequente","frequence":18},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"equipe":false,"resistance":1},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206026,"modifiedTime":1676074487968,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"UMfXFhVhdoVQVEKy","name":"Fronde","type":"arme","img":"systems/foundryvtt-reve-de-dragon/icons/objets/fronde.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.UMfXFhVhdoVQVEKy"}},"system":{"description":"<p>Peut tirer tous les rounds.</p>","descriptionmj":"","equipe":false,"encombrement":0.08,"quantite":1,"qualite":0,"cout":0.6,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Frequente","frequence":18},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"resistance":1,"categorie_parade":"","dommages":"1","penetration":0,"force":"0","competence":"","lancer":"","tir":"Fronde","portee_courte":8,"portee_moyenne":15,"portee_extreme":25,"magique":false,"ecaille_efficacite":0,"resistance_magique":0,"rapide":false,"deuxmains":false,"unemain":false,"initpremierround":"hast"},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206026,"modifiedTime":1676074487968,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"UYXXggulNwnodaOt","name":"Chope de fer (20 cl)","type":"conteneur","img":"systems/foundryvtt-reve-de-dragon/icons/objets/chope_fer.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.UYXXggulNwnodaOt"}},"system":{"description":"","descriptionmj":"","encombrement":0.08,"quantite":1,"qualite":0,"cout":0.15,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Rare","frequence":6},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"contenu":[],"capacite":0.1,"equipe":false},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206027,"modifiedTime":1676074487968,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"UczsYTAoP9koA2SL","name":"Bourse, sachet de tissu","type":"conteneur","img":"systems/foundryvtt-reve-de-dragon/icons/objets/bourse_sachet.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.UczsYTAoP9koA2SL"}},"system":{"description":"","descriptionmj":"","encombrement":0.01,"quantite":1,"qualite":0,"cout":0.05,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Commune","frequence":54},{"milieu":"Villes","rarete":"Commune","frequence":54}],"contenu":[],"capacite":0.3,"equipe":false},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206107,"modifiedTime":1676074487968,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"UsyV9n0byCeYirNC","name":"Esparlongue","type":"arme","img":"systems/foundryvtt-reve-de-dragon/icons/armes_armures/esparlongue.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.UsyV9n0byCeYirNC"}},"system":{"description":"<p>C&rsquo;est une &eacute;p&eacute;e semblable &agrave; la <em>rapi&egrave;re</em>, longue et ne frappant uniquement d&rsquo;estoc. Elle doit son nom &agrave; ce qu&rsquo;elle &eacute;tait particuli&egrave;rement en vogue, au Second &Acirc;ge, dans la cit&eacute; d&rsquo;Esparlongue. En ce d&eacute;but du Troisi&egrave;me &Acirc;ge, toutefois, on lui substitue le plus souvent la <strong>demi-dragonne</strong>, &eacute;p&eacute;e tr&egrave;s voisine, ne frappant pareillement que d&rsquo;estoc, mais plus r&eacute;sistante (r&eacute;sistance 10) et moins co&ucirc;teuse (15 sols) ; son bonus aux dommages (+2) est identique.</p>","descriptionmj":"","equipe":false,"encombrement":1.5,"quantite":1,"qualite":0,"cout":20,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Rare","frequence":6},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"resistance":9,"categorie_parade":"epees-longues","dommages":"2","penetration":0,"force":"10","competence":"Epée à 1 main","lancer":"","tir":"","portee_courte":0,"portee_moyenne":0,"portee_extreme":0,"magique":false,"ecaille_efficacite":0,"resistance_magique":0,"rapide":true,"deuxmains":false,"unemain":true,"initpremierround":"esparlongue"},"ownership":{"default":0,"Q4cUvqxCxMoTJXDL":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206107,"modifiedTime":1676074487968,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"Uxk2tvEqtrmYScjK","name":"Pot à braise","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/pot_a_braise.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.Uxk2tvEqtrmYScjK"}},"system":{"description":"","descriptionmj":"","encombrement":0.1,"quantite":1,"qualite":0,"cout":0.2,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Frequente","frequence":18},{"milieu":"Villes","rarete":"Rare","frequence":6}],"equipe":false,"resistance":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206107,"modifiedTime":1676074487968,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"VsjRwh9Z9PMpFKdI","name":"Craie 1 bâton","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/craie.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.VsjRwh9Z9PMpFKdI"}},"system":{"description":"","descriptionmj":"","encombrement":0.01,"quantite":1,"qualite":0,"cout":0.01,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Frequente","frequence":18},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"equipe":false,"resistance":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206107,"modifiedTime":1676074487968,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"Uxk2tvEqtrmYScjK","name":"Pot à braise","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/pot_a_braise.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.Uxk2tvEqtrmYScjK"}},"system":{"description":"","descriptionmj":"","encombrement":0.1,"quantite":1,"qualite":0,"cout":0.2,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Frequente","frequence":18},{"milieu":"Villes","rarete":"Rare","frequence":6}],"equipe":false,"resistance":1},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206107,"modifiedTime":1676074487968,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"VsjRwh9Z9PMpFKdI","name":"Craie 1 bâton","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/craie.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.VsjRwh9Z9PMpFKdI"}},"system":{"description":"","descriptionmj":"","encombrement":0.01,"quantite":1,"qualite":0,"cout":0.01,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Frequente","frequence":18},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"equipe":false,"resistance":1},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206107,"modifiedTime":1676074487968,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"WC1jMDKcxEJQWGOR","name":"Burette de fer blanc (40 cl)","type":"conteneur","img":"systems/foundryvtt-reve-de-dragon/icons/objets/burette.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.WC1jMDKcxEJQWGOR"}},"system":{"description":"","descriptionmj":"","encombrement":0.2,"quantite":1,"qualite":0,"cout":0.5,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Rare","frequence":6},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"contenu":[],"capacite":0.2,"equipe":false},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206107,"modifiedTime":1676074487968,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"WTHZdtgf6lHUSKDx","name":"Fouet","type":"arme","img":"systems/foundryvtt-reve-de-dragon/icons/objets/fouet.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.WTHZdtgf6lHUSKDx"}},"system":{"description":"<p>Provoque des d&eacute;g&acirc;ts \"non mortels\".</p>\n<p>Les armures sont major&eacute;es de 2.</p>\n<p>Si la protection atteint une valeur de 5 ou plus, le fouet ne peut causer de d&eacute;g&acirc;t.</p>","descriptionmj":"","equipe":false,"encombrement":0.5,"quantite":1,"qualite":0,"cout":1,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Frequente","frequence":18},{"milieu":"Villes","rarete":"Rare","frequence":6}],"resistance":0,"categorie_parade":"","dommages":"1","penetration":-1,"force":"0","competence":"","lancer":"Fouet","tir":"","portee_courte":2,"portee_moyenne":2,"portee_extreme":3,"magique":false,"ecaille_efficacite":0,"resistance_magique":0,"rapide":false,"deuxmains":false,"unemain":false,"initpremierround":"hast"},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206107,"modifiedTime":1676074487968,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"WTHZdtgf6lHUSKDx","name":"Fouet","type":"arme","img":"systems/foundryvtt-reve-de-dragon/icons/objets/fouet.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.WTHZdtgf6lHUSKDx"}},"system":{"description":"<p>Provoque des d&eacute;g&acirc;ts \"non mortels\".</p>\n<p>Les armures sont major&eacute;es de 2.</p>\n<p>Si la protection atteint une valeur de 5 ou plus, le fouet ne peut causer de d&eacute;g&acirc;t.</p>","descriptionmj":"","equipe":false,"encombrement":0.5,"quantite":1,"qualite":0,"cout":1,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Frequente","frequence":18},{"milieu":"Villes","rarete":"Rare","frequence":6}],"resistance":1,"categorie_parade":"","dommages":"1","penetration":-1,"force":"0","competence":"","lancer":"Fouet","tir":"","portee_courte":2,"portee_moyenne":2,"portee_extreme":3,"magique":false,"ecaille_efficacite":0,"resistance_magique":0,"rapide":false,"deuxmains":false,"unemain":false,"initpremierround":"hast"},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206107,"modifiedTime":1676074487968,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"WTWXZeoK5HpCrGFy","name":"Hachette","type":"arme","img":"systems/foundryvtt-reve-de-dragon/icons/objets/hachette.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.WTWXZeoK5HpCrGFy"}},"system":{"description":"","descriptionmj":"","equipe":false,"encombrement":1,"quantite":1,"qualite":0,"cout":4,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Commune","frequence":54},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"resistance":6,"categorie_parade":"haches","dommages":"2","penetration":0,"force":"8","competence":"Hache à 1 main","lancer":"","tir":"","portee_courte":0,"portee_moyenne":0,"portee_extreme":0,"magique":false,"ecaille_efficacite":null,"resistance_magique":null,"rapide":true,"deuxmains":false,"unemain":true,"initpremierround":"dague"},"ownership":{"default":0,"Q4cUvqxCxMoTJXDL":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206107,"modifiedTime":1676074487968,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"name":"Ciseau à bois","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/gouge.webp","effects":[],"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.cVZbnh5cYxBx6P5b"}},"system":{"description":"","descriptionmj":"","encombrement":0.2,"quantite":1,"qualite":0,"cout":0.3,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Frequente","frequence":18},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"equipe":false,"resistance":0},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206109,"modifiedTime":1676074352882,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"},"_id":"XEMiC8DxAZFjBj6g","folder":null,"sort":0,"ownership":{"default":0,"Hp9ImM4o9YRTSdfu":3}}
{"_id":"XTZVrcMNofAviP63","name":"Cire d'abeille 500g","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/cire.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.XTZVrcMNofAviP63"}},"system":{"description":"","descriptionmj":"","encombrement":0.2,"quantite":1,"qualite":0,"cout":0.15,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Frequente","frequence":18},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"equipe":false,"resistance":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206108,"modifiedTime":1676074487968,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"name":"Ciseau à bois","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/gouge.webp","effects":[],"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.cVZbnh5cYxBx6P5b"}},"system":{"description":"","descriptionmj":"","encombrement":0.2,"quantite":1,"qualite":0,"cout":0.3,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Frequente","frequence":18},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"equipe":false,"resistance":1},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206109,"modifiedTime":1676074352882,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"},"_id":"XEMiC8DxAZFjBj6g","folder":null,"sort":0,"ownership":{"default":0,"Hp9ImM4o9YRTSdfu":3}}
{"_id":"XTZVrcMNofAviP63","name":"Cire d'abeille 500g","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/cire.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.XTZVrcMNofAviP63"}},"system":{"description":"","descriptionmj":"","encombrement":0.2,"quantite":1,"qualite":0,"cout":0.15,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Frequente","frequence":18},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"equipe":false,"resistance":1},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206108,"modifiedTime":1676074487968,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"XlKp5BvZX8A03fUg","name":"Sac à dos de cuir","type":"conteneur","img":"systems/foundryvtt-reve-de-dragon/icons/objets/sac_a_dos.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.XlKp5BvZX8A03fUg"}},"system":{"description":"","descriptionmj":"","encombrement":0.4,"quantite":1,"qualite":0,"cout":1,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Frequente","frequence":18},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"contenu":[],"capacite":25,"equipe":false},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206108,"modifiedTime":1676074487968,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"XoslLyWIJYY2RGzz","name":"Fiole de verre (20 cl)","type":"conteneur","img":"systems/foundryvtt-reve-de-dragon/icons/objets/fiole_verre.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.XoslLyWIJYY2RGzz"}},"system":{"description":"","descriptionmj":"","encombrement":0.06,"quantite":1,"qualite":0,"cout":0.2,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Rare","frequence":6},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"contenu":[],"capacite":0.1,"equipe":false},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206108,"modifiedTime":1676074487968,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"XwuLVGasPJXzvC09","name":"Encre 20 cl","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/encre_20cl.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.XwuLVGasPJXzvC09"}},"system":{"description":"","descriptionmj":"","encombrement":0.1,"quantite":1,"qualite":0,"cout":0.1,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Rare","frequence":6},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"equipe":false,"resistance":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206108,"modifiedTime":1676074487968,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"XwuLVGasPJXzvC09","name":"Encre 20 cl","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/encre_20cl.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.XwuLVGasPJXzvC09"}},"system":{"description":"","descriptionmj":"","encombrement":0.1,"quantite":1,"qualite":0,"cout":0.1,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Rare","frequence":6},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"equipe":false,"resistance":1},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206108,"modifiedTime":1676074487968,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"YHPrUuGGGTGZMNAg","name":"Bière","type":"nourritureboisson","img":"systems/foundryvtt-reve-de-dragon/icons/liquides/liquide_biere.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Item.u7lMLkVlFCXBj8Bc"}},"system":{"description":"<p>1 mesure (20cl) de bi&egrave;re.</p>","descriptionmj":"","encombrement":0.1,"quantite":1,"qualite":0,"cout":0.01,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Commune","frequence":54},{"milieu":"Villes","rarete":"Commune","frequence":54}],"sust":0,"exotisme":0,"cuisinier":"","boisson":true,"desaltere":0.8,"alcoolise":true,"force":-1,"equipe":false},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206108,"modifiedTime":1676074487968,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"YNbbSGLnexiXNyXU","name":"Manteau de laine","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/manteau_laine.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.YNbbSGLnexiXNyXU"}},"system":{"description":"","descriptionmj":"","encombrement":0.8,"quantite":1,"qualite":0,"cout":0.6,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Frequente","frequence":18},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"equipe":false,"resistance":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206108,"modifiedTime":1676074487969,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"YNbbSGLnexiXNyXU","name":"Manteau de laine","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/manteau_laine.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.YNbbSGLnexiXNyXU"}},"system":{"description":"","descriptionmj":"","encombrement":0.8,"quantite":1,"qualite":0,"cout":0.6,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Frequente","frequence":18},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"equipe":false,"resistance":1},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206108,"modifiedTime":1676074487969,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"Yh7VGX3BikmIjVQH","name":"Gourdin","type":"arme","img":"systems/foundryvtt-reve-de-dragon/icons/armes_armures/gourdin.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.Yh7VGX3BikmIjVQH"}},"system":{"description":"","descriptionmj":"","equipe":false,"encombrement":1,"quantite":1,"qualite":0,"cout":0,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Commune","frequence":54},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"resistance":8,"categorie_parade":"","dommages":"1","penetration":0,"force":"7","competence":"Masse à 1 main","lancer":"","tir":"","portee_courte":0,"portee_moyenne":0,"portee_extreme":0,"magique":false,"ecaille_efficacite":0,"resistance_magique":0,"rapide":true,"deuxmains":false,"unemain":true,"initpremierround":"gourdin"},"ownership":{"default":0,"Q4cUvqxCxMoTJXDL":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206108,"modifiedTime":1676074487969,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"Yyn39VDRnO6oA3Uq","name":"Echecs draconics en bois","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/echecs.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.Yyn39VDRnO6oA3Uq"}},"system":{"description":"","descriptionmj":"","encombrement":0.5,"quantite":1,"qualite":0,"cout":2,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Rare","frequence":6},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"equipe":false,"resistance":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206108,"modifiedTime":1676074487969,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"Yyn39VDRnO6oA3Uq","name":"Echecs draconics en bois","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/echecs.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.Yyn39VDRnO6oA3Uq"}},"system":{"description":"","descriptionmj":"","encombrement":0.5,"quantite":1,"qualite":0,"cout":2,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Rare","frequence":6},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"equipe":false,"resistance":1},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206108,"modifiedTime":1676074487969,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"Z0ij7qpoYeWMVocP","name":"Ceinturon de cuir","type":"conteneur","img":"systems/foundryvtt-reve-de-dragon/icons/objets/ceinturon.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.Z0ij7qpoYeWMVocP"}},"system":{"description":"","descriptionmj":"","encombrement":0.1,"quantite":1,"qualite":0,"cout":0.5,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Frequente","frequence":18},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"contenu":[],"capacite":6,"equipe":false},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206108,"modifiedTime":1676074487969,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"ZLda3pfrbiKucSea","name":"Cornebouffe","type":"nourritureboisson","img":"systems/foundryvtt-reve-de-dragon/icons/objets/cornebouffe.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Item.NuwD0kiJyoqevKib"}},"system":{"description":"<p><span class=\"fontstyle0\">La cornebouffe est une pr&eacute;paration &agrave; base de gibier, &eacute;labor&eacute;e dans les for&ecirc;ts proches de la mer par des chasseurs sp&eacute;cialis&eacute;s : les </span><span class=\"fontstyle2\">cornebouffiers</span><span class=\"fontstyle0\">. Achemin&eacute;e vers les ports, principaux consommateurs, elle constitue l&rsquo;aliment de base de la plupart des marins.</span></p>\n<p><span class=\"fontstyle0\">Certains voyageurs qui l&rsquo;ont exp&eacute;riment&eacute;e et en ont accept&eacute; l&rsquo;exotisme, en&nbsp; transportent parfois en cas de disette. Pratiquement, il s&rsquo;agit de gibier&nbsp; r&eacute;f&eacute;rentiellement cornu (bramart, cornicochon, mercureuil), que l&rsquo;on cuit et recuit dans de l&rsquo;eau de mer avec des herbes, jusqu&rsquo;&agrave; obtenir une p&acirc;te, sorte de mastic, que l&rsquo;on fa&ccedil;onne en forme de galettes, puis que l&rsquo;on laisse longuement s&eacute;cher au soleil. On aboutit au final &agrave; des sortes de petites briques plates, de la taille d&rsquo;une demi-main, de couleur vert-de-gris, et &agrave; peu pr&egrave;s aussi dures que les briques v&eacute;ritables. La meilleure fa&ccedil;on de consommer ces galettes est de les r&eacute;hydrater avec de l&rsquo;eau chaude, c&rsquo;est la fa&ccedil;on dite </span><span class=\"fontstyle2\">soup&eacute;e </span><span class=\"fontstyle0\">: on obtient une sorte de soupe ou de bouillie gluante. L&rsquo;autre fa&ccedil;on, dite s&egrave;che, consiste &agrave; les grignoter telles quelles comme des biscuits, mais il est imp&eacute;ratif de boire beaucoup par dessus, sous peine d&rsquo;une soif torride accompagn&eacute;e de maux d&rsquo;estomac.</span></p>\n<p><span class=\"fontstyle0\">L&eacute;g&egrave;re, peu encombrante, et surtout nourrissante, une galette de cornebouffe suffit pour un repas. Quant au go&ucirc;t, eh bien... ceux qui disent que, tant qu&rsquo;&agrave; y aller, autant manger directement des crottes de chien &agrave; la croque-au-sel, ne sont probablement que des enfants g&acirc;t&eacute;s et difficiles.</span></p>\n<p><span class=\"fontstyle0\">Aliment de longue conservation (pratiquement inalt&eacute;rable), la cornebouffe poss&egrave;de un des meilleurs rapports sustentation/encombrement.</span></p>","descriptionmj":"","encombrement":0.1,"quantite":1,"qualite":0,"cout":0.02,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Rare","frequence":6},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"sust":3,"exotisme":-2,"cuisinier":"","boisson":false,"desaltere":0,"alcoolise":false,"force":0,"equipe":false,"resistance":0},"ownership":{"default":0,"Q4cUvqxCxMoTJXDL":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206108,"modifiedTime":1676074487969,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"ZLda3pfrbiKucSea","name":"Cornebouffe","type":"nourritureboisson","img":"systems/foundryvtt-reve-de-dragon/icons/objets/cornebouffe.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Item.NuwD0kiJyoqevKib"}},"system":{"description":"<p><span class=\"fontstyle0\">La cornebouffe est une pr&eacute;paration &agrave; base de gibier, &eacute;labor&eacute;e dans les for&ecirc;ts proches de la mer par des chasseurs sp&eacute;cialis&eacute;s : les </span><span class=\"fontstyle2\">cornebouffiers</span><span class=\"fontstyle0\">. Achemin&eacute;e vers les ports, principaux consommateurs, elle constitue l&rsquo;aliment de base de la plupart des marins.</span></p>\n<p><span class=\"fontstyle0\">Certains voyageurs qui l&rsquo;ont exp&eacute;riment&eacute;e et en ont accept&eacute; l&rsquo;exotisme, en&nbsp; transportent parfois en cas de disette. Pratiquement, il s&rsquo;agit de gibier&nbsp; r&eacute;f&eacute;rentiellement cornu (bramart, cornicochon, mercureuil), que l&rsquo;on cuit et recuit dans de l&rsquo;eau de mer avec des herbes, jusqu&rsquo;&agrave; obtenir une p&acirc;te, sorte de mastic, que l&rsquo;on fa&ccedil;onne en forme de galettes, puis que l&rsquo;on laisse longuement s&eacute;cher au soleil. On aboutit au final &agrave; des sortes de petites briques plates, de la taille d&rsquo;une demi-main, de couleur vert-de-gris, et &agrave; peu pr&egrave;s aussi dures que les briques v&eacute;ritables. La meilleure fa&ccedil;on de consommer ces galettes est de les r&eacute;hydrater avec de l&rsquo;eau chaude, c&rsquo;est la fa&ccedil;on dite </span><span class=\"fontstyle2\">soup&eacute;e </span><span class=\"fontstyle0\">: on obtient une sorte de soupe ou de bouillie gluante. L&rsquo;autre fa&ccedil;on, dite s&egrave;che, consiste &agrave; les grignoter telles quelles comme des biscuits, mais il est imp&eacute;ratif de boire beaucoup par dessus, sous peine d&rsquo;une soif torride accompagn&eacute;e de maux d&rsquo;estomac.</span></p>\n<p><span class=\"fontstyle0\">L&eacute;g&egrave;re, peu encombrante, et surtout nourrissante, une galette de cornebouffe suffit pour un repas. Quant au go&ucirc;t, eh bien... ceux qui disent que, tant qu&rsquo;&agrave; y aller, autant manger directement des crottes de chien &agrave; la croque-au-sel, ne sont probablement que des enfants g&acirc;t&eacute;s et difficiles.</span></p>\n<p><span class=\"fontstyle0\">Aliment de longue conservation (pratiquement inalt&eacute;rable), la cornebouffe poss&egrave;de un des meilleurs rapports sustentation/encombrement.</span></p>","descriptionmj":"","encombrement":0.1,"quantite":1,"qualite":0,"cout":0.02,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Rare","frequence":6},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"sust":3,"exotisme":-2,"cuisinier":"","boisson":false,"desaltere":0,"alcoolise":false,"force":0,"equipe":false,"resistance":1},"ownership":{"default":0,"Q4cUvqxCxMoTJXDL":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206108,"modifiedTime":1676074487969,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"ZaAKf4n8mtevbMM0","name":"Hydromel","type":"nourritureboisson","img":"systems/foundryvtt-reve-de-dragon/icons/liquides/liquide_biere.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.ZaAKf4n8mtevbMM0"}},"system":{"description":"","descriptionmj":"","encombrement":0.1,"quantite":1,"qualite":0,"cout":0.04,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Frequente","frequence":18},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"sust":0,"exotisme":0,"cuisinier":"","boisson":true,"desaltere":0.6,"alcoolise":true,"force":-4},"ownership":{"default":0,"wYnBx3HmLfGzsj7P":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206109,"modifiedTime":1676074487969,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"a3Wj2WNKFrzqRGVG","name":"Chemise de soie","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/chemise_soie.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.a3Wj2WNKFrzqRGVG"}},"system":{"description":"","descriptionmj":"","encombrement":0,"quantite":1,"qualite":0,"cout":6,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Rarissime","frequence":2},{"milieu":"Villes","rarete":"Rare","frequence":6}],"equipe":false,"resistance":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206109,"modifiedTime":1676074487969,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"a3Wj2WNKFrzqRGVG","name":"Chemise de soie","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/chemise_soie.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.a3Wj2WNKFrzqRGVG"}},"system":{"description":"","descriptionmj":"","encombrement":0,"quantite":1,"qualite":0,"cout":6,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Rarissime","frequence":2},{"milieu":"Villes","rarete":"Rare","frequence":6}],"equipe":false,"resistance":1},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206109,"modifiedTime":1676074487969,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"b0f08L5CDeFIMluC","name":"Cuir Souple","type":"armure","img":"systems/foundryvtt-reve-de-dragon/icons/armes_armures/cuir_souple.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.b0f08L5CDeFIMluC"}},"system":{"description":"<p>Même épaisseur que nos modernes blousons de cuir. Pourpoint ou cotte de cuir souple + culottes de cuir souple + bottes de cuir souple.</p>\n<p>&nbsp;</p>","descriptionmj":"","equipe":false,"encombrement":0,"quantite":1,"qualite":0,"cout":6,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Frequente","frequence":18},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"protection":2,"deterioration":0,"malus":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206109,"modifiedTime":1676074487969,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"bA0JDA7awoWhu0vO","name":"Teinture d'Erozonne","type":"potion","img":"systems/foundryvtt-reve-de-dragon/icons/objets/teinture_erozonne.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.bA0JDA7awoWhu0vO"}},"system":{"description":"<p>Fluide.&nbsp;</p>\n<p>Liquide ros&acirc;tre.</p>","descriptionmj":"","encombrement":0.1,"quantite":1,"qualite":0,"cout":2,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Rarissime","frequence":2},{"milieu":"Villes","rarete":"Rare","frequence":6}],"temporel":{"debut":{"indexDate":-1,"indexMinute":0},"fin":{"indexDate":-1,"indexMinute":0}},"rarete":"","categorie":"Remede","herbe":"","herbebrins":0,"herbebonus":0,"reposalchimique":false,"pr":0,"prpermanent":false,"prdate":0,"soinherbe":"","soinherbebonus":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206109,"modifiedTime":1676074487969,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"beQ9d4QQwZDQl5NA","name":"Flûte à bec","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/flute_bec.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.beQ9d4QQwZDQl5NA"}},"system":{"description":"","descriptionmj":"","encombrement":0.09,"quantite":1,"qualite":0,"cout":1,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Commune","frequence":54},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"equipe":false,"resistance":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206109,"modifiedTime":1676074487969,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"cVZbnh5cYxBx6P5b","name":"Burin","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/gouge.webp","effects":[],"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.cVZbnh5cYxBx6P5b"}},"system":{"description":"","descriptionmj":"","encombrement":0.2,"quantite":1,"qualite":0,"cout":0.3,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Frequente","frequence":18},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"equipe":false,"resistance":0},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206109,"modifiedTime":1676074398967,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"},"folder":null,"sort":0,"ownership":{"default":0,"Hp9ImM4o9YRTSdfu":3}}
{"name":"Viole","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/luth.webp","effects":[],"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.bgkEBYUEFLvAaeVf"}},"system":{"description":"","descriptionmj":"","encombrement":1,"quantite":1,"qualite":0,"cout":7,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Rare","frequence":6},{"milieu":"Villes","rarete":"Rare","frequence":6}],"equipe":false,"resistance":0},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206109,"modifiedTime":1676074487920,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"},"folder":null,"sort":0,"ownership":{"default":0,"Hp9ImM4o9YRTSdfu":3},"_id":"cbwLXpLTEtywFT6b"}
{"_id":"ckKnviu9SHvWgya0","name":"Bougie de cire (2 heures)","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/bougie.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.ckKnviu9SHvWgya0"}},"system":{"description":"","descriptionmj":"","encombrement":0.1,"quantite":1,"qualite":0,"cout":0.05,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Commune","frequence":54},{"milieu":"Villes","rarete":"Commune","frequence":54}],"equipe":false,"resistance":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206109,"modifiedTime":1676074487969,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"cobfvOmFpti5lJuK","name":"Chemise de lin","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/chemise_lin.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.cobfvOmFpti5lJuK"}},"system":{"description":"","descriptionmj":"","encombrement":0,"quantite":1,"qualite":0,"cout":0.3,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Commune","frequence":54},{"milieu":"Villes","rarete":"Commune","frequence":54}],"equipe":false,"resistance":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206109,"modifiedTime":1676074487969,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"dBR6KXvfmjjIcwsc","name":"Pilon en marbre","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/pilon.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.dBR6KXvfmjjIcwsc"}},"system":{"description":"","descriptionmj":"","encombrement":0.1,"quantite":1,"qualite":0,"cout":0.2,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Rare","frequence":6},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"equipe":false,"resistance":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206110,"modifiedTime":1676074487969,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"beQ9d4QQwZDQl5NA","name":"Flûte à bec","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/flute_bec.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.beQ9d4QQwZDQl5NA"}},"system":{"description":"","descriptionmj":"","encombrement":0.09,"quantite":1,"qualite":0,"cout":1,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Commune","frequence":54},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"equipe":false,"resistance":1},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206109,"modifiedTime":1676074487969,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"cVZbnh5cYxBx6P5b","name":"Burin","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/gouge.webp","effects":[],"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.cVZbnh5cYxBx6P5b"}},"system":{"description":"","descriptionmj":"","encombrement":0.2,"quantite":1,"qualite":0,"cout":0.3,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Frequente","frequence":18},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"equipe":false,"resistance":1},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206109,"modifiedTime":1676074398967,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"},"folder":null,"sort":0,"ownership":{"default":0,"Hp9ImM4o9YRTSdfu":3}}
{"name":"Viole","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/luth.webp","effects":[],"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.bgkEBYUEFLvAaeVf"}},"system":{"description":"","descriptionmj":"","encombrement":1,"quantite":1,"qualite":0,"cout":7,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Rare","frequence":6},{"milieu":"Villes","rarete":"Rare","frequence":6}],"equipe":false,"resistance":1},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206109,"modifiedTime":1676074487920,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"},"folder":null,"sort":0,"ownership":{"default":0,"Hp9ImM4o9YRTSdfu":3},"_id":"cbwLXpLTEtywFT6b"}
{"_id":"ckKnviu9SHvWgya0","name":"Bougie de cire (2 heures)","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/bougie.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.ckKnviu9SHvWgya0"}},"system":{"description":"","descriptionmj":"","encombrement":0.1,"quantite":1,"qualite":0,"cout":0.05,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Commune","frequence":54},{"milieu":"Villes","rarete":"Commune","frequence":54}],"equipe":false,"resistance":1},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206109,"modifiedTime":1676074487969,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"cobfvOmFpti5lJuK","name":"Chemise de lin","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/chemise_lin.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.cobfvOmFpti5lJuK"}},"system":{"description":"","descriptionmj":"","encombrement":0,"quantite":1,"qualite":0,"cout":0.3,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Commune","frequence":54},{"milieu":"Villes","rarete":"Commune","frequence":54}],"equipe":false,"resistance":1},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206109,"modifiedTime":1676074487969,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"dBR6KXvfmjjIcwsc","name":"Pilon en marbre","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/pilon.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.dBR6KXvfmjjIcwsc"}},"system":{"description":"","descriptionmj":"","encombrement":0.1,"quantite":1,"qualite":0,"cout":0.2,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Rare","frequence":6},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"equipe":false,"resistance":1},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206110,"modifiedTime":1676074487969,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"dLiMJO6aUkh0EuIZ","name":"Épée dragonne","type":"arme","img":"systems/foundryvtt-reve-de-dragon/icons/armes_armures/epee_dragonne.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.dLiMJO6aUkh0EuIZ"}},"system":{"description":"<p>C&rsquo;est une &eacute;p&eacute;e <em>longue</em>, plus robuste que l&rsquo;esparlongue, pouvant &eacute;galement frapper de taille.</p>","descriptionmj":"","equipe":false,"encombrement":2,"quantite":1,"qualite":0,"cout":20,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Rare","frequence":6},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"resistance":12,"categorie_parade":"epees-longues","dommages":"3","penetration":0,"force":"11","competence":"Epée à 1 main","lancer":"","tir":"","portee_courte":0,"portee_moyenne":0,"portee_extreme":0,"magique":false,"ecaille_efficacite":null,"resistance_magique":null,"rapide":true,"deuxmains":false,"unemain":true,"initpremierround":"epeedragonne"},"ownership":{"default":0,"Q4cUvqxCxMoTJXDL":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206110,"modifiedTime":1676074487969,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"eK28jEeQiJdd93L3","name":"Bouclier léger","type":"arme","img":"systems/foundryvtt-reve-de-dragon/icons/armes_armures/bouclier_petit.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.eK28jEeQiJdd93L3"}},"system":{"description":"","descriptionmj":"","equipe":false,"encombrement":1,"quantite":1,"qualite":0,"cout":4,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Frequente","frequence":18},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"resistance":13,"categorie_parade":"boucliers","dommages":"0","penetration":0,"force":"8","competence":"Bouclier","lancer":"","tir":"","portee_courte":0,"portee_moyenne":0,"portee_extreme":0,"magique":false,"ecaille_efficacite":null,"resistance_magique":null,"rapide":false,"deuxmains":false,"unemain":false,"initpremierround":"hast"},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206110,"modifiedTime":1676074487969,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"fAzYb7kkW6QxG6i6","name":"Graisse à Bottes 500g","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/graisse_a_cuir.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.fAzYb7kkW6QxG6i6"}},"system":{"description":"","descriptionmj":"","encombrement":0.2,"quantite":1,"qualite":0,"cout":0.3,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Frequente","frequence":18},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"equipe":false,"resistance":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206110,"modifiedTime":1676074487969,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"fAzYb7kkW6QxG6i6","name":"Graisse à Bottes 500g","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/graisse_a_cuir.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.fAzYb7kkW6QxG6i6"}},"system":{"description":"","descriptionmj":"","encombrement":0.2,"quantite":1,"qualite":0,"cout":0.3,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Frequente","frequence":18},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"equipe":false,"resistance":1},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206110,"modifiedTime":1676074487969,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"fDwsTMuug0Z5BdaA","name":"Cuir / Metal","type":"armure","img":"systems/foundryvtt-reve-de-dragon/icons/armes_armures/cuir_metal.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.fDwsTMuug0Z5BdaA"}},"system":{"description":"<p>Cuir épais clouté, ou petites plaquettes, écailles ou anneaux de fer cousus sur le cuir. Pectoral ou cotte de cuir/métal + jupon ou cuissards de cuir / métal sur culottes de cuir souple + bottes de cuir / métal + casque de métal.</p>\n<p>&nbsp;</p>","descriptionmj":"","equipe":false,"encombrement":4,"quantite":1,"qualite":0,"cout":20,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Rare","frequence":6},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"protection":"4","deterioration":0,"malus":-2},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206110,"modifiedTime":1676074487969,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"fLKFTvLWoj7juxQE","name":"Flèche","type":"munition","img":"systems/foundryvtt-reve-de-dragon/icons/objets/fleche.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Item.X4mih6UN2mWf7Ndr"}},"system":{"description":"","descriptionmj":"","encombrement":0.1,"quantite":1,"qualite":0,"cout":0.1,"milieu":"","environnement":[]},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1676067642744,"modifiedTime":1676074487970,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"fOfVLKBacNEsDBn1","name":"Brandevin","type":"nourritureboisson","img":"systems/foundryvtt-reve-de-dragon/icons/liquides/liquide_sang.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.fOfVLKBacNEsDBn1"}},"system":{"description":"<p>Dose de 10cl de Brandevin</p>","descriptionmj":"","encombrement":0.05,"quantite":1,"qualite":0,"cout":0.1,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Frequente","frequence":18},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"sust":0,"exotisme":0,"cuisinier":"","boisson":true,"desaltere":0.2,"alcoolise":true,"force":-5},"ownership":{"default":0,"wYnBx3HmLfGzsj7P":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206110,"modifiedTime":1676074487970,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"name":"Etain (1 denier)","type":"monnaie","img":"systems/foundryvtt-reve-de-dragon/icons/objets/piece_etain_poisson.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Item.UFCII7LUClrCWElV"}},"_id":"fhP2azbUBfmpF441","system":{"description":"","descriptionmj":"","encombrement":0.01,"quantite":0,"qualite":0,"cout":0.01,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Commune","frequence":54},{"milieu":"Villes","rarete":"Commune","frequence":54}]},"ownership":{"default":0,"jtRmvSuwkwMmIMf0":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206110,"modifiedTime":1676074487970,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"gfU7oZL1JYqF3lAW","name":"Robe de lin","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/robe_lin.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.gfU7oZL1JYqF3lAW"}},"system":{"description":"","descriptionmj":"","encombrement":0.1,"quantite":1,"qualite":0,"cout":0.6,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Frequente","frequence":18},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"equipe":false,"resistance":0},"ownership":{"default":0,"jOzRscDxoXZWpGS6":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206111,"modifiedTime":1676074487970,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"gmBC6SO3F5d64Vpl","name":"Miroir en cuivre poli 20 cm","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/miroir.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.gmBC6SO3F5d64Vpl"}},"system":{"description":"","descriptionmj":"","encombrement":0.2,"quantite":1,"qualite":0,"cout":1,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Rare","frequence":6},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"equipe":false,"resistance":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206111,"modifiedTime":1676074487970,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"gfU7oZL1JYqF3lAW","name":"Robe de lin","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/robe_lin.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.gfU7oZL1JYqF3lAW"}},"system":{"description":"","descriptionmj":"","encombrement":0.1,"quantite":1,"qualite":0,"cout":0.6,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Frequente","frequence":18},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"equipe":false,"resistance":1},"ownership":{"default":0,"jOzRscDxoXZWpGS6":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206111,"modifiedTime":1676074487970,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"gmBC6SO3F5d64Vpl","name":"Miroir en cuivre poli 20 cm","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/miroir.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.gmBC6SO3F5d64Vpl"}},"system":{"description":"","descriptionmj":"","encombrement":0.2,"quantite":1,"qualite":0,"cout":1,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Rare","frequence":6},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"equipe":false,"resistance":1},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206111,"modifiedTime":1676074487970,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"name":"Or (10 sols)","type":"monnaie","img":"systems/foundryvtt-reve-de-dragon/icons/objets/piece_or_sol.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Item.CmqfrDQgL61XIAqt"}},"_id":"gmbvvEx7hPrAy3zh","system":{"description":"","descriptionmj":"","encombrement":0.01,"quantite":0,"qualite":0,"cout":10,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Rare","frequence":6},{"milieu":"Villes","rarete":"Rare","frequence":6}]},"ownership":{"default":0,"jtRmvSuwkwMmIMf0":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206111,"modifiedTime":1676074487970,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"godMVR796aSUVjLu","name":"Fléau léger","type":"arme","img":"systems/foundryvtt-reve-de-dragon/icons/armes_armures/fleau_leger.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.godMVR796aSUVjLu"}},"system":{"description":"","descriptionmj":"","equipe":false,"encombrement":2,"quantite":1,"qualite":0,"cout":12,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Rare","frequence":6},{"milieu":"Villes","rarete":"Rare","frequence":6}],"resistance":10,"categorie_parade":"","dommages":"3","penetration":0,"force":"12","competence":"Fléau","lancer":"","tir":"","portee_courte":0,"portee_moyenne":0,"portee_extreme":0,"magique":false,"ecaille_efficacite":0,"resistance_magique":0,"rapide":false,"deuxmains":false,"unemain":true,"initpremierround":"fleau"},"ownership":{"default":0,"Q4cUvqxCxMoTJXDL":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206111,"modifiedTime":1676074487970,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"hEPimS3H8jihDuUS","name":"Crayon à mine de plomb","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/crayon_plomb.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.hEPimS3H8jihDuUS"}},"system":{"description":"","descriptionmj":"","encombrement":0.02,"quantite":1,"qualite":0,"cout":0.3,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Rare","frequence":6},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"equipe":false,"resistance":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206111,"modifiedTime":1676074487970,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"hEPimS3H8jihDuUS","name":"Crayon à mine de plomb","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/crayon_plomb.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.hEPimS3H8jihDuUS"}},"system":{"description":"","descriptionmj":"","encombrement":0.02,"quantite":1,"qualite":0,"cout":0.3,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Rare","frequence":6},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"equipe":false,"resistance":1},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206111,"modifiedTime":1676074487970,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"hVgd4APvAW8sbXf0","name":"Grande hache","type":"arme","img":"systems/foundryvtt-reve-de-dragon/icons/armes_armures/grande_hache.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.hVgd4APvAW8sbXf0"}},"system":{"description":"","descriptionmj":"","equipe":false,"encombrement":3,"quantite":1,"qualite":0,"cout":15,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Rare","frequence":6},{"milieu":"Villes","rarete":"Rare","frequence":6}],"resistance":8,"categorie_parade":"haches","dommages":"4","penetration":0,"force":"13","competence":"Hache à 2 mains","lancer":"","tir":"","portee_courte":0,"portee_moyenne":0,"portee_extreme":0,"magique":false,"ecaille_efficacite":0,"resistance_magique":0,"rapide":false,"deuxmains":true,"unemain":false,"initpremierround":"hast"},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206111,"modifiedTime":1676074487970,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"hjsIxUmanyz5otLJ","name":"Marmite de fer (3 litres)","type":"conteneur","img":"systems/foundryvtt-reve-de-dragon/icons/objets/marmite.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.hjsIxUmanyz5otLJ"}},"system":{"description":"","descriptionmj":"","encombrement":0.6,"quantite":1,"qualite":0,"cout":0.6,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Rare","frequence":6},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"contenu":[],"capacite":1.5,"equipe":false},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206111,"modifiedTime":1676074487970,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"htaHjhHwVhlBnZjv","name":"Fléau lourd","type":"arme","img":"systems/foundryvtt-reve-de-dragon/icons/armes_armures/fleau_lourd.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.htaHjhHwVhlBnZjv"}},"system":{"description":"","descriptionmj":"","equipe":false,"encombrement":3,"quantite":1,"qualite":0,"cout":15,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Rarissime","frequence":2},{"milieu":"Villes","rarete":"Rare","frequence":6}],"resistance":10,"categorie_parade":"","dommages":"4","penetration":0,"force":"13","competence":"Fléau","lancer":"","tir":"","portee_courte":0,"portee_moyenne":0,"portee_extreme":0,"magique":false,"ecaille_efficacite":0,"resistance_magique":0,"rapide":false,"deuxmains":false,"unemain":true,"initpremierround":"fleau"},"ownership":{"default":0,"Q4cUvqxCxMoTJXDL":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206111,"modifiedTime":1676074487970,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"huvZ4dMPpn9gk9km","name":"Sel","type":"objet","flags":{"core":{"sourceId":"Item.fLEyryhRi8Nw37SP"}},"img":"systems/foundryvtt-reve-de-dragon/icons/objets/sel.webp","effects":[],"system":{"description":"","descriptionmj":"","encombrement":0.01,"quantite":1,"qualite":0,"cout":null,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Frequente","frequence":18},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"equipe":false,"resistance":0},"ownership":{"default":0,"Q4cUvqxCxMoTJXDL":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206111,"modifiedTime":1676074487970,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"huvZ4dMPpn9gk9km","name":"Sel","type":"objet","flags":{"core":{"sourceId":"Item.fLEyryhRi8Nw37SP"}},"img":"systems/foundryvtt-reve-de-dragon/icons/objets/sel.webp","effects":[],"system":{"description":"","descriptionmj":"","encombrement":0.01,"quantite":1,"qualite":0,"cout":null,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Frequente","frequence":18},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"equipe":false,"resistance":1},"ownership":{"default":0,"Q4cUvqxCxMoTJXDL":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206111,"modifiedTime":1676074487970,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"iCvphbPdxUcfqetd","name":"Aumônière","type":"conteneur","img":"systems/foundryvtt-reve-de-dragon/icons/objets/aumoniere.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.iCvphbPdxUcfqetd"}},"system":{"description":"<p>Comme une bourse, mais sous forme d'une coque en cuir rigide.</p>","descriptionmj":"","encombrement":0,"quantite":1,"qualite":0,"cout":0.2,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Frequente","frequence":18},{"milieu":"Villes","rarete":"Commune","frequence":54}],"contenu":[],"capacite":0.25,"equipe":false},"ownership":{"default":0,"jOzRscDxoXZWpGS6":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206112,"modifiedTime":1676074487970,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"iGHudg5kBOfYWgwV","name":"Arc","type":"arme","img":"systems/foundryvtt-reve-de-dragon/icons/objets/arc.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.iGHudg5kBOfYWgwV"}},"system":{"description":"<p>Nie jusqu'&agrave; 2 points d'armure.</p>\n<p>Rechargement 1/2 round (s'il tire en d&eacute;but de round, il pourra recharger durant le reste du round pour tirer de nouveau au d&eacute;but du round suivant).</p>","descriptionmj":"","equipe":false,"encombrement":1,"quantite":1,"qualite":0,"cout":10,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Frequente","frequence":18},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"resistance":0,"categorie_parade":"","dommages":"2","penetration":2,"force":"0","competence":"","lancer":"","tir":"Arc","portee_courte":10,"portee_moyenne":20,"portee_extreme":50,"magique":false,"ecaille_efficacite":0,"resistance_magique":0,"rapide":false,"deuxmains":false,"unemain":false,"initpremierround":"hast"},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206112,"modifiedTime":1676074487971,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"iq8ZZgphxOUgC1bi","name":"Flûte traversière de roseau","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/flute_traversiere.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.iq8ZZgphxOUgC1bi"}},"system":{"description":"","descriptionmj":"","encombrement":0.08,"quantite":1,"qualite":0,"cout":0.12,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Commune","frequence":54},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"equipe":false,"resistance":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206112,"modifiedTime":1676074487971,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"iGHudg5kBOfYWgwV","name":"Arc","type":"arme","img":"systems/foundryvtt-reve-de-dragon/icons/objets/arc.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.iGHudg5kBOfYWgwV"}},"system":{"description":"<p>Nie jusqu'&agrave; 2 points d'armure.</p>\n<p>Rechargement 1/2 round (s'il tire en d&eacute;but de round, il pourra recharger durant le reste du round pour tirer de nouveau au d&eacute;but du round suivant).</p>","descriptionmj":"","equipe":false,"encombrement":1,"quantite":1,"qualite":0,"cout":10,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Frequente","frequence":18},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"resistance":1,"categorie_parade":"","dommages":"2","penetration":2,"force":"0","competence":"","lancer":"","tir":"Arc","portee_courte":10,"portee_moyenne":20,"portee_extreme":50,"magique":false,"ecaille_efficacite":0,"resistance_magique":0,"rapide":false,"deuxmains":false,"unemain":false,"initpremierround":"hast"},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206112,"modifiedTime":1676074487971,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"iq8ZZgphxOUgC1bi","name":"Flûte traversière de roseau","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/flute_traversiere.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.iq8ZZgphxOUgC1bi"}},"system":{"description":"","descriptionmj":"","encombrement":0.08,"quantite":1,"qualite":0,"cout":0.12,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Commune","frequence":54},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"equipe":false,"resistance":1},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206112,"modifiedTime":1676074487971,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"iss7ARW8oRoe1umi","name":"Eau","type":"nourritureboisson","img":"systems/foundryvtt-reve-de-dragon/icons/liquides/liquide_eau.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Item.DAFP7z5gzl1O3rCV"}},"system":{"description":"<p><span style=\"color: #191813; font-family: CaslonAntique; font-size: 16px; letter-spacing: 1px; text-align: justify; background-color: #f5f5f0;\">1 mesure (20cl) d'eau.</span></p>","descriptionmj":"","encombrement":0.1,"quantite":1,"qualite":0,"cout":0,"milieu":"","environnement":[{"milieu":"Cours d'eau","rarete":"Commune","frequence":54},{"milieu":"Villages","rarete":"Commune","frequence":54},{"milieu":"Villes","rarete":"Commune","frequence":54}],"sust":0,"exotisme":0,"cuisinier":"","boisson":true,"desaltere":1,"alcoolise":false,"force":0,"equipe":false},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206112,"modifiedTime":1676074487971,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"iuSOVPBsK8Zg6hoY","name":"1 m² de bâche","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/bache.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.iuSOVPBsK8Zg6hoY"}},"system":{"description":null,"descriptionmj":"","encombrement":0.5,"quantite":1,"qualite":0,"cout":0.2,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Frequente","frequence":18},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"equipe":false,"resistance":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206112,"modifiedTime":1676074487971,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"j9WpAl1SwHEovg3b","name":"Tresse de crin","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/tresse.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.j9WpAl1SwHEovg3b"}},"system":{"description":"","descriptionmj":"","encombrement":0.02,"quantite":1,"qualite":0,"cout":0.1,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Commune","frequence":54},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"equipe":false,"resistance":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206112,"modifiedTime":1676074487971,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"jHxnzdBSVzr7Z7wH","name":"Robe de velours","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/robe_velours.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.jHxnzdBSVzr7Z7wH"}},"system":{"description":"","descriptionmj":"","encombrement":0.3,"quantite":1,"qualite":0,"cout":10,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Rarissime","frequence":2},{"milieu":"Villes","rarete":"Rare","frequence":6}],"equipe":false,"resistance":0},"ownership":{"default":0,"jOzRscDxoXZWpGS6":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206112,"modifiedTime":1676074487971,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"iuSOVPBsK8Zg6hoY","name":"1 m² de bâche","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/bache.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.iuSOVPBsK8Zg6hoY"}},"system":{"description":null,"descriptionmj":"","encombrement":0.5,"quantite":1,"qualite":0,"cout":0.2,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Frequente","frequence":18},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"equipe":false,"resistance":1},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206112,"modifiedTime":1676074487971,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"j9WpAl1SwHEovg3b","name":"Tresse de crin","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/tresse.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.j9WpAl1SwHEovg3b"}},"system":{"description":"","descriptionmj":"","encombrement":0.02,"quantite":1,"qualite":0,"cout":0.1,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Commune","frequence":54},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"equipe":false,"resistance":1},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206112,"modifiedTime":1676074487971,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"jHxnzdBSVzr7Z7wH","name":"Robe de velours","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/robe_velours.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.jHxnzdBSVzr7Z7wH"}},"system":{"description":"","descriptionmj":"","encombrement":0.3,"quantite":1,"qualite":0,"cout":10,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Rarissime","frequence":2},{"milieu":"Villes","rarete":"Rare","frequence":6}],"equipe":false,"resistance":1},"ownership":{"default":0,"jOzRscDxoXZWpGS6":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206112,"modifiedTime":1676074487971,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"jKWA5NjsjH0kIZzK","name":"Chaudron de fer (5 litres)","type":"conteneur","img":"systems/foundryvtt-reve-de-dragon/icons/objets/chaudron.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.jKWA5NjsjH0kIZzK"}},"system":{"description":"","descriptionmj":"","encombrement":1,"quantite":1,"qualite":0,"cout":1,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Frequente","frequence":18},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"contenu":[],"capacite":2.5,"equipe":false},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206112,"modifiedTime":1676074487971,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"jZMfiBnBXwW91drM","name":"Sablier 15 minutes","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/sablier.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.jZMfiBnBXwW91drM"}},"system":{"description":"","descriptionmj":"","encombrement":0.1,"quantite":1,"qualite":0,"cout":2,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Rarissime","frequence":2},{"milieu":"Villes","rarete":"Rare","frequence":6}],"equipe":false,"resistance":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206112,"modifiedTime":1676074487971,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"jZMfiBnBXwW91drM","name":"Sablier 15 minutes","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/sablier.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.jZMfiBnBXwW91drM"}},"system":{"description":"","descriptionmj":"","encombrement":0.1,"quantite":1,"qualite":0,"cout":2,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Rarissime","frequence":2},{"milieu":"Villes","rarete":"Rare","frequence":6}],"equipe":false,"resistance":1},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206112,"modifiedTime":1676074487971,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"jchAu828fr8TLtwi","name":"Lait","type":"nourritureboisson","img":"systems/foundryvtt-reve-de-dragon/icons/liquides/liquide_lait.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Item.6i90SWaq5Me0us8X"}},"system":{"description":"","descriptionmj":"","encombrement":0.1,"quantite":1,"qualite":0,"cout":0.01,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Frequente","frequence":18},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"sust":0.2,"exotisme":0,"cuisinier":"","boisson":true,"desaltere":1,"alcoolise":false,"force":0,"equipe":false},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206113,"modifiedTime":1676074487971,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"jyBy6mDAGvJb9k0l","name":"1 m2 de lin","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/tissu_lin.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.jyBy6mDAGvJb9k0l"}},"system":{"description":"","descriptionmj":"","encombrement":0,"quantite":1,"qualite":0,"cout":0.15,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Commune","frequence":54},{"milieu":"Villes","rarete":"Commune","frequence":54}],"equipe":false,"resistance":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206113,"modifiedTime":1676074487971,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"jyBy6mDAGvJb9k0l","name":"1 m2 de lin","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/tissu_lin.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.jyBy6mDAGvJb9k0l"}},"system":{"description":"","descriptionmj":"","encombrement":0,"quantite":1,"qualite":0,"cout":0.15,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Commune","frequence":54},{"milieu":"Villes","rarete":"Commune","frequence":54}],"equipe":false,"resistance":1},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206113,"modifiedTime":1676074487971,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"kFUh4027jnAdqbyK","name":"Gelée royale","type":"potion","img":"systems/foundryvtt-reve-de-dragon/icons/objets/gelee_royale.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.kFUh4027jnAdqbyK"}},"system":{"description":"<p>Cr&egrave;me sirupeuse.</p>","descriptionmj":"","encombrement":0.1,"quantite":1,"qualite":0,"cout":0.2,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Rare","frequence":6},{"milieu":"Villes","rarete":"Rare","frequence":6}],"temporel":{"debut":{"indexDate":-1,"indexMinute":0},"fin":{"indexDate":-1,"indexMinute":0}},"rarete":"","categorie":"Remede","herbe":"","herbebrins":0,"herbebonus":0,"reposalchimique":false,"pr":0,"prpermanent":false,"prdate":0,"soinherbe":"","soinherbebonus":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206113,"modifiedTime":1676074487971,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"keLCmhsbxHK39UIy","name":"Mirobolant","type":"potion","img":"systems/foundryvtt-reve-de-dragon/icons/objets/mirobolant.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.keLCmhsbxHK39UIy"}},"system":{"description":"<p>Fluide.</p>\n<p>Liquide rouge&acirc;tre clair et sans d&eacute;pot.</p>","descriptionmj":"","encombrement":0.1,"quantite":1,"qualite":0,"cout":2,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Rarissime","frequence":2},{"milieu":"Villes","rarete":"Rare","frequence":6}],"temporel":{"debut":{"indexDate":-1,"indexMinute":0},"fin":{"indexDate":-1,"indexMinute":0}},"rarete":"","categorie":"Remede","herbe":"","herbebrins":0,"herbebonus":0,"reposalchimique":false,"pr":0,"prpermanent":false,"prdate":0,"soinherbe":"","soinherbebonus":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206113,"modifiedTime":1676074487971,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"lJMKVPB5zlG9UqMD","name":"Pourpoint de velours","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/pourpoint_velours.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.lJMKVPB5zlG9UqMD"}},"system":{"description":"","descriptionmj":"","encombrement":0.2,"quantite":1,"qualite":0,"cout":8,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Rarissime","frequence":2},{"milieu":"Villes","rarete":"Rare","frequence":6}],"equipe":false,"resistance":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206113,"modifiedTime":1676074487971,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"lKkYFkzWVs2TZDZP","name":"Petit pot de fard","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/fard.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.lKkYFkzWVs2TZDZP"}},"system":{"description":"","descriptionmj":"","encombrement":0.04,"quantite":1,"qualite":0,"cout":0.3,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Rare","frequence":6},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"equipe":false,"resistance":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206113,"modifiedTime":1676074487971,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"lOI2HVu3B6EDY4sE","name":"Arbalète","type":"arme","img":"systems/foundryvtt-reve-de-dragon/icons/objets/arbalete.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.lOI2HVu3B6EDY4sE"}},"system":{"description":"<p>Nie jusqu'&agrave; 2 points d'armure.</p>\n<p>Rechargement 1 round.</p>","descriptionmj":"","equipe":false,"encombrement":3,"quantite":1,"qualite":0,"cout":30,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Rare","frequence":6},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"resistance":0,"categorie_parade":"","dommages":"3","penetration":2,"force":"0","competence":"","lancer":"","tir":"Arbalète","portee_courte":15,"portee_moyenne":30,"portee_extreme":70,"magique":false,"ecaille_efficacite":0,"resistance_magique":0,"rapide":false,"deuxmains":false,"unemain":false,"initpremierround":"hast"},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206114,"modifiedTime":1676074487971,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"lq7pjDQESNbZOQ3n","name":"1 m2 de soie ou de velours","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/tissu_velours.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.lq7pjDQESNbZOQ3n"}},"system":{"description":"","descriptionmj":"","encombrement":0,"quantite":1,"qualite":0,"cout":3,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Rare","frequence":6},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"equipe":false,"resistance":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206114,"modifiedTime":1676074487971,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"lJMKVPB5zlG9UqMD","name":"Pourpoint de velours","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/pourpoint_velours.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.lJMKVPB5zlG9UqMD"}},"system":{"description":"","descriptionmj":"","encombrement":0.2,"quantite":1,"qualite":0,"cout":8,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Rarissime","frequence":2},{"milieu":"Villes","rarete":"Rare","frequence":6}],"equipe":false,"resistance":1},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206113,"modifiedTime":1676074487971,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"lKkYFkzWVs2TZDZP","name":"Petit pot de fard","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/fard.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.lKkYFkzWVs2TZDZP"}},"system":{"description":"","descriptionmj":"","encombrement":0.04,"quantite":1,"qualite":0,"cout":0.3,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Rare","frequence":6},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"equipe":false,"resistance":1},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206113,"modifiedTime":1676074487971,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"lOI2HVu3B6EDY4sE","name":"Arbalète","type":"arme","img":"systems/foundryvtt-reve-de-dragon/icons/objets/arbalete.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.lOI2HVu3B6EDY4sE"}},"system":{"description":"<p>Nie jusqu'&agrave; 2 points d'armure.</p>\n<p>Rechargement 1 round.</p>","descriptionmj":"","equipe":false,"encombrement":3,"quantite":1,"qualite":0,"cout":30,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Rare","frequence":6},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"resistance":1,"categorie_parade":"","dommages":"3","penetration":2,"force":"0","competence":"","lancer":"","tir":"Arbalète","portee_courte":15,"portee_moyenne":30,"portee_extreme":70,"magique":false,"ecaille_efficacite":0,"resistance_magique":0,"rapide":false,"deuxmains":false,"unemain":false,"initpremierround":"hast"},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206114,"modifiedTime":1676074487971,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"lq7pjDQESNbZOQ3n","name":"1 m2 de soie ou de velours","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/tissu_velours.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.lq7pjDQESNbZOQ3n"}},"system":{"description":"","descriptionmj":"","encombrement":0,"quantite":1,"qualite":0,"cout":3,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Rare","frequence":6},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"equipe":false,"resistance":1},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206114,"modifiedTime":1676074487971,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"m9yuZjp9DK7pSqPK","name":"Lanterne à bougie","type":"conteneur","img":"systems/foundryvtt-reve-de-dragon/icons/objets/lanterne_bougie.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.m9yuZjp9DK7pSqPK"}},"system":{"description":"","descriptionmj":"","encombrement":1,"quantite":1,"qualite":0,"cout":3,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Rare","frequence":6},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"contenu":[],"capacite":0.1,"equipe":false},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206114,"modifiedTime":1676074487971,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"n2HMv0xv0MFpuiKp","name":"Parchemin 1 feuille","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/parchemin_1_feuille.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.n2HMv0xv0MFpuiKp"}},"system":{"description":"","descriptionmj":"","encombrement":0.02,"quantite":1,"qualite":0,"cout":0.2,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Rare","frequence":6},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"equipe":false,"resistance":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206114,"modifiedTime":1676074487971,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"n2HMv0xv0MFpuiKp","name":"Parchemin 1 feuille","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/parchemin_1_feuille.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.n2HMv0xv0MFpuiKp"}},"system":{"description":"","descriptionmj":"","encombrement":0.02,"quantite":1,"qualite":0,"cout":0.2,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Rare","frequence":6},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"equipe":false,"resistance":1},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206114,"modifiedTime":1676074487971,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"nBhYyPbRwcWswiyC","name":"Tonnelet (10 litres)","type":"conteneur","img":"systems/foundryvtt-reve-de-dragon/icons/objets/tonnelet.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.nBhYyPbRwcWswiyC"}},"system":{"description":"","descriptionmj":"","encombrement":1,"quantite":1,"qualite":0,"cout":0.25,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Frequente","frequence":18},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"contenu":[],"capacite":5,"equipe":false},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206114,"modifiedTime":1676074487971,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"nPczxZ7yylpmGSyO","name":"Crochet de serrurier","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/crochet.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.nPczxZ7yylpmGSyO"}},"system":{"description":"","descriptionmj":"","encombrement":0.2,"quantite":1,"qualite":0,"cout":0.3,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Rarissime","frequence":2},{"milieu":"Villes","rarete":"Rare","frequence":6}],"equipe":false,"resistance":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206114,"modifiedTime":1676074487971,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"nl9cICrauIOEXwFP","name":"Cordelette (10 m)","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/cordelette.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.nl9cICrauIOEXwFP"}},"system":{"description":"","descriptionmj":"","encombrement":0.2,"quantite":1,"qualite":0,"cout":0.2,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Commune","frequence":54},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"equipe":false,"resistance":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206114,"modifiedTime":1676074487972,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"nqMyaOqBfTxdP9tg","name":"Cor en corne","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/cor_corne.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.nqMyaOqBfTxdP9tg"}},"system":{"description":"","descriptionmj":"","encombrement":0.1,"quantite":1,"qualite":0,"cout":0.6,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Frequente","frequence":18},{"milieu":"Villes","rarete":"Rare","frequence":6}],"equipe":false,"resistance":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206114,"modifiedTime":1676074487972,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"nPczxZ7yylpmGSyO","name":"Crochet de serrurier","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/crochet.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.nPczxZ7yylpmGSyO"}},"system":{"description":"","descriptionmj":"","encombrement":0.2,"quantite":1,"qualite":0,"cout":0.3,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Rarissime","frequence":2},{"milieu":"Villes","rarete":"Rare","frequence":6}],"equipe":false,"resistance":1},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206114,"modifiedTime":1676074487971,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"nl9cICrauIOEXwFP","name":"Cordelette (10 m)","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/cordelette.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.nl9cICrauIOEXwFP"}},"system":{"description":"","descriptionmj":"","encombrement":0.2,"quantite":1,"qualite":0,"cout":0.2,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Commune","frequence":54},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"equipe":false,"resistance":1},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206114,"modifiedTime":1676074487972,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"nqMyaOqBfTxdP9tg","name":"Cor en corne","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/cor_corne.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.nqMyaOqBfTxdP9tg"}},"system":{"description":"","descriptionmj":"","encombrement":0.1,"quantite":1,"qualite":0,"cout":0.6,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Frequente","frequence":18},{"milieu":"Villes","rarete":"Rare","frequence":6}],"equipe":false,"resistance":1},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206114,"modifiedTime":1676074487972,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"oXpPZ9LS1nsU0nGT","name":"Épée sorde","type":"arme","img":"systems/foundryvtt-reve-de-dragon/icons/armes_armures/epee_sord.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.oXpPZ9LS1nsU0nGT"}},"system":{"description":"<p>C&rsquo;est une &eacute;p&eacute;e plus courte que la dragonne, mais plus <em>large</em>. Elle peut s&rsquo;utiliser &agrave; une ou deux mains. Sa grande solidit&eacute; en fait l&rsquo;&eacute;p&eacute;e de pr&eacute;dilection des gardes et des soldats.</p>\n<p>C&rsquo;est probablement &agrave; elle que le <em>Guerrier Sorde</em> doit son nom (&agrave; moins que ce ne soit l&rsquo;inverse).</p>","descriptionmj":"","equipe":false,"encombrement":2,"quantite":1,"qualite":0,"cout":20,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Rare","frequence":6},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"resistance":15,"categorie_parade":"epees-lourdes","dommages":"3/4","penetration":null,"force":"12/11","competence":"Epée à 1 main","lancer":"","tir":"","portee_courte":0,"portee_moyenne":0,"portee_extreme":0,"magique":false,"ecaille_efficacite":null,"resistance_magique":null,"rapide":false,"deuxmains":true,"unemain":true,"initpremierround":"epeesorde"},"ownership":{"default":0,"Q4cUvqxCxMoTJXDL":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206115,"modifiedTime":1676074487972,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"of2LbmmB4EtlSwte","name":"Sac en jute (50 litres)","type":"conteneur","img":"systems/foundryvtt-reve-de-dragon/icons/objets/sac_jute_50.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.of2LbmmB4EtlSwte"}},"system":{"description":"","descriptionmj":"","encombrement":0.1,"quantite":1,"qualite":0,"cout":0.08,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Frequente","frequence":18},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"contenu":[],"capacite":25,"equipe":false},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206115,"modifiedTime":1676074487972,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"orpj8CumQ39xMOHy","name":"Brosse à cheveux","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/Brosse.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.orpj8CumQ39xMOHy"}},"system":{"description":"","descriptionmj":"","encombrement":0.06,"quantite":1,"qualite":0,"cout":1,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Rare","frequence":6},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"equipe":false,"resistance":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206115,"modifiedTime":1676074487972,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"name":"Gouge","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/gouge.webp","effects":[],"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.cVZbnh5cYxBx6P5b"}},"system":{"description":"","descriptionmj":"","encombrement":0.2,"quantite":1,"qualite":0,"cout":0.3,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Frequente","frequence":18},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"equipe":false,"resistance":0},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206109,"modifiedTime":1676074352882,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"},"_id":"pY17ihKKHgfThcyK","folder":null,"sort":0,"ownership":{"default":0,"Hp9ImM4o9YRTSdfu":3}}
{"_id":"orpj8CumQ39xMOHy","name":"Brosse à cheveux","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/Brosse.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.orpj8CumQ39xMOHy"}},"system":{"description":"","descriptionmj":"","encombrement":0.06,"quantite":1,"qualite":0,"cout":1,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Rare","frequence":6},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"equipe":false,"resistance":1},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206115,"modifiedTime":1676074487972,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"name":"Gouge","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/gouge.webp","effects":[],"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.cVZbnh5cYxBx6P5b"}},"system":{"description":"","descriptionmj":"","encombrement":0.2,"quantite":1,"qualite":0,"cout":0.3,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Frequente","frequence":18},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"equipe":false,"resistance":1},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206109,"modifiedTime":1676074352882,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"},"_id":"pY17ihKKHgfThcyK","folder":null,"sort":0,"ownership":{"default":0,"Hp9ImM4o9YRTSdfu":3}}
{"_id":"phfgVizT4ekUwqFq","name":"Selle et harnais","type":"conteneur","img":"systems/foundryvtt-reve-de-dragon/icons/objets/selle.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.phfgVizT4ekUwqFq"}},"system":{"description":"","descriptionmj":"","encombrement":4,"quantite":1,"qualite":0,"cout":5,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Rare","frequence":6},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"contenu":[],"capacite":25,"equipe":false},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206115,"modifiedTime":1676074487972,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"q5zaNnlmNZZChi31","name":"Miel","type":"nourritureboisson","img":"systems/foundryvtt-reve-de-dragon/icons/objets/gelee_royale.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Item.0UhqiYISVSiztBfv"}},"system":{"description":"","descriptionmj":"","encombrement":0.1,"quantite":1,"qualite":0,"cout":0.4,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Frequente","frequence":18},{"milieu":"Villes","rarete":"Rare","frequence":6}],"sust":2,"exotisme":0,"cuisinier":"","boisson":false,"desaltere":0,"alcoolise":false,"force":0},"ownership":{"default":0,"wYnBx3HmLfGzsj7P":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206115,"modifiedTime":1676074487972,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"qCLTOjlIOvlj0uo7","name":"Chaperon de laine","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/chaperon_laine.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.qCLTOjlIOvlj0uo7"}},"system":{"description":"","descriptionmj":"","encombrement":0.1,"quantite":1,"qualite":0,"cout":0.2,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Commune","frequence":54},{"milieu":"Villes","rarete":"Commune","frequence":54}],"equipe":false,"resistance":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206115,"modifiedTime":1676074487972,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"qWhl9EfdnJx4KFTZ","name":"Bas de laine","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/bas_laine.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.qWhl9EfdnJx4KFTZ"}},"system":{"description":"","descriptionmj":"","encombrement":0,"quantite":1,"qualite":0,"cout":0.1,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Commune","frequence":54},{"milieu":"Villes","rarete":"Commune","frequence":54}],"equipe":false,"resistance":0},"ownership":{"default":0,"jOzRscDxoXZWpGS6":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206115,"modifiedTime":1676074487972,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"sSgPT3aKDOZ25svO","name":"Porte plume en bois","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/porte_plume2.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.sSgPT3aKDOZ25svO"}},"system":{"description":"","descriptionmj":"","encombrement":0.02,"quantite":1,"qualite":0,"cout":0.05,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Rare","frequence":6},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"equipe":false,"resistance":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206115,"modifiedTime":1676074487972,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"qCLTOjlIOvlj0uo7","name":"Chaperon de laine","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/chaperon_laine.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.qCLTOjlIOvlj0uo7"}},"system":{"description":"","descriptionmj":"","encombrement":0.1,"quantite":1,"qualite":0,"cout":0.2,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Commune","frequence":54},{"milieu":"Villes","rarete":"Commune","frequence":54}],"equipe":false,"resistance":1},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206115,"modifiedTime":1676074487972,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"qWhl9EfdnJx4KFTZ","name":"Bas de laine","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/bas_laine.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.qWhl9EfdnJx4KFTZ"}},"system":{"description":"","descriptionmj":"","encombrement":0,"quantite":1,"qualite":0,"cout":0.1,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Commune","frequence":54},{"milieu":"Villes","rarete":"Commune","frequence":54}],"equipe":false,"resistance":1},"ownership":{"default":0,"jOzRscDxoXZWpGS6":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206115,"modifiedTime":1676074487972,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"sSgPT3aKDOZ25svO","name":"Porte plume en bois","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/porte_plume2.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.sSgPT3aKDOZ25svO"}},"system":{"description":"","descriptionmj":"","encombrement":0.02,"quantite":1,"qualite":0,"cout":0.05,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Rare","frequence":6},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"equipe":false,"resistance":1},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206115,"modifiedTime":1676074487972,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"sXoStuW19r9zVi1S","name":"Flacon de verre (40 cl)","type":"conteneur","img":"systems/foundryvtt-reve-de-dragon/icons/objets/flacon_verre.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.sXoStuW19r9zVi1S"}},"system":{"description":"","descriptionmj":"","encombrement":0.1,"quantite":1,"qualite":0,"cout":0.3,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Rare","frequence":6},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"contenu":[],"capacite":0.2,"equipe":false},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206115,"modifiedTime":1676074487972,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"sbgHtwEj4sK9cMh7","name":"Livre","type":"livre","flags":{"core":{"sourceId":"Item.1bn0Q8cO1qRWQvlf"}},"img":"systems/foundryvtt-reve-de-dragon/icons/objets/livre.webp","effects":[],"system":{"description":"","descriptionmj":"","encombrement":1,"quantite":1,"qualite":0,"cout":3,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Rarissime","frequence":2},{"milieu":"Villes","rarete":"Rare","frequence":6}],"competence":"Ecriture","auteur":"Inconnu","difficulte":0,"points_de_tache":0,"xp":0,"niveau_minimum":0,"niveau_maximum":0},"ownership":{"default":0,"Q4cUvqxCxMoTJXDL":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206117,"modifiedTime":1676074487972,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"skTWp8PUgIG2U2ne","name":"Cire à cacheter","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/cire_a_cacheter.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.skTWp8PUgIG2U2ne"}},"system":{"description":"","descriptionmj":"","encombrement":0.02,"quantite":1,"qualite":0,"cout":0.2,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Rare","frequence":6},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"equipe":false,"resistance":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206117,"modifiedTime":1676074487972,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"skTWp8PUgIG2U2ne","name":"Cire à cacheter","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/cire_a_cacheter.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.skTWp8PUgIG2U2ne"}},"system":{"description":"","descriptionmj":"","encombrement":0.02,"quantite":1,"qualite":0,"cout":0.2,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Rare","frequence":6},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"equipe":false,"resistance":1},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206117,"modifiedTime":1676074487972,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"slusKo2nVCtFwDkN","name":"Sang","type":"munition","img":"systems/foundryvtt-reve-de-dragon/icons/liquides/liquide_sang.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.slusKo2nVCtFwDkN"}},"system":{"description":"<p>1 mesure (20cl) de sang.</p>","descriptionmj":"","encombrement":0.1,"quantite":1,"qualite":0,"cout":0,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Frequente","frequence":18},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"equipe":false},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206117,"modifiedTime":1676074487972,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"snupUovwaPAe46aD","name":"Fiole en grès (20 cl)","type":"conteneur","img":"systems/foundryvtt-reve-de-dragon/icons/objets/fiole_gres.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.snupUovwaPAe46aD"}},"system":{"description":"","descriptionmj":"","encombrement":0.1,"quantite":1,"qualite":0,"cout":0.1,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Frequente","frequence":18},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"contenu":[],"capacite":0.1,"equipe":false},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206117,"modifiedTime":1676074487972,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"szOThadvQvFcS79R","name":"Cuir Epais","type":"armure","img":"systems/foundryvtt-reve-de-dragon/icons/armes_armures/cuir_epais.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.szOThadvQvFcS79R"}},"system":{"description":"<p>Cuir très épais comme le cuir de botte. Pectoral de cuir épais + jupon de bandes ou de tresses de cuir ou cuissards de cuir épais sur culottes de cuir souple + bottes dures + casque de cuir.</p>\n<p>&nbsp;</p>","descriptionmj":"","equipe":false,"encombrement":2,"quantite":1,"qualite":0,"cout":10,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Frequente","frequence":18},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"protection":"3","deterioration":0,"malus":-1},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206117,"modifiedTime":1676074487972,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"tBFt4h3jqINsOxLI","name":"Outre (2 litres)","type":"conteneur","img":"systems/foundryvtt-reve-de-dragon/icons/objets/outre.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.tBFt4h3jqINsOxLI"}},"system":{"description":"","descriptionmj":"","encombrement":0.08,"quantite":1,"qualite":0,"cout":0.2,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Frequente","frequence":18},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"contenu":[],"capacite":1,"equipe":false},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206117,"modifiedTime":1676074487972,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"tMWzePiuMtiCQnAU","name":"Marteau","type":"arme","img":"systems/foundryvtt-reve-de-dragon/icons/objets/marteau.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.tMWzePiuMtiCQnAU"}},"system":{"description":"","descriptionmj":"","equipe":false,"encombrement":0.3,"quantite":1,"qualite":0,"cout":1,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Frequente","frequence":18},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"resistance":8,"categorie_parade":"","dommages":"2","penetration":0,"force":"7","competence":"Masse à 1 main","lancer":"","tir":"","portee_courte":0,"portee_moyenne":0,"portee_extreme":0,"magique":false,"ecaille_efficacite":0,"resistance_magique":0,"rapide":false,"deuxmains":false,"unemain":true,"initpremierround":"masse"},"ownership":{"default":0,"Q4cUvqxCxMoTJXDL":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206117,"modifiedTime":1676074487972,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"tY3shj5FA8nwMgxX","name":"Vin","type":"nourritureboisson","img":"systems/foundryvtt-reve-de-dragon/icons/liquides/liquide_vin.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Item.QNNWTG5yqQKmcpJ7"}},"system":{"description":"","descriptionmj":"","encombrement":0.1,"quantite":1,"qualite":0,"cout":0.01,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Frequente","frequence":18},{"milieu":"Villes","rarete":"Commune","frequence":54}],"sust":0,"exotisme":0,"cuisinier":"","boisson":true,"desaltere":0.6,"alcoolise":true,"force":-2,"equipe":false},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206117,"modifiedTime":1676074487972,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"tZWQCuRr1ic3S0pL","name":"Souliers","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/souliers.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.tZWQCuRr1ic3S0pL"}},"system":{"description":"","descriptionmj":"","encombrement":0.2,"quantite":1,"qualite":0,"cout":0.8,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Rare","frequence":6},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"equipe":false,"resistance":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206117,"modifiedTime":1676074487975,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"tZWQCuRr1ic3S0pL","name":"Souliers","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/souliers.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.tZWQCuRr1ic3S0pL"}},"system":{"description":"","descriptionmj":"","encombrement":0.2,"quantite":1,"qualite":0,"cout":0.8,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Rare","frequence":6},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"equipe":false,"resistance":1},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206117,"modifiedTime":1676074487975,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"name":"Repas moyen à l'auberge","type":"nourritureboisson","img":"systems/foundryvtt-reve-de-dragon/icons/objets/provision_cuite.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.tn1kvxEVoLyYODyg"}},"_id":"tn1kvxEVoLyYODyg","system":{"description":"","descriptionmj":"","encombrement":0.3,"quantite":1,"qualite":3,"cout":0.1,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Commune","frequence":54},{"milieu":"Villes","rarete":"Commune","frequence":54}],"sust":3,"exotisme":0,"cuisinier":"","boisson":false,"desaltere":0,"alcoolise":false,"force":0},"ownership":{"default":0,"wYnBx3HmLfGzsj7P":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206117,"modifiedTime":1676074487975,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"tswamwK2oKNARhjA","name":"Verre grossissant","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/verre_grossissant.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.tswamwK2oKNARhjA"}},"system":{"description":"","descriptionmj":"","encombrement":0.02,"quantite":1,"qualite":0,"cout":2,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Rarissime","frequence":2},{"milieu":"Villes","rarete":"Rare","frequence":6}],"equipe":false,"resistance":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206118,"modifiedTime":1676074487975,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"ueBk3MbdEaMbzyPS","name":"Ficelle (10 m)","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/ficelle.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.ueBk3MbdEaMbzyPS"}},"system":{"description":"","descriptionmj":"","encombrement":0.02,"quantite":1,"qualite":0,"cout":0.1,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Frequente","frequence":18},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"equipe":false,"resistance":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206118,"modifiedTime":1676074487975,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"ueJnUMLK1vpL8xOB","name":"Stylet de bronze","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/stylet_de_bronze.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.ueJnUMLK1vpL8xOB"}},"system":{"description":"","descriptionmj":"","encombrement":0.02,"quantite":1,"qualite":0,"cout":0.12,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Frequente","frequence":18},{"milieu":"Villes","rarete":"Rare","frequence":6}],"equipe":false,"resistance":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206118,"modifiedTime":1676074487975,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"tswamwK2oKNARhjA","name":"Verre grossissant","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/verre_grossissant.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.tswamwK2oKNARhjA"}},"system":{"description":"","descriptionmj":"","encombrement":0.02,"quantite":1,"qualite":0,"cout":2,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Rarissime","frequence":2},{"milieu":"Villes","rarete":"Rare","frequence":6}],"equipe":false,"resistance":1},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206118,"modifiedTime":1676074487975,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"ueBk3MbdEaMbzyPS","name":"Ficelle (10 m)","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/ficelle.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.ueBk3MbdEaMbzyPS"}},"system":{"description":"","descriptionmj":"","encombrement":0.02,"quantite":1,"qualite":0,"cout":0.1,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Frequente","frequence":18},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"equipe":false,"resistance":1},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206118,"modifiedTime":1676074487975,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"ueJnUMLK1vpL8xOB","name":"Stylet de bronze","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/stylet_de_bronze.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.ueJnUMLK1vpL8xOB"}},"system":{"description":"","descriptionmj":"","encombrement":0.02,"quantite":1,"qualite":0,"cout":0.12,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Frequente","frequence":18},{"milieu":"Villes","rarete":"Rare","frequence":6}],"equipe":false,"resistance":1},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206118,"modifiedTime":1676074487975,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"uwwunMSrJoUYTDkG","name":"Seau de bois ferré (10 litres)","type":"conteneur","img":"systems/foundryvtt-reve-de-dragon/icons/objets/seau_ferre.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.uwwunMSrJoUYTDkG"}},"system":{"description":"","descriptionmj":"","encombrement":1,"quantite":1,"qualite":0,"cout":0.2,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Frequente","frequence":18},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"contenu":[],"capacite":5,"equipe":false},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206118,"modifiedTime":1676074487975,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"vQ494sD9FgFI08kZ","name":"Drap Matelassé","type":"armure","img":"systems/foundryvtt-reve-de-dragon/icons/armes_armures/drap_matelasse.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.vQ494sD9FgFI08kZ"}},"system":{"description":"<p>Deux épaisseurs de drap surpiquées, avec rembourrage de laine.</p>\n<p>Pourpoint ou cotte de drap matelassé + culottes de drap matelassé + bottes de cuir souple. Le pourpoint est une sorte de veste ; la cotte est une sorte de tunique, lacée sur la poitrine, et descendant jusquaux genoux, façon Robin des Bois.</p>\n<p>&nbsp;</p>","descriptionmj":"","equipe":false,"encombrement":0,"quantite":1,"qualite":0,"cout":4,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Frequente","frequence":18},{"milieu":"Villes","rarete":"Commune","frequence":54}],"protection":"1","deterioration":0,"malus":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206118,"modifiedTime":1676074487975,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"name":"Épée demi-dragonne","type":"arme","flags":{"core":{"sourceId":"Item.ErwaSLcGryAbYjkm"}},"img":"systems/foundryvtt-reve-de-dragon/icons/armes_armures/demi_dragonne.webp","effects":[],"_id":"vnlRGjt7X6yQRObA","system":{"description":null,"descriptionmj":"","equipe":false,"encombrement":1.5,"quantite":1,"qualite":0,"cout":15,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Rare","frequence":6},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"resistance":10,"categorie_parade":"epees-longues","dommages":"2","penetration":0,"force":"10","competence":"Epée à 1 main","lancer":"","tir":"","portee_courte":0,"portee_moyenne":0,"portee_extreme":0,"magique":false,"ecaille_efficacite":null,"resistance_magique":null,"rapide":true,"deuxmains":false,"unemain":true,"initpremierround":"epeedragonne"},"ownership":{"default":0,"Q4cUvqxCxMoTJXDL":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206118,"modifiedTime":1676074487975,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"wPE64RRcuLlvuPrY","name":"Épée cyane","type":"arme","img":"systems/foundryvtt-reve-de-dragon/icons/armes_armures/epee_cyane.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.wPE64RRcuLlvuPrY"}},"system":{"description":"<p>Long <em>cimeterre </em>&agrave; l&rsquo;acier bleut&eacute;, exclusivement fabriqu&eacute; par les Cyans ou Hommes bleus.</p>","descriptionmj":"","equipe":false,"encombrement":2,"quantite":1,"qualite":0,"cout":25,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Rarissime","frequence":2},{"milieu":"Villes","rarete":"Rare","frequence":6}],"resistance":12,"categorie_parade":"epees-lourdes","dommages":"3","penetration":0,"force":"11","competence":"Epée à 1 main","lancer":"","tir":"","portee_courte":0,"portee_moyenne":0,"portee_extreme":0,"magique":false,"ecaille_efficacite":null,"resistance_magique":null,"rapide":true,"deuxmains":false,"unemain":true,"initpremierround":"epeecyane"},"ownership":{"default":0,"Q4cUvqxCxMoTJXDL":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206118,"modifiedTime":1676074487975,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"wcW5KcideGi8EY67","name":"Gants de cuir","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/gants_de_cuir.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.wcW5KcideGi8EY67"}},"system":{"description":"","descriptionmj":"","encombrement":0.05,"quantite":1,"qualite":0,"cout":1,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Rare","frequence":6},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"equipe":false,"resistance":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206118,"modifiedTime":1676074487975,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"wpWaqe96x3cvqTXy","name":"Robe de laine","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/robe_laine.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.wpWaqe96x3cvqTXy"}},"system":{"description":"","descriptionmj":"","encombrement":0.2,"quantite":1,"qualite":0,"cout":0.4,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Frequente","frequence":18},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"equipe":false,"resistance":0},"ownership":{"default":0,"jOzRscDxoXZWpGS6":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206118,"modifiedTime":1676074487975,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"wcW5KcideGi8EY67","name":"Gants de cuir","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/gants_de_cuir.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.wcW5KcideGi8EY67"}},"system":{"description":"","descriptionmj":"","encombrement":0.05,"quantite":1,"qualite":0,"cout":1,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Rare","frequence":6},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"equipe":false,"resistance":1},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206118,"modifiedTime":1676074487975,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"wpWaqe96x3cvqTXy","name":"Robe de laine","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/robe_laine.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.wpWaqe96x3cvqTXy"}},"system":{"description":"","descriptionmj":"","encombrement":0.2,"quantite":1,"qualite":0,"cout":0.4,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Frequente","frequence":18},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"equipe":false,"resistance":1},"ownership":{"default":0,"jOzRscDxoXZWpGS6":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206118,"modifiedTime":1676074487975,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"name":"Herbe à pipe","type":"herbe","img":"systems/foundryvtt-reve-de-dragon/icons/botanique/Endorlotte.webp","system":{"description":"","descriptionmj":"","encombrement":0,"quantite":1,"qualite":0.01,"cout":0.01,"milieu":"","environnement":[],"sust":0,"exotisme":0,"niveau":0,"base":0,"categorie":"Autre"},"effects":[],"flags":{"core":{"sourceId":"Item.wxmHkhTTzPNepN4d"}},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1676073283027,"modifiedTime":1676074352883,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"},"_id":"wxmHkhTTzPNepN4d","folder":null,"sort":0,"ownership":{"default":0,"Hp9ImM4o9YRTSdfu":3}}
{"_id":"x4g6bDu3eUllSSSJ","name":"Eponge de mer","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/eponge.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.x4g6bDu3eUllSSSJ"}},"system":{"description":"","descriptionmj":"","encombrement":0.04,"quantite":1,"qualite":0,"cout":1,"milieu":"","environnement":[{"milieu":"Maritimes","rarete":"Rare","frequence":6},{"milieu":"Villages","rarete":"Rarissime","frequence":2},{"milieu":"Villes","rarete":"Rare","frequence":6}],"equipe":false,"resistance":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206118,"modifiedTime":1676074487975,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"xfdeDEyMK8YtBpzC","name":"Huile 20 cl (4 heures)","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/huile.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.xfdeDEyMK8YtBpzC"}},"system":{"description":"","descriptionmj":"","encombrement":0.1,"quantite":1,"qualite":0,"cout":0.04,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Frequente","frequence":18},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"equipe":false,"resistance":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206119,"modifiedTime":1676074487975,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"xuk60njqtrSZusSX","name":"Chemise de laine","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/chemise_laine.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.xuk60njqtrSZusSX"}},"system":{"description":"","descriptionmj":"","encombrement":0.1,"quantite":1,"qualite":0,"cout":0.2,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Commune","frequence":54},{"milieu":"Villes","rarete":"Commune","frequence":54}],"equipe":false,"resistance":0},"ownership":{"default":0,"jOzRscDxoXZWpGS6":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206119,"modifiedTime":1676074487975,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"yILNvELKbsz2OOln","name":"Ecritoire","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/ecritoire.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.yILNvELKbsz2OOln"}},"system":{"description":"","descriptionmj":"","encombrement":1,"quantite":1,"qualite":0,"cout":1,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Rare","frequence":6},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"equipe":false,"resistance":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206179,"modifiedTime":1676074487975,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"x4g6bDu3eUllSSSJ","name":"Eponge de mer","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/eponge.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.x4g6bDu3eUllSSSJ"}},"system":{"description":"","descriptionmj":"","encombrement":0.04,"quantite":1,"qualite":0,"cout":1,"milieu":"","environnement":[{"milieu":"Maritimes","rarete":"Rare","frequence":6},{"milieu":"Villages","rarete":"Rarissime","frequence":2},{"milieu":"Villes","rarete":"Rare","frequence":6}],"equipe":false,"resistance":1},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206118,"modifiedTime":1676074487975,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"xfdeDEyMK8YtBpzC","name":"Huile 20 cl (4 heures)","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/huile.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.xfdeDEyMK8YtBpzC"}},"system":{"description":"","descriptionmj":"","encombrement":0.1,"quantite":1,"qualite":0,"cout":0.04,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Frequente","frequence":18},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"equipe":false,"resistance":1},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206119,"modifiedTime":1676074487975,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"xuk60njqtrSZusSX","name":"Chemise de laine","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/chemise_laine.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.xuk60njqtrSZusSX"}},"system":{"description":"","descriptionmj":"","encombrement":0.1,"quantite":1,"qualite":0,"cout":0.2,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Commune","frequence":54},{"milieu":"Villes","rarete":"Commune","frequence":54}],"equipe":false,"resistance":1},"ownership":{"default":0,"jOzRscDxoXZWpGS6":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206119,"modifiedTime":1676074487975,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"yILNvELKbsz2OOln","name":"Ecritoire","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/ecritoire.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.yILNvELKbsz2OOln"}},"system":{"description":"","descriptionmj":"","encombrement":1,"quantite":1,"qualite":0,"cout":1,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Rare","frequence":6},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"equipe":false,"resistance":1},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206179,"modifiedTime":1676074487975,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"yO9Vx7tqF8qbZoYw","name":"Besace de cuir","type":"conteneur","img":"systems/foundryvtt-reve-de-dragon/icons/objets/besace.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.yO9Vx7tqF8qbZoYw"}},"system":{"description":"","descriptionmj":"","encombrement":0.2,"quantite":1,"qualite":0,"cout":0.5,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Commune","frequence":54},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"contenu":[],"capacite":10,"equipe":false},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206179,"modifiedTime":1676074487975,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"zQWlnUsd8bPySujd","name":"Aiguille à coudre","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/aiguille.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.zQWlnUsd8bPySujd"}},"system":{"description":"","descriptionmj":"","encombrement":0.01,"quantite":1,"qualite":0,"cout":0.1,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Frequente","frequence":18},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"equipe":false,"resistance":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206179,"modifiedTime":1676074487976,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"zQWlnUsd8bPySujd","name":"Aiguille à coudre","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/aiguille.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.zQWlnUsd8bPySujd"}},"system":{"description":"","descriptionmj":"","encombrement":0.01,"quantite":1,"qualite":0,"cout":0.1,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Frequente","frequence":18},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"equipe":false,"resistance":1},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206179,"modifiedTime":1676074487976,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"zYI8mDiysWtmsSyy","name":"Carquois","type":"conteneur","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.zYI8mDiysWtmsSyy"}},"img":"systems/foundryvtt-reve-de-dragon/icons/objets/carquois.webp","effects":[],"system":{"description":"","descriptionmj":"","encombrement":0.1,"quantite":1,"qualite":0,"cout":0.5,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Frequente","frequence":18},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"contenu":[],"capacite":2,"equipe":false},"ownership":{"default":0,"jOzRscDxoXZWpGS6":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206179,"modifiedTime":1676074487976,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"zlDa1vwmls6Uf4pt","name":"Bourse de cuir","type":"conteneur","img":"systems/foundryvtt-reve-de-dragon/icons/objets/bourse.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.zlDa1vwmls6Uf4pt"}},"system":{"description":"","descriptionmj":"","encombrement":0.01,"quantite":1,"qualite":0,"cout":0.1,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Frequente","frequence":18},{"milieu":"Villes","rarete":"Commune","frequence":54}],"contenu":[],"capacite":0.5,"equipe":false},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206179,"modifiedTime":1676074487976,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}

View File

@ -12,7 +12,7 @@
{"name":"Lièvre","type":"faune","img":"systems/foundryvtt-reve-de-dragon/icons/faune/lapin.webp","system":{"description":"<p>Li&egrave;vre. Plaine, 4 kg, 8 sust.</p>","descriptionmj":"","encombrement":2,"quantite":1,"qualite":0,"cout":0,"milieu":"Plaines","environnement":[{"milieu":"Plaines","rarete":"Frequente","frequence":18}],"sust":8,"exotisme":0,"categorie":"","actor":{"id":"","pack":"","name":""}},"effects":[],"flags":{"core":{"sourceId":"Item.LU5eutNQqwm52oOG"}},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.0","coreVersion":"10.291","createdTime":1670580597921,"modifiedTime":1673657676879,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"},"_id":"5rGi4IeFyxQwyOOq","folder":null,"sort":0,"ownership":{"default":0,"jtRmvSuwkwMmIMf0":3}}
{"name":"Salsimir ventru","type":"plante","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.faune-flore-mineraux.66Rzf8phcEQRIShv"}},"img":"systems/foundryvtt-reve-de-dragon/icons/botanique/Salsimir%20ventru.webp","effects":[],"_id":"66Rzf8phcEQRIShv","system":{"description":"<p>&Agrave; points jaunes ou &agrave; points rouges, le salsimir ventru se distingue par un pied large&nbsp;et renfl&eacute;.</p>\n<p>Rare.</p>","descriptionmj":"","encombrement":0.1,"quantite":1,"qualite":4,"cout":0,"milieu":"Lieux sombres et humides","environnement":[{"milieu":"Forêts","rarete":"Rare","frequence":9},{"milieu":"Sous-sols","rarete":"Rarissime","frequence":3}],"sust":1,"exotisme":0,"niveau":4,"base":0,"categorie":"Cuisine","rarete":"Rare"},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.0","coreVersion":"10.291","createdTime":1669734708517,"modifiedTime":1673792106248,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"name":"Sautille","type":"faune","img":"systems/foundryvtt-reve-de-dragon/icons/faune/oiseau.webp","system":{"description":"<p>Sautille. Rivage, 1 kg, 2 sust. Petit &eacute;chassier voisin de la grue qui, au lieu de marcher tranquillement, passe son temps &agrave;sautiller sur ses longues pattes.</p>","descriptionmj":"","encombrement":0.5,"quantite":1,"qualite":0,"cout":0,"milieu":"Rivage","environnement":[{"milieu":"Cours d'eau","rarete":"Frequente","frequence":18}],"sust":2,"exotisme":0,"categorie":"","actor":{"id":"","pack":"","name":""}},"effects":[],"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.faune-flore-mineraux.6bvChVkjsy5tsa4d"}},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.0","coreVersion":"10.291","createdTime":1670580597921,"modifiedTime":1673657676885,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"},"_id":"6bvChVkjsy5tsa4d","folder":null,"sort":0,"ownership":{"default":0,"jtRmvSuwkwMmIMf0":3}}
{"name":"Tricolet","type":"plante","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.faune-flore-mineraux.6gb2cjdPXI44ym8D"}},"img":"systems/foundryvtt-reve-de-dragon/icons/botanique/Tricollet.webp","effects":[],"_id":"6gb2cjdPXI44ym8D","system":{"description":"<p>Champignon &agrave; pied blanc, triple volve, et large chapeau vert &agrave; points bleus.</p>\n<p>Rare.</p>","descriptionmj":"","encombrement":0.1,"quantite":1,"qualite":4,"cout":0,"milieu":"Lieux sombres et humides","environnement":[{"milieu":"Forêts","rarete":"Rare","frequence":6},{"milieu":"Sous-sols","rarete":"Rarissime","frequence":3}],"sust":1,"exotisme":0,"niveau":4,"base":0,"categorie":"Cuisine","rarete":"Rare"},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.0","coreVersion":"10.291","createdTime":1669734708518,"modifiedTime":1673792147727,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"name":"Tricollet","type":"plante","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.faune-flore-mineraux.6gb2cjdPXI44ym8D"}},"img":"systems/foundryvtt-reve-de-dragon/icons/botanique/Tricollet.webp","effects":[],"_id":"6gb2cjdPXI44ym8D","system":{"description":"<p>Champignon &agrave; pied blanc, triple volve, et large chapeau vert &agrave; points bleus.</p>\n<p>Rare.</p>","descriptionmj":"","encombrement":0.1,"quantite":1,"qualite":4,"cout":0,"milieu":"Lieux sombres et humides","environnement":[{"milieu":"Forêts","rarete":"Rare","frequence":6},{"milieu":"Sous-sols","rarete":"Rarissime","frequence":3}],"sust":1,"exotisme":0,"niveau":4,"base":0,"categorie":"Cuisine","rarete":"Rare"},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.0","coreVersion":"10.291","createdTime":1669734708518,"modifiedTime":1673792147727,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"name":"Lapin","type":"faune","img":"systems/foundryvtt-reve-de-dragon/icons/faune/lapin.webp","system":{"description":"<p>Lapin. For&ecirc;t, plaine, 2 kg, 5 sust.</p>","descriptionmj":"","encombrement":1,"quantite":1,"qualite":0,"cout":0,"milieu":"Forets, Plaines","environnement":[{"milieu":"Forêts","rarete":"Commune","frequence":54},{"milieu":"Plaines","rarete":"Commune","frequence":54}],"sust":5,"exotisme":0,"categorie":"","actor":{"id":"","pack":"","name":""}},"effects":[],"flags":{"core":{"sourceId":"Item.LU5eutNQqwm52oOG"}},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.0","coreVersion":"10.291","createdTime":1670580597921,"modifiedTime":1673657676879,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"},"_id":"6pDi7Pew5FZ3Ca1I","folder":null,"sort":0,"ownership":{"default":0,"jtRmvSuwkwMmIMf0":3}}
{"name":"Salsimir à points verts","type":"plante","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.faune-flore-mineraux.7IV2V4ZotDEP2sLs"}},"img":"systems/foundryvtt-reve-de-dragon/icons/botanique/Salsimir%20%C3%A0%20points%20verts.webp","effects":[],"_id":"7IV2V4ZotDEP2sLs","system":{"description":"<p>Champignon semblable aux autres variétés de salsimir, hormis la couleur de ses points.</p><p>Pour l'empoisonnement, voir: @UUID[Compendium.foundryvtt-reve-de-dragon.maladies-et-poisons.Rx2nQjwaCa5s38Tm]{Salsimir à points verts}</p><p>Rare.</p>","descriptionmj":"","encombrement":0.1,"quantite":1,"qualite":0,"cout":0,"milieu":"Lieux sombres et humides","environnement":[{"milieu":"Forêts","rarete":"Rare","frequence":9},{"milieu":"Sous-sols","rarete":"Rarissime","frequence":3}],"sust":0,"exotisme":0,"niveau":null,"base":0,"categorie":"Poison","rarete":"Rare"},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.0","coreVersion":"10.291","createdTime":1669734708518,"modifiedTime":1673792134571,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"name":"Tanemiel doré","type":"herbe","flags":{"core":{"sheetClass":"foundryvtt-reve-de-dragon.RdDItemSheet","sourceId":"Compendium.foundryvtt-reve-de-dragon.faune-flore-mineraux.7RgTRB47YPH74BwF"}},"img":"systems/foundryvtt-reve-de-dragon/icons/botanique/Tanemiel%20dor%C3%A9.webp","effects":[],"_id":"7RgTRB47YPH74BwF","system":{"description":"<p><em>Herbe de soin.</em></p>\n<p>Vari&eacute;t&eacute; de tanemiel aux feuilles luisantes de couleur ambr&eacute;e.</p>\n<p>Rarissime.</p>\n<p>&nbsp;</p>\n<p><em>Voir Les herbes de soin, p100.</em></p>","descriptionmj":"","encombrement":0,"quantite":1,"qualite":0,"cout":2,"milieu":"Forêts chaudes et humides","environnement":[{"milieu":"Forêts","rarete":"Rarissime","frequence":2}],"sust":0,"exotisme":0,"niveau":10,"base":0,"categorie":"Soin","rarete":"Rarissime"},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.0","coreVersion":"10.291","createdTime":1669734708518,"modifiedTime":1673657676886,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -8,7 +8,7 @@
{"_id":"RjwPSt0pOwQ8w9Qy","name":"Le Luth","type":"tarot","folder":"LmM8c5pdDkCsDXka","sort":500000,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.tarot-draconique.RjwPSt0pOwQ8w9Qy"}},"img":"systems/foundryvtt-reve-de-dragon/icons/tarots/dos-tarot.webp","effects":[],"system":{"description":"","descriptionmj":"","concept":"Fête, Plaisir, Joie, Insouciance","aspect":"Positif","frequence":1},"ownership":{"default":2,"Hp9ImM4o9YRTSdfu":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.3.13","coreVersion":"10.291","createdTime":1671050461624,"modifiedTime":1671050523351,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"VAhO41qD8QQLDie5","name":"Le Vaisseau","type":"tarot","folder":"LmM8c5pdDkCsDXka","sort":100000,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.tarot-draconique.VAhO41qD8QQLDie5"}},"img":"systems/foundryvtt-reve-de-dragon/icons/tarots/dos-tarot.webp","effects":[],"system":{"description":"","descriptionmj":"","concept":"Début, Départ, Mouvement, Jeunesse","aspect":"Positif","frequence":1},"ownership":{"default":2,"Hp9ImM4o9YRTSdfu":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.3.13","coreVersion":"10.291","createdTime":1671050461624,"modifiedTime":1671050523351,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"W150EcUq9vU9ryyc","name":"La Couronne","type":"tarot","folder":"LmM8c5pdDkCsDXka","sort":800000,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.tarot-draconique.W150EcUq9vU9ryyc"}},"img":"systems/foundryvtt-reve-de-dragon/icons/tarots/dos-tarot.webp","effects":[],"system":{"description":"","descriptionmj":"","concept":"Honneur, Gloire, Récompense, Ascension","aspect":"Positif","frequence":1},"ownership":{"default":2,"Hp9ImM4o9YRTSdfu":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.3.13","coreVersion":"10.291","createdTime":1671050461625,"modifiedTime":1671050523352,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"beF1v9sjQeDgmxZL","name":"Le Gibet","type":"tarot","folder":"LmM8c5pdDkCsDXka","sort":1775000,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.tarot-draconique.beF1v9sjQeDgmxZL"}},"img":"systems/foundryvtt-reve-de-dragon/icons/tarots/dos-tarot.webp","effects":[],"system":{"description":"","descriptionmj":"","concept":"Opprobre, Humiliation, Châtiment, Chite","aspect":"Négatif","frequence":1},"ownership":{"default":2,"Hp9ImM4o9YRTSdfu":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.3.13","coreVersion":"10.291","createdTime":1671050461625,"modifiedTime":1671050523352,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"beF1v9sjQeDgmxZL","name":"Le Gibet","type":"tarot","folder":"LmM8c5pdDkCsDXka","sort":1775000,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.tarot-draconique.beF1v9sjQeDgmxZL"}},"img":"systems/foundryvtt-reve-de-dragon/icons/tarots/dos-tarot.webp","effects":[],"system":{"description":"","descriptionmj":"","concept":"Opprobre, Humiliation, Châtiment, Chute","aspect":"Négatif","frequence":1},"ownership":{"default":2,"Hp9ImM4o9YRTSdfu":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.3.13","coreVersion":"10.291","createdTime":1671050461625,"modifiedTime":1671050523352,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"inWYIYIuHkoZ3S4A","name":"L'Epée","type":"tarot","folder":"LmM8c5pdDkCsDXka","sort":1762500,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.tarot-draconique.inWYIYIuHkoZ3S4A"}},"img":"systems/foundryvtt-reve-de-dragon/icons/tarots/dos-tarot.webp","effects":[],"system":{"description":"","descriptionmj":"","concept":"Guerre, Blessure, Conflit","aspect":"Négatif","frequence":1},"ownership":{"default":2,"Hp9ImM4o9YRTSdfu":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.3.13","coreVersion":"10.291","createdTime":1671050461625,"modifiedTime":1671050523352,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"jpNASgEPndryQwuX","name":"L'Esprit Thanataire","type":"tarot","folder":"LmM8c5pdDkCsDXka","sort":2100000,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.tarot-draconique.jpNASgEPndryQwuX"}},"img":"systems/foundryvtt-reve-de-dragon/icons/tarots/dos-tarot.webp","effects":[],"system":{"description":"","descriptionmj":"","concept":"Cauchemar, Mort, Destin Funèbre, Haine","aspect":"Négatif","frequence":1},"ownership":{"default":2,"Hp9ImM4o9YRTSdfu":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.3.13","coreVersion":"10.291","createdTime":1671050461625,"modifiedTime":1671050523352,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
{"_id":"miO25LLlwPyOAGeR","name":"La Vierge","type":"tarot","folder":"LmM8c5pdDkCsDXka","sort":600000,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.tarot-draconique.miO25LLlwPyOAGeR"}},"img":"systems/foundryvtt-reve-de-dragon/icons/tarots/dos-tarot.webp","effects":[],"system":{"description":"","descriptionmj":"","concept":"Paix, Beaume, Harmonie","aspect":"Positif","frequence":1},"ownership":{"default":2,"Hp9ImM4o9YRTSdfu":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.3.13","coreVersion":"10.291","createdTime":1671050461625,"modifiedTime":1671050523352,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}

File diff suppressed because one or more lines are too long

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