Compare commits
13 Commits
feature/v1
...
feature/v1
| Author | SHA1 | Date | |
|---|---|---|---|
| 461a398965 | |||
| eef0893d1a | |||
| c50f1287b5 | |||
| acd40f3154 | |||
| 764f9f81c8 | |||
| 70e8cd74a2 | |||
| e96f4e01bd | |||
| c44c2d7c96 | |||
| e2ee73bc4e | |||
| 3f19886342 | |||
| 9a5afc918e | |||
| 2ac35ef5d1 | |||
| 33c6b35601 |
1
assets/actions/malade.svg
Normal file
1
assets/actions/malade.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" style="height: 256px; width: 256px;"><g class="" transform="translate(0,0)" style=""><path d="M256.25 20.313c-108.64 0-196.78 90.592-196.78 202.937 0 84.615 49.994 156.904 121.093 187.438v-16.375c0-25.638-6.2-40.132-13.875-48.47-7.675-8.336-17.567-11.4-27.72-11.937-18.252-.97-32.4-12.266-40.905-27-6.47-11.205-5.975-24.767-.532-36.97 5.444-12.2 15.49-23.71 29.19-33.905 27.394-20.39 69.79-35.56 122.436-35.56 52.702 0 98.475 15.648 129.344 36.218 15.435 10.284 27.24 21.746 34.22 33.968 6.976 12.222 8.93 26.41 2.186 38.094-4.19 7.257-11.026 11.988-18.687 15.938-7.663 3.95-16.085 6.78-24.595 6.78-11.865 0-20.63 2.214-27.438 10.157s-12.437 23.63-12.437 52.688v16.437c71.195-30.488 121.28-102.814 121.28-187.5 0-112.347-88.14-202.938-196.78-202.938zm-76.656 86.718c1.53.02 3.05.078 4.562.157 14.525.766 28.29 4.3 41.063 9.97l17.31 7.687-16.624 9.062-84.062 45.875-8.938-16.405 65.156-35.563c-24.195-5.513-50.92-1.877-82.062 17.532l-9.875-15.844c25.778-16.066 50.528-22.75 73.47-22.47zm150.312 0c22.944-.28 47.722 6.404 73.5 22.47l-9.875 15.844c-31.14-19.41-57.865-23.045-82.06-17.53l65.155 35.56-8.938 16.407-84.062-45.874L267 124.844l17.313-7.688c12.772-5.67 26.506-9.203 41.03-9.97 1.514-.078 3.034-.136 4.563-.155zm-73.594 170.282c-68.947 0-113.104 15.367-116.843 37.907l.5.03c13.487.714 28.843 5.31 40.468 17.938 11.624 12.627 18.812 32.418 18.812 61.125v100.312h113.813V394.312c0-31.4 5.766-51.81 16.937-64.843 11.17-13.034 27.003-16.69 41.625-16.69.352 0 .76-.03 1.156-.06-6.417-22.614-49.872-35.408-116.467-35.408z" fill="#fff" fill-opacity="1"></path></g></svg>
|
||||
|
After Width: | Height: | Size: 1.6 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 6.0 KiB After Width: | Height: | Size: 7.2 KiB |
12
changelog.md
12
changelog.md
@@ -1,5 +1,17 @@
|
||||
# 13.0
|
||||
|
||||
## 13.0.20 - L'immobilisme d'Illysis
|
||||
|
||||
- Centrage du logo de pause
|
||||
- Ajout d'un statut malade/empoisonné
|
||||
- Fenêtre de jet v2
|
||||
- correction du compteur empoignade
|
||||
- amélioration des messages liés à l'empoignade
|
||||
- amélioration des choix de perte d'endurance
|
||||
- correction de la dépense de rêve sur lancement de sort
|
||||
- ajustement astrologique sur rituels
|
||||
|
||||
|
||||
## 13.0.19 - L'introspection d'Illysis
|
||||
|
||||
- Ajout d'un bouton pour les jets de résistance sous rêve actuel
|
||||
|
||||
@@ -60,8 +60,7 @@
|
||||
/* Fonts */
|
||||
.sheet header.sheet-header h1 input,
|
||||
.window-app .window-header,
|
||||
#actors .directory-list,
|
||||
#navigation #scene-list .scene.nav-item {
|
||||
#sidebar {
|
||||
font-family: "GoudyAcc";
|
||||
}
|
||||
/* For title, sidebar character and scene */
|
||||
@@ -71,9 +70,7 @@
|
||||
.sheet header.sheet-header .flex-group-center.flex-fatigue,
|
||||
select,
|
||||
.item-checkbox,
|
||||
#sidebar,
|
||||
#players,
|
||||
#navigation #nav-toggle {
|
||||
#players {
|
||||
font-family: "CaslonAntique";
|
||||
/* For sheet parts; For nav and title */
|
||||
}
|
||||
@@ -99,7 +96,9 @@ select,
|
||||
--gradient-warning: linear-gradient(150deg, hsla(32, 100%, 50%, 0.3), hsla(52, 60%, 50%, 0.1), hsla(32, 60%, 50%, 0.1), hsla(32, 100%, 50%, 0.3));
|
||||
--gradient-silver-light: linear-gradient(30deg, rgba(61, 55, 93, 0.2), rgba(178, 179, 196, 0.1), rgba(59, 62, 63, 0.2), rgba(206, 204, 199, 0.1), rgba(61, 46, 49, 0.2));
|
||||
--gradient-daylight: conic-gradient(from 0deg, hsla(50, 100%, 80%, 0.7), hsla(30, 30%, 40%, 0.1) 25%, hsla(250, 50%, 40%, 0.1) 25%, hsla(250, 30%, 30%, 0.7) 50%, hsla(250, 50%, 40%, 0.1) 75%, hsla(30, 30%, 40%, 0.1) 75%, hsla(50, 100%, 80%, 0.7));
|
||||
--background-custom-button: linear-gradient(to bottom, hsla(208, 38%, 21%, 0.988) 5%, hsla(202, 42%, 14%, 0.671) 100%);
|
||||
--background-color-button: hsl(25, 5%, 60%);
|
||||
--background-color-custom-button: hsla(208, 38%, 21%, 0.988);
|
||||
--background-custom-button: linear-gradient(to bottom, var(--background-color-custom-button) 5%, hsla(202, 42%, 14%, 0.671) 100%);
|
||||
--background-custom-button-hover: linear-gradient(to bottom, hsl(0, 100%, 25%) 5%, hsl(0, 97%, 12%) 100%);
|
||||
--background-control-selected: linear-gradient(to bottom, hsla(0, 100%, 25%, 0.5) 5%, hsla(0, 100%, 12%, 0.5) 100%);
|
||||
--background-tooltip: hsla(60, 12%, 85%, 0.95);
|
||||
@@ -947,6 +946,13 @@ select,
|
||||
flex-basis: inherit;
|
||||
flex: "flex-shrink";
|
||||
}
|
||||
.system-foundryvtt-reve-de-dragon :is(section.scenes-sidebar, section.compendium-sidebar) li.directory-item.folder a {
|
||||
text-shadow: 1px 1px 2px var(--rdd-color-text-primary);
|
||||
color: var(--color-background-chat-message);
|
||||
}
|
||||
.system-foundryvtt-reve-de-dragon :is(section.scenes-sidebar, section.compendium-sidebar) li.directory-item.folder a:hover {
|
||||
text-shadow: 1px 0px 0px #ff6600;
|
||||
}
|
||||
.system-foundryvtt-reve-de-dragon .tabs .item.active,
|
||||
.system-foundryvtt-reve-de-dragon .blessures-list li ul li:first-child:hover,
|
||||
.system-foundryvtt-reve-de-dragon i.moral-radio-checkmark-off:hover,
|
||||
@@ -1607,28 +1613,18 @@ select,
|
||||
.system-foundryvtt-reve-de-dragon .journal-entry .journal-sidebar .permissions-list,
|
||||
.system-foundryvtt-reve-de-dragon .window-app.sheet .window-content .sheet-body nav.tabs,
|
||||
.system-foundryvtt-reve-de-dragon .application .window-content nav.tabs,
|
||||
.system-foundryvtt-reve-de-dragon .journal-entry .journal-sidebar nav.tabs,
|
||||
.system-foundryvtt-reve-de-dragon .window-app.sheet .window-content .sheet-body nav.tabs button,
|
||||
.system-foundryvtt-reve-de-dragon .application .window-content nav.tabs button,
|
||||
.system-foundryvtt-reve-de-dragon .journal-entry .journal-sidebar nav.tabs button,
|
||||
.system-foundryvtt-reve-de-dragon .window-app.sheet .window-content .sheet-body nav.tabs button .count,
|
||||
.system-foundryvtt-reve-de-dragon .application .window-content nav.tabs button .count,
|
||||
.system-foundryvtt-reve-de-dragon .journal-entry .journal-sidebar nav.tabs button .count,
|
||||
.system-foundryvtt-reve-de-dragon .journal-entry .journal-sidebar nav.tabs {
|
||||
color: var(--rdd-color-text-primary);
|
||||
}
|
||||
.system-foundryvtt-reve-de-dragon .window-app.sheet .window-content .sheet-body button .count,
|
||||
.system-foundryvtt-reve-de-dragon .application .window-content button .count,
|
||||
.system-foundryvtt-reve-de-dragon .journal-entry .journal-sidebar button .count,
|
||||
.system-foundryvtt-reve-de-dragon .window-app.sheet .window-content .sheet-body button,
|
||||
.system-foundryvtt-reve-de-dragon .application .window-content button,
|
||||
.system-foundryvtt-reve-de-dragon .journal-entry .journal-sidebar button {
|
||||
background-color: var(--background-color-button);
|
||||
color: var(--rdd-color-text-primary);
|
||||
}
|
||||
.system-foundryvtt-reve-de-dragon .window-app.sheet .window-content .sheet-body a,
|
||||
.system-foundryvtt-reve-de-dragon .application .window-content a,
|
||||
.system-foundryvtt-reve-de-dragon .journal-entry .journal-sidebar a {
|
||||
color: var(--color-dark-3);
|
||||
}
|
||||
.system-foundryvtt-reve-de-dragon .window-app.sheet .window-content .sheet-body a.filter.active,
|
||||
.system-foundryvtt-reve-de-dragon .application .window-content a.filter.active,
|
||||
.system-foundryvtt-reve-de-dragon .journal-entry .journal-sidebar a.filter.active {
|
||||
color: var(--color-dark-1);
|
||||
}
|
||||
.system-foundryvtt-reve-de-dragon .window-app .window-content {
|
||||
background: url(../assets/ui/bg_left.webp) no-repeat left top;
|
||||
color: var(--rdd-color-text-primary);
|
||||
@@ -2200,7 +2196,7 @@ select,
|
||||
.system-foundryvtt-reve-de-dragon #sidebar-tabs > .collapsed,
|
||||
.system-foundryvtt-reve-de-dragon #chat-controls .chat-control-icon {
|
||||
color: rgba(220, 220, 220, 0.75);
|
||||
text-shadow: 1px 1px 0 rgba(0, 0, 0, 0.75);
|
||||
text-shadow: 1px 1px 1px rgba(0, 0, 0, 0.75);
|
||||
}
|
||||
.system-foundryvtt-reve-de-dragon .sidebar-tab .directory-list .entity {
|
||||
border-top: 1px dashed rgba(0, 0, 0, 0.25);
|
||||
@@ -2809,24 +2805,6 @@ select,
|
||||
.system-foundryvtt-reve-de-dragon aside#tooltip .toolclip p.faint {
|
||||
color: var(--color-tooltip-faint);
|
||||
}
|
||||
.system-foundryvtt-reve-de-dragon .chat-card-button,
|
||||
.system-foundryvtt-reve-de-dragon .chat-card-button-pushed {
|
||||
border-radius: 0.2rem;
|
||||
cursor: pointer;
|
||||
font-family: CaslonPro;
|
||||
font-size: 0.9rem;
|
||||
padding: 0.2rem 0.4rem 0rem 0.4rem;
|
||||
text-decoration: none;
|
||||
position: relative;
|
||||
margin: 0.3rem;
|
||||
border: 2px ridge #846109;
|
||||
display: inline-block;
|
||||
}
|
||||
.system-foundryvtt-reve-de-dragon .chat-card-button img,
|
||||
.system-foundryvtt-reve-de-dragon .chat-card-button-pushed img {
|
||||
max-width: 1rem;
|
||||
max-height: 1rem;
|
||||
}
|
||||
.system-foundryvtt-reve-de-dragon .chat-card-info {
|
||||
font-size: 1.1rem;
|
||||
display: flex;
|
||||
@@ -2841,14 +2819,42 @@ select,
|
||||
.system-foundryvtt-reve-de-dragon .jet-astrologie {
|
||||
color: var(--major-button-color) !important;
|
||||
}
|
||||
.system-foundryvtt-reve-de-dragon .chat-card-button,
|
||||
.system-foundryvtt-reve-de-dragon .chat-card-button-checked,
|
||||
.system-foundryvtt-reve-de-dragon select.chat-card-select {
|
||||
border-radius: 0.2rem;
|
||||
cursor: pointer;
|
||||
font-family: CaslonPro;
|
||||
font-size: 0.9rem;
|
||||
padding: 0.2rem 0.4rem 0rem 0.4rem;
|
||||
text-decoration: none;
|
||||
position: relative;
|
||||
margin: 0.3rem;
|
||||
border: 2px ridge #846109;
|
||||
display: inline-block;
|
||||
}
|
||||
.system-foundryvtt-reve-de-dragon .chat-card-button img,
|
||||
.system-foundryvtt-reve-de-dragon .chat-card-button-checked img,
|
||||
.system-foundryvtt-reve-de-dragon select.chat-card-select img {
|
||||
max-width: 1rem;
|
||||
max-height: 1rem;
|
||||
}
|
||||
.system-foundryvtt-reve-de-dragon select.chat-card-select {
|
||||
width: calc(100% - 0.6rem);
|
||||
color: var(--major-button-color);
|
||||
background-color: var(--background-color-custom-button);
|
||||
}
|
||||
.system-foundryvtt-reve-de-dragon select.chat-card-select option {
|
||||
background-color: var(--background-color-custom-button);
|
||||
}
|
||||
.system-foundryvtt-reve-de-dragon .chat-card-button {
|
||||
text-shadow: 1px 1px #4d3534;
|
||||
box-shadow: inset 1x 1px #a6827e;
|
||||
color: var(--major-button-color) !important;
|
||||
color: var(--major-button-color);
|
||||
background: var(--background-custom-button);
|
||||
background-color: #7d5d3b00;
|
||||
background-color: var(--background-color-custom-button);
|
||||
}
|
||||
.system-foundryvtt-reve-de-dragon .chat-card-button-pushed {
|
||||
.system-foundryvtt-reve-de-dragon .chat-card-button-checked {
|
||||
text-shadow: 1px 1px hsla(202, 30%, 70%, 0.5);
|
||||
box-shadow: inset -1px -1px #a6827e;
|
||||
color: hsla(202, 42%, 14%, 0.7);
|
||||
@@ -2858,11 +2864,11 @@ select,
|
||||
.system-foundryvtt-reve-de-dragon .chat-card-button:hover {
|
||||
background: var(--background-custom-button-hover);
|
||||
}
|
||||
.system-foundryvtt-reve-de-dragon .chat-card-button-pushed:hover {
|
||||
.system-foundryvtt-reve-de-dragon .chat-card-button-checked:hover {
|
||||
background: var(--background-custom-button-hover);
|
||||
}
|
||||
.system-foundryvtt-reve-de-dragon .chat-card-button:active,
|
||||
.system-foundryvtt-reve-de-dragon .chat-card-button-pushed:active {
|
||||
.system-foundryvtt-reve-de-dragon .chat-card-button-checked:active {
|
||||
position: relative;
|
||||
top: 1px;
|
||||
}
|
||||
|
||||
@@ -63,6 +63,7 @@
|
||||
"StatusUnarmed": "Désarmé",
|
||||
"StatusGrappling": "Empoignade",
|
||||
"StatusGrappled": "Empoigné",
|
||||
"StatusMalade": "Malade",
|
||||
"StatusRestrained": "Immobilisé",
|
||||
"StatusComma": "Comma",
|
||||
"StatusDead": "Mort",
|
||||
|
||||
@@ -44,7 +44,9 @@
|
||||
hsla(50, 100%, 80%, 0.7)
|
||||
);
|
||||
|
||||
--background-custom-button: linear-gradient(to bottom, hsla(208, 38%, 21%, 0.988) 5%, hsla(202, 42%, 14%, 0.671) 100%);
|
||||
--background-color-button: hsl(25, 5%, 60%);
|
||||
--background-color-custom-button: hsla(208, 38%, 21%, 0.988);
|
||||
--background-custom-button: linear-gradient(to bottom, var(--background-color-custom-button) 5%, hsla(202, 42%, 14%, 0.671) 100%);
|
||||
--background-custom-button-hover: linear-gradient(to bottom, hsla(0, 100%, 25%, 1) 5%, hsla(0, 97%, 12%, 1) 100%);
|
||||
--background-control-selected: linear-gradient(to bottom, hsla(0, 100%, 25%, 0.5) 5%, hsla(0, 100%, 12%, 0.5) 100%);
|
||||
--background-tooltip: hsla(60, 12%, 85%, 0.95);
|
||||
|
||||
@@ -70,8 +70,7 @@
|
||||
/* Fonts */
|
||||
.sheet header.sheet-header h1 input,
|
||||
.window-app .window-header,
|
||||
#actors .directory-list,
|
||||
#navigation #scene-list .scene.nav-item {
|
||||
#sidebar {
|
||||
font-family: "GoudyAcc"
|
||||
}
|
||||
|
||||
@@ -80,6 +79,6 @@
|
||||
.window-app input,
|
||||
.sheet header.sheet-header .header-compteurs,
|
||||
.sheet header.sheet-header .flex-group-center.flex-fatigue,
|
||||
select, .item-checkbox, #sidebar, #players, #navigation #nav-toggle {
|
||||
select, .item-checkbox, #players {
|
||||
font-family: "CaslonAntique"; /* For sheet parts; For nav and title */
|
||||
}
|
||||
|
||||
@@ -216,7 +216,15 @@
|
||||
}
|
||||
|
||||
/* =================== Autres ============ */
|
||||
|
||||
:is(section.scenes-sidebar, section.compendium-sidebar) li.directory-item.folder {
|
||||
a {
|
||||
text-shadow: 1px 1px 2px var(--rdd-color-text-primary);
|
||||
color: var( --color-background-chat-message);
|
||||
}
|
||||
a:hover {
|
||||
text-shadow: 1px 0px 0px #ff6600;
|
||||
}
|
||||
}
|
||||
.tabs .item.active,
|
||||
.blessures-list li ul li:first-child:hover,
|
||||
i.moral-radio-checkmark-off:hover,
|
||||
@@ -934,20 +942,14 @@
|
||||
.journal-entry .journal-sidebar {
|
||||
background: url(../assets/ui/bg_left.webp) no-repeat left top;
|
||||
color: var(--rdd-color-text-primary);
|
||||
label,
|
||||
.hint,
|
||||
.permissions-list,
|
||||
nav.tabs,
|
||||
nav.tabs button,
|
||||
nav.tabs button .count,
|
||||
button {
|
||||
|
||||
label, .hint, .permissions-list, nav.tabs {
|
||||
color: var(--rdd-color-text-primary);
|
||||
}
|
||||
a {
|
||||
color: var(--color-dark-3);
|
||||
}
|
||||
a.filter.active {
|
||||
color: var(--color-dark-1);
|
||||
button .count,
|
||||
button {
|
||||
background-color: var(--background-color-button);
|
||||
color: var(--rdd-color-text-primary);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1590,7 +1592,7 @@
|
||||
#sidebar-tabs > .collapsed,
|
||||
#chat-controls .chat-control-icon {
|
||||
color: rgba(220, 220, 220, 0.75);
|
||||
text-shadow: 1px 1px 0 rgba(0, 0, 0, 0.75);
|
||||
text-shadow: 1px 1px 1px rgba(0, 0, 0, 0.75);
|
||||
}
|
||||
|
||||
.sidebar-tab .directory-list .entity {
|
||||
@@ -2264,24 +2266,6 @@
|
||||
color: var(--color-tooltip-faint);
|
||||
}
|
||||
|
||||
.chat-card-button,
|
||||
.chat-card-button-pushed {
|
||||
border-radius: 0.2rem;
|
||||
cursor: pointer;
|
||||
font-family: CaslonPro;
|
||||
font-size: 0.9rem;
|
||||
padding: 0.2rem 0.4rem 0rem 0.4rem;
|
||||
text-decoration: none;
|
||||
position: relative;
|
||||
margin: 0.3rem;
|
||||
|
||||
border: 2px ridge #846109;
|
||||
display: inline-block;
|
||||
img {
|
||||
max-width: 1rem;
|
||||
max-height: 1rem;
|
||||
}
|
||||
}
|
||||
.chat-card-info {
|
||||
font-size: 1.1rem;
|
||||
display: flex;
|
||||
@@ -2298,16 +2282,47 @@
|
||||
.jet-astrologie {
|
||||
color: var(--major-button-color) !important;
|
||||
}
|
||||
|
||||
|
||||
.chat-card-button,
|
||||
.chat-card-button-checked,
|
||||
select.chat-card-select {
|
||||
border-radius: 0.2rem;
|
||||
cursor: pointer;
|
||||
font-family: CaslonPro;
|
||||
font-size: 0.9rem;
|
||||
padding: 0.2rem 0.4rem 0rem 0.4rem;
|
||||
text-decoration: none;
|
||||
position: relative;
|
||||
margin: 0.3rem;
|
||||
|
||||
border: 2px ridge #846109;
|
||||
display: inline-block;
|
||||
|
||||
img {
|
||||
max-width: 1rem;
|
||||
max-height: 1rem;
|
||||
}
|
||||
}
|
||||
|
||||
select.chat-card-select {
|
||||
width: calc(100% - 0.6rem);
|
||||
color: var(--major-button-color);
|
||||
background-color: var(--background-color-custom-button);
|
||||
option {
|
||||
background-color: var(--background-color-custom-button);
|
||||
}
|
||||
}
|
||||
.chat-card-button {
|
||||
text-shadow: 1px 1px #4d3534;
|
||||
box-shadow: inset 1x 1px #a6827e;
|
||||
color: var(--major-button-color) !important;
|
||||
color: var(--major-button-color);
|
||||
background: var(--background-custom-button);
|
||||
background-color: #7d5d3b00;
|
||||
background-color: var(--background-color-custom-button);
|
||||
|
||||
}
|
||||
|
||||
.chat-card-button-pushed {
|
||||
.chat-card-button-checked {
|
||||
text-shadow: 1px 1px hsla(202, 30%, 70%, 0.5);
|
||||
box-shadow: inset -1px -1px #a6827e;
|
||||
color: hsla(202, 42%, 14%, 0.7);
|
||||
@@ -2319,12 +2334,12 @@
|
||||
background: var(--background-custom-button-hover);
|
||||
}
|
||||
|
||||
.chat-card-button-pushed:hover {
|
||||
.chat-card-button-checked:hover {
|
||||
background: var(--background-custom-button-hover);
|
||||
}
|
||||
|
||||
.chat-card-button:active,
|
||||
.chat-card-button-pushed:active {
|
||||
.chat-card-button-checked:active {
|
||||
position: relative;
|
||||
top: 1px;
|
||||
}
|
||||
|
||||
@@ -130,11 +130,6 @@ export class RdDActor extends RdDBaseActorSang {
|
||||
return etatGeneral
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
getActivePoisons() {
|
||||
return foundry.utils.duplicate(this.items.filter(item => item.type == 'poison' && item.system.active))
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
getMalusArmure() {
|
||||
return this.itemTypes[ITEM_TYPES.armure].filter(it => it.system.equipe)
|
||||
@@ -332,10 +327,6 @@ export class RdDActor extends RdDBaseActorSang {
|
||||
await this._recupererVie(message, isMaladeEmpoisonne);
|
||||
}
|
||||
|
||||
getMaladiesPoisons() {
|
||||
return this.items.filter(item => item.type == 'maladie' || (item.type == 'poison' && item.system.active));
|
||||
}
|
||||
|
||||
_messageRecuperationMaladiePoisons(maladiesPoisons, message) {
|
||||
if (maladiesPoisons.length > 0) {
|
||||
const identifies = maladiesPoisons.filter(it => it.system.identifie);
|
||||
@@ -1735,16 +1726,16 @@ export class RdDActor extends RdDBaseActorSang {
|
||||
type: { allowed: [ROLL_TYPE_SORT], current: ROLL_TYPE_SORT }
|
||||
};
|
||||
const dialog = await RollDialog.create(rollData, {
|
||||
callbacks: [roll => {
|
||||
this.tmrApp?.restoreTMRAfterAction();
|
||||
callbacks: [async roll => {
|
||||
await this.tmrApp?.restoreTMRAfterAction();
|
||||
if (roll.closeTMR) {
|
||||
this.tmrApp?.close();
|
||||
await this.tmrApp?.close();
|
||||
this.tmrApp = undefined;
|
||||
}
|
||||
}],
|
||||
onRollDone: RollDialog.onRollDoneClose,
|
||||
onClose: () => {
|
||||
this.tmrApp?.restoreTMRAfterAction();
|
||||
onClose: async () => {
|
||||
await this.tmrApp?.restoreTMRAfterAction();
|
||||
}
|
||||
});
|
||||
this.tmrApp?.setTMRPendingAction(dialog);
|
||||
|
||||
@@ -157,11 +157,9 @@ export class RdDBaseActorReve extends RdDBaseActor {
|
||||
}
|
||||
|
||||
async $finDeRoundEmpoignade() {
|
||||
const immobilisations = this.itemTypes[ITEM_TYPES.empoignade].filter(it => it.system.pointsemp >= 2 && it.system.empoigneurid == this.id);
|
||||
immobilisations.forEach(emp => RdDEmpoignade.onImmobilisation(this,
|
||||
game.actors.get(emp.system.empoigneid),
|
||||
emp
|
||||
))
|
||||
await Promise.all(this.itemTypes[ITEM_TYPES.empoignade]
|
||||
.filter(it => it.system.pointsemp >= 2 && it.system.empoigneurid == this.id)
|
||||
.map(async it => await RdDEmpoignade.onImmobilisation(this, it)))
|
||||
}
|
||||
|
||||
async setSonne(sonne = true) { }
|
||||
|
||||
@@ -130,7 +130,7 @@ export class RdDBaseActorSang extends RdDBaseActorReve {
|
||||
let result = {
|
||||
sonne: false,
|
||||
};
|
||||
|
||||
let perteEndurance = 0
|
||||
let minValue = name == "vie" ? -this.getSConst() - 1 : 0;
|
||||
|
||||
result.newValue = Math.max(minValue, Math.min(compteur.value + inc, compteur.max));
|
||||
@@ -145,16 +145,10 @@ export class RdDBaseActorSang extends RdDBaseActorReve {
|
||||
if (inc > 0) { // le max d'endurance s'applique seulement à la récupération
|
||||
result.newValue = Math.min(result.newValue, this._computeEnduranceMax())
|
||||
}
|
||||
const perte = compteur.value - result.newValue;
|
||||
result.perte = perte;
|
||||
if (perte > 1) {
|
||||
// Peut-être sonné si 2 points d'endurance perdus d'un coup
|
||||
foundry.utils.mergeObject(result, await this.jetEndurance(result.newValue));
|
||||
} else if (inc > 0) {
|
||||
await this.setSonne(false);
|
||||
}
|
||||
perteEndurance = compteur.value - result.newValue;
|
||||
result.perte = perteEndurance
|
||||
if (sante.fatigue && inc < 0) { // Each endurance lost -> fatigue lost
|
||||
fatigue = perte;
|
||||
fatigue = perteEndurance;
|
||||
}
|
||||
}
|
||||
compteur.value = result.newValue;
|
||||
@@ -163,6 +157,14 @@ export class RdDBaseActorSang extends RdDBaseActorReve {
|
||||
sante.fatigue.value = Math.max(sante.fatigue.value + fatigue, this.getFatigueMin());
|
||||
}
|
||||
await this.update({ "system.sante": sante }, { render: true })
|
||||
|
||||
if (perteEndurance > 1) {
|
||||
// Peut-être sonné si 2 points d'endurance perdus d'un coup
|
||||
foundry.utils.mergeObject(result, await this.jetEndurance(result.newValue));
|
||||
} else if (name == "endurance" && inc > 0) {
|
||||
await this.setSonne(false);
|
||||
}
|
||||
|
||||
if (this.isDead()) {
|
||||
await this.setEffect(STATUSES.StatusComma, true);
|
||||
}
|
||||
@@ -181,28 +183,46 @@ export class RdDBaseActorSang extends RdDBaseActorReve {
|
||||
}
|
||||
|
||||
async onCreateItem(item, options, id) {
|
||||
switch (item.type) {
|
||||
case ITEM_TYPES.blessure:
|
||||
await this.changeBleedingState()
|
||||
break
|
||||
}
|
||||
await this.changeItemEffects(item)
|
||||
await super.onCreateItem(item, options, id)
|
||||
}
|
||||
|
||||
async onUpdateItem(item, options, id) {
|
||||
switch (item.type) {
|
||||
case ITEM_TYPES.blessure:
|
||||
await this.changeBleedingState()
|
||||
break
|
||||
}
|
||||
await this.changeItemEffects(item);
|
||||
await super.onUpdateItem(item, options, id)
|
||||
}
|
||||
|
||||
async changeBleedingState() {
|
||||
async onDeleteItem(item, options, id) {
|
||||
await this.changeItemEffects(item);
|
||||
await super.onDeleteItem(item, options, id)
|
||||
}
|
||||
|
||||
async changeItemEffects(item) {
|
||||
switch (item.type) {
|
||||
case ITEM_TYPES.blessure:
|
||||
await this.changeStateBleeding();
|
||||
break;
|
||||
case ITEM_TYPES.maladie:
|
||||
case ITEM_TYPES.poison:
|
||||
await this.changeStateMalade();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
async changeStateBleeding() {
|
||||
const bleeding = this.itemTypes[ITEM_TYPES.blessure].find(it => it.isBleeding())
|
||||
await this.setEffect(STATUSES.StatusBleeding, bleeding ? true : false)
|
||||
}
|
||||
|
||||
async changeStateMalade() {
|
||||
const maladiePoisons = this.getMaladiesPoisons()
|
||||
await this.setEffect(STATUSES.StatusMalade, maladiePoisons.length > 0)
|
||||
}
|
||||
|
||||
getMaladiesPoisons() {
|
||||
return this.items.filter(it => [ITEM_TYPES.maladie, ITEM_TYPES.poison].includes(it.type))
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
async ajouterBlessure(encaissement, attackerToken = undefined) {
|
||||
if (encaissement.gravite < 0) return;
|
||||
|
||||
@@ -279,14 +279,16 @@ export class RdDBaseActor extends Actor {
|
||||
|
||||
async removeEffects(filter = e => true) {
|
||||
if (game.user.isGM) {
|
||||
const effectsToRemove = this.getEffects(filter)
|
||||
if (this.canRemoveEffect(effectsToRemove)) {
|
||||
const ids = effectsToRemove.map(it => it.id)
|
||||
const ids = this.getEffects(filter)
|
||||
.filter(it => this.canRemoveEffects(it))
|
||||
.map(it => it.id)
|
||||
if (ids.length > 0) {
|
||||
await this.deleteEmbeddedDocuments('ActiveEffect', ids)
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
canRemoveEffect(effect) {
|
||||
canRemoveEffects(effect) {
|
||||
if (effect.statuses.has(STATUSES.StatusSurEnc)) {
|
||||
return !this.isSurenc()
|
||||
}
|
||||
|
||||
@@ -65,6 +65,7 @@ export const RDD_CONFIG = {
|
||||
surenc: 'systems/foundryvtt-reve-de-dragon/assets/actions/surenc.svg',
|
||||
magique: 'systems/foundryvtt-reve-de-dragon/assets/actions/magique.svg',
|
||||
armebrisee: 'systems/foundryvtt-reve-de-dragon/assets/actions/arme-brisee.svg',
|
||||
malade: 'systems/foundryvtt-reve-de-dragon/assets/actions/malade.svg',
|
||||
},
|
||||
encaissement: {
|
||||
mortel: 'mortel',
|
||||
|
||||
@@ -68,7 +68,7 @@ export class RdDRencontre extends RdDItem {
|
||||
}
|
||||
|
||||
static async appliquer(codes, tmrDialog, rencData) {
|
||||
for(const effet of RdDRencontre.mapEffets(codes)){
|
||||
for(let effet of RdDRencontre.mapEffets(codes)){
|
||||
await effet.method(tmrDialog, rencData);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -105,7 +105,7 @@ export class RdDCombatManager extends Combat {
|
||||
}
|
||||
else if (!combatant.actor.isActorCombat()) {
|
||||
if (options.warning) {
|
||||
ui.notifications.warn(`${combatant.name} ne peut pas combattre!`)
|
||||
ui.notifications.warn(`L'acteur ${combatant.name} ne peut pas combattre!`)
|
||||
}
|
||||
return undefined
|
||||
}
|
||||
|
||||
@@ -127,7 +127,7 @@ export class RdDCommands {
|
||||
<br><strong>/rdd 15 -2</strong> effectue un jet 15 à -2
|
||||
<br><strong>/rdd 15 0 s</strong> effectue un jet 15 à 0, avec significative requise
|
||||
<br><strong>/rdd Vue Vigilance -2</strong> effectue un jet de Vue/Vigilance à -2 pour les tokens sélectionnés
|
||||
<br><strong>/rdd vol déser +2</strong> effectue un jet de Volonté/Survie en désert à +2 pour les tokens sélectionnés
|
||||
<br><strong>/rdd vol déser +2</strong> effectue un jet de Volonté/Survie en Désert à +2 pour les tokens sélectionnés
|
||||
`
|
||||
});
|
||||
this.registerCommand({
|
||||
@@ -137,7 +137,7 @@ export class RdDCommands {
|
||||
<br><strong>/jet Vue</strong> poste une demande de jet de VUE à 0
|
||||
<br><strong>/jet Vue -2</strong> poste une demande de jet de VUE à -2
|
||||
<br><strong>/jet Vue Vigilance -2</strong> poste une demande de jet de VUE / Vigilance à -2
|
||||
<br><strong>/jet vol déser +2</strong> poste une demande de jet de VOLONTÉ / Survie en désert à +2
|
||||
<br><strong>/jet vol déser +2</strong> poste une demande de jet de VOLONTÉ / Survie en Désert à +2
|
||||
`
|
||||
});
|
||||
this.registerCommand({ path: ["/ddr"], func: (content, msg, params) => this.rollDeDraconique(msg), descr: "Lance un Dé Draconique" });
|
||||
|
||||
@@ -21,14 +21,21 @@ export class RdDEmpoignade {
|
||||
}
|
||||
|
||||
static async ajustementEmpoignade(attacker, defender, adjust = 1) {
|
||||
const empoignade = RdDEmpoignade.getEmpoignade(attacker, defender)
|
||||
const empId = empoignade?.system.empoignadeid ?? foundry.utils.randomID(16)
|
||||
let empoignade = RdDEmpoignade.getEmpoignade(attacker, defender)
|
||||
if (empoignade?.system.empoigneurid == defender.id) {
|
||||
let empoignade = RdDEmpoignade.getEmpoignade(defender, attacker)
|
||||
return await RdDEmpoignade.$ajustementEmpoignade(empoignade, defender, attacker, - adjust);
|
||||
}
|
||||
return await RdDEmpoignade.$ajustementEmpoignade(empoignade, attacker, defender, adjust);
|
||||
}
|
||||
|
||||
|
||||
static async $ajustementEmpoignade(empoignade, attacker, defender, adjust) {
|
||||
const empId = empoignade?.system.empoignadeid ?? foundry.utils.randomID(16);
|
||||
const empFin = (empoignade?.system.pointsemp ?? 0) + adjust
|
||||
if (empoignade) {
|
||||
if (empoignade.system.empoigneurid == defender.id) {
|
||||
adjust = - adjust
|
||||
}
|
||||
empoignade.system.pointsemp += adjust
|
||||
await RdDEmpoignade.$updateEtatEmpoignade(empoignade, attacker, defender)
|
||||
empoignade.system.pointsemp = empFin;
|
||||
await RdDEmpoignade.$updateEtatEmpoignade(empoignade, attacker, defender);
|
||||
}
|
||||
else {
|
||||
await RdDEmpoignade.$createEtatEmpoignade({
|
||||
@@ -39,24 +46,26 @@ export class RdDEmpoignade {
|
||||
empoignadeid: empId,
|
||||
empoigneurid: attacker.id,
|
||||
empoigneid: defender.id,
|
||||
pointsemp: adjust,
|
||||
pointsemp: empFin,
|
||||
empoigneurname: attacker.name,
|
||||
empoignename: defender.name
|
||||
}
|
||||
}, attacker, defender)
|
||||
}, attacker, defender);
|
||||
}
|
||||
if (adjust != 0 && empFin == 2) {
|
||||
await RdDEmpoignade.proposerEntrainerAuSol(attacker, defender, empoignade);
|
||||
}
|
||||
const result = RdDEmpoignade.getEmpoignadeById(defender, empId);
|
||||
const defGrappled = result.system.pointsemp == (result.system.empoigneid == defender.id ? 2 : -2)
|
||||
const attGrappled = result.system.pointsemp == (result.system.empoigneurid == attacker.id ? -2 : 2)
|
||||
const grappling = Math.abs(result.system.pointsemp) > 0
|
||||
await defender.setEffect(STATUSES.StatusGrappling, grappling && !defGrappled)
|
||||
await attacker.setEffect(STATUSES.StatusGrappling, grappling && !attGrappled)
|
||||
await defender.setEffect(STATUSES.StatusGrappled, defGrappled)
|
||||
await attacker.setEffect(STATUSES.StatusGrappled, attGrappled)
|
||||
const defGrappled = result.system.pointsemp == (result.system.empoigneid == defender.id ? 2 : -2);
|
||||
const attGrappled = result.system.pointsemp == (result.system.empoigneurid == attacker.id ? -2 : 2);
|
||||
const grappling = Math.abs(result.system.pointsemp) > 0;
|
||||
await defender.setEffect(STATUSES.StatusGrappling, grappling && !defGrappled);
|
||||
await attacker.setEffect(STATUSES.StatusGrappling, grappling && !attGrappled);
|
||||
await defender.setEffect(STATUSES.StatusGrappled, defGrappled);
|
||||
await attacker.setEffect(STATUSES.StatusGrappled, attGrappled);
|
||||
return result
|
||||
}
|
||||
|
||||
|
||||
/* -------------------------------------------- */
|
||||
static registerChatCallbacks(html) {
|
||||
$(html).on("click", '.defense-empoignade-cac', event => {
|
||||
@@ -93,7 +102,7 @@ export class RdDEmpoignade {
|
||||
const rollData = RdDEmpoignade.$readRollEmpoignade(chatMessage);
|
||||
if (event.currentTarget.value && event.currentTarget.value != "none") {
|
||||
RdDEmpoignade.perteEndurance(rollData, event.currentTarget.value)
|
||||
ChatUtility.removeChatMessageId(chatMessage.id)
|
||||
//ChatUtility.removeChatMessageId(chatMessage.id)
|
||||
}
|
||||
});
|
||||
}
|
||||
@@ -138,8 +147,7 @@ export class RdDEmpoignade {
|
||||
|
||||
/* -------------------------------------------- */
|
||||
static getEmpoignadeById(actor, id) {
|
||||
let emp = actor.itemTypes[ITEM_TYPES.empoignade].find(it => it.system.empoignadeid == id)
|
||||
return emp && foundry.utils.duplicate(emp) || undefined;
|
||||
return actor.itemTypes[ITEM_TYPES.empoignade].find(it => it.system.empoignadeid == id)
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
@@ -233,12 +241,24 @@ export class RdDEmpoignade {
|
||||
MappingCreatureArme.setRollDataCreature(rollData)
|
||||
}
|
||||
if (empoignade.system.pointsemp >= 2) {
|
||||
if (!empoignade.system.ausol) {
|
||||
let msg = await RdDRollResult.displayRollData(rollData, attacker, 'chat-empoignade-entrainer.hbs');
|
||||
RdDEmpoignade.$storeRollEmpoignade(msg, rollData);
|
||||
}
|
||||
await RdDEmpoignade.proposerEntrainerAuSol(attacker, defender, empoignade)
|
||||
} else {
|
||||
await RdDEmpoignade.$rollAttaqueEmpoignade(attacker, rollData, isNouvelle);
|
||||
await RdDEmpoignade.$rollAttaqueEmpoignade(attacker, rollData, isNouvelle)
|
||||
}
|
||||
}
|
||||
|
||||
static async proposerEntrainerAuSol(attacker, defender, empoignade) {
|
||||
if (!empoignade.system.ausol) {
|
||||
const mode = (empoignade && empoignade.system.empoigneurid == attacker.id) ? "empoigner" : "liberer"
|
||||
const rollData = {
|
||||
mode, empoignade, attacker, defender,
|
||||
isEmpoignade: true,
|
||||
competence: attacker.getCompetenceCorpsACorps(),
|
||||
selectedCarac: attacker.system.carac.melee,
|
||||
malusTaille: RdDEmpoignade.getMalusTaille(empoignade, attacker, defender)
|
||||
}
|
||||
const msg = await RdDRollResult.displayRollData(rollData, attacker, 'chat-empoignade-entrainer.hbs');
|
||||
RdDEmpoignade.$storeRollEmpoignade(msg, rollData);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -249,7 +269,14 @@ export class RdDEmpoignade {
|
||||
await this.onAttaqueEmpoignadeValidee(attacker, defender)
|
||||
}
|
||||
|
||||
static async onImmobilisation(attacker, defender, empoignade) {
|
||||
static async onImmobilisation(attacker, empoignade) {
|
||||
const defender = game.actors.get(empoignade.system.empoigneid)
|
||||
const empDefenseur = defender.itemTypes[ITEM_TYPES.empoignade]
|
||||
.find(it => it.system.empoignadeid == empoignade.system.empoignadeid);
|
||||
await defender.updateEmbeddedDocuments('Item', [{
|
||||
_id: empDefenseur.id,
|
||||
'system.immobilise': true
|
||||
}])
|
||||
const rollData = {
|
||||
mode: "immobilise",
|
||||
empoignade, attacker, defender,
|
||||
@@ -372,29 +399,35 @@ export class RdDEmpoignade {
|
||||
|
||||
/* -------------------------------------------- */
|
||||
static async $updateEtatEmpoignade(empoignade, attacker, defender) {
|
||||
console.log("UPDATE Empoignade", empoignade)
|
||||
const belligerants = [
|
||||
attacker ?? game.actors.get(empoignade.system.empoigneurid),
|
||||
defender ?? game.actors.get(empoignade.system.empoigneid)]
|
||||
const removeEmp = empoignade.system.pointsemp == 0
|
||||
|
||||
await Promise.all(
|
||||
belligerants.map(async belligerant => {
|
||||
const emp = RdDEmpoignade.getEmpoignadeById(belligerant, empoignade.system.empoignadeid)
|
||||
return await belligerant.updateEmbeddedDocuments('Item', [{
|
||||
_id: emp._id,
|
||||
"system.pointsemp": empoignade.system.pointsemp,
|
||||
"system.ausol": empoignade.system.ausol
|
||||
}])
|
||||
}))
|
||||
if (removeEmp) {
|
||||
const emp = RdDEmpoignade.getEmpoignadeById(attacker, empoignade.system.empoignadeid)
|
||||
return await attacker.deleteEmbeddedDocuments('Item', [emp.id])
|
||||
}
|
||||
else {
|
||||
await Promise.all(
|
||||
belligerants.map(async belligerant => {
|
||||
const emp = RdDEmpoignade.getEmpoignadeById(belligerant, empoignade.system.empoignadeid)
|
||||
return await belligerant.updateEmbeddedDocuments('Item', [{
|
||||
_id: emp.id,
|
||||
"system.pointsemp": empoignade.system.pointsemp,
|
||||
"system.ausol": empoignade.system.ausol
|
||||
}])
|
||||
}))
|
||||
}
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
static async $deleteEmpoignade(empoignade) {
|
||||
console.log("DELETE Empoignade", empoignade)
|
||||
|
||||
let defender = game.actors.get(empoignade.system.empoigneid)
|
||||
let emp = RdDEmpoignade.getEmpoignadeById(defender, empoignade.system.empoignadeid)
|
||||
await defender.deleteEmbeddedDocuments('Item', [emp._id])
|
||||
const defender = game.actors.get(empoignade.system.empoigneid)
|
||||
const emp = RdDEmpoignade.getEmpoignadeById(defender, empoignade.system.empoignadeid)
|
||||
await defender.deleteEmbeddedDocuments('Item', [emp.id])
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
@@ -436,29 +469,28 @@ export class RdDEmpoignade {
|
||||
static async perteEndurance(rollData, perteMode) {
|
||||
let attacker = game.actors.get(rollData.attacker.id)
|
||||
let defender = game.actors.get(rollData.defender.id)
|
||||
if (!RdDEmpoignade.isActionAutorisee("immobilise", attacker, defender)) {
|
||||
if (perteMode == "none" || !RdDEmpoignade.isActionAutorisee("immobilise", attacker, defender)) {
|
||||
return
|
||||
}
|
||||
let empoignade = RdDEmpoignade.getEmpoignade(attacker, defender)
|
||||
|
||||
//console.log("Perte d'endurance :!!!", perteMode)
|
||||
let endValue = defender.system.sante.endurance.value
|
||||
if (perteMode == "end0") {
|
||||
await defender.santeIncDec("endurance", -endValue);
|
||||
}
|
||||
if (perteMode == "end1") {
|
||||
await defender.santeIncDec("endurance", -(endValue - 1));
|
||||
}
|
||||
if (perteMode == "endmoitie") {
|
||||
await defender.santeIncDec("endurance", -Math.floor(endValue / 2));
|
||||
}
|
||||
if (perteMode == "endquart") {
|
||||
await defender.santeIncDec("endurance", -(3 * Math.floor(endValue / 4)));
|
||||
}
|
||||
let msg = await RdDRollResult.displayRollData(rollData, attacker, 'chat-empoignade-perte-endurance.hbs');
|
||||
RdDEmpoignade.$storeRollEmpoignade(msg, rollData);
|
||||
const perteEndurance = await RdDEmpoignade.$calcPerteEnd(perteMode, defender.system.sante.endurance.value)
|
||||
await defender.santeIncDec("endurance", -perteEndurance)
|
||||
await RdDRollResult.displayRollData({ attacker, defender, perteEndurance },
|
||||
attacker,
|
||||
'chat-empoignade-perte-endurance.hbs')
|
||||
}
|
||||
|
||||
static async $calcPerteEnd(perteMode, endValue) {
|
||||
switch (perteMode) {
|
||||
case "none": return 0
|
||||
case "end0": return endValue
|
||||
case "end1": return (endValue - 1)
|
||||
case "3/4": return Math.floor(3 * endValue / 4)
|
||||
case "1/2": return Math.floor(endValue / 2)
|
||||
case "1/4": return Math.floor(endValue / 4)
|
||||
}
|
||||
const rolled = await (new Roll(perteMode).evaluate())
|
||||
return rolled.total
|
||||
}
|
||||
/* -------------------------------------------- */
|
||||
static async deleteAllEmpoignades() {
|
||||
for (let actor of game.actors) {
|
||||
@@ -473,7 +505,7 @@ export class RdDEmpoignade {
|
||||
let actor = game.actors.get(actorDeleteId)
|
||||
let emp = this.getEmpoignadeById(actor, empoignade.system.empoignadeid)
|
||||
if (emp) {
|
||||
await actor.deleteEmbeddedDocuments('Item', [emp._id])
|
||||
await actor.deleteEmbeddedDocuments('Item', [emp.id])
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
import { Grammar } from "../grammar.js"
|
||||
import { ReglesOptionnelles } from "../settings/regles-optionnelles.js"
|
||||
import { ROLL_TYPE_SORT } from "./roll-constants.mjs"
|
||||
import { RollPartCheckbox } from "./roll-part-checkbox.mjs"
|
||||
|
||||
export const PART_ASTROLOGIQUE = "astrologique"
|
||||
@@ -15,7 +16,7 @@ export class RollPartAstrologique extends RollPartCheckbox {
|
||||
}
|
||||
|
||||
isLancementRituel(rollData) {
|
||||
return false
|
||||
return rollData.type.current == ROLL_TYPE_SORT && rollData.current.sort?.sort?.system.isrituel
|
||||
}
|
||||
|
||||
isJetChance(rollData) {
|
||||
|
||||
@@ -16,6 +16,7 @@ export const STATUSES = {
|
||||
StatusDemiReve: 'demi-reve',
|
||||
StatusSurEnc: 'sur-encombrement',
|
||||
StatusForceWeak: 'force insuffisante',
|
||||
StatusMalade: 'malade',
|
||||
}
|
||||
|
||||
export const forceWeakStatusEffect = { rdd: true, id: STATUSES.StatusForceWeak, name: 'EFFECT.StatusForceWeak', img: RDD_CONFIG.icons.forceWeak };
|
||||
@@ -35,11 +36,12 @@ const rddStatusEffects = [
|
||||
{ rdd: true, id: STATUSES.StatusComma, name: 'EFFECT.StatusComma', img: 'icons/svg/skull.svg' },
|
||||
|
||||
{ rdd: true, id: STATUSES.StatusBleeding, name: 'EFFECT.StatusBleeding', img: 'icons/svg/blood.svg' },
|
||||
{ rdd: true, id: STATUSES.StatusMalade, name: 'EFFECT.StatusMalade', img: RDD_CONFIG.icons.malade },
|
||||
{ rdd: true, id: STATUSES.StatusDead, name: 'EFFECT.StatusDead', img: 'icons/svg/skull.svg' },
|
||||
surEncEffect,
|
||||
demiReveStatusEffect,
|
||||
forceWeakStatusEffect,
|
||||
surEncEffect,
|
||||
];
|
||||
]
|
||||
|
||||
const statusDemiSurprise = new Set([STATUSES.StatusStunned, STATUSES.StatusProne, STATUSES.StatusRestrained, STATUSES.StatusForceWeak])
|
||||
const statusSurpriseTotale = new Set([STATUSES.StatusUnconscious, STATUSES.StatusBlind, STATUSES.StatusComma])
|
||||
@@ -73,7 +75,6 @@ export class StatusEffects extends FormApplication {
|
||||
CONFIG.RDD.allEffects = rddStatusEffects.concat(CONFIG.statusEffects.filter(it => !rddEffectIds.includes(it.id)))
|
||||
|
||||
StatusEffects._setUseStatusEffects(StatusEffects._getUseStatusEffects());
|
||||
console.log('statusEffects', CONFIG.statusEffects);
|
||||
}
|
||||
|
||||
static isSurprise(effect) {
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
import { RollBasicParts } from "../roll/roll-basic-parts.mjs"
|
||||
|
||||
const ACTOR_EMBEDDED_DOCTYPES = ['Item', 'ActiveEffect']
|
||||
/**
|
||||
@@ -62,14 +63,16 @@ export class ActorImpacts {
|
||||
addDelta(document, path, value) {
|
||||
ActorImpacts.$checkDocType(document)
|
||||
const intValue = Number.parseInt(value)
|
||||
if (Number.isInteger(intValue) && intValue != 0) {
|
||||
const delta = [path, intValue]
|
||||
const existing = this[docType].updates.find(it => it.id == document.id)
|
||||
if (existing) {
|
||||
existing.deltas.push(delta)
|
||||
}
|
||||
else {
|
||||
this[docType].updates.push({ id: document.id, updates: [], deltas: [delta] })
|
||||
if (Number.isInteger(intValue)) {
|
||||
if (intValue != 0){
|
||||
const delta = [path, intValue]
|
||||
const existing = this[docType].updates.find(it => it.id == document.id)
|
||||
if (existing) {
|
||||
existing.deltas.push(delta)
|
||||
}
|
||||
else {
|
||||
this[docType].updates.push({ id: document.id, updates: [], deltas: [delta] })
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
@@ -96,7 +99,9 @@ export class ActorImpacts {
|
||||
|
||||
async applyImpacts() {
|
||||
const actor = this.actorToken.actor
|
||||
await Promise.all(ACTOR_EMBEDDED_DOCTYPES.map(async docType => await this.$applyDocumentsImpacts(actor, docType)))
|
||||
for (let docType of ACTOR_EMBEDDED_DOCTYPES) {
|
||||
await this.$applyDocumentsImpacts(actor, docType)
|
||||
}
|
||||
const updates = ActorImpacts.$computeUpdates(this, id => actor)
|
||||
await actor.update(updates, { render: true })
|
||||
}
|
||||
@@ -122,8 +127,8 @@ export class ActorImpacts {
|
||||
}
|
||||
}
|
||||
|
||||
findCreatedId(docType, origId){
|
||||
return this[docType].creates.find(it => it.id = origId)?.createdId
|
||||
findCreatedId(docType, origId) {
|
||||
return this[docType].creates.find(it => it.id = origId)?.createdId
|
||||
}
|
||||
|
||||
$getEmbeddedDocument(docType, id) {
|
||||
|
||||
@@ -1604,7 +1604,7 @@ items:
|
||||
coreVersion: '12.331'
|
||||
_key: '!actors.items!ryUZTa17LzNv25UY.oHnSnCw1RAW5t15S'
|
||||
- _id: vDOAyWc2YnuhNnFF
|
||||
name: Survie en désert
|
||||
name: Survie en Désert
|
||||
type: competence
|
||||
sort: 5400000
|
||||
flags: {}
|
||||
|
||||
@@ -1604,7 +1604,7 @@ items:
|
||||
coreVersion: '12.331'
|
||||
_key: '!actors.items!ohmz9Jn4jxD88Kll.oHnSnCw1RAW5t15S'
|
||||
- _id: vDOAyWc2YnuhNnFF
|
||||
name: Survie en désert
|
||||
name: Survie en Désert
|
||||
type: competence
|
||||
sort: 5400000
|
||||
flags: {}
|
||||
|
||||
@@ -1604,7 +1604,7 @@ items:
|
||||
coreVersion: '12.331'
|
||||
_key: '!actors.items!JARnWt2MQWDyRwQt.oHnSnCw1RAW5t15S'
|
||||
- _id: vDOAyWc2YnuhNnFF
|
||||
name: Survie en désert
|
||||
name: Survie en Désert
|
||||
type: competence
|
||||
sort: 5400000
|
||||
flags: {}
|
||||
|
||||
@@ -1551,7 +1551,7 @@ items:
|
||||
coreVersion: '12.331'
|
||||
_key: '!actors.items!SJb0c8FDcYdd41rB.oHnSnCw1RAW5t15S'
|
||||
- _id: vDOAyWc2YnuhNnFF
|
||||
name: Survie en désert
|
||||
name: Survie en Désert
|
||||
type: competence
|
||||
sort: 5400000
|
||||
img: systems/foundryvtt-reve-de-dragon/icons/competence_survie_desert.webp
|
||||
|
||||
@@ -1604,7 +1604,7 @@ items:
|
||||
coreVersion: '12.331'
|
||||
_key: '!actors.items!JQCwAOK64Yijwtch.oHnSnCw1RAW5t15S'
|
||||
- _id: vDOAyWc2YnuhNnFF
|
||||
name: Survie en désert
|
||||
name: Survie en Désert
|
||||
type: competence
|
||||
sort: 5400000
|
||||
flags: {}
|
||||
|
||||
@@ -1604,7 +1604,7 @@ items:
|
||||
coreVersion: '12.331'
|
||||
_key: '!actors.items!CRRP8ucJpljX6tq8.oHnSnCw1RAW5t15S'
|
||||
- _id: vDOAyWc2YnuhNnFF
|
||||
name: Survie en désert
|
||||
name: Survie en Désert
|
||||
type: competence
|
||||
sort: 5400000
|
||||
flags: {}
|
||||
|
||||
@@ -1604,7 +1604,7 @@ items:
|
||||
coreVersion: '12.331'
|
||||
_key: '!actors.items!51vL4MhEE0asjgF2.oHnSnCw1RAW5t15S'
|
||||
- _id: vDOAyWc2YnuhNnFF
|
||||
name: Survie en désert
|
||||
name: Survie en Désert
|
||||
type: competence
|
||||
sort: 5400000
|
||||
flags: {}
|
||||
|
||||
@@ -1604,7 +1604,7 @@ items:
|
||||
coreVersion: '12.331'
|
||||
_key: '!actors.items!NX1nAqKKIcQlyGua.oHnSnCw1RAW5t15S'
|
||||
- _id: vDOAyWc2YnuhNnFF
|
||||
name: Survie en désert
|
||||
name: Survie en Désert
|
||||
type: competence
|
||||
sort: 5400000
|
||||
flags: {}
|
||||
|
||||
@@ -1604,7 +1604,7 @@ items:
|
||||
coreVersion: '12.331'
|
||||
_key: '!actors.items!2bRaEDuwZezKAyEq.oHnSnCw1RAW5t15S'
|
||||
- _id: vDOAyWc2YnuhNnFF
|
||||
name: Survie en désert
|
||||
name: Survie en Désert
|
||||
type: competence
|
||||
sort: 5400000
|
||||
flags: {}
|
||||
|
||||
@@ -1604,7 +1604,7 @@ items:
|
||||
coreVersion: '12.331'
|
||||
_key: '!actors.items!IeKSXignUpfUTU4m.oHnSnCw1RAW5t15S'
|
||||
- _id: vDOAyWc2YnuhNnFF
|
||||
name: Survie en désert
|
||||
name: Survie en Désert
|
||||
type: competence
|
||||
sort: 5400000
|
||||
flags: {}
|
||||
|
||||
@@ -1552,7 +1552,7 @@ items:
|
||||
coreVersion: '12.331'
|
||||
_key: '!actors.items!pSM0ku0RJNLvHSvF.oHnSnCw1RAW5t15S'
|
||||
- _id: vDOAyWc2YnuhNnFF
|
||||
name: Survie en désert
|
||||
name: Survie en Désert
|
||||
type: competence
|
||||
sort: 5400000
|
||||
img: systems/foundryvtt-reve-de-dragon/icons/competence_survie_desert.webp
|
||||
|
||||
@@ -1552,7 +1552,7 @@ items:
|
||||
coreVersion: '12.331'
|
||||
_key: '!actors.items!5xPFHgrY5AIP9Mnb.oHnSnCw1RAW5t15S'
|
||||
- _id: vDOAyWc2YnuhNnFF
|
||||
name: Survie en désert
|
||||
name: Survie en Désert
|
||||
type: competence
|
||||
sort: 5400000
|
||||
img: systems/foundryvtt-reve-de-dragon/icons/competence_survie_desert.webp
|
||||
|
||||
@@ -1604,7 +1604,7 @@ items:
|
||||
coreVersion: '12.331'
|
||||
_key: '!actors.items!U9NNcXQBJmsI9Ttk.oHnSnCw1RAW5t15S'
|
||||
- _id: vDOAyWc2YnuhNnFF
|
||||
name: Survie en désert
|
||||
name: Survie en Désert
|
||||
type: competence
|
||||
sort: 5400000
|
||||
flags: {}
|
||||
|
||||
@@ -1551,7 +1551,7 @@ items:
|
||||
coreVersion: '12.331'
|
||||
_key: '!actors.items!oLDROOdwfctyRusH.oHnSnCw1RAW5t15S'
|
||||
- _id: vDOAyWc2YnuhNnFF
|
||||
name: Survie en désert
|
||||
name: Survie en Désert
|
||||
type: competence
|
||||
sort: 5400000
|
||||
img: systems/foundryvtt-reve-de-dragon/icons/competence_survie_desert.webp
|
||||
|
||||
@@ -1551,7 +1551,7 @@ items:
|
||||
coreVersion: '12.331'
|
||||
_key: '!actors.items!2KN3nKGZ36Qkn7Mf.oHnSnCw1RAW5t15S'
|
||||
- _id: vDOAyWc2YnuhNnFF
|
||||
name: Survie en désert
|
||||
name: Survie en Désert
|
||||
type: competence
|
||||
sort: 5400000
|
||||
img: systems/foundryvtt-reve-de-dragon/icons/competence_survie_desert.webp
|
||||
|
||||
@@ -1605,7 +1605,7 @@ items:
|
||||
coreVersion: '12.331'
|
||||
_key: '!actors.items!V2WOs8deCYdBT2Jo.oHnSnCw1RAW5t15S'
|
||||
- _id: vDOAyWc2YnuhNnFF
|
||||
name: Survie en désert
|
||||
name: Survie en Désert
|
||||
type: competence
|
||||
sort: 5400000
|
||||
flags: {}
|
||||
|
||||
@@ -1605,7 +1605,7 @@ items:
|
||||
coreVersion: '12.331'
|
||||
_key: '!actors.items!UNs4RBLYiGbfxd1c.oHnSnCw1RAW5t15S'
|
||||
- _id: vDOAyWc2YnuhNnFF
|
||||
name: Survie en désert
|
||||
name: Survie en Désert
|
||||
type: competence
|
||||
sort: 5400000
|
||||
flags: {}
|
||||
|
||||
@@ -1605,7 +1605,7 @@ items:
|
||||
coreVersion: '12.331'
|
||||
_key: '!actors.items!jfXs7qaHEWQpIHud.oHnSnCw1RAW5t15S'
|
||||
- _id: vDOAyWc2YnuhNnFF
|
||||
name: Survie en désert
|
||||
name: Survie en Désert
|
||||
type: competence
|
||||
sort: 5400000
|
||||
flags: {}
|
||||
|
||||
@@ -1604,7 +1604,7 @@ items:
|
||||
coreVersion: '12.331'
|
||||
_key: '!actors.items!awZg7bGbTjEGRMiw.oHnSnCw1RAW5t15S'
|
||||
- _id: vDOAyWc2YnuhNnFF
|
||||
name: Survie en désert
|
||||
name: Survie en Désert
|
||||
type: competence
|
||||
sort: 5400000
|
||||
flags: {}
|
||||
|
||||
@@ -1604,7 +1604,7 @@ items:
|
||||
coreVersion: '12.331'
|
||||
_key: '!actors.items!dMdBctaRRdGJgced.oHnSnCw1RAW5t15S'
|
||||
- _id: vDOAyWc2YnuhNnFF
|
||||
name: Survie en désert
|
||||
name: Survie en Désert
|
||||
type: competence
|
||||
sort: 5400000
|
||||
flags: {}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
name: Survie en désert
|
||||
name: Survie en Désert
|
||||
type: competence
|
||||
img: systems/foundryvtt-reve-de-dragon/icons/competence_survie_desert.webp
|
||||
_id: vDOAyWc2YnuhNnFF
|
||||
|
||||
@@ -1551,7 +1551,7 @@ items:
|
||||
coreVersion: '12.331'
|
||||
_key: '!actors.items!qscItDC5z6Hr2Lrh.oHnSnCw1RAW5t15S'
|
||||
- _id: vDOAyWc2YnuhNnFF
|
||||
name: Survie en désert
|
||||
name: Survie en Désert
|
||||
type: competence
|
||||
sort: 5400000
|
||||
img: systems/foundryvtt-reve-de-dragon/icons/competence_survie_desert.webp
|
||||
|
||||
@@ -1550,7 +1550,7 @@ items:
|
||||
coreVersion: '12.331'
|
||||
_key: '!actors.items!zACge7QxwyJkC6nD.oHnSnCw1RAW5t15S'
|
||||
- _id: vDOAyWc2YnuhNnFF
|
||||
name: Survie en désert
|
||||
name: Survie en Désert
|
||||
type: competence
|
||||
sort: 5500000
|
||||
img: systems/foundryvtt-reve-de-dragon/icons/competence_survie_desert.webp
|
||||
|
||||
@@ -1551,7 +1551,7 @@ items:
|
||||
coreVersion: '12.331'
|
||||
_key: '!actors.items!esJWonwDGLFaMRK3.oHnSnCw1RAW5t15S'
|
||||
- _id: vDOAyWc2YnuhNnFF
|
||||
name: Survie en désert
|
||||
name: Survie en Désert
|
||||
type: competence
|
||||
sort: 5400000
|
||||
img: systems/foundryvtt-reve-de-dragon/icons/competence_survie_desert.webp
|
||||
|
||||
@@ -1551,7 +1551,7 @@ items:
|
||||
coreVersion: '12.331'
|
||||
_key: '!actors.items!gscYFtwk73WrGvA5.oHnSnCw1RAW5t15S'
|
||||
- _id: vDOAyWc2YnuhNnFF
|
||||
name: Survie en désert
|
||||
name: Survie en Désert
|
||||
type: competence
|
||||
sort: 5400000
|
||||
img: systems/foundryvtt-reve-de-dragon/icons/competence_survie_desert.webp
|
||||
|
||||
@@ -1551,7 +1551,7 @@ items:
|
||||
coreVersion: '12.331'
|
||||
_key: '!actors.items!dW4RMKpz2WaXbW3h.oHnSnCw1RAW5t15S'
|
||||
- _id: vDOAyWc2YnuhNnFF
|
||||
name: Survie en désert
|
||||
name: Survie en Désert
|
||||
type: competence
|
||||
sort: 5400000
|
||||
img: systems/foundryvtt-reve-de-dragon/icons/competence_survie_desert.webp
|
||||
|
||||
@@ -1551,7 +1551,7 @@ items:
|
||||
coreVersion: '12.331'
|
||||
_key: '!actors.items!ncXFs8oaZWG68Tzn.oHnSnCw1RAW5t15S'
|
||||
- _id: vDOAyWc2YnuhNnFF
|
||||
name: Survie en désert
|
||||
name: Survie en Désert
|
||||
type: competence
|
||||
sort: 5400000
|
||||
img: systems/foundryvtt-reve-de-dragon/icons/competence_survie_desert.webp
|
||||
|
||||
@@ -1551,7 +1551,7 @@ items:
|
||||
coreVersion: '12.331'
|
||||
_key: '!actors.items!OKMXH6YpPXUyvqzN.oHnSnCw1RAW5t15S'
|
||||
- _id: vDOAyWc2YnuhNnFF
|
||||
name: Survie en désert
|
||||
name: Survie en Désert
|
||||
type: competence
|
||||
sort: 5400000
|
||||
img: systems/foundryvtt-reve-de-dragon/icons/competence_survie_desert.webp
|
||||
|
||||
@@ -1551,7 +1551,7 @@ items:
|
||||
coreVersion: '12.331'
|
||||
_key: '!actors.items!EzV1Zxuwi7jwa6bj.oHnSnCw1RAW5t15S'
|
||||
- _id: vDOAyWc2YnuhNnFF
|
||||
name: Survie en désert
|
||||
name: Survie en Désert
|
||||
type: competence
|
||||
sort: 5400000
|
||||
img: systems/foundryvtt-reve-de-dragon/icons/competence_survie_desert.webp
|
||||
|
||||
@@ -1551,7 +1551,7 @@ items:
|
||||
coreVersion: '12.331'
|
||||
_key: '!actors.items!YQ6vavAVyZecPvGQ.oHnSnCw1RAW5t15S'
|
||||
- _id: vDOAyWc2YnuhNnFF
|
||||
name: Survie en désert
|
||||
name: Survie en Désert
|
||||
type: competence
|
||||
sort: 5400000
|
||||
img: systems/foundryvtt-reve-de-dragon/icons/competence_survie_desert.webp
|
||||
|
||||
@@ -1551,7 +1551,7 @@ items:
|
||||
coreVersion: '12.331'
|
||||
_key: '!actors.items!b7ThiitioBVXxU7D.oHnSnCw1RAW5t15S'
|
||||
- _id: vDOAyWc2YnuhNnFF
|
||||
name: Survie en désert
|
||||
name: Survie en Désert
|
||||
type: competence
|
||||
sort: 5400000
|
||||
img: systems/foundryvtt-reve-de-dragon/icons/competence_survie_desert.webp
|
||||
|
||||
@@ -1551,7 +1551,7 @@ items:
|
||||
coreVersion: '12.331'
|
||||
_key: '!actors.items!XnBXyRyE2BUVVT1k.oHnSnCw1RAW5t15S'
|
||||
- _id: vDOAyWc2YnuhNnFF
|
||||
name: Survie en désert
|
||||
name: Survie en Désert
|
||||
type: competence
|
||||
sort: 5400000
|
||||
img: systems/foundryvtt-reve-de-dragon/icons/competence_survie_desert.webp
|
||||
|
||||
@@ -1551,7 +1551,7 @@ items:
|
||||
coreVersion: '12.331'
|
||||
_key: '!actors.items!kKI9izKrKftYVnvs.oHnSnCw1RAW5t15S'
|
||||
- _id: vDOAyWc2YnuhNnFF
|
||||
name: Survie en désert
|
||||
name: Survie en Désert
|
||||
type: competence
|
||||
sort: 5400000
|
||||
img: systems/foundryvtt-reve-de-dragon/icons/competence_survie_desert.webp
|
||||
|
||||
@@ -1551,7 +1551,7 @@ items:
|
||||
coreVersion: '12.331'
|
||||
_key: '!actors.items!nzw2q9BHSDN6TIQQ.oHnSnCw1RAW5t15S'
|
||||
- _id: vDOAyWc2YnuhNnFF
|
||||
name: Survie en désert
|
||||
name: Survie en Désert
|
||||
type: competence
|
||||
sort: 5400000
|
||||
img: systems/foundryvtt-reve-de-dragon/icons/competence_survie_desert.webp
|
||||
|
||||
@@ -1551,7 +1551,7 @@ items:
|
||||
coreVersion: '12.331'
|
||||
_key: '!actors.items!Pf4cLn0kandYzviD.oHnSnCw1RAW5t15S'
|
||||
- _id: vDOAyWc2YnuhNnFF
|
||||
name: Survie en désert
|
||||
name: Survie en Désert
|
||||
type: competence
|
||||
sort: 5400000
|
||||
img: systems/foundryvtt-reve-de-dragon/icons/competence_survie_desert.webp
|
||||
|
||||
@@ -668,7 +668,7 @@ results:
|
||||
- _id: ZhPRAyUuEYcG9X5z
|
||||
flags: {}
|
||||
type: pack
|
||||
text: Survie en désert
|
||||
text: Survie en Désert
|
||||
img: systems/foundryvtt-reve-de-dragon/icons/competence_survie_desert.webp
|
||||
weight: 1
|
||||
range:
|
||||
|
||||
@@ -1552,7 +1552,7 @@ items:
|
||||
coreVersion: '12.331'
|
||||
_key: '!actors.items!GJWEoGXy5kSd4sT8.oHnSnCw1RAW5t15S'
|
||||
- _id: vDOAyWc2YnuhNnFF
|
||||
name: Survie en désert
|
||||
name: Survie en Désert
|
||||
type: competence
|
||||
sort: 5400000
|
||||
img: systems/foundryvtt-reve-de-dragon/icons/competence_survie_desert.webp
|
||||
|
||||
@@ -1552,7 +1552,7 @@ items:
|
||||
coreVersion: '12.331'
|
||||
_key: '!actors.items!m63oPEPvCrds4akp.oHnSnCw1RAW5t15S'
|
||||
- _id: vDOAyWc2YnuhNnFF
|
||||
name: Survie en désert
|
||||
name: Survie en Désert
|
||||
type: competence
|
||||
sort: 5400000
|
||||
img: systems/foundryvtt-reve-de-dragon/icons/competence_survie_desert.webp
|
||||
|
||||
@@ -1552,7 +1552,7 @@ items:
|
||||
coreVersion: '12.331'
|
||||
_key: '!actors.items!jtJqqegMrF3fuND3.oHnSnCw1RAW5t15S'
|
||||
- _id: vDOAyWc2YnuhNnFF
|
||||
name: Survie en désert
|
||||
name: Survie en Désert
|
||||
type: competence
|
||||
sort: 5400000
|
||||
img: systems/foundryvtt-reve-de-dragon/icons/competence_survie_desert.webp
|
||||
|
||||
@@ -1552,7 +1552,7 @@ items:
|
||||
coreVersion: '12.331'
|
||||
_key: '!actors.items!8Jeas59CdpnnYabL.oHnSnCw1RAW5t15S'
|
||||
- _id: vDOAyWc2YnuhNnFF
|
||||
name: Survie en désert
|
||||
name: Survie en Désert
|
||||
type: competence
|
||||
sort: 5400000
|
||||
img: systems/foundryvtt-reve-de-dragon/icons/competence_survie_desert.webp
|
||||
|
||||
@@ -1552,7 +1552,7 @@ items:
|
||||
coreVersion: '12.331'
|
||||
_key: '!actors.items!7WgNJwO7p5QNraXA.oHnSnCw1RAW5t15S'
|
||||
- _id: vDOAyWc2YnuhNnFF
|
||||
name: Survie en désert
|
||||
name: Survie en Désert
|
||||
type: competence
|
||||
sort: 5400000
|
||||
img: systems/foundryvtt-reve-de-dragon/icons/competence_survie_desert.webp
|
||||
|
||||
@@ -1551,7 +1551,7 @@ items:
|
||||
coreVersion: '12.331'
|
||||
_key: '!actors.items!N5ybrpVwbpL8aPG0.oHnSnCw1RAW5t15S'
|
||||
- _id: vDOAyWc2YnuhNnFF
|
||||
name: Survie en désert
|
||||
name: Survie en Désert
|
||||
type: competence
|
||||
img: systems/foundryvtt-reve-de-dragon/icons/competence_survie_desert.webp
|
||||
effects: []
|
||||
|
||||
@@ -1551,7 +1551,7 @@ items:
|
||||
coreVersion: '12.331'
|
||||
_key: '!actors.items!X9d5McdSAT1Ivp39.oHnSnCw1RAW5t15S'
|
||||
- _id: vDOAyWc2YnuhNnFF
|
||||
name: Survie en désert
|
||||
name: Survie en Désert
|
||||
type: competence
|
||||
img: systems/foundryvtt-reve-de-dragon/icons/competence_survie_desert.webp
|
||||
effects: []
|
||||
|
||||
@@ -1552,7 +1552,7 @@ items:
|
||||
coreVersion: '12.331'
|
||||
_key: '!actors.items!hvNej1XRliayVZu1.oHnSnCw1RAW5t15S'
|
||||
- _id: vDOAyWc2YnuhNnFF
|
||||
name: Survie en désert
|
||||
name: Survie en Désert
|
||||
type: competence
|
||||
sort: 5400000
|
||||
img: systems/foundryvtt-reve-de-dragon/icons/competence_survie_desert.webp
|
||||
|
||||
@@ -1552,7 +1552,7 @@ items:
|
||||
coreVersion: '12.331'
|
||||
_key: '!actors.items!4bI9HX4oomMEXrOT.oHnSnCw1RAW5t15S'
|
||||
- _id: vDOAyWc2YnuhNnFF
|
||||
name: Survie en désert
|
||||
name: Survie en Désert
|
||||
type: competence
|
||||
sort: 5400000
|
||||
img: systems/foundryvtt-reve-de-dragon/icons/competence_survie_desert.webp
|
||||
|
||||
@@ -1552,7 +1552,7 @@ items:
|
||||
coreVersion: '12.331'
|
||||
_key: '!actors.items!AZBxORb7IYgXaOfb.oHnSnCw1RAW5t15S'
|
||||
- _id: vDOAyWc2YnuhNnFF
|
||||
name: Survie en désert
|
||||
name: Survie en Désert
|
||||
type: competence
|
||||
sort: 5400000
|
||||
img: systems/foundryvtt-reve-de-dragon/icons/competence_survie_desert.webp
|
||||
|
||||
@@ -1552,7 +1552,7 @@ items:
|
||||
coreVersion: '12.331'
|
||||
_key: '!actors.items!OOIjBdFjCKdgJKff.oHnSnCw1RAW5t15S'
|
||||
- _id: vDOAyWc2YnuhNnFF
|
||||
name: Survie en désert
|
||||
name: Survie en Désert
|
||||
type: competence
|
||||
sort: 5400000
|
||||
img: systems/foundryvtt-reve-de-dragon/icons/competence_survie_desert.webp
|
||||
|
||||
@@ -1552,7 +1552,7 @@ items:
|
||||
coreVersion: '12.331'
|
||||
_key: '!actors.items!Jas7Wr22jSllfkin.oHnSnCw1RAW5t15S'
|
||||
- _id: vDOAyWc2YnuhNnFF
|
||||
name: Survie en désert
|
||||
name: Survie en Désert
|
||||
type: competence
|
||||
sort: 5400000
|
||||
img: systems/foundryvtt-reve-de-dragon/icons/competence_survie_desert.webp
|
||||
|
||||
@@ -644,7 +644,8 @@
|
||||
"pointsemp": 0,
|
||||
"empoigneurname": "",
|
||||
"empoignename": "",
|
||||
"ausol": false
|
||||
"ausol": false,
|
||||
"immobilise": false
|
||||
},
|
||||
"possession": {
|
||||
"templates": ["description"],
|
||||
@@ -703,8 +704,7 @@
|
||||
},
|
||||
"remedesconnus": false,
|
||||
"remedes": "",
|
||||
"dommages": "",
|
||||
"active": false
|
||||
"dommages": ""
|
||||
},
|
||||
"arme": {
|
||||
"templates": ["description", "equipement", "inventaire"],
|
||||
|
||||
@@ -72,7 +72,7 @@
|
||||
{{#if options.vueDetaillee}}
|
||||
|
||||
{{#if @root.options.vueArchetype}}
|
||||
<a class="competence-archetype toggle-archetype chat-card-button-pushed" data-tooltip="Retour à la vue détaillée des compétences">
|
||||
<a class="competence-archetype toggle-archetype chat-card-button-checked" data-tooltip="Retour à la vue détaillée des compétences">
|
||||
<i class="fa-solid fa-up-right-from-square"></i>Incarnation
|
||||
</a>
|
||||
{{else}}
|
||||
|
||||
@@ -1,15 +1,18 @@
|
||||
<h4><img class="chat-icon" src="{{competence.img}}" />
|
||||
{{attacker.name}} a empoigné {{defender.name}}
|
||||
</h4>
|
||||
<hr>
|
||||
<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
|
||||
restent empoignés.
|
||||
<br>
|
||||
<a class='empoignade-entrainer-sol chat-card-button'>
|
||||
Entraîner au sol
|
||||
</a>
|
||||
</span>
|
||||
</p>
|
||||
<div class="roll-chat" data-passearme="{{passeArme}}">
|
||||
<div class="chat-img">
|
||||
<img src="{{active.img}}" data-tooltip="{{active.name}}" />
|
||||
<img src="{{competence.img}}" data-tooltip="Empoignade" />
|
||||
</div>
|
||||
<div class="chat-header">
|
||||
<h4>{{attacker.name}} a empoigné {{defender.name}}</h4>
|
||||
</div>
|
||||
|
||||
<div class="chat-resume">
|
||||
{{attacker.name}} vient d'obtenir 2 points d'empoignade contre {{defender.name}}, et
|
||||
peut l'<strong>entraîner au sol</strong>. Les deux protagonistes resteront empoignés.
|
||||
</div>
|
||||
|
||||
<div class="chat-actions">
|
||||
<a class='chat-card-button empoignade-entrainer-sol'>Entraîner au sol</a>
|
||||
</div>
|
||||
</div>
|
||||
@@ -1,31 +1,44 @@
|
||||
<h4><img class="chat-icon" src="{{competence.img}}" />
|
||||
{{attacker.name}} a empoigné {{defender.name}}
|
||||
</h4>
|
||||
<hr>
|
||||
<p>
|
||||
<span class='chat-card-button-area'>
|
||||
{{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>
|
||||
<a class='empoignade-perte-endurance chat-card-button'>
|
||||
<select class='empoignade-perte-endurance'>
|
||||
<option value="none">Faire perdre de l'endurance (selectionnez)</option>
|
||||
<option value="end0">Endurance à 0</option>
|
||||
<option value="end1">Endurance à 1</option>
|
||||
<option value="endmoitie">La moitié de l'endurance</option>
|
||||
<option value="endquart">Le quart de l'endurance</option>
|
||||
</select>
|
||||
</a>
|
||||
{{#if empoignade.system.ausol}}
|
||||
{{else}}
|
||||
</li><li>
|
||||
projeter {{defender.name}} au sol. Les deux protagonistes ne sont plus empoignés.
|
||||
<br>
|
||||
<a class='empoignade-projeter-sol chat-card-button'>
|
||||
Projeter au sol
|
||||
</a>
|
||||
{{/if}}
|
||||
</li></ul>
|
||||
</span>
|
||||
<div class="roll-chat" data-passearme="{{passeArme}}">
|
||||
<div class="chat-img">
|
||||
<img src="{{attacker.img}}" data-tooltip="{{attacker.name}}" />
|
||||
<img src="{{competence.img}}" data-tooltip="Empoignade" />
|
||||
</div>
|
||||
|
||||
<div class="chat-header">
|
||||
<h4>{{attacker.name}} a empoigné {{defender.name}}</h4>
|
||||
</div>
|
||||
|
||||
<div class="chat-resume">
|
||||
{{attacker.name}} a 2 points d'empoignade contre {{defender.name}} à la fin du round,
|
||||
et peut lui faire <strong>perdre des points d'endurance</strong>
|
||||
{{#unless empoignade.system.ausol}}
|
||||
ou le <strong>projeter au sol</strong>. Les deux protagonistes ne sont plus empoignés
|
||||
{{/unless}}.
|
||||
</div>
|
||||
|
||||
<div class="chat-details">
|
||||
</div>
|
||||
|
||||
<div class="chat-actions">
|
||||
<select class='chat-card-select empoignade-perte-endurance'>
|
||||
<option value="none">Choisir la perte d'endurance:</option>
|
||||
<option value="end0">Endurance à 0</option>
|
||||
<option value="end1">Endurance à 1</option>
|
||||
<option value="3/4">¾ de l'endurance</option>
|
||||
<option value="1/2">½ de l'endurance</option>
|
||||
<option value="1/4">¼ de l'endurance</option>
|
||||
<option value="1d4">1d4 d'endurance</option>
|
||||
<option value="1d6">1d6 d'endurance</option>
|
||||
<option value="2d6">2d6 d'endurance</option>
|
||||
<option value="1">1 point d'endurance</option>
|
||||
<option value="2">2 point d'endurance</option>
|
||||
</select>
|
||||
{{!-- <a class='chat-card-button empoignade-perte-endurance'>
|
||||
</a> --}}
|
||||
{{#unless empoignade.system.ausol}}
|
||||
<a class='chat-card-button empoignade-projeter-sol'>
|
||||
Projeter au sol
|
||||
</a>
|
||||
{{/unless}}
|
||||
</div>
|
||||
</p>
|
||||
|
||||
@@ -1,7 +1,13 @@
|
||||
<h4><img class="chat-icon" src="{{competence.img}}" />
|
||||
{{attacker.name}} a fait perdre de l'endurance à {{defender.name}}
|
||||
</h4>
|
||||
<hr>
|
||||
<p>
|
||||
{{defender.name}} reste immobilisé. L'empoignade peut continuer.
|
||||
</p>
|
||||
<div class="roll-chat" >
|
||||
<div class="chat-img">
|
||||
<img src="{{attacker.img}}" data-tooltip="{{attacker.name}}" />
|
||||
</div>
|
||||
|
||||
<div class="chat-header">
|
||||
<h4>{{attacker.name}} a fait perdre {{perteEndurance}} points d'endurance à {{defender.name}}</h4>
|
||||
</div>
|
||||
|
||||
<div class="chat-resume">
|
||||
{{defender.name}} reste immobilisé. L'empoignade peut continuer.
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -6,6 +6,10 @@
|
||||
<label for="system.pointsemp">Points d'Empoignade </label>
|
||||
<input class="attribute-value" type="text" name="system.pointsemp" value="{{system.pointsemp}}" data-dtype="Number"/>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="system.immobilise">Immobilisé </label>
|
||||
<input type="checkbox" name="system.immobilise" {{#if system.immobilise}}checked{{/if}}/>
|
||||
</div>
|
||||
{{>"systems/foundryvtt-reve-de-dragon/templates/partial-item-description.hbs"}}
|
||||
</section>
|
||||
</form>
|
||||
|
||||
@@ -65,7 +65,7 @@
|
||||
{{/select}}
|
||||
</select>
|
||||
{{else}}
|
||||
<label>>{{system.malus}}</label>
|
||||
<label>{{system.malus}}</label>
|
||||
{{/if}}
|
||||
</div>
|
||||
|
||||
|
||||
@@ -12,14 +12,10 @@
|
||||
|
||||
{{!-- Sheet Body --}}
|
||||
<section class="sheet-body">
|
||||
<div class="form-group">
|
||||
<label for="system.active">Actif ? </label>
|
||||
<input class="attribute-value" type="checkbox" name="system.active" {{#if system.active}}checked{{/if}} {{#unless options.isGM}}disabled{{/unless}}/>
|
||||
</div>
|
||||
{{#if (or options.isGM system.identifie)}}
|
||||
<div class="form-group">
|
||||
<label for="system.identifie">Identifiée ? </label>
|
||||
<input class="attribute-value" type="checkbox" name="system.identifie" {{#if system.identifie}}checked{{/if}}/>
|
||||
<input class="attribute-value" type="checkbox" name="system.identifie" {{#if system.identifie}}checked{{/if}}/>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="system.malignite">Malignité </label>
|
||||
@@ -47,7 +43,7 @@
|
||||
</div>
|
||||
{{/if}}
|
||||
{{/if}}
|
||||
{{#if (and options.isGM options.isOwned system.active)}}
|
||||
{{#if (and options.isGM options.isOwned)}}
|
||||
{{>"systems/foundryvtt-reve-de-dragon/templates/item/temporel.hbs" this labeldebut="Contracté" labelfin="Prochain jet"}}
|
||||
{{/if}}
|
||||
|
||||
|
||||
@@ -61,7 +61,6 @@
|
||||
<div class="chat-actions">
|
||||
{{> 'partial-choix-maladresse'}}
|
||||
{{> 'partial-attaque-particuliere'}}
|
||||
{{!-- TODO: maladresses --}}
|
||||
</div>
|
||||
|
||||
<div class="chat-buttons">
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
{{log 'partial-encaissement' this}}
|
||||
{{#if show.encaissement}}
|
||||
{{#if done.encaissement}}
|
||||
<span class='chat-card-info'>
|
||||
|
||||
Reference in New Issue
Block a user