forked from public/foundryvtt-reve-de-dragon
		
	Compare commits
	
		
			15 Commits
		
	
	
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 8d39a0526f | |||
| f83548b91e | |||
| 90d17a3477 | |||
| fb15f3eb38 | |||
| 4df0eab574 | |||
| c8d589f0d2 | |||
| d7470836a5 | |||
| 817fa8e62a | |||
| 0fe4f64343 | |||
| d6b5b0a550 | |||
| c9d87851bd | |||
| 5b48fda3d0 | |||
| abae85157b | |||
| da2dca1769 | |||
| 6e405ea753 | 
							
								
								
									
										21
									
								
								changelog.md
									
									
									
									
									
								
							
							
						
						
									
										21
									
								
								changelog.md
									
									
									
									
									
								
							| @@ -1,5 +1,26 @@ | ||||
| # 13.0 | ||||
|  | ||||
| ## 13.0.4 - Le long discours d'Illysis | ||||
|  | ||||
| - On peut de nouveau modifier les descriptions | ||||
| - ne pas proposer l'export csv par défaut | ||||
| - Correction de la macro "Jet quelconque" | ||||
| - Correction de la ligne 'rêve actuel' ajoutée dans les caracs | ||||
| - Corrections d'affichage | ||||
|   - boutons de l'horloge | ||||
|   - boutons de déplacement des TMR | ||||
|   - modification des messages de tchat | ||||
|  | ||||
| ## 13.0.3 - La dernière auberge d'Illysis | ||||
|  | ||||
| - On peut de nouveau acheter aux commerces | ||||
| - La description des Grizzal a des espaces | ||||
| - Corrections v13 | ||||
|   - Affichage des images et noms d'objets en ligne | ||||
|   - affichage des compétences de créature sur une ligne | ||||
|   - Affichage des informations d'acteur sur une ligne dans l'astrologie | ||||
|   - Affichage des résultat de recherche | ||||
|  | ||||
| ## 13.0.0 - Le début de l'errance d'Illysis | ||||
|  | ||||
| - Migration vers la version 13 de Foundry | ||||
|   | ||||
| @@ -721,6 +721,7 @@ select, | ||||
|   margin: 0; | ||||
|   justify-content: center; | ||||
|   text-align: left; | ||||
|   display: ruby; | ||||
| } | ||||
| .system-foundryvtt-reve-de-dragon .equipement-valeur { | ||||
|   margin: 0; | ||||
| @@ -740,6 +741,8 @@ select, | ||||
|   align-items: center; | ||||
|   justify-content: center; | ||||
|   text-align: center; | ||||
|   display: flex; | ||||
|   flex-direction: row; | ||||
| } | ||||
| .system-foundryvtt-reve-de-dragon .equipement-button { | ||||
|   margin: 0; | ||||
| @@ -871,13 +874,40 @@ select, | ||||
|   padding: 0.2em; | ||||
|   border-width: 0; | ||||
| } | ||||
| .system-foundryvtt-reve-de-dragon .small-button-direction { | ||||
| .system-foundryvtt-reve-de-dragon .grid-move-tmr { | ||||
|   display: grid; | ||||
| } | ||||
| .system-foundryvtt-reve-de-dragon .move-tmr-topleft { | ||||
|   grid-column: 2/2; | ||||
|   grid-row: 2/4; | ||||
| } | ||||
| .system-foundryvtt-reve-de-dragon .move-tmr-top { | ||||
|   grid-column: 3/3; | ||||
|   grid-row: 1/3; | ||||
| } | ||||
| .system-foundryvtt-reve-de-dragon .move-tmr-topright { | ||||
|   grid-column: 4/4; | ||||
|   grid-row: 2/4; | ||||
| } | ||||
| .system-foundryvtt-reve-de-dragon .move-tmr-bottomleft { | ||||
|   grid-column: 2/2; | ||||
|   grid-row: 4/6; | ||||
| } | ||||
| .system-foundryvtt-reve-de-dragon .move-tmr-bottom { | ||||
|   grid-column: 3/3; | ||||
|   grid-row: 5/7; | ||||
| } | ||||
| .system-foundryvtt-reve-de-dragon .move-tmr-bottomright { | ||||
|   grid-column: 4/4; | ||||
|   grid-row: 4/6; | ||||
| } | ||||
| .system-foundryvtt-reve-de-dragon .tmr-move { | ||||
|   max-height: 32px; | ||||
|   max-width: 32px; | ||||
|   border: 0; | ||||
|   vertical-align: bottom; | ||||
| } | ||||
| .system-foundryvtt-reve-de-dragon :is(.button-img,.button-effect-img,.small-button-direction):hover { | ||||
| .system-foundryvtt-reve-de-dragon :is(.button-img,.button-effect-img,.tmr-move):hover { | ||||
|   color: var(--color-controls-hover); | ||||
|   border: 1px solid var(--color-control-border-hover); | ||||
|   text-shadow: 1px 0px 0px #ff6600; | ||||
| @@ -982,13 +1012,13 @@ select, | ||||
|   margin-inline: 0.1rem; | ||||
|   margin-block: 0.1rem; | ||||
| } | ||||
| .system-foundryvtt-reve-de-dragon form.application.sheet.fvtt-rdd fieldset :is(label, input) { | ||||
| .system-foundryvtt-reve-de-dragon .app.sheet fieldset :is(label, input) { | ||||
|   font-family: CaslonAntique; | ||||
|   text-align: justify; | ||||
|   font-size: 1rem; | ||||
|   letter-spacing: 1px; | ||||
| } | ||||
| .system-foundryvtt-reve-de-dragon form.application.sheet.fvtt-rdd div.form-group { | ||||
| .system-foundryvtt-reve-de-dragon .app.sheet div.form-group { | ||||
|   clear: both; | ||||
|   display: flex; | ||||
|   flex-direction: row; | ||||
| @@ -996,14 +1026,15 @@ select, | ||||
|   margin: 0.1rem 0; | ||||
|   align-items: center; | ||||
| } | ||||
| .system-foundryvtt-reve-de-dragon form.application.sheet.fvtt-rdd .editor.prosemirror { | ||||
| .system-foundryvtt-reve-de-dragon .app.sheet .editor.prosemirror { | ||||
|   height: fit-content; | ||||
|   min-height: 5rem; | ||||
| } | ||||
| .system-foundryvtt-reve-de-dragon form.application.sheet.fvtt-rdd prose-mirror.prosemirror .editor-container { | ||||
| .system-foundryvtt-reve-de-dragon .app.sheet .editor.prosemirror .editor-container { | ||||
|   min-height: 5rem; | ||||
|   height: fit-content; | ||||
|   height: 8rem; | ||||
|   margin: 0; | ||||
|   flex: none; | ||||
| } | ||||
| .system-foundryvtt-reve-de-dragon .large-editor { | ||||
|   border: 2; | ||||
| @@ -1157,7 +1188,7 @@ select, | ||||
|   padding: 5px; | ||||
| } | ||||
| .system-foundryvtt-reve-de-dragon .poesie-extrait { | ||||
|   font-size: 0.9rem; | ||||
|   font-size: 0.8rem; | ||||
|   font-style: italic; | ||||
| } | ||||
| .system-foundryvtt-reve-de-dragon .poesie-reference { | ||||
| @@ -1291,8 +1322,7 @@ select, | ||||
|   white-space: nowrap; | ||||
|   word-break: break-all; | ||||
| } | ||||
| .system-foundryvtt-reve-de-dragon span.content-link, | ||||
| .system-foundryvtt-reve-de-dragon a.content-link { | ||||
| .system-foundryvtt-reve-de-dragon .content-link { | ||||
|   background: hsla(45, 100%, 80%, 0.2); | ||||
|   color: hsla(300, 70%, 20%, 0.8); | ||||
|   font-weight: 560; | ||||
| @@ -1301,6 +1331,7 @@ select, | ||||
|   border-radius: 0.25rem; | ||||
|   white-space: nowrap; | ||||
|   word-break: break-all; | ||||
|   display: ruby; | ||||
| } | ||||
| .system-foundryvtt-reve-de-dragon a.roll-text i.fas { | ||||
|   color: var(--color-text-dark-inactive); | ||||
| @@ -1537,6 +1568,8 @@ select, | ||||
| .system-foundryvtt-reve-de-dragon .list-item-label, | ||||
| .system-foundryvtt-reve-de-dragon .list-title-label { | ||||
|   flex-grow: 2; | ||||
|   display: flex; | ||||
|   flex-direction: row; | ||||
| } | ||||
| .system-foundryvtt-reve-de-dragon .attribut-value, | ||||
| .system-foundryvtt-reve-de-dragon .carac-value { | ||||
| @@ -1588,9 +1621,13 @@ select, | ||||
| .system-foundryvtt-reve-de-dragon table.table-nombres-astraux th > td { | ||||
|   font-size: 1rem; | ||||
| } | ||||
| .system-foundryvtt-reve-de-dragon table.table-nombres-astraux tr > td { | ||||
| .system-foundryvtt-reve-de-dragon table.table-nombres-astraux tr td { | ||||
|   font-size: 0.8rem; | ||||
| } | ||||
| .system-foundryvtt-reve-de-dragon table.table-nombres-astraux tr td.info-acteur { | ||||
|   flex-direction: row; | ||||
|   display: flex; | ||||
| } | ||||
| .system-foundryvtt-reve-de-dragon table.table-nombres-astraux :is(tr, th, td) { | ||||
|   border-style: solid; | ||||
|   border-width: 1px; | ||||
| @@ -1736,9 +1773,11 @@ select, | ||||
|   background: rgba(0, 0, 0, 0.05); | ||||
|   cursor: pointer; | ||||
| } | ||||
| .system-foundryvtt-reve-de-dragon .chat-message { | ||||
|   background: rgba(220, 220, 210, 0.5); | ||||
|   font-size: 1rem; | ||||
| .system-foundryvtt-reve-de-dragon .chat-message h4 { | ||||
|   font-size: 0.9rem; | ||||
| } | ||||
| .system-foundryvtt-reve-de-dragon .chat-message .message-content { | ||||
|   text-align: justify; | ||||
| } | ||||
| .system-foundryvtt-reve-de-dragon .chat-message header.message-header .heure-rdd { | ||||
|   font-size: 0.7rem; | ||||
| @@ -1748,6 +1787,9 @@ select, | ||||
|   background: rgba(220, 220, 210, 0.75); | ||||
|   border: 2px solid #545469; | ||||
| } | ||||
| .system-foundryvtt-reve-de-dragon .chat-message hr { | ||||
|   margin: 0.2rem 0; | ||||
| } | ||||
| .system-foundryvtt-reve-de-dragon .chat-icon { | ||||
|   border: 0; | ||||
|   padding: 2px 6px 2px 2px; | ||||
| @@ -2160,8 +2202,6 @@ select, | ||||
|   display: grid; | ||||
|   background: hsl(0, 0%, 20%); | ||||
|   color: hsla(0, 0%, 80%, 0.8); | ||||
|   grid-row: 1; | ||||
|   grid-column: 10; | ||||
| } | ||||
| .system-foundryvtt-reve-de-dragon .calendar-boutons-heure .calendar-btn:is(.calendar-lyre,.calendar-vaisseau) img { | ||||
|   color: hsla(0, 0%, 100%, 0.5); | ||||
| @@ -2174,40 +2214,38 @@ select, | ||||
| .system-foundryvtt-reve-de-dragon .calendar-boutons-heure i { | ||||
|   border: 1px solid rgba(0, 0, 0, 0); | ||||
| } | ||||
| .system-foundryvtt-reve-de-dragon .calendar-boutons-heure i:hover { | ||||
| .system-foundryvtt-reve-de-dragon .calendar-boutons-heure a:hover { | ||||
|   color: var(--color-controls-hover); | ||||
|   border: 1px solid var(--color-control-border-hover); | ||||
|   cursor: pointer; | ||||
| } | ||||
| .system-foundryvtt-reve-de-dragon .calendar-1min { | ||||
|   grid-column: 1; | ||||
|   grid-column: 1/1; | ||||
| } | ||||
| .system-foundryvtt-reve-de-dragon .calendar-5min { | ||||
|   grid-column: 2; | ||||
|   grid-column: 2/2; | ||||
| } | ||||
| .system-foundryvtt-reve-de-dragon .calendar-15min { | ||||
|   grid-column: 3; | ||||
|   grid-column: 3/3; | ||||
| } | ||||
| .system-foundryvtt-reve-de-dragon .calendar-30min { | ||||
|   grid-column: 4; | ||||
|   grid-column: 4/4; | ||||
| } | ||||
| .system-foundryvtt-reve-de-dragon .calendar-60min { | ||||
|   grid-column: 5; | ||||
|   grid-column: 5/5; | ||||
| } | ||||
| .system-foundryvtt-reve-de-dragon .calendar-1heure { | ||||
|   grid-column: 6; | ||||
|   grid-column: 6/6; | ||||
| } | ||||
| .system-foundryvtt-reve-de-dragon .calendar-lyre { | ||||
|   grid-column: 7; | ||||
|   grid-column: 7/8; | ||||
| } | ||||
| .system-foundryvtt-reve-de-dragon .calendar-vaisseau { | ||||
|   grid-column: 8; | ||||
|   grid-column: 9/10; | ||||
| } | ||||
| .system-foundryvtt-reve-de-dragon .calendar-set-datetime { | ||||
|   grid-column: 9; | ||||
| } | ||||
| .system-foundryvtt-reve-de-dragon .calendar-astrologie { | ||||
|   grid-column: 10; | ||||
| .system-foundryvtt-reve-de-dragon :is(.calendar-lyre,.calendar-vaisseau) { | ||||
|   display: flex; | ||||
|   flex-direction: row; | ||||
| } | ||||
| .system-foundryvtt-reve-de-dragon div.horloge-analogique { | ||||
|   border: none; | ||||
|   | ||||
| @@ -356,6 +356,7 @@ | ||||
|     margin: 0; | ||||
|     justify-content: center; | ||||
|     text-align: left; | ||||
|     display: ruby; | ||||
|   } | ||||
|   .equipement-valeur { | ||||
|     margin: 0; | ||||
| @@ -375,6 +376,8 @@ | ||||
|     align-items: center; | ||||
|     justify-content: center; | ||||
|     text-align: center; | ||||
|     display: flex; | ||||
|     flex-direction: row; | ||||
|   } | ||||
|   .equipement-button { | ||||
|     margin: 0; | ||||
| @@ -512,13 +515,21 @@ | ||||
|     padding: 0.2em; | ||||
|     border-width: 0; | ||||
|   } | ||||
|   .small-button-direction { | ||||
|   .grid-move-tmr { display: grid; } | ||||
|   .move-tmr-topleft { grid-column: 2/2; grid-row: 2/4;} | ||||
|   .move-tmr-top { grid-column: 3/3; grid-row: 1/3; } | ||||
|   .move-tmr-topright { grid-column: 4/4; grid-row: 2/4; } | ||||
|   .move-tmr-bottomleft { grid-column: 2/2; grid-row: 4/6; } | ||||
|   .move-tmr-bottom { grid-column: 3/3; grid-row: 5/7; } | ||||
|   .move-tmr-bottomright{ grid-column: 4/4; grid-row: 4/6; } | ||||
|  | ||||
|   .tmr-move { | ||||
|     max-height: 32px; | ||||
|     max-width: 32px; | ||||
|     border: 0; | ||||
|     vertical-align: bottom; | ||||
|   } | ||||
|   :is(.button-img,.button-effect-img,.small-button-direction):hover { | ||||
|   :is(.button-img,.button-effect-img,.tmr-move):hover { | ||||
|     color: var(--color-controls-hover); | ||||
|     border: 1px solid var(--color-control-border-hover); | ||||
|     text-shadow: 1px 0px 0px #ff6600; | ||||
| @@ -624,13 +635,13 @@ | ||||
|     margin-inline: 0.1rem; | ||||
|     margin-block: 0.1rem; | ||||
|   } | ||||
|   form.application.sheet.fvtt-rdd fieldset :is(label, input) { | ||||
|   .app.sheet fieldset :is(label, input) { | ||||
|     font-family: CaslonAntique; | ||||
|     text-align: justify; | ||||
|     font-size: 1rem; | ||||
|     letter-spacing: 1px; | ||||
|   } | ||||
|   form.application.sheet.fvtt-rdd div.form-group { | ||||
|   .app.sheet div.form-group { | ||||
|     clear: both; | ||||
|     display: flex; | ||||
|     flex-direction: row; | ||||
| @@ -638,15 +649,17 @@ | ||||
|     margin: 0.1rem 0; | ||||
|     align-items: center; | ||||
|   } | ||||
|   form.application.sheet.fvtt-rdd .editor.prosemirror { | ||||
|   .app.sheet .editor.prosemirror { | ||||
|     height: fit-content; | ||||
|     min-height: 5rem; | ||||
|   } | ||||
|   form.application.sheet.fvtt-rdd prose-mirror.prosemirror .editor-container { | ||||
|   .app.sheet .editor.prosemirror .editor-container { | ||||
|     min-height: 5rem; | ||||
|     height: fit-content; | ||||
|     height: 8rem; | ||||
|     margin: 0; | ||||
|     flex: none; | ||||
|   } | ||||
|  | ||||
|   .large-editor { | ||||
|     border: 2; | ||||
|     height: fit-content; | ||||
| @@ -813,7 +826,7 @@ | ||||
|   } | ||||
|  | ||||
|   .poesie-extrait { | ||||
|     font-size: 0.9rem; | ||||
|     font-size: 0.8rem; | ||||
|     font-style: italic; | ||||
|   } | ||||
|   .poesie-reference{ | ||||
| @@ -962,8 +975,7 @@ | ||||
|     word-break: break-all; | ||||
|   } | ||||
|  | ||||
|   span.content-link, | ||||
|   a.content-link { | ||||
|   .content-link { | ||||
|     background: hsla(45, 100%, 80%, 0.2); | ||||
|     color: hsla(300, 70%, 20%, 0.8); | ||||
|     font-weight: 560; | ||||
| @@ -972,6 +984,7 @@ | ||||
|     border-radius: 0.25rem; | ||||
|     white-space: nowrap; | ||||
|     word-break: break-all; | ||||
|     display: ruby; | ||||
|   } | ||||
|   a.roll-text i.fas{ | ||||
|     color: var(--color-text-dark-inactive); | ||||
| @@ -1222,6 +1235,8 @@ | ||||
|   .list-item-label, | ||||
|   .list-title-label { | ||||
|     flex-grow: 2; | ||||
|     display: flex; | ||||
|     flex-direction: row; | ||||
|   } | ||||
|   .attribut-value, | ||||
|   .carac-value { | ||||
| @@ -1275,9 +1290,13 @@ | ||||
|   table.table-nombres-astraux th >td { | ||||
|     font-size: 1rem; | ||||
|   } | ||||
|   table.table-nombres-astraux tr >td { | ||||
|   table.table-nombres-astraux tr td { | ||||
|     font-size: 0.8rem; | ||||
|   } | ||||
|   table.table-nombres-astraux tr td.info-acteur { | ||||
|     flex-direction: row; | ||||
|     display: flex; | ||||
|   } | ||||
|   table.table-nombres-astraux :is(tr, th, td) { | ||||
|     border-style: solid; | ||||
|     border-width: 1px; | ||||
| @@ -1449,11 +1468,13 @@ | ||||
|     cursor: pointer; | ||||
|   } | ||||
|  | ||||
|   .chat-message { | ||||
|     background: rgba(220,220,210,0.5); | ||||
|     font-size: 1rem; | ||||
|   } | ||||
|  | ||||
|   .chat-message h4 { | ||||
|     font-size: 0.9rem; | ||||
|   } | ||||
|   .chat-message .message-content { | ||||
|     text-align: justify; | ||||
|   } | ||||
|   .chat-message header.message-header .heure-rdd { | ||||
|     font-size: 0.7rem; | ||||
|     flex-grow: 3; | ||||
| @@ -1463,6 +1484,11 @@ | ||||
|     background: rgba(220,220,210,0.75); | ||||
|     border: 2px solid #545469; | ||||
|   } | ||||
|  | ||||
|   .chat-message hr { | ||||
|     margin: 0.2rem 0; | ||||
|   } | ||||
|  | ||||
|   .chat-icon { | ||||
|     border: 0; | ||||
|     padding: 2px 6px 2px 2px; | ||||
| @@ -1755,9 +1781,6 @@ | ||||
|     display: grid; | ||||
|     background: hsla(0, 0%, 20%, 1); | ||||
|     color: hsla(0, 0%, 80%, 0.8); | ||||
|  | ||||
|     grid-row: 1; | ||||
|     grid-column: 10; | ||||
|   } | ||||
|  | ||||
|   .calendar-boutons-heure .calendar-btn:is(.calendar-lyre,.calendar-vaisseau) img { | ||||
| @@ -1772,23 +1795,24 @@ | ||||
|   .calendar-boutons-heure i { | ||||
|     border: 1px solid rgba(0, 0, 0, 0); | ||||
|   } | ||||
|   .calendar-boutons-heure i:hover { | ||||
|   .calendar-boutons-heure a:hover { | ||||
|     color: var(--color-controls-hover); | ||||
|     border: 1px solid var(--color-control-border-hover); | ||||
|     cursor: pointer; | ||||
|   } | ||||
|  | ||||
|   .calendar-1min     { grid-column: 1;} | ||||
|   .calendar-5min     { grid-column: 2;} | ||||
|   .calendar-15min    { grid-column: 3;} | ||||
|   .calendar-30min    { grid-column: 4;} | ||||
|   .calendar-60min    { grid-column: 5;} | ||||
|   .calendar-1heure   { grid-column: 6;} | ||||
|   .calendar-lyre     { grid-column: 7;} | ||||
|   .calendar-vaisseau { grid-column: 8;} | ||||
|   .calendar-set-datetime { grid-column: 9;} | ||||
|   .calendar-astrologie   { grid-column: 10;} | ||||
|  | ||||
|   .calendar-1min     { grid-column: 1/1; } | ||||
|   .calendar-5min     { grid-column: 2/2; } | ||||
|   .calendar-15min    { grid-column: 3/3; } | ||||
|   .calendar-30min    { grid-column: 4/4; } | ||||
|   .calendar-60min    { grid-column: 5/5; } | ||||
|   .calendar-1heure   { grid-column: 6/6; } | ||||
|   .calendar-lyre     { grid-column: 7/8; } | ||||
|   .calendar-vaisseau { grid-column: 9/10; } | ||||
|   :is(.calendar-lyre,.calendar-vaisseau) { | ||||
|     display: flex; | ||||
|     flex-direction: row; | ||||
|   } | ||||
|   div.horloge-analogique { | ||||
|     border: none; | ||||
|     margin: 0; | ||||
|   | ||||
| @@ -341,6 +341,9 @@ export class RdDBaseActorReve extends RdDBaseActor { | ||||
|     const selectedCaracName = ['apparence', 'perception', 'force', 'reve'].find(it => carac[it] != undefined) | ||||
|  | ||||
|     await this.openRollDialog({ | ||||
|       name: 'jet-quelconque', | ||||
|       label: 'Jet', | ||||
|       template: 'systems/foundryvtt-reve-de-dragon/templates/dialog-roll.hbs', | ||||
|       rollData: { | ||||
|         alias: this.getAlias(), | ||||
|         carac: carac, | ||||
|   | ||||
| @@ -1,6 +1,4 @@ | ||||
| import { DialogItemAchat } from "../achat-vente/dialog-item-achat.js"; | ||||
| import { RdDItem } from "../item.js"; | ||||
| import { RdDUtility } from "../rdd-utility.js"; | ||||
| import { RdDBaseActorSheet } from "./base-actor-sheet.js"; | ||||
|  | ||||
| /** | ||||
| @@ -44,13 +42,8 @@ export class RdDCommerceSheet extends RdDBaseActorSheet { | ||||
|   activateListeners(html) { | ||||
|     super.activateListeners(html); | ||||
|  | ||||
|     this.html.find('a.item-acheter').click(async event => await this.vente(this.getItem(event))); | ||||
|     this.html.find('.service-acheter').click(async event => await this.vente(this.getItem(event))); | ||||
|  | ||||
|     if (!this.options.editable) return; | ||||
|  | ||||
|     this.html.find('a.item-quantite-moins').click(async event => await this.getItem(event)?.quantiteIncDec(-1, { supprimerSiZero: false })); | ||||
|     this.html.find('a.item-quantite-plus').click(async event => await this.getItem(event)?.quantiteIncDec(1)); | ||||
|     this.html.find('input.item-quantite').change(async event => { | ||||
|       const newQuantite = Math.max(0, Number.parseInt(this.html.find(event.currentTarget).val())); | ||||
|       await this.getItem(event)?.update({ "system.quantite": newQuantite }); | ||||
| @@ -64,28 +57,4 @@ export class RdDCommerceSheet extends RdDBaseActorSheet { | ||||
|   getTypesInventaire() { | ||||
|     return RdDItem.getItemTypesInventaire('all'); | ||||
|   } | ||||
|  | ||||
|  | ||||
|   async vente(item) { | ||||
|     const acheteur = RdDUtility.getSelectedActor(); | ||||
|     if (!acheteur) { | ||||
|       ui.notifications.warn(`Pas d'acheteur sélectionné`); | ||||
|       return; | ||||
|     } | ||||
|     const disponible = this.actor.getQuantiteDisponible(item) | ||||
|     if (disponible == 0) { | ||||
|       ui.notifications.warn(`${this.getAlias()} n'a plus de ${item.name} en vente`); | ||||
|       return; | ||||
|     } | ||||
|  | ||||
|     await DialogItemAchat.onAcheter({ | ||||
|       item, | ||||
|       vendeur: this.actor, | ||||
|       acheteur, | ||||
|       quantiteIllimite: disponible == undefined, | ||||
|       nbLots: disponible ?? 1, | ||||
|       tailleLot: 1, | ||||
|       prixLot: item.calculerPrixCommercant() | ||||
|     }); | ||||
|   } | ||||
| } | ||||
|   | ||||
| @@ -1,4 +1,6 @@ | ||||
| import { DialogItemAchat } from "../achat-vente/dialog-item-achat.js"; | ||||
| import { Misc } from "../misc.js"; | ||||
| import { RdDUtility } from "../rdd-utility.js"; | ||||
| import { RdDBaseActor } from "./base-actor.js"; | ||||
|  | ||||
| export class RdDCommerce extends RdDBaseActor { | ||||
| @@ -37,4 +39,27 @@ export class RdDCommerce extends RdDBaseActor { | ||||
|     const pourcentage = this.system.pourcentage ?? 100; | ||||
|     return Misc.keepDecimals(Math.ceil(item.system.cout * pourcentage) / 100, 2); | ||||
|   } | ||||
|   async vente(item) { | ||||
|     const acheteur = RdDUtility.getSelectedActor(); | ||||
|     if (!acheteur) { | ||||
|       ui.notifications.warn(`Pas d'acheteur sélectionné`); | ||||
|       return; | ||||
|     } | ||||
|     const disponible = this.getQuantiteDisponible(item) | ||||
|     if (disponible == 0) { | ||||
|       ui.notifications.warn(`${this.getAlias()} n'a plus de ${item.name} en vente`); | ||||
|       return; | ||||
|     } | ||||
|  | ||||
|     await DialogItemAchat.onAcheter({ | ||||
|       item, | ||||
|       vendeur: this, | ||||
|       acheteur, | ||||
|       quantiteIllimite: disponible == undefined, | ||||
|       nbLots: disponible ?? 1, | ||||
|       tailleLot: 1, | ||||
|       prixLot: item.calculerPrixCommercant() | ||||
|     }); | ||||
|   } | ||||
|    | ||||
| } | ||||
| @@ -12,14 +12,18 @@ export class ExportScriptarium { | ||||
|   } | ||||
|  | ||||
|   constructor() { | ||||
|     Hooks.on("getActorDirectoryFolderContext", (actorDirectory, menus) => { ExportScriptarium.INSTANCE.onActorDirectoryMenu(actorDirectory, menus) }) | ||||
|     Hooks.on("getActorDirectoryEntryContext", (actorDirectory, menus) => { ExportScriptarium.INSTANCE.onActorDirectoryMenu(actorDirectory, menus) }) | ||||
|     //Hooks.on("getActorDirectoryFolderContext", (actorDirectory, menus) => { ExportScriptarium.INSTANCE.onActorDirectoryMenu(actorDirectory, menus) }) | ||||
|     Hooks.on("getFolderContextOptions", (actorDirectory, menus) => { ExportScriptarium.INSTANCE.onActorDirectoryMenu(actorDirectory, menus) }) | ||||
|     //Hooks.on("getActorDirectoryEntryContext", (actorDirectory, menus) => { ExportScriptarium.INSTANCE.onActorDirectoryMenu(actorDirectory, menus) }) | ||||
|     Hooks.on("getActorContextOptions", (actorDirectory, menus) => { ExportScriptarium.INSTANCE.onActorDirectoryMenu(actorDirectory, menus) }) | ||||
|  | ||||
|   } | ||||
|  | ||||
|   onActorDirectoryMenu(actorDirectory, menus) { | ||||
|     // DEBUG console.log("ExportScriptarium.onActorDirectoryMenu", actorDirectory, menus) | ||||
|     menus.push({ | ||||
|       name: 'Export Personnages <i class="fa-regular fa-file-csv"></i>', | ||||
|       icon: IMG_SCRIPTARIUM, | ||||
|       name: 'Export Personnages', | ||||
|       icon: '<i class="fa-solid fa-download"></i>', //IMG_SCRIPTARIUM, | ||||
|       condition: (target) => game.user.isGM && | ||||
|         OptionsAvancees.isUsing(EXPORT_CSV_SCRIPTARIUM) && | ||||
|         this.$getActors(actorDirectory, target).length > 0, | ||||
| @@ -28,22 +32,28 @@ export class ExportScriptarium { | ||||
|   } | ||||
|  | ||||
|   $getTargetName(actorDirectory, target) { | ||||
|     target = $(target) | ||||
|     const li = target.closest(".directory-item") | ||||
|     const folderId = li.data("folderId") | ||||
|     const actorId = li.data("documentId") | ||||
|     const actorId = li.data("entryId") | ||||
|     return actorId | ||||
|       ? game.actors.get(actorId).name | ||||
|       : actorDirectory.folders.find(it => it.id == folderId).name | ||||
|       : actorDirectory.collection.filter(it => it.folder.id == folderId).name | ||||
|   } | ||||
|  | ||||
|   $getActors(actorDirectory, target) { | ||||
|     if (actorDirectory.id != "actors") { | ||||
|       return [] | ||||
|     } | ||||
|     // DEBUG console.log("ExportScriptarium.$getActors", actorDirectory, target) | ||||
|     target = $(target) | ||||
|     const li = target.closest(".directory-item") | ||||
|     const folderId = li.data("folderId") | ||||
|     const actorId = li.data("documentId") | ||||
|     const actorId = li.data("entryId") | ||||
|     const actors = actorId | ||||
|       ? [game.actors.get(actorId)] | ||||
|       : folderId | ||||
|         ? actorDirectory.folders.find(it => it.id == folderId).contents | ||||
|         ? actorDirectory.collection.filter(it => it.folder.id == folderId) | ||||
|         : [] | ||||
|     return actors.filter(it => it.type == ACTOR_TYPES.personnage) | ||||
|   } | ||||
| @@ -54,7 +64,7 @@ export class ExportScriptarium { | ||||
|     const actorLines = actors.map(actor => Misc.join(this.getActorLine(actor), ';')) | ||||
|     const data = Misc.join([header, ...actorLines], eol) | ||||
|     const filename = `scriptarium-${targetName?.slugify()}.csv`; | ||||
|     saveDataToFile(data, "text/csv;charset=windows-1252", `${filename}`); | ||||
|     foundry.utils.saveDataToFile(data, "text/csv;charset=windows-1252", `${filename}`); | ||||
|   } | ||||
|  | ||||
|   getHeaderLine() { | ||||
|   | ||||
| @@ -1,3 +1,4 @@ | ||||
| import { ACTOR_TYPES } from "../constants.js" | ||||
| import { Misc } from "../misc.js" | ||||
| import { RdDSheetUtility } from "../rdd-sheet-utility.js" | ||||
| import { RdDUtility } from "../rdd-utility.js" | ||||
| @@ -19,9 +20,8 @@ const _VENDRE = { | ||||
| } | ||||
| const _ACHAT_SERVICE = { | ||||
|   code: 'item-service-acheter', label: 'Acheter', icon: it => 'fa-regular fa-coins', | ||||
|   //filter: it => Misc.toInt(it.system.quantite) > 0, | ||||
|   //optionsFilter: options => options.editable, | ||||
|   //action: (item, actor) => item.proposerVente() | ||||
|   filter: it => Misc.toInt(it.system.quantite) > 0 && it.parent?.type == ACTOR_TYPES.commerce, | ||||
|   action: (item, actor) => actor.vente(item) | ||||
| } | ||||
| const _MONTRER = { | ||||
|   code: 'item-montrer', label: 'Montrer', icon: it => 'fa-solid fa-comment', | ||||
|   | ||||
| @@ -8,6 +8,7 @@ import { RdDTimestamp } from "./time/rdd-timestamp.js"; | ||||
| import { RdDRaretes } from "./item/raretes.js"; | ||||
| import { VOIES_DRACONIC } from "./item-sort.js"; | ||||
| import { SystemCompendiums } from "./settings/system-compendiums.js"; | ||||
| import { Misc } from "./misc.js"; | ||||
|  | ||||
| class Migration { | ||||
|   get code() { return "sample"; } | ||||
| @@ -632,12 +633,21 @@ class _12_0_38_TachesEcriture extends Migration { | ||||
|   async migrate() { | ||||
|     await this.applyItemsUpdates(items => items | ||||
|       .filter(it => [ITEM_TYPES.tache, ITEM_TYPES.livre, ITEM_TYPES.oeuvre, ITEM_TYPES.meditation].includes(it.type) ) | ||||
|       .filter(it => it.system.competence == 'Ecriture') | ||||
|       .filter(it => Grammar.equalsInsensitive(it.system.competence, 'ecriture')) | ||||
|       .map(it => { return { _id: it.id, 'system.competence': 'Écriture' } }) | ||||
|     ) | ||||
|   } | ||||
| } | ||||
|  | ||||
| class _13_0_4_FixReveActuel extends Migration { | ||||
|   get code() { return "fix-revvve-actuel" } | ||||
|   get version() { return "13.0.4" } | ||||
|  | ||||
|   async migrate() { | ||||
|     game.actors.forEach(it => it.update({'system.carac.-=reve-actuel': null})) | ||||
|   } | ||||
| } | ||||
|  | ||||
| export class Migrations { | ||||
|   static getMigrations() { | ||||
|     return [ | ||||
| @@ -660,7 +670,8 @@ export class Migrations { | ||||
|       new _12_0_26_MigrationVoieSorts(), | ||||
|       new _12_0_32_MigrationRaces(), | ||||
|       new _12_0_37_MigrationAlchimieEtat(), | ||||
|       new _12_0_38_TachesEcriture() | ||||
|       new _12_0_38_TachesEcriture(), | ||||
|       new _13_0_4_FixReveActuel() | ||||
|     ]; | ||||
|   } | ||||
|  | ||||
|   | ||||
| @@ -40,7 +40,7 @@ export class RdDRoll extends Dialog { | ||||
|       etat: actor.getEtatGeneral(), | ||||
|       moral: actor.getMoralTotal(), /* La valeur du moral pour les jets de volonté */ | ||||
|       amoureux: actor.listeSuivants(it => it.coeur > 0), | ||||
|       carac: actor.system.carac, | ||||
|       carac: foundry.utils.duplicate(actor.system.carac), | ||||
|       finalLevel: 0, | ||||
|       diffConditions: 0, | ||||
|       diffLibre: rollData.competence?.system.default_diffLibre ?? 0, | ||||
|   | ||||
| @@ -4,7 +4,7 @@ import { Misc } from "../misc.js" | ||||
| export const EXPORT_CSV_SCRIPTARIUM = 'export-csv-scriptarium' | ||||
|  | ||||
| const OPTIONS_AVANCEES = [ | ||||
|   { group: 'Menus', name: EXPORT_CSV_SCRIPTARIUM, descr: "Proposer le menu d'export csv Scriptarium" }, | ||||
|   { group: 'Menus', name: EXPORT_CSV_SCRIPTARIUM, descr: "Proposer le menu d'export csv Scriptarium", default: false }, | ||||
| ] | ||||
|  | ||||
| export class OptionsAvancees extends FormApplication { | ||||
| @@ -24,10 +24,6 @@ export class OptionsAvancees extends FormApplication { | ||||
|     }) | ||||
|   } | ||||
|  | ||||
|   constructor(...args) { | ||||
|     super(...args) | ||||
|   } | ||||
|  | ||||
|   static _getId(name) { | ||||
|     return `rdd-advanced-${name}` | ||||
|   } | ||||
|   | ||||
| @@ -3,8 +3,8 @@ type: faune | ||||
| img: systems/foundryvtt-reve-de-dragon/icons/faune/ours.webp | ||||
| system: | ||||
|   description: >- | ||||
|     <p>Ours. Forêt, montagne, 300 kg, 600 sust.Surtout recherché | ||||
|     pour sa peau (voir legrizzal, p405).</p> | ||||
|     <p>Ours. Forêt, montagne, 300 kg, 600 sust. Surtout recherché | ||||
|     pour sa peau (voir le grizzal, p405).</p> | ||||
|   descriptionmj: '' | ||||
|   encombrement: 150 | ||||
|   quantite: 1 | ||||
|   | ||||
| @@ -1,7 +1,7 @@ | ||||
| {{#unless item.system.isHidden}} | ||||
| {{#if (ne item.type 'monnaie')}} | ||||
| <li class="item flexrow list-item" data-item-id="{{item._id}}" draggable="true"> | ||||
|   <span class="equipement-nom {{#if (eq item.type 'conteneur')}}conteneur-name{{/if}} "> | ||||
|   <span class="equipement-nom{{#if (eq item.type 'conteneur')}} conteneur-name{{/if}} "> | ||||
|     <a{{#if (and (ne item.type 'conteneur') options.isObserver)}} class="item-edit"{{/if}} > | ||||
|     {{#if (eq item.type 'conteneur')}} | ||||
|       <i class="{{~#if vide}}far fa-square | ||||
|   | ||||
| @@ -1,7 +1,7 @@ | ||||
| {{#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" data-tooltip="{{#if (gt item.system.quantite 1)}}{{item.system.quantite}} {{/if}}{{item.name}}"> | ||||
|   <span class="equipement-nom flexrow {{#if (eq item.type 'conteneur')}}conteneur-name{{/if}} "> | ||||
|   <span class="equipement-nom {{#if (eq item.type 'conteneur')}}conteneur-name{{/if}} "> | ||||
|     {{#if (eq item.type 'conteneur')}} | ||||
|     <a> | ||||
|       <i class="{{~#if vide}}far fa-square | ||||
|   | ||||
| @@ -1,5 +1,5 @@ | ||||
| <img class="chat-icon" src="{{item.img}}" data-tooltip="{{item.name}}" /> | ||||
| <h4>{{#if isVente}}Achat{{else}}Don{{/if}}</h4> | ||||
| <h4><img class="chat-icon" src="{{item.img}}" data-tooltip="{{item.name}}" /> | ||||
|   {{#if isVente}}Achat{{else}}Don{{/if}}</h4> | ||||
| <p> | ||||
|   {{#if acheteur}}{{acheteur.name}}{{else}}L'acheteur{{/if}} a | ||||
|   {{#if isVente}}acheté{{else}}pris{{/if}} | ||||
|   | ||||
| @@ -1,8 +1,10 @@ | ||||
| <img class="chat-icon" src="{{actor.img}}" data-tooltip="{{actor.name}}" /> | ||||
| <h4>{{actor.name}} a gagné de l'expérience</h4> | ||||
| <h4><img class="chat-icon" src="{{actor.img}}" data-tooltip="{{actor.name}}" /> | ||||
|   {{actor.name}} a gagné de l'expérience | ||||
| </h4> | ||||
| {{#each xpData as |it|}} | ||||
|   {{#if (gt it.xpCarac 0)}} | ||||
|   <hr> | ||||
|     <hr> | ||||
|     <p> | ||||
|     {{it.xpCarac}} point{{#if (gt it.xpCarac 1)}}s{{/if}} | ||||
|     {{#if it.caracRepartitionManuelle}}à répartir manuellement dans la caractéristique dérivée{{else}}en{{/if}} | ||||
|     {{it.caracName}}. | ||||
| @@ -10,9 +12,11 @@ | ||||
|       L'expérience dans cette caractéristique est de {{it.checkCarac.xp}}, elle peut progresser! | ||||
|       <br>Vous devez ouvrir votre fiche de personnage et appliquer l'augmentation manuellement. | ||||
|     {{/if}} | ||||
|     </p> | ||||
|   {{/if}} | ||||
|   {{#if (gt it.xpCompetence 0)}} | ||||
|   <hr> | ||||
|     <hr> | ||||
|     <p> | ||||
|     {{it.xpCompetence}} point{{#if (gt it.xpCompetence 1)}}s{{/if}} en {{it.competence.name}}. | ||||
|       {{#if it.checkComp}} | ||||
|         L'expérience dans cette compétence est de {{it.checkComp.xp}}, elle peut progresser jusqu'à {{it.checkComp.niveau}}! | ||||
| @@ -25,5 +29,6 @@ | ||||
|           {{/if}} | ||||
|         {{/if}} | ||||
|       {{/if}} | ||||
|     </p> | ||||
|   {{/if}} | ||||
| {{/each}} | ||||
| @@ -1,2 +1,3 @@ | ||||
| <img class="chat-icon" src="{{actor.img}}" data-tooltip="{{actor.name}}" /> | ||||
| <h4>C'est au tour de {{alias}} !</h4> | ||||
| <h4><img class="chat-icon" src="{{actor.img}}" data-tooltip="{{actor.name}}" /> | ||||
|   C'est au tour de {{alias}} ! | ||||
| </h4> | ||||
|   | ||||
| @@ -1,13 +1,14 @@ | ||||
| <img class="chat-icon" src="{{actor.img}}" data-tooltip="{{actor.name}}" /> | ||||
| <h4>Résumé de santé pour {{alias}}</h4> | ||||
| <div data-combatid="{{combatId}}" data-combatmessage="actor-turn-summary">{{blessuresStatus}}</div> | ||||
| <div>Son état général est de : {{etatGeneral}} {{#if isSonne}} et est <strong>sonné</strong>{{/if}}</div> | ||||
| <h4><img class="chat-icon" src="{{actor.img}}" data-tooltip="{{actor.name}}" /> | ||||
|   Résumé de santé pour {{alias}} | ||||
| </h4> | ||||
| <p data-combatid="{{combatId}}" data-combatmessage="actor-turn-summary">{{blessuresStatus}}</p> | ||||
| <p>Son état général est de : {{etatGeneral}} {{#if isSonne}} et est <strong>sonné</strong>{{/if}}</p> | ||||
| {{#if isGrave}} | ||||
| <div>{{alias}} souffre de Blessure(s) Grave(s) : n'oubliez pas de faire un Jet de Vie toutes les SC ({{SConst}}) minutes. Un point d'Endurance a été retiré automatiquement.</div> | ||||
| <p>{{alias}} souffre de Blessure(s) Grave(s) : n'oubliez pas de faire un Jet de Vie toutes les SC ({{SConst}}) minutes. Un point d'Endurance a été retiré automatiquement.</p> | ||||
| {{/if}} | ||||
| {{#if isCritique}} | ||||
| <div>{{alias}} souffre d'une <strong>Blessure Critique</strong> : faites un  | ||||
| <p>{{alias}} souffre d'une <strong>Blessure Critique</strong> : faites un  | ||||
|   <a class="chat-card-button chat-jet-vie" | ||||
|    data-tokenId="{{tokenId}}" | ||||
|    data-actorId="{{actorId}}">Jet de Vie.<a></div> | ||||
|    data-actorId="{{actorId}}">Jet de Vie.<a></p> | ||||
| {{/if}} | ||||
| @@ -1,14 +1,15 @@ | ||||
| <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> | ||||
| <h4><img class="chat-icon" src="{{rencontre.img}}" data-tooltip="{{rencontre.name}}" /> | ||||
|   {{#if mauvaise}}Mauvaise rencontre{{else}}Rencontre{{/if}} en {{typeTmr-name tmr.type}} | ||||
| </h4> | ||||
| <p>{{row.document.pack}}</p> | ||||
| <p>Jet: {{row.roll.formula}} : {{row.roll.total}}{{percentages}}</p> | ||||
| <hr> | ||||
| <div> | ||||
| <p> | ||||
|   <p>{{rencontre.name}} de force {{rencontre.system.force}} ({{rencontre.system.formule}})</p> | ||||
|   <p>{{linkCompendium row.document.pack row.document.id row.document.name}}</p> | ||||
|   {{#if rencontre.system.description}} | ||||
|   <div class="poesie-extrait"> | ||||
|   <p class="poesie-extrait"> | ||||
|     {{{rencontre.system.description}}} | ||||
|   </div> | ||||
|   </p> | ||||
|   {{/if}} | ||||
| </div> | ||||
| </p> | ||||
| @@ -1,21 +1,21 @@ | ||||
| <h4>Tirage aléatoire: {{document.name}}</h4> | ||||
| <div> | ||||
| <p> | ||||
|   Tirage de {{typeName}} aléatoire | ||||
|   {{#if options.showSource}} depuis {{document.pack}}{{/if}} | ||||
| </div> | ||||
| <div>Jet {{roll.formula}} : {{roll.total}}</div> | ||||
| </p> | ||||
| <p>Jet {{roll.formula}} : {{roll.total}}</p> | ||||
| <hr> | ||||
| <div> | ||||
| <p> | ||||
|   <img class="chat-icon" src="{{document.img}}" data-tooltip="{{document.name}}" /> | ||||
|   <p>{{linkCompendium document.pack document.id document.name}}</p> | ||||
|   {{#if document.system.formule}} | ||||
|   <div class="poesie-extrait"> | ||||
|   <p class="poesie-extrait"> | ||||
|     @roll[{{document.system.formule}}] | ||||
|   </div> | ||||
|   </p> | ||||
|   {{/if}} | ||||
|   {{#if document.system.description}} | ||||
|   <div class="poesie-extrait"> | ||||
|   <p class="poesie-extrait"> | ||||
|     {{{document.system.description}}} | ||||
|   </div> | ||||
|   </p> | ||||
|   {{/if}} | ||||
| </div> | ||||
| </p> | ||||
|   | ||||
| @@ -1,13 +1,12 @@ | ||||
| <div> | ||||
|   <img class="chat-icon" src="{{img}}" data-tooltip="{{typeName}}" /> | ||||
|   <h4>Table aléatoire: {{typeName}}</h4> | ||||
|   {{#with (lookup table 0) as |row|}} | ||||
|   <div> | ||||
|     {{row.document.pack}} | ||||
|   </div> | ||||
|   {{/with}} | ||||
|   <br> | ||||
| </div> | ||||
| <h4><img class="chat-icon" src="{{img}}" data-tooltip="{{typeName}}" /> | ||||
|   Table aléatoire: {{typeName}} | ||||
| </h4> | ||||
| {{#with (lookup table 0) as |row|}} | ||||
| <p> | ||||
|   {{row.document.pack}} | ||||
| </p> | ||||
| {{/with}} | ||||
| <br> | ||||
| <div> | ||||
|   <ul class="flexcol item-list alterne-list"> | ||||
|     {{#each table as |row|}} | ||||
|   | ||||
| @@ -1,9 +1,9 @@ | ||||
| <img class="chat-icon" src="{{img}}" data-tooltip="potion de repos" /> | ||||
| <h4> | ||||
|   <img class="chat-icon" src="{{img}}" data-tooltip="potion de repos" /> | ||||
|   {{alias}} a bu une <strong>{{name}}{{#if system.magique}} enchantée{{/if}}</strong> | ||||
| </h4> | ||||
| <hr> | ||||
| <div> | ||||
| <p> | ||||
|   {{#if system.magique}} | ||||
|     Le Jet de Résistance est {{#if rolled.isSuccess}}réussi{{else}}échoué{{/if}}. | ||||
|     {{> "systems/foundryvtt-reve-de-dragon/templates/chat-infojet.hbs"}} | ||||
| @@ -15,4 +15,4 @@ | ||||
|     {{/if}} | ||||
|   {{/if}}. | ||||
|   <br>La potion a été supprimée de l'équipement. | ||||
| </div> | ||||
| </p> | ||||
|   | ||||
| @@ -1,9 +1,8 @@ | ||||
| <img class="chat-icon" src="{{img}}" data-tooltip="potion de repos" /> | ||||
| <h4> | ||||
| <h4><img class="chat-icon" src="{{img}}" data-tooltip="potion de repos" /> | ||||
|   {{alias}} a bu une <strong>{{name}}{{#if system.magique}} enchantée de puissance {{system.puissance}}{{/if}}</strong>. | ||||
| </h4> | ||||
| <hr> | ||||
| <div> | ||||
| <p> | ||||
|   {{#if system.magique}} | ||||
|     Le Jet de Résistance est {{#if rolled.isSuccess}}réussi{{else}}échoué{{/if}}. | ||||
|     {{> "systems/foundryvtt-reve-de-dragon/templates/chat-infojet.hbs"}} | ||||
| @@ -24,4 +23,4 @@ | ||||
|     Une fois consommée (vers fin Lyre), elle vous octroie un bonus de {{system.herbebonus}} segments de fatigue récupérés en plus à la fin de Chateau Dormant (à gérer manuellement). | ||||
|   {{/if}} | ||||
|   <br>La potion a été supprimée de l'équipement. | ||||
| </div> | ||||
| </p> | ||||
|   | ||||
| @@ -1,9 +1,8 @@ | ||||
| <img class="chat-icon" src="{{img}}" data-tooltip="potion de soin" /> | ||||
| <h4> | ||||
| <h4><img class="chat-icon" src="{{img}}" data-tooltip="potion de soin" /> | ||||
|   {{alias}} a bu une <strong>{{name}}{{#if system.magique}} enchantée de {{system.puissance}} points de guérison{{/if}}</strong> | ||||
| </h4> | ||||
| <hr> | ||||
| <div> | ||||
| <p> | ||||
|   {{#if system.magique}} | ||||
|     Le Jet de Résistance est {{#if rolled.isSuccess}}réussi{{else}}échoué{{/if}}. | ||||
|     {{> "systems/foundryvtt-reve-de-dragon/templates/chat-infojet.hbs"}} | ||||
| @@ -22,4 +21,4 @@ | ||||
|     Lors de votre prochain jet de récupération à Chateau Dormant, vous bénéficierez d'un bonus de {{system.herbebonus}} (appliqué automatiquement). | ||||
|   {{/if}} | ||||
|   <br>La potion a été supprimée de l'équipement. | ||||
| </div> | ||||
| </p> | ||||
|   | ||||
| @@ -1,5 +1,4 @@ | ||||
| <img class="chat-icon" src="{{competence.img}}" /> | ||||
| <h4> | ||||
| <h4><img class="chat-icon" src="{{competence.img}}" /> | ||||
|   {{attacker.name}} a entraîné {{defender.name}} au sol | ||||
| </h4> | ||||
| <hr> | ||||
|   | ||||
| @@ -1,9 +1,8 @@ | ||||
| <img class="chat-icon" src="{{competence.img}}" /> | ||||
| <h4> | ||||
| <h4><img class="chat-icon" src="{{competence.img}}" /> | ||||
|   {{attacker.name}} a empoigné {{defender.name}} | ||||
| </h4> | ||||
| <hr> | ||||
| <div> | ||||
| <p> | ||||
|   <span class='chat-card-button-area'> | ||||
|     {{attacker.name}} vient d'obtenir 2 points d'Emp, et peut | ||||
|       entraîner {{defender.name}} au sol. Les deux protagonistes | ||||
| @@ -13,4 +12,4 @@ | ||||
|         Entraîner au sol | ||||
|       </a> | ||||
|   </span> | ||||
| </div> | ||||
| </p> | ||||
|   | ||||
| @@ -1,13 +1,10 @@ | ||||
| <img class="chat-icon" src="{{competence.img}}" /> | ||||
| <h4> | ||||
| <h4><img class="chat-icon" src="{{competence.img}}" /> | ||||
|   {{attacker.name}} a empoigné {{defender.name}} | ||||
| </h4> | ||||
| <hr> | ||||
| <div> | ||||
| <p> | ||||
|   <span class='chat-card-button-area'> | ||||
|     <p> | ||||
|       {{attacker.name}} a obtenu 2 points d'Emp à la fin du round précédent, et peut: | ||||
|        | ||||
|       <ul><li> | ||||
|         faire perdre des points d'Endurance à {{defender.name}} | ||||
|         <br> | ||||
| @@ -30,6 +27,5 @@ | ||||
|           </a> | ||||
|         {{/if}} | ||||
|       </li></ul> | ||||
|     </p> | ||||
|   </span> | ||||
| </div> | ||||
| </p> | ||||
|   | ||||
| @@ -1,8 +1,7 @@ | ||||
| <img class="chat-icon" src="{{competence.img}}" /> | ||||
| <h4> | ||||
| <h4><img class="chat-icon" src="{{competence.img}}" /> | ||||
|   {{attacker.name}} a fait perdre de l'endurance à {{defender.name}} | ||||
| </h4> | ||||
| <hr> | ||||
| <div> | ||||
| <p> | ||||
|   {{defender.name}} reste immobilisé. L'empoignade peut continuer. | ||||
| </div> | ||||
| </p> | ||||
|   | ||||
| @@ -1,8 +1,7 @@ | ||||
| <img class="chat-icon" src="{{competence.img}}" /> | ||||
| <h4> | ||||
| <h4><img class="chat-icon" src="{{competence.img}}" /> | ||||
|   {{attacker.name}} a projeté {{defender.name}} au sol | ||||
| </h4> | ||||
| <hr> | ||||
| <div> | ||||
| <p> | ||||
|   L'empoignade est terminée et a été supprimée. | ||||
| </div> | ||||
| </p> | ||||
|   | ||||
| @@ -1,5 +1,4 @@ | ||||
| <img class="chat-icon" src="{{competence.img}}" /> | ||||
| <h4> | ||||
| <h4><img class="chat-icon" src="{{competence.img}}" /> | ||||
|   {{#if (eq mode "empoigner")}} | ||||
|     {{attacker.name}} tente d'empoigner {{defender.name}} | ||||
|   {{/if}} | ||||
| @@ -16,7 +15,7 @@ | ||||
| {{> "systems/foundryvtt-reve-de-dragon/templates/chat-infojet.hbs"}} | ||||
|  | ||||
| <hr> | ||||
| <div> | ||||
| <p> | ||||
|  | ||||
|   {{#if (gte empoignade.system.pointsemp 2)}}     | ||||
|    | ||||
| @@ -75,4 +74,4 @@ | ||||
|     </span> | ||||
|   <br>Points d'Emp: {{empoignade.system.pointsemp}} | ||||
|   {{/if}} | ||||
| </div> | ||||
| </p> | ||||
|   | ||||
| @@ -1,9 +1,8 @@ | ||||
| <img class="chat-icon" src="{{competence.img}}" /> | ||||
| <h4> | ||||
| <h4><img class="chat-icon" src="{{competence.img}}" /> | ||||
|   {{attacker.name}} tente d'empoigner {{defender.name}} | ||||
| </h4> | ||||
| <hr> | ||||
| <div> | ||||
| <p> | ||||
|   <span class='chat-card-button-area'> | ||||
|     <br> | ||||
|     <strong>{{attacker.name}} tente d'empoigner {{defender.name}}, qui est équipé d'une arme de mêlée. {{defender.name}} | ||||
| @@ -16,4 +15,4 @@ | ||||
|       Poursuivre l'empoignade | ||||
|     </a> | ||||
|   </span> | ||||
| </div> | ||||
| </p> | ||||
| @@ -1,15 +1,14 @@ | ||||
| <img class="chat-icon" src="{{herbe.img}}" data-tooltip="fabrication" /> | ||||
| <h4> | ||||
| <h4><img class="chat-icon" src="{{herbe.img}}" data-tooltip="fabrication" /> | ||||
|   {{alias}} a fabriqué une potion de {{herbe.system.categorie}} de {{herbe.name}}, avec {{herbe.nbBrins}} brins. | ||||
| </h4> | ||||
| <hr> | ||||
| <div> | ||||
| <p> | ||||
|   {{#if (eq nbBrinsReste 0)}} | ||||
|   Toute l'herbe a été consommée par la potion. L'herbe a été supprimée de l'inventaire. | ||||
|   {{else}} | ||||
|   La quantité d'herbe est désormais de {{nbBrinsReste}} et a été mise à jour automatiquement. | ||||
|   {{/if}} | ||||
| </div> | ||||
| <div> | ||||
| </p> | ||||
| <p> | ||||
|   Pensez à mettre la potion dans une fiole ! | ||||
| </div> | ||||
| </p> | ||||
|   | ||||
| @@ -1,5 +1,5 @@ | ||||
| <img class="chat-icon" src="{{sortReserve.img}}" data-tooltip="{{sortReserve.name}}"/> | ||||
| <h4>Déclenchement de sort: {{sortReserve.name}}</h4> | ||||
| <h4><img class="chat-icon" src="{{sortReserve.img}}" data-tooltip="{{sortReserve.name}}"/> | ||||
|   Déclenchement de sort: {{sortReserve.name}}</h4> | ||||
| <br> Vous avez déclenché {{#if sortReserve.system.echectotal}}<strong>l'échec total</strong>{{else}}le sort{{/if}} | ||||
| en réserve en {{sortReserve.system.coord}} ({{caseTmr-label sortReserve.system.coord}}). | ||||
| <br>Ce sort a {{sortReserve.system.ptreve}} points de Rêve | ||||
| @@ -7,7 +7,7 @@ en réserve en {{sortReserve.system.coord}} ({{caseTmr-label sortReserve.system. | ||||
|   {{timestamp-imgSigneHeure sortReserve.system.heurecible}} {{sortReserve.system.heurecible}} | ||||
|    {{else}}indéterminée{{/if}} | ||||
| {{#if sort}} | ||||
| <div class="poesie-extrait poesie-overflow"> | ||||
| <p class="poesie-extrait poesie-overflow"> | ||||
|   {{{sort.system.description}}} | ||||
| </div> | ||||
| </p> | ||||
| {{/if}} | ||||
|   | ||||
| @@ -1,9 +1,8 @@ | ||||
| <img class="chat-icon" src="{{item.img}}" data-tooltip="{{item.name}}" /> | ||||
| <h4> | ||||
| <h4><img class="chat-icon" src="{{item.img}}" data-tooltip="{{item.name}}" /> | ||||
|   La {{item.type}} enchantée {{item.name}} de {{alias}} a perdu un Point de Rêve (nouveau total : {{nouveaupr}}).</h4> | ||||
| <hr> | ||||
| <div> | ||||
| <p> | ||||
|   {{#if (and (eq item.type 'potion') (eq nouveaupr 0))}} | ||||
|   Sa {{item.type}} étant désormais à 0 Point de Rêve, elle est inutilisable et peut être jetée. | ||||
|   {{/if}} | ||||
| </div> | ||||
| </p> | ||||
|   | ||||
| @@ -1,5 +1,5 @@ | ||||
| <img class="chat-icon" src="{{competence.img}}" data-tooltip="{{competence.name}}"/> | ||||
| <h4 data-categorie="tmr" data-actor-id="{{actor._id}}" data-rencontre-round="{{nbRounds}}"> | ||||
|   <img class="chat-icon" src="{{competence.img}}" data-tooltip="{{competence.name}}"/> | ||||
|   {{alias}} rencontre {{#if (eq rencontre.system.genre 'f')}}une{{else}}un{{/if}} {{rencontre.name}} de force {{rencontre.system.force}} | ||||
| </h4> | ||||
| {{> "systems/foundryvtt-reve-de-dragon/templates/chat-infojet.hbs"}} | ||||
|   | ||||
| @@ -3,8 +3,8 @@ | ||||
| </h4> | ||||
| {{> "systems/foundryvtt-reve-de-dragon/templates/chat-infojet.hbs"}} | ||||
| <hr> | ||||
| <div>{{#if rolled.isSuccess}} | ||||
| <p>{{#if rolled.isSuccess}} | ||||
|     {{alias}} s'est accordé à {{entite}} | ||||
|     {{else}}ne s'est pas accordé à {{entite}}, il pourra réessayer à sa prochaine attaque. | ||||
|     {{/if}}  | ||||
| </div> | ||||
| </p> | ||||
|   | ||||
| @@ -1,14 +1,13 @@ | ||||
| <img class="chat-icon" src="systems/foundryvtt-reve-de-dragon/icons/competence_alchimie.webp" data-tooltip="préparation alchimique" /> | ||||
| <h4> | ||||
| <h4><img class="chat-icon" src="systems/foundryvtt-reve-de-dragon/icons/competence_alchimie.webp" data-tooltip="préparation alchimique" /> | ||||
|   {{alias}} essaye de réaliser sa recette Alchimique : {{recette.name}} | ||||
| </h4> | ||||
| {{> "systems/foundryvtt-reve-de-dragon/templates/chat-infojet.hbs"}} | ||||
| <hr> | ||||
| <div> | ||||
| <p> | ||||
|   {{#if rolled.isSuccess}} | ||||
|   {{alias}} a réussi son opération alchimique ! Il/Elle peut passer à l'étape suivante de sa recette.  | ||||
|   {{else}} | ||||
|   {{alias}} a raté son opération alchimique ! Sa recette est un echec. | ||||
|   {{/if}} | ||||
|   {{> "systems/foundryvtt-reve-de-dragon/templates/chat-info-appel-au-moral.hbs"}} | ||||
| </div> | ||||
| </p> | ||||
|   | ||||
| @@ -4,5 +4,5 @@ | ||||
| {{> "systems/foundryvtt-reve-de-dragon/templates/chat-infojet.hbs"}} | ||||
| {{~#if rolled.isSuccess}} | ||||
| <hr> | ||||
| <span>Un point de chance est dépensé, l'action peut être retentée!</span> | ||||
| <p>Un point de chance est dépensé, l'action peut être retentée!</p> | ||||
| {{/if}} | ||||
|   | ||||
| @@ -1,10 +1,10 @@ | ||||
| <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> | ||||
| <h4><img class="chat-icon" src="{{competence.img}}" data-tooltip="{{competence.name}}" /> | ||||
|   {{alias}} attaque  à {{diffLibre}}: {{arme.name}}</h4> | ||||
| <p>{{selectedCarac.label}}{{#unless (eq selectedCarac.label competence.name)}} / {{competence.name}}{{/unless}}</p> | ||||
| {{> "systems/foundryvtt-reve-de-dragon/templates/chat-infojet.hbs"}} | ||||
| <hr> | ||||
| {{#if tactique}} | ||||
|   <div> | ||||
|   <p> | ||||
|     {{#if (eq tactique 'charge')}} | ||||
|     <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! | ||||
| @@ -14,9 +14,9 @@ | ||||
|         Votre feinte peut faire mouche! | ||||
|       {{/if}} | ||||
|     {{/if}} | ||||
|   </div> | ||||
|   </p> | ||||
| {{/if}} | ||||
| <div> | ||||
| <p> | ||||
|  {{#if rolled.isSuccess}} | ||||
|   <span><strong>{{show.cible}}</strong> doit se défendre à <strong>{{diffLibre}}</strong>, ou encaisser à | ||||
|     {{~#if (eq dmg.mortalite 'non-mortel')}} | ||||
| @@ -37,4 +37,4 @@ | ||||
|   <span>Votre attaque a échoué!</span> | ||||
| {{/if}} | ||||
| {{> "systems/foundryvtt-reve-de-dragon/templates/chat-info-appel-au-moral.hbs"}} | ||||
| </div> | ||||
| </p> | ||||
| @@ -1,15 +1,14 @@ | ||||
| <img class="chat-icon" src="{{competence.img}}" data-tooltip="{{oeuvre.system.competence}}" /> | ||||
| <h4> | ||||
| <h4><img class="chat-icon" src="{{competence.img}}" data-tooltip="{{oeuvre.system.competence}}" /> | ||||
|   {{alias}} {{#if rolled.isSuccess}}chante{{else}}tente de chanter{{/if}} {{oeuvre.name}} (niveau {{oeuvre.system.niveau}}) | ||||
| </h4> | ||||
| {{> "systems/foundryvtt-reve-de-dragon/templates/chat-infojet.hbs"}} | ||||
| <hr> | ||||
| <div> | ||||
| <p> | ||||
|   {{#if rolled.isSuccess}} | ||||
|   {{alias}} réussit son interprétation avec une qualité de {{qualiteFinale}} .  | ||||
|   {{else}} | ||||
|   {{alias}} manque d'inspiration, son interprétation a une qualité de {{qualiteFinale}}. | ||||
|   {{/if}} | ||||
|   {{> "systems/foundryvtt-reve-de-dragon/templates/chat-info-appel-au-moral.hbs"}} | ||||
| </div> | ||||
| </p> | ||||
| {{> "systems/foundryvtt-reve-de-dragon/templates/chat-description.hbs" oeuvre.system}} | ||||
|   | ||||
| @@ -1,5 +1,4 @@ | ||||
| <img class="chat-icon" src="{{competence.img}}" data-tooltip="{{competence.name}}" /> | ||||
| <h4> | ||||
| <h4><img class="chat-icon" src="{{competence.img}}" data-tooltip="{{competence.name}}" /> | ||||
|   {{alias}} {{show.title}}: | ||||
|   {{#if selectedCarac}}{{selectedCarac.label}} | ||||
|     {{#if competence}} | ||||
| @@ -9,12 +8,12 @@ | ||||
| </h4> | ||||
| {{> "systems/foundryvtt-reve-de-dragon/templates/chat-infojet.hbs"}} | ||||
| <hr> | ||||
| <div> | ||||
| <p> | ||||
|   <span>{{#if rolled.ptTache}}{{rolled.ptTache}} points de tâche{{/if}}{{#if rolled.ptQualite}}{{#if rolled.ptTache}},{{/if}} Qualité ajustée de {{rolled.ptQualite}}{{/if}}</span> | ||||
| </div> | ||||
| </p> | ||||
| {{> "systems/foundryvtt-reve-de-dragon/templates/chat-info-appel-au-moral.hbs"}} | ||||
| {{~#if show.explications}} | ||||
| <div> | ||||
| <p> | ||||
|   {{show.explications}} | ||||
| </div> | ||||
| </p> | ||||
| {{/if}} | ||||
|   | ||||
| @@ -1,15 +1,14 @@ | ||||
| <img class="chat-icon" src="{{competence.img}}" data-tooltip="{{oeuvre.system.competence}}" /> | ||||
| <h4> | ||||
| <h4><img class="chat-icon" src="{{competence.img}}" data-tooltip="{{oeuvre.system.competence}}" /> | ||||
|   {{alias}} {{#if rolled.isSuccess}}danse{{else}}tente de danser{{/if}} {{oeuvre.name}} (niveau {{oeuvre.system.niveau}}) | ||||
| </h4> | ||||
| {{> "systems/foundryvtt-reve-de-dragon/templates/chat-infojet.hbs"}} | ||||
| <hr> | ||||
| <div> | ||||
| <p> | ||||
|   {{#if rolled.isSuccess}} | ||||
|   {{alias}} réussit son interprétation avec une qualité de {{qualiteFinale}} .  | ||||
|   {{else}} | ||||
|   {{alias}} manque d'inspiration, son interprétation a une qualité de {{qualiteFinale}}. | ||||
|   {{/if}} | ||||
|   {{> "systems/foundryvtt-reve-de-dragon/templates/chat-info-appel-au-moral.hbs"}} | ||||
| </div> | ||||
| </p> | ||||
| {{> "systems/foundryvtt-reve-de-dragon/templates/chat-description.hbs" oeuvre.system}} | ||||
|   | ||||
| @@ -1,9 +1,9 @@ | ||||
| <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> | ||||
| <h4><img class="chat-icon" src="{{competence.img}}" data-tooltip="{{competence.name}}" /> | ||||
|   {{alias}} esquive une attaque à {{diffLibre}}</h4> | ||||
| <p>{{selectedCarac.label}}{{#unless (eq selectedCarac.label competence.name)}} / {{competence.name}}{{/unless}}</p> | ||||
| {{> "systems/foundryvtt-reve-de-dragon/templates/chat-infojet.hbs"}} | ||||
| <hr> | ||||
| <div> | ||||
| <p> | ||||
|   {{#if rolled.isSuccess}} | ||||
|   <span>Attaque esquivée!</span> | ||||
|     {{#if rolled.isPart}} | ||||
| @@ -14,10 +14,10 @@ | ||||
|   <span>L'esquive de {{alias}} a échoué!</span> | ||||
|   {{/if}} | ||||
|   {{> "systems/foundryvtt-reve-de-dragon/templates/chat-info-appel-au-moral.hbs"}} | ||||
| </div> | ||||
| </p> | ||||
|  | ||||
| {{#if attackerRoll.tactique}} | ||||
| <div> | ||||
| <p> | ||||
|   {{#if (eq attackerRoll.tactique 'charge')}} | ||||
|   <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! | ||||
| @@ -25,5 +25,5 @@ | ||||
|   <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> | ||||
| </p> | ||||
| {{/if}} | ||||
|   | ||||
| @@ -1,5 +1,4 @@ | ||||
| <img class="chat-icon" src="systems/foundryvtt-reve-de-dragon/icons/objets/chope_gres.webp" data-tooltip="Ethylisme" /> | ||||
| <h4> | ||||
| <h4><img class="chat-icon" src="systems/foundryvtt-reve-de-dragon/icons/objets/chope_gres.webp" data-tooltip="Ethylisme" /> | ||||
|   {{alias}} boit un verre d'alcool de force {{jetVie.forceAlcool}} | ||||
|   {{#if alcool}} | ||||
|   <br>{{alcool.name}} | ||||
|   | ||||
| @@ -1,7 +1,5 @@ | ||||
| {{#if competence.img}} | ||||
|   <img class="chat-icon" src="{{competence.img}}" data-tooltip="{{competence.name}}" /> | ||||
| {{/if}} | ||||
| <h4> | ||||
|   <img class="chat-icon" src="{{competence.img}}" data-tooltip="{{competence.name}}" /> | ||||
|   {{alias}} {{#if show.title}}{{show.title}}: {{/if}} | ||||
|   {{#if selectedCarac}}{{selectedCarac.label}} | ||||
|     {{#if competence}}{{#unless (eq selectedCarac.label competence.name)}} / {{competence.name}}{{/unless}}{{/if}} | ||||
|   | ||||
| @@ -1,15 +1,14 @@ | ||||
| <img class="chat-icon" src="{{competence.img}}" data-tooltip="{{oeuvre.system.competence}}" /> | ||||
| <h4> | ||||
| <h4><img class="chat-icon" src="{{competence.img}}" data-tooltip="{{oeuvre.system.competence}}" /> | ||||
|   {{alias}} joue à : {{oeuvre.name}} | ||||
| </h4> | ||||
| {{> "systems/foundryvtt-reve-de-dragon/templates/chat-infojet.hbs"}} | ||||
| <hr> | ||||
| <div> | ||||
| <p> | ||||
|   {{#if rolled.isSuccess}} | ||||
|   {{alias}} a gagné la partie ! | ||||
|   {{else}} | ||||
|   {{alias}} a perdu ... | ||||
|   {{/if}} | ||||
|   {{> "systems/foundryvtt-reve-de-dragon/templates/chat-info-appel-au-moral.hbs"}} | ||||
| </div> | ||||
| </p> | ||||
| {{> "systems/foundryvtt-reve-de-dragon/templates/chat-description.hbs" oeuvre.system}} | ||||
|   | ||||
| @@ -1,11 +1,11 @@ | ||||
| <img class="chat-icon" src="{{competence.img}}" data-tooltip="{{competence.name}}" /> | ||||
| <h4>{{alias}} lit le signe {{signe.name}}</h4> | ||||
| <h4><img class="chat-icon" src="{{competence.img}}" data-tooltip="{{competence.name}}" /> | ||||
|   {{alias}} lit le signe {{signe.name}}</h4> | ||||
| {{> "systems/foundryvtt-reve-de-dragon/templates/chat-infojet.hbs"}} | ||||
| <hr> | ||||
| <div> | ||||
| <p> | ||||
|   {{#if rolled.isSuccess}} | ||||
|   {{alias}} a gagné {{xpSort}} points d'expérience en sorts en {{competence.name}}. | ||||
|   {{else}} | ||||
|   {{alias}} n'a pas pu interpréter le signe draconique. | ||||
|   {{/if}} | ||||
| </div> | ||||
| </p> | ||||
|   | ||||
| @@ -1,5 +1,5 @@ | ||||
| <img class="chat-icon" src="{{competence.img}}" data-tooltip="{{competence.name}}"/> | ||||
| <h4 data-categorie="tmr" data-actor-id="{{actor._id}}"> | ||||
|   <img class="chat-icon" src="{{competence.img}}" data-tooltip="{{competence.name}}"/> | ||||
|   {{alias}} tente de {{maitrise.verbe}} {{grammar-le tmr.genre}} | ||||
|   {{#if isTMRCache}} | ||||
|     {{caseTmr-type tmr.coord}} | ||||
|   | ||||
| @@ -1,10 +1,9 @@ | ||||
| <img class="chat-icon" src="{{competence.img}}" data-tooltip="{{competence.name}}" /> | ||||
| <h4> | ||||
| <h4><img class="chat-icon" src="{{competence.img}}" data-tooltip="{{competence.name}}" /> | ||||
|   {{alias}} a médité : {{meditation.name}} | ||||
| </h4> | ||||
| {{> "systems/foundryvtt-reve-de-dragon/templates/chat-infojet.hbs"}} | ||||
| <hr> | ||||
| <div> | ||||
| <p> | ||||
|   {{#if rolled.isSuccess}} | ||||
|   {{alias}} aperçoit un signe draconique éphémère, qu'il faut aller lire en <strong>{{typeTmr-name meditation.system.tmr}}</strong>. | ||||
|   {{else}} | ||||
| @@ -12,4 +11,4 @@ | ||||
|   {{/if}} | ||||
|   <br><span>{{alias}} s'est fatigué de 2 cases.</span> | ||||
|   {{#if rolled.isEPart}}<br><span>Son échec {{#if rolled.isETotal}}total{{else}}particulier{{/if}} augmente de 1 la difficulté de la méditation!</span>{{/if~}} | ||||
| </div> | ||||
| </p> | ||||
|   | ||||
| @@ -1,9 +1,9 @@ | ||||
| <img class="chat-icon" src="icons/svg/lightning.svg" data-tooltip="Météo" /> | ||||
| <h4>Météo aléatoire</h4> | ||||
| <h4><img class="chat-icon" src="icons/svg/lightning.svg" data-tooltip="Météo" /> | ||||
|   Météo aléatoire</h4> | ||||
| <ul> | ||||
|   <li>Vent: {{lowerFirst vent.description}} {{grammar-apostrophe 'de' vent.direction}}, force {{vent.force}}</li> | ||||
|   <li>Mer {{lowerFirst mer.description}}, {{grammar-apostrophe 'de' mer.direction}}, force {{mer.force}}</li> | ||||
|   <li>Température {{lowerFirst temperature.description}} ({{plusMoins temperature.force}})</li> | ||||
|   <li>Couverture nuageuse: {{lowerFirst nuage.description}}</li> | ||||
|   <li>Pluie: {{lowerFirst pluie.description}}</li> | ||||
| </div> | ||||
| </ul> | ||||
|   | ||||
| @@ -1,15 +1,14 @@ | ||||
| <img class="chat-icon" src="{{competence.img}}" data-tooltip="{{oeuvre.system.competence}}" /> | ||||
| <h4> | ||||
| <h4><img class="chat-icon" src="{{competence.img}}" data-tooltip="{{oeuvre.system.competence}}" /> | ||||
|   {{alias}} {{#if rolled.isSuccess}}interprete{{else}}tente de jouer{{/if}} le morceau : {{oeuvre.name}} (niveau {{oeuvre.system.niveau}}) | ||||
| </h4> | ||||
| {{> "systems/foundryvtt-reve-de-dragon/templates/chat-infojet.hbs"}} | ||||
| <hr> | ||||
| <div> | ||||
| <p> | ||||
|   {{#if rolled.isSuccess}} | ||||
|   {{alias}} réussit son interprétation avec une qualité de {{qualiteFinale}} .  | ||||
|   {{else}} | ||||
|   {{alias}} manque d'inspiration, son interprétation a une qualité de {{qualiteFinale}}. | ||||
|   {{/if}} | ||||
|   {{> "systems/foundryvtt-reve-de-dragon/templates/chat-info-appel-au-moral.hbs"}} | ||||
| </div> | ||||
| </p> | ||||
| {{> "systems/foundryvtt-reve-de-dragon/templates/chat-description.hbs" oeuvre.system}} | ||||
|   | ||||
| @@ -1,16 +1,15 @@ | ||||
| <h4><img class="chat-icon" src="{{competence.img}}" data-tooltip="{{oeuvre.system.competence}}" /> | ||||
|  | ||||
|   {{alias}} tente d'interpréter {{oeuvre.name}} (niveau {{oeuvre.system.niveau}}) | ||||
| </h4> | ||||
| <br>{{upperFirst oeuvre.system.default_carac}} / {{oeuvre.system.competence}} | ||||
| {{> "systems/foundryvtt-reve-de-dragon/templates/chat-infojet.hbs"}} | ||||
| <hr> | ||||
| <div> | ||||
| <p> | ||||
|   {{#if rolled.isSuccess}} | ||||
|   {{alias}} réussit son interprétation avec une qualité de {{qualiteFinale}} .  | ||||
|   {{else}} | ||||
|   {{alias}} manque d'inspiration, son interprétation a une qualité de {{qualiteFinale}}. | ||||
|   {{/if}} | ||||
|   {{> "systems/foundryvtt-reve-de-dragon/templates/chat-info-appel-au-moral.hbs"}} | ||||
| </div> | ||||
| </p> | ||||
| {{> "systems/foundryvtt-reve-de-dragon/templates/chat-description.hbs" oeuvre.system}} | ||||
|   | ||||
| @@ -1,9 +1,9 @@ | ||||
| <img class="chat-icon" src="{{competence.img}}" data-tooltip="{{competence.name}}" /> | ||||
| <h4>{{alias}} pare une attaque à {{diffLibre}} - {{arme.name}}</h4> | ||||
| <div>{{selectedCarac.label}}{{#unless (eq selectedCarac.label competence.name)}} / {{competence.name}}{{/unless}}</div> | ||||
| <h4><img class="chat-icon" src="{{competence.img}}" data-tooltip="{{competence.name}}" /> | ||||
|   {{alias}} pare une attaque à {{diffLibre}} - {{arme.name}}</h4> | ||||
| <p>{{selectedCarac.label}}{{#unless (eq selectedCarac.label competence.name)}} / {{competence.name}}{{/unless}}</p> | ||||
| {{> "systems/foundryvtt-reve-de-dragon/templates/chat-infojet.hbs"}} | ||||
| <hr> | ||||
| <div> | ||||
| <p> | ||||
|   <span> | ||||
|     {{#if rolled.isSuccess}} | ||||
|     Attaque parée! | ||||
| @@ -13,27 +13,27 @@ | ||||
|     {{/if}} | ||||
|   </span> | ||||
|   {{> "systems/foundryvtt-reve-de-dragon/templates/chat-info-appel-au-moral.hbs"}} | ||||
| </div> | ||||
| </p> | ||||
|  | ||||
| {{#if (eq show.recul 'encaisse')}}<div>{{alias}} ne recule pas malgré la violence du coup.</div> | ||||
| {{else if (eq show.recul 'chute')}}<div>Sous la violence du coup, {{alias}} recule et chute au sol ! Il/elle ne pourra plus attaquer ce round.</div> | ||||
| {{else if (eq show.recul 'recul')}}<div>La violence du coup fait reculer {{alias}} de quelques mètres ! Il/elle ne pourra plus attaquer ce round.</div> | ||||
| {{#if (eq show.recul 'encaisse')}}<p>{{alias}} ne recule pas malgré la violence du coup.</p> | ||||
| {{else if (eq show.recul 'chute')}}<p>Sous la violence du coup, {{alias}} recule et chute au sol ! Il/elle ne pourra plus attaquer ce round.</p> | ||||
| {{else if (eq show.recul 'recul')}}<p>La violence du coup fait reculer {{alias}} de quelques mètres ! Il/elle ne pourra plus attaquer ce round.</p> | ||||
| {{/if}} | ||||
|  | ||||
| {{#if (eq show.deteriorationArme 'resiste')}} | ||||
| <div>L'arme résiste au choc de la parade.</div> | ||||
| <p>L'arme résiste au choc de la parade.</p> | ||||
| {{else if (eq show.deteriorationArme 'brise')}} | ||||
| <div>Sous la violence de la parade, {{arme.name}} s'est brisée!</div> | ||||
| <p>Sous la violence de la parade, {{arme.name}} s'est brisée!</p> | ||||
| {{else if (eq show.deteriorationArme 'perte')}} | ||||
| <div>En parant, l'arme perd {{show.perteResistance}} de résistance.</div> | ||||
| <p>En parant, l'arme perd {{show.perteResistance}} de résistance.</p> | ||||
| {{/if}} | ||||
|  | ||||
| {{#if show.desarme}} | ||||
| <div>Le défenseur {{alias}} lâche son arme qui tombe à ses pieds.</div> | ||||
| <p>Le défenseur {{alias}} lâche son arme qui tombe à ses pieds.</p> | ||||
| {{/if}} | ||||
|  | ||||
| {{#if attackerRoll.tactique}} | ||||
| <div> | ||||
| <p> | ||||
|   {{#if (eq attackerRoll.tactique 'charge')}} | ||||
|   <img class="chat-icon" src="icons/svg/thrust.svg" data-tooltip="charge" /> | ||||
|   C'était une charge, les parades de l'adversaire auront un -4 et il ne pourra pas esquiver! | ||||
| @@ -42,5 +42,5 @@ | ||||
|     width="32" /> | ||||
|   C'était une feinte! | ||||
|   {{/if}} | ||||
| </div> | ||||
| </p> | ||||
| {{/if}} | ||||
| @@ -1,5 +1,4 @@ | ||||
| <img class="chat-icon" src="{{competence.img}}" /> | ||||
| <h4> | ||||
| <h4><img class="chat-icon" src="{{competence.img}}" /> | ||||
|   {{#if (eq mode "attaque")}} | ||||
|     {{attacker.name}} tente de {{#if isECNIDefender}}conjurer la possession de{{else}}posséder{{/if}} {{defender.name}} | ||||
|   {{else}} | ||||
| @@ -9,7 +8,7 @@ | ||||
| {{> "systems/foundryvtt-reve-de-dragon/templates/chat-infojet.hbs"}} | ||||
|  | ||||
| <hr> | ||||
| <div> | ||||
| <p> | ||||
|   <span class='chat-card-button-area'> | ||||
|     <br> | ||||
|     {{#if (eq mode "attaque")}} | ||||
| @@ -44,4 +43,4 @@ | ||||
|     {{#if possession.isConjurer}} | ||||
|     <br><strong>Vous avez conjuré {{possession.system.typepossession}} ! La possession en cours a été supprimée.</strong> | ||||
|     {{/if}} | ||||
| </div> | ||||
| </p> | ||||
|   | ||||
| @@ -1,5 +1,4 @@ | ||||
| <img class="chat-icon" src="{{competence.img}}" data-tooltip="{{oeuvre.system.competence}}" /> | ||||
| <h4> | ||||
| <h4><img class="chat-icon" src="{{competence.img}}" data-tooltip="{{oeuvre.system.competence}}" /> | ||||
|   {{alias}} {{#if rolled.isSuccess}}réalise{{else}}tente de cuisiner{{/if}} la recette : {{oeuvre.name}} (niveau {{oeuvre.system.niveau}}) | ||||
| </h4> | ||||
| {{> "systems/foundryvtt-reve-de-dragon/templates/chat-infojet.hbs"}} | ||||
|   | ||||
| @@ -1,5 +1,5 @@ | ||||
| <img class="chat-icon" src="systems/foundryvtt-reve-de-dragon/icons/competence_legendes.webp" data-tooltip="Rêve de Dragon"/> | ||||
| <h4 data-categorie="tmr" data-actor-id="{{actor._id}}"> | ||||
|   <img class="chat-icon" src="systems/foundryvtt-reve-de-dragon/icons/competence_legendes.webp" data-tooltip="Rêve de Dragon"/> | ||||
|   {{alias}} tente de maîtriser un Rêve de Dragon! | ||||
| </h4> | ||||
| {{> "systems/foundryvtt-reve-de-dragon/templates/chat-infojet.hbs"}} | ||||
|   | ||||
| @@ -1,17 +1,16 @@ | ||||
| <img class="chat-icon" src="{{competence.img}}" data-tooltip="{{competence.name}}" /> | ||||
| <h4> | ||||
| <h4><img class="chat-icon" src="{{competence.img}}" data-tooltip="{{competence.name}}" /> | ||||
|   {{alias}} {{#if isSortReserve}}met en réserve{{else}}lance{{/if}} | ||||
|   le {{#if selectedSort.system.isrituel}}rituel{{else}}sort{{/if}} | ||||
|   {{selectedSort.name}} | ||||
| </h4> | ||||
| <div>Pour {{selectedSort.system.ptreve_reel}} point{{~#if (gt selectedSort.system.ptreve_reel 1)}}s{{/if}} de rêve en {{tmr.label}} ({{tmr.coord}}). | ||||
| <p>Pour {{selectedSort.system.ptreve_reel}} point{{~#if (gt selectedSort.system.ptreve_reel 1)}}s{{/if}} de rêve en {{tmr.label}} ({{tmr.coord}}). | ||||
| {{#if show.reveInsuffisant}} | ||||
| <span>Pas assez de rêve!</span> | ||||
| {{/if}} | ||||
| </div> | ||||
| </p> | ||||
| {{> "systems/foundryvtt-reve-de-dragon/templates/chat-infojet.hbs"}} | ||||
| <hr> | ||||
| <div> | ||||
| <p> | ||||
|   <span> | ||||
|     {{#if rolled.isETotal}}Echec TOTAL | ||||
|     {{else if rolled.isEchec}}Echec | ||||
| @@ -22,8 +21,8 @@ | ||||
|     {{else}}{{depenseReve}} points de rêve ont été dépensés | ||||
|     {{~/if}}. | ||||
|   </span> | ||||
| </div> | ||||
| </p> | ||||
| <hr> | ||||
| <div class="poesie-extrait poesie-overflow"> | ||||
| <p class="poesie-extrait poesie-overflow"> | ||||
|   {{{selectedSort.system.description}}} | ||||
| </div> | ||||
| </p> | ||||
|   | ||||
| @@ -1,11 +1,10 @@ | ||||
| <img class="chat-icon" src="{{competence.img}}" data-tooltip="{{competence.name}}" /> | ||||
| <h4> | ||||
| <h4><img class="chat-icon" src="{{competence.img}}" data-tooltip="{{competence.name}}" /> | ||||
|   {{alias}} travaille à sa tâche {{tache.name}} | ||||
|   <br>{{selectedCarac.label}}/{{competence.name}} | ||||
| </h4> | ||||
| {{> "systems/foundryvtt-reve-de-dragon/templates/chat-infojet.hbs"}} | ||||
| <hr> | ||||
| <div> | ||||
| <p> | ||||
|   {{alias}} a obtenu {{rolled.ptTache}} point{{~#unless (eq rolled.ptTache 1)}}s{{/unless}} de tâche, | ||||
|    son avancement est de | ||||
|    <span class="rdd-roll-{{#if (gt tache.system.points_de_tache_courant 0)}}norm{{else}}etotal{{/if}}">{{tache.system.points_de_tache_courant}} | ||||
| @@ -15,4 +14,4 @@ | ||||
|   {{#if (and tache.system.fatigue appliquerFatigue)}}<br><span>Il s'est fatigué de {{tache.system.fatigue}} case{{~#if (gt tache.system.fatigue 1)}}s{{/if}}.</span>{{/if}} | ||||
|   {{#if rolled.isETotal}}<br><span>Son échec total augmente de 1 la difficulté de la tâche!</span>{{/if~}} | ||||
|   {{> "systems/foundryvtt-reve-de-dragon/templates/chat-info-appel-au-moral.hbs"}} | ||||
| </div> | ||||
| </p> | ||||
|   | ||||
| @@ -1,10 +1,10 @@ | ||||
| {{log 'chat-vente-item' this}} | ||||
| <div class="post-item" data-transfer="{{transfer}}"> | ||||
|   <h3>{{#if alias}}{{alias}} propose: {{else}}Acheter {{/if}}{{item.name}}</h3> | ||||
|   {{#if item.img}} | ||||
|   <img class="chat-icon" src="{{item.img}}" data-tooltip="{{item.name}}" /> | ||||
|   {{/if}} | ||||
|   <div class="poesie-extrait poesie-overflow card-content">{{{item.system.description}}}</div> | ||||
|   <h4> | ||||
|     {{#if item.img}} | ||||
|     <img class="chat-icon" src="{{item.img}}" data-tooltip="{{item.name}}" /> | ||||
|     {{/if}} | ||||
|     {{#if alias}}{{alias}} propose: {{else}}Acheter {{/if}}{{item.name}}</h4> | ||||
|   <p class="poesie-extrait poesie-overflow card-content">{{{item.system.description}}}</p> | ||||
|   <p> | ||||
|     {{#each properties as |property p|}} | ||||
|     <span>{{{property}}}</span><br> | ||||
|   | ||||
| @@ -24,20 +24,18 @@ | ||||
|           <div class="flex-group-center flex-shrink"> | ||||
|             <h4>Le gardien gére les TMR du joueur, le joueur ne peut pas monter dans les TMR!</h4> | ||||
|           </div> | ||||
|           <hr> | ||||
|         {{/if}} | ||||
|         <div class="flex-group-center flex-shrink"> | ||||
|           <img class="small-button-direction tmr-move" data-move="topleft" src="systems/foundryvtt-reve-de-dragon/assets/ui/dir-topleft.svg"> | ||||
|           <img class="small-button-direction tmr-move" data-move="top" src="systems/foundryvtt-reve-de-dragon/assets/ui/dir-top.svg"> | ||||
|           <img class="small-button-direction tmr-move" data-move="topright" src="systems/foundryvtt-reve-de-dragon/assets/ui/dir-topright.svg"> | ||||
|         </div> | ||||
|         <div class="flex-group-center flex-shrink"> | ||||
|           <label>Coordonnées : </label><span id="tmr-pos">0</span> | ||||
|         </div> | ||||
|         <div class="flex-group-center flex-shrink"> | ||||
|           <img class="small-button-direction tmr-move" data-move="bottomleft" src="systems/foundryvtt-reve-de-dragon/assets/ui/dir-bottomleft.svg">         | ||||
|           <img class="small-button-direction tmr-move" data-move="bottom" src="systems/foundryvtt-reve-de-dragon/assets/ui/dir-bottom.svg"> | ||||
|           <img class="small-button-direction tmr-move" data-move="bottomright" src="systems/foundryvtt-reve-de-dragon/assets/ui/dir-bottomright.svg"> | ||||
|         <label class="flex-group-center" >Coordonnées : <span id="tmr-pos">0</span> </label> | ||||
|         <div class="grid-move-tmr"> | ||||
|           <img class="move-tmr-topleft tmr-move" data-move="topleft" src="systems/foundryvtt-reve-de-dragon/assets/ui/dir-topleft.svg"> | ||||
|           <img class="move-tmr-top tmr-move" data-move="top" src="systems/foundryvtt-reve-de-dragon/assets/ui/dir-top.svg"> | ||||
|           <img class="move-tmr-topright tmr-move" data-move="topright" src="systems/foundryvtt-reve-de-dragon/assets/ui/dir-topright.svg"> | ||||
|           <img class="move-tmr-bottomleft tmr-move" data-move="bottomleft" src="systems/foundryvtt-reve-de-dragon/assets/ui/dir-bottomleft.svg">         | ||||
|           <img class="move-tmr-bottom tmr-move" data-move="bottom" src="systems/foundryvtt-reve-de-dragon/assets/ui/dir-bottom.svg"> | ||||
|           <img class="move-tmr-bottomright tmr-move" data-move="bottomright" src="systems/foundryvtt-reve-de-dragon/assets/ui/dir-bottomright.svg"> | ||||
|         </div> | ||||
|         <hr> | ||||
|         <div class="flex-group-center flex-shrink lire-signe-draconique"> | ||||
|           <a>Lire un signe draconique</a> | ||||
|         </div> | ||||
|   | ||||
| @@ -36,9 +36,10 @@ | ||||
|     </tr> | ||||
|     {{#each gmAstrologie.ajustementsActors as |ajustementActeur|}} | ||||
|     <tr class="heure-naissance" data-heure-naissance="{{actor.system.heure}}"> | ||||
|       <td> | ||||
|       <td class="info-acteur"> | ||||
|         <img class="img-signe-heure" src="{{actor.img}}" data-tooltip="{{actor.name}}" /> | ||||
|         {{actor.name}} {{timestamp-imgSigneHeure actor.system.heure}} | ||||
|         <span>{{actor.name}}</span> | ||||
|         {{timestamp-imgSigneHeure actor.system.heure}} | ||||
|       </td> | ||||
|       {{#each ajustementActeur.ajustements as |ajustement|}} | ||||
|       <td>{{#if (ne ajustement.ajustement 0)}} | ||||
|   | ||||
| @@ -1,18 +1,32 @@ | ||||
| <div class="calendar-horloge"> | ||||
| 	{{#if isGM}} | ||||
| 		<div class="calendar-boutons-heure"> | ||||
| 			<i class="calendar-btn calendar-1min" data-calendar-avance="1" data-tooltip="Avancer de 1 minute">+1</i> | ||||
| 			<i class="calendar-btn calendar-5min" data-calendar-avance="5" data-tooltip="Avancer de 5 minutes">+5</i> | ||||
| 			<i class="calendar-btn calendar-15min" data-calendar-avance="15" data-tooltip="Avancer de 15 minutes">+15</i> | ||||
| 			<i class="calendar-btn calendar-30min" data-calendar-avance="30" data-tooltip="Avancer de 30 minutes">+30</i> | ||||
| 			<i class="calendar-btn calendar-60min" data-calendar-avance="60" data-tooltip="Avancer de 60 minutes" >+60</i> | ||||
| 			<i class="calendar-btn calendar-1heure" data-calendar-avance="120" data-tooltip="Avancer d'1 heure" >+1h</i> | ||||
| 			<i class="calendar-btn calendar-lyre fas fa-forward" data-calendar-set="6" data-tooltip="Avancer à Lyre"> | ||||
| 				<img src="systems/foundryvtt-reve-de-dragon/icons/heures/hd07.svg" data-tooltip="Avancer à Lyre"/> | ||||
| 			</i> | ||||
| 			<i class="calendar-btn calendar-vaisseau fas fa-forward" data-calendar-set="0" data-tooltip="Avancer au Vaisseau"> | ||||
| 				<img src="systems/foundryvtt-reve-de-dragon/icons/heures/hd01.svg" data-tooltip="Avancer au Vaisseau"/> | ||||
| 			</i> | ||||
| 			<a class="calendar-btn calendar-1min" data-calendar-avance="1" data-tooltip="Avancer de 1 minute"> | ||||
| 				<i>+1</i> | ||||
| 			</a> | ||||
| 			<a class="calendar-btn calendar-5min" data-calendar-avance="5" data-tooltip="Avancer de 5 minutes"> | ||||
| 				<i>+5</i> | ||||
| 			</a> | ||||
| 			<a class="calendar-btn calendar-15min" data-calendar-avance="15" data-tooltip="Avancer de 15 minutes"> | ||||
| 				<i>+15</i> | ||||
| 			</a> | ||||
| 			<a class="calendar-btn calendar-30min" data-calendar-avance="30" data-tooltip="Avancer de 30 minutes"> | ||||
| 				<i>+30</i> | ||||
| 			</a> | ||||
| 			<a class="calendar-btn calendar-60min" data-calendar-avance="60" data-tooltip="Avancer de 60 minutes"> | ||||
| 				<i>+60</i> | ||||
| 			</a> | ||||
| 			<a class="calendar-btn calendar-1heure" data-calendar-avance="120" data-tooltip="Avancer d'1 heure"> | ||||
| 				<i>+1h</i> | ||||
| 			</a> | ||||
| 			<a class="calendar-btn calendar-lyre" data-calendar-set="6" data-tooltip="Avancer à Lyre"> | ||||
| 				<i class="fas fa-forward"></i> | ||||
| 				<img src="systems/foundryvtt-reve-de-dragon/icons/heures/hd07.svg"/> | ||||
| 			</a> | ||||
| 			<a class="calendar-btn calendar-vaisseau" data-calendar-set="0" data-tooltip="Avancer au Vaisseau"> | ||||
| 				<i class="fas fa-forward"></i> | ||||
| 				<img src="systems/foundryvtt-reve-de-dragon/icons/heures/hd01.svg"/> | ||||
| 			</a> | ||||
| 		</div> | ||||
| 	{{/if}} | ||||
| 	<div class="horloge-digitale"> | ||||
|   | ||||
		Reference in New Issue
	
	Block a user