forked from public/foundryvtt-reve-de-dragon
		
	Compare commits
	
		
			28 Commits
		
	
	
		
			foundryvtt
			...
			foundryvtt
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 2b08678518 | |||
| 355f2e4088 | |||
| e0862105f9 | |||
| 3ab48511a0 | |||
| 05cd02b694 | |||
| 56a5d06f16 | |||
| f34db764cb | |||
| 7267cd4096 | |||
| e4bd2d2f27 | |||
| eb09714579 | |||
| 62cc3fc96b | |||
| 5e140546ea | |||
| ab9a21f402 | |||
| 8e41250f64 | |||
| 095eed9da3 | |||
| 55c98d1dce | |||
| b5dc14687e | |||
| 1208eb8ae1 | |||
| a46acb7952 | |||
| a68057900d | |||
| 57bc1b6c1f | |||
| 6101bc91a6 | |||
| 33ced5715d | |||
| 50db9ba709 | |||
| 957e31b188 | |||
| 74571c9966 | |||
| 5155fb4669 | |||
| 698ed75d46 | 
							
								
								
									
										32
									
								
								changelog.md
									
									
									
									
									
								
							
							
						
						
									
										32
									
								
								changelog.md
									
									
									
									
									
								
							@@ -1,9 +1,33 @@
 | 
			
		||||
# v11.2
 | 
			
		||||
## v11.2.2 - Les tendres moments d'Akarlikarlikar
 | 
			
		||||
- On peut maintenant avoir des points de cœur pour des suivants/compagnons
 | 
			
		||||
# 11.2
 | 
			
		||||
## 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
 | 
			
		||||
  - 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
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										1
									
								
								icons/empoignade.svg
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								icons/empoignade.svg
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1 @@
 | 
			
		||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" style="height: 256px; width: 256px;"><g class="" transform="translate(0,3)" style=""><path d="M243.512 23.29c-27.105 18.337-53.533 32.92-82.274 45.337-2.843 17.364-3.948 34.497-4.05 51.584 28.913 15.41 56.096 32.85 83.33 49.634l7.045 4.344-3.432 7.482c-12.12 26.572-24.33 47.087-46.245 70.3l-5.184 5.512-6.46-3.904c-32.974-19.974-74.472-38.724-113.373-53.95l6.826-17.374c36.79 14.4 75.11 32.32 108.153 51.504 15.396-17.198 25.326-33.354 34.713-52.89-43.44-26.91-86.13-53.51-134.69-70.632-23.012 20.357-37.705 45.243-51.942 70.74 8.324 25.495 6.596 53.376-6.596 77.46 48.58-.593 97.994 2.23 150.666 10.26l5.658.837 1.787 5.44c8.85 26.46 11.79 54.41 8.325 83.588l-.987 8.432-8.466-.187c-40.508-.864-80.175-2.138-118.17.234 1.634 15.94-2.31 30.972-7.724 45.025 13.427 28.54 27.38 55.8 48.29 79.39 41.27-19.05 73.564-31.288 115.93-42.85-3.407-13.72-6.918-26.36-11.097-33.62-5.122-8.9-10.207-13.057-17.85-15.256-15.284-4.4-44.533 2.293-92.894 19.454l-6.243-17.594c48.907-17.354 79.702-26.894 104.283-19.82 9.133 2.628 16.884 8.004 23.066 15.46 14.487-7.627 28.415-16.79 42.053-26.996 12.34-45.92 37.29-81.42 66.626-112.107-7.226-13.52-13.208-27.204-20.563-40.613l-3.394-6.168 5-4.965c23.275-23.13 47.34-40.157 71.87-52.487l8.395 16.716c-20.952 10.53-41.503 25.913-61.795 45.152 12.41 23.91 22.263 45.5 39.457 64.826 37.488-27.124 74.943-51.39 116.84-74.938-13.96-30.473-31.345-58.357-56.286-79.462-32.2 13.38-62.527 17.39-92.61 12.29-14.223 13.25-30.094 22.23-48.756 23.337-29.017 1.722-60.74-15.74-99.174-57.672l6.858-6.295.017-.028.006.006 6.88-6.314c36.702 40.043 63.74 52.87 84.32 51.65 18.514-1.1 35.03-14.95 51.684-35.406-28.827-31.81-64.174-59.94-97.822-84.465zM39.324 277.884c-6.06.022-12.104.098-18.142.223 1.673 26.288 5.512 51.288 14.052 73.732 45.88-5.82 93.308-4.96 141.15-3.87 1.518-21.27-.253-41.69-6.058-61.212-45.528-6.565-88.59-9.03-131.002-8.873z" fill="#ffffff" fill-opacity="1" transform="translate(51.2, 51.2) scale(0.8, 0.8) rotate(0, 256, 256) skewX(0) skewY(0)"></path></g></svg>
 | 
			
		||||
| 
		 After Width: | Height: | Size: 2.0 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								icons/empoignade.webp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								icons/empoignade.webp
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| 
		 After Width: | Height: | Size: 5.4 KiB  | 
							
								
								
									
										102
									
								
								icons/tmr/sort-reserve-humide.svg
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										102
									
								
								icons/tmr/sort-reserve-humide.svg
									
									
									
									
									
										Normal 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  | 
@@ -24,6 +24,7 @@ import { RdDCoeur } from "./coeur/rdd-coeur.js";
 | 
			
		||||
 * Extend the basic ActorSheet with some very simple modifications
 | 
			
		||||
 * @extends {ActorSheet}
 | 
			
		||||
 */
 | 
			
		||||
export class RdDActorSheet extends RdDBaseActorSangSheet {
 | 
			
		||||
 | 
			
		||||
  /** @override */
 | 
			
		||||
  static get defaultOptions() {
 | 
			
		||||
@@ -119,6 +120,18 @@ import { RdDCoeur } from "./coeur/rdd-coeur.js";
 | 
			
		||||
 | 
			
		||||
    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;
 | 
			
		||||
 | 
			
		||||
@@ -129,32 +142,18 @@ import { RdDCoeur } from "./coeur/rdd-coeur.js";
 | 
			
		||||
 | 
			
		||||
    this.html.find('.subacteur-coeur-toggle a').click(async event => {
 | 
			
		||||
      const subActorIdactorId = RdDSheetUtility.getEventItemData(event, 'subactor-id')
 | 
			
		||||
      const coeurNombre = $(event.currentTarget).data('coeur-nombre')
 | 
			
		||||
      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-open').click(async event => {
 | 
			
		||||
      const subActorId = RdDSheetUtility.getEventItemData(event, 'subactor-id');
 | 
			
		||||
      this.openSubActeur(subActorId);
 | 
			
		||||
    })
 | 
			
		||||
    this.html.find('.subacteur-delete').click(async event => {
 | 
			
		||||
      const li = RdDSheetUtility.getEventElement(event);
 | 
			
		||||
      const subActorId = li.data("subactor-id");
 | 
			
		||||
      this.deleteSubActeur(subActorId, 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);
 | 
			
		||||
    });
 | 
			
		||||
    this.html.find("input.derivee-value[name='system.compteurs.stress.value']").change(async event => {
 | 
			
		||||
      this.actor.updateCompteurValue("stress", parseInt(event.target.value));
 | 
			
		||||
    });
 | 
			
		||||
@@ -203,7 +202,18 @@ import { RdDCoeur } from "./coeur/rdd-coeur.js";
 | 
			
		||||
    this.html.find('.recettecuisine-label a').click(async event => this.actor.rollRecetteCuisine(RdDSheetUtility.getItemId(event)))
 | 
			
		||||
 | 
			
		||||
    if (game.user.isGM) {
 | 
			
		||||
      // Boutons spéciaux MJs
 | 
			
		||||
      // 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())
 | 
			
		||||
    }
 | 
			
		||||
@@ -225,7 +235,6 @@ import { RdDCoeur } from "./coeur/rdd-coeur.js";
 | 
			
		||||
    });
 | 
			
		||||
    // 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"))
 | 
			
		||||
 | 
			
		||||
@@ -263,12 +272,6 @@ import { RdDCoeur } from "./coeur/rdd-coeur.js";
 | 
			
		||||
      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 => 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))
 | 
			
		||||
 
 | 
			
		||||
@@ -34,6 +34,7 @@ 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";
 | 
			
		||||
 | 
			
		||||
export const MAINS_DIRECTRICES = ['Droitier', 'Gaucher', 'Ambidextre']
 | 
			
		||||
 | 
			
		||||
@@ -153,7 +154,7 @@ export class RdDActor extends RdDBaseActorSang {
 | 
			
		||||
    let potions = this.itemTypes[TYPES.potion]
 | 
			
		||||
      .filter(it => it.system.categorie.toLowerCase().includes('enchant') && !potion.system.prpermanent)
 | 
			
		||||
 | 
			
		||||
    const potionUpdates = Promise.all(potions.map(async potion => {
 | 
			
		||||
    const potionUpdates = await Promise.all(potions.map(async potion => {
 | 
			
		||||
      console.log(potion)
 | 
			
		||||
      let nouveauReve = (potion.system.pr > 0) ? potion.system.pr - 1 : 0;
 | 
			
		||||
      const message = await renderTemplate(`systems/foundryvtt-reve-de-dragon/templates/chat-potionenchantee-chateaudormant.html`, {
 | 
			
		||||
@@ -270,6 +271,7 @@ export class RdDActor extends RdDBaseActorSang {
 | 
			
		||||
      await this.setBonusPotionSoin(0);
 | 
			
		||||
      await this.retourSust(message);
 | 
			
		||||
      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);
 | 
			
		||||
@@ -397,7 +399,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,
 | 
			
		||||
@@ -1802,7 +1804,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) {
 | 
			
		||||
@@ -2636,7 +2641,8 @@ export class RdDActor extends RdDBaseActorSang {
 | 
			
		||||
  static $transformSubActeurSuivant = (suivant, link) => {
 | 
			
		||||
    return mergeObject(RdDBaseActor.extractActorMin(suivant), {
 | 
			
		||||
      ephemere: !suivant.prototypeToken.actorLink,
 | 
			
		||||
      coeur: link.coeur ?? 0
 | 
			
		||||
      coeur: link.coeur ?? 0,
 | 
			
		||||
      prochainCoeur: link.prochainCoeur ?? link.coeur ?? 0
 | 
			
		||||
    })
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
@@ -2646,23 +2652,23 @@ export class RdDActor extends RdDBaseActorSang {
 | 
			
		||||
    )
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  getSuivant(actorId) {
 | 
			
		||||
    const suivant = this.system.subacteurs.suivants.find(it => it.id == actorId);
 | 
			
		||||
  getSuivant(subActorId) {
 | 
			
		||||
    const suivant = this.system.subacteurs.suivants.find(it => it.id == subActorId);
 | 
			
		||||
    if (suivant) {
 | 
			
		||||
      return RdDActor.$transformSubActeurSuivant(game.actors.get(actorId), suivant);
 | 
			
		||||
      return RdDActor.$transformSubActeurSuivant(game.actors.get(suivant.id), suivant);
 | 
			
		||||
    }
 | 
			
		||||
    return undefined
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  getPointsCoeur(actorId) {
 | 
			
		||||
    return this.getSuivant(actorId)?.coeur ?? 0;
 | 
			
		||||
  getPointsCoeur(subActorId) {
 | 
			
		||||
    return this.getSuivant(subActorId)?.coeur ?? 0;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  async setPointsCoeur(actorId, coeur) {
 | 
			
		||||
    const amoureux = this.getSuivant(actorId);
 | 
			
		||||
  async setPointsCoeur(subActorId, coeurs, options = { immediat: false }) {
 | 
			
		||||
    const newSuivants = duplicate(this.system.subacteurs.suivants)
 | 
			
		||||
    const amoureux = newSuivants.find(it => it.id == subActorId);
 | 
			
		||||
    if (amoureux) {
 | 
			
		||||
      const suivants = this.system.subacteurs.suivants;
 | 
			
		||||
      let newSuivants = [...suivants.filter(it => it.id != actorId), { id: actorId, coeur: coeur }]
 | 
			
		||||
      amoureux[options.immediat ? 'coeur' : 'prochainCoeur'] = coeurs
 | 
			
		||||
      await this.update({ 'system.subacteurs.suivants': newSuivants });
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
@@ -2679,7 +2685,7 @@ export class RdDActor extends RdDBaseActorSang {
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  /* -------------------------------------------- */
 | 
			
		||||
  static $transformSubActeurCreature = (actor, link) => RdDBaseActor.extractActorMin(actor.id)
 | 
			
		||||
  static $transformSubActeurCreature = (actor, link) => RdDBaseActor.extractActorMin(actor)
 | 
			
		||||
 | 
			
		||||
  listeMontures() {
 | 
			
		||||
    return RdDActor.$buildSubActorLinks(this.system.subacteurs.montures, RdDActor.$transformSubActeurCreature);
 | 
			
		||||
@@ -2917,9 +2923,7 @@ export class RdDActor extends RdDBaseActorSang {
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  /* -------------------------------------------- */
 | 
			
		||||
  isEffectAllowed(statusId) {
 | 
			
		||||
    return true
 | 
			
		||||
  }
 | 
			
		||||
  isEffectAllowed(effectId) { return true }
 | 
			
		||||
 | 
			
		||||
  /* -------------------------------------------- */
 | 
			
		||||
  async onPreUpdateItem(item, change, options, id) {
 | 
			
		||||
 
 | 
			
		||||
@@ -180,32 +180,32 @@ export class RdDBaseActorReve extends RdDBaseActor {
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  /* -------------------------------------------- */
 | 
			
		||||
  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]);
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -189,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>`
 | 
			
		||||
      });
 | 
			
		||||
    }
 | 
			
		||||
 
 | 
			
		||||
@@ -131,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);
 | 
			
		||||
@@ -152,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);
 | 
			
		||||
 
 | 
			
		||||
@@ -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) {
 | 
			
		||||
 
 | 
			
		||||
@@ -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) {
 | 
			
		||||
 
 | 
			
		||||
@@ -53,22 +53,46 @@ export class RdDCoeur {
 | 
			
		||||
 | 
			
		||||
  static async toggleSubActeurCoeur(actorId, subActorId, toggleCoeur) {
 | 
			
		||||
    const actor = game.actors.get(actorId)
 | 
			
		||||
    if (ReglesOptionnelles.isUsing("chateau-dormant-gardien") && !actor.system.sommeil.nouveaujour) {
 | 
			
		||||
      ui.notifications.warn(`Les changements de points de coeur se font juste avant de gérer Château Dormant, juste avant de passer à un nouveau jour`)
 | 
			
		||||
      return
 | 
			
		||||
    const amoureux = actor.getSuivant(subActorId)
 | 
			
		||||
    if (toggleCoeur <= amoureux.coeur) {
 | 
			
		||||
      if (toggleCoeur > amoureux.prochainCoeur) {
 | 
			
		||||
        toggleCoeur = amoureux.coeur
 | 
			
		||||
      }
 | 
			
		||||
      else {
 | 
			
		||||
        toggleCoeur = amoureux.coeur - 1
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
    const coeur = actor.getPointsCoeur(subActorId);
 | 
			
		||||
    if (toggleCoeur <= coeur) {
 | 
			
		||||
      // TODO: validation?
 | 
			
		||||
      await actor.moralIncDec(-4);
 | 
			
		||||
      actor.setPointsCoeur(subActorId, Math.max(0, coeur - 1));
 | 
			
		||||
      ChatMessage.create({
 | 
			
		||||
        whisper: ChatUtility.getWhisperRecipientsAndGMs(actor.name),
 | 
			
		||||
        content: `Perte de points de coeur arbitraire: ${actor.name} perd 4 points de moral, pour finir à ${actor.getMoralTotal()}.`
 | 
			
		||||
      });
 | 
			
		||||
    else if (toggleCoeur <= amoureux.prochainCoeur) {
 | 
			
		||||
      toggleCoeur = Math.max(amoureux.coeur, toggleCoeur - 1)
 | 
			
		||||
    }
 | 
			
		||||
    else {
 | 
			
		||||
      actor.setPointsCoeur(subActorId, Math.min(4, toggleCoeur));
 | 
			
		||||
    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œur brisé pour ${suivant.name} vous fait perdre 4 points de moral, il vous reste  ${link.coeur} points de Cœur.`
 | 
			
		||||
        count++
 | 
			
		||||
      }
 | 
			
		||||
      else if (diff > 0) {
 | 
			
		||||
        link.coeur = Math.min(prochainCoeur, 4)
 | 
			
		||||
        message.content += `<br>Votre cœur bat fort, vous avez maintenant ${link.coeur} points de Cœur pour ${suivant.name}.`
 | 
			
		||||
        link.prochainCoeur = link.coeur
 | 
			
		||||
        count++
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
    )
 | 
			
		||||
    if (count > 0) {
 | 
			
		||||
      await actor.update({ 'system.subacteurs.suivants': newSuivants });
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
@@ -130,14 +154,13 @@ export class RdDCoeur {
 | 
			
		||||
        ? [infoCoeur.target, infoCoeur.source]
 | 
			
		||||
        : [undefined, undefined]))
 | 
			
		||||
 | 
			
		||||
    const subActorId = partenaire?.actor.id;
 | 
			
		||||
    if (amoureux.perteCoeur) {
 | 
			
		||||
      ui.notifications.warn(`Un point de coeur a déjà été perdu`)
 | 
			
		||||
      ui.notifications.warn(`Le point de cœur a déjà été perdu`)
 | 
			
		||||
    }
 | 
			
		||||
    else if (amoureux.coeur > 0) {
 | 
			
		||||
      const actor = game.actors.get(actorId)
 | 
			
		||||
      if (actor.isOwner) {
 | 
			
		||||
        await actor.setPointsCoeur(subActorId, amoureux.coeur - 1)
 | 
			
		||||
        await actor.setPointsCoeur(partenaire?.actor.id, amoureux.coeur - 1, { immediat: true })
 | 
			
		||||
        amoureux.perteCoeur = true
 | 
			
		||||
        RdDCoeur.addTagsInfoCoeur(infoCoeur)
 | 
			
		||||
      }
 | 
			
		||||
 
 | 
			
		||||
@@ -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);
 | 
			
		||||
 
 | 
			
		||||
@@ -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) {
 | 
			
		||||
 
 | 
			
		||||
@@ -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();
 | 
			
		||||
 
 | 
			
		||||
@@ -44,6 +44,7 @@ export class RdDRoll extends Dialog {
 | 
			
		||||
      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,
 | 
			
		||||
@@ -214,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);
 | 
			
		||||
@@ -314,6 +319,7 @@ export class RdDRoll extends Dialog {
 | 
			
		||||
 | 
			
		||||
    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);
 | 
			
		||||
 
 | 
			
		||||
@@ -53,7 +53,7 @@ export class RdDSheetUtility {
 | 
			
		||||
        targetActorId: actor.id,
 | 
			
		||||
        itemId: item.id,
 | 
			
		||||
        sourceActorId: item.actor?.id,
 | 
			
		||||
        sourceTokenId: item.actor.token?.id,
 | 
			
		||||
        sourceTokenId: item.actor?.token?.id,
 | 
			
		||||
        srcId: objetVersConteneur[item.id],
 | 
			
		||||
        onEnleverConteneur: () => { delete objetVersConteneur[item.id]; },
 | 
			
		||||
        onAjouterDansConteneur: (itemId, conteneurId) => { objetVersConteneur[itemId] = conteneurId; }
 | 
			
		||||
 
 | 
			
		||||
@@ -17,6 +17,7 @@ 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',
 | 
			
		||||
@@ -141,7 +142,7 @@ export class RdDTMRDialog extends Dialog {
 | 
			
		||||
    // Le reste...
 | 
			
		||||
    this.updateValuesDisplay();
 | 
			
		||||
  }
 | 
			
		||||
  
 | 
			
		||||
 | 
			
		||||
  async onDeplacement() {
 | 
			
		||||
    await this.manageRencontre(TMRUtility.getTMR(this._getCoordActor()));
 | 
			
		||||
  }
 | 
			
		||||
@@ -162,9 +163,11 @@ export class RdDTMRDialog extends Dialog {
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  async forceTMRDisplay() {
 | 
			
		||||
    this.bringToTop()
 | 
			
		||||
    if (this.subdialog?.bringToTop) {
 | 
			
		||||
      this.subdialog.bringToTop();
 | 
			
		||||
    if (this.rendered) {
 | 
			
		||||
      this.bringToTop()
 | 
			
		||||
      if (this.subdialog?.bringToTop) {
 | 
			
		||||
        this.subdialog.bringToTop();
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
@@ -247,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[TYPES.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() {
 | 
			
		||||
@@ -342,7 +340,7 @@ export class RdDTMRDialog extends Dialog {
 | 
			
		||||
        this._tellToGM(this.actor.name + " a quitté les terres médianes");
 | 
			
		||||
      }
 | 
			
		||||
      await this.actor.santeIncDec((ReglesOptionnelles.isUsing("appliquer-fatigue") ? "fatigue" : "endurance"),
 | 
			
		||||
      this.cumulFatigue)
 | 
			
		||||
        this.cumulFatigue)
 | 
			
		||||
    }
 | 
			
		||||
    await super.close();
 | 
			
		||||
    this.pixiTMR.close()
 | 
			
		||||
@@ -581,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);
 | 
			
		||||
@@ -592,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);
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
@@ -602,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();
 | 
			
		||||
      });
 | 
			
		||||
@@ -1126,6 +1124,9 @@ export class RdDTMRDialog extends Dialog {
 | 
			
		||||
 | 
			
		||||
  /* -------------------------------------------- */
 | 
			
		||||
  _trackToken(token) {
 | 
			
		||||
    if (!token) {
 | 
			
		||||
      return
 | 
			
		||||
    }
 | 
			
		||||
    if (this.demiReve === token && this.isDemiReveCache()) {
 | 
			
		||||
      return;
 | 
			
		||||
    }
 | 
			
		||||
 
 | 
			
		||||
@@ -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',
 | 
			
		||||
 
 | 
			
		||||
@@ -205,6 +205,7 @@ export class RdDUtility {
 | 
			
		||||
      '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/common/timestamp.hbs',
 | 
			
		||||
@@ -214,15 +215,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-coeur.hbs',
 | 
			
		||||
      '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',
 | 
			
		||||
 
 | 
			
		||||
@@ -64,26 +64,37 @@ 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 coeur',
 | 
			
		||||
    getLabel: (rollData, actor) => 'Ajustement de cœur',
 | 
			
		||||
    getValue: (rollData, actor) => -2 * (rollData.use.coeur?.coeur ?? 0)
 | 
			
		||||
  },
 | 
			
		||||
  moralTotal: {
 | 
			
		||||
@@ -91,11 +102,6 @@ export const referenceAjustements = {
 | 
			
		||||
    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),
 | 
			
		||||
@@ -141,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),
 | 
			
		||||
@@ -159,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] = {
 | 
			
		||||
@@ -191,4 +199,5 @@ export class RollDataAjustements {
 | 
			
		||||
      RdDCarac.isChance(selectedCarac) ||
 | 
			
		||||
      (RdDCarac.isReve(selectedCarac) && !rollData.competence);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -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.includes(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() {
 | 
			
		||||
 
 | 
			
		||||
@@ -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)
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
@@ -18,8 +18,8 @@ export class Draconique {
 | 
			
		||||
  static isTeteDragon(item) { return item.type == TYPES.tete; }
 | 
			
		||||
  static isQueueSouffle(item) { return Draconique.isQueueDragon(item) || Draconique.isSouffleDragon(item); }
 | 
			
		||||
 | 
			
		||||
  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())
 | 
			
		||||
    }
 | 
			
		||||
@@ -90,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,
 | 
			
		||||
 
 | 
			
		||||
@@ -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";
 | 
			
		||||
@@ -26,6 +26,7 @@ export class EffetsDraconiques {
 | 
			
		||||
  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();
 | 
			
		||||
@@ -49,6 +50,7 @@ export class EffetsDraconiques {
 | 
			
		||||
    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);
 | 
			
		||||
 
 | 
			
		||||
@@ -49,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
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -1,5 +1,7 @@
 | 
			
		||||
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 {
 | 
			
		||||
 | 
			
		||||
@@ -19,4 +21,19 @@ export class SortReserve extends Draconique {
 | 
			
		||||
      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' }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -788,6 +788,10 @@ input:is(.blessure-premiers_soins, .blessure-soins_complets) {
 | 
			
		||||
.rdd-roll-dialog div.dialog-content input {
 | 
			
		||||
  font-size: 1rem;
 | 
			
		||||
}
 | 
			
		||||
.rdd-roll-dialog div.dialog-content input[type="checkbox"]{
 | 
			
		||||
  width: 1rem;
 | 
			
		||||
  vertical-align: sub;
 | 
			
		||||
}
 | 
			
		||||
.rdd-roll-part {
 | 
			
		||||
  align-items: center;
 | 
			
		||||
  border-radius: 6px; padding: 3px;
 | 
			
		||||
@@ -1363,43 +1367,37 @@ table.table-nombres-astraux tr:hover {
 | 
			
		||||
  justify-content: flex-start;
 | 
			
		||||
  flex-direction: column;
 | 
			
		||||
  position: absolute;
 | 
			
		||||
  top: 2.75rem;
 | 
			
		||||
  right: 4rem;
 | 
			
		||||
  top: 4.6rem;
 | 
			
		||||
  right: 3.5rem;
 | 
			
		||||
}
 | 
			
		||||
.token-hud-ext.soins {
 | 
			
		||||
  justify-content: flex-start;
 | 
			
		||||
  flex-direction: column;
 | 
			
		||||
  position: absolute;
 | 
			
		||||
  top: 13.2rem;
 | 
			
		||||
  left: -5rem;
 | 
			
		||||
  max-width: 8.5rem
 | 
			
		||||
  top: 14.7rem;
 | 
			
		||||
  left: -6rem;
 | 
			
		||||
  max-width: 8rem;
 | 
			
		||||
  line-height: 1rem;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.token-hud-ext.right {
 | 
			
		||||
  justify-content: flex-start;
 | 
			
		||||
  flex-direction: column;
 | 
			
		||||
  position: absolute;
 | 
			
		||||
  top: 2.75rem;
 | 
			
		||||
  left: 4rem;
 | 
			
		||||
  top: 4.6rem;
 | 
			
		||||
  left: 3.5rem;
 | 
			
		||||
}
 | 
			
		||||
.control-icon.token-hud-icon {
 | 
			
		||||
  width: fit-content;
 | 
			
		||||
div.control-icon.token-hud-icon {
 | 
			
		||||
  width: 9rem;
 | 
			
		||||
  height: fit-content;
 | 
			
		||||
  border-radius: 0.3rem;
 | 
			
		||||
  min-width: 6rem;
 | 
			
		||||
  flex-basis: auto;
 | 
			
		||||
  padding: 0;
 | 
			
		||||
  line-height: 1rem;
 | 
			
		||||
  line-height: 0.95rem;
 | 
			
		||||
  margin: 0.2rem;
 | 
			
		||||
}
 | 
			
		||||
.control-icon.token-hud-icon.right {
 | 
			
		||||
  margin-left: 8px;
 | 
			
		||||
}
 | 
			
		||||
.rdd-hud-menu label {
 | 
			
		||||
  font-size: 0.8rem;
 | 
			
		||||
}
 | 
			
		||||
#token-hud .status-effects.active{
 | 
			
		||||
  z-index: 2;
 | 
			
		||||
}
 | 
			
		||||
/* ======================================== */
 | 
			
		||||
.item-checkbox {
 | 
			
		||||
  height: 25px;
 | 
			
		||||
@@ -1941,6 +1939,14 @@ div.calendar-timestamp-edit select.calendar-signe-heure {
 | 
			
		||||
  padding: 3px;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
aside#tooltip{
 | 
			
		||||
  background: var(--background-tooltip);
 | 
			
		||||
  color: var(--color-text-dark-primary);
 | 
			
		||||
  font-size: 1rem;
 | 
			
		||||
  border-radius: 0.2rem;
 | 
			
		||||
  padding: 0.4rem;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.tooltip :is(.ttt-xp,.ttt-levelup) {
 | 
			
		||||
  width: 250px;
 | 
			
		||||
  background: var(--background-tooltip) !important;
 | 
			
		||||
 
 | 
			
		||||
@@ -1,8 +1,8 @@
 | 
			
		||||
{
 | 
			
		||||
  "id": "foundryvtt-reve-de-dragon",
 | 
			
		||||
  "title": "Rêve de Dragon",
 | 
			
		||||
  "version": "v11.2.2",
 | 
			
		||||
  "download": "https://www.uberwald.me/gitea/public/foundryvtt-reve-de-dragon/archive/foundryvtt-reve-de-dragon-v11.2.2.zip",
 | 
			
		||||
  "version": "11.2.9",
 | 
			
		||||
  "download": "https://www.uberwald.me/gitea/public/foundryvtt-reve-de-dragon/archive/foundryvtt-reve-de-dragon-11.2.9.zip",
 | 
			
		||||
  "manifest": "https://www.uberwald.me/gitea/public/foundryvtt-reve-de-dragon/raw/v11/system.json",
 | 
			
		||||
  "changelog": "https://www.uberwald.me/gitea/public/foundryvtt-reve-de-dragon/raw/branch/v11/changelog.md",
 | 
			
		||||
  "compatibility": {
 | 
			
		||||
 
 | 
			
		||||
@@ -4,14 +4,14 @@
 | 
			
		||||
  <header class="sheet-header">
 | 
			
		||||
    <div class="header-fields">
 | 
			
		||||
      <div class="flexrow">
 | 
			
		||||
        <img class="profile-img" src="{{img}}" data-edit="img" title="{{name}}" />
 | 
			
		||||
        <img class="profile-img" src="{{img}}" data-edit="img" data-tooltip="{{name}}" />
 | 
			
		||||
        <div class="flexcol">
 | 
			
		||||
          <div class="flexrow">
 | 
			
		||||
            <h1 class="charname"><input name="name" type="text" value="{{name}}" placeholder="Name" /></h1>
 | 
			
		||||
            <div class="header-buttons">
 | 
			
		||||
              <span class="encaisser-direct"><a title="Encaisser des dommages"><img class="button-img" src="icons/svg/bones.svg" alt="Encaisser des dommages"/></a></span>
 | 
			
		||||
              <span class="encaisser-direct"><a><img class="button-img" src="icons/svg/bones.svg" data-tooltip="Encaisser des dommages"/></a></span>
 | 
			
		||||
              {{#if @root.options.isGM}}
 | 
			
		||||
              <span class="remise-a-neuf"><a title="Remise à neuf"><img class="button-img" src="icons/svg/regen.svg" alt="Remise à neuf"/></a></span>
 | 
			
		||||
              <span class="remise-a-neuf"><a><img class="button-img" src="icons/svg/regen.svg" data-tooltip="Remise à neuf"/></a></span>
 | 
			
		||||
              {{/if}}
 | 
			
		||||
            </div>
 | 
			
		||||
          </div>
 | 
			
		||||
 
 | 
			
		||||
@@ -4,14 +4,14 @@
 | 
			
		||||
  <header class="sheet-header">
 | 
			
		||||
    <div class="header-fields">
 | 
			
		||||
      <div class="flexrow">
 | 
			
		||||
        <img class="profile-img" src="{{img}}" data-edit="img" title="{{name}}" />
 | 
			
		||||
        <img class="profile-img" src="{{img}}" data-edit="img" data-tooltip="{{name}}" />
 | 
			
		||||
        <div class="flexcol">
 | 
			
		||||
          <div class="flexrow">
 | 
			
		||||
            <h1 class="charname"><input name="name" type="text" value="{{name}}" placeholder="Name" /></h1>
 | 
			
		||||
            <div class="header-buttons">
 | 
			
		||||
              <span class="encaisser-direct"><a title="Encaisser des dommages"><img class="button-img" src="icons/svg/bones.svg" alt="Encaisser des dommages"/></a></span>
 | 
			
		||||
              <span class="encaisser-direct"><a><img class="button-img" src="icons/svg/bones.svg" data-tooltip="Encaisser des dommages"/></a></span>
 | 
			
		||||
              {{#if @root.options.isGM}}
 | 
			
		||||
              <span class="remise-a-neuf"><a title="Remise à neuf"><img class="button-img" src="icons/svg/regen.svg" alt="Remise à neuf"/></a></span>
 | 
			
		||||
              <span class="remise-a-neuf"><a><img class="button-img" src="icons/svg/regen.svg" data-tooltip="Remise à neuf"/></a></span>
 | 
			
		||||
              {{/if}}
 | 
			
		||||
            </div>
 | 
			
		||||
          </div>
 | 
			
		||||
 
 | 
			
		||||
@@ -10,7 +10,7 @@
 | 
			
		||||
            {{>"systems/foundryvtt-reve-de-dragon/templates/actor/header-buttons.html"}}
 | 
			
		||||
          </div>
 | 
			
		||||
          <div class="flexrow">
 | 
			
		||||
            <img class="profile-img" src="{{img}}" data-edit="img" title="{{name}}" />
 | 
			
		||||
            <img class="profile-img" src="{{img}}" data-edit="img" data-tooltip="{{name}}" />
 | 
			
		||||
            {{>"systems/foundryvtt-reve-de-dragon/templates/actor/header-compteurs.html"}}
 | 
			
		||||
            {{>"systems/foundryvtt-reve-de-dragon/templates/actor/header-etat.html"}}
 | 
			
		||||
            {{>"systems/foundryvtt-reve-de-dragon/templates/actor/header-hautreve.html"}}
 | 
			
		||||
@@ -22,14 +22,14 @@
 | 
			
		||||
    {{!-- Sheet Tab Navigation --}}
 | 
			
		||||
    <nav class="sheet-tabs tabs" data-group="primary">
 | 
			
		||||
      {{#if options.isObserver}}
 | 
			
		||||
      <a class="item" data-tab="carac">Carac.</a>
 | 
			
		||||
      <a class="item" data-tab="competences">Compétences</a>
 | 
			
		||||
      <a class="item" data-tab="combat">Combat</a>
 | 
			
		||||
      <a class="item" data-tab="connaissances">Savoirs&Taches</a>
 | 
			
		||||
      <a class="item" data-tab="hautreve">Haut-Rêve</a>
 | 
			
		||||
      <a class="item" data-tab="carac" data-tooltip="Caractéristiques">Carac.</a>
 | 
			
		||||
      <a class="item" data-tab="competences" data-tooltip="Caractéristiques">Compétences</a>
 | 
			
		||||
      <a class="item" data-tab="combat" data-tooltip="Combat et santé">Combat</a>
 | 
			
		||||
      <a class="item" data-tab="connaissances" data-tooltip="Savoirs et tâches">Savoirs&Taches</a>
 | 
			
		||||
      <a class="item" data-tab="hautreve" data-tooltip="Haut-rêve">Haut-Rêve</a>
 | 
			
		||||
      {{/if}}
 | 
			
		||||
      <a class="item" data-tab="items">Équipement</a>
 | 
			
		||||
      <a class="item" data-tab="description">Description</a>
 | 
			
		||||
      <a class="item" data-tab="items" data-tooltip="Liste d'équipement">Équipement</a>
 | 
			
		||||
      <a class="item" data-tab="description" data-tooltip="Description et compagnons">Description</a>
 | 
			
		||||
    </nav>
 | 
			
		||||
 | 
			
		||||
    {{!-- Sheet Body --}}
 | 
			
		||||
@@ -70,9 +70,13 @@
 | 
			
		||||
            {{#if options.vueDetaillee}}
 | 
			
		||||
                
 | 
			
		||||
              {{#if @root.options.vueArchetype}}
 | 
			
		||||
              <a class="competence-archetype toggle-archetype chat-card-button-pushed"><i class="fa-solid fa-up-right-from-square"></i>Incarnation</a>
 | 
			
		||||
              <a class="competence-archetype toggle-archetype chat-card-button-pushed" data-tooltip="Retour à la vue détaillée des compétences">
 | 
			
		||||
                <i class="fa-solid fa-up-right-from-square"></i>Incarnation
 | 
			
		||||
              </a>
 | 
			
		||||
              {{else}}
 | 
			
		||||
              <a class="competence-archetype toggle-archetype chat-card-button"><i class="fa-solid fa-people-line"></i>Archétype</a>
 | 
			
		||||
              <a class="competence-archetype toggle-archetype chat-card-button" data-tooltip="Gestion de l'archétype et de la réincarnation">
 | 
			
		||||
                <i class="fa-solid fa-people-line"></i>Archétype
 | 
			
		||||
              </a>
 | 
			
		||||
              {{/if}}
 | 
			
		||||
            {{/if}}
 | 
			
		||||
          </span>
 | 
			
		||||
 
 | 
			
		||||
@@ -4,7 +4,7 @@
 | 
			
		||||
  <header class="sheet-header">
 | 
			
		||||
    <div class="header-fields">
 | 
			
		||||
      <div class="flexrow">
 | 
			
		||||
        <img class="profile-img" src="{{img}}" data-edit="img" title="{{name}}" />
 | 
			
		||||
        <img class="profile-img" src="{{img}}" data-edit="img" data-tooltip="{{name}}" />
 | 
			
		||||
        <div class="flexcol">
 | 
			
		||||
          <h1 class="charname"><input name="name" type="text" value="{{name}}" placeholder="Name" /></h1>
 | 
			
		||||
          <div class="flexrow">
 | 
			
		||||
 
 | 
			
		||||
@@ -4,8 +4,8 @@
 | 
			
		||||
  {{#each (trier recettesAlchimiques) as |recette id|}}
 | 
			
		||||
  <li class="item flexrow list-item" data-item-id="{{recette._id}}"><span class="competence-title recette-label item-edit"><a>{{recette.name}}</a></span>
 | 
			
		||||
    <div class="item-controls flex-shrink">
 | 
			
		||||
      <a class="item-edit" title="Edit Item"><i class="fas fa-edit"></i></a>
 | 
			
		||||
      <a class="item-delete" title="Delete Item"><i class="fas fa-trash"></i></a>
 | 
			
		||||
      <a class="item-edit" data-tooltip="Edit Item"><i class="fas fa-edit"></i></a>
 | 
			
		||||
      <a class="item-delete" data-tooltip="Delete Item"><i class="fas fa-trash"></i></a>
 | 
			
		||||
    </div>
 | 
			
		||||
  </li>
 | 
			
		||||
  {{/each}}
 | 
			
		||||
 
 | 
			
		||||
@@ -2,7 +2,8 @@
 | 
			
		||||
  <ul class="item-list">
 | 
			
		||||
    {{#if @root.options.isGM}}
 | 
			
		||||
    <li>
 | 
			
		||||
    <a class="nouvelle-incarnation chat-card-button"><i class="fa-solid fa-person-circle-plus"></i> Nouvelle incarnation</a>
 | 
			
		||||
    <a class="nouvelle-incarnation chat-card-button" data-tooltip="Création d'une nouvelle incarnation de l'archétype">
 | 
			
		||||
      <i class="fa-solid fa-person-circle-plus"></i> Nouvelle incarnation</a>
 | 
			
		||||
    </li>
 | 
			
		||||
    {{/if}}
 | 
			
		||||
    <li><hr></li>
 | 
			
		||||
 
 | 
			
		||||
@@ -1,2 +1,7 @@
 | 
			
		||||
<h3>Astrologie</h3>
 | 
			
		||||
<span class="astrologie-label"><a name="jet-astrologie">Astrologie : Nombres Astraux</a></span>
 | 
			
		||||
<span class="astrologie-label chat-card-button">
 | 
			
		||||
  <a name="jet-astrologie">
 | 
			
		||||
    <i class="fa-solid fa-moon-over-sun"></i>
 | 
			
		||||
    Astrologie: Nombres Astraux
 | 
			
		||||
  </a>
 | 
			
		||||
</span>
 | 
			
		||||
 
 | 
			
		||||
@@ -1,7 +1,7 @@
 | 
			
		||||
<li class="item item-blessure flexrow list-item blessure-active-{{lowercase system.label}}" data-item-id="{{id}}">
 | 
			
		||||
<li class="item item-blessure flexrow list-item blessure-active-{{lowercase system.label}}" data-item-id="{{id}}"
 | 
			
		||||
    data-tooltip="Blessure {{system.label}}">
 | 
			
		||||
  <span class="blessure-control">
 | 
			
		||||
    <img class="sheet-competence-img" src="{{img}}" />
 | 
			
		||||
    <i class="fas fa-skull-crossbones"></i>
 | 
			
		||||
    {{system.label}} 
 | 
			
		||||
  </span>
 | 
			
		||||
  {{#if (gt system.gravite 6)}}
 | 
			
		||||
@@ -34,8 +34,8 @@
 | 
			
		||||
  {{#if system.localisation}}<span>{{system.localisation}}</span>{{/if}}
 | 
			
		||||
  </span>
 | 
			
		||||
  <span class="item-controls">
 | 
			
		||||
    <a class="item-edit" title="Editer"><i class="fas fa-edit"></i></a>
 | 
			
		||||
    <a class="item-delete" title="Supprimer"><i class="fas fa-trash"></i></a>
 | 
			
		||||
    <a class="item-montrer" title="Montrer"><i class="fas fa-comment"></i></a>
 | 
			
		||||
    <a class="item-edit" data-tooltip="Editer"><i class="fas fa-edit"></i></a>
 | 
			
		||||
    <a class="item-delete" data-tooltip="Supprimer"><i class="fas fa-trash"></i></a>
 | 
			
		||||
    <a class="item-montrer" data-tooltip="Montrer"><i class="fas fa-comment"></i></a>
 | 
			
		||||
  </span>
 | 
			
		||||
</li>
 | 
			
		||||
 
 | 
			
		||||
@@ -1,8 +1,8 @@
 | 
			
		||||
<h4>blessures</h4>
 | 
			
		||||
<div>
 | 
			
		||||
  <a class="chat-card-button creer-blessure-legere"><i class="fas fa-plus-circle"></i> légère</a>
 | 
			
		||||
  <a class="chat-card-button creer-blessure-grave"><i class="fas fa-plus-circle"></i> grave</a>
 | 
			
		||||
  <a class="chat-card-button creer-blessure-critique"><i class="fas fa-plus-circle"></i> critique</a>
 | 
			
		||||
  <a class="chat-card-button creer-blessure-legere" data-tooltip="Ajouter une blessure légère"><i class="fas fa-plus-circle"></i> légère</a>
 | 
			
		||||
  <a class="chat-card-button creer-blessure-grave" data-tooltip="Ajouter une blessure grave"><i class="fas fa-plus-circle"></i> grave</a>
 | 
			
		||||
  <a class="chat-card-button creer-blessure-critique" data-tooltip="Ajouter une blessure critque"><i class="fas fa-plus-circle"></i> critique</a>
 | 
			
		||||
</div>
 | 
			
		||||
 | 
			
		||||
<ul class="item-list alterne-list">
 | 
			
		||||
 
 | 
			
		||||
@@ -7,7 +7,7 @@
 | 
			
		||||
  <br>
 | 
			
		||||
  <li class="caracteristique flexrow list-item">
 | 
			
		||||
    <label class="flexrow derivee-label">{{system.compteurs.stress.label}}
 | 
			
		||||
      <a class="stress-test" title="Transformer le stress"><i class="fa-regular fa-moon"></i></a>
 | 
			
		||||
      <a class="stress-test" data-tooltip="Transformer le stress"><i class="fa-regular fa-moon"></i></a>
 | 
			
		||||
    </label>
 | 
			
		||||
    <input class="derivee-value" type="number" name="system.compteurs.stress.value" value="{{system.compteurs.stress.value}}" data-dtype="number"/>
 | 
			
		||||
  </li>
 | 
			
		||||
@@ -15,9 +15,9 @@
 | 
			
		||||
    <label class="derivee-label">{{system.compteurs.moral.label}}
 | 
			
		||||
 | 
			
		||||
      <span>
 | 
			
		||||
        <a class="flex-shrink moral-malheureux" title="Jet de moral situation malheureuse"><i class="fa-regular fa-face-frown"></i></a>
 | 
			
		||||
        <a class="flex-shrink moral-neutre" title="Jet de moral situation neutre"><i class="fa-regular fa-face-meh"></i></a>
 | 
			
		||||
        <a class="flex-shrink moral-heureux" title="Jet de moral situation heureuse"><i class="fa-regular fa-face-smile"></i></a>
 | 
			
		||||
        <a class="flex-shrink moral-malheureux" data-tooltip="Jet de moral situation malheureuse"><i class="fa-regular fa-face-frown"></i></a>
 | 
			
		||||
        <a class="flex-shrink moral-neutre" data-tooltip="Jet de moral situation neutre"><i class="fa-regular fa-face-meh"></i></a>
 | 
			
		||||
        <a class="flex-shrink moral-heureux" data-tooltip="Jet de moral situation heureuse"><i class="fa-regular fa-face-smile"></i></a>
 | 
			
		||||
      </span>
 | 
			
		||||
    </label>
 | 
			
		||||
    <input class="derivee-value" type="number" name="system.compteurs.moral.value" value="{{system.compteurs.moral.value}}" data-dtype="number"/>
 | 
			
		||||
@@ -29,7 +29,7 @@
 | 
			
		||||
    <input class="derivee-value" type="number" name="system.compteurs.dissolution.value" value="{{system.compteurs.dissolution.value}}" data-dtype="number"/>
 | 
			
		||||
  </li>
 | 
			
		||||
  <li class="caracteristique flexrow list-item">
 | 
			
		||||
    <label class="derivee-label chance-actuelle"><a>Chance actuelle</a></label>
 | 
			
		||||
    <label class="derivee-label chance-actuelle" data-tooltip="Jet de chance actuelle"><a>Chance actuelle</a></label>
 | 
			
		||||
    <input class="derivee-value" type="number" name="system.compteurs.chance.value" value="{{system.compteurs.chance.value}}" data-dtype="number"/>
 | 
			
		||||
  </li>
 | 
			
		||||
  <li class="caracteristique flexrow list-item">
 | 
			
		||||
@@ -52,7 +52,7 @@
 | 
			
		||||
    <label class="derivee-label" for="system.compteurs.eau.value">bu</label>
 | 
			
		||||
    <input class="derivee-value" type="number" name="system.compteurs.eau.value" value="{{system.compteurs.eau.value}}" data-dtype="number"/>
 | 
			
		||||
  </li>  
 | 
			
		||||
  <li class="caracteristique flexrow list-item">
 | 
			
		||||
  <li class="caracteristique flexrow list-item"  data-tooltip="Niveau d'éthylisme">
 | 
			
		||||
    <label class="derivee-label" for="system.compteurs.ethylisme.value">{{system.compteurs.ethylisme.label}}</label>
 | 
			
		||||
    <select class="derivee-value" name="system.compteurs.ethylisme.value" data-dtype="Number">
 | 
			
		||||
      {{#select system.compteurs.ethylisme.value}}
 | 
			
		||||
 
 | 
			
		||||
@@ -17,7 +17,7 @@
 | 
			
		||||
              Vous pouvez dépenser {{carac.xpNext}} points d'Experience pour augmenter de 1 votre caractéristique {{carac.label}}
 | 
			
		||||
              </span>
 | 
			
		||||
              <a name={{key}}>{{carac.label}}</a>
 | 
			
		||||
              <a class="carac-xp-augmenter" name="augmenter.{{key}}" title="Augmenter">
 | 
			
		||||
              <a class="carac-xp-augmenter" name="augmenter.{{key}}" data-tooltip="Augmenter la caractéristique avec l'expérience">
 | 
			
		||||
                <i class="fas fa-arrow-alt-circle-up"></i>
 | 
			
		||||
              </a>
 | 
			
		||||
            </span>
 | 
			
		||||
 
 | 
			
		||||
@@ -1,21 +1,20 @@
 | 
			
		||||
<h4>Soins</h4>
 | 
			
		||||
<div>
 | 
			
		||||
  <a class="chat-card-button creer-tache-blessure-legere"><i class="fas fa-first-aid"></i> légère</a>
 | 
			
		||||
  <a class="chat-card-button creer-tache-blessure-grave"><i class="fas fa-first-aid"></i> grave</a>
 | 
			
		||||
  <a class="chat-card-button creer-tache-blessure-critique"><i class="fas fa-first-aid"></i> critique</a>
 | 
			
		||||
  <a class="chat-card-button creer-tache-blessure-legere" data-tooltip="Soigner une blessure légère"><i class="fas fa-first-aid"></i> légère</a>
 | 
			
		||||
  <a class="chat-card-button creer-tache-blessure-grave" data-tooltip="Soigner une blessure grave"><i class="fas fa-first-aid"></i> grave</a>
 | 
			
		||||
  <a class="chat-card-button creer-tache-blessure-critique" data-tooltip="Soigner une blessure critique"><i class="fas fa-first-aid"></i> critique</a>
 | 
			
		||||
</div>
 | 
			
		||||
<ul class="item-list alterne-list">
 | 
			
		||||
  {{#each taches as |tache id|}}
 | 
			
		||||
    {{#if (eq tache.system.competence 'Chirurgie')}}
 | 
			
		||||
    <li class="item flexrow list-item" data-item-id="{{tache._id}}">
 | 
			
		||||
      <img class="sheet-competence-img" src="{{tache.img}}" />
 | 
			
		||||
    <li class="item flexrow list-item" data-item-id="{{tache._id}}"
 | 
			
		||||
      data-tooltip="Premiers soins: {{tache.name}} ({{tache.system.points_de_tache_courant}}/{{tache.system.points_de_tache}})">
 | 
			
		||||
      <img class="sheet-competence-img" src="{{tache.img}}"/>
 | 
			
		||||
      <span class="competence-title tache-label"><a>{{tache.name}}
 | 
			
		||||
        ({{tache.system.points_de_tache_courant}}{{#if
 | 
			
		||||
          (or @root.options.isGM (not tache.system.cacher_points_de_tache))
 | 
			
		||||
        }}/{{tache.system.points_de_tache}}{{/if}})</a></span>
 | 
			
		||||
        ({{tache.system.points_de_tache_courant}}/{{tache.system.points_de_tache}})</a></span>
 | 
			
		||||
      <div class="item-controls flex-shrink">
 | 
			
		||||
        <a class="item-edit" title="Edit Item"><i class="fas fa-edit"></i></a>
 | 
			
		||||
        <a class="item-delete" title="Delete Item"><i class="fas fa-trash"></i></a>
 | 
			
		||||
        <a class="item-edit" data-tooltip="Edit Item"><i class="fas fa-edit"></i></a>
 | 
			
		||||
        <a class="item-delete" data-tooltip="Delete Item"><i class="fas fa-trash"></i></a>
 | 
			
		||||
      </div>
 | 
			
		||||
    </li>
 | 
			
		||||
    {{/if}}
 | 
			
		||||
 
 | 
			
		||||
@@ -10,11 +10,12 @@
 | 
			
		||||
  <li class="item flexrow list-item"
 | 
			
		||||
      data-item-id="{{arme._id}}"
 | 
			
		||||
      data-arme-name="{{arme.name}}"
 | 
			
		||||
      data-competence-name="{{arme.system.competence}}" >
 | 
			
		||||
      data-competence-name="{{arme.system.competence}}" 
 | 
			
		||||
      data-tooltip="{{arme.name}}: niveau {{plusMoins arme.system.niveau}}">
 | 
			
		||||
    <span class="arme-label">
 | 
			
		||||
      <a>
 | 
			
		||||
        {{#if arme.img}}
 | 
			
		||||
        <img class="sheet-competence-img" src="{{arme.img}}"/>
 | 
			
		||||
        <img class="sheet-competence-img" src="{{arme.img}}" data-tooltip="{{arme.name}}"/>
 | 
			
		||||
        {{/if}}
 | 
			
		||||
        <span>{{arme.name}}</span>
 | 
			
		||||
      </a>
 | 
			
		||||
@@ -24,14 +25,15 @@
 | 
			
		||||
    <span class="competence-value">{{plusMoins arme.system.niveau}}</span>
 | 
			
		||||
    <span class="competence-value">{{plusMoins arme.system.dommagesReels}}</span>
 | 
			
		||||
    <span class="competence-value"></span>
 | 
			
		||||
    <span class="initiative-value arme-initiative"><a>{{arme.system.initiative}}</a></span>
 | 
			
		||||
    <span class="initiative-value arme-initiative"><a data-tooltip="{{arme.name}}: initiative {{plusMoins arme.system.initiative}}">{{arme.system.initiative}}</a></span>
 | 
			
		||||
  </li>
 | 
			
		||||
  {{/each}}
 | 
			
		||||
  {{#each esquives as |esq key|}}
 | 
			
		||||
  <li class="item flexrow list-item" data-item-id="{{esq._id}}">
 | 
			
		||||
  <li class="item flexrow list-item" data-item-id="{{esq._id}}"
 | 
			
		||||
    data-tooltip="{{esq.name}}: niveau {{plusMoins esq.system.niveau}}">
 | 
			
		||||
    <span class="competence-label">
 | 
			
		||||
      <a class="competence-label" name="{{esq.name}}">
 | 
			
		||||
        <img class="sheet-competence-img" src="{{esq.img}}"/>
 | 
			
		||||
        <img class="sheet-competence-img" src="{{esq.img}}" />
 | 
			
		||||
        <span>{{esq.name}}</span>
 | 
			
		||||
      </a>
 | 
			
		||||
    </span>
 | 
			
		||||
@@ -50,7 +52,8 @@
 | 
			
		||||
  </li>
 | 
			
		||||
  {{#each empoignades as |emp key|}}
 | 
			
		||||
  <li class="item flexrow list-item"
 | 
			
		||||
      data-item-id="{{emp._id}}" data-arme-name="{{emp.name}}">
 | 
			
		||||
      data-item-id="{{emp._id}}" data-arme-name="{{emp.name}}"
 | 
			
		||||
      data-tooltip="{{emp.name}}: niveau {{plusMoins emp.system.niveau}}">
 | 
			
		||||
      <span class="empoignade-label">
 | 
			
		||||
      <a>
 | 
			
		||||
        {{#if emp.img}}
 | 
			
		||||
@@ -61,8 +64,8 @@
 | 
			
		||||
    </span>
 | 
			
		||||
    <span class="competence-value">{{emp.system.pointsemp}}</span>
 | 
			
		||||
    <div class="item-controls">
 | 
			
		||||
      <a class="item-edit" title="Edit Item"><i class="fas fa-edit"></i></a>
 | 
			
		||||
      <a class="item-delete" title="Delete Item"><i class="fas fa-trash"></i></a>
 | 
			
		||||
      <a class="item-edit" data-tooltip="Edit Item"><i class="fas fa-edit"></i></a>
 | 
			
		||||
      <a class="item-delete" data-tooltip="Delete Item"><i class="fas fa-trash"></i></a>
 | 
			
		||||
    </div>
 | 
			
		||||
  </li>
 | 
			
		||||
  {{/each}}
 | 
			
		||||
 
 | 
			
		||||
@@ -6,11 +6,11 @@
 | 
			
		||||
      <div class="flexrow">
 | 
			
		||||
        {{#if token}}
 | 
			
		||||
          {{#if options.isOwner}}
 | 
			
		||||
          <img class="profile-img dimmed" src="{{img}}" data-edit="img" title="{{name}}" />
 | 
			
		||||
          <img class="profile-img dimmed" src="{{img}}" data-edit="img"/>
 | 
			
		||||
          {{/if}}
 | 
			
		||||
          <img class="profile-img-token" src="{{token.img}}" title="{{name}}" />
 | 
			
		||||
          <img class="profile-img-token" src="{{token.img}}"/>
 | 
			
		||||
        {{else}}
 | 
			
		||||
        <img class="profile-img" src="{{img}}" data-edit="img" title="{{name}}" />
 | 
			
		||||
        <img class="profile-img" src="{{img}}" data-edit="img"/>
 | 
			
		||||
        {{/if}}
 | 
			
		||||
        <div class="flexcol">
 | 
			
		||||
          <h1 class="charname"><input name="name" type="text" value="{{name}}" placeholder="Name" /></h1>
 | 
			
		||||
@@ -68,10 +68,10 @@
 | 
			
		||||
            <input {{@root.disabled}} type="number" name="services[{{key}}].system.qualite" value="{{service.system.qualite}}" data-dtype="Number" min="-10" max="10"/>
 | 
			
		||||
            <input {{@root.disabled}} type="number" class="input-prix" name="services[{{key}}].system.cout" value="{{numberFormat service.system.cout decimals=2 sign=false}}" data-dtype="Number" min="0" />
 | 
			
		||||
            <div class="item-controls">
 | 
			
		||||
              <a class="service-acheter" title="Acheter"><i class="fa-sharp fa-solid fa-coins"></i></a>
 | 
			
		||||
              <a class="service-acheter" data-tooltip="Acheter"><i class="fa-sharp fa-solid fa-coins"></i></a>
 | 
			
		||||
              {{#unless @root.disabled}}
 | 
			
		||||
              <a class="service-vendre" title="Proposer"><i class="fas fa-comments-dollar"></i></a>
 | 
			
		||||
              <a class="service-delete" title="Supprimer"><i class="fas fa-trash"></i></a>
 | 
			
		||||
              <a class="service-vendre" data-tooltip="Proposer"><i class="fas fa-comments-dollar"></i></a>
 | 
			
		||||
              <a class="service-delete" data-tooltip="Supprimer"><i class="fas fa-trash"></i></a>
 | 
			
		||||
              {{/unless}}
 | 
			
		||||
            </div>
 | 
			
		||||
          </li>
 | 
			
		||||
 
 | 
			
		||||
@@ -9,7 +9,7 @@
 | 
			
		||||
      {{else}}far fa-plus-square
 | 
			
		||||
      {{/if~}}"></i>
 | 
			
		||||
    {{/if}}
 | 
			
		||||
      <img class="sheet-competence-img" src="{{item.img}}" title="{{item.name}}"/>
 | 
			
		||||
      <img class="sheet-competence-img" src="{{item.img}}" data-tooltip="{{item.name}}"/>
 | 
			
		||||
      <span>{{item.name}}</span>
 | 
			
		||||
    </a>
 | 
			
		||||
  </span>
 | 
			
		||||
@@ -41,19 +41,19 @@
 | 
			
		||||
  </span>
 | 
			
		||||
  <span class="equipement-actions item-controls">
 | 
			
		||||
    {{#if options.isOwner}}
 | 
			
		||||
      <a class="item-edit" title="Editer"><i class="fas fa-edit"></i></a>
 | 
			
		||||
      <a class="item-edit" data-tooltip="Editer"><i class="fas fa-edit"></i></a>
 | 
			
		||||
      {{#unless (and (eq item.type 'conteneur') (not vide))}}
 | 
			
		||||
        <a class="item-delete" title="Supprimer"><i class="fas fa-trash"></i></a>
 | 
			
		||||
        <a class="item-delete" data-tooltip="Supprimer"><i class="fas fa-trash"></i></a>
 | 
			
		||||
        {{#if (or item.parent.system.illimite (ne item.system.quantite 0))}}
 | 
			
		||||
        <a class="item-vendre" title="Vendre"><i class="fas fa-comments-dollar"></i></a>
 | 
			
		||||
        <a class="item-vendre" data-tooltip="Vendre"><i class="fas fa-comments-dollar"></i></a>
 | 
			
		||||
        {{/if}}
 | 
			
		||||
      {{/unless}}
 | 
			
		||||
    {{/if}}
 | 
			
		||||
    {{#unless (and (eq item.type 'conteneur') (not vide))}}
 | 
			
		||||
      {{#if (or item.parent.system.illimite (gt item.system.quantite 0))}}
 | 
			
		||||
      <a class="item-acheter" title="Acheter"><i class="fa-regular fa-coins"></i></a>
 | 
			
		||||
      <a class="item-acheter" data-tooltip="Acheter"><i class="fa-regular fa-coins"></i></a>
 | 
			
		||||
      {{/if}}
 | 
			
		||||
      <a class="item-montrer" title="Montrer"><i class="fas fa-comment"></i></a>
 | 
			
		||||
      <a class="item-montrer" data-tooltip="Montrer"><i class="fas fa-comment"></i></a>
 | 
			
		||||
    {{/unless}}
 | 
			
		||||
  </span>
 | 
			
		||||
</li>
 | 
			
		||||
 
 | 
			
		||||
@@ -1,7 +1,7 @@
 | 
			
		||||
<h4>Boutique</h4>
 | 
			
		||||
<span class="item-name">
 | 
			
		||||
  {{#if options.isGM}}
 | 
			
		||||
  <a class="chat-card-button creer-un-objet">Nouvel objet</a>
 | 
			
		||||
  <a class="chat-card-button creer-un-objet" data-tooltip="Créer un nouvel objet dans la boutique">Nouvel objet</a>
 | 
			
		||||
  <a class="chat-card-button nettoyer-conteneurs">Tout vider</a>
 | 
			
		||||
  {{/if}}
 | 
			
		||||
  <span class="embed-inline">
 | 
			
		||||
 
 | 
			
		||||
@@ -2,7 +2,7 @@
 | 
			
		||||
  {{#each (trier competences) as |comp key|}}
 | 
			
		||||
  <li class="item flexrow list-item" data-item-id="{{comp._id}}">
 | 
			
		||||
    <a class="competence-label">
 | 
			
		||||
      <img class="sheet-competence-img" src="{{comp.img}}" />
 | 
			
		||||
      <img class="sheet-competence-img" src="{{comp.img}}" data-tooltip="{{comp.name}}"/>
 | 
			
		||||
      <span>{{comp.name}}</span>
 | 
			
		||||
    </a>
 | 
			
		||||
 | 
			
		||||
@@ -23,8 +23,8 @@
 | 
			
		||||
      />
 | 
			
		||||
    {{#if @root.options.vueDetaillee}}
 | 
			
		||||
    <div class="item-controls">
 | 
			
		||||
      <a class="item-edit" title="Edit Item"><i class="fas fa-edit"></i></a>
 | 
			
		||||
      <a class="item-delete" title="Delete Item"><i class="fas fa-trash"></i></a>
 | 
			
		||||
      <a class="item-edit" data-tooltip="Edit Item"><i class="fas fa-edit"></i></a>
 | 
			
		||||
      <a class="item-delete" data-tooltip="Delete Item"><i class="fas fa-trash"></i></a>
 | 
			
		||||
    </div>
 | 
			
		||||
    {{/if}}
 | 
			
		||||
  </li>
 | 
			
		||||
 
 | 
			
		||||
@@ -3,11 +3,11 @@
 | 
			
		||||
  <ol class="item-list alterne-list">
 | 
			
		||||
    {{#each possessions as |possession key|}}
 | 
			
		||||
    <li class="item flexrow list-item" data-item-id="{{possession._id}}">
 | 
			
		||||
      <img class="sheet-competence-img" src="{{possession.img}}" />
 | 
			
		||||
      <img class="sheet-competence-img" src="{{possession.img}}" data-tooltip="{{possession.name}}"/>
 | 
			
		||||
      <span class="competence-label">{{possession.name}}</span>
 | 
			
		||||
      <div class="item-controls">
 | 
			
		||||
        <a class="item-edit" title="Edit Item"><i class="fas fa-edit"></i></a>
 | 
			
		||||
        <a class="item-delete" title="Delete Item"><i class="fas fa-trash"></i></a>
 | 
			
		||||
        <a class="item-edit" data-tooltip="Edit Item"><i class="fas fa-edit"></i></a>
 | 
			
		||||
        <a class="item-delete" data-tooltip="Delete Item"><i class="fas fa-trash"></i></a>
 | 
			
		||||
      </div>
 | 
			
		||||
    </li>
 | 
			
		||||
    {{/each}}
 | 
			
		||||
 
 | 
			
		||||
@@ -1,13 +1,13 @@
 | 
			
		||||
{{#unless system.isHidden}}
 | 
			
		||||
  <li class="item flexrow list-item {{#if system.isLevelUp}}xp-level-up tooltip{{/if}}" data-item-id="{{_id}}">
 | 
			
		||||
    <a class="competence-label" name="{{name}}">
 | 
			
		||||
    <a class="competence-label" name="{{name}}" data-tooltip="Niveau {{plusMoins system.niveau}} en {{name}}">
 | 
			
		||||
      <img class="sheet-competence-img" src="{{img}}"/>
 | 
			
		||||
      <span>{{name}}</span>
 | 
			
		||||
    </a>
 | 
			
		||||
 | 
			
		||||
    {{#if system.isLevelUp}}
 | 
			
		||||
    <span class="tooltiptext ttt-levelup">Vous pouvez dépenser {{system.xpNext}} points d'Experience pour augmenter de 1 votre compétence {{name}}</span>
 | 
			
		||||
    <a class="competence-xp-augmenter" compname="{{name}}" title="Augmenter">
 | 
			
		||||
    <a class="competence-xp-augmenter" compname="{{name}}">
 | 
			
		||||
      <i class="fas fa-arrow-alt-circle-up"></i>
 | 
			
		||||
    </a>
 | 
			
		||||
    {{/if}}
 | 
			
		||||
@@ -35,18 +35,18 @@
 | 
			
		||||
    <div class="item-controls">
 | 
			
		||||
      {{#if system.stressXpMax}}
 | 
			
		||||
      <a class="competence-stress-augmenter" compname="{{name}}" 
 | 
			
		||||
            title="Dépenser {{system.stressXpMax}} points de stress {{#if system.isStressLevelUp}} pour augmenter d'un niveau {{/if}}">
 | 
			
		||||
           data-tooltip="Dépenser {{system.stressXpMax}} points de stress {{#if system.isStressLevelUp}} pour augmenter d'un niveau {{/if}}">
 | 
			
		||||
            <i class="fas fa-arrow-alt-circle-up allouer-stress{{#if system.isStressLevelUp}}-level-up{{/if}}"></i>
 | 
			
		||||
      </a>
 | 
			
		||||
      {{else}}
 | 
			
		||||
      <i class="far fa-circle"></i>
 | 
			
		||||
      {{/if}}
 | 
			
		||||
      <input class="competence-archetype niveau-archetype" type="text" compname="{{name}}" name="comp-archetype-{{name}}"
 | 
			
		||||
            value="{{plusMoins system.niveau_archetype}}" data-dtype="number"
 | 
			
		||||
            value="{{plusMoins system.niveau_archetype}}" data-dtype="number" data-tooltip="Niveau d'archétype {{plusMoins system.niveau_archetype}}"
 | 
			
		||||
            {{#if (not @root.options.vueArchetype)}}disabled{{/if}} />
 | 
			
		||||
      <a class="item-edit" title="Modifier"><i class="fas fa-edit"></i></a>
 | 
			
		||||
      <a class="item-edit" data-tooltip="Modifier"><i class="fas fa-edit"></i></a>
 | 
			
		||||
      {{#if @root.options.isGM}}
 | 
			
		||||
      <a class="item-delete" title="Supprimer"><i class="fas fa-trash"></i></a>
 | 
			
		||||
      <a class="item-delete" data-tooltip="Supprimer"><i class="fas fa-trash"></i></a>
 | 
			
		||||
      {{/if}}
 | 
			
		||||
    </div>
 | 
			
		||||
    {{/if}}
 | 
			
		||||
 
 | 
			
		||||
@@ -1,13 +1,14 @@
 | 
			
		||||
<li class="item flexrow" data-attribute={{key}} data-item-id="{{queue._id}}">
 | 
			
		||||
  <img class="sheet-competence-img" src="{{queue.img}}" />
 | 
			
		||||
<li class="item flexrow" data-attribute={{key}} data-item-id="{{queue._id}}" 
 | 
			
		||||
    data-tooltip="{{#if (eq queue.type 'ombre')}}Ombre de thanatos{{else}}Queue{{/if}}: {{queue.name}}"/>
 | 
			
		||||
  <img class="sheet-competence-img" src="{{queue.img}}">
 | 
			
		||||
  <span class="item-edit flex-grow">
 | 
			
		||||
    {{#if (eq queue.type 'ombre')}}
 | 
			
		||||
    <img class="sheet-competence-img" src="systems/foundryvtt-reve-de-dragon/icons/competence_thanatos.webp" />
 | 
			
		||||
    <img class="sheet-competence-img" src="systems/foundryvtt-reve-de-dragon/icons/competence_thanatos.webp"/>
 | 
			
		||||
    {{/if}}
 | 
			
		||||
    <a>{{queue.name}}</a>
 | 
			
		||||
  </span>
 | 
			
		||||
  <div class="item-controls">
 | 
			
		||||
    <a class="item-delete" title="Delete Item"><i class="fas fa-trash"></i></a>
 | 
			
		||||
    <a class="item-delete" data-tooltip="Delete Item"><i class="fas fa-trash"></i></a>
 | 
			
		||||
    {{#if queue.system.refoulement}}
 | 
			
		||||
    <a class="item-action">Refouler</a>
 | 
			
		||||
    {{/if}}
 | 
			
		||||
 
 | 
			
		||||
@@ -2,11 +2,11 @@
 | 
			
		||||
<h3>Souffles</h3>
 | 
			
		||||
<ul class="item-list">
 | 
			
		||||
  {{#each souffles as |souffle key|}}
 | 
			
		||||
  <li class="item flexrow" data-attribute={{key}} data-item-id="{{souffle._id}}">
 | 
			
		||||
    <img class="sheet-competence-img" src="{{souffle.img}}" />
 | 
			
		||||
  <li class="item flexrow" data-attribute={{key}} data-item-id="{{souffle._id}}" data-tooltip="Souffle: {{souffle.name}}">
 | 
			
		||||
    <img class="sheet-competence-img" src="{{souffle.img}}"/>
 | 
			
		||||
    <span class="item-edit flex-grow"><a>{{souffle.name}}</a></span>
 | 
			
		||||
    <div class="item-controls flex-shrink">
 | 
			
		||||
      <a class="item-delete" title="Delete Item"><i class="fas fa-trash"></i></a>
 | 
			
		||||
      <a class="item-delete" data-tooltip="Delete Item"><i class="fas fa-trash"></i></a>
 | 
			
		||||
    </div>
 | 
			
		||||
  </li>
 | 
			
		||||
  {{/each}}
 | 
			
		||||
 
 | 
			
		||||
@@ -2,11 +2,11 @@
 | 
			
		||||
<h3>Tetes</h3>
 | 
			
		||||
<ul class="item-list">
 | 
			
		||||
  {{#each tetes as |tete key|}}
 | 
			
		||||
  <li class="item flexrow" data-attribute={{key}} data-item-id="{{tete._id}}">
 | 
			
		||||
    <img class="sheet-competence-img" src="{{tete.img}}" />
 | 
			
		||||
  <li class="item flexrow" data-attribute={{key}} data-item-id="{{tete._id}}" data-tooltip="Tête: {{tete.name}}">
 | 
			
		||||
    <img class="sheet-competence-img" src="{{tete.img}}"/>
 | 
			
		||||
    <span class="item-edit flex-grow"><a>{{tete.name}}</a></span>
 | 
			
		||||
    <div class="item-controls flex-shrink">
 | 
			
		||||
      <a class="item-delete" title="Delete Item"><i class="fas fa-trash"></i></a>
 | 
			
		||||
      <a class="item-delete" data-tooltip="Delete Item"><i class="fas fa-trash"></i></a>
 | 
			
		||||
    </div>
 | 
			
		||||
  </li>
 | 
			
		||||
  {{/each}}
 | 
			
		||||
 
 | 
			
		||||
@@ -1,10 +1,11 @@
 | 
			
		||||
{{#if options.isGM}}
 | 
			
		||||
<li class="item flexrow">
 | 
			
		||||
  <span>
 | 
			
		||||
    <a class="chat-card-button forcer-tmr-aleatoire">Ré-insertion aléatoire</a>
 | 
			
		||||
    <a class="chat-card-button forcer-tmr-aleatoire" data-tooltip="Ré-insérer aléatoirement le demi-rêve, et masquer la position au joueur">Ré-insertion aléatoire</a>
 | 
			
		||||
  </span>
 | 
			
		||||
  <span>
 | 
			
		||||
    <a class="chat-card-button afficher-tmr">{{#if hautreve.cacheTMR}}Montrer les TMR{{else}}Cacher les TMR{{/if}}</a>
 | 
			
		||||
    <a class="chat-card-button afficher-tmr"
 | 
			
		||||
      data-tooltip="{{#if hautreve.cacheTMR}}Montrer la position du demi-rêve au joueur{{else}}Cacher la position du demi-rêve au joueur{{/if}}">{{#if hautreve.cacheTMR}}Montrer les TMR{{else}}Cacher les TMR{{/if}}</a>
 | 
			
		||||
  </span>
 | 
			
		||||
</li>
 | 
			
		||||
{{/if}}
 | 
			
		||||
 
 | 
			
		||||
@@ -1,19 +1,19 @@
 | 
			
		||||
<div class="header-buttons">
 | 
			
		||||
  <span class="chance-appel">
 | 
			
		||||
    <a title="Appel à la chance"><img class="button-img" src="systems/foundryvtt-reve-de-dragon/styles/img/ui/appel-chance.svg" alt="Appel à la chance"/></a>
 | 
			
		||||
    <a><img class="button-img" src="systems/foundryvtt-reve-de-dragon/styles/img/ui/appel-chance.svg" data-tooltip="Appel à la chance"/></a>
 | 
			
		||||
  </span>
 | 
			
		||||
  <span class="encaisser-direct">
 | 
			
		||||
    <a title="Encaisser des dommages"><img class="button-img" src="icons/svg/bones.svg" alt="Encaisser des dommages"/></a>
 | 
			
		||||
    <a><img class="button-img" src="icons/svg/bones.svg" data-tooltip="Encaisser des dommages"/></a>
 | 
			
		||||
  </span>
 | 
			
		||||
  <span class="ethylisme-test">
 | 
			
		||||
    <a title="Jet d'Ethylisme"><img class="button-img" src="icons/svg/tankard.svg" alt="Boire"/></a>
 | 
			
		||||
    <a><img class="button-img" src="icons/svg/tankard.svg" data-tooltip="Boire"/></a>
 | 
			
		||||
  </span>
 | 
			
		||||
  <span class="repos">
 | 
			
		||||
    <a title="Repos"><img class="button-img" src="icons/svg/sleep.svg" alt="Se reposer"/></a>
 | 
			
		||||
    <a><img class="button-img" src="icons/svg/sleep.svg" data-tooltip="Se reposer"/></a>
 | 
			
		||||
  </span>
 | 
			
		||||
  {{#if @root.options.isGM}}
 | 
			
		||||
  <span class="remise-a-neuf">
 | 
			
		||||
    <a title="Remise à neuf"><img class="button-img" src="icons/svg/regen.svg" alt="Remise à neuf"/></a>
 | 
			
		||||
    <a><img class="button-img" src="icons/svg/regen.svg" data-tooltip="Remise à neuf"/></a>
 | 
			
		||||
  </span>
 | 
			
		||||
  {{/if}}
 | 
			
		||||
</div>
 | 
			
		||||
 
 | 
			
		||||
@@ -2,7 +2,7 @@
 | 
			
		||||
  <ul>
 | 
			
		||||
    <li data-attribute="vie">
 | 
			
		||||
      <label class="compteur">
 | 
			
		||||
        <a class="jet-vie" name="system.sante.vie.label">Vie</a>
 | 
			
		||||
        <a class="jet-vie" name="system.sante.vie.label" data-tooltip="Faire un jet de vie">Vie</a>
 | 
			
		||||
        <a class="vie-moins"><i class="fas fa-minus-square"></i></a>
 | 
			
		||||
        <input class="resource-content" type="text" name="system.sante.vie.value" value="{{system.sante.vie.value}}" data-dtype="Number" />
 | 
			
		||||
        / {{#if @root.options.vueDetaillee}}
 | 
			
		||||
@@ -13,7 +13,7 @@
 | 
			
		||||
    </li>
 | 
			
		||||
    <li data-attribute="endurance">
 | 
			
		||||
      <label class="compteur">
 | 
			
		||||
        <a class="jet-endurance" name="system.sante.endurance.label">Endurance</a>
 | 
			
		||||
        <a class="jet-endurance" name="system.sante.endurance.label" data-tooltip="Faire un jet d'endurance pour ne pas être sonné">Endurance</a>
 | 
			
		||||
        <a class="endurance-moins"><i class="fas fa-minus-square"></i></a>
 | 
			
		||||
        <input class="resource-content" type="text" name="system.sante.endurance.value" value="{{system.sante.endurance.value}}" data-dtype="Number"/>
 | 
			
		||||
        / {{#if @root.options.vueDetaillee}}
 | 
			
		||||
 
 | 
			
		||||
@@ -2,7 +2,7 @@
 | 
			
		||||
  <ul>
 | 
			
		||||
    <li>
 | 
			
		||||
      <label class="compteur">
 | 
			
		||||
        <a class="jet-vie">Vie</a>
 | 
			
		||||
        <a class="jet-vie" data-tooltip="Faire un jet de vie">Vie</a>
 | 
			
		||||
        <a class="vie-moins"><i class="fas fa-minus-square"></i></a>
 | 
			
		||||
        <input class="resource-content" type="text" name="system.sante.vie.value" value="{{system.sante.vie.value}}" data-dtype="Number"/>
 | 
			
		||||
        <span>/ {{system.sante.vie.max}}</span>
 | 
			
		||||
@@ -11,7 +11,7 @@
 | 
			
		||||
    </li>
 | 
			
		||||
    <li>
 | 
			
		||||
      <label class="compteur">
 | 
			
		||||
        <a class="jet-endurance">Endurance</a>
 | 
			
		||||
        <a class="jet-endurance"  data-tooltip="Faire un jet d'endurance pour ne pas être sonné">Endurance</a>
 | 
			
		||||
        <a class="endurance-moins"><i class="fas fa-minus-square"></i></a>
 | 
			
		||||
        <input class="resource-content" type="text" name="system.sante.endurance.value" value="{{system.sante.endurance.value}}" data-dtype="Number"/>
 | 
			
		||||
        <span>/ {{system.sante.endurance.max}}</span>
 | 
			
		||||
@@ -30,7 +30,7 @@
 | 
			
		||||
    </li>
 | 
			
		||||
    <li>
 | 
			
		||||
      <label class="compteur">
 | 
			
		||||
        <span class="ptreve-actuel"><a>Rêve</a></span>
 | 
			
		||||
        <span class="ptreve-actuel"  data-tooltip="Faire un jet de Rêve actuel (ou jet de résistance)"><a>Rêve</a></span>
 | 
			
		||||
        <a class="ptreve-actuel-moins"><i class="fas fa-minus-square"></i></a>
 | 
			
		||||
        <input class="resource-content" class="pointsreve-value" type="text" name="system.reve.reve.value" value="{{system.reve.reve.value}}" data-dtype="Number" />
 | 
			
		||||
        <span>/ {{system.reve.seuil.value}}</span>
 | 
			
		||||
 
 | 
			
		||||
@@ -1,8 +1,8 @@
 | 
			
		||||
<div>
 | 
			
		||||
  {{#if effects}}
 | 
			
		||||
    {{#each effects as |effect key|}}
 | 
			
		||||
    <span class="active-effect" data-effect="{{effect.flags.core.statusId}}">
 | 
			
		||||
      <img class="button-effect-img {{#if @root.options.isGM}}delete-active-effect{{/if}}" src="{{effect.icon}}" alt="{{localize effect.name}}" width="24" height="24" />
 | 
			
		||||
    <span class="active-effect" data-effect="{{effect.id}}">
 | 
			
		||||
      <img class="button-effect-img {{#if @root.options.isGM}}delete-active-effect{{/if}}" src="{{effect.icon}}" data-tooltip="{{localize effect.name}}" width="24" height="24" />
 | 
			
		||||
    </span>
 | 
			
		||||
    {{/each}}
 | 
			
		||||
    {{#if calc.surprise}}<span>{{calc.surprise}}!</span>{{/if}}
 | 
			
		||||
 
 | 
			
		||||
@@ -1,17 +1,19 @@
 | 
			
		||||
{{#if system.attributs.hautrevant.value}}
 | 
			
		||||
  <div class="tmr-buttons">
 | 
			
		||||
    <span class="monte-tmr">
 | 
			
		||||
      <a title="Montée dans les Terres Médianes !" {{#if hautreve.isDemiReve}}disabled{{/if}}>
 | 
			
		||||
        <img class="button-img" src="systems/foundryvtt-reve-de-dragon/styles/img/ui/icon-tmr-normal.svg" alt="Montée dans les Terres Médianes !"/>
 | 
			
		||||
      <a data-tooltip="Montée dans les Terres Médianes !" {{#if hautreve.isDemiReve}}disabled{{/if}}>
 | 
			
		||||
        <img class="button-img" src="systems/foundryvtt-reve-de-dragon/styles/img/ui/icon-tmr-normal.svg"/>
 | 
			
		||||
      </a>
 | 
			
		||||
    </span>
 | 
			
		||||
    <span class="monte-tmr-rapide">
 | 
			
		||||
      <a title="Montée accélérée dans les Terres Médianes !" {{#if hautreve.isDemiReve}}disabled{{/if}}>
 | 
			
		||||
        <img class="button-img" src="systems/foundryvtt-reve-de-dragon/styles/img/ui/icon-tmr-rapide.svg" alt="Montée accélérée dans les Terres Médianes !"/>
 | 
			
		||||
      <a data-tooltip="Montée accélérée dans les Terres Médianes !" {{#if hautreve.isDemiReve}}disabled{{/if}}>
 | 
			
		||||
        <img class="button-img" src="systems/foundryvtt-reve-de-dragon/styles/img/ui/icon-tmr-rapide.svg"/>
 | 
			
		||||
      </a>
 | 
			
		||||
    </span>
 | 
			
		||||
    <span class="visu-tmr">
 | 
			
		||||
      <a title="Regarder les Terres Médianes"><img class="button-img" src="systems/foundryvtt-reve-de-dragon/styles/img/ui/icon-tmr-view.svg" alt="Regarder les Terres Médianes"/></a>
 | 
			
		||||
      <a data-tooltip="Regarder les Terres Médianes">
 | 
			
		||||
        <img class="button-img" src="systems/foundryvtt-reve-de-dragon/styles/img/ui/icon-tmr-view.svg"/>
 | 
			
		||||
      </a>
 | 
			
		||||
    </span>
 | 
			
		||||
  </div>
 | 
			
		||||
{{/if}}
 | 
			
		||||
 
 | 
			
		||||
@@ -2,12 +2,12 @@
 | 
			
		||||
  <h3>Effets sur les cases des TMR</h3>
 | 
			
		||||
  <ul class="item-list alterne-list">
 | 
			
		||||
    {{#each casestmr as |casetmr key|}}
 | 
			
		||||
    <li class="item list-item flexrow" data-item-id="{{casetmr.id}}" data-attribute="{{key}}">
 | 
			
		||||
      <img class="sheet-competence-img" src="{{casetmr.img}}" />
 | 
			
		||||
    <li class="item list-item flexrow" data-item-id="{{casetmr.id}}" data-attribute="{{key}}" data-tooltip="Case TMR: {{casetmr.name}}" >
 | 
			
		||||
      <img class="sheet-competence-img" src="{{casetmr.img}}"/>
 | 
			
		||||
      <span class="item-edit"><a>{{casetmr.name}}</a></span>
 | 
			
		||||
      <span>{{casetmr.system.coord}} - {{caseTmr-label casetmr.system.coord}}</span> 
 | 
			
		||||
      <div class="item-controls flex-shrink">
 | 
			
		||||
        <a class="item-delete" title="Supprimer"><i class="fas fa-trash"></i></a>
 | 
			
		||||
        <a class="item-delete" data-tooltip="Supprimer"><i class="fas fa-trash"></i></a>
 | 
			
		||||
      </div>
 | 
			
		||||
    </li>
 | 
			
		||||
    {{/each}}
 | 
			
		||||
 
 | 
			
		||||
@@ -2,12 +2,12 @@
 | 
			
		||||
<h3>Méditations</h3>
 | 
			
		||||
<ul class="item-list">
 | 
			
		||||
  {{#each (trier meditations) as |meditation key|}}
 | 
			
		||||
  <li class="item flexrow" data-item-id="{{meditation._id}}" data-attribute="{{key}}">
 | 
			
		||||
    <img class="sheet-competence-img" src="{{meditation.img}}" />
 | 
			
		||||
  <li class="item flexrow" data-item-id="{{meditation._id}}" data-attribute="{{key}}" data-tooltip="Méditation: {{meditation.name}}">
 | 
			
		||||
    <img class="sheet-competence-img" src="{{meditation.img}}"/>
 | 
			
		||||
    <span class="meditation-label flex-grow"><a data-item-id="{{meditation._id}}">{{meditation.name}} - {{meditation.system.competence}}</a></span> 
 | 
			
		||||
    <div class="item-controls flex-shrink">
 | 
			
		||||
      <a class="item-edit" title="Editer"><i class="fas fa-edit"></i></a>
 | 
			
		||||
      <a class="item-delete" title="Supprimer"><i class="fas fa-trash"></i></a>
 | 
			
		||||
      <a class="item-edit" data-tooltip="Editer"><i class="fas fa-edit"></i></a>
 | 
			
		||||
      <a class="item-delete" data-tooltip="Supprimer"><i class="fas fa-trash"></i></a>
 | 
			
		||||
    </div>
 | 
			
		||||
  </li>
 | 
			
		||||
  {{/each}}
 | 
			
		||||
 
 | 
			
		||||
@@ -2,8 +2,8 @@
 | 
			
		||||
<h3>Rencontres en attente dans les TMR</h3>
 | 
			
		||||
<ul class="item-list">
 | 
			
		||||
  {{#each rencontres as |rencontre key|}}
 | 
			
		||||
  <li class="item flexrow" data-item-id="{{rencontre._id}}" data-attribute="{{key}}">
 | 
			
		||||
    <img class="sheet-competence-img" src="{{rencontre.img}}" />
 | 
			
		||||
  <li class="item flexrow" data-item-id="{{rencontre._id}}" data-attribute="{{key}}" data-tooltip="Rencontre: {{rencontre.name}}">
 | 
			
		||||
    <img class="sheet-competence-img" src="{{rencontre.img}}"/>
 | 
			
		||||
    <span class="item-edit flex-grow"><a>
 | 
			
		||||
      {{rencontre.name}} r{{rencontre.system.force}} ({{rencontre.system.coord}} - {{caseTmr-label rencontre.system.coord}})
 | 
			
		||||
    </a></span> 
 | 
			
		||||
@@ -11,7 +11,7 @@
 | 
			
		||||
    <span class="flex-shrink">{{upperFirst rencontre.system.heure}}, le {{rencontre.system.date}}</span> 
 | 
			
		||||
    {{/if}}
 | 
			
		||||
    <div class="item-controls flex-shrink">
 | 
			
		||||
      <a class="item-delete" title="Supprimer"><i class="fas fa-trash"></i></a>
 | 
			
		||||
      <a class="item-delete" data-tooltip="Supprimer"><i class="fas fa-trash"></i></a>
 | 
			
		||||
    </div>
 | 
			
		||||
  </li>
 | 
			
		||||
  {{/each}}
 | 
			
		||||
 
 | 
			
		||||
@@ -2,12 +2,12 @@
 | 
			
		||||
<h3>Signes draconiques</h3>
 | 
			
		||||
<ul class="item-list alterne-list">
 | 
			
		||||
  {{#each signesdraconiques as |signe key|}}
 | 
			
		||||
    <li class="item list-item flexrow" data-item-id="{{signe._id}}" data-attribute="{{key}}">
 | 
			
		||||
      <img class="sheet-competence-img" src="{{signe.img}}" />
 | 
			
		||||
    <li class="item list-item flexrow" data-item-id="{{signe._id}}" data-attribute="{{key}}" data-tooltip="Signe: {{signe.name}}">
 | 
			
		||||
      <img class="sheet-competence-img" src="{{signe.img}}"/>
 | 
			
		||||
      <span class="item-edit flex-grow"><a>{{signe.name}}</a></span> 
 | 
			
		||||
      <span class="flex-shrink">{{signe.system.difficulte}}</span>
 | 
			
		||||
      <div class="item-controls flex-shrink">
 | 
			
		||||
        <a class="item-delete" title="Supprimer"><i class="fas fa-trash"></i></a>
 | 
			
		||||
        <a class="item-delete" data-tooltip="Supprimer"><i class="fas fa-trash"></i></a>
 | 
			
		||||
      </div>
 | 
			
		||||
    </li>
 | 
			
		||||
  {{/each}}
 | 
			
		||||
 
 | 
			
		||||
@@ -2,12 +2,13 @@
 | 
			
		||||
<h3>Sorts en Réserve</h3>
 | 
			
		||||
<ul class="item-list alterne-list">
 | 
			
		||||
  {{#each (trier sortsReserve) as |sort key|}}
 | 
			
		||||
  <li class="item list-item flexrow" data-item-id="{{sort._id}}" data-attribute="{{key}}">
 | 
			
		||||
    <img class="sheet-competence-img" src="{{sort.img}}" />
 | 
			
		||||
  <li class="item list-item flexrow" data-item-id="{{sort._id}}" data-attribute="{{key}}"
 | 
			
		||||
      data-tooltip="Sort en réserve: {{sort.system.coord}} - {{sort.name}} r{{sort.system.ptreve}}">
 | 
			
		||||
    <img class="sheet-competence-img" src="{{sort.img}}"/>
 | 
			
		||||
    <span class="item-edit"><a>{{#if sort.system.echectotal}}Echec total: {{/if}}{{sort.name}} r{{sort.system.ptreve}}</a></span> 
 | 
			
		||||
    <span>{{sort.system.coord}} - {{caseTmr-label sort.system.coord}}</span> 
 | 
			
		||||
    <div class="item-controls flex-shrink">
 | 
			
		||||
      <a class="item-delete flex-shrink" title="Supprimer"><i class="fas fa-trash"></i></a>
 | 
			
		||||
      <a class="item-delete flex-shrink" data-tooltip="Supprimer"><i class="fas fa-trash"></i></a>
 | 
			
		||||
    </div>
 | 
			
		||||
  </li>
 | 
			
		||||
  {{/each}}
 | 
			
		||||
 
 | 
			
		||||
@@ -2,16 +2,17 @@
 | 
			
		||||
<h3>Sorts</h3>
 | 
			
		||||
<ul class="item-list alterne-list">
 | 
			
		||||
  {{#each (trier sorts) as |sort key|}}
 | 
			
		||||
  <li class="item list-item flexrow" data-item-id="{{sort._id}}" data-attribute="{{key}}">
 | 
			
		||||
    <img class="sheet-competence-img" src="{{sort.img}}" />
 | 
			
		||||
  <li class="item list-item flexrow" data-item-id="{{sort._id}}" data-attribute="{{key}}"  data-tooltip="{{#if sort.system.isrituel}}Rituel{{else}}Sort{{/if}}: {{sort.name}}">
 | 
			
		||||
    <img class="sheet-competence-img" src="{{sort.img}}"/>
 | 
			
		||||
    <span class="item-edit flex-grow-2">
 | 
			
		||||
      <a data-item-id="{{sort._id}}">{{sort.name}}
 | 
			
		||||
        - {{#if sort.system.caseTMRspeciale}}{{sort.system.caseTMRspeciale}}{{else}}{{upperFirst sort.system.caseTMR}}{{/if}}
 | 
			
		||||
      </a>
 | 
			
		||||
    </span>
 | 
			
		||||
    <span>{{#if sort.system.isrituel}}Rituel{{/if}}</span>
 | 
			
		||||
    <span>{{sort.system.draconic}} / {{sort.system.difficulte}}</span>
 | 
			
		||||
    <div class="item-controls flex-shrink">
 | 
			
		||||
      <a class="item-delete" title="Supprimer"><i class="fas fa-trash"></i></a>
 | 
			
		||||
      <a class="item-delete" data-tooltip="Supprimer"><i class="fas fa-trash"></i></a>
 | 
			
		||||
    </div>
 | 
			
		||||
  </li>
 | 
			
		||||
  {{/each}}
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,6 @@
 | 
			
		||||
{{#unless item.system.isHidden}}
 | 
			
		||||
{{#if (or options.isObserver (ne item.type 'monnaie'))}}
 | 
			
		||||
<li class="item flexrow list-item" data-item-id="{{item._id}}" draggable="true">
 | 
			
		||||
<li class="item flexrow list-item" data-item-id="{{item._id}}" draggable="true" data-tooltip="{{#if (gt item.system.quantite 1)}}{{item.system.quantite}} {{/if}}{{item.name}}">
 | 
			
		||||
  <span class="equipement-nom {{#if (eq item.type 'conteneur')}}conteneur-name{{/if}} ">
 | 
			
		||||
    {{#if (eq item.type 'conteneur')}}
 | 
			
		||||
    <a>
 | 
			
		||||
@@ -8,11 +8,11 @@
 | 
			
		||||
      {{else if ouvert}}far fa-minus-square
 | 
			
		||||
      {{else}}far fa-plus-square
 | 
			
		||||
      {{/if~}}"></i>
 | 
			
		||||
      <img class="sheet-competence-img" src="{{item.img}}" title="{{item.name}}"/>
 | 
			
		||||
      <img class="sheet-competence-img" src="{{item.img}}"/>
 | 
			
		||||
      <span>{{item.name}}</span>
 | 
			
		||||
    </a>
 | 
			
		||||
    {{else}}
 | 
			
		||||
    <img class="sheet-competence-img" src="{{item.img}}" title="{{item.name}}"/>
 | 
			
		||||
    <img class="sheet-competence-img" src="{{item.img}}"/>
 | 
			
		||||
    <span>{{item.name}}
 | 
			
		||||
      {{#if (eq item.type 'arme')}}
 | 
			
		||||
      {{>"systems/foundryvtt-reve-de-dragon/templates/item/icon-arme-broken.hbs" item}}
 | 
			
		||||
@@ -22,11 +22,11 @@
 | 
			
		||||
  </span>
 | 
			
		||||
  <span class="equipement-detail">
 | 
			
		||||
    {{#if (gt item.system.quantite 1)}}
 | 
			
		||||
    <a class="item-quantite-moins"><i class="fas fa-minus-square"></i></a>
 | 
			
		||||
    <a class="item-quantite-moins" data-tooltip="Diminuer la quantité de {{item.name}}"><i class="fas fa-minus-square"></i></a>
 | 
			
		||||
    {{/if}}
 | 
			
		||||
    {{item.system.quantite}}
 | 
			
		||||
    {{#if (gt item.system.quantite 1)}}
 | 
			
		||||
    <a class="item-split" title="Séparer"><i class="fas fa-unlink"></i></a>
 | 
			
		||||
    <a class="item-split" data-tooltip="Séparer le groupe de {{item.name}}"><i class="fas fa-unlink"></i></a>
 | 
			
		||||
    {{/if}}
 | 
			
		||||
  </span>
 | 
			
		||||
  <span class="equipement-detail">{{numberFormat item.system.encTotal decimals=2}}</span>
 | 
			
		||||
@@ -34,17 +34,17 @@
 | 
			
		||||
    {{#if options.isOwner}}
 | 
			
		||||
      {{#unless item.estContenu}}
 | 
			
		||||
        {{#if item.equipable}}
 | 
			
		||||
        <a class="item-equip" title="Equiper">{{#if item.system.equipe}}<i class="fas fa-hand-rock"></i>{{else}}<i class="far fa-hand-paper"></i>{{/if}}</a>
 | 
			
		||||
        <a class="item-equip" data-tooltip="Equiper">{{#if item.system.equipe}}<i class="fas fa-hand-rock"></i>{{else}}<i class="far fa-hand-paper"></i>{{/if}}</a>
 | 
			
		||||
        {{/if}}
 | 
			
		||||
      {{/unless}}
 | 
			
		||||
      <a class="item-edit" title="Editer"><i class="fas fa-edit"></i></a>
 | 
			
		||||
      <a class="item-delete" title="Supprimer"><i class="fas fa-trash"></i></a>
 | 
			
		||||
      <a class="item-edit" data-tooltip="Editer"><i class="fas fa-edit"></i></a>
 | 
			
		||||
      <a class="item-delete" data-tooltip="Supprimer"><i class="fas fa-trash"></i></a>
 | 
			
		||||
       
 | 
			
		||||
      {{#if (ne item.system.quantite 0)}}
 | 
			
		||||
      <a class="item-vendre" title="Vendre ou donner"><i class="fas fa-comments-dollar"></i></a>
 | 
			
		||||
      <a class="item-vendre" data-tooltip="Vendre ou donner"><i class="fas fa-comments-dollar"></i></a>
 | 
			
		||||
      {{/if}}
 | 
			
		||||
    {{/if}}
 | 
			
		||||
    <a class="item-montrer" title="Montrer"><i class="fas fa-comment"></i></a>
 | 
			
		||||
    <a class="item-montrer" data-tooltip="Montrer"><i class="fas fa-comment"></i></a>
 | 
			
		||||
    {{#if options.isOwner}}
 | 
			
		||||
      {{#if item.system.actionPrincipale}}
 | 
			
		||||
      <a class="item-action">{{item.system.actionPrincipale}}</a>
 | 
			
		||||
 
 | 
			
		||||
@@ -3,7 +3,7 @@
 | 
			
		||||
<ul class="item-list alterne-list">
 | 
			
		||||
  {{#each monnaies as |piece id|}}
 | 
			
		||||
  <li class="item flexrow list-item" data-item-id="{{piece._id}}">
 | 
			
		||||
    <img class="sheet-competence-img" src="{{piece.img}}" title="{{piece.name}}"/>
 | 
			
		||||
    <img class="sheet-competence-img" src="{{piece.img}}" data-tooltip="{{piece.name}}"/>
 | 
			
		||||
    <span class="equipement-nom">{{piece.name}}</span>
 | 
			
		||||
    <span class="equipement-valeur {{#unless (gt piece.system.cout 0)}}field-error{{/unless}}">
 | 
			
		||||
      ({{piece.system.cout}} Sols)
 | 
			
		||||
@@ -23,8 +23,8 @@
 | 
			
		||||
    {{/if}}
 | 
			
		||||
    <span class="equipement-actions item-controls">
 | 
			
		||||
      {{#if @root.options.isOwner}}
 | 
			
		||||
      <a class="item-edit" title="Editer"><i class="fas fa-edit"></i></a>
 | 
			
		||||
      <a class="item-delete" title="Supprimer"><i class="fas fa-trash"></i></a>
 | 
			
		||||
      <a class="item-edit" data-tooltip="Editer"><i class="fas fa-edit"></i></a>
 | 
			
		||||
      <a class="item-delete" data-tooltip="Supprimer"><i class="fas fa-trash"></i></a>
 | 
			
		||||
      {{/if}}
 | 
			
		||||
    </span>
 | 
			
		||||
  </li>
 | 
			
		||||
 
 | 
			
		||||
@@ -1,13 +1,13 @@
 | 
			
		||||
<h4>Equipement</h4>
 | 
			
		||||
<span class="item-name">
 | 
			
		||||
  {{#if options.isOwner}}
 | 
			
		||||
  <a class="chat-card-button creer-un-objet">Nouvel objet</a>
 | 
			
		||||
  <a class="chat-card-button creer-un-objet" data-tooltip="Créer un nouvel objet">Nouvel objet</a>
 | 
			
		||||
  {{/if}}
 | 
			
		||||
  {{#if options.isGM}}
 | 
			
		||||
  <a class="chat-card-button nettoyer-conteneurs">Tout vider</a>
 | 
			
		||||
  <a class="chat-card-button nettoyer-conteneurs" data-tooltip="Vider tous les contenants">Tout vider</a>
 | 
			
		||||
  {{/if}}
 | 
			
		||||
  <span class="embed-inline">
 | 
			
		||||
    <input class="recherche flex-grow" type="text" value="{{options.recherche.text}}" name="recherche" size="8" data-dtype="String" placeholder=""/>
 | 
			
		||||
    <input class="recherche flex-grow" type="text" value="{{options.recherche.text}}" name="recherche" size="8" data-dtype="String" placeholder="" data-tooltip="Rechercher dans l'équipement"/>
 | 
			
		||||
  </span>
 | 
			
		||||
  {{#if calc.surEncombrementMessage}}<b>{{calc.surEncombrementMessage}}</b> ‐{{/if}}
 | 
			
		||||
  Encombrement: {{numberFormat calc.encTotal decimals=2}} (max: {{system.attributs.encombrement.value}})
 | 
			
		||||
 
 | 
			
		||||
@@ -2,10 +2,11 @@
 | 
			
		||||
<h3>Jeux :</h3>
 | 
			
		||||
<ul class="item-list alterne-list">
 | 
			
		||||
  {{#each jeux as |jeu id|}}
 | 
			
		||||
  <li class="item flexrow list-item" data-item-id="{{jeu._id}}"><span class="competence-title jeu-label"><a>{{jeu.name}} (base {{jeu.system.base}})</a></span>
 | 
			
		||||
  <li class="item flexrow list-item" data-item-id="{{jeu._id}}">
 | 
			
		||||
    <span class="competence-title jeu-label"><a>{{jeu.name}} (base {{jeu.system.base}})</a></span>
 | 
			
		||||
    <div class="item-controls flex-shrink">
 | 
			
		||||
      <a class="item-edit" title="Edit Item"><i class="fas fa-edit"></i></a>
 | 
			
		||||
      <a class="item-delete" title="Delete Item"><i class="fas fa-trash"></i></a>
 | 
			
		||||
      <a class="item-edit" data-tooltip="Edit Item"><i class="fas fa-edit"></i></a>
 | 
			
		||||
      <a class="item-delete" data-tooltip="Delete Item"><i class="fas fa-trash"></i></a>
 | 
			
		||||
    </div>
 | 
			
		||||
  </li>
 | 
			
		||||
  {{/each}}
 | 
			
		||||
 
 | 
			
		||||
@@ -1,11 +1,11 @@
 | 
			
		||||
<span class="item-name"><h4>Compagnons animaux</h4></span>
 | 
			
		||||
<ul class="item-list alterne-list">
 | 
			
		||||
  {{#each subacteurs.montures as |monture id|}}
 | 
			
		||||
  <li class="item flexrow list-item" data-subactor-id="{{monture.id}}">
 | 
			
		||||
    <img class="sheet-competence-img subacteur-open" src="{{monture.img}}" title="{{monture.name}}"/>
 | 
			
		||||
  <li class="item flexrow list-item" data-subactor-id="{{monture.id}}" data-tooltip="{{monture.name}}">
 | 
			
		||||
    <img class="sheet-competence-img subacteur-open" src="{{monture.img}}"/>
 | 
			
		||||
    <span class="subacteur-label subacteur-open"><a>{{monture.name}}</a></span>
 | 
			
		||||
    <div class="flex-shrink">
 | 
			
		||||
      <a class="subacteur-delete" title="Supprimer"><i class="fas fa-trash"></i></a>
 | 
			
		||||
      <a class="subacteur-delete" data-tooltip="Supprimer"><i class="fas fa-trash"></i></a>
 | 
			
		||||
    </div>
 | 
			
		||||
  </li>
 | 
			
		||||
  {{/each}}
 | 
			
		||||
 
 | 
			
		||||
@@ -1,8 +1,8 @@
 | 
			
		||||
<h4>Suivants/Compagnons/Amoureux</h4>
 | 
			
		||||
<ul class="item-list alterne-list">
 | 
			
		||||
  {{#each subacteurs.suivants as |suivant id|}}
 | 
			
		||||
  <li class="item flexrow list-item" data-subactor-id="{{suivant.id}}">
 | 
			
		||||
    <img class="sheet-competence-img subacteur-open" src="{{suivant.img}}" title="{{suivant.name}}"/>
 | 
			
		||||
  <li class="item flexrow list-item" data-subactor-id="{{suivant.id}}" data-tooltip="{{suivant.name}}">
 | 
			
		||||
    <img class="sheet-competence-img subacteur-open" src="{{suivant.img}}"/>
 | 
			
		||||
    <span class="competence-title subacteur-label subacteur-open">
 | 
			
		||||
      <a>{{suivant.name}}</a>
 | 
			
		||||
    </span>
 | 
			
		||||
@@ -11,19 +11,19 @@
 | 
			
		||||
      <span></span>
 | 
			
		||||
    {{else}}
 | 
			
		||||
      <span class="competence-title subacteur-coeur-toggle">
 | 
			
		||||
        <a data-coeur-nombre="1"><i class="{{#if (gte suivant.coeur 1)}}fa-solid{{else}}fa-regular{{/if}} fa-heart"></i></a>
 | 
			
		||||
        <a data-coeur-nombre="2"><i class="{{#if (gte suivant.coeur 2)}}fa-solid{{else}}fa-regular{{/if}} fa-heart"></i></a>
 | 
			
		||||
        <a data-coeur-nombre="3"><i class="{{#if (gte suivant.coeur 3)}}fa-solid{{else}}fa-regular{{/if}} fa-heart"></i></a>
 | 
			
		||||
        <a data-coeur-nombre="4"><i class="{{#if (gte suivant.coeur 4)}}fa-solid{{else}}fa-regular{{/if}} fa-heart"></i></a>
 | 
			
		||||
        {{>'systems/foundryvtt-reve-de-dragon/templates/coeur/afficher-coeur.hbs' numero=1 courant=suivant.coeur prochain=suivant.prochainCoeur}}
 | 
			
		||||
        {{>'systems/foundryvtt-reve-de-dragon/templates/coeur/afficher-coeur.hbs' numero=2 courant=suivant.coeur prochain=suivant.prochainCoeur}}
 | 
			
		||||
        {{>'systems/foundryvtt-reve-de-dragon/templates/coeur/afficher-coeur.hbs' numero=3 courant=suivant.coeur prochain=suivant.prochainCoeur}}
 | 
			
		||||
        {{>'systems/foundryvtt-reve-de-dragon/templates/coeur/afficher-coeur.hbs' numero=4 courant=suivant.coeur prochain=suivant.prochainCoeur}}
 | 
			
		||||
      </span>
 | 
			
		||||
      <span class="competence-title subacteur-label">
 | 
			
		||||
        {{#if (gte suivant.coeur 1)}}
 | 
			
		||||
          <a class="subacteur-tendre-moment chat-card-button">Tendre moment</a>
 | 
			
		||||
          <a class="subacteur-tendre-moment chat-card-button" data-tooltip="Proposer à {{suivant.name}} de passer un tendre moment">Tendre moment</a>
 | 
			
		||||
        {{/if}}
 | 
			
		||||
      </span>
 | 
			
		||||
    {{/if}}
 | 
			
		||||
    <div class="item-controls flex-shrink">
 | 
			
		||||
      <a class="subacteur-delete" title="Supprimer"><i class="fas fa-trash"></i></a>
 | 
			
		||||
      <a class="subacteur-delete" data-tooltip="Supprimer"><i class="fas fa-trash"></i></a>
 | 
			
		||||
    </div>
 | 
			
		||||
  </li>
 | 
			
		||||
  {{/each}}
 | 
			
		||||
 
 | 
			
		||||
@@ -12,13 +12,13 @@
 | 
			
		||||
 | 
			
		||||
  {{#each subacteurs.vehicules as |vehicule id|}}
 | 
			
		||||
  <li class="item flexrow list-item" data-subactor-id="{{vehicule.id}}">
 | 
			
		||||
    <img class="sheet-competence-img subacteur-open" src="{{vehicule.img}}" title="{{vehicule.name}}"/>
 | 
			
		||||
    <img class="sheet-competence-img subacteur-open" src="{{vehicule.img}}" data-tooltip="{{vehicule.name}}"/>
 | 
			
		||||
    <span class="subacteur-label subacteur-open"><a>{{vehicule.name}}</a></span>
 | 
			
		||||
    <span>{{vehicule.system.categorie}}</span>
 | 
			
		||||
    <span>{{vehicule.system.etat.resistance.max}}</span>
 | 
			
		||||
    <span>{{vehicule.system.etat.structure.max}}</span>
 | 
			
		||||
    <span>
 | 
			
		||||
      <a class="subacteur-delete" title="Supprimer"><i class="fas fa-trash"></i></a>
 | 
			
		||||
      <a class="subacteur-delete" data-tooltip="Supprimer"><i class="fas fa-trash"></i></a>
 | 
			
		||||
    </span>
 | 
			
		||||
  </li>
 | 
			
		||||
  {{/each}}
 | 
			
		||||
 
 | 
			
		||||
@@ -25,8 +25,8 @@
 | 
			
		||||
        {{/if}}
 | 
			
		||||
      </span>
 | 
			
		||||
      <div class="item-controls">
 | 
			
		||||
        <a class="item-edit" title="Modifier"><i class="fas fa-edit"></i></a>
 | 
			
		||||
        <a class="item-delete" title="Supprimer"><i class="fas fa-trash"></i></a>
 | 
			
		||||
        <a class="item-edit" data-tooltip="Modifier"><i class="fas fa-edit"></i></a>
 | 
			
		||||
        <a class="item-delete" data-tooltip="Supprimer"><i class="fas fa-trash"></i></a>
 | 
			
		||||
      </div>          
 | 
			
		||||
  </li>
 | 
			
		||||
  {{/each}}
 | 
			
		||||
 
 | 
			
		||||
@@ -1,12 +1,12 @@
 | 
			
		||||
<li class="item flexrow list-item" data-item-id="{{oeuvre._id}}">
 | 
			
		||||
  <img class="sheet-competence-img" src="{{oeuvre.img}}" />
 | 
			
		||||
  <img class="sheet-competence-img" src="{{oeuvre.img}}" data-tooltip="{{upperFirst typeOeuvre}}: {{oeuvre.name}}"/>
 | 
			
		||||
  <span>{{upperFirst typeOeuvre}}</span>
 | 
			
		||||
  <span class="competence-title {{classOeuvre}}">
 | 
			
		||||
    <a>{{oeuvre.name}} (niveau {{oeuvre.system.niveau}})</a>
 | 
			
		||||
  </span>
 | 
			
		||||
  <div class="item-controls">
 | 
			
		||||
    <a class="item-edit" title="Edit Item"><i class="fas fa-edit"></i></a>
 | 
			
		||||
    <a class="item-delete" title="Delete Item"><i class="fas fa-trash"></i></a>
 | 
			
		||||
    <a class="item-edit" data-tooltip="Edit Item"><i class="fas fa-edit"></i></a>
 | 
			
		||||
    <a class="item-delete" data-tooltip="Delete Item"><i class="fas fa-trash"></i></a>
 | 
			
		||||
  </div>
 | 
			
		||||
</li>
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -13,8 +13,8 @@
 | 
			
		||||
      </span>
 | 
			
		||||
      <span class="competence-label">{{possession.system.type}}</span>
 | 
			
		||||
      <div class="item-controls">
 | 
			
		||||
        <a class="item-edit" title="Modifier"><i class="fas fa-edit"></i></a>
 | 
			
		||||
        <a class="item-delete" title="Supprimer"><i class="fas fa-trash"></i></a>
 | 
			
		||||
        <a class="item-edit" data-tooltip="Modifier"><i class="fas fa-edit"></i></a>
 | 
			
		||||
        <a class="item-delete" data-tooltip="Supprimer"><i class="fas fa-trash"></i></a>
 | 
			
		||||
      </div>          
 | 
			
		||||
  </li>
 | 
			
		||||
  {{/each}}
 | 
			
		||||
 
 | 
			
		||||
@@ -2,10 +2,10 @@
 | 
			
		||||
<ul class="item-list alterne-list">
 | 
			
		||||
  {{#each resonances as |actor|}}
 | 
			
		||||
  <li class="item flexrow list-item" data-actor-id="{{actor.id}}">
 | 
			
		||||
    <img class="sheet-competence-img subacteur-open" src="{{actor.img}}" title="{{actor.name}}"/>
 | 
			
		||||
    <img class="sheet-competence-img subacteur-open" src="{{actor.img}}" data-tooltip="{{actor.name}}"/>
 | 
			
		||||
    <span class="subacteur-label subacteur-open"><a>{{actor.name}}</a></span>
 | 
			
		||||
    <div class="flex-shrink">
 | 
			
		||||
      <a class="resonance-delete" title="Supprimer"><i class="fas fa-trash"></i></a>
 | 
			
		||||
      <a class="resonance-delete" data-tooltip="Supprimer"><i class="fas fa-trash"></i></a>
 | 
			
		||||
  </div>
 | 
			
		||||
  </li>
 | 
			
		||||
  {{/each}}
 | 
			
		||||
 
 | 
			
		||||
@@ -2,15 +2,15 @@
 | 
			
		||||
<ul class="item-list alterne-list">
 | 
			
		||||
  {{#each taches as |tache id|}}
 | 
			
		||||
    {{#unless (eq tache.system.competence 'Chirurgie')}}
 | 
			
		||||
    <li class="item flexrow list-item" data-item-id="{{tache._id}}">
 | 
			
		||||
      <img class="sheet-competence-img" src="{{tache.img}}" />
 | 
			
		||||
    <li class="item flexrow list-item" data-item-id="{{tache._id}}" data-tooltip="Tâche: {{tache.name}}" >
 | 
			
		||||
      <img class="sheet-competence-img" src="{{tache.img}}"/>
 | 
			
		||||
      <span class="competence-title tache-label"><a>{{tache.name}}
 | 
			
		||||
        ({{tache.system.points_de_tache_courant}}{{#if
 | 
			
		||||
          (or @root.options.isGM (not tache.system.cacher_points_de_tache))
 | 
			
		||||
        }}/{{tache.system.points_de_tache}}{{/if}})</a></span>
 | 
			
		||||
      <div class="item-controls flex-shrink">
 | 
			
		||||
        <a class="item-edit" title="Edit Item"><i class="fas fa-edit"></i></a>
 | 
			
		||||
        <a class="item-delete" title="Delete Item"><i class="fas fa-trash"></i></a>
 | 
			
		||||
        <a class="item-edit" data-tooltip="Edit Item"><i class="fas fa-edit"></i></a>
 | 
			
		||||
        <a class="item-delete" data-tooltip="Delete Item"><i class="fas fa-trash"></i></a>
 | 
			
		||||
      </div>
 | 
			
		||||
    </li>
 | 
			
		||||
    {{/unless}}
 | 
			
		||||
 
 | 
			
		||||
@@ -13,10 +13,10 @@
 | 
			
		||||
      <label class="flex-shrink">{{xplog.datereel}}</label>
 | 
			
		||||
      {{#if @root.options.isGM}}
 | 
			
		||||
      <span class="flex-shrink">
 | 
			
		||||
        <a class="experiencelog-delete" title="Supprimer">
 | 
			
		||||
        <a class="experiencelog-delete" data-tooltip="Supprimer">
 | 
			
		||||
          <i class="fas fa-trash"></i>
 | 
			
		||||
        </a>
 | 
			
		||||
        <a class="experiencelog-delete-previous" title="Supprimer jusqu'ici">
 | 
			
		||||
        <a class="experiencelog-delete-previous" data-tooltip="Supprimer jusqu'ici">
 | 
			
		||||
          <i class="fas fa-eraser"></i>
 | 
			
		||||
        </a>
 | 
			
		||||
      </span>
 | 
			
		||||
 
 | 
			
		||||
@@ -1,4 +1,4 @@
 | 
			
		||||
<img class="chat-icon" src="{{item.img}}" alt="{{item.name}}" />
 | 
			
		||||
<img class="chat-icon" src="{{item.img}}" data-tooltip="{{item.name}}" />
 | 
			
		||||
<h4>{{#if isVente}}Achat{{else}}Don{{/if}}</h4>
 | 
			
		||||
<p>
 | 
			
		||||
  {{#if acheteur}}{{acheteur.name}}{{else}}L'acheteur{{/if}} a
 | 
			
		||||
 
 | 
			
		||||
@@ -1,4 +1,4 @@
 | 
			
		||||
<img class="chat-icon" src="{{rencontre.img}}" alt="{{rencontre.name}}" />
 | 
			
		||||
<img class="chat-icon" src="{{rencontre.img}}" data-tooltip="{{rencontre.name}}" />
 | 
			
		||||
<h4>{{#if mauvaise}}Mauvaise rencontre{{else}}Rencontre{{/if}} en {{typeTmr-name tmr.type}}</h4>
 | 
			
		||||
<div>{{row.document.pack}}</div>
 | 
			
		||||
<div>Jet: {{row.roll.formula}} : {{row.roll.total}}{{percentages}}</div>
 | 
			
		||||
 
 | 
			
		||||
@@ -3,7 +3,7 @@
 | 
			
		||||
<div>Jet {{roll.formula}} : {{roll.total}}{{percentages}}</div>
 | 
			
		||||
<hr>
 | 
			
		||||
<div>
 | 
			
		||||
  <img class="chat-icon" src="{{document.img}}" alt="{{document.name}}" />
 | 
			
		||||
  <img class="chat-icon" src="{{document.img}}" data-tooltip="{{document.name}}" />
 | 
			
		||||
  <p>{{linkCompendium document.pack document.id document.name}}</p>
 | 
			
		||||
  {{#if document.system.description}}
 | 
			
		||||
  <div class="poesie-extrait">
 | 
			
		||||
 
 | 
			
		||||
@@ -1,5 +1,5 @@
 | 
			
		||||
<div>
 | 
			
		||||
  <img class="chat-icon" src="{{img}}" alt="{{typeName}}" />
 | 
			
		||||
  <img class="chat-icon" src="{{img}}" data-tooltip="{{typeName}}" />
 | 
			
		||||
  <h4>Table aléatoire: {{typeName}}</h4>
 | 
			
		||||
  {{#with (lookup table 0) as |row|}}
 | 
			
		||||
  <div>
 | 
			
		||||
 
 | 
			
		||||
@@ -1,4 +1,4 @@
 | 
			
		||||
<img class="chat-icon" src="{{img}}" alt="potion de repos" />
 | 
			
		||||
<img class="chat-icon" src="{{img}}" data-tooltip="potion de repos" />
 | 
			
		||||
<h4>
 | 
			
		||||
  {{alias}} a bu une <strong>{{name}}{{#if system.magique}} enchantée{{/if}}</strong>
 | 
			
		||||
</h4>
 | 
			
		||||
 
 | 
			
		||||
@@ -1,4 +1,4 @@
 | 
			
		||||
<img class="chat-icon" src="{{img}}" alt="potion de repos" />
 | 
			
		||||
<img class="chat-icon" src="{{img}}" data-tooltip="potion de repos" />
 | 
			
		||||
<h4>
 | 
			
		||||
  {{alias}} a bu une <strong>{{name}}{{#if system.magique}} enchantée de puissance {{system.puissance}}{{/if}}</strong>.
 | 
			
		||||
</h4>
 | 
			
		||||
 
 | 
			
		||||
@@ -1,4 +1,4 @@
 | 
			
		||||
<img class="chat-icon" src="{{img}}" alt="potion de soin" />
 | 
			
		||||
<img class="chat-icon" src="{{img}}" data-tooltip="potion de soin" />
 | 
			
		||||
<h4>
 | 
			
		||||
  {{alias}} a bu une <strong>{{name}}{{#if system.magique}} enchantée de {{system.puissance}} points de guérison{{/if}}</strong>
 | 
			
		||||
</h4>
 | 
			
		||||
 
 | 
			
		||||
@@ -1,4 +1,4 @@
 | 
			
		||||
<img class="chat-icon" src="{{herbe.img}}" alt="fabrication" />
 | 
			
		||||
<img class="chat-icon" src="{{herbe.img}}" data-tooltip="fabrication" />
 | 
			
		||||
<h4>
 | 
			
		||||
  {{alias}} a fabriqué une potion de {{herbe.system.categorie}} de {{herbe.name}}, avec {{herbe.nbBrins}} brins.
 | 
			
		||||
</h4>
 | 
			
		||||
 
 | 
			
		||||
@@ -1,4 +1,4 @@
 | 
			
		||||
<img class="chat-icon" src="{{rollData.arme.img}}" alt="{{rollData.arme.name}}" />
 | 
			
		||||
<img class="chat-icon" src="{{rollData.arme.img}}" data-tooltip="{{rollData.arme.name}}" />
 | 
			
		||||
<strong>Ajustement de tir/lancer</strong> proposé de <strong>{{total}}</strong>
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>{{defender.name}} est à une distance indicative de {{distance}} mètres.</li>
 | 
			
		||||
 
 | 
			
		||||
@@ -9,7 +9,7 @@
 | 
			
		||||
        {{#if item.descr}}
 | 
			
		||||
        {{{item.descr}}}
 | 
			
		||||
        {{else}}
 | 
			
		||||
        {{item.label}}: {{plusMoins item.value}}
 | 
			
		||||
        {{{item.label}}}: {{plusMoins item.value}}
 | 
			
		||||
        {{/if}}
 | 
			
		||||
      </div>
 | 
			
		||||
      {{/if}}
 | 
			
		||||
 
 | 
			
		||||
@@ -1,4 +1,4 @@
 | 
			
		||||
<img class="chat-icon" src="{{potionImg}}" alt="{{potionName}}" />
 | 
			
		||||
<img class="chat-icon" src="{{potionImg}}" data-tooltip="{{potionName}}" />
 | 
			
		||||
<h4>
 | 
			
		||||
  La potion enchantée {{potionName}} de {{alias}} a perdu un Point de Rêve (nouveau total : {{pr}}).</h4>
 | 
			
		||||
<hr>
 | 
			
		||||
 
 | 
			
		||||
@@ -1,4 +1,4 @@
 | 
			
		||||
<img class="chat-icon" src="{{competence.img}}" alt="{{competence.name}}"/>
 | 
			
		||||
<img class="chat-icon" src="{{competence.img}}" data-tooltip="{{competence.name}}"/>
 | 
			
		||||
<h4 data-categorie="tmr" data-actor-id="{{actor._id}}" data-rencontre-round="{{nbRounds}}">
 | 
			
		||||
  {{alias}} rencontre {{#if (eq rencontre.system.genre 'f')}}une{{else}}un{{/if}} {{rencontre.name}} de force {{rencontre.system.force}}
 | 
			
		||||
</h4>
 | 
			
		||||
 
 | 
			
		||||
@@ -1,4 +1,4 @@
 | 
			
		||||
<img class="chat-icon" src="systems/foundryvtt-reve-de-dragon/icons/competence_alchimie.webp" alt="préparation alchimique" />
 | 
			
		||||
<img class="chat-icon" src="systems/foundryvtt-reve-de-dragon/icons/competence_alchimie.webp" data-tooltip="préparation alchimique" />
 | 
			
		||||
<h4>
 | 
			
		||||
  {{alias}} essaye de réaliser sa recette Alchimique : {{recette.name}}
 | 
			
		||||
</h4>
 | 
			
		||||
 
 | 
			
		||||
@@ -1,4 +1,4 @@
 | 
			
		||||
<img class="chat-icon" src="{{competence.img}}" alt="{{competence.name}}" />
 | 
			
		||||
<img class="chat-icon" src="{{competence.img}}" data-tooltip="{{competence.name}}" />
 | 
			
		||||
<h4>{{alias}} attaque  à {{diffLibre}}: {{arme.name}}</h4>
 | 
			
		||||
<div>{{selectedCarac.label}}{{#unless (eq selectedCarac.label competence.name)}} / {{competence.name}}{{/unless}}</div>
 | 
			
		||||
{{> "systems/foundryvtt-reve-de-dragon/templates/chat-infojet.html"}}
 | 
			
		||||
@@ -6,11 +6,11 @@
 | 
			
		||||
{{#if tactique}}
 | 
			
		||||
  <div>
 | 
			
		||||
    {{#if (eq tactique 'charge')}}
 | 
			
		||||
    <img class="chat-icon" src="icons/svg/thrust.svg" alt="charge" height="32" width="32" />
 | 
			
		||||
    <img class="chat-icon" src="icons/svg/thrust.svg" data-tooltip="charge" height="32" width="32" />
 | 
			
		||||
    C'est une charge, vos parades auront un -4 et vous ne pourrez pas esquiver!
 | 
			
		||||
    {{ else if (eq tactique 'feinte')}}
 | 
			
		||||
      {{#if rolled.isSuccess}}
 | 
			
		||||
        <img class="chat-icon" src="systems/foundryvtt-reve-de-dragon/icons/heures/hd06.svg" alt="feinte" height="32" width="32" />
 | 
			
		||||
        <img class="chat-icon" src="systems/foundryvtt-reve-de-dragon/icons/heures/hd06.svg" data-tooltip="feinte" height="32" width="32" />
 | 
			
		||||
        Votre feinte peut faire mouche!
 | 
			
		||||
      {{/if}}
 | 
			
		||||
    {{/if}}
 | 
			
		||||
 
 | 
			
		||||
@@ -1,4 +1,4 @@
 | 
			
		||||
<img class="chat-icon" src="{{competence.img}}" alt="{{oeuvre.system.competence}}" />
 | 
			
		||||
<img class="chat-icon" src="{{competence.img}}" data-tooltip="{{oeuvre.system.competence}}" />
 | 
			
		||||
<h4>
 | 
			
		||||
  {{alias}} {{#if rolled.isSuccess}}chante{{else}}tente de chanter{{/if}} {{oeuvre.name}} (niveau {{oeuvre.system.niveau}})
 | 
			
		||||
</h4>
 | 
			
		||||
 
 | 
			
		||||
@@ -1,4 +1,4 @@
 | 
			
		||||
<img class="chat-icon" src="{{competence.img}}" alt="{{competence.name}}" />
 | 
			
		||||
<img class="chat-icon" src="{{competence.img}}" data-tooltip="{{competence.name}}" />
 | 
			
		||||
<h4>
 | 
			
		||||
  {{alias}} {{show.title}}:
 | 
			
		||||
  {{#if selectedCarac}}{{selectedCarac.label}}
 | 
			
		||||
 
 | 
			
		||||
@@ -1,4 +1,4 @@
 | 
			
		||||
<img class="chat-icon" src="{{competence.img}}" alt="{{oeuvre.system.competence}}" />
 | 
			
		||||
<img class="chat-icon" src="{{competence.img}}" data-tooltip="{{oeuvre.system.competence}}" />
 | 
			
		||||
<h4>
 | 
			
		||||
  {{alias}} {{#if rolled.isSuccess}}danse{{else}}tente de danser{{/if}} {{oeuvre.name}} (niveau {{oeuvre.system.niveau}})
 | 
			
		||||
</h4>
 | 
			
		||||
 
 | 
			
		||||
@@ -43,7 +43,7 @@
 | 
			
		||||
  {{/if}}
 | 
			
		||||
  {{#if (ne dmg.mortalite 'entiteincarnee')}}
 | 
			
		||||
  {{#if (gt endurance 1)}}et
 | 
			
		||||
  {{#if sonne}}est <strong>sonné</strong><img class="chat-icon" src="icons/svg/stoned.svg" alt="charge" height="16" width="16" /> jusqu'à la fin du prochain round{{else}}n'est pas sonné{{/if}}!
 | 
			
		||||
  {{#if sonne}}est <strong>sonné</strong><img class="chat-icon" src="icons/svg/stoned.svg" data-tooltip="charge" height="16" width="16" /> jusqu'à la fin du prochain round{{else}}n'est pas sonné{{/if}}!
 | 
			
		||||
  {{#if hasPlayerOwner}}Jet d'endurance : {{jetEndurance}} / {{resteEndurance}}{{/if}}
 | 
			
		||||
  {{/if}}
 | 
			
		||||
  {{/if}}
 | 
			
		||||
 
 | 
			
		||||
@@ -1,4 +1,4 @@
 | 
			
		||||
<img class="chat-icon" src="{{competence.img}}" alt="{{competence.name}}" />
 | 
			
		||||
<img class="chat-icon" src="{{competence.img}}" data-tooltip="{{competence.name}}" />
 | 
			
		||||
<h4>{{alias}} esquive une attaque à {{diffLibre}}</h4>
 | 
			
		||||
<div>{{selectedCarac.label}}{{#unless (eq selectedCarac.label competence.name)}} / {{competence.name}}{{/unless}}</div>
 | 
			
		||||
{{> "systems/foundryvtt-reve-de-dragon/templates/chat-infojet.html"}}
 | 
			
		||||
@@ -19,10 +19,10 @@
 | 
			
		||||
{{#if attackerRoll.tactique}}
 | 
			
		||||
<div>
 | 
			
		||||
  {{#if (eq attackerRoll.tactique 'charge')}}
 | 
			
		||||
  <img class="chat-icon" src="icons/svg/thrust.svg" alt="charge" height="32" width="32" />
 | 
			
		||||
  <img class="chat-icon" src="icons/svg/thrust.svg" data-tooltip="charge" height="32" width="32" />
 | 
			
		||||
  C'était une charge, les parades de l'adversaire de {{alias}} auront un -4 et il ne pourra pas esquiver!
 | 
			
		||||
  {{ else if (eq attackerRoll.tactique 'feinte')}}
 | 
			
		||||
  <img class="chat-icon" src="systems/foundryvtt-reve-de-dragon/icons/heures/hd06.svg" alt="feinte" height="32" width="32" />
 | 
			
		||||
  <img class="chat-icon" src="systems/foundryvtt-reve-de-dragon/icons/heures/hd06.svg" data-tooltip="feinte" height="32" width="32" />
 | 
			
		||||
  C'était une feinte!
 | 
			
		||||
  {{/if}}
 | 
			
		||||
</div>
 | 
			
		||||
 
 | 
			
		||||
@@ -1,4 +1,4 @@
 | 
			
		||||
<img class="chat-icon" src="systems/foundryvtt-reve-de-dragon/icons/objets/chope_gres.webp" alt="Ethylisme" />
 | 
			
		||||
<img class="chat-icon" src="systems/foundryvtt-reve-de-dragon/icons/objets/chope_gres.webp" data-tooltip="Ethylisme" />
 | 
			
		||||
<h4>
 | 
			
		||||
  {{alias}} boit un verre d'alcool de force {{jetVie.forceAlcool}}
 | 
			
		||||
  {{#if alcool}}
 | 
			
		||||
 
 | 
			
		||||
@@ -1,5 +1,5 @@
 | 
			
		||||
{{#if competence.img}}
 | 
			
		||||
  <img class="chat-icon" src="{{competence.img}}" alt="{{competence.name}}" />
 | 
			
		||||
  <img class="chat-icon" src="{{competence.img}}" data-tooltip="{{competence.name}}" />
 | 
			
		||||
{{/if}}
 | 
			
		||||
<h4>
 | 
			
		||||
  {{alias}} {{#if show.title}}{{show.title}}: {{/if}}
 | 
			
		||||
 
 | 
			
		||||
@@ -1,4 +1,4 @@
 | 
			
		||||
<img class="chat-icon" src="{{competence.img}}" alt="{{oeuvre.system.competence}}" />
 | 
			
		||||
<img class="chat-icon" src="{{competence.img}}" data-tooltip="{{oeuvre.system.competence}}" />
 | 
			
		||||
<h4>
 | 
			
		||||
  {{alias}} joue à : {{oeuvre.name}}
 | 
			
		||||
</h4>
 | 
			
		||||
 
 | 
			
		||||
@@ -1,4 +1,4 @@
 | 
			
		||||
<img class="chat-icon" src="{{competence.img}}" alt="{{competence.name}}" />
 | 
			
		||||
<img class="chat-icon" src="{{competence.img}}" data-tooltip="{{competence.name}}" />
 | 
			
		||||
<h4>{{alias}} lit le signe {{signe.name}}</h4>
 | 
			
		||||
{{> "systems/foundryvtt-reve-de-dragon/templates/chat-infojet.html"}}
 | 
			
		||||
<hr>
 | 
			
		||||
 
 | 
			
		||||
@@ -1,4 +1,4 @@
 | 
			
		||||
<img class="chat-icon" src="{{competence.img}}" alt="{{competence.name}}"/>
 | 
			
		||||
<img class="chat-icon" src="{{competence.img}}" data-tooltip="{{competence.name}}"/>
 | 
			
		||||
<h4 data-categorie="tmr" data-actor-id="{{actor._id}}">
 | 
			
		||||
  {{alias}} tente de {{maitrise.verbe}} {{le tmr.genre}}
 | 
			
		||||
  {{#if isTMRCache}}
 | 
			
		||||
 
 | 
			
		||||
Some files were not shown because too many files have changed in this diff Show More
		Reference in New Issue
	
	Block a user