Compare commits
13 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 15510b99d8 | |||
| fa30705989 | |||
| 04f550dd21 | |||
| 850cae3979 | |||
| 7b514d5159 | |||
| d78ede4f59 | |||
| 3de00fd001 | |||
| 1b340e526c | |||
| 3f3bf293b1 | |||
| 80b4cde130 | |||
| 74fecac47e | |||
| f1ee8fb45b | |||
| 52a5084419 |
15
changelog.md
15
changelog.md
@@ -1,5 +1,20 @@
|
|||||||
# 13.0
|
# 13.0
|
||||||
|
|
||||||
|
## 13.0.29 - Le tricorne d'Illysis
|
||||||
|
|
||||||
|
- gestion des attaques avec jets V2 depuis l'onglet de combat
|
||||||
|
- les jets de résistance en mode V2 fonctionnent sans sélection de compétence
|
||||||
|
- affichage de l'expérience correspondant aux sorts pour aider à la création
|
||||||
|
- affichage de l'équivallent d'expérience des caractéristiques
|
||||||
|
|
||||||
|
## 13.0.28 - La quadrature d'Illysis
|
||||||
|
|
||||||
|
- Les ajustements de portée sont calculés pour les attaques à distance
|
||||||
|
- L'appel au moral dans le tchat ne déplace plus les boutons d'appel à la chance
|
||||||
|
- Correction d'apparence V13
|
||||||
|
- la fenêtre de choix des status utilisés est affichée correctement
|
||||||
|
- la fenêtrre d'astrologir MJ est affichée correctement
|
||||||
|
|
||||||
## 13.0.27 - Les lunettes d'Illysis
|
## 13.0.27 - Les lunettes d'Illysis
|
||||||
|
|
||||||
- Les heures ne sont plus affichées en doublon sur les messages
|
- Les heures ne sont plus affichées en doublon sur les messages
|
||||||
|
|||||||
@@ -893,7 +893,7 @@ body {
|
|||||||
max-width: 1.4rem;
|
max-width: 1.4rem;
|
||||||
max-height: 1.4rem;
|
max-height: 1.4rem;
|
||||||
border: 1px;
|
border: 1px;
|
||||||
background: center / contain no-repeat url("../../icons/templates/icone_parchement_vierge.webp");
|
background: center / contain no-repeat url("../icons/templates/icone_parchement_vierge.webp");
|
||||||
}
|
}
|
||||||
.system-foundryvtt-reve-de-dragon .sheet-header .header-compteurs {
|
.system-foundryvtt-reve-de-dragon .sheet-header .header-compteurs {
|
||||||
width: calc(60% - 110px - 1rem);
|
width: calc(60% - 110px - 1rem);
|
||||||
@@ -1210,6 +1210,10 @@ body {
|
|||||||
color: rgba(173, 36, 26, 0.9);
|
color: rgba(173, 36, 26, 0.9);
|
||||||
text-shadow: 1px 1px 4px #3c3c3c;
|
text-shadow: 1px 1px 4px #3c3c3c;
|
||||||
}
|
}
|
||||||
|
.system-foundryvtt-reve-de-dragon .rdd-dialog.status-effects li {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: row;
|
||||||
|
}
|
||||||
.system-foundryvtt-reve-de-dragon .rdd-dialog-select img.select-img {
|
.system-foundryvtt-reve-de-dragon .rdd-dialog-select img.select-img {
|
||||||
-webkit-box-flex: 0;
|
-webkit-box-flex: 0;
|
||||||
-ms-flex: 0 0 48px;
|
-ms-flex: 0 0 48px;
|
||||||
@@ -1734,25 +1738,121 @@ body {
|
|||||||
.system-foundryvtt-reve-de-dragon form.app-personnage-aleatoire h2 {
|
.system-foundryvtt-reve-de-dragon form.app-personnage-aleatoire h2 {
|
||||||
min-width: 30rem;
|
min-width: 30rem;
|
||||||
}
|
}
|
||||||
.system-foundryvtt-reve-de-dragon .app-calendar-astrologie div.theme-astral {
|
.system-foundryvtt-reve-de-dragon .rdd-calendar-astrologie div.theme-astral {
|
||||||
width: 14rem;
|
width: 14rem;
|
||||||
margin: 0.4rem;
|
margin: 0.4rem;
|
||||||
}
|
}
|
||||||
.system-foundryvtt-reve-de-dragon .app-calendar-astrologie div.horloge-roue {
|
.system-foundryvtt-reve-de-dragon .rdd-calendar-astrologie div.horloge-roue {
|
||||||
position: relative;
|
position: relative;
|
||||||
left: calc(50% - 6.5rem);
|
left: calc(50% - 6.5rem);
|
||||||
width: 13rem;
|
width: 13rem;
|
||||||
height: 13rem;
|
height: 13rem;
|
||||||
}
|
}
|
||||||
.system-foundryvtt-reve-de-dragon .app-calendar-astrologie div.horloge-roue div.horloge-heure {
|
.system-foundryvtt-reve-de-dragon .rdd-calendar-astrologie div.horloge-roue div.horloge-heure {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
width: 1.8rem;
|
width: 1.8rem;
|
||||||
height: 1.8rem;
|
height: 1.8rem;
|
||||||
}
|
}
|
||||||
.system-foundryvtt-reve-de-dragon .app-calendar-astrologie div.horloge-roue div.horloge-heure img.horloge-heure-img {
|
.system-foundryvtt-reve-de-dragon .rdd-calendar-astrologie div.horloge-roue div.horloge-heure img.horloge-heure-img {
|
||||||
width: 2rem;
|
width: 2rem;
|
||||||
height: 2rem;
|
height: 2rem;
|
||||||
}
|
}
|
||||||
|
.system-foundryvtt-reve-de-dragon .rdd-calendar-astrologie div.horloge-heure.heure-01 {
|
||||||
|
top: calc(50% - 1rem + 0 * 41%);
|
||||||
|
left: calc(50% - 1rem + -1 * 41%);
|
||||||
|
}
|
||||||
|
.system-foundryvtt-reve-de-dragon .rdd-calendar-astrologie div.horloge-heure.heure-02 {
|
||||||
|
top: calc(50% - 1rem + -0.5 * 41%);
|
||||||
|
left: calc(50% - 1rem + -0.8660254 * 41%);
|
||||||
|
}
|
||||||
|
.system-foundryvtt-reve-de-dragon .rdd-calendar-astrologie div.horloge-heure.heure-03 {
|
||||||
|
top: calc(50% - 1rem + -0.8660254 * 41%);
|
||||||
|
left: calc(50% - 1rem + -0.5 * 41%);
|
||||||
|
}
|
||||||
|
.system-foundryvtt-reve-de-dragon .rdd-calendar-astrologie div.horloge-heure.heure-04 {
|
||||||
|
top: calc(50% - 1rem + -1 * 41%);
|
||||||
|
left: calc(50% - 1rem + 0 * 41%);
|
||||||
|
}
|
||||||
|
.system-foundryvtt-reve-de-dragon .rdd-calendar-astrologie div.horloge-heure.heure-05 {
|
||||||
|
top: calc(50% - 1rem + -0.8660254 * 41%);
|
||||||
|
left: calc(50% - 1rem + 0.5 * 41%);
|
||||||
|
}
|
||||||
|
.system-foundryvtt-reve-de-dragon .rdd-calendar-astrologie div.horloge-heure.heure-06 {
|
||||||
|
top: calc(50% - 1rem + -0.5 * 41%);
|
||||||
|
left: calc(50% - 1rem + 0.8660254 * 41%);
|
||||||
|
}
|
||||||
|
.system-foundryvtt-reve-de-dragon .rdd-calendar-astrologie div.horloge-heure.heure-07 {
|
||||||
|
top: calc(50% - 1rem + 0 * 41%);
|
||||||
|
left: calc(50% - 1rem + 1 * 41%);
|
||||||
|
}
|
||||||
|
.system-foundryvtt-reve-de-dragon .rdd-calendar-astrologie div.horloge-heure.heure-08 {
|
||||||
|
top: calc(50% - 1rem + 0.5 * 41%);
|
||||||
|
left: calc(50% - 1rem + 0.8660254 * 41%);
|
||||||
|
}
|
||||||
|
.system-foundryvtt-reve-de-dragon .rdd-calendar-astrologie div.horloge-heure.heure-09 {
|
||||||
|
top: calc(50% - 1rem + 0.8660254 * 41%);
|
||||||
|
left: calc(50% - 1rem + 0.5 * 41%);
|
||||||
|
}
|
||||||
|
.system-foundryvtt-reve-de-dragon .rdd-calendar-astrologie div.horloge-heure.heure-10 {
|
||||||
|
top: calc(50% - 1rem + 1 * 41%);
|
||||||
|
left: calc(50% - 1rem + 0 * 41%);
|
||||||
|
}
|
||||||
|
.system-foundryvtt-reve-de-dragon .rdd-calendar-astrologie div.horloge-heure.heure-11 {
|
||||||
|
top: calc(50% - 1rem + 0.8660254 * 41%);
|
||||||
|
left: calc(50% - 1rem + -0.5 * 41%);
|
||||||
|
}
|
||||||
|
.system-foundryvtt-reve-de-dragon .rdd-calendar-astrologie div.horloge-heure.heure-12 {
|
||||||
|
top: calc(50% - 1rem + 0.5 * 41%);
|
||||||
|
left: calc(50% - 1rem + -0.8660254 * 41%);
|
||||||
|
}
|
||||||
|
.system-foundryvtt-reve-de-dragon .rdd-calendar-astrologie div.horloge-ajustement.heure-01 {
|
||||||
|
top: calc(50% - 0.4rem + 0 * 28%);
|
||||||
|
left: calc(50% - 0.4rem + -1 * 28%);
|
||||||
|
}
|
||||||
|
.system-foundryvtt-reve-de-dragon .rdd-calendar-astrologie div.horloge-ajustement.heure-02 {
|
||||||
|
top: calc(50% - 0.4rem + -0.5 * 28%);
|
||||||
|
left: calc(50% - 0.4rem + -0.8660254 * 28%);
|
||||||
|
}
|
||||||
|
.system-foundryvtt-reve-de-dragon .rdd-calendar-astrologie div.horloge-ajustement.heure-03 {
|
||||||
|
top: calc(50% - 0.4rem + -0.8660254 * 28%);
|
||||||
|
left: calc(50% - 0.4rem + -0.5 * 28%);
|
||||||
|
}
|
||||||
|
.system-foundryvtt-reve-de-dragon .rdd-calendar-astrologie div.horloge-ajustement.heure-04 {
|
||||||
|
top: calc(50% - 0.4rem + -1 * 28%);
|
||||||
|
left: calc(50% - 0.4rem + 0 * 28%);
|
||||||
|
}
|
||||||
|
.system-foundryvtt-reve-de-dragon .rdd-calendar-astrologie div.horloge-ajustement.heure-05 {
|
||||||
|
top: calc(50% - 0.4rem + -0.8660254 * 28%);
|
||||||
|
left: calc(50% - 0.4rem + 0.5 * 28%);
|
||||||
|
}
|
||||||
|
.system-foundryvtt-reve-de-dragon .rdd-calendar-astrologie div.horloge-ajustement.heure-06 {
|
||||||
|
top: calc(50% - 0.4rem + -0.5 * 28%);
|
||||||
|
left: calc(50% - 0.4rem + 0.8660254 * 28%);
|
||||||
|
}
|
||||||
|
.system-foundryvtt-reve-de-dragon .rdd-calendar-astrologie div.horloge-ajustement.heure-07 {
|
||||||
|
top: calc(50% - 0.4rem + 0 * 28%);
|
||||||
|
left: calc(50% - 0.4rem + 1 * 28%);
|
||||||
|
}
|
||||||
|
.system-foundryvtt-reve-de-dragon .rdd-calendar-astrologie div.horloge-ajustement.heure-08 {
|
||||||
|
top: calc(50% - 0.4rem + 0.5 * 28%);
|
||||||
|
left: calc(50% - 0.4rem + 0.8660254 * 28%);
|
||||||
|
}
|
||||||
|
.system-foundryvtt-reve-de-dragon .rdd-calendar-astrologie div.horloge-ajustement.heure-09 {
|
||||||
|
top: calc(50% - 0.4rem + 0.8660254 * 28%);
|
||||||
|
left: calc(50% - 0.4rem + 0.5 * 28%);
|
||||||
|
}
|
||||||
|
.system-foundryvtt-reve-de-dragon .rdd-calendar-astrologie div.horloge-ajustement.heure-10 {
|
||||||
|
top: calc(50% - 0.4rem + 1 * 28%);
|
||||||
|
left: calc(50% - 0.4rem + 0 * 28%);
|
||||||
|
}
|
||||||
|
.system-foundryvtt-reve-de-dragon .rdd-calendar-astrologie div.horloge-ajustement.heure-11 {
|
||||||
|
top: calc(50% - 0.4rem + 0.8660254 * 28%);
|
||||||
|
left: calc(50% - 0.4rem + -0.5 * 28%);
|
||||||
|
}
|
||||||
|
.system-foundryvtt-reve-de-dragon .rdd-calendar-astrologie div.horloge-ajustement.heure-12 {
|
||||||
|
top: calc(50% - 0.4rem + 0.5 * 28%);
|
||||||
|
left: calc(50% - 0.4rem + -0.8660254 * 28%);
|
||||||
|
}
|
||||||
.system-foundryvtt-reve-de-dragon .window-app .window-content,
|
.system-foundryvtt-reve-de-dragon .window-app .window-content,
|
||||||
.system-foundryvtt-reve-de-dragon .window-app.sheet .window-content .sheet-body,
|
.system-foundryvtt-reve-de-dragon .window-app.sheet .window-content .sheet-body,
|
||||||
.system-foundryvtt-reve-de-dragon .application .window-content {
|
.system-foundryvtt-reve-de-dragon .application .window-content {
|
||||||
@@ -2597,102 +2697,6 @@ body {
|
|||||||
top: calc(50% - 0.7rem + 0.5 * 38%);
|
top: calc(50% - 0.7rem + 0.5 * 38%);
|
||||||
left: calc(50% - 0.7rem + -0.8660254 * 41%);
|
left: calc(50% - 0.7rem + -0.8660254 * 41%);
|
||||||
}
|
}
|
||||||
.system-foundryvtt-reve-de-dragon .calendar-astrologie div.horloge-heure.heure-01 {
|
|
||||||
top: calc(50% - 1rem + 0 * 41%);
|
|
||||||
left: calc(50% - 1rem + -1 * 41%);
|
|
||||||
}
|
|
||||||
.system-foundryvtt-reve-de-dragon .calendar-astrologie div.horloge-heure.heure-02 {
|
|
||||||
top: calc(50% - 1rem + -0.5 * 41%);
|
|
||||||
left: calc(50% - 1rem + -0.8660254 * 41%);
|
|
||||||
}
|
|
||||||
.system-foundryvtt-reve-de-dragon .calendar-astrologie div.horloge-heure.heure-03 {
|
|
||||||
top: calc(50% - 1rem + -0.8660254 * 41%);
|
|
||||||
left: calc(50% - 1rem + -0.5 * 41%);
|
|
||||||
}
|
|
||||||
.system-foundryvtt-reve-de-dragon .calendar-astrologie div.horloge-heure.heure-04 {
|
|
||||||
top: calc(50% - 1rem + -1 * 41%);
|
|
||||||
left: calc(50% - 1rem + 0 * 41%);
|
|
||||||
}
|
|
||||||
.system-foundryvtt-reve-de-dragon .calendar-astrologie div.horloge-heure.heure-05 {
|
|
||||||
top: calc(50% - 1rem + -0.8660254 * 41%);
|
|
||||||
left: calc(50% - 1rem + 0.5 * 41%);
|
|
||||||
}
|
|
||||||
.system-foundryvtt-reve-de-dragon .calendar-astrologie div.horloge-heure.heure-06 {
|
|
||||||
top: calc(50% - 1rem + -0.5 * 41%);
|
|
||||||
left: calc(50% - 1rem + 0.8660254 * 41%);
|
|
||||||
}
|
|
||||||
.system-foundryvtt-reve-de-dragon .calendar-astrologie div.horloge-heure.heure-07 {
|
|
||||||
top: calc(50% - 1rem + 0 * 41%);
|
|
||||||
left: calc(50% - 1rem + 1 * 41%);
|
|
||||||
}
|
|
||||||
.system-foundryvtt-reve-de-dragon .calendar-astrologie div.horloge-heure.heure-08 {
|
|
||||||
top: calc(50% - 1rem + 0.5 * 41%);
|
|
||||||
left: calc(50% - 1rem + 0.8660254 * 41%);
|
|
||||||
}
|
|
||||||
.system-foundryvtt-reve-de-dragon .calendar-astrologie div.horloge-heure.heure-09 {
|
|
||||||
top: calc(50% - 1rem + 0.8660254 * 41%);
|
|
||||||
left: calc(50% - 1rem + 0.5 * 41%);
|
|
||||||
}
|
|
||||||
.system-foundryvtt-reve-de-dragon .calendar-astrologie div.horloge-heure.heure-10 {
|
|
||||||
top: calc(50% - 1rem + 1 * 41%);
|
|
||||||
left: calc(50% - 1rem + 0 * 41%);
|
|
||||||
}
|
|
||||||
.system-foundryvtt-reve-de-dragon .calendar-astrologie div.horloge-heure.heure-11 {
|
|
||||||
top: calc(50% - 1rem + 0.8660254 * 41%);
|
|
||||||
left: calc(50% - 1rem + -0.5 * 41%);
|
|
||||||
}
|
|
||||||
.system-foundryvtt-reve-de-dragon .calendar-astrologie div.horloge-heure.heure-12 {
|
|
||||||
top: calc(50% - 1rem + 0.5 * 41%);
|
|
||||||
left: calc(50% - 1rem + -0.8660254 * 41%);
|
|
||||||
}
|
|
||||||
.system-foundryvtt-reve-de-dragon .calendar-astrologie div.horloge-ajustement.heure-01 {
|
|
||||||
top: calc(50% - 0.4rem + 0 * 28%);
|
|
||||||
left: calc(50% - 0.4rem + -1 * 28%);
|
|
||||||
}
|
|
||||||
.system-foundryvtt-reve-de-dragon .calendar-astrologie div.horloge-ajustement.heure-02 {
|
|
||||||
top: calc(50% - 0.4rem + -0.5 * 28%);
|
|
||||||
left: calc(50% - 0.4rem + -0.8660254 * 28%);
|
|
||||||
}
|
|
||||||
.system-foundryvtt-reve-de-dragon .calendar-astrologie div.horloge-ajustement.heure-03 {
|
|
||||||
top: calc(50% - 0.4rem + -0.8660254 * 28%);
|
|
||||||
left: calc(50% - 0.4rem + -0.5 * 28%);
|
|
||||||
}
|
|
||||||
.system-foundryvtt-reve-de-dragon .calendar-astrologie div.horloge-ajustement.heure-04 {
|
|
||||||
top: calc(50% - 0.4rem + -1 * 28%);
|
|
||||||
left: calc(50% - 0.4rem + 0 * 28%);
|
|
||||||
}
|
|
||||||
.system-foundryvtt-reve-de-dragon .calendar-astrologie div.horloge-ajustement.heure-05 {
|
|
||||||
top: calc(50% - 0.4rem + -0.8660254 * 28%);
|
|
||||||
left: calc(50% - 0.4rem + 0.5 * 28%);
|
|
||||||
}
|
|
||||||
.system-foundryvtt-reve-de-dragon .calendar-astrologie div.horloge-ajustement.heure-06 {
|
|
||||||
top: calc(50% - 0.4rem + -0.5 * 28%);
|
|
||||||
left: calc(50% - 0.4rem + 0.8660254 * 28%);
|
|
||||||
}
|
|
||||||
.system-foundryvtt-reve-de-dragon .calendar-astrologie div.horloge-ajustement.heure-07 {
|
|
||||||
top: calc(50% - 0.4rem + 0 * 28%);
|
|
||||||
left: calc(50% - 0.4rem + 1 * 28%);
|
|
||||||
}
|
|
||||||
.system-foundryvtt-reve-de-dragon .calendar-astrologie div.horloge-ajustement.heure-08 {
|
|
||||||
top: calc(50% - 0.4rem + 0.5 * 28%);
|
|
||||||
left: calc(50% - 0.4rem + 0.8660254 * 28%);
|
|
||||||
}
|
|
||||||
.system-foundryvtt-reve-de-dragon .calendar-astrologie div.horloge-ajustement.heure-09 {
|
|
||||||
top: calc(50% - 0.4rem + 0.8660254 * 28%);
|
|
||||||
left: calc(50% - 0.4rem + 0.5 * 28%);
|
|
||||||
}
|
|
||||||
.system-foundryvtt-reve-de-dragon .calendar-astrologie div.horloge-ajustement.heure-10 {
|
|
||||||
top: calc(50% - 0.4rem + 1 * 28%);
|
|
||||||
left: calc(50% - 0.4rem + 0 * 28%);
|
|
||||||
}
|
|
||||||
.system-foundryvtt-reve-de-dragon .calendar-astrologie div.horloge-ajustement.heure-11 {
|
|
||||||
top: calc(50% - 0.4rem + 0.8660254 * 28%);
|
|
||||||
left: calc(50% - 0.4rem + -0.5 * 28%);
|
|
||||||
}
|
|
||||||
.system-foundryvtt-reve-de-dragon .calendar-astrologie div.horloge-ajustement.heure-12 {
|
|
||||||
top: calc(50% - 0.4rem + 0.5 * 28%);
|
|
||||||
left: calc(50% - 0.4rem + -0.8660254 * 28%);
|
|
||||||
}
|
|
||||||
.system-foundryvtt-reve-de-dragon .calendar-boutons-heure .calendar-btn:is(.calendar-lyre, .calendar-vaisseau) img {
|
.system-foundryvtt-reve-de-dragon .calendar-boutons-heure .calendar-btn:is(.calendar-lyre, .calendar-vaisseau) img {
|
||||||
color: hsla(0, 0%, 100%, 0.5);
|
color: hsla(0, 0%, 100%, 0.5);
|
||||||
border: none;
|
border: none;
|
||||||
|
|||||||
@@ -136,7 +136,7 @@
|
|||||||
max-height: 1.4rem;
|
max-height: 1.4rem;
|
||||||
border: 1px;
|
border: 1px;
|
||||||
background: center / contain no-repeat
|
background: center / contain no-repeat
|
||||||
url("../../icons/templates/icone_parchement_vierge.webp");
|
url("../icons/templates/icone_parchement_vierge.webp");
|
||||||
}
|
}
|
||||||
|
|
||||||
.sheet-header .header-compteurs {
|
.sheet-header .header-compteurs {
|
||||||
@@ -484,7 +484,10 @@
|
|||||||
color: rgba(173, 36, 26, 0.9);
|
color: rgba(173, 36, 26, 0.9);
|
||||||
text-shadow: 1px 1px 4px rgba(60, 60, 60, 1);
|
text-shadow: 1px 1px 4px rgba(60, 60, 60, 1);
|
||||||
}
|
}
|
||||||
|
.rdd-dialog.status-effects li {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: row;
|
||||||
|
}
|
||||||
.rdd-dialog-select img.select-img {
|
.rdd-dialog-select img.select-img {
|
||||||
-webkit-box-flex: 0;
|
-webkit-box-flex: 0;
|
||||||
-ms-flex: 0 0 48px;
|
-ms-flex: 0 0 48px;
|
||||||
@@ -1065,7 +1068,7 @@
|
|||||||
min-width: 30rem;
|
min-width: 30rem;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.app-calendar-astrologie {
|
.rdd-calendar-astrologie {
|
||||||
div.theme-astral {
|
div.theme-astral {
|
||||||
width: 14rem;
|
width: 14rem;
|
||||||
margin: 0.4rem;
|
margin: 0.4rem;
|
||||||
@@ -1085,6 +1088,105 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
div.horloge-heure.heure-01 {
|
||||||
|
top: calc(50% - 1rem + sin(-180deg) * 41%);
|
||||||
|
left: calc(50% - 1rem + cos(-180deg) * 41%);
|
||||||
|
}
|
||||||
|
div.horloge-heure.heure-02 {
|
||||||
|
top: calc(50% - 1rem + sin(-150deg) * 41%);
|
||||||
|
left: calc(50% - 1rem + cos(-150deg) * 41%);
|
||||||
|
}
|
||||||
|
div.horloge-heure.heure-03 {
|
||||||
|
top: calc(50% - 1rem + sin(-120deg) * 41%);
|
||||||
|
left: calc(50% - 1rem + cos(-120deg) * 41%);
|
||||||
|
}
|
||||||
|
div.horloge-heure.heure-04 {
|
||||||
|
top: calc(50% - 1rem + sin(-90deg) * 41%);
|
||||||
|
left: calc(50% - 1rem + cos(-90deg) * 41%);
|
||||||
|
}
|
||||||
|
div.horloge-heure.heure-05 {
|
||||||
|
top: calc(50% - 1rem + sin(-60deg) * 41%);
|
||||||
|
left: calc(50% - 1rem + cos(-60deg) * 41%);
|
||||||
|
}
|
||||||
|
div.horloge-heure.heure-06 {
|
||||||
|
top: calc(50% - 1rem + sin(-30deg) * 41%);
|
||||||
|
left: calc(50% - 1rem + cos(-30deg) * 41%);
|
||||||
|
}
|
||||||
|
div.horloge-heure.heure-07 {
|
||||||
|
top: calc(50% - 1rem + sin(-0deg) * 41%);
|
||||||
|
left: calc(50% - 1rem + cos(-0deg) * 41%);
|
||||||
|
}
|
||||||
|
div.horloge-heure.heure-08 {
|
||||||
|
top: calc(50% - 1rem + sin(30deg) * 41%);
|
||||||
|
left: calc(50% - 1rem + cos(30deg) * 41%);
|
||||||
|
}
|
||||||
|
div.horloge-heure.heure-09 {
|
||||||
|
top: calc(50% - 1rem + sin(60deg) * 41%);
|
||||||
|
left: calc(50% - 1rem + cos(60deg) * 41%);
|
||||||
|
}
|
||||||
|
div.horloge-heure.heure-10 {
|
||||||
|
top: calc(50% - 1rem + sin(90deg) * 41%);
|
||||||
|
left: calc(50% - 1rem + cos(90deg) * 41%);
|
||||||
|
}
|
||||||
|
div.horloge-heure.heure-11 {
|
||||||
|
top: calc(50% - 1rem + sin(120deg) * 41%);
|
||||||
|
left: calc(50% - 1rem + cos(120deg) * 41%);
|
||||||
|
}
|
||||||
|
div.horloge-heure.heure-12 {
|
||||||
|
top: calc(50% - 1rem + sin(150deg) * 41%);
|
||||||
|
left: calc(50% - 1rem + cos(150deg) * 41%);
|
||||||
|
}
|
||||||
|
|
||||||
|
div.horloge-ajustement.heure-01 {
|
||||||
|
top: calc(50% - 0.4rem + sin(180deg) * 28%);
|
||||||
|
left: calc(50% - 0.4rem + cos(180deg) * 28%);
|
||||||
|
}
|
||||||
|
div.horloge-ajustement.heure-02 {
|
||||||
|
top: calc(50% - 0.4rem + sin(-150deg) * 28%);
|
||||||
|
left: calc(50% - 0.4rem + cos(-150deg) * 28%);
|
||||||
|
}
|
||||||
|
div.horloge-ajustement.heure-03 {
|
||||||
|
top: calc(50% - 0.4rem + sin(-120deg) * 28%);
|
||||||
|
left: calc(50% - 0.4rem + cos(-120deg) * 28%);
|
||||||
|
}
|
||||||
|
div.horloge-ajustement.heure-04 {
|
||||||
|
top: calc(50% - 0.4rem + sin(-90deg) * 28%);
|
||||||
|
left: calc(50% - 0.4rem + cos(-90deg) * 28%);
|
||||||
|
}
|
||||||
|
div.horloge-ajustement.heure-05 {
|
||||||
|
top: calc(50% - 0.4rem + sin(-60deg) * 28%);
|
||||||
|
left: calc(50% - 0.4rem + cos(-60deg) * 28%);
|
||||||
|
}
|
||||||
|
div.horloge-ajustement.heure-06 {
|
||||||
|
top: calc(50% - 0.4rem + sin(-30deg) * 28%);
|
||||||
|
left: calc(50% - 0.4rem + cos(-30deg) * 28%);
|
||||||
|
}
|
||||||
|
div.horloge-ajustement.heure-07 {
|
||||||
|
top: calc(50% - 0.4rem + sin(0deg) * 28%);
|
||||||
|
left: calc(50% - 0.4rem + cos(0deg) * 28%);
|
||||||
|
}
|
||||||
|
div.horloge-ajustement.heure-08 {
|
||||||
|
top: calc(50% - 0.4rem + sin(30deg) * 28%);
|
||||||
|
left: calc(50% - 0.4rem + cos(30deg) * 28%);
|
||||||
|
}
|
||||||
|
div.horloge-ajustement.heure-09 {
|
||||||
|
top: calc(50% - 0.4rem + sin(60deg) * 28%);
|
||||||
|
left: calc(50% - 0.4rem + cos(60deg) * 28%);
|
||||||
|
}
|
||||||
|
div.horloge-ajustement.heure-10 {
|
||||||
|
top: calc(50% - 0.4rem + sin(90deg) * 28%);
|
||||||
|
left: calc(50% - 0.4rem + cos(90deg) * 28%);
|
||||||
|
}
|
||||||
|
div.horloge-ajustement.heure-11 {
|
||||||
|
top: calc(50% - 0.4rem + sin(120deg) * 28%);
|
||||||
|
left: calc(50% - 0.4rem + cos(120deg) * 28%);
|
||||||
|
}
|
||||||
|
div.horloge-ajustement.heure-12 {
|
||||||
|
top: calc(50% - 0.4rem + sin(150deg) * 28%);
|
||||||
|
left: calc(50% - 0.4rem + cos(150deg) * 28%);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.window-app .window-content,
|
.window-app .window-content,
|
||||||
@@ -2022,106 +2124,6 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.calendar-astrologie {
|
|
||||||
div.horloge-heure.heure-01 {
|
|
||||||
top: calc(50% - 1rem + sin(-180deg) * 41%);
|
|
||||||
left: calc(50% - 1rem + cos(-180deg) * 41%);
|
|
||||||
}
|
|
||||||
div.horloge-heure.heure-02 {
|
|
||||||
top: calc(50% - 1rem + sin(-150deg) * 41%);
|
|
||||||
left: calc(50% - 1rem + cos(-150deg) * 41%);
|
|
||||||
}
|
|
||||||
div.horloge-heure.heure-03 {
|
|
||||||
top: calc(50% - 1rem + sin(-120deg) * 41%);
|
|
||||||
left: calc(50% - 1rem + cos(-120deg) * 41%);
|
|
||||||
}
|
|
||||||
div.horloge-heure.heure-04 {
|
|
||||||
top: calc(50% - 1rem + sin(-90deg) * 41%);
|
|
||||||
left: calc(50% - 1rem + cos(-90deg) * 41%);
|
|
||||||
}
|
|
||||||
div.horloge-heure.heure-05 {
|
|
||||||
top: calc(50% - 1rem + sin(-60deg) * 41%);
|
|
||||||
left: calc(50% - 1rem + cos(-60deg) * 41%);
|
|
||||||
}
|
|
||||||
div.horloge-heure.heure-06 {
|
|
||||||
top: calc(50% - 1rem + sin(-30deg) * 41%);
|
|
||||||
left: calc(50% - 1rem + cos(-30deg) * 41%);
|
|
||||||
}
|
|
||||||
div.horloge-heure.heure-07 {
|
|
||||||
top: calc(50% - 1rem + sin(-0deg) * 41%);
|
|
||||||
left: calc(50% - 1rem + cos(-0deg) * 41%);
|
|
||||||
}
|
|
||||||
div.horloge-heure.heure-08 {
|
|
||||||
top: calc(50% - 1rem + sin(30deg) * 41%);
|
|
||||||
left: calc(50% - 1rem + cos(30deg) * 41%);
|
|
||||||
}
|
|
||||||
div.horloge-heure.heure-09 {
|
|
||||||
top: calc(50% - 1rem + sin(60deg) * 41%);
|
|
||||||
left: calc(50% - 1rem + cos(60deg) * 41%);
|
|
||||||
}
|
|
||||||
div.horloge-heure.heure-10 {
|
|
||||||
top: calc(50% - 1rem + sin(90deg) * 41%);
|
|
||||||
left: calc(50% - 1rem + cos(90deg) * 41%);
|
|
||||||
}
|
|
||||||
div.horloge-heure.heure-11 {
|
|
||||||
top: calc(50% - 1rem + sin(120deg) * 41%);
|
|
||||||
left: calc(50% - 1rem + cos(120deg) * 41%);
|
|
||||||
}
|
|
||||||
div.horloge-heure.heure-12 {
|
|
||||||
top: calc(50% - 1rem + sin(150deg) * 41%);
|
|
||||||
left: calc(50% - 1rem + cos(150deg) * 41%);
|
|
||||||
}
|
|
||||||
|
|
||||||
div.horloge-ajustement.heure-01 {
|
|
||||||
top: calc(50% - 0.4rem + sin(180deg) * 28%);
|
|
||||||
left: calc(50% - 0.4rem + cos(180deg) * 28%);
|
|
||||||
}
|
|
||||||
div.horloge-ajustement.heure-02 {
|
|
||||||
top: calc(50% - 0.4rem + sin(-150deg) * 28%);
|
|
||||||
left: calc(50% - 0.4rem + cos(-150deg) * 28%);
|
|
||||||
}
|
|
||||||
div.horloge-ajustement.heure-03 {
|
|
||||||
top: calc(50% - 0.4rem + sin(-120deg) * 28%);
|
|
||||||
left: calc(50% - 0.4rem + cos(-120deg) * 28%);
|
|
||||||
}
|
|
||||||
div.horloge-ajustement.heure-04 {
|
|
||||||
top: calc(50% - 0.4rem + sin(-90deg) * 28%);
|
|
||||||
left: calc(50% - 0.4rem + cos(-90deg) * 28%);
|
|
||||||
}
|
|
||||||
div.horloge-ajustement.heure-05 {
|
|
||||||
top: calc(50% - 0.4rem + sin(-60deg) * 28%);
|
|
||||||
left: calc(50% - 0.4rem + cos(-60deg) * 28%);
|
|
||||||
}
|
|
||||||
div.horloge-ajustement.heure-06 {
|
|
||||||
top: calc(50% - 0.4rem + sin(-30deg) * 28%);
|
|
||||||
left: calc(50% - 0.4rem + cos(-30deg) * 28%);
|
|
||||||
}
|
|
||||||
div.horloge-ajustement.heure-07 {
|
|
||||||
top: calc(50% - 0.4rem + sin(0deg) * 28%);
|
|
||||||
left: calc(50% - 0.4rem + cos(0deg) * 28%);
|
|
||||||
}
|
|
||||||
div.horloge-ajustement.heure-08 {
|
|
||||||
top: calc(50% - 0.4rem + sin(30deg) * 28%);
|
|
||||||
left: calc(50% - 0.4rem + cos(30deg) * 28%);
|
|
||||||
}
|
|
||||||
div.horloge-ajustement.heure-09 {
|
|
||||||
top: calc(50% - 0.4rem + sin(60deg) * 28%);
|
|
||||||
left: calc(50% - 0.4rem + cos(60deg) * 28%);
|
|
||||||
}
|
|
||||||
div.horloge-ajustement.heure-10 {
|
|
||||||
top: calc(50% - 0.4rem + sin(90deg) * 28%);
|
|
||||||
left: calc(50% - 0.4rem + cos(90deg) * 28%);
|
|
||||||
}
|
|
||||||
div.horloge-ajustement.heure-11 {
|
|
||||||
top: calc(50% - 0.4rem + sin(120deg) * 28%);
|
|
||||||
left: calc(50% - 0.4rem + cos(120deg) * 28%);
|
|
||||||
}
|
|
||||||
div.horloge-ajustement.heure-12 {
|
|
||||||
top: calc(50% - 0.4rem + sin(150deg) * 28%);
|
|
||||||
left: calc(50% - 0.4rem + cos(150deg) * 28%);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.calendar-boutons-heure {
|
.calendar-boutons-heure {
|
||||||
.calendar-btn:is(.calendar-lyre, .calendar-vaisseau) img {
|
.calendar-btn:is(.calendar-lyre, .calendar-vaisseau) img {
|
||||||
color: hsla(0, 0%, 100%, 0.5);
|
color: hsla(0, 0%, 100%, 0.5);
|
||||||
|
|||||||
@@ -19,6 +19,7 @@ import { RdDCoeur } from "./coeur/rdd-coeur.js";
|
|||||||
import { AppPersonnageAleatoire } from "./actor/random/app-personnage-aleatoire.js";
|
import { AppPersonnageAleatoire } from "./actor/random/app-personnage-aleatoire.js";
|
||||||
import { RdDTextEditor } from "./apps/rdd-text-roll-editor.js";
|
import { RdDTextEditor } from "./apps/rdd-text-roll-editor.js";
|
||||||
import { MORAL } from "./moral/apprecier.mjs";
|
import { MORAL } from "./moral/apprecier.mjs";
|
||||||
|
import { RdDItemSort } from "./item-sort.js";
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
/**
|
/**
|
||||||
@@ -52,6 +53,7 @@ export class RdDActorSheet extends RdDBaseActorSangSheet {
|
|||||||
surprise: RdDBonus.find(this.actor.getSurprise(false)).label,
|
surprise: RdDBonus.find(this.actor.getSurprise(false)).label,
|
||||||
resumeBlessures: this.actor.computeResumeBlessure(this.actor.system.blessures),
|
resumeBlessures: this.actor.computeResumeBlessure(this.actor.system.blessures),
|
||||||
caracTotal: RdDCarac.computeTotal(this.actor.system.carac, this.actor.system.beaute),
|
caracTotal: RdDCarac.computeTotal(this.actor.system.carac, this.actor.system.beaute),
|
||||||
|
caracTotalXp: RdDCarac.computeTotalXp(this.actor.system.carac, this.actor.system.beaute),
|
||||||
surEncombrementMessage: this.actor.isSurenc() ? "Sur-Encombrement!" : "",
|
surEncombrementMessage: this.actor.isSurenc() ? "Sur-Encombrement!" : "",
|
||||||
malusArmure: this.actor.getMalusArmure()
|
malusArmure: this.actor.getMalusArmure()
|
||||||
})
|
})
|
||||||
@@ -61,9 +63,13 @@ export class RdDActorSheet extends RdDBaseActorSangSheet {
|
|||||||
if (formData.type == ACTOR_TYPES.personnage) {
|
if (formData.type == ACTOR_TYPES.personnage) {
|
||||||
formData.options.mainsDirectrices = MAINS_DIRECTRICES;
|
formData.options.mainsDirectrices = MAINS_DIRECTRICES;
|
||||||
formData.byCateg = Misc.classify(formData.competences, it => it.system.categorie)
|
formData.byCateg = Misc.classify(formData.competences, it => it.system.categorie)
|
||||||
formData.calc.comptageArchetype = RdDItemCompetence.computeResumeArchetype(formData.competences);
|
foundry.utils.mergeObject(formData.calc, {
|
||||||
formData.calc.competenceXPTotal = RdDItemCompetence.computeTotalXP(formData.competences);
|
comptageArchetype: RdDItemCompetence.computeResumeArchetype(formData.competences),
|
||||||
formData.calc.fatigue = RdDUtility.calculFatigueHtml(formData.system.sante.fatigue.value, formData.system.sante.endurance.max);
|
competenceXPTotal: RdDItemCompetence.computeTotalXP(formData.competences),
|
||||||
|
sortsXPTotal: RdDItemSort.computeTotalXP(this.actor.itemTypes[ITEM_TYPES.sort]),
|
||||||
|
fatigue: RdDUtility.calculFatigueHtml(formData.system.sante.fatigue.value, formData.system.sante.endurance.max)
|
||||||
|
|
||||||
|
})
|
||||||
|
|
||||||
formData.competences.forEach(item => {
|
formData.competences.forEach(item => {
|
||||||
item.system.isHidden = this.options.recherche
|
item.system.isHidden = this.options.recherche
|
||||||
|
|||||||
@@ -703,9 +703,9 @@ export class RdDActor extends RdDBaseActorSang {
|
|||||||
rencontre: rencontre,
|
rencontre: rencontre,
|
||||||
tmr: true,
|
tmr: true,
|
||||||
use: { libre: false, conditions: false },
|
use: { libre: false, conditions: false },
|
||||||
forceCarac: { 'reve-actuel': { label: "Rêve Actuel", value: this.getReveActuel() } }
|
forceCarac: this.getCaracReveActuel()
|
||||||
}
|
}
|
||||||
rollData.competence.system.defaut_carac = 'reve-actuel';
|
rollData.competence.system.defaut_carac = CARACS.REVE_ACTUEL
|
||||||
|
|
||||||
const dialog = await RdDRoll.create(this, rollData,
|
const dialog = await RdDRoll.create(this, rollData,
|
||||||
{ html: 'systems/foundryvtt-reve-de-dragon/templates/dialog-roll-reve-de-dragon.hbs' },
|
{ html: 'systems/foundryvtt-reve-de-dragon/templates/dialog-roll-reve-de-dragon.hbs' },
|
||||||
|
|||||||
@@ -48,39 +48,24 @@ export class RdDBaseActorReve extends RdDBaseActor {
|
|||||||
}
|
}
|
||||||
|
|
||||||
getCarac() {
|
getCarac() {
|
||||||
return foundry.utils.mergeObject(this.system.carac,
|
const carac = super.getCarac()
|
||||||
{
|
foundry.utils.mergeObject(carac, this.getCaracReveActuel())
|
||||||
'reve-actuel': this.getCaracReveActuel(),
|
foundry.utils.mergeObject(carac, this.getCaracCompetenceCreature(), { overwrite: false })
|
||||||
'chance-actuelle': this.getCaracChanceActuelle()
|
return carac
|
||||||
},
|
|
||||||
{ inplace: false })
|
|
||||||
}
|
|
||||||
|
|
||||||
getCaracChanceActuelle() {
|
|
||||||
return {
|
|
||||||
label: 'Chance actuelle',
|
|
||||||
value: this.getChanceActuel(),
|
|
||||||
type: "number"
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
getCaracReveActuel() {
|
|
||||||
return {
|
|
||||||
label: 'Rêve actuel',
|
|
||||||
value: this.getReveActuel(),
|
|
||||||
type: "number"
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
||||||
getTaille() { return Misc.toInt(this.system.carac.taille?.value) }
|
getTaille() { return Misc.toInt(this.system.carac.taille?.value) }
|
||||||
getConstitution() { return this.getReve() }
|
getConstitution() { return this.getReve() }
|
||||||
|
|
||||||
getForce() { return this.getReve() }
|
getForce() { return this.getReve() }
|
||||||
getAgilite() { return this.getForce() }
|
getAgilite() { return this.getForce() }
|
||||||
getReve() { return Misc.toInt(this.system.carac.reve?.value) }
|
getReve() { return Misc.toInt(this.system.carac.reve?.value) }
|
||||||
getChance() { return this.getReve() }
|
getChance() { return this.getReve() }
|
||||||
|
getChanceActuel() { return this.getChance() }
|
||||||
|
getCaracChanceActuelle() { return { [CARACS.CHANCE_ACTUELLE]: { label: 'Chance actuelle', value: this.getChanceActuel(), type: "number" } } }
|
||||||
|
|
||||||
getReveActuel() { return this.getReve() }
|
getReveActuel() { return this.getReve() }
|
||||||
getChanceActuel() { return this.getChance() }
|
getCaracReveActuel() { return { [CARACS.REVE_ACTUEL]: { label: "Rêve Actuel", value: this.getReveActuel(), type: "number" } } }
|
||||||
|
|
||||||
getEnduranceMax() { return Math.max(1, this.getTaille() + this.getConstitution()) }
|
getEnduranceMax() { return Math.max(1, this.getTaille() + this.getConstitution()) }
|
||||||
getEncombrementMax() { return (this.getForce() + this.getTaille()) / 2 }
|
getEncombrementMax() { return (this.getForce() + this.getTaille()) / 2 }
|
||||||
@@ -497,17 +482,15 @@ export class RdDBaseActorReve extends RdDBaseActor {
|
|||||||
|
|
||||||
async rollCompetence(idOrName, options = { tryTarget: true, arme: undefined }) {
|
async rollCompetence(idOrName, options = { tryTarget: true, arme: undefined }) {
|
||||||
RdDEmpoignade.checkEmpoignadeEnCours(this)
|
RdDEmpoignade.checkEmpoignadeEnCours(this)
|
||||||
|
|
||||||
const competence = this.getCompetence(idOrName);
|
const competence = this.getCompetence(idOrName);
|
||||||
if (OptionsAvancees.isUsing(ROLL_DIALOG_V2)) {
|
if (OptionsAvancees.isUsing(ROLL_DIALOG_V2)) {
|
||||||
const rollData = {
|
const rollData = {
|
||||||
ids: { actorId: this.id },
|
ids: { actorId: this.id },
|
||||||
type: { allowed: options.arme ? ATTAQUE_ROLL_TYPES : DEFAULT_ROLL_TYPES },
|
type: { allowed: DEFAULT_ROLL_TYPES },
|
||||||
selected: {
|
selected: {
|
||||||
carac: competence.type == ITEM_TYPES.competencecreature ? { key: competence.name } : undefined,
|
carac: competence.type == ITEM_TYPES.competencecreature ? { key: competence.name } : undefined,
|
||||||
comp: { key: competence.name },
|
comp: { key: competence.name },
|
||||||
diff: { type: options.arme ? DIFF.ATTAQUE : DIFF.LIBRE, value: competence.system.default_diffLibre ?? 0 },
|
diff: { type: DIFF.LIBRE, value: competence.system.default_diffLibre ?? 0 },
|
||||||
attaque: options.arme ? { arme: { key: options.arme.id } } : undefined
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return await RollDialog.create(rollData)
|
return await RollDialog.create(rollData)
|
||||||
@@ -579,7 +562,7 @@ export class RdDBaseActorReve extends RdDBaseActor {
|
|||||||
type: {
|
type: {
|
||||||
allowed: [ROLL_TYPE_ATTAQUE], current: ROLL_TYPE_ATTAQUE
|
allowed: [ROLL_TYPE_ATTAQUE], current: ROLL_TYPE_ATTAQUE
|
||||||
}
|
}
|
||||||
};
|
}
|
||||||
return await RollDialog.create(rollData, { onRollDone: RollDialog.onRollDoneClose })
|
return await RollDialog.create(rollData, { onRollDone: RollDialog.onRollDoneClose })
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
@@ -588,16 +571,18 @@ export class RdDBaseActorReve extends RdDBaseActor {
|
|||||||
|
|
||||||
/** --------------------------------------------
|
/** --------------------------------------------
|
||||||
* @param {*} arme item d'arme/compétence de créature
|
* @param {*} arme item d'arme/compétence de créature
|
||||||
* @param {*} categorieArme catégorie d'attaque à utiliser: competence (== melee), lancer, tir; naturelle, possession
|
* @param {*} maniement catégorie d'attaque à utiliser: competence (== melee), lancer, tir; naturelle, possession
|
||||||
* @returns
|
* @returns
|
||||||
*/
|
*/
|
||||||
rollArme(arme, categorieArme = 'competence', token = undefined) {
|
async rollArme(arme, maniement = 'competence', token = undefined) {
|
||||||
token = token ?? RdDUtility.getSelectedToken(this)
|
token = token ?? RdDUtility.getSelectedToken(this)
|
||||||
const compToUse = RdDItemArme.getCompetenceArme(arme, categorieArme)
|
const compToUse = RdDItemArme.getCompetenceArme(arme, maniement)
|
||||||
|
|
||||||
if (!RdDItemArme.isUtilisable(arme)) {
|
if (!RdDItemArme.isUtilisable(arme)) {
|
||||||
ui.notifications.warn(`Arme inutilisable: ${arme.name} non équipée ou avec une résistance de 0 ou moins`)
|
ui.notifications.warn(`Arme inutilisable: ${arme.name} non équipée ou avec une résistance de 0 ou moins`)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!Targets.hasTargets()) {
|
if (!Targets.hasTargets()) {
|
||||||
RdDConfirm.confirmer({
|
RdDConfirm.confirmer({
|
||||||
settingConfirmer: "confirmer-combat-sans-cible",
|
settingConfirmer: "confirmer-combat-sans-cible",
|
||||||
@@ -609,7 +594,7 @@ export class RdDBaseActorReve extends RdDBaseActor {
|
|||||||
onAction: async () => {
|
onAction: async () => {
|
||||||
this.rollCompetence(compToUse, { tryTarget: false, arme: arme })
|
this.rollCompetence(compToUse, { tryTarget: false, arme: arme })
|
||||||
}
|
}
|
||||||
});
|
})
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -619,11 +604,12 @@ export class RdDBaseActorReve extends RdDBaseActor {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
const competence = this.getCompetence(compToUse)
|
const comp = this.getCompetence(compToUse)
|
||||||
if (competence.isCompetencePossession()) {
|
if (comp.isCompetencePossession()) {
|
||||||
return RdDPossession.onAttaquePossession(target, this, competence);
|
// TODO: vérifier si c'est possible, sinon simplifier
|
||||||
|
return RdDPossession.onAttaquePossession(target, this, comp);
|
||||||
}
|
}
|
||||||
RdDCombat.rddCombatTarget(target, this, token).attaque(competence, arme);
|
RdDCombat.rddCombatTarget(target, this, token).attaque(comp, arme, maniement)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ import { RdDItemBlessure } from "../item/blessure.js";
|
|||||||
import { ChatUtility } from "../chat-utility.js";
|
import { ChatUtility } from "../chat-utility.js";
|
||||||
import { Misc } from "../misc.js";
|
import { Misc } from "../misc.js";
|
||||||
import { RdDBaseActor } from "./base-actor.js";
|
import { RdDBaseActor } from "./base-actor.js";
|
||||||
|
import { CARACS } from "../rdd-carac.js";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Classe de base pour les acteurs qui peuvent subir des blessures
|
* Classe de base pour les acteurs qui peuvent subir des blessures
|
||||||
@@ -23,10 +24,18 @@ export class RdDBaseActorSang extends RdDBaseActorReve {
|
|||||||
this.system.attributs.encombrement.value = this.getEncombrementMax()
|
this.system.attributs.encombrement.value = this.getEncombrementMax()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
getCarac() {
|
||||||
|
const carac = super.getCarac()
|
||||||
|
foundry.utils.mergeObject(carac, this.getCaracChanceActuelle())
|
||||||
|
foundry.utils.mergeObject(carac, this.getCaracVie())
|
||||||
|
return carac
|
||||||
|
}
|
||||||
|
|
||||||
getForce() { return Misc.toInt(this.system.carac.force?.value) }
|
getForce() { return Misc.toInt(this.system.carac.force?.value) }
|
||||||
getConstitution() { return Misc.toInt(this.system.carac.constitution?.value) }
|
getConstitution() { return Misc.toInt(this.system.carac.constitution?.value) }
|
||||||
getVolonte() { return Misc.toInt(this.system.carac.volonte?.value) }
|
getVolonte() { return Misc.toInt(this.system.carac.volonte?.value) }
|
||||||
|
|
||||||
|
getCaracVie() { return { [CARACS.VIE]: { label: "Vie", value: this.getVieMax(), type: "number" } } }
|
||||||
getVieMax() { return Misc.toInt(this.system.sante.vie?.max) }
|
getVieMax() { return Misc.toInt(this.system.sante.vie?.max) }
|
||||||
getEnduranceMax() { return Math.max(1, this.getTaille() + this.getConstitution()) }
|
getEnduranceMax() { return Math.max(1, this.getTaille() + this.getConstitution()) }
|
||||||
getFatigueMax() { return this.getEnduranceMax() * 2 }
|
getFatigueMax() { return this.getEnduranceMax() * 2 }
|
||||||
|
|||||||
@@ -12,6 +12,7 @@ import { SystemCompendiums } from "../settings/system-compendiums.js";
|
|||||||
import { RdDItem } from "../item.js";
|
import { RdDItem } from "../item.js";
|
||||||
import { StatusEffects, STATUSES } from "../settings/status-effects.js";
|
import { StatusEffects, STATUSES } from "../settings/status-effects.js";
|
||||||
import { Apprecier } from "../moral/apprecier.mjs";
|
import { Apprecier } from "../moral/apprecier.mjs";
|
||||||
|
import { CARACS } from "../rdd-carac.js";
|
||||||
|
|
||||||
export class RdDBaseActor extends Actor {
|
export class RdDBaseActor extends Actor {
|
||||||
|
|
||||||
@@ -155,20 +156,21 @@ export class RdDBaseActor extends Actor {
|
|||||||
super(docData, context);
|
super(docData, context);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
getCarac() {
|
||||||
|
return foundry.utils.duplicate(this.system.carac)
|
||||||
|
}
|
||||||
|
|
||||||
findCaracByName(name) {
|
findCaracByName(name) {
|
||||||
name = Grammar.toLowerCaseNoAccent(name)
|
name = Grammar.toLowerCaseNoAccent(name)
|
||||||
switch (name) {
|
switch (name) {
|
||||||
case 'reve-actuel': case 'reve actuel':
|
case 'reve actuel':
|
||||||
return this.system.carac.reve
|
name = CARACS.REVE_ACTUEL
|
||||||
case 'chance-actuelle': case 'chance actuelle':
|
break
|
||||||
return this.system.carac.chance
|
case 'chance actuelle':
|
||||||
case 'vie':
|
name = CARACS.CHANCE_ACTUELLE
|
||||||
return this.system.sante.vie
|
break
|
||||||
}
|
}
|
||||||
|
const carac = this.getCarac()
|
||||||
const carac = {}
|
|
||||||
foundry.utils.mergeObject(carac, this.system.carac, { overwrite: false })
|
|
||||||
foundry.utils.mergeObject(carac, this.getCaracCompetenceCreature(), { overwrite: false })
|
|
||||||
return RdDBaseActor.$findCaracByName(carac, name);
|
return RdDBaseActor.$findCaracByName(carac, name);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -183,10 +185,18 @@ export class RdDBaseActor extends Actor {
|
|||||||
getCaracByName(name) {
|
getCaracByName(name) {
|
||||||
name = this.mapCarac(Grammar.toLowerCaseNoAccent(name)) ?? name
|
name = this.mapCarac(Grammar.toLowerCaseNoAccent(name)) ?? name
|
||||||
switch (name) {
|
switch (name) {
|
||||||
case 'reve-actuel': case 'reve actuel':
|
case 'reve actuel':
|
||||||
return this.getCaracReveActuel();
|
name = CARACS.REVE_ACTUEL
|
||||||
case 'chance-actuelle': case 'chance-actuelle':
|
break
|
||||||
return this.getCaracChanceActuelle();
|
case 'chanceactuelle':
|
||||||
|
name = CARACS.CHANCE_ACTUELLE
|
||||||
|
break
|
||||||
|
}
|
||||||
|
switch (name) {
|
||||||
|
case CARACS.REVE_ACTUEL:
|
||||||
|
return this.getCaracReveActuel()[CARACS.REVE_ACTUEL]
|
||||||
|
case CARACS.CHANCE_ACTUELLE:
|
||||||
|
return this.getCaracChanceActuelle()[CARACS.CHANCE_ACTUELLE]
|
||||||
}
|
}
|
||||||
return this.findCaracByName(name);
|
return this.findCaracByName(name);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -36,19 +36,18 @@ export class Distance {
|
|||||||
}
|
}
|
||||||
|
|
||||||
static distance(token, defenderToken) {
|
static distance(token, defenderToken) {
|
||||||
if (token instanceof Token && defenderToken instanceof Token) {
|
if (Distance.$isToken(token) && Distance.$isToken(defenderToken)) {
|
||||||
const ray = new foundry.canvas.geometry.Ray(
|
const source = token.getCenterPoint()
|
||||||
token.getCenterPoint(),
|
const target = defenderToken.getCenterPoint()
|
||||||
defenderToken.getCenterPoint()
|
const measure = canvas.grid.measurePath([ source, target])
|
||||||
)
|
return measure.distance
|
||||||
return Number(canvas.grid.measureDistances([{ ray }], { gridSpaces: false }))
|
|
||||||
}
|
}
|
||||||
return -1 /* distance indéterminée */
|
return -1 /* distance indéterminée */
|
||||||
}
|
}
|
||||||
|
|
||||||
static isVisible(token, defenderToken) {
|
static isVisible(token, defenderToken) {
|
||||||
// TODO: regarder les StatusEffect aveuglé?
|
// TODO: regarder les StatusEffect aveuglé?
|
||||||
if (token instanceof Token && defenderToken instanceof Token) {
|
if (Distance.$isToken(token) && Distance.$isToken(defenderToken)) {
|
||||||
return canvas.effects.visibility.testVisibility(defenderToken.getCenterPoint(), { object: token })
|
return canvas.effects.visibility.testVisibility(defenderToken.getCenterPoint(), { object: token })
|
||||||
}
|
}
|
||||||
return true
|
return true
|
||||||
@@ -79,11 +78,11 @@ export class Distance {
|
|||||||
}
|
}
|
||||||
|
|
||||||
static ajustementMouvement(defenderToken) {
|
static ajustementMouvement(defenderToken) {
|
||||||
if (defenderToken instanceof Token) {
|
if (Distance.$isToken(defenderToken)) {
|
||||||
if (defenderToken.actor?.getSurprise(true) != '') return { msg: "immobile (surprise)", diff: 0 };
|
if (defenderToken.actor?.getSurprise(true) != '') return { msg: "immobile (surprise)", diff: 0 };
|
||||||
if (defenderToken.inCombat) return { msg: "en mouvement (combat)", diff: -4 };
|
if (defenderToken.inCombat) return { msg: "en combat", diff: -4 };
|
||||||
}
|
}
|
||||||
return { msg: "à déterminer (0 immobile, -3 actif, -4 en mouvement, -5 en zig-zag)", diff: -3 };
|
return { msg: "à déterminer", diff: -3 };
|
||||||
}
|
}
|
||||||
|
|
||||||
static diff(...ajustements) {
|
static diff(...ajustements) {
|
||||||
@@ -116,4 +115,8 @@ export class Distance {
|
|||||||
return undefined
|
return undefined
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static $isToken(token) {
|
||||||
|
return token instanceof Token || token instanceof TokenDocument
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -136,7 +136,7 @@ export class RdDItemCompetence extends RdDItem {
|
|||||||
return troncList;
|
return troncList;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return [];
|
return []
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
|
|||||||
@@ -16,6 +16,7 @@ import { RdDTextEditor } from "./apps/rdd-text-roll-editor.js";
|
|||||||
import { ItemAction } from "./item/item-actions.js";
|
import { ItemAction } from "./item/item-actions.js";
|
||||||
import { SANS_COMPETENCE } from "./item/base-items.js";
|
import { SANS_COMPETENCE } from "./item/base-items.js";
|
||||||
import { Apprecier } from "./moral/apprecier.mjs";
|
import { Apprecier } from "./moral/apprecier.mjs";
|
||||||
|
import { CARACS } from "./rdd-carac.js";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Extend the basic ItemSheet for RdD specific items
|
* Extend the basic ItemSheet for RdD specific items
|
||||||
@@ -118,7 +119,7 @@ export class RdDItemSheetV1 extends foundry.appv1.sheets.ItemSheet {
|
|||||||
this.item.type == ITEM_TYPES.meditation ||
|
this.item.type == ITEM_TYPES.meditation ||
|
||||||
this.item.type == ITEM_TYPES.oeuvre) {
|
this.item.type == ITEM_TYPES.oeuvre) {
|
||||||
formData.caracList = foundry.utils.duplicate(game.model.Actor.personnage.carac)
|
formData.caracList = foundry.utils.duplicate(game.model.Actor.personnage.carac)
|
||||||
formData.caracList["reve-actuel"] = foundry.utils.duplicate(game.model.Actor.personnage.reve.reve)
|
formData.caracList[CARACS.REVE_ACTUEL] = foundry.utils.duplicate(game.model.Actor.personnage.reve.reve)
|
||||||
}
|
}
|
||||||
if (this.item.type == ITEM_TYPES.arme) {
|
if (this.item.type == ITEM_TYPES.arme) {
|
||||||
formData.competences = formData.competences.filter(it => it.isCompetenceArme())
|
formData.competences = formData.competences.filter(it => it.isCompetenceArme())
|
||||||
|
|||||||
@@ -41,6 +41,11 @@ export class RdDItemSort extends RdDItem {
|
|||||||
return value ? value.replace('variable', 'var') : ''
|
return value ? value.replace('variable', 'var') : ''
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static computeTotalXP(sorts) {
|
||||||
|
return sorts.map(sort => RdDItemSort.isDifficulteVariable(sort) ? 70 : -10 * Misc.toInt(sort.system.difficulte))
|
||||||
|
.reduce(Misc.sum(), 0)
|
||||||
|
}
|
||||||
|
|
||||||
static isSortOnCoord(sort, coord) {
|
static isSortOnCoord(sort, coord) {
|
||||||
let tmr = TMRUtility.getTMR(coord)
|
let tmr = TMRUtility.getTMR(coord)
|
||||||
const caseTMR = sort.system.caseTMR.toLowerCase();
|
const caseTMR = sort.system.caseTMR.toLowerCase();
|
||||||
|
|||||||
@@ -61,7 +61,9 @@ export const CARACS = {
|
|||||||
DEROBEE: 'derobee',
|
DEROBEE: 'derobee',
|
||||||
CHANCE_ACTUELLE: 'chance-actuelle',
|
CHANCE_ACTUELLE: 'chance-actuelle',
|
||||||
REVE_ACTUEL: 'reve-actuel',
|
REVE_ACTUEL: 'reve-actuel',
|
||||||
|
VIE: 'vie'
|
||||||
}
|
}
|
||||||
|
|
||||||
export const LIST_CARAC_PERSONNAGE = {
|
export const LIST_CARAC_PERSONNAGE = {
|
||||||
[CARACS.TAILLE]: { code: CARACS.TAILLE, label: 'Taille', isCarac: true, path: 'system.carac.taille.value' },
|
[CARACS.TAILLE]: { code: CARACS.TAILLE, label: 'Taille', isCarac: true, path: 'system.carac.taille.value' },
|
||||||
[CARACS.APPARENCE]: { code: CARACS.APPARENCE, label: 'Apparence', isCarac: true, path: 'system.carac.apparence.value' },
|
[CARACS.APPARENCE]: { code: CARACS.APPARENCE, label: 'Apparence', isCarac: true, path: 'system.carac.apparence.value' },
|
||||||
@@ -166,10 +168,18 @@ export class RdDCarac {
|
|||||||
const total = Object.values(carac ?? {}).filter(c => !c.derivee)
|
const total = Object.values(carac ?? {}).filter(c => !c.derivee)
|
||||||
.map(it => parseInt(it.value))
|
.map(it => parseInt(it.value))
|
||||||
.reduce(Misc.sum(), 0);
|
.reduce(Misc.sum(), 0);
|
||||||
const beauteSuperieur10 = Math.max((beaute ?? 10) - 10, 0);
|
const beauteSuperieur10 = Math.max((beaute ?? 10) - 10, 0)
|
||||||
return total + beauteSuperieur10;
|
return total + beauteSuperieur10;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static computeTotalXp(carac, beaute = undefined) {
|
||||||
|
const totalXp = Object.values(carac ?? {}).filter(c => !c.derivee)
|
||||||
|
.map(it => RdDCarac.getCaracXp(0, Misc.toInt(it.value)) + Misc.toInt(it.xp))
|
||||||
|
.reduce(Misc.sum(), 0);
|
||||||
|
const beauteXp = beaute > 10 ? RdDCarac.getCaracXp(10, beaute) : 0
|
||||||
|
return totalXp + beauteXp;
|
||||||
|
}
|
||||||
|
|
||||||
static levelUp(it) {
|
static levelUp(it) {
|
||||||
it.xpNext = RdDCarac.getCaracNextXp(it.value);
|
it.xpNext = RdDCarac.getCaracNextXp(it.value);
|
||||||
it.isLevelUp = (it.xp >= it.xpNext);
|
it.isLevelUp = (it.xp >= it.xpNext);
|
||||||
@@ -182,12 +192,16 @@ export class RdDCarac {
|
|||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
static getCaracNextXp(value) {
|
static getCaracNextXp(value) {
|
||||||
const nextValue = Number(value) + 1;
|
value = Number(value);
|
||||||
|
const nextValue = value + 1;
|
||||||
// xp est le coût pour atteindre cette valeur, on regarde donc le coût de la valeur+1
|
// xp est le coût pour atteindre cette valeur, on regarde donc le coût de la valeur+1
|
||||||
return RdDCarac.getCaracXp(nextValue);
|
return RdDCarac.getCaracXp(value, nextValue)
|
||||||
}
|
}
|
||||||
|
|
||||||
static getCaracXp(targetValue) {
|
static getCaracXp(from, to) {
|
||||||
return RdDCarac.getCaracDerivee(targetValue)?.xp ?? 200;
|
return Array.from({ length: to - from },
|
||||||
|
(_, i) => from + i + 1)
|
||||||
|
.map(it => RdDCarac.getCaracDerivee(it)?.xp ?? 200)
|
||||||
|
.reduce(Misc.sum(), 0)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -518,8 +518,8 @@ export class RdDCombat {
|
|||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
attaqueChanceuse(attackerRoll) {
|
attaqueChanceuse(attackerRoll) {
|
||||||
ui.notifications.info("L'attaque est rejouée grâce à la chance")
|
ui.notifications.info("L'attaque est rejouée grâce à la chance")
|
||||||
attackerRoll.essais.attaqueChance = true;
|
attackerRoll.essais.attaqueChance = true
|
||||||
this.attaque(attackerRoll, attackerRoll.arme);
|
this.attaque(attackerRoll, attackerRoll.arme)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
@@ -646,11 +646,11 @@ export class RdDCombat {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
async attaqueV2() {
|
async attaqueV2(options = undefined) {
|
||||||
if (!await this.attacker.accorder(this.defender, 'avant-attaque')) {
|
if (!await this.attacker.accorder(this.defender, 'avant-attaque')) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
await this.doRollAttaque({
|
const rollData = {
|
||||||
ids: {
|
ids: {
|
||||||
actorId: this.attackerId,
|
actorId: this.attackerId,
|
||||||
actorTokenId: this.attackerTokenId,
|
actorTokenId: this.attackerTokenId,
|
||||||
@@ -658,8 +658,19 @@ export class RdDCombat {
|
|||||||
opponentTokenId: this.defenderTokenId,
|
opponentTokenId: this.defenderTokenId,
|
||||||
},
|
},
|
||||||
type: { allowed: ['attaque'], current: 'attaque' },
|
type: { allowed: ['attaque'], current: 'attaque' },
|
||||||
|
selected: {},
|
||||||
passeArme: foundry.utils.randomID(16),
|
passeArme: foundry.utils.randomID(16),
|
||||||
})
|
}
|
||||||
|
if (options) {
|
||||||
|
rollData.selected = {
|
||||||
|
attaque: {
|
||||||
|
comp: { id: options.comp.id },
|
||||||
|
arme: { id: options.arme.id },
|
||||||
|
main: options.main
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
await this.doRollAttaque(rollData)
|
||||||
}
|
}
|
||||||
|
|
||||||
async doRollAttaque(rollData, callbacks = []) {
|
async doRollAttaque(rollData, callbacks = []) {
|
||||||
@@ -740,12 +751,14 @@ export class RdDCombat {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
async attaque(competence, arme) {
|
async attaque(competence, arme, main) {
|
||||||
if (!await this.attacker.accorder(this.defender, 'avant-attaque')) {
|
if (!await this.attacker.accorder(this.defender, 'avant-attaque')) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
if (OptionsAvancees.isUsing(ROLL_DIALOG_V2)) {
|
if (OptionsAvancees.isUsing(ROLL_DIALOG_V2)) {
|
||||||
return this.attacker.rollCompetence(competence.name, { arme: arme })
|
return this.attaqueV2(
|
||||||
|
{ comp: competence, arme: arme, main: main }
|
||||||
|
)
|
||||||
}
|
}
|
||||||
if (arme.system.cac == EMPOIGNADE) {
|
if (arme.system.cac == EMPOIGNADE) {
|
||||||
RdDEmpoignade.onAttaqueEmpoignade(this.attacker, this.defender)
|
RdDEmpoignade.onAttaqueEmpoignade(this.attacker, this.defender)
|
||||||
@@ -754,7 +767,7 @@ export class RdDCombat {
|
|||||||
RdDEmpoignade.checkEmpoignadeEnCours(this.attacker)
|
RdDEmpoignade.checkEmpoignadeEnCours(this.attacker)
|
||||||
|
|
||||||
let rollData = this._prepareAttaque(competence, arme)
|
let rollData = this._prepareAttaque(competence, arme)
|
||||||
console.log("RdDCombat.attaque >>>", rollData);
|
console.log("RdDCombat.attaque >>>", rollData)
|
||||||
if (arme) {
|
if (arme) {
|
||||||
this.attacker.verifierForceMin(arme);
|
this.attacker.verifierForceMin(arme);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -116,6 +116,7 @@ export class RdDCommands {
|
|||||||
this.registerCommand({
|
this.registerCommand({
|
||||||
path: ["/xp", "carac"], func: (content, msg, params) => this.getCoutXpCarac(msg, params),
|
path: ["/xp", "carac"], func: (content, msg, params) => this.getCoutXpCarac(msg, params),
|
||||||
descr: `Détermine le coût d'expérience pour augmenter une caractéristique. Exemples:
|
descr: `Détermine le coût d'expérience pour augmenter une caractéristique. Exemples:
|
||||||
|
<br>/xp carac 12 15: coût pour passer de 12 15
|
||||||
<br>/xp carac 15: coût pour atteindre 15 (depuis 14)`
|
<br>/xp carac 15: coût pour atteindre 15 (depuis 14)`
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -440,13 +441,18 @@ export class RdDCommands {
|
|||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
getCoutXpCarac(msg, params) {
|
getCoutXpCarac(msg, params) {
|
||||||
if (params && params.length == 1) {
|
if (params) {
|
||||||
let to = Number(params[0]);
|
if (params.length == 1) {
|
||||||
return RdDCommands._chatAnswer(msg, `Coût pour passer une caractéristique de ${to - 1} à ${to}: ${RdDCarac.getCaracXp(to)}`);
|
const to = Number(params[0])
|
||||||
}
|
return RdDCommands._chatAnswer(msg, `Coût pour passer une caractéristique de ${to - 1} à ${to}: ${RdDCarac.getCaracXp(to - 1, to)}`);
|
||||||
else {
|
}
|
||||||
return false;
|
if (params.length == 2) {
|
||||||
|
const from = Number(params[0]);
|
||||||
|
const to = Number(params[1]);
|
||||||
|
return RdDCommands._chatAnswer(msg, `Coût pour passer une caractéristique de ${from} à ${to}: ${RdDCarac.getCaracXp(from, to)}`);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
async creerSignesDraconiques() {
|
async creerSignesDraconiques() {
|
||||||
|
|||||||
@@ -101,7 +101,7 @@ export class RdDHotbar {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/** Roll macro */
|
/** Roll macro */
|
||||||
static rollMacro(itemName, itemType, categorieArme = 'competence') {
|
static rollMacro(itemName, itemType, maniement = 'competence') {
|
||||||
const speaker = ChatMessage.getSpeaker();
|
const speaker = ChatMessage.getSpeaker();
|
||||||
let actor;
|
let actor;
|
||||||
if (speaker.token) actor = game.actors.tokens[speaker.token];
|
if (speaker.token) actor = game.actors.tokens[speaker.token];
|
||||||
@@ -117,10 +117,10 @@ export class RdDHotbar {
|
|||||||
// Trigger the item roll
|
// Trigger the item roll
|
||||||
switch (item.type) {
|
switch (item.type) {
|
||||||
case ITEM_TYPES.arme:
|
case ITEM_TYPES.arme:
|
||||||
return actor.rollArme(item, categorieArme);
|
return actor.rollArme(item, maniement);
|
||||||
case ITEM_TYPES.competence:
|
case ITEM_TYPES.competence:
|
||||||
if (item.isCorpsACorps()) {
|
if (item.isCorpsACorps()) {
|
||||||
switch (categorieArme) {
|
switch (maniement) {
|
||||||
case PUGILAT:
|
case PUGILAT:
|
||||||
return actor.rollArme(RdDItemArme.pugilat(actor));
|
return actor.rollArme(RdDItemArme.pugilat(actor));
|
||||||
case EMPOIGNADE:
|
case EMPOIGNADE:
|
||||||
@@ -130,7 +130,7 @@ export class RdDHotbar {
|
|||||||
return actor.rollCompetence(item);
|
return actor.rollCompetence(item);
|
||||||
case ITEM_TYPES.competencecreature:
|
case ITEM_TYPES.competencecreature:
|
||||||
return item.system.iscombat
|
return item.system.iscombat
|
||||||
? actor.rollArme(item, categorieArme)
|
? actor.rollArme(item, maniement)
|
||||||
: actor.rollCompetence(item);
|
: actor.rollCompetence(item);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ import { RdDRoll } from "./rdd-roll.js";
|
|||||||
import { Targets } from "./targets.js";
|
import { Targets } from "./targets.js";
|
||||||
import { ITEM_TYPES } from "./constants.js";
|
import { ITEM_TYPES } from "./constants.js";
|
||||||
import { RdDRollResult } from "./rdd-roll-result.js";
|
import { RdDRollResult } from "./rdd-roll-result.js";
|
||||||
|
import { CARACS } from "./rdd-carac.js";
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
/* On part du principe qu'une entité démarre tjs
|
/* On part du principe qu'une entité démarre tjs
|
||||||
@@ -96,15 +97,14 @@ export class RdDPossession {
|
|||||||
static selectCompetenceDraconicOuPossession(rollData, rollingActor) {
|
static selectCompetenceDraconicOuPossession(rollData, rollingActor) {
|
||||||
rollData.competence = rollingActor.getDraconicOuPossession().find(it => true);
|
rollData.competence = rollingActor.getDraconicOuPossession().find(it => true);
|
||||||
if (rollingActor.isCreatureOuEntite()) {
|
if (rollingActor.isCreatureOuEntite()) {
|
||||||
const carac = rollingActor.system.carac
|
rollData.carac = rollingActor.system.carac
|
||||||
rollData.carac = carac
|
rollData.competence.system.defaut_carac = CARACS.REVE
|
||||||
rollData.competence.system.defaut_carac = 'reve'
|
rollData.selectedCarac = rollingActor.system.carac.reve
|
||||||
rollData.selectedCarac = carac.reve
|
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
rollData.forceCarac = { 'reve-actuel': { label: "Rêve Actuel", value: rollingActor.getReveActuel() } }
|
rollData.forceCarac = rollingActor.getCaracReveActuel()
|
||||||
rollData.selectedCarac = rollData.forceCarac['reve-actuel']
|
rollData.selectedCarac = rollData.forceCarac[CARACS.REVE_ACTUEL]
|
||||||
rollData.competence.system.defaut_carac = 'reve-actuel'
|
rollData.competence.system.defaut_carac = CARACS.REVE_ACTUEL
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ import { RdDItemCompetence } from "./item-competence.js";
|
|||||||
import { RdDItemSort } from "./item-sort.js";
|
import { RdDItemSort } from "./item-sort.js";
|
||||||
import { Misc } from "./misc.js";
|
import { Misc } from "./misc.js";
|
||||||
import { RdDBonus } from "./rdd-bonus.js";
|
import { RdDBonus } from "./rdd-bonus.js";
|
||||||
import { RdDCarac } from "./rdd-carac.js";
|
import { CARACS, RdDCarac } from "./rdd-carac.js";
|
||||||
import { RdDResolutionTable } from "./rdd-resolution-table.js";
|
import { RdDResolutionTable } from "./rdd-resolution-table.js";
|
||||||
import { ReglesOptionnelles } from "./settings/regles-optionnelles.js";
|
import { ReglesOptionnelles } from "./settings/regles-optionnelles.js";
|
||||||
import { Grammar } from "./grammar.js";
|
import { Grammar } from "./grammar.js";
|
||||||
@@ -65,7 +65,7 @@ export class RdDRoll extends Dialog {
|
|||||||
}
|
}
|
||||||
// Mini patch :Ajout du rêve actuel
|
// Mini patch :Ajout du rêve actuel
|
||||||
if (actor.type == ACTOR_TYPES.personnage) {
|
if (actor.type == ACTOR_TYPES.personnage) {
|
||||||
defaultRollData.carac["reve-actuel"] = actor.system.reve.reve
|
defaultRollData.carac[CARACS.REVE_ACTUEL] = actor.system.reve.reve
|
||||||
}
|
}
|
||||||
|
|
||||||
foundry.utils.mergeObject(rollData, defaultRollData, { recursive: true, overwrite: false });
|
foundry.utils.mergeObject(rollData, defaultRollData, { recursive: true, overwrite: false });
|
||||||
|
|||||||
@@ -16,6 +16,7 @@ import { RdDDice } from "./rdd-dice.js";
|
|||||||
import { RdDRencontre } from "./item/rencontre.js";
|
import { RdDRencontre } from "./item/rencontre.js";
|
||||||
import { ITEM_TYPES } from "./constants.js";
|
import { ITEM_TYPES } from "./constants.js";
|
||||||
import { Misc } from "./misc.js";
|
import { Misc } from "./misc.js";
|
||||||
|
import { CARACS } from "./rdd-carac.js";
|
||||||
|
|
||||||
const TMR_DISPLAY_SIZE = {
|
const TMR_DISPLAY_SIZE = {
|
||||||
code: 'tmr-display-size',
|
code: 'tmr-display-size',
|
||||||
@@ -125,7 +126,7 @@ export class RdDTMRDialog extends Dialog {
|
|||||||
HtmlUtility.showControlWhen(this.html.find(".lire-signe-draconique"), this.actor.isResonanceSigneDraconique(this._getCoordActor()));
|
HtmlUtility.showControlWhen(this.html.find(".lire-signe-draconique"), this.actor.isResonanceSigneDraconique(this._getCoordActor()));
|
||||||
|
|
||||||
this.html.find('form.tmr-dialog *').click(event => {
|
this.html.find('form.tmr-dialog *').click(event => {
|
||||||
if (this.subdialog?.rendered){
|
if (this.subdialog?.rendered) {
|
||||||
this.subdialog?.bringToFront()
|
this.subdialog?.bringToFront()
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
@@ -685,12 +686,12 @@ export class RdDTMRDialog extends Dialog {
|
|||||||
tmr: tmr,
|
tmr: tmr,
|
||||||
canClose: false,
|
canClose: false,
|
||||||
diffLibre: -7,
|
diffLibre: -7,
|
||||||
forceCarac: { 'reve-actuel': { label: "Rêve Actuel", value: this.actor.getReveActuel() } },
|
forceCarac: this.actor.getCaracReveActuel(),
|
||||||
maitrise: { verbe: 'maîtriser', action: 'Maîtriser le fleuve' }
|
maitrise: { verbe: 'maîtriser', action: 'Maîtriser le fleuve' }
|
||||||
}
|
}
|
||||||
rollData.double = EffetsDraconiques.isDoubleResistanceFleuve(this.actor) ? true : undefined,
|
rollData.double = EffetsDraconiques.isDoubleResistanceFleuve(this.actor) ? true : undefined
|
||||||
rollData.competence.system.defaut_carac = 'reve-actuel';
|
rollData.competence.system.defaut_carac = CARACS.REVE_ACTUEL
|
||||||
await this._rollMaitriseCaseHumide(rollData);
|
await this._rollMaitriseCaseHumide(rollData)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -810,30 +811,30 @@ export class RdDTMRDialog extends Dialog {
|
|||||||
tmr: tmr,
|
tmr: tmr,
|
||||||
canClose: options.canClose ?? false,
|
canClose: options.canClose ?? false,
|
||||||
diffLibre: options.difficulte ?? -7,
|
diffLibre: options.difficulte ?? -7,
|
||||||
forceCarac: { 'reve-actuel': { label: "Rêve Actuel", value: this.actor.getReveActuel() } },
|
forceCarac: this.actor.getCaracReveActuel(),
|
||||||
maitrise: { verbe: 'conquérir', action: options.action }
|
maitrise: { verbe: 'conquérir', action: options.action }
|
||||||
};
|
}
|
||||||
rollData.competence.system.defaut_carac = 'reve-actuel';
|
rollData.competence.system.defaut_carac = CARACS.REVE_ACTUEL
|
||||||
|
|
||||||
await this._maitriserTMR(rollData, r => this._onResultatConquerir(r, options));
|
await this._maitriserTMR(rollData, r => this._onResultatConquerir(r, options))
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
async _onResultatConquerir(rollData, options) {
|
async _onResultatConquerir(rollData, options) {
|
||||||
if (rollData.rolled.isETotal) {
|
if (rollData.rolled.isETotal) {
|
||||||
rollData.souffle = await this.actor.ajouterSouffle({ chat: false });
|
rollData.souffle = await this.actor.ajouterSouffle({ chat: false })
|
||||||
}
|
}
|
||||||
rollData.poesie = await Poetique.getExtrait();
|
rollData.poesie = await Poetique.getExtrait()
|
||||||
ChatMessage.create({
|
ChatMessage.create({
|
||||||
whisper: ChatUtility.getOwners(this.actor),
|
whisper: ChatUtility.getOwners(this.actor),
|
||||||
content: await renderTemplate(`systems/foundryvtt-reve-de-dragon/templates/chat-resultat-maitrise-tmr.hbs`, rollData)
|
content: await renderTemplate(`systems/foundryvtt-reve-de-dragon/templates/chat-resultat-maitrise-tmr.hbs`, rollData)
|
||||||
});
|
})
|
||||||
if (rollData.rolled.isEchec) {
|
if (rollData.rolled.isEchec) {
|
||||||
options.onConqueteEchec(rollData, options.effetDraconique);
|
options.onConqueteEchec(rollData, options.effetDraconique)
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
await options.onConqueteReussie(rollData, options.effetDraconique);
|
await options.onConqueteReussie(rollData, options.effetDraconique)
|
||||||
this.updateTokens();
|
this.updateTokens()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -967,7 +968,7 @@ export class RdDTMRDialog extends Dialog {
|
|||||||
const targetOddq = this.pixiTMR.computeEventOddq(event)
|
const targetOddq = this.pixiTMR.computeEventOddq(event)
|
||||||
const targetCoord = TMRUtility.oddqToCoordTMR(targetOddq)
|
const targetCoord = TMRUtility.oddqToCoordTMR(targetOddq)
|
||||||
|
|
||||||
if (targetCoord == COORD_TMR_INCONNU){
|
if (targetCoord == COORD_TMR_INCONNU) {
|
||||||
ui.notifications.error("Vous ne pouvez pas vous déplacer ici");
|
ui.notifications.error("Vous ne pouvez pas vous déplacer ici");
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -52,11 +52,13 @@ export class RollPartAttaque extends RollPartSelect {
|
|||||||
|
|
||||||
restore(rollData) {
|
restore(rollData) {
|
||||||
const saved = this.getSaved(rollData) ?? {}
|
const saved = this.getSaved(rollData) ?? {}
|
||||||
this.setCurrent(rollData, {
|
if (saved.key) {
|
||||||
key: saved.key,
|
this.setCurrent(rollData, {
|
||||||
tactique: saved.tactique,
|
key: saved.key,
|
||||||
dmg: saved.dmg
|
tactique: saved.tactique,
|
||||||
})
|
dmg: saved.dmg
|
||||||
|
})
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
store(rollData, targetData) {
|
store(rollData, targetData) {
|
||||||
@@ -70,8 +72,10 @@ export class RollPartAttaque extends RollPartSelect {
|
|||||||
|
|
||||||
|
|
||||||
findAttaque(attaques, saved) {
|
findAttaque(attaques, saved) {
|
||||||
return attaques.find(at => at.arme.id == saved?.arme?.id &&
|
return attaques.find(at => at.arme.id == (saved?.arme?.id ?? at.arme.id)
|
||||||
at.comp.id == saved?.comp?.id
|
&& at.comp.id == (saved?.comp?.id ?? at.comp.id)
|
||||||
|
&& at.main == (saved?.main ?? at.main)
|
||||||
|
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ export class RollPartComp extends RollPartSelect {
|
|||||||
if (selected.forced) {
|
if (selected.forced) {
|
||||||
refs.all = all.filter(comp => Grammar.equalsInsensitive(comp.label, selected.key))
|
refs.all = all.filter(comp => Grammar.equalsInsensitive(comp.label, selected.key))
|
||||||
if (refs.all.length == 0) {
|
if (refs.all.length == 0) {
|
||||||
if (selected.key.length > 0) {
|
if (selected.key && selected.key.length > 0) {
|
||||||
refs.all = all.filter(comp => Grammar.includesLowerCaseNoAccent(comp.label, selected.key))
|
refs.all = all.filter(comp => Grammar.includesLowerCaseNoAccent(comp.label, selected.key))
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
|||||||
@@ -160,6 +160,7 @@ export class StatusEffects extends FormApplication {
|
|||||||
foundry.utils.mergeObject(options, {
|
foundry.utils.mergeObject(options, {
|
||||||
id: "status-effects",
|
id: "status-effects",
|
||||||
template: "systems/foundryvtt-reve-de-dragon/templates/settings/status-effects.hbs",
|
template: "systems/foundryvtt-reve-de-dragon/templates/settings/status-effects.hbs",
|
||||||
|
classes: ["rdd-dialog", "status-effects"],
|
||||||
height: 800,
|
height: 800,
|
||||||
width: 350,
|
width: 350,
|
||||||
minimizable: false,
|
minimizable: false,
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ export class AppAstrologie extends Application {
|
|||||||
title: "Astrologie",
|
title: "Astrologie",
|
||||||
width: 'fit-content',
|
width: 'fit-content',
|
||||||
height: 'fit-content',
|
height: 'fit-content',
|
||||||
classes: ['calendar-astrologie'],
|
classes: ['rdd-calendar-astrologie'],
|
||||||
popOut: true,
|
popOut: true,
|
||||||
resizable: false
|
resizable: false
|
||||||
}, { inplace: false })
|
}, { inplace: false })
|
||||||
|
|||||||
@@ -94,8 +94,8 @@ export class RdDCalendrier extends Application {
|
|||||||
_getHeaderButtons() {
|
_getHeaderButtons() {
|
||||||
if (game.user.isGM) {
|
if (game.user.isGM) {
|
||||||
return [
|
return [
|
||||||
{ class: "calendar-astrologie", icon: "fa-solid fa-moon-over-sun", onclick: ev => this.showAstrologieEditor() },
|
{ class: "button-calendar-astrologie", icon: "fa-solid fa-moon-over-sun", onclick: ev => this.showAstrologieEditor() },
|
||||||
{ class: "calendar-set-datetime", icon: "fa-solid fa-calendar-pen", onclick: ev => this.showCalendarEditor() },
|
{ class: "button-calendar-set-datetime", icon: "fa-solid fa-calendar-pen", onclick: ev => this.showCalendarEditor() },
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
return []
|
return []
|
||||||
@@ -144,12 +144,12 @@ export class RdDCalendrier extends Application {
|
|||||||
const h = this.html.find(event.currentTarget)?.data('heure');
|
const h = this.html.find(event.currentTarget)?.data('heure');
|
||||||
this.positionnerHeure(Number(h));
|
this.positionnerHeure(Number(h));
|
||||||
})
|
})
|
||||||
this.html.find('.calendar-set-datetime').click(ev => {
|
this.html.find('.button-calendar-set-datetime').click(ev => {
|
||||||
ev.preventDefault();
|
ev.preventDefault();
|
||||||
this.showCalendarEditor();
|
this.showCalendarEditor();
|
||||||
});
|
});
|
||||||
|
|
||||||
this.html.find('.calendar-astrologie').click(ev => {
|
this.html.find('.button-calendar-astrologie').click(ev => {
|
||||||
ev.preventDefault();
|
ev.preventDefault();
|
||||||
this.showAstrologieEditor();
|
this.showAstrologieEditor();
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -3,4 +3,10 @@
|
|||||||
<span class="carac-label" name="carac-total">Total Caractéristiques</span>
|
<span class="carac-label" name="carac-total">Total Caractéristiques</span>
|
||||||
<span class="competence-value" name="carac-total-value">{{calc.caracTotal}} </span>
|
<span class="competence-value" name="carac-total-value">{{calc.caracTotal}} </span>
|
||||||
</li>
|
</li>
|
||||||
|
{{#if @root.options.isGM}}
|
||||||
|
<li class="caracteristique flexrow">
|
||||||
|
<span class="carac-label" name="carac-total">Total XP Caractéristiques</span>
|
||||||
|
<span class="competence-value" name="carac-total-xp">{{calc.caracTotalXp}} </span>
|
||||||
|
</li>
|
||||||
|
{{/if}}
|
||||||
</ul>
|
</ul>
|
||||||
|
|||||||
@@ -16,6 +16,10 @@
|
|||||||
<span class="generic-label">Total XP compétences</span>
|
<span class="generic-label">Total XP compétences</span>
|
||||||
<span class="competence-value">{{calc.competenceXPTotal}}</span>
|
<span class="competence-value">{{calc.competenceXPTotal}}</span>
|
||||||
</li>
|
</li>
|
||||||
|
<li class="flexrow">
|
||||||
|
<span class="generic-label">Total XP sorts</span>
|
||||||
|
<span class="competence-value">{{calc.sortsXPTotal}}</span>
|
||||||
|
</li>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
<li> </li>
|
<li> </li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|||||||
@@ -28,9 +28,6 @@
|
|||||||
{{/if}}
|
{{/if}}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="chat-details">
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="chat-actions">
|
<div class="chat-actions">
|
||||||
{{#unless (eq active.surprise.key 'totale')}}
|
{{#unless (eq active.surprise.key 'totale')}}
|
||||||
<a class='chat-card-button button-defense'>
|
<a class='chat-card-button button-defense'>
|
||||||
@@ -45,7 +42,4 @@
|
|||||||
{{/unless}}
|
{{/unless}}
|
||||||
{{> 'partial-encaissement'}}
|
{{> 'partial-encaissement'}}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="chat-buttons">
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
@@ -5,5 +5,5 @@
|
|||||||
{{else if (eq perteMoralEchec 'perte')}}et échoué, votre moral baisse à {{moral}}.
|
{{else if (eq perteMoralEchec 'perte')}}et échoué, votre moral baisse à {{moral}}.
|
||||||
{{else}}et réussi, votre moral reste de {{moral}}.
|
{{else}}et réussi, votre moral reste de {{moral}}.
|
||||||
{{/if}}
|
{{/if}}
|
||||||
<span>
|
</span>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
|
|||||||
@@ -23,6 +23,7 @@
|
|||||||
{{/if}}
|
{{/if}}
|
||||||
{{> 'partial-info-appel-moral'}}
|
{{> 'partial-info-appel-moral'}}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="chat-buttons">
|
<div class="chat-buttons">
|
||||||
{{> 'partial-appel-chance'}}
|
{{> 'partial-appel-chance'}}
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -46,11 +46,11 @@
|
|||||||
{{/if}}
|
{{/if}}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="chat-buttons">
|
|
||||||
{{> 'partial-appel-chance'}}
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="chat-description">
|
<div class="chat-description">
|
||||||
{{> "systems/foundryvtt-reve-de-dragon/templates/chat-description.hbs" current.cuisine.recette.system}}
|
{{> "systems/foundryvtt-reve-de-dragon/templates/chat-description.hbs" current.cuisine.recette.system}}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<div class="chat-buttons">
|
||||||
|
{{> 'partial-appel-chance'}}
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -49,6 +49,7 @@
|
|||||||
{{> 'partial-recul-choc'}}
|
{{> 'partial-recul-choc'}}
|
||||||
{{> 'partial-encaissement'}}
|
{{> 'partial-encaissement'}}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="chat-buttons">
|
<div class="chat-buttons">
|
||||||
{{> 'partial-appel-chance'}}
|
{{> 'partial-appel-chance'}}
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -24,11 +24,11 @@
|
|||||||
{{> 'partial-apprecier'}}
|
{{> 'partial-apprecier'}}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="chat-buttons">
|
|
||||||
{{> 'partial-appel-chance'}}
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="chat-description">
|
<div class="chat-description">
|
||||||
{{> "systems/foundryvtt-reve-de-dragon/templates/chat-description.hbs" current.jeu.jeu.system}}
|
{{> "systems/foundryvtt-reve-de-dragon/templates/chat-description.hbs" current.jeu.jeu.system}}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<div class="chat-buttons">
|
||||||
|
{{> 'partial-appel-chance'}}
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -51,6 +51,4 @@
|
|||||||
{{/if}}
|
{{/if}}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="chat-buttons">
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -26,11 +26,11 @@
|
|||||||
{{> 'partial-apprecier'}}
|
{{> 'partial-apprecier'}}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="chat-buttons">
|
|
||||||
{{> 'partial-appel-chance'}}
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="chat-description">
|
<div class="chat-description">
|
||||||
{{> "systems/foundryvtt-reve-de-dragon/templates/chat-description.hbs" current.oeuvre.oeuvre.system}}
|
{{> "systems/foundryvtt-reve-de-dragon/templates/chat-description.hbs" current.oeuvre.oeuvre.system}}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<div class="chat-buttons">
|
||||||
|
{{> 'partial-appel-chance'}}
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -34,10 +34,4 @@
|
|||||||
actuels: {{type.possession.compteur}}
|
actuels: {{type.possession.compteur}}
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="chat-actions">
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="chat-buttons">
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -11,5 +11,5 @@
|
|||||||
{{else}}votre moral baisse de 1.
|
{{else}}votre moral baisse de 1.
|
||||||
{{/if}}
|
{{/if}}
|
||||||
{{/if}}
|
{{/if}}
|
||||||
<div>
|
</div>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
|
|||||||
@@ -70,19 +70,16 @@
|
|||||||
<subline><hr></subline>
|
<subline><hr></subline>
|
||||||
<subline>
|
<subline>
|
||||||
<span>
|
<span>
|
||||||
<strong>Attaque à distance</strong> {{current.main}} difficulté proposée de <strong>{{current.distance.total}}</strong> à valider par le Gardien
|
<strong>Attaque à distance</strong> {{current.main}} difficulté proposée de <strong>{{plusMoins current.distance.total}}</strong> à valider par le Gardien
|
||||||
</span>
|
</span>
|
||||||
</subline>
|
</subline>
|
||||||
<subline></subline>
|
<subline></subline>
|
||||||
<subline>
|
<subline>
|
||||||
<ul>
|
<ul>
|
||||||
<li>Avec les murs et la lumière, la cible
|
{{#unless current.distance.isVisible}}<li>Avec les murs et la lumière, la cible n'est pas visible.</li>{{/unless}}
|
||||||
{{#if current.distance.isVisible}}est{{else}}n'est pas{{/if}} visible.
|
<li>Taille {{current.distance.taille.msg}}: {{plusMoins current.distance.taille.diff}}</li>
|
||||||
</li>
|
<li>Portée {{current.distance.portee.msg}}: {{plusMoins current.distance.portee.diff}} (distance {{#if (lt current.distance.distance 0)}}indéterminée{{else}}indicative de {{numberFormat current.distance.distance decimals=1}} mètres{{/if}}). </li>
|
||||||
<li>La cible est à une distance {{#if (lt current.distance.distance 0)}}indéterminée{{else}}indicative de {{numberFormat current.distance.distance decimals=1}} mètres{{/if}}.</li>
|
<li>Mouvement {{current.distance.activite.msg}}: {{plusMoins current.distance.activite.diff}} (0 immobile, -3 actif, -4 en mouvement, -5 en zig-zag)</li>
|
||||||
<li>Portée {{current.distance.portee.msg}} : {{current.distance.portee.diff}}</li>
|
|
||||||
<li>Taille {{current.distance.taille.msg}}: {{current.distance.taille.diff}}</li>
|
|
||||||
<li>Mouvement {{current.distance.activite.msg}}: {{current.distance.activite.diff}}</li>
|
|
||||||
</ul>
|
</ul>
|
||||||
</subline>
|
</subline>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
|
|||||||
@@ -1,17 +1,17 @@
|
|||||||
<form class="app-calendar-astrologie" autocomplete="off">
|
<form class="rdd-calendar-astrologie" autocomplete="off">
|
||||||
<div class="flexrow">
|
<div class="flexrow">
|
||||||
<div class="flex-grow">
|
<div class="flexcol flex-grow">
|
||||||
<div class="header-fields">
|
<div class="header-fields">
|
||||||
<h1 class="charname">Astrologie {{#if isActor}}: {{actorAstrologie.actor.name}}{{/if}}</h1>
|
<h1 class="charname">Astrologie {{#if isActor}}: {{actorAstrologie.actor.name}}{{/if}}</h1>
|
||||||
</div>
|
|
||||||
{{#if isActor}}
|
|
||||||
{{> 'systems/foundryvtt-reve-de-dragon/templates/sommeil/astrologie-joueur.hbs'}}
|
|
||||||
{{else}}
|
|
||||||
{{> 'systems/foundryvtt-reve-de-dragon/templates/sommeil/astrologie-gardien.hbs'}}
|
|
||||||
{{/if}}
|
|
||||||
</div>
|
|
||||||
<div>
|
|
||||||
{{> 'systems/foundryvtt-reve-de-dragon/templates/sommeil/astrologie-theme.hbs'}}
|
|
||||||
</div>
|
</div>
|
||||||
|
{{#if isActor}}
|
||||||
|
{{> 'systems/foundryvtt-reve-de-dragon/templates/sommeil/astrologie-joueur.hbs'}}
|
||||||
|
{{else}}
|
||||||
|
{{> 'systems/foundryvtt-reve-de-dragon/templates/sommeil/astrologie-gardien.hbs'}}
|
||||||
|
{{/if}}
|
||||||
</div>
|
</div>
|
||||||
|
<div>
|
||||||
|
{{> 'systems/foundryvtt-reve-de-dragon/templates/sommeil/astrologie-theme.hbs'}}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</form>
|
</form>
|
||||||
|
|||||||
Reference in New Issue
Block a user