Compare commits
31 Commits
feature/v1
...
feature/v1
| Author | SHA1 | Date | |
|---|---|---|---|
| 36c771518d | |||
| dd7a3700dc | |||
| f0736015a7 | |||
| aae603d798 | |||
| d9bc6309fb | |||
| c14361919c | |||
| b26c39cf21 | |||
| ca2d17bd25 | |||
| a243209c90 | |||
| 90435c07b4 | |||
| 46d09c7bd9 | |||
| 05036877ed | |||
| 98e8c7a10c | |||
| 19cabe816e | |||
| 706aa657b1 | |||
| fd3f988a4f | |||
| 981282d809 | |||
| fcce8b0a4b | |||
| 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 |
1
assets/actions/possession.svg
Normal file
1
assets/actions/possession.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" style="height: 256px; width: 256px;"><polygon points="256,512,0,256,256,0,512,256" fill="#000" fill-opacity="1"></polygon><g class="" transform="translate(8,-12)" style=""><path d="M282.83 18.877c21.567 6.146 36.328 15.205 40.572 28.77a71.007 71.007 0 0 0-4.066 2.363c-25.655 5.807-53.084 18.634-81.047 34.363 20.225-4.69 36.705-4.42 47.544 3.324-5.712 10.3-10.797 22.294-15.123 36.06-21.343 67.922-125.678-80.577-189.065-5.255C41.47 166.24 92.702 212.342 26.5 294.29c35.583-4.14 45.11-9.47 62.416-36.21 10.44-16.13 28.52-22.1 44.668-21.45-12.718 11.206-25.786 30.354-38.21 59.895 19.832-18.528 44.927-38.68 71.603-40.005.912 6.354-2.408 13.74-12.008 21.418C93.21 327.327 15.58 364.185 19.83 476.504c5.558-11.267 11.646-20.31 17.574-28.617 5.98 29.582 28.2 53.8 92.99 40.482-46.928-6.407-76.268-59.586-45.355-82.528 62.716-46.544 128.82 1.436 269.9-75.342a79.832 79.832 0 0 1 7.164-3.46c-2.246 19.6-12.367 39.84-22.362 57.14 14.26-10.38 25.415-20.147 33.928-29.262 2.14 26.14-11.748 54.65-25.393 78.268 43.26-31.49 61.19-57.976 63.207-78.422 9.334 36.678-1.895 95.547-25.03 123.492 77.553-39.433 106.608-77.127 109.76-190.664 1.662-59.824-66.23-60.536-56.435-101.344 11.945-49.756 6.768-84.69-7.565-107.947-19.6-49.73-79.99-59.74-149.385-59.423zM89.8 47.684C54.69 47.534 45.233 83.056 55.724 117c17.146-51.504 70.414-44.24 111.17-34.367-33.282-25.005-58.707-34.87-77.096-34.95zm254.595 30.742c18.643 21.37 29.373 43.02 10.105 65.732-26.562-16.677-26.985-39.252-10.105-65.732zm74.494 48.6c3.655-.013 7.78.35 12.473 1.09-1.706 30.506-14.4 33-46.634 32.154 8.335-22.146 14.416-33.176 34.16-33.245zm-84.677 40.316c9.652.1 20.258 2.84 30.598 8.918 44.65 26.246 21.934 73.314-4.1 74.78-15.174.855 1.443-23.842-16.17-38.476-15.258-12.678-38.596 12.53-45.204-5.78-8.218-22.693 10.21-39.696 34.877-39.442zm60.18 246.168c-24.195 27.825-58.89 60.1-99.444 31.41 16.625 45.643 68.87 70.465 99.443-31.41z" fill="#fff" fill-opacity="1" transform="translate(102.4, 102.4) scale(0.6, 0.6) rotate(0, 256, 256) skewX(0) skewY(0)"></path></g></svg>
|
||||
|
After Width: | Height: | Size: 2.0 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 6.0 KiB After Width: | Height: | Size: 7.2 KiB |
30
changelog.md
30
changelog.md
@@ -1,5 +1,35 @@
|
||||
# 13.0
|
||||
|
||||
## 13.0.21 - La folie d'Illysis
|
||||
|
||||
- Jets d'appréciation et de moral
|
||||
- concerne la danse, musique, chant, jeu, les oeuvres, la nourriture, les services
|
||||
- gestion des compétences d'appréciation pour les oeuvres
|
||||
- pas de jet de moral si la qualité n'est pas suffisante (inférieure au moral,
|
||||
à la compétence, moral déjà gagné pour la même raison)
|
||||
- jet d'appréciation avec en option la compétence et la qualité
|
||||
- jet de moral très heureux (pour Spasme)
|
||||
- les jets de moral sont liés à des "bon moments"
|
||||
- la liste des bons moments passés par un acteur est remise à zéro à Château Dormant
|
||||
- Fenêtre de jet v2
|
||||
- les possessions sont maintenant gérées avec les fenêtres V2
|
||||
- on peut choisir sa voie de draconic pour contrer une possession ou conjurer
|
||||
- La zone de saisie dans les journaux est mieux adaptée
|
||||
- Correction des bonus de caractéristiques des cyans
|
||||
|
||||
|
||||
## 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,17 +70,16 @@
|
||||
.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 */
|
||||
}
|
||||
:root {
|
||||
body {
|
||||
/* =================== 2. DEBUGGING HIGHLIGHTERS ============ */
|
||||
/* =================== 3. some constants ============ */
|
||||
--fieldset-background: url(/ui/parchment.jpg);
|
||||
--rdd-color-text-primary: hsla(0, 0%, 4%, 0.9);
|
||||
--color-text-primary: hsla(0, 0%, 4%, 0.9);
|
||||
--rdd-input-background: hsla(0, 0%, 0%, 0.1);
|
||||
--rdd-color-border-input: hsla(0, 0%, 0%, 0.2);
|
||||
--rdd-bg-input: hsla(0, 0%, 100%, 0.1);
|
||||
@@ -99,7 +97,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);
|
||||
@@ -683,7 +683,7 @@ select,
|
||||
.system-foundryvtt-reve-de-dragon .dialog-content div.roll-chat {
|
||||
font-family: CaslonAntique;
|
||||
display: grid;
|
||||
grid-template-areas: "img header buttons" "img resume buttons" "details details details" "actions actions actions";
|
||||
grid-template-areas: "img header buttons" "img resume buttons" "details details details" "description description description" "actions actions actions";
|
||||
grid-template-columns: 3rem 1fr 1.4rem;
|
||||
grid-template-rows: max-content max-content max-content max-content;
|
||||
gap: 0 0.5rem;
|
||||
@@ -739,6 +739,17 @@ select,
|
||||
.system-foundryvtt-reve-de-dragon .dialog-content div.roll-chat div.chat-actions a img {
|
||||
margin-right: 0.5rem;
|
||||
}
|
||||
.system-foundryvtt-reve-de-dragon .chat-message div.roll-chat div.chat-description,
|
||||
.system-foundryvtt-reve-de-dragon .dialog-content div.roll-chat div.chat-description {
|
||||
grid-area: description;
|
||||
text-align: justify;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
}
|
||||
.system-foundryvtt-reve-de-dragon .chat-message div.roll-chat div.chat-description div,
|
||||
.system-foundryvtt-reve-de-dragon .dialog-content div.roll-chat div.chat-description div {
|
||||
display: block;
|
||||
}
|
||||
.system-foundryvtt-reve-de-dragon .chat-message div.roll-chat div.chat-buttons,
|
||||
.system-foundryvtt-reve-de-dragon .dialog-content div.roll-chat div.chat-buttons {
|
||||
grid-area: buttons;
|
||||
@@ -947,6 +958,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,
|
||||
@@ -1382,12 +1400,22 @@ select,
|
||||
margin-inline: 0.1rem;
|
||||
margin-block: 0.1rem;
|
||||
}
|
||||
.system-foundryvtt-reve-de-dragon .prosemirror menu {
|
||||
background-color: var(--color-background-chat-message);
|
||||
}
|
||||
.system-foundryvtt-reve-de-dragon .app.sheet fieldset :is(label, input) {
|
||||
font-family: CaslonAntique;
|
||||
text-align: justify;
|
||||
font-size: 1rem;
|
||||
letter-spacing: 1px;
|
||||
}
|
||||
.system-foundryvtt-reve-de-dragon .app.sheet input.attribute-value {
|
||||
background-color: rgba(0, 0, 0, 0.05);
|
||||
border: 1px solid var(--color-border-light-tertiary);
|
||||
padding: 1px 3px;
|
||||
height: var(--form-field-height);
|
||||
border-radius: 3px;
|
||||
}
|
||||
.system-foundryvtt-reve-de-dragon .app.sheet div.form-group {
|
||||
clear: both;
|
||||
display: flex;
|
||||
@@ -1396,19 +1424,22 @@ select,
|
||||
margin: 0.1rem 0;
|
||||
align-items: center;
|
||||
}
|
||||
.system-foundryvtt-reve-de-dragon .prosemirror menu {
|
||||
background-color: var(--color-background-chat-message);
|
||||
}
|
||||
.system-foundryvtt-reve-de-dragon .app.sheet .editor.prosemirror {
|
||||
height: fit-content;
|
||||
min-height: 5rem;
|
||||
min-height: 6rem;
|
||||
}
|
||||
.system-foundryvtt-reve-de-dragon .app.sheet .editor.prosemirror .editor-container {
|
||||
min-height: 5rem;
|
||||
height: 8rem;
|
||||
min-height: 6rem;
|
||||
height: calc(100% - 3rem);
|
||||
margin: 0;
|
||||
flex: none;
|
||||
}
|
||||
.system-foundryvtt-reve-de-dragon .app.sheet.journal-entry-page .editor.prosemirror {
|
||||
height: 100%;
|
||||
}
|
||||
.system-foundryvtt-reve-de-dragon .app.sheet.journal-entry-page .editor.prosemirror .editor-container {
|
||||
height: calc(100% - 6rem);
|
||||
}
|
||||
.system-foundryvtt-reve-de-dragon .large-editor {
|
||||
border: 2;
|
||||
height: fit-content;
|
||||
@@ -1418,18 +1449,18 @@ select,
|
||||
.system-foundryvtt-reve-de-dragon .editor {
|
||||
border: 2;
|
||||
height: fit-content;
|
||||
min-height: 5rem;
|
||||
min-height: 6rem;
|
||||
padding: 0 3px;
|
||||
}
|
||||
.system-foundryvtt-reve-de-dragon .medium-editor {
|
||||
border: 2;
|
||||
min-height: 8rem;
|
||||
min-height: 9rem;
|
||||
padding: 0 3px;
|
||||
align-items: top;
|
||||
}
|
||||
.system-foundryvtt-reve-de-dragon .small-editor {
|
||||
border: 2;
|
||||
min-height: 2rem;
|
||||
min-height: 4rem;
|
||||
padding: 0 3px;
|
||||
}
|
||||
.system-foundryvtt-reve-de-dragon .foundryvtt-reve-de-dragon.sheet :is(.large-editor, .editor, .medium-editor, .small-editor) {
|
||||
@@ -1607,28 +1638,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 +2221,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 +2830,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 +2844,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 +2889,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",
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
:root {
|
||||
body {
|
||||
|
||||
/* =================== 2. DEBUGGING HIGHLIGHTERS ============ */
|
||||
// --debug-background-color-red: #ff000054;
|
||||
@@ -13,6 +13,7 @@
|
||||
/* =================== 3. some constants ============ */
|
||||
--fieldset-background: url(/ui/parchment.jpg);
|
||||
--rdd-color-text-primary: hsla(0, 0%, 4%, 0.9);
|
||||
--color-text-primary: hsla(0, 0%, 4%, 0.9);
|
||||
--rdd-input-background:hsla(0, 0%, 0%, 0.1);
|
||||
--rdd-color-border-input: hsla(0, 0%, 0%, 0.2);
|
||||
--rdd-bg-input: hsla(0, 0%, 100%, 0.1);
|
||||
@@ -44,7 +45,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,
|
||||
@@ -681,6 +689,7 @@
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fieldset {
|
||||
border-style: groove;
|
||||
border-width: 0.1rem;
|
||||
@@ -689,36 +698,56 @@
|
||||
margin-inline: 0.1rem;
|
||||
margin-block: 0.1rem;
|
||||
}
|
||||
.app.sheet fieldset :is(label, input) {
|
||||
font-family: CaslonAntique;
|
||||
text-align: justify;
|
||||
font-size: 1rem;
|
||||
letter-spacing: 1px;
|
||||
}
|
||||
|
||||
.app.sheet div.form-group {
|
||||
clear: both;
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
flex-wrap: wrap;
|
||||
margin: 0.1rem 0;
|
||||
align-items: center;
|
||||
}
|
||||
.prosemirror {
|
||||
menu {
|
||||
background-color: var(--color-background-chat-message);
|
||||
}
|
||||
}
|
||||
.app.sheet .editor.prosemirror {
|
||||
height: fit-content;
|
||||
min-height: 5rem;
|
||||
}
|
||||
.app.sheet .editor.prosemirror .editor-container {
|
||||
min-height: 5rem;
|
||||
height: 8rem;
|
||||
margin: 0;
|
||||
flex: none;
|
||||
|
||||
.app.sheet{
|
||||
fieldset :is(label, input) {
|
||||
font-family: CaslonAntique;
|
||||
text-align: justify;
|
||||
font-size: 1rem;
|
||||
letter-spacing: 1px;
|
||||
}
|
||||
|
||||
input.attribute-value {
|
||||
background-color: rgba(0, 0, 0, 0.05);
|
||||
border: 1px solid var(--color-border-light-tertiary);
|
||||
padding: 1px 3px;
|
||||
height: var(--form-field-height);
|
||||
border-radius: 3px;
|
||||
}
|
||||
|
||||
div.form-group {
|
||||
clear: both;
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
flex-wrap: wrap;
|
||||
margin: 0.1rem 0;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.editor.prosemirror {
|
||||
height: fit-content;
|
||||
min-height: 6rem;
|
||||
|
||||
.editor-container {
|
||||
min-height: 6rem;
|
||||
height: calc(100% - 3rem);
|
||||
margin: 0;
|
||||
flex: none;
|
||||
}
|
||||
}
|
||||
}
|
||||
.app.sheet.journal-entry-page .editor.prosemirror{
|
||||
height: 100%;
|
||||
.editor-container {
|
||||
height: calc(100% - 6rem);
|
||||
}
|
||||
}
|
||||
|
||||
.large-editor {
|
||||
border: 2;
|
||||
@@ -730,20 +759,20 @@
|
||||
.editor {
|
||||
border: 2;
|
||||
height: fit-content;
|
||||
min-height: 5rem;
|
||||
min-height: 6rem;
|
||||
padding: 0 3px;
|
||||
}
|
||||
|
||||
.medium-editor {
|
||||
border: 2;
|
||||
min-height: 8rem;
|
||||
min-height: 9rem;
|
||||
padding: 0 3px;
|
||||
align-items: top;
|
||||
}
|
||||
|
||||
.small-editor {
|
||||
border: 2;
|
||||
min-height: 2rem;
|
||||
min-height: 4rem;
|
||||
padding: 0 3px;
|
||||
}
|
||||
|
||||
@@ -934,20 +963,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 +1613,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 +2287,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 +2303,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 +2355,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;
|
||||
}
|
||||
|
||||
@@ -6,7 +6,9 @@
|
||||
"img header buttons"
|
||||
"img resume buttons"
|
||||
"details details details"
|
||||
"actions actions actions";
|
||||
"description description description"
|
||||
"actions actions actions"
|
||||
;
|
||||
grid-template-columns: 3rem 1fr 1.4rem;
|
||||
grid-template-rows: max-content max-content max-content max-content;
|
||||
gap: 0 0.5rem;
|
||||
@@ -53,6 +55,15 @@
|
||||
}
|
||||
}
|
||||
}
|
||||
div.chat-description {
|
||||
grid-area: description;
|
||||
text-align: justify;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
div {
|
||||
display: block;
|
||||
}
|
||||
}
|
||||
|
||||
div.chat-buttons {
|
||||
grid-area: buttons;
|
||||
|
||||
@@ -18,6 +18,7 @@ import { RdDBaseActorSangSheet } from "./actor/base-actor-sang-sheet.js";
|
||||
import { RdDCoeur } from "./coeur/rdd-coeur.js";
|
||||
import { AppPersonnageAleatoire } from "./actor/random/app-personnage-aleatoire.js";
|
||||
import { RdDTextEditor } from "./apps/rdd-text-roll-editor.js";
|
||||
import { MORAL } from "./moral/apprecier.mjs";
|
||||
|
||||
/* -------------------------------------------- */
|
||||
/**
|
||||
@@ -275,9 +276,9 @@ export class RdDActorSheet extends RdDBaseActorSangSheet {
|
||||
this.html.find('.seuil-reve-value').change(async event => await this.actor.setPointsDeSeuil(event.currentTarget.value))
|
||||
|
||||
this.html.find('.stress-test').click(async event => await this.actor.transformerStress())
|
||||
this.html.find('.moral-malheureux').click(async event => await this.actor.jetDeMoral('malheureuse'))
|
||||
this.html.find('.moral-neutre').click(async event => await this.actor.jetDeMoral('neutre'))
|
||||
this.html.find('.moral-heureux').click(async event => await this.actor.jetDeMoral('heureuse'))
|
||||
this.html.find('.moral-malheureux').click(async event => await this.actor.jetDeMoral(MORAL.MALHEUREUX))
|
||||
this.html.find('.moral-neutre').click(async event => await this.actor.jetDeMoral(MORAL.NEUTRE))
|
||||
this.html.find('.moral-heureux').click(async event => await this.actor.jetDeMoral(MORAL.HEUREUX))
|
||||
this.html.find('.button-ethylisme').click(async event => await this.actor.jetEthylisme())
|
||||
|
||||
this.html.find('.ptreve-actuel-plus').click(async event => await this.actor.reveActuelIncDec(1))
|
||||
|
||||
154
module/actor.js
154
module/actor.js
@@ -41,17 +41,19 @@ import { RdDItemCompetence } from "./item-competence.js";
|
||||
import { RdDItemSigneDraconique } from "./item/signedraconique.js";
|
||||
import { RdDRencontre } from "./item/rencontre.js";
|
||||
import { DialogSelect } from "./dialog-select.js";
|
||||
import { PAS_DE_DRACONIC, POSSESSION_SANS_DRACONIC } from "./item/base-items.js";
|
||||
import { CATEGORIES_COMPETENCES, PAS_DE_DRACONIC, POSSESSION_SANS_DRACONIC } from "./item/base-items.js";
|
||||
|
||||
import { RdDRollResult } from "./rdd-roll-result.js";
|
||||
import { RdDInitiative } from "./initiative.mjs";
|
||||
import RollDialog from "./roll/roll-dialog.mjs";
|
||||
import { OptionsAvancees, ROLL_DIALOG_V2, ROLL_DIALOG_V2_TEST } from "./settings/options-avancees.js";
|
||||
import { OptionsAvancees, ROLL_DIALOG_V2 } from "./settings/options-avancees.js";
|
||||
import { ROLL_TYPE_JEU, ROLL_TYPE_MEDITATION, ROLL_TYPE_SORT } from "./roll/roll-constants.mjs";
|
||||
import { PART_TACHE } from "./roll/roll-part-tache.mjs";
|
||||
import { PART_COMP } from "./roll/roll-part-comp.mjs";
|
||||
import { PART_OEUVRE } from "./roll/roll-part-oeuvre.mjs";
|
||||
import { PART_CUISINE } from "./roll/roll-part-cuisine.mjs";
|
||||
import { RdDPossessionV2 } from "./rdd-possession-v2.mjs";
|
||||
import { Apprecier, MORAL, SITUATION_MORAL } from "./moral/apprecier.mjs";
|
||||
|
||||
export const MAINS_DIRECTRICES = ['Droitier', 'Gaucher', 'Ambidextre']
|
||||
|
||||
@@ -130,11 +132,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)
|
||||
@@ -165,12 +162,15 @@ export class RdDActor extends RdDBaseActorSang {
|
||||
|
||||
/* -------------------------------------------- */
|
||||
getDemiReve() { return this.system.reve.tmrpos.coord }
|
||||
getDraconics() { return this.itemTypes[ITEM_TYPES.competence].filter(it => it.system.categorie == 'draconic') }
|
||||
getDraconics() {
|
||||
return this.isHautRevant()
|
||||
? this.itemTypes[ITEM_TYPES.competence].filter(it => it.system.categorie == CATEGORIES_COMPETENCES.draconic.key)
|
||||
: []
|
||||
}
|
||||
getBestDraconic() { return foundry.utils.duplicate([...this.getDraconics(), PAS_DE_DRACONIC].sort(Misc.descending(it => it.system.niveau)).find(it => true)) }
|
||||
getDraconicOuPossession() {
|
||||
return [...this.getDraconics().filter(it => it.system.niveau >= 0), POSSESSION_SANS_DRACONIC]
|
||||
.sort(Misc.descending(it => it.system.niveau))
|
||||
.find(it => true)
|
||||
|
||||
getConjurationNaturelle() {
|
||||
return new RdDItemCompetence(POSSESSION_SANS_DRACONIC)
|
||||
}
|
||||
|
||||
isForceInsuffisante(forceRequise) {
|
||||
@@ -332,10 +332,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);
|
||||
@@ -367,15 +363,15 @@ export class RdDActor extends RdDBaseActorSang {
|
||||
content: ""
|
||||
};
|
||||
|
||||
await this._recuperationSante(message);
|
||||
await this._recupereMoralChateauDormant(message);
|
||||
await this._recupereChance();
|
||||
await this.transformerStress();
|
||||
await this.retourSeuilDeReve(message);
|
||||
await this.setBonusPotionSoin(0);
|
||||
await this.retourSust(message);
|
||||
await this.$perteReveEnchantementsChateauDormants();
|
||||
await this.$suppressionLancementsSort();
|
||||
await this._recuperationSante(message)
|
||||
await this._recupereMoralChateauDormant(message)
|
||||
await this._recupereChance()
|
||||
await this.transformerStress()
|
||||
await this.retourSeuilDeReve(message)
|
||||
await this.setBonusPotionSoin(0)
|
||||
await this.retourSust(message)
|
||||
await this.$perteReveEnchantementsChateauDormants()
|
||||
await this.$suppressionLancementsSort()
|
||||
await RdDCoeur.applyCoeurChateauDormant(this, message);
|
||||
if (message.content != "") {
|
||||
message.content = `A la fin Chateau Dormant, ${message.content}<br>Un nouveau jour se lève`;
|
||||
@@ -419,11 +415,13 @@ export class RdDActor extends RdDBaseActorSang {
|
||||
}
|
||||
|
||||
async _recupereMoralChateauDormant(message) {
|
||||
await this.update({ 'system.compteurs.bonmoments': [] }, { render: false })
|
||||
|
||||
if (!ReglesOptionnelles.isUsing("recuperation-moral")) { return }
|
||||
|
||||
const etatMoral = this.system.sommeil?.moral ?? 'neutre';
|
||||
const jetMoral = await this._jetDeMoral(etatMoral);
|
||||
message.content += ` -- le jet de moral est ${etatMoral}, le moral ` + this._messageAjustementMoral(jetMoral.ajustement);
|
||||
const etatMoral = this.system.sommeil?.moral ?? MORAL.NEUTRE
|
||||
const jetMoral = await this._jetDeMoral(etatMoral)
|
||||
message.content += ` -- le jet de moral est ${etatMoral}, le moral ` + this._messageAjustementMoral(jetMoral.ajustement)
|
||||
}
|
||||
|
||||
_messageAjustementMoral(ajustement) {
|
||||
@@ -697,7 +695,7 @@ export class RdDActor extends RdDBaseActorSang {
|
||||
const rencontre = await game.system.rdd.rencontresTMR.getReveDeDragon(force);
|
||||
let rollData = {
|
||||
actor: this,
|
||||
competence: this.getDraconicOuPossession(),
|
||||
competence: this.getDraconicOuPossession().find(it => true),
|
||||
canClose: false,
|
||||
rencontre: rencontre,
|
||||
tmr: true,
|
||||
@@ -1200,17 +1198,21 @@ export class RdDActor extends RdDBaseActorSang {
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
async jetDeMoral(situation, messageReussi = undefined, messageManque = undefined) {
|
||||
const jetMoral = await this._jetDeMoral(situation);
|
||||
const finMessage = (jetMoral.succes ? messageReussi : messageManque) ?? (jetMoral.ajustement == 0 ? "Vous gardez votre moral" : jetMoral.ajustement > 0 ? "Vous gagnez du moral" : "Vous perdez du moral");
|
||||
async jetDeMoral(situation, bonmoment = "") {
|
||||
if (bonmoment != "" && bonmoment != undefined && this.system.compteurs.bonmoments.includes(bonmoment)) {
|
||||
ui.notifications.info(`${this.name} a déjà gagné du moral après avoir passé un bon moment (${bonmoment}) pendant la journée, pas de gain de moral`)
|
||||
return
|
||||
}
|
||||
const jetMoral = await this._jetDeMoral(situation, bonmoment)
|
||||
const finMessage = (jetMoral.ajustement == 0 ? "Vous gardez votre moral" : jetMoral.ajustement > 0 ? "Vous gagnez du moral" : "Vous perdez du moral");
|
||||
ChatMessage.create({
|
||||
whisper: ChatUtility.getOwners(this),
|
||||
content: `${finMessage} - jet ${jetMoral.succes ? "réussi" : "manqué"} en situation ${situation} (${jetMoral.jet}/${jetMoral.difficulte}).`
|
||||
});
|
||||
return jetMoral.ajustement;
|
||||
content: `${finMessage} - jet ${jetMoral.succes ? "réussi" : "manqué"} en situation ${SITUATION_MORAL[situation] ?? situation} (${jetMoral.jet}/${jetMoral.difficulte}).`
|
||||
})
|
||||
return jetMoral.ajustement
|
||||
}
|
||||
|
||||
async _jetDeMoral(situation) {
|
||||
async _jetDeMoral(situation, bonmoment = "") {
|
||||
const moralActuel = Misc.toInt(this.system.compteurs.moral.value);
|
||||
const jet = await RdDDice.rollTotal("1d20");
|
||||
const difficulte = 10 + moralActuel;
|
||||
@@ -1222,14 +1224,18 @@ export class RdDActor extends RdDBaseActorSang {
|
||||
difficulte: difficulte,
|
||||
succes: succes,
|
||||
ajustement: this._calculAjustementMoral(succes, moralActuel, situation)
|
||||
};
|
||||
await this.moralIncDec(jetMoral.ajustement);
|
||||
}
|
||||
await this.moralIncDec(jetMoral.ajustement, bonmoment);
|
||||
return jetMoral;
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
async moralIncDec(ajustementMoral) {
|
||||
async moralIncDec(ajustementMoral, bonmoment = "") {
|
||||
if (ajustementMoral != 0) {
|
||||
if (ajustementMoral > 0 && bonmoment != "" && bonmoment != undefined) {
|
||||
const bonmoments = [...this.system.compteurs.bonmoments, bonmoment]
|
||||
await this.update({ 'system.compteurs.bonmoments': bonmoments }, { render: false })
|
||||
}
|
||||
const startMoral = parseInt(this.system.compteurs.moral.value)
|
||||
const moralTheorique = startMoral + ajustementMoral
|
||||
if (moralTheorique > 3) { // exaltation
|
||||
@@ -1250,13 +1256,14 @@ export class RdDActor extends RdDBaseActorSang {
|
||||
/* -------------------------------------------- */
|
||||
_calculAjustementMoral(succes, moral, situation) {
|
||||
switch (situation) {
|
||||
case 'heureux': case 'heureuse': return succes ? 1 : 0;
|
||||
case 'malheureuse': case 'malheureux': return succes ? 0 : -1;
|
||||
case 'neutre':
|
||||
if (succes && moral < 0) return 1;
|
||||
if (!succes && moral > 0) return -1;
|
||||
case MORAL.TRESHEUREUX: return succes ? 2 : 1
|
||||
case MORAL.HEUREUX: case 'heureuse': return succes ? 1 : 0
|
||||
case MORAL.MALHEUREUX: case 'malheureuse': return succes ? 0 : -1
|
||||
case MORAL.NEUTRE:
|
||||
if (succes && moral < 0) return 1
|
||||
if (!succes && moral > 0) return -1
|
||||
}
|
||||
return 0;
|
||||
return 0
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
@@ -1315,33 +1322,31 @@ export class RdDActor extends RdDBaseActorSang {
|
||||
}
|
||||
const item = this.getItem(itemId)
|
||||
if (!item.getUtilisationCuisine()) {
|
||||
return;
|
||||
return
|
||||
}
|
||||
if (choix.doses > item.system.quantite) {
|
||||
ui.notifications.warn(`Il n'y a pas assez de ${item.name} pour manger ${choix.doses}`)
|
||||
return;
|
||||
return
|
||||
}
|
||||
if (!this._apprecierCuisine(item, choix.seForcer)) {
|
||||
ui.notifications.info(`${this.name} ne n'arrive pas à manger de ${item.name}`)
|
||||
return;
|
||||
}
|
||||
await this.manger(item, choix.doses, { diminuerQuantite: false });
|
||||
await this.boire(item, choix.doses, { diminuerQuantite: false });
|
||||
await item.diminuerQuantite(choix.doses, choix);
|
||||
}
|
||||
|
||||
async _apprecierCuisine(item, seForcer) {
|
||||
const surmonteExotisme = await this._surmonterExotisme(item, seForcer);
|
||||
if (surmonteExotisme) {
|
||||
await this.apprecier(CARACS.ODORATGOUT, 'cuisine', item.system.qualite, item.system.boisson ? "apprécie la boisson" : "apprécie le plat");
|
||||
const onManger = [
|
||||
async () => await this.manger(item, choix.doses, { diminuerQuantite: false }),
|
||||
async () => await this.boire(item, choix.doses, { diminuerQuantite: false }),
|
||||
async () => await item.diminuerQuantite(choix.doses, choix)
|
||||
]
|
||||
|
||||
if (await this._surmonterExotisme(item)) {
|
||||
const appreciation = item.system.appreciation;
|
||||
new Apprecier(this, appreciation, item.system.qualite)
|
||||
.apprecier(onManger)
|
||||
}
|
||||
else if (seForcer) {
|
||||
await this.jetDeMoral('malheureux');
|
||||
else if (choix.seForcer) {
|
||||
await this.jetDeMoral(MORAL.MALHEUREUX)
|
||||
await Promise.all(onManger.map(async callback => await callback()))
|
||||
}
|
||||
else {
|
||||
return false;
|
||||
ui.notifications.info(`${this.name} ne n'arrive pas à manger de ${item.name}`)
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
@@ -1367,7 +1372,7 @@ export class RdDActor extends RdDBaseActorSang {
|
||||
}
|
||||
const rolled = await this.doRollCaracCompetence(carac, undefined, 0, { title });
|
||||
if (rolled?.isSuccess) {
|
||||
await this.jetDeMoral('heureux');
|
||||
await this.jetDeMoral(MORAL.HEUREUX);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1434,7 +1439,7 @@ export class RdDActor extends RdDBaseActorSang {
|
||||
ethylismeData.perteEndurance = await this.santeIncDec("endurance", -perte);
|
||||
|
||||
if (!ethylisme.jet_moral) {
|
||||
ethylismeData.jetMoral = await this._jetDeMoral('heureuse');
|
||||
ethylismeData.jetMoral = await this._jetDeMoral(MORAL.HEUREUX, "Ethylisme");
|
||||
if (ethylismeData.jetMoral.ajustement == 1) {
|
||||
ethylismeData.moralAlcool = 'heureux';
|
||||
ethylisme.jet_moral = true;
|
||||
@@ -1442,7 +1447,7 @@ export class RdDActor extends RdDBaseActorSang {
|
||||
ethylismeData.jetMoral.ajustement = -1;
|
||||
ethylismeData.moralAlcool = 'triste';
|
||||
ethylisme.jet_moral = true;
|
||||
await this.moralIncDec(-1);
|
||||
await this.moralIncDec(-1, "Ethylisme");
|
||||
}
|
||||
}
|
||||
if (ethylisme.value < 0) {
|
||||
@@ -1735,16 +1740,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);
|
||||
@@ -2573,7 +2578,12 @@ export class RdDActor extends RdDBaseActorSang {
|
||||
|
||||
/* -------------------------------------------- */
|
||||
conjurerPossession(possession) {
|
||||
RdDPossession.onConjurerPossession(this, possession)
|
||||
if (OptionsAvancees.isUsing(ROLL_DIALOG_V2)) {
|
||||
RdDPossessionV2.rollConjurerPossession(this, possession)
|
||||
}
|
||||
else {
|
||||
RdDPossession.onConjurerPossession(this, possession)
|
||||
}
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { renderTemplate, SHOW_DICE, SYSTEM_RDD } from "../constants.js";
|
||||
import { RDD_CONFIG, renderTemplate, SHOW_DICE, SYSTEM_RDD } from "../constants.js";
|
||||
import { Grammar } from "../grammar.js";
|
||||
import { Misc } from "../misc.js";
|
||||
import { RdDResolutionTable } from "../rdd-resolution-table.js";
|
||||
@@ -22,13 +22,16 @@ import { DialogValidationEncaissement } from "../dialog-validation-encaissement.
|
||||
import { RdDCombat } from "../rdd-combat.js";
|
||||
import { RdDEmpoignade } from "../rdd-empoignade.js";
|
||||
import { RdDPossession } from "../rdd-possession.js";
|
||||
import { BASE_CORPS_A_CORPS, BASE_ESQUIVE, POSSESSION_SANS_DRACONIC } from "../item/base-items.js";
|
||||
import { BASE_CORPS_A_CORPS, BASE_ESQUIVE, CATEGORIES_COMPETENCES_CREATURES } from "../item/base-items.js";
|
||||
import { RollDataAjustements } from "../rolldata-ajustements-v1.js";
|
||||
import { MappingCreatureArme } from "../item/mapping-creature-arme.mjs";
|
||||
import RollDialog from "../roll/roll-dialog.mjs";
|
||||
import { ATTAQUE_ROLL_TYPES, DEFAULT_ROLL_TYPES, DIFF, DIFFS, ROLL_TYPE_ATTAQUE, ROLL_TYPE_COMP, ROLL_TYPE_JEU, ROLL_TYPE_MEDITATION, ROLL_TYPE_OEUVRE, ROLL_TYPE_TACHE } from "../roll/roll-constants.mjs";
|
||||
import { ATTAQUE_ROLL_TYPES, DEFAULT_ROLL_TYPES, DIFF, ROLL_TYPE_ATTAQUE} from "../roll/roll-constants.mjs";
|
||||
import { OptionsAvancees, ROLL_DIALOG_V2 } from "../settings/options-avancees.js";
|
||||
import { PART_COMP } from "../roll/roll-part-comp.mjs";
|
||||
import { RdDInitiative } from "../initiative.mjs";
|
||||
import { RdDItemCompetenceCreature } from "../item-competencecreature.js";
|
||||
import { RdDPossessionV2 } from "../rdd-possession-v2.mjs";
|
||||
|
||||
/**
|
||||
* Classe de base pour les acteurs disposant de rêve (donc, pas des objets)
|
||||
@@ -114,11 +117,54 @@ export class RdDBaseActorReve extends RdDBaseActor {
|
||||
return this.system.carac[competence.system.defaut_carac].value;
|
||||
}
|
||||
|
||||
getDraconics() { return [] }
|
||||
getDraconicOuPossession() {
|
||||
return [
|
||||
...this.getDraconics(),
|
||||
...this.itemTypes[ITEM_TYPES.competencecreature].filter(it => it.isCompetencePossession()),
|
||||
this.getConjurationNaturelle()
|
||||
].sort(Misc.descending(it => it.system.niveau));
|
||||
}
|
||||
|
||||
getConjurations() {
|
||||
return this.getDraconicOuPossession()
|
||||
.map(it => this.toActionConjuration(it))
|
||||
}
|
||||
|
||||
getConjurationNaturelle() {
|
||||
return new RdDItemCompetenceCreature({
|
||||
name: 'Sans compétence',
|
||||
type: ITEM_TYPES.competencecreature,
|
||||
img: RDD_CONFIG.icons.possession,
|
||||
system: {
|
||||
carac_value: this.getReveActuel(),
|
||||
niveau: 0,
|
||||
default_diffLibre: 0,
|
||||
categorie: CATEGORIES_COMPETENCES_CREATURES.possession.key,
|
||||
ispossession: true,
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
toActionConjuration(comp) {
|
||||
const caracCode = this.isPersonnage() ? CARACS.REVE_ACTUEL : CARACS.REVE
|
||||
const caracValue = this.getReveActuel()
|
||||
const ajustement = this.getEtatGeneral()
|
||||
return {
|
||||
label: `Conjuration (${comp.name})`,
|
||||
action: 'possession',
|
||||
initOnly: false,
|
||||
comp: comp,
|
||||
carac: { key: caracCode, value: caracValue },
|
||||
initiative: RdDInitiative.getRollInitiative(caracValue, comp.system.niveau, ajustement)
|
||||
}
|
||||
}
|
||||
|
||||
listActions({ isAttaque = false, isEquipe = false }) {
|
||||
return this.itemTypes[ITEM_TYPES.competencecreature]
|
||||
.filter(it => it.isAttaque())
|
||||
.map(it => it.attaqueCreature())
|
||||
.filter(it => it != undefined);
|
||||
.filter(it => it != undefined)
|
||||
}
|
||||
|
||||
async computeArmure(dmg) { return this.getProtectionNaturelle() }
|
||||
@@ -130,13 +176,14 @@ export class RdDBaseActorReve extends RdDBaseActor {
|
||||
async santeIncDec(name, inc, isCritique = false) { }
|
||||
|
||||
async finDeRound(options = { terminer: false }) {
|
||||
await this.$finDeRoundSuppressionEffetsTermines(options);
|
||||
await this.finDeRoundBlessures();
|
||||
await this.$finDeRoundSupprimerObsoletes();
|
||||
await this.$finDeRoundEmpoignade();
|
||||
await this.finDeRoundSuppressionEffetsTermines(options)
|
||||
await this.finDeRoundBlessures()
|
||||
await this.finDeRoundSupprimerObsoletes()
|
||||
await this.finDeRoundEmpoignade()
|
||||
await this.finDeRoundPossession()
|
||||
}
|
||||
|
||||
async $finDeRoundSuppressionEffetsTermines(options) {
|
||||
async finDeRoundSuppressionEffetsTermines(options) {
|
||||
for (let effect of this.getEffects()) {
|
||||
if (effect.duration.type !== 'none' && (effect.duration.remaining <= 0 || options.terminer)) {
|
||||
await effect.delete();
|
||||
@@ -148,20 +195,22 @@ export class RdDBaseActorReve extends RdDBaseActor {
|
||||
async finDeRoundBlessures() {
|
||||
}
|
||||
|
||||
async $finDeRoundSupprimerObsoletes() {
|
||||
async finDeRoundSupprimerObsoletes() {
|
||||
const obsoletes = []
|
||||
.concat(this.itemTypes[ITEM_TYPES.empoignade].filter(it => it.system.pointsemp <= 0))
|
||||
.concat(this.itemTypes[ITEM_TYPES.possession].filter(it => it.system.compteur < -2 || it.system.compteur > 2))
|
||||
.map(it => it.id);
|
||||
.map(it => it.id)
|
||||
await this.deleteEmbeddedDocuments('Item', obsoletes);
|
||||
}
|
||||
|
||||
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
|
||||
))
|
||||
async finDeRoundEmpoignade() {
|
||||
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 finDeRoundPossession(){
|
||||
await Promise.all(this.itemTypes[ITEM_TYPES.possession]
|
||||
.map(async it => await RdDPossessionV2.onPossession(this, it)))
|
||||
}
|
||||
|
||||
async setSonne(sonne = true) { }
|
||||
@@ -200,8 +249,6 @@ export class RdDBaseActorReve extends RdDBaseActor {
|
||||
return false
|
||||
}
|
||||
|
||||
getDraconicOuPossession() { return POSSESSION_SANS_DRACONIC }
|
||||
|
||||
getPossession(possessionId) {
|
||||
return this.itemTypes[ITEM_TYPES.possession].find(it => it.system.possessionid == possessionId);
|
||||
}
|
||||
@@ -557,6 +604,10 @@ export class RdDBaseActorReve extends RdDBaseActor {
|
||||
})
|
||||
}
|
||||
|
||||
rollPossession() {
|
||||
RdDPossessionV2.rollAttaquePossession(this)
|
||||
}
|
||||
|
||||
verifierForceMin(item) { }
|
||||
|
||||
/* -------------------------------------------- */
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -11,6 +11,7 @@ import { RdDUtility } from "../rdd-utility.js";
|
||||
import { SystemCompendiums } from "../settings/system-compendiums.js";
|
||||
import { RdDItem } from "../item.js";
|
||||
import { StatusEffects, STATUSES } from "../settings/status-effects.js";
|
||||
import { Apprecier } from "../moral/apprecier.mjs";
|
||||
|
||||
export class RdDBaseActor extends Actor {
|
||||
|
||||
@@ -220,6 +221,7 @@ export class RdDBaseActor extends Actor {
|
||||
isEntite() { return false }
|
||||
isEntiteIncarnee() { return false }
|
||||
isEntiteNonIncarnee() { return false }
|
||||
isEntiteBlurette() { return false }
|
||||
isHautRevant() { return false }
|
||||
isVehicule() { return false }
|
||||
isPersonnage() { return false }
|
||||
@@ -279,14 +281,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()
|
||||
}
|
||||
@@ -514,10 +518,13 @@ export class RdDBaseActor extends Actor {
|
||||
async acheter(item, quantite, cout, achat) {
|
||||
await this.depenserSols(cout)
|
||||
const createdItemId = await this.creerQuantiteItem(item, quantite)
|
||||
if (achat.choix.consommer && item.type == 'nourritureboisson' && createdItemId != undefined) {
|
||||
if (item.type == ITEM_TYPES.nourritureboisson && achat.choix.consommer && createdItemId != undefined) {
|
||||
achat.choix.doses = achat.choix.nombreLots;
|
||||
await this.consommerNourritureboisson(createdItemId, achat.choix, achat.vente.actingUserId);
|
||||
}
|
||||
if (item.type == ITEM_TYPES.service) {
|
||||
new Apprecier(this, item.system.appreciation, item.system.qualite).apprecier()
|
||||
}
|
||||
}
|
||||
|
||||
verifierFortune(cout) {
|
||||
@@ -846,6 +853,7 @@ export class RdDBaseActor extends Actor {
|
||||
|
||||
listActionsPossessions() {
|
||||
return this.itemTypes[ITEM_TYPES.possession]
|
||||
.filter(it => !it.system.possede)
|
||||
.map(p => {
|
||||
return {
|
||||
label: p.name,
|
||||
@@ -854,9 +862,4 @@ export class RdDBaseActor extends Actor {
|
||||
}
|
||||
})
|
||||
}
|
||||
listActionsCombat() {
|
||||
const possessions = this.listActionsPossessions()
|
||||
return possessions.length > 0 ? possessions : this.listActions({})
|
||||
|
||||
}
|
||||
}
|
||||
@@ -19,8 +19,8 @@ export class RdDEntite extends RdDBaseActorReve {
|
||||
|
||||
isEntite() { return true }
|
||||
isEntiteNonIncarnee() { return this.system.definition.typeentite == ENTITE_NONINCARNE }
|
||||
isEntiteIncarnee() { return [ENTITE_INCARNE, ENTITE_BLURETTE].includes(this.system.definition.typeentite) }
|
||||
isEntiteBlurette() { return this.system.definition.typeentite !== ENTITE_BLURETTE }
|
||||
isEntiteIncarnee() { return !this.isEntiteNonIncarnee() }
|
||||
isEntiteBlurette() { return this.system.definition.typeentite == ENTITE_BLURETTE }
|
||||
|
||||
getReveActuel() {
|
||||
return Misc.toInt(this.system.carac.reve?.value)
|
||||
@@ -41,13 +41,6 @@ export class RdDEntite extends RdDBaseActorReve {
|
||||
getChance() { return this.getReve() }
|
||||
getEnduranceMax() { return Math.max(1, this.getTaille() + this.getReve()) }
|
||||
|
||||
getDraconicOuPossession() {
|
||||
return this.itemTypes[ITEM_TYPES.competencecreature]
|
||||
.filter(it => it.system.categorie == 'possession')
|
||||
.sort(Misc.descending(it => it.system.niveau))
|
||||
.find(it => true);
|
||||
}
|
||||
|
||||
async remiseANeuf() {
|
||||
if (!this.isEntiteNonIncarnee()) {
|
||||
await this.update({
|
||||
@@ -108,6 +101,15 @@ export class RdDEntite extends RdDBaseActorReve {
|
||||
return true
|
||||
}
|
||||
|
||||
listActionsPossessions() {
|
||||
if (this.isEntiteNonIncarnee()) {
|
||||
return this.itemTypes[ITEM_TYPES.competencecreature]
|
||||
.filter(it => it.system.ispossession)
|
||||
.map(it => it.attaqueCreature())
|
||||
.filter(it => it != undefined)
|
||||
}
|
||||
return super.listActionsPossessions()
|
||||
}
|
||||
/* -------------------------------------------- */
|
||||
async setEntiteReveAccordee(actor) {
|
||||
if (this.isEntiteIncarnee()) {
|
||||
|
||||
@@ -76,6 +76,15 @@ export class ChatUtility {
|
||||
ChatUtility.removeMessages({ part: part });
|
||||
}
|
||||
|
||||
static remover(chatMessage) {
|
||||
const messageId = chatMessage.id;
|
||||
if (messageId) {
|
||||
return (..._) => ChatUtility.removeMessages({ messageId: messageId });
|
||||
|
||||
}
|
||||
return (..._) => { }
|
||||
}
|
||||
|
||||
static removeChatMessageId(messageId) {
|
||||
if (messageId) {
|
||||
ChatUtility.removeMessages({ messageId: messageId });
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
import { RdDBaseActor } from "../actor/base-actor.js";
|
||||
import { ChatUtility } from "../chat-utility.js";
|
||||
import { renderTemplate } from "../constants.js";
|
||||
import { MORAL } from "../moral/apprecier.mjs";
|
||||
|
||||
const INFO_COEUR = 'info-coeur';
|
||||
|
||||
@@ -122,7 +123,7 @@ export class RdDCoeur {
|
||||
const diff = Math.abs(infoCoeur.source.jetTendre - infoCoeur.target.jetTendre)
|
||||
for (let amoureux of [infoCoeur.source, infoCoeur.target]) {
|
||||
const actorAmoureux = game.actors.get(amoureux.actor.id);
|
||||
amoureux.situation = diff <= amoureux.coeur ? 'heureux' : 'neutre'
|
||||
amoureux.situation = diff <= amoureux.coeur ? MORAL.HEUREUX : MORAL.NEUTRE
|
||||
amoureux.gainMoral = await actorAmoureux.jetDeMoral(amoureux.situation)
|
||||
}
|
||||
const chatHtml = await renderTemplate(`systems/foundryvtt-reve-de-dragon/templates/coeur/chat-accepter-tendre-moment.hbs`, infoCoeur)
|
||||
|
||||
@@ -61,10 +61,12 @@ export const RDD_CONFIG = {
|
||||
armesDisparates: 'systems/foundryvtt-reve-de-dragon/assets/actions/armes-disparates.svg',
|
||||
demiReve: 'systems/foundryvtt-reve-de-dragon/assets/actions/sort.svg',
|
||||
empoignade: 'systems/foundryvtt-reve-de-dragon/assets/actions/empoignade.svg',
|
||||
possession: 'systems/foundryvtt-reve-de-dragon/assets/actions/possession.svg',
|
||||
forceWeak: 'systems/foundryvtt-reve-de-dragon/assets/actions/weak.svg',
|
||||
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',
|
||||
|
||||
@@ -3,6 +3,7 @@ import { renderTemplate } from "./constants.js"
|
||||
export class DialogSelect extends Dialog {
|
||||
static extractIdNameImg(it) { return { id: it.id, name: it.name, img: it.img } }
|
||||
|
||||
|
||||
static async select(selectionData, onSelectChoice) {
|
||||
const html = await renderTemplate("systems/foundryvtt-reve-de-dragon/templates/dialog-select.hbs", selectionData)
|
||||
|
||||
|
||||
@@ -14,6 +14,8 @@ import { RdDTimestamp } from "./time/rdd-timestamp.js";
|
||||
import { FLEUVE_COORD, TMRUtility } from "./tmr-utility.js";
|
||||
import { RdDTextEditor } from "./apps/rdd-text-roll-editor.js";
|
||||
import { ItemAction } from "./item/item-actions.js";
|
||||
import { SANS_COMPETENCE } from "./item/base-items.js";
|
||||
import { Apprecier } from "./moral/apprecier.mjs";
|
||||
|
||||
/**
|
||||
* Extend the basic ItemSheet for RdD specific items
|
||||
@@ -89,6 +91,7 @@ export class RdDItemSheetV1 extends foundry.appv1.sheets.ItemSheet {
|
||||
|
||||
/* -------------------------------------------- */
|
||||
async getData() {
|
||||
const competences = (await SystemCompendiums.getCompetences(ACTOR_TYPES.personnage))
|
||||
let formData = {
|
||||
title: this.item.name,
|
||||
id: this.item.id,
|
||||
@@ -101,8 +104,9 @@ export class RdDItemSheetV1 extends foundry.appv1.sheets.ItemSheet {
|
||||
descriptionmj: await RdDTextEditor.enrichHTML(this.item.system.descriptionmj, this.item),
|
||||
isComestible: this.item.getUtilisationCuisine(),
|
||||
options: RdDSheetUtility.mergeDocumentRights({}, this.item, this.isEditable),
|
||||
competences: await SystemCompendiums.getCompetences(ACTOR_TYPES.personnage),
|
||||
competences: [SANS_COMPETENCE, ...competences],
|
||||
categories: RdDItem.getCategories(this.item.type),
|
||||
isAppreciable: Apprecier.isAppreciable(this.item)
|
||||
}
|
||||
|
||||
if (this.item.type == ITEM_TYPES.competencecreature) {
|
||||
|
||||
@@ -28,7 +28,7 @@ const typesInventaireMateriel = [
|
||||
]
|
||||
const typesInventaire = {
|
||||
materiel: typesInventaireMateriel,
|
||||
all: ['service'].concat(typesInventaireMateriel),
|
||||
all: [ITEM_TYPES.service].concat(typesInventaireMateriel),
|
||||
}
|
||||
|
||||
const typesObjetsOeuvres = [ITEM_TYPES.oeuvre, ITEM_TYPES.recettecuisine, ITEM_TYPES.musique, ITEM_TYPES.chant, ITEM_TYPES.danse, ITEM_TYPES.jeu]
|
||||
@@ -36,6 +36,10 @@ const typesObjetsDraconiques = [ITEM_TYPES.queue, ITEM_TYPES.ombre, ITEM_TYPES.s
|
||||
const typesObjetsConnaissance = [ITEM_TYPES.meditation, ITEM_TYPES.recettealchimique, ITEM_TYPES.sort]
|
||||
const typesObjetsEffet = [ITEM_TYPES.possession, ITEM_TYPES.poison, ITEM_TYPES.maladie, ITEM_TYPES.blessure]
|
||||
const typesObjetsCompetence = [ITEM_TYPES.competence, ITEM_TYPES.competencecreature]
|
||||
const typesAppreciable = [
|
||||
ITEM_TYPES.oeuvre, ITEM_TYPES.musique, ITEM_TYPES.chant, ITEM_TYPES.danse, ITEM_TYPES.nourritureboisson,
|
||||
ITEM_TYPES.jeu, ITEM_TYPES.service
|
||||
]
|
||||
const typesObjetsTemporels = [ITEM_TYPES.blessure, ITEM_TYPES.poison, ITEM_TYPES.maladie, ITEM_TYPES.queue, ITEM_TYPES.ombre, ITEM_TYPES.souffle, ITEM_TYPES.signedraconique, ITEM_TYPES.rencontre]
|
||||
const typesObjetsEquipable = [ITEM_TYPES.arme, ITEM_TYPES.armure, ITEM_TYPES.objet];
|
||||
const typesEnvironnement = typesInventaireMateriel;
|
||||
@@ -96,14 +100,14 @@ export class RdDItem extends Item {
|
||||
switch (field) {
|
||||
case 'quantite':
|
||||
if (ITEM_TYPES.conteneur == type) {
|
||||
return false;
|
||||
return false
|
||||
}
|
||||
break;
|
||||
case 'cout':
|
||||
if (ITEM_TYPES.monnaie == type) {
|
||||
return game.user.isGM;
|
||||
}
|
||||
break;
|
||||
break
|
||||
}
|
||||
return true;
|
||||
}
|
||||
@@ -180,10 +184,10 @@ export class RdDItem extends Item {
|
||||
|
||||
isCompetencePersonnage() { return this.type == ITEM_TYPES.competence }
|
||||
isCompetenceCreature() { return this.type == ITEM_TYPES.competencecreature }
|
||||
isConteneur() { return this.type == ITEM_TYPES.conteneur; }
|
||||
isMonnaie() { return this.type == ITEM_TYPES.monnaie; }
|
||||
isConteneur() { return this.type == ITEM_TYPES.conteneur }
|
||||
isMonnaie() { return this.type == ITEM_TYPES.monnaie }
|
||||
isNourritureBoisson() { return this.type == ITEM_TYPES.nourritureboisson; }
|
||||
isService() { return this.type == ITEM_TYPES.service; }
|
||||
isService() { return this.type == ITEM_TYPES.service }
|
||||
isAttaque() { return false }
|
||||
isParade() { return false }
|
||||
isBouclier() { return false }
|
||||
@@ -205,7 +209,7 @@ export class RdDItem extends Item {
|
||||
return this.isCompetence() && ['melee', 'tir', 'lancer'].includes(this.system.categorie)
|
||||
}
|
||||
|
||||
isCompetencePossession() { return ITEM_TYPES.competencecreature == this.type && this.system.categorie == "possession" }
|
||||
isCompetencePossession() { return ITEM_TYPES.competencecreature == this.type && this.system.categorie == CATEGORIES_COMPETENCES_CREATURES.possession.key }
|
||||
isTemporel() { return typesObjetsTemporels.includes(this.type) }
|
||||
isOeuvre() { return typesObjetsOeuvres.includes(this.type) }
|
||||
isDraconique() { return RdDItem.getItemTypesDraconiques().includes(this.type) }
|
||||
@@ -214,6 +218,7 @@ export class RdDItem extends Item {
|
||||
isConnaissance() { return typesObjetsConnaissance.includes(this.type) }
|
||||
|
||||
isInventaire(mode = 'materiel') { return RdDItem.getItemTypesInventaire(mode).includes(this.type); }
|
||||
isAppreciable() { return typesAppreciable.includes(this.type) }
|
||||
isBoisson() { return this.isNourritureBoisson() && this.system.boisson; }
|
||||
isAlcool() { return this.isNourritureBoisson() && this.system.boisson && this.system.alcoolise; }
|
||||
isHerbeAPotion() { return this.type == ITEM_TYPES.herbe && (this.system.categorie == 'Soin' || this.system.categorie == 'Repos'); }
|
||||
@@ -364,11 +369,11 @@ export class RdDItem extends Item {
|
||||
getEnc() {
|
||||
switch (this.type) {
|
||||
case ITEM_TYPES.service:
|
||||
return 0;
|
||||
return 0
|
||||
case ITEM_TYPES.herbe:
|
||||
return this.getEncHerbe();
|
||||
return this.getEncHerbe()
|
||||
}
|
||||
return Math.max(this.system.encombrement ?? 0, 0);
|
||||
return Math.max(this.system.encombrement ?? 0.0, 0.0);
|
||||
}
|
||||
|
||||
getEncContenu() {
|
||||
@@ -384,9 +389,9 @@ export class RdDItem extends Item {
|
||||
getEncHerbe() {
|
||||
switch (this.system.categorie) {
|
||||
case 'Repos': case 'Soin': case 'Alchimie':
|
||||
return encBrin;
|
||||
return encBrin
|
||||
}
|
||||
return this.system.encombrement;
|
||||
return this.system.encombrement
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -278,6 +278,10 @@ export class RdDItemArme extends RdDItem {
|
||||
return this.system.mortalite == RDD_CONFIG.encaissement.empoignade
|
||||
}
|
||||
|
||||
isPossession() {
|
||||
return this.system.mortalite == RDD_CONFIG.encaissement.possession
|
||||
}
|
||||
|
||||
isUtilisableEmpoigne() {
|
||||
return this.system.baseInit == 3 || this.system.baseInit == 4 || this.system.competence == "Dague"
|
||||
}
|
||||
|
||||
@@ -1,22 +1,5 @@
|
||||
export const POSSESSION_SANS_DRACONIC = { name: 'Sans draconic', type: 'competence', system: { niveau: 0, defaut_carac: "reve-actuel", }, img: 'systems/foundryvtt-reve-de-dragon/icons/entites/possession.webp' }
|
||||
export const PAS_DE_DRACONIC = { name: 'Pas de draconic', type: 'competence', system: { niveau: -11, defaut_carac: "reve" }, img: 'systems/foundryvtt-reve-de-dragon/icons/entites/possession.webp' }
|
||||
export const BASE_CORPS_A_CORPS = { name: 'Corps à Corps', type: 'competence', system: { niveau: -6, defaut_carac: "melee" }, img: 'systems/foundryvtt-reve-de-dragon/icons/competence_corps_a_corps.webp' }
|
||||
export const BASE_ESQUIVE = { name: 'Esquive', type: 'competence', system: { niveau: -6, defaut_carac: "derobee" }, img: 'systems/foundryvtt-reve-de-dragon/icons/competence_esquive.webp' }
|
||||
|
||||
export const SANS_COMPETENCE = {
|
||||
name: "Sans compétence",
|
||||
type: 'competence',
|
||||
system: {
|
||||
niveau: 0,
|
||||
default_diffLibre: 0,
|
||||
base: 0,
|
||||
categorie: "Aucune",
|
||||
description: "",
|
||||
descriptionmj: "",
|
||||
defaut_carac: "",
|
||||
},
|
||||
img: "systems/foundryvtt-reve-de-dragon/icons/templates/icone_parchement_vierge.webp"
|
||||
}
|
||||
import { ITEM_TYPES, RDD_CONFIG } from "../constants.js"
|
||||
import { CARACS } from "../rdd-carac.js"
|
||||
|
||||
export const CATEGORIES_COMPETENCES = {
|
||||
generale: { key: 'generale', base: -4, label: "Générales" },
|
||||
@@ -39,3 +22,25 @@ export const CATEGORIES_COMPETENCES_CREATURES = {
|
||||
lancer: { key: 'lancer', base: 0, label: "Lancer" },
|
||||
possession: { key: 'possession', base: 0, label: "Possession" },
|
||||
}
|
||||
|
||||
export const POSSESSION_SANS_DRACONIC = {
|
||||
name: 'Sans draconic',
|
||||
type: ITEM_TYPES.competence,
|
||||
img: RDD_CONFIG.icons.possession,
|
||||
system: { niveau: 0, defaut_carac: CARACS.REVE_ACTUEL, categorie: CATEGORIES_COMPETENCES.draconic.key }
|
||||
}
|
||||
|
||||
export const PAS_DE_DRACONIC = { name: 'Pas de draconic', type: 'competence', system: { niveau: -11, defaut_carac: "reve" }, img: 'systems/foundryvtt-reve-de-dragon/icons/entites/possession.webp' }
|
||||
export const BASE_CORPS_A_CORPS = { name: 'Corps à Corps', type: 'competence', system: { niveau: -6, defaut_carac: "melee" }, img: 'systems/foundryvtt-reve-de-dragon/icons/competence_corps_a_corps.webp' }
|
||||
export const BASE_ESQUIVE = { name: 'Esquive', type: 'competence', system: { niveau: -6, defaut_carac: "derobee" }, img: 'systems/foundryvtt-reve-de-dragon/icons/competence_esquive.webp' }
|
||||
|
||||
export const SANS_COMPETENCE = {
|
||||
name: "Sans compétence",
|
||||
type: ITEM_TYPES.competence,
|
||||
img: "systems/foundryvtt-reve-de-dragon/icons/templates/icone_parchement_vierge.webp",
|
||||
system: {
|
||||
niveau: 0,
|
||||
default_diffLibre: 0,
|
||||
categorie: CATEGORIES_COMPETENCES.generale.key,
|
||||
}
|
||||
}
|
||||
|
||||
@@ -76,7 +76,7 @@ export class RdDItemRace extends RdDItem {
|
||||
ui.notifications.warn("La Taille est inférieur au minimum racial")
|
||||
return min
|
||||
}
|
||||
const raceMax = this.system.carac.taille.max;
|
||||
const raceMax = this.system.carac.taille.max == undefined ? 15 + this.system.carac.taille.value : this.system.carac.taille.max
|
||||
const max = raceMax < 0 ? taille + 1 : raceMax
|
||||
if (max < taille) {
|
||||
ui.notifications.warn("La Taille est supérieure au maximum racial")
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -8,6 +8,7 @@ import { RdDTimestamp } from "./time/rdd-timestamp.js";
|
||||
import { RdDRaretes } from "./item/raretes.js";
|
||||
import { VOIES_DRACONIC } from "./item-sort.js";
|
||||
import { SystemCompendiums } from "./settings/system-compendiums.js";
|
||||
import { APPRECIATION } from "./moral/apprecier.mjs";
|
||||
|
||||
class Migration {
|
||||
get code() { return "sample"; }
|
||||
@@ -33,7 +34,6 @@ class Migration {
|
||||
await Item.updateDocuments(itemUpdates);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
class _1_5_34_migrationPngWebp {
|
||||
@@ -662,6 +662,37 @@ class _13_0_7_FixNiveauOeuvres extends Migration {
|
||||
}
|
||||
}
|
||||
|
||||
class _13_0_21_AjoutAppreciation extends Migration {
|
||||
get code() { return "ajout-appreciation" }
|
||||
get version() { return "13.0.21" }
|
||||
|
||||
async migrate() {
|
||||
await this.applyItemsUpdates(items => items
|
||||
.filter(it => it.isAppreciable())
|
||||
.filter(it => this.getBaseAppreciation(it))
|
||||
.map(it => {
|
||||
return { _id: it.id, 'system.appreciation': this.getBaseAppreciation(it) }
|
||||
})
|
||||
)
|
||||
}
|
||||
|
||||
getBaseAppreciation(item) {
|
||||
switch (item.type) {
|
||||
case ITEM_TYPES.nourritureboisson: return APPRECIATION.CUISINE
|
||||
case ITEM_TYPES.service: return APPRECIATION.SERVICE
|
||||
case ITEM_TYPES.musique: return APPRECIATION.MUSIQUE
|
||||
case ITEM_TYPES.chant: return APPRECIATION.CHANT
|
||||
case ITEM_TYPES.danse: return APPRECIATION.DANSE
|
||||
case ITEM_TYPES.oeuvre: {
|
||||
const appreciation = foundry.utils.duplicate(APPRECIATION.OEUVRE)
|
||||
appreciation.competence = item.system.competence
|
||||
return appreciation
|
||||
}
|
||||
}
|
||||
return undefined
|
||||
}
|
||||
}
|
||||
|
||||
export class Migrations {
|
||||
static getMigrations() {
|
||||
return [
|
||||
@@ -687,6 +718,7 @@ export class Migrations {
|
||||
new _12_0_38_TachesEcriture(),
|
||||
new _13_0_4_FixReveActuel(),
|
||||
new _13_0_7_FixNiveauOeuvres(),
|
||||
new _13_0_21_AjoutAppreciation(),
|
||||
];
|
||||
}
|
||||
|
||||
@@ -707,7 +739,10 @@ export class Migrations {
|
||||
}
|
||||
if (foundry.utils.isNewerVersion(game.system.version, currentVersion)) {
|
||||
// if (true) { /* comment previous and uncomment here to test before upgrade */
|
||||
const migrations = Migrations.getMigrations().filter(m => foundry.utils.isNewerVersion(m.version, currentVersion));
|
||||
const migrations = Migrations.getMigrations().filter(m => foundry.utils.isNewerVersion(m.version, currentVersion)
|
||||
/* uncomment and set the version to migrate to to force a migration */
|
||||
// ||m.version == "13.0.21"
|
||||
)
|
||||
if (migrations.length > 0) {
|
||||
migrations.sort((a, b) => this.compareVersions(a, b));
|
||||
migrations.forEach(async (m) => {
|
||||
|
||||
177
module/moral/apprecier.mjs
Normal file
177
module/moral/apprecier.mjs
Normal file
@@ -0,0 +1,177 @@
|
||||
import { ITEM_TYPES } from "../constants.js"
|
||||
import { SANS_COMPETENCE } from "../item/base-items.js"
|
||||
import { Misc } from "../misc.js"
|
||||
import { CARACS } from "../rdd-carac.js"
|
||||
import { RdDUtility } from "../rdd-utility.js"
|
||||
import { DIFF } from "../roll/roll-constants.mjs"
|
||||
import RollDialog from "../roll/roll-dialog.mjs"
|
||||
import { PART_COMP } from "../roll/roll-part-comp.mjs"
|
||||
|
||||
export const MORAL = {
|
||||
MALHEUREUX: "malheureux",
|
||||
NEUTRE: "neutre",
|
||||
HEUREUX: "heureux",
|
||||
TRESHEUREUX: "très heureux"
|
||||
}
|
||||
export const SITUATION_MORAL = {
|
||||
[MORAL.MALHEUREUX]: "malheureuse",
|
||||
[MORAL.NEUTRE]: "neutre",
|
||||
[MORAL.HEUREUX]: "heureuse",
|
||||
[MORAL.TRESHEUREUX]: "très heureuse",
|
||||
}
|
||||
export const APPRECIATION = {
|
||||
CUISINE: {
|
||||
bonmoment: "Cuisine", carac: CARACS.ODORATGOUT, competence: "Cuisine",
|
||||
moral: MORAL.HEUREUX, jetComp: false, jetQualite: false, compMinimum: true
|
||||
},
|
||||
MUSIQUE: {
|
||||
bonmoment: "Musique", carac: CARACS.OUIE, competence: "Musique",
|
||||
moral: MORAL.HEUREUX, jetComp: false, jetQualite: false, compMinimum: true
|
||||
},
|
||||
CHANT: {
|
||||
bonmoment: "Musique", carac: CARACS.OUIE, competence: "Chant",
|
||||
moral: MORAL.HEUREUX, jetComp: false, jetQualite: false, compMinimum: true
|
||||
},
|
||||
DANSE: {
|
||||
bonmoment: "Spectacle", carac: CARACS.EMPATHIE, competence: "Danse",
|
||||
moral: MORAL.HEUREUX, jetComp: false, jetQualite: false, compMinimum: true
|
||||
},
|
||||
JEU: {
|
||||
bonmoment: "Jeu", carac: CARACS.EMPATHIE, competence: "Jeu",
|
||||
moral: MORAL.HEUREUX, jetComp: false, jetQualite: false, compMinimum: true
|
||||
},
|
||||
OEUVRE: {
|
||||
bonmoment: "Spectacle", carac: CARACS.EMPATHIE, competence: "",
|
||||
moral: MORAL.HEUREUX, jetComp: false, jetQualite: false, compMinimum: true
|
||||
},
|
||||
SERVICE: {
|
||||
bonmoment: "Confort", carac: CARACS.EMPATHIE, competence: "",
|
||||
moral: MORAL.HEUREUX, jetComp: false, jetQualite: false, compMinimum: false
|
||||
},
|
||||
}
|
||||
|
||||
|
||||
export class Apprecier {
|
||||
|
||||
static isAppreciable(item) {
|
||||
switch (item.type) {
|
||||
case ITEM_TYPES.nourritureboisson:
|
||||
case ITEM_TYPES.service:
|
||||
return item.system.qualite > 0
|
||||
case ITEM_TYPES.chant:
|
||||
case ITEM_TYPES.musique:
|
||||
case ITEM_TYPES.danse:
|
||||
case ITEM_TYPES.oeuvre:
|
||||
case ITEM_TYPES.jeu:
|
||||
return true
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
static qualite(qualite, roll = undefined, comp = undefined) {
|
||||
if (roll && comp) {
|
||||
return roll.rolled.isSuccess ? qualite : Math.min(qualite, comp.system.niveau)
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
static getAppreciation(qualite, appreciable, roll = undefined, comp = undefined) {
|
||||
return {
|
||||
qualite: (roll?.rolled.ptQualite ?? 0) + Apprecier.qualite(qualite, roll, comp),
|
||||
appreciation: foundry.utils.duplicate(appreciable.system.appreciation),
|
||||
messages: []
|
||||
}
|
||||
}
|
||||
|
||||
static onClickApprecier(roll) {
|
||||
const appreciation = roll.result.appreciation
|
||||
if (appreciation.moral == "") {
|
||||
return
|
||||
}
|
||||
RdDUtility.doWithSelectedActor(
|
||||
actor => new Apprecier(actor, appreciation, roll.result.qualite).apprecier(),
|
||||
actor => actor.isPersonnage())
|
||||
}
|
||||
|
||||
constructor(actor, appreciation, qualite) {
|
||||
this.actor = actor
|
||||
this.appreciation = foundry.utils.duplicate(appreciation)
|
||||
this.appreciation.situation = SITUATION_MORAL[appreciation.moral]
|
||||
this.qualite = qualite
|
||||
this.raisons = []
|
||||
}
|
||||
|
||||
apprecier(callbacks = []) {
|
||||
if (this.qualite <= 0) {
|
||||
this.raisons.push(`la qualité ${this.qualite} est négative.`)
|
||||
}
|
||||
if (this.qualite <= this.actor.getMoralTotal()) {
|
||||
this.raisons.push(`la qualité de ${this.qualite} est inférieure au moral de ${this.actor.getMoralTotal()}.`)
|
||||
}
|
||||
const competence = this.getCompetenceAppreciation()
|
||||
if (this.appreciation.compMinimum && this.qualite <= competence.system.niveau && competence.system.niveau > 0 && competence.id) {
|
||||
this.raisons.push(`la qualité ${this.qualite} est insuffisante pour le niveau ${competence.system.niveau} en ${competence.name}`)
|
||||
}
|
||||
const bonmoment = this.appreciation.bonmoment
|
||||
if (!["", undefined].includes(bonmoment) && this.actor.system.compteurs.bonmoments.includes(bonmoment)) {
|
||||
this.raisons.push(`du moral a déjà été gagné pour cause de ${bonmoment}`)
|
||||
}
|
||||
|
||||
if (this.appreciation.carac != "") {
|
||||
this.rollAppreciation(callbacks)
|
||||
}
|
||||
else {
|
||||
this.rollMoral()
|
||||
}
|
||||
}
|
||||
|
||||
getCompetenceAppreciation() {
|
||||
return [SANS_COMPETENCE.name, ""].includes(this.appreciation.competence) ? SANS_COMPETENCE : this.actor.getCompetence(this.appreciation.competence)
|
||||
}
|
||||
|
||||
rollAppreciation(rollCallbacks = []) {
|
||||
const competence = (this.appreciation.jetComp && this.appreciation.competence) ? this.appreciation.competence : ""
|
||||
const rollData = {
|
||||
ids: { actorId: this.actor.id },
|
||||
type: { allowed: [PART_COMP], current: PART_COMP, appreciation: true },
|
||||
selected: {
|
||||
carac: { key: this.appreciation.carac, forced: true },
|
||||
comp: { key: competence, forced: true },
|
||||
diff: { type: DIFF.IMPOSEE },
|
||||
apprecier: {
|
||||
appreciation: this.appreciation,
|
||||
qualite: this.qualite,
|
||||
raisons: this.raisons
|
||||
}
|
||||
}
|
||||
}
|
||||
RollDialog.create(rollData, {
|
||||
callbacks: [
|
||||
async r => await this.onRollAppreciation(r),
|
||||
...rollCallbacks
|
||||
]
|
||||
})
|
||||
}
|
||||
|
||||
async onRollAppreciation(roll) {
|
||||
if (roll.rolled.isSuccess) {
|
||||
await this.rollMoral()
|
||||
}
|
||||
else {
|
||||
if (this.appreciation.moral == MORAL.TRESHEUREUX) {
|
||||
await this.rollMoral(MORAL.HEUREUX)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
async rollMoral(moral = undefined) {
|
||||
if (this.raisons.length > 0) {
|
||||
ui.notifications.info('Pas de jet de moral:' + Misc.concat(this.raisons.map(r => `<br> - ${r}`)))
|
||||
return
|
||||
}
|
||||
|
||||
moral = moral ?? this.appreciation.moral
|
||||
// TODO: jet de moral
|
||||
await this.actor.jetDeMoral(moral, this.appreciation.bonmoment)
|
||||
}
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
@@ -369,8 +369,7 @@ export class RdDCombat {
|
||||
}
|
||||
|
||||
static rddCombatForAttackV2(attackerRoll) {
|
||||
const defenderRoll = RollBasicParts.prepareDefense(attackerRoll)
|
||||
return RdDCombat.rddCombatForDefenseV2(defenderRoll)
|
||||
return RdDCombat.rddCombatForDefenseV2(RollBasicParts.prepareDefense(attackerRoll))
|
||||
}
|
||||
|
||||
static rddCombatForDefenseV2(defenderRoll) {
|
||||
@@ -755,7 +754,7 @@ export class RdDCombat {
|
||||
}
|
||||
|
||||
async _chatMessageDefenseV2(paramDemandeDefense) {
|
||||
const attackerRoll = paramDemandeDefense.attackerRoll;
|
||||
const attackerRoll = paramDemandeDefense.attackerRoll
|
||||
RollBasicParts.loadSurprises(attackerRoll)
|
||||
attackerRoll.dmg = RdDBonus.dmgRollV2(attackerRoll, attackerRoll.current.attaque)
|
||||
|
||||
@@ -1086,7 +1085,6 @@ export class RdDCombat {
|
||||
|
||||
async defenseV2(attackerRoll, callbacks = []) {
|
||||
// this._prepareParade(attackerRoll, arme, competence);
|
||||
RollDialog.loadRollData(attackerRoll)
|
||||
await this.doRollDefense({
|
||||
ids: {
|
||||
actorId: this.defender.id,
|
||||
|
||||
@@ -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 => {
|
||||
@@ -80,20 +89,20 @@ export class RdDEmpoignade {
|
||||
const chatMessage = ChatUtility.getChatMessage(event);
|
||||
const rollData = RdDEmpoignade.$readRollEmpoignade(chatMessage);
|
||||
RdDEmpoignade.entrainerAuSol(rollData)
|
||||
ChatUtility.removeChatMessageId(chatMessage.id)
|
||||
ChatUtility.remover(chatMessage)()
|
||||
});
|
||||
$(html).on("click", '.empoignade-projeter-sol', event => {
|
||||
const chatMessage = ChatUtility.getChatMessage(event);
|
||||
const rollData = RdDEmpoignade.$readRollEmpoignade(chatMessage);
|
||||
RdDEmpoignade.projeterAuSol(rollData)
|
||||
ChatUtility.removeChatMessageId(chatMessage.id)
|
||||
ChatUtility.remover(chatMessage)()
|
||||
});
|
||||
$(html).on("change", '.empoignade-perte-endurance', event => {
|
||||
const chatMessage = ChatUtility.getChatMessage(event);
|
||||
const rollData = RdDEmpoignade.$readRollEmpoignade(chatMessage);
|
||||
if (event.currentTarget.value && event.currentTarget.value != "none") {
|
||||
RdDEmpoignade.perteEndurance(rollData, event.currentTarget.value)
|
||||
ChatUtility.removeChatMessageId(chatMessage.id)
|
||||
ChatUtility.remover(chatMessage)()
|
||||
}
|
||||
});
|
||||
}
|
||||
@@ -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])
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
261
module/rdd-possession-v2.mjs
Normal file
261
module/rdd-possession-v2.mjs
Normal file
@@ -0,0 +1,261 @@
|
||||
import { ITEM_TYPES, RDD_CONFIG } from "./constants.js";
|
||||
import { RollBasicParts } from "./roll/roll-basic-parts.mjs";
|
||||
import { ChatUtility } from "./chat-utility.js";
|
||||
import RollDialog from "./roll/roll-dialog.mjs";
|
||||
import { Targets } from "./targets.js";
|
||||
import { RdDUtility } from "./rdd-utility.js";
|
||||
import { ROLL_TYPE_POSSESSION } from "./roll/roll-constants.mjs";
|
||||
import { TokenActor } from "./technical/actor-token.mjs";
|
||||
|
||||
export const ACTIONS_POSSESSION = {
|
||||
ATTAQUE: 'attaque',
|
||||
POSSEDER: 'posseder',
|
||||
CONJURER: 'conjurer',
|
||||
DEFENSE: 'defense',
|
||||
DEFENSE_POSSESSION: 'defense-possession',
|
||||
DEFENSE_CONJURATION: 'defense-conjuration'
|
||||
}
|
||||
|
||||
export class RdDPossessionV2 {
|
||||
|
||||
static init() {
|
||||
}
|
||||
|
||||
static $isInverse(entite, victime) {
|
||||
return !entite.actor.isEntiteNonIncarnee() && victime.actor.isEntiteNonIncarnee()
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
static findPossession(entite, victime) {
|
||||
if (RdDPossessionV2.$isInverse(entite, victime)) {
|
||||
return RdDPossessionV2.findPossession(victime, entite)
|
||||
}
|
||||
return victime.actor.itemTypes[ITEM_TYPES.possession].find(it => it.system.entiteid == entite.id)
|
||||
}
|
||||
|
||||
static async createPossessionIfMissing(entite, victime) {
|
||||
if (RdDPossessionV2.$isInverse(entite, victime)) {
|
||||
return await RdDPossessionV2.createPossessionIfMissing(victime, entite)
|
||||
}
|
||||
const existing = RdDPossessionV2.findPossession(entite, victime)
|
||||
if (!existing) {
|
||||
await victime.actor.createEmbeddedDocuments('Item', [{
|
||||
name: `Possession de ${entite.name}`,
|
||||
type: ITEM_TYPES.possession,
|
||||
img: RDD_CONFIG.icons.possession,
|
||||
system: {
|
||||
entiteid: entite.actor.id,
|
||||
entitetokenid: entite.token.id,
|
||||
victimeid: victime.actor.id,
|
||||
victimetokenid: victime.token.id,
|
||||
compteur: 0
|
||||
}
|
||||
}])
|
||||
}
|
||||
}
|
||||
|
||||
static getTypePossession(active, opponent) {
|
||||
const itemPossession = RdDPossessionV2.findPossession(active, opponent)
|
||||
const isEntite = active.actor.isEntiteNonIncarnee() && !opponent.actor.isEntiteNonIncarnee()
|
||||
const compteur = itemPossession?.system.compteur ?? 0
|
||||
|
||||
return {
|
||||
isEntite: isEntite,
|
||||
isPersonnage: active.actor.isPersonnage(),
|
||||
isCompteurPossession: Math.sign(compteur) >= 0,
|
||||
compteur: Math.abs(compteur)
|
||||
}
|
||||
}
|
||||
|
||||
static getTypePossessionAction(active, opponent, action) {
|
||||
const possession = RdDPossessionV2.getTypePossession(active, opponent)
|
||||
possession.isAttaque = RdDPossessionV2.isAttaque(action)
|
||||
possession.action = RdDPossessionV2.$getAction(possession.isAttaque, possession.isEntite)
|
||||
return possession
|
||||
}
|
||||
|
||||
static $getAction(isAttaque, isEntite) {
|
||||
if (isAttaque) {
|
||||
return isEntite ? ACTIONS_POSSESSION.POSSEDER : ACTIONS_POSSESSION.CONJURER
|
||||
}
|
||||
return isEntite ? ACTIONS_POSSESSION.DEFENSE_CONJURATION : ACTIONS_POSSESSION.DEFENSE_POSSESSION
|
||||
}
|
||||
|
||||
static actionTitle(action) {
|
||||
switch (action) {
|
||||
case ACTIONS_POSSESSION.POSSEDER: return "tente de posséder"
|
||||
case ACTIONS_POSSESSION.CONJURER: return "tente de conjurer"
|
||||
case ACTIONS_POSSESSION.DEFENSE_POSSESSION: return "résiste à la possession de"
|
||||
case ACTIONS_POSSESSION.DEFENSE_CONJURATION: return "résiste à la conjuration de"
|
||||
case ACTIONS_POSSESSION.DEFENSE: return "résiste à "
|
||||
}
|
||||
return "lutte contre"
|
||||
}
|
||||
|
||||
static isDefense(action) {
|
||||
return [ACTIONS_POSSESSION.DEFENSE, ACTIONS_POSSESSION.DEFENSE_POSSESSION, ACTIONS_POSSESSION.DEFENSE_CONJURATION].includes(action)
|
||||
}
|
||||
static isAttaque(action) {
|
||||
return [ACTIONS_POSSESSION.ATTAQUE, ACTIONS_POSSESSION.POSSEDER, ACTIONS_POSSESSION.CONJURER].includes(action)
|
||||
}
|
||||
|
||||
static async rollAttaquePossession(actor) {
|
||||
const selectedToken = RdDUtility.getSelectedToken(actor)
|
||||
Targets.selectOneTargetToken(async target => {
|
||||
RollDialog.create(
|
||||
{
|
||||
ids: {
|
||||
actorId: actor.id,
|
||||
actorTokenId: selectedToken.id,
|
||||
opponentId: target.actor.id,
|
||||
opponentTokenId: target.id
|
||||
},
|
||||
passeArme: foundry.utils.randomID(16),
|
||||
type: { allowed: [ROLL_TYPE_POSSESSION], current: ROLL_TYPE_POSSESSION, possession: { action: ACTIONS_POSSESSION.ATTAQUE } },
|
||||
},
|
||||
{
|
||||
onRollDone: RollDialog.onRollDoneClose,
|
||||
callbacks: [
|
||||
async (roll) => await RdDPossessionV2.createPossessionIfMissing(roll.active, roll.opponent),
|
||||
async (roll) => RdDPossessionV2.$setParticuliereFinesse(roll),
|
||||
async (roll) => await RdDPossessionV2.chatMessageDefensePossession(roll)
|
||||
]
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
static async rollConjurerPossession(actor, possession) {
|
||||
if (possession.system.possede){
|
||||
ui.notifications.warn(`${actor.name} est totalement possédé, impossible de conjurer l'entité`)
|
||||
return
|
||||
}
|
||||
RollDialog.create(
|
||||
{
|
||||
ids: {
|
||||
actorId: possession.system.victimeid,
|
||||
actorTokenId: possession.system.victimetokenid,
|
||||
opponentId: possession.system.entiteid,
|
||||
opponentTokenId: possession.system.entitetokenid
|
||||
},
|
||||
passeArme: foundry.utils.randomID(16),
|
||||
type: { allowed: [ROLL_TYPE_POSSESSION], current: ROLL_TYPE_POSSESSION, possession: { action: ACTIONS_POSSESSION.ATTAQUE } },
|
||||
},
|
||||
{
|
||||
onRollDone: RollDialog.onRollDoneClose,
|
||||
callbacks: [
|
||||
async (roll) => await RdDPossessionV2.createPossessionIfMissing(roll.active, roll.opponent),
|
||||
async (roll) => RdDPossessionV2.$setParticuliereFinesse(roll),
|
||||
async (roll) => await RdDPossessionV2.chatMessageDefensePossession(roll)
|
||||
]
|
||||
})
|
||||
}
|
||||
|
||||
static $setParticuliereFinesse(roll) {
|
||||
if (roll.rolled.isPart) {
|
||||
roll.particuliere = RDD_CONFIG.particuliere.finesse.key
|
||||
}
|
||||
}
|
||||
|
||||
static async rollDefensePossession(savedRoll, chatMessage) {
|
||||
RollBasicParts.restore(savedRoll)
|
||||
const attackerRoll = savedRoll.attackerRoll
|
||||
RollDialog.create(
|
||||
{
|
||||
ids: savedRoll.ids,
|
||||
passeArme: attackerRoll.passeArme,
|
||||
type: { allowed: [ROLL_TYPE_POSSESSION], current: ROLL_TYPE_POSSESSION, possession: { action: ACTIONS_POSSESSION.DEFENSE } },
|
||||
selected: { diff: { value: attackerRoll.selected?.diff?.value ?? 0 } },
|
||||
attackerRoll: attackerRoll
|
||||
},
|
||||
{
|
||||
onRollDone: RollDialog.onRollDoneClose, callbacks: [
|
||||
async roll => await RdDPossessionV2.onRollDefense(roll),
|
||||
ChatUtility.remover(chatMessage)
|
||||
]
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
static async onRollDefense(defense) {
|
||||
if (defense.rolled.isEchec) {
|
||||
await RdDPossessionV2.addPointPossession(defense.opponent.actor, defense.active.actor)
|
||||
}
|
||||
RdDPossessionV2.resetPossession(defense)
|
||||
}
|
||||
|
||||
|
||||
static async onMarquerPointPossession(roll) {
|
||||
roll.type = {}
|
||||
await RdDPossessionV2.addPointPossession(roll.opponent, roll.active)
|
||||
RdDPossessionV2.resetPossession(roll)
|
||||
|
||||
await ChatMessage.create({
|
||||
// message privé: du défenseur à lui même (et aux GMs)
|
||||
speaker: ChatMessage.getSpeaker({ actor: roll.active.actor, token: roll.active.token }),
|
||||
alias: roll.opponent.name,
|
||||
whisper: ChatUtility.getOwners(roll.active.actor),
|
||||
content: await renderTemplate(`systems/foundryvtt-reve-de-dragon/templates/possession/chat-message-marquer.hbs`, roll)
|
||||
})
|
||||
}
|
||||
|
||||
static resetPossession(roll) {
|
||||
roll.type.possession = foundry.utils.mergeObject(
|
||||
roll.type.possession ?? {},
|
||||
RdDPossessionV2.getTypePossession(roll.opponent, roll.active))
|
||||
}
|
||||
|
||||
static async addPointPossession(entite, victime, points = 1) {
|
||||
if (RdDPossessionV2.$isInverse(entite, victime)) {
|
||||
return await RdDPossessionV2.addPointPossession(victime, entite, - points)
|
||||
}
|
||||
const existing = RdDPossessionV2.findPossession(entite, victime)
|
||||
if (existing) {
|
||||
const compteur = (existing.system.compteur ?? 0) + points
|
||||
await victime.actor.updateEmbeddedDocuments('Item', [{ _id: existing.id, 'system.compteur': compteur }])
|
||||
}
|
||||
}
|
||||
|
||||
static async chatMessageDefensePossession(attackerRoll) {
|
||||
|
||||
const defense = RollBasicParts.prepareDefense(attackerRoll)
|
||||
defense.type = {
|
||||
possession: RdDPossessionV2.getTypePossessionAction(defense.active, defense.opponent, ACTIONS_POSSESSION.DEFENSE)
|
||||
}
|
||||
|
||||
const chatDemandeDefense = await ChatMessage.create({
|
||||
// message privé: du défenseur à lui même (et aux GMs)
|
||||
speaker: ChatMessage.getSpeaker({ actor: defense.active.actor, token: defense.active.token }),
|
||||
alias: attackerRoll.active.name,
|
||||
whisper: ChatUtility.getOwners(defense.active.actor),
|
||||
content: await renderTemplate('systems/foundryvtt-reve-de-dragon/templates/possession/chat-demande-defense.hbs', defense)
|
||||
});
|
||||
ChatUtility.setMessageData(chatDemandeDefense, 'demande-defense', true)
|
||||
// // flag pour garder les jets d'attaque/defense
|
||||
ChatUtility.setMessageData(chatDemandeDefense, 'rollData', {
|
||||
ids: defense.ids,
|
||||
attackerRoll: RollDialog.saveParts(attackerRoll),
|
||||
passeArme: defense.passeArme
|
||||
})
|
||||
}
|
||||
|
||||
static async onPossession(actor, possession) {
|
||||
if (Math.abs(possession.system.compteur) >= 2) {
|
||||
await ChatMessage.create({
|
||||
alias: actor.getAlias(),
|
||||
whisper: ChatUtility.getOwners(actor),
|
||||
content: await renderTemplate('systems/foundryvtt-reve-de-dragon/templates/possession/chat-fin-possession.hbs', {
|
||||
possession,
|
||||
active: TokenActor.fromActor(actor),
|
||||
opponent: TokenActor.fromActor(game.actors.get(possession.system.entiteid))
|
||||
})
|
||||
})
|
||||
|
||||
if (possession.system.compteur <= -2) {
|
||||
await actor.deleteEmbeddedDocuments('Item', [possession.id])
|
||||
}
|
||||
if (possession.system.compteur >= 2) {
|
||||
await actor.updateEmbeddedDocuments('Item', [{ _id: possession.id, 'system.possede': true }])
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -18,9 +18,9 @@ export class RdDPossession {
|
||||
|
||||
/* -------------------------------------------- */
|
||||
static searchPossessionFromEntite(attacker, defender) {
|
||||
let poss = attacker.items.find(poss => poss.type == ITEM_TYPES.possession && poss.system.victime.actorid == defender.id);
|
||||
let poss = attacker.itemTypes[ITEM_TYPES.possession].find(poss => poss.system.victime.actorid == defender.id);
|
||||
if (!poss) {
|
||||
poss = defender.items.find(poss => poss.type == ITEM_TYPES.possession && poss.system.victime.actorid == defender.id);
|
||||
poss = defender.itemTypes[ITEM_TYPES.possession].find(poss => poss.system.victime.actorid == defender.id);
|
||||
}
|
||||
return poss && foundry.utils.duplicate(poss) || undefined;
|
||||
}
|
||||
@@ -94,7 +94,7 @@ export class RdDPossession {
|
||||
}
|
||||
|
||||
static selectCompetenceDraconicOuPossession(rollData, rollingActor) {
|
||||
rollData.competence = rollingActor.getDraconicOuPossession();
|
||||
rollData.competence = rollingActor.getDraconicOuPossession().find(it => true);
|
||||
if (rollingActor.isCreatureOuEntite()) {
|
||||
const carac = rollingActor.system.carac
|
||||
rollData.carac = carac
|
||||
@@ -132,7 +132,7 @@ export class RdDPossession {
|
||||
}
|
||||
const possession = (rollData.isECNIDefender ? rollData.attacker : rollData.defender).getPossession(rollData.possession.system.possessionid)
|
||||
RdDPossession.storePossessionAttaque(possession, rollData)
|
||||
await RdDRollResult.displayRollData(rollData, rollData.defender, 'chat-resultat-possession.hbs');
|
||||
await RdDRollResult.displayRollData(rollData, rollData.defender, 'chat-resultat-possession-v1.hbs');
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
@@ -172,7 +172,7 @@ export class RdDPossession {
|
||||
rollData.possession = possession
|
||||
RdDPossession.$updateEtatPossession(rollData.possession)
|
||||
|
||||
await RdDRollResult.displayRollData(rollData, rollData.attacker, 'chat-resultat-possession.hbs')
|
||||
await RdDRollResult.displayRollData(rollData, rollData.attacker, 'chat-resultat-possession-v1.hbs')
|
||||
if (rollData.possession.isPosseder || rollData.possession.isConjurer) {
|
||||
// conjuration
|
||||
await victime.deleteEmbeddedDocuments("Item", [rollData.possession._id])
|
||||
@@ -226,15 +226,18 @@ export class RdDPossession {
|
||||
/* -------------------------------------------- */
|
||||
static async createPossession(attacker, defender) {
|
||||
return await Item.create({
|
||||
name: "Possession en cours de " + attacker.name, type: 'possession',
|
||||
img: "systems/foundryvtt-reve-de-dragon/icons/entites/possession2.webp",
|
||||
name: `Possession de ${entite.name}`,
|
||||
type: ITEM_TYPES.possession,
|
||||
img: RDD_CONFIG.icons.possession,
|
||||
system: {
|
||||
description: "", typepossession: attacker.name,
|
||||
typepossession: attacker.name,
|
||||
possede: false,
|
||||
possessionid: foundry.utils.randomID(16),
|
||||
entiteid: attacker.id,
|
||||
victimeid: defender.id,
|
||||
compteur: 0,
|
||||
entite: { actorid: attacker.id },
|
||||
victime: { actorid: defender.id },
|
||||
compteur: 0
|
||||
victime: { actorid: defender.id }
|
||||
}
|
||||
},
|
||||
{
|
||||
|
||||
@@ -16,7 +16,7 @@ export class RdDEncaisser extends Dialog {
|
||||
|
||||
/* -------------------------------------------- */
|
||||
constructor(html, actor) {
|
||||
if (actor.isEntiteNonIncarnee([ENTITE_NONINCARNE])) {
|
||||
if (actor.isEntiteNonIncarnee()) {
|
||||
throw `${actor.name} est une entité non incarnée et ne peut pas subnir de dommages`
|
||||
}
|
||||
|
||||
|
||||
@@ -34,7 +34,7 @@ export class RdDTokenHud {
|
||||
const actor = RdDCombatManager.getActorCombatant(combatant, { warning: false })
|
||||
if (actor) {
|
||||
if (OptionsAvancees.isUsing(ROLL_DIALOG_V2)) {
|
||||
await RdDTokenHud.addExtensionHudCombat(html, combatant, actor, token)
|
||||
await RdDTokenHud.addExtensionHudCombatV2(html, combatant, actor, token)
|
||||
}
|
||||
else {
|
||||
const actions = RdDCombatManager.listActionsActorCombatant(actor)
|
||||
@@ -47,17 +47,28 @@ export class RdDTokenHud {
|
||||
}
|
||||
}
|
||||
|
||||
static async addExtensionHudCombat(html, combatant, actor, token) {
|
||||
const actionsActor = actor.listActionsCombat();
|
||||
static async addExtensionHudCombatV2(html, combatant, actor, token) {
|
||||
const isPossession = actor.listActionsPossessions().length > 0;
|
||||
const actionsCombat = isPossession ? [] : actor.listAttaques()
|
||||
const ajustements = combatant?.initiative ?
|
||||
[
|
||||
{ label: 'Initiative +1', action: 'delta', value: 1 },
|
||||
{ label: 'Initiative -1', action: 'delta', value: -1 }
|
||||
] : []
|
||||
const autres = [{ label: "Autre action", action: 'autre' }]
|
||||
const actions = Misc.indexed(actionsActor.concat(ajustements).concat(autres))
|
||||
const actions = Misc.indexed([
|
||||
...actionsCombat,
|
||||
...ajustements,
|
||||
...autres
|
||||
])
|
||||
|
||||
const hudData = { combatant, token, actions };
|
||||
const hudData = {
|
||||
combatant,
|
||||
token,
|
||||
isPossession,
|
||||
isEntiteNonIncarnee: actor.isEntiteNonIncarnee(),
|
||||
actions,
|
||||
};
|
||||
const hud = $(await renderTemplate('systems/foundryvtt-reve-de-dragon/templates/hud-actor-combat.hbs', hudData))
|
||||
$(html).find('div.col.left').append(hud)
|
||||
|
||||
@@ -84,6 +95,7 @@ export class RdDTokenHud {
|
||||
}
|
||||
})
|
||||
list.find('.rdd-attaque-v2').click(event => combatant.actor.rollAttaque(token))
|
||||
list.find('.rdd-possession-v2').click(event => combatant.actor.rollPossession())
|
||||
}
|
||||
|
||||
static async addExtensionHudInit(html, combatant, actions) {
|
||||
|
||||
@@ -18,7 +18,7 @@ import { RdDEmpoignade } from "./rdd-empoignade.js";
|
||||
import { ExperienceLog } from "./actor/experience-log.js";
|
||||
import { RdDCoeur } from "./coeur/rdd-coeur.js";
|
||||
import { APP_ASTROLOGIE_REFRESH } from "./sommeil/app-astrologie.js";
|
||||
import { ITEM_TYPES, RDD_CONFIG, SYSTEM_RDD } from "./constants.js";
|
||||
import { ACTOR_TYPES, ITEM_TYPES, RDD_CONFIG, SYSTEM_RDD } from "./constants.js";
|
||||
import { RdDBaseActor } from "./actor/base-actor.js";
|
||||
import { RdDCarac } from "./rdd-carac.js";
|
||||
import { RdDTextEditor } from "./apps/rdd-text-roll-editor.js";
|
||||
@@ -26,6 +26,8 @@ import { RdDTextEditor } from "./apps/rdd-text-roll-editor.js";
|
||||
import { RdDItemCompetence } from "./item-competence.js";
|
||||
import { Monnaie } from "./item-monnaie.js";
|
||||
import { ItemAction } from "./item/item-actions.js";
|
||||
import { Targets } from "./targets.js";
|
||||
import { DialogSelect } from "./dialog-select.js";
|
||||
|
||||
/* -------------------------------------------- */
|
||||
// This table starts at 0 -> niveau -10
|
||||
@@ -180,9 +182,14 @@ export class RdDUtility {
|
||||
'systems/foundryvtt-reve-de-dragon/templates/item/partial-inventaire.hbs',
|
||||
'systems/foundryvtt-reve-de-dragon/templates/item/partial-environnement.hbs',
|
||||
'systems/foundryvtt-reve-de-dragon/templates/item/partial-tab-environnement.hbs',
|
||||
'systems/foundryvtt-reve-de-dragon/templates/header-item.hbs',
|
||||
|
||||
'systems/foundryvtt-reve-de-dragon/templates/item/queue-sheet.hbs',
|
||||
'systems/foundryvtt-reve-de-dragon/templates/item/partial-header.hbs',
|
||||
'systems/foundryvtt-reve-de-dragon/templates/item/partial-hautrevant.hbs',
|
||||
'systems/foundryvtt-reve-de-dragon/templates/item/partial-frequence.hbs',
|
||||
'systems/foundryvtt-reve-de-dragon/templates/item/partial-description.hbs',
|
||||
'systems/foundryvtt-reve-de-dragon/templates/item/partial-appreciable.hbs',
|
||||
'systems/foundryvtt-reve-de-dragon/templates/item/enum-appreciation-bonmoment.hbs',
|
||||
'systems/foundryvtt-reve-de-dragon/templates/item/enum-appreciation-carac.hbs',
|
||||
'systems/foundryvtt-reve-de-dragon/templates/item/enum-appreciation-moral.hbs',
|
||||
// partial enums
|
||||
'systems/foundryvtt-reve-de-dragon/templates/enum-aspect-tarot.hbs',
|
||||
'systems/foundryvtt-reve-de-dragon/templates/enum-base-competence.hbs',
|
||||
@@ -232,9 +239,6 @@ export class RdDUtility {
|
||||
'systems/foundryvtt-reve-de-dragon/templates/partial-roll-moral.hbs',
|
||||
'systems/foundryvtt-reve-de-dragon/templates/partial-roll-surenc.hbs',
|
||||
'systems/foundryvtt-reve-de-dragon/templates/partial-select-carac.hbs',
|
||||
'systems/foundryvtt-reve-de-dragon/templates/partial-item-hautrevant.hbs',
|
||||
'systems/foundryvtt-reve-de-dragon/templates/partial-item-frequence.hbs',
|
||||
'systems/foundryvtt-reve-de-dragon/templates/partial-item-description.hbs',
|
||||
'systems/foundryvtt-reve-de-dragon/templates/roll/explain.hbs',
|
||||
'systems/foundryvtt-reve-de-dragon/templates/resolution-table.hbs',
|
||||
// Dialogs
|
||||
@@ -776,8 +780,9 @@ export class RdDUtility {
|
||||
let sommeAPayer = Number(event.currentTarget.attributes['data-somme-a-payer']?.value ?? 0);
|
||||
let actor = RdDUtility.getSelectedActor("Pour effectuer le paiement:");
|
||||
if (actor) {
|
||||
actor.payerSols(sommeAPayer);
|
||||
ChatUtility.removeChatMessageId(RdDUtility.findChatMessageId(event.currentTarget));
|
||||
actor.payerSols(sommeAPayer)
|
||||
const chatMessage = RdDUtility.findChatMessageId(event.currentTarget)
|
||||
ChatUtility.remover(chatMessage)()
|
||||
}
|
||||
});
|
||||
$(html).on("click", '.rdd-world-content-link', async event => {
|
||||
@@ -846,6 +851,26 @@ export class RdDUtility {
|
||||
return undefined;
|
||||
}
|
||||
|
||||
static doWithSelectedActor(onSelected = () => { }, filter = actor => true) {
|
||||
const selected = RdDUtility.getSelectedActor()
|
||||
if (selected) {
|
||||
onSelected(selected)
|
||||
}
|
||||
else {
|
||||
const actors = game.actors
|
||||
.filter(it => it.getUserLevel(game.user) == CONST.DOCUMENT_OWNERSHIP_LEVELS.OWNER)
|
||||
.filter(it => ![ACTOR_TYPES.commerce, ACTOR_TYPES.vehicule].includes(it.type))
|
||||
.filter(filter)
|
||||
const selectData = {
|
||||
title: "Choisir un acteur",
|
||||
label: "Choisir un acteur",
|
||||
list: actors.map(it => Targets.extractActorData(it))
|
||||
};
|
||||
DialogSelect.select(selectData, it => onSelected(game.actors.get(it.id)))
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
static createMonnaie(name, cout, img = "", enc = 0.01) {
|
||||
let piece = {
|
||||
|
||||
@@ -13,6 +13,9 @@ import { PART_ATTAQUE } from "./roll-part-attaque.mjs"
|
||||
import { RdDRollTables } from "../rdd-rolltables.js"
|
||||
import { RdDEmpoignade } from "../rdd-empoignade.js"
|
||||
import { Misc } from "../misc.js"
|
||||
import { RollBasicParts } from "./roll-basic-parts.mjs"
|
||||
import { RdDPossessionV2 } from "../rdd-possession-v2.mjs"
|
||||
import { Apprecier } from "../moral/apprecier.mjs"
|
||||
|
||||
export default class ChatRollResult {
|
||||
static init() {
|
||||
@@ -23,14 +26,16 @@ export default class ChatRollResult {
|
||||
|
||||
static onReady() {
|
||||
foundry.applications.handlebars.loadTemplates({
|
||||
'partial-infojet': 'systems/foundryvtt-reve-de-dragon/templates/roll/result/partial-infojet.hbs',
|
||||
'partial-appel-chance': 'systems/foundryvtt-reve-de-dragon/templates/roll/result/partial-appel-chance.hbs',
|
||||
'partial-apprecier': 'systems/foundryvtt-reve-de-dragon/templates/roll/result/partial-apprecier.hbs',
|
||||
'partial-appreciation': 'systems/foundryvtt-reve-de-dragon/templates/roll/result/partial-appreciation.hbs',
|
||||
'partial-attaque-particuliere': 'systems/foundryvtt-reve-de-dragon/templates/roll/result/partial-attaque-particuliere.hbs',
|
||||
'partial-choix-maladresse': 'systems/foundryvtt-reve-de-dragon/templates/roll/result/partial-choix-maladresse.hbs',
|
||||
'partial-maladresse': 'systems/foundryvtt-reve-de-dragon/templates/roll/result/partial-maladresse.hbs',
|
||||
'partial-encaissement': 'systems/foundryvtt-reve-de-dragon/templates/roll/result/partial-encaissement.hbs',
|
||||
'partial-recul-choc': 'systems/foundryvtt-reve-de-dragon/templates/roll/result/partial-recul-choc.hbs',
|
||||
'partial-infojet': 'systems/foundryvtt-reve-de-dragon/templates/roll/result/partial-infojet.hbs',
|
||||
'partial-info-appel-moral': 'systems/foundryvtt-reve-de-dragon/templates/roll/result/partial-info-appel-moral.hbs',
|
||||
'partial-maladresse': 'systems/foundryvtt-reve-de-dragon/templates/roll/result/partial-maladresse.hbs',
|
||||
'partial-recul-choc': 'systems/foundryvtt-reve-de-dragon/templates/roll/result/partial-recul-choc.hbs',
|
||||
})
|
||||
}
|
||||
|
||||
@@ -53,19 +58,20 @@ export default class ChatRollResult {
|
||||
prepareDisplay(roll) {
|
||||
roll.done = roll.done ?? {}
|
||||
roll.show = roll.show ?? {}
|
||||
roll.show.chance = this.isAppelChancePossible(roll)
|
||||
roll.show.encaissement = this.isShowEncaissement(roll)
|
||||
roll.show.recul = this.getRecul(roll)
|
||||
roll.show.maladresse = this.getMaladresse(roll)
|
||||
roll.show.chance = this.$isAppelChancePossible(roll)
|
||||
roll.show.encaissement = this.$isShowEncaissement(roll)
|
||||
roll.show.recul = this.$getRecul(roll)
|
||||
roll.show.maladresse = this.$getMaladresse(roll)
|
||||
}
|
||||
|
||||
isAppelChancePossible(roll) {
|
||||
$isAppelChancePossible(roll) {
|
||||
return roll.active.actor.isPersonnage() &&
|
||||
roll.rolled.isEchec &&
|
||||
RdDCarac.isActionPhysique(roll.current.carac?.key)
|
||||
RdDCarac.isActionPhysique(roll.current.carac?.key) &&
|
||||
!roll.type.appreciation
|
||||
}
|
||||
|
||||
isShowEncaissement(roll) {
|
||||
$isShowEncaissement(roll) {
|
||||
switch (roll.type.current) {
|
||||
case ROLL_TYPE_DEFENSE:
|
||||
return roll.rolled.isEchec
|
||||
@@ -73,7 +79,7 @@ export default class ChatRollResult {
|
||||
return false
|
||||
}
|
||||
|
||||
getMaladresse(roll) {
|
||||
$getMaladresse(roll) {
|
||||
switch (roll.type.current) {
|
||||
case ROLL_TYPE_DEFENSE:
|
||||
if (roll.rolled.isETotal) {
|
||||
@@ -91,7 +97,7 @@ export default class ChatRollResult {
|
||||
return undefined
|
||||
}
|
||||
|
||||
getRecul(roll, defender = roll.active.actor, attacker = roll.opponent?.actor) {
|
||||
$getRecul(roll, defender = roll.active.actor, attacker = roll.opponent?.actor) {
|
||||
switch (roll.type.current) {
|
||||
case ROLL_TYPE_DEFENSE:
|
||||
{
|
||||
@@ -134,10 +140,13 @@ export default class ChatRollResult {
|
||||
$(html).on("click", '.appel-chance', event => this.onClickAppelChance(event))
|
||||
$(html).on("click", '.appel-destinee', event => this.onClickAppelDestinee(event))
|
||||
$(html).on("click", '.button-defense', event => this.onClickDefense(event))
|
||||
$(html).on("click", '.button-defense-possession', event => this.onClickDefensePossession(event))
|
||||
$(html).on("click", '.marquer-point-possession', event => this.onClickMarquerPointPossession(event))
|
||||
$(html).on("click", '.encaissement', event => this.onClickEncaissement(event))
|
||||
$(html).on("click", '.resister-recul', event => this.onClickRecul(event))
|
||||
$(html).on("click", '.choix-particuliere', event => this.onClickChoixParticuliere(event))
|
||||
$(html).on("click", '.faire-gouter', event => this.onClickFaireGouter(event))
|
||||
$(html).on("click", '.apprecier', event => this.onClickApprecier(event))
|
||||
$(html).on("click", '.monter-tmr-normale', event => this.onClickMonteeTMR(event, 'normal'))
|
||||
$(html).on("click", '.monter-tmr-rapide', event => this.onClickMonteeTMR(event, 'rapide'))
|
||||
$(html).on("click", '.tirer-maladresse', event => this.onClickTirerMaladresse(event))
|
||||
@@ -187,7 +196,7 @@ export default class ChatRollResult {
|
||||
console.log('onAppelChanceSuccess savedRoll', savedRoll)
|
||||
reRoll.type.retry = true
|
||||
await this.updateChatMessage(chatMessage, reRoll)
|
||||
const callbacks = [r => ChatUtility.removeChatMessageId(chatMessage.id)]
|
||||
const callbacks = [ChatUtility.remover(chatMessage)]
|
||||
|
||||
// TODO: annuler les effets
|
||||
switch (reRoll.type.current) {
|
||||
@@ -195,7 +204,6 @@ export default class ChatRollResult {
|
||||
this.getCombat(reRoll)?.doRollDefense(reRoll, callbacks)
|
||||
break
|
||||
case ROLL_TYPE_ATTAQUE:
|
||||
// TODO
|
||||
this.getCombat(reRoll)?.doRollAttaque(reRoll, callbacks)
|
||||
break
|
||||
default: {
|
||||
@@ -227,12 +235,28 @@ export default class ChatRollResult {
|
||||
async onClickDefense(event) {
|
||||
const chatMessage = ChatUtility.getChatMessage(event)
|
||||
const savedRoll = this.loadChatMessageRoll(chatMessage)
|
||||
RollBasicParts.restore(savedRoll)
|
||||
const attackerRoll = savedRoll.attackerRoll
|
||||
RollDialog.loadRollData(attackerRoll)
|
||||
this.getCombat(attackerRoll)?.defenseV2(attackerRoll,
|
||||
[roll => { ChatUtility.removeChatMessageId(chatMessage.id) }]
|
||||
[ChatUtility.remover(chatMessage)]
|
||||
)
|
||||
}
|
||||
|
||||
async onClickDefensePossession(event) {
|
||||
const chatMessage = ChatUtility.getChatMessage(event)
|
||||
const savedRoll = this.loadChatMessageRoll(chatMessage)
|
||||
await RdDPossessionV2.rollDefensePossession(savedRoll, chatMessage)
|
||||
}
|
||||
|
||||
async onClickMarquerPointPossession(event) {
|
||||
const chatMessage = ChatUtility.getChatMessage(event)
|
||||
const savedRoll = this.loadChatMessageRoll(chatMessage)
|
||||
RollBasicParts.restore(savedRoll)
|
||||
await RdDPossessionV2.onMarquerPointPossession(savedRoll)
|
||||
ChatUtility.remover(chatMessage)()
|
||||
}
|
||||
|
||||
async onClickEncaissement(event) {
|
||||
const chatMessage = ChatUtility.getChatMessage(event)
|
||||
const isMessageDemande = ChatUtility.getMessageData(chatMessage, 'demande-defense')
|
||||
@@ -255,7 +279,7 @@ export default class ChatRollResult {
|
||||
break
|
||||
}
|
||||
if (isMessageDemande) {
|
||||
ChatUtility.removeChatMessageId(chatMessage.id)
|
||||
ChatUtility.remover(chatMessage)()
|
||||
} else {
|
||||
savedRoll.done.encaissement = true
|
||||
await this.updateChatMessage(chatMessage, savedRoll)
|
||||
@@ -294,6 +318,11 @@ export default class ChatRollResult {
|
||||
}
|
||||
await new RollTypeCuisine().onFaireGouter(savedRoll)
|
||||
}
|
||||
async onClickApprecier(event) {
|
||||
const chatMessage = ChatUtility.getChatMessage(event)
|
||||
const savedRoll = this.loadChatMessageRoll(chatMessage)
|
||||
await Apprecier.onClickApprecier(savedRoll)
|
||||
}
|
||||
|
||||
async onClickMonteeTMR(event, mode) {
|
||||
const chatMessage = ChatUtility.getChatMessage(event)
|
||||
|
||||
@@ -11,7 +11,7 @@ export class RollBasicParts {
|
||||
rollData.ids.sceneId = rollData.ids.sceneId ?? canvas.scene.id
|
||||
rollData.active = RollBasicParts.getTokenActor(rollData)
|
||||
rollData.opponent = RollBasicParts.getTokenActorOpponent(rollData)
|
||||
if (rollData.type.opposed == undefined) {
|
||||
if (rollData.type && rollData.type.opposed == undefined) {
|
||||
rollData.type.opposed = rollData.opponent != null
|
||||
}
|
||||
}
|
||||
@@ -46,10 +46,10 @@ export class RollBasicParts {
|
||||
type: rollData.type,
|
||||
ids: {
|
||||
sceneId: rollData.ids.sceneId,
|
||||
actorId: rollData.active.id,
|
||||
actorTokenId: rollData.active.tokenId,
|
||||
opponentId: isOpposed ? rollData.opponent.id : undefined,
|
||||
opponentTokenId: isOpposed ? rollData.opponent.tokenId : undefined,
|
||||
actorId: rollData.ids.actorId,
|
||||
actorTokenId: rollData.ids.actorTokenId,
|
||||
opponentId: isOpposed ? rollData.ids.opponentId : undefined,
|
||||
opponentTokenId: isOpposed ? rollData.ids.opponentTokenId : undefined,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
|
||||
export const ROLL_TYPE_ATTAQUE = 'attaque'
|
||||
export const ROLL_TYPE_POSSESSION = 'possession'
|
||||
export const ROLL_TYPE_COMP = 'comp'
|
||||
export const ROLL_TYPE_CUISINE = 'cuisine'
|
||||
export const ROLL_TYPE_DEFENSE = 'defense'
|
||||
@@ -27,8 +28,8 @@ export const DIFF = {
|
||||
export const DIFFS = {
|
||||
[DIFF.LIBRE]: { key: DIFF.LIBRE, label: "Difficulté libre", libre: true, visible: true, max: 0 },
|
||||
[DIFF.ATTAQUE]: { key: DIFF.ATTAQUE, label: "Difficulté d'attaque", libre: true, visible: true, max: 0 },
|
||||
[DIFF.IMPOSEE]: { key: DIFF.IMPOSEE, label: "Diffficulté imposée", libre: false, visible: true, max: 0 },
|
||||
[DIFF.DEFENSE]: { key: DIFF.DEFENSE, label: "Diffficulté défense", libre: false, visible: true, max: 0 },
|
||||
[DIFF.IMPOSEE]: { key: DIFF.IMPOSEE, label: "Difficulté imposée", libre: false, visible: true, max: 20 },
|
||||
[DIFF.DEFENSE]: { key: DIFF.DEFENSE, label: "Difficulté défense", libre: false, visible: true, max: 0 },
|
||||
[DIFF.DEFAUT]: { key: DIFF.DEFAUT, label: "Difficulté", libre: true, visible: true, max: 5 },
|
||||
[DIFF.AUCUN]: { key: DIFF.AUCUN, label: "", libre: false, visible: false, max: 0 },
|
||||
}
|
||||
|
||||
@@ -48,6 +48,9 @@ import { RollPartEmpoignade } from "./roll-part-empoignade.mjs";
|
||||
import { RollPartEmpoignadeTaille } from "./roll-part-empoignade-taille.mjs";
|
||||
import { RollPartEcailles } from "./roll-part-ecailles.mjs";
|
||||
import { RollPartResistance } from "./roll-part-resistance.mjs";
|
||||
import { RollTypePossession } from "./roll-type-possession.mjs";
|
||||
import { RollPartPossession } from "./roll-part-possession.mjs";
|
||||
import { RollPartApprecier } from "./roll-part-apprecier.mjs";
|
||||
|
||||
|
||||
const { HandlebarsApplicationMixin, ApplicationV2 } = foundry.applications.api
|
||||
@@ -56,6 +59,7 @@ export const ALL_ROLL_TYPES = [
|
||||
new RollTypeComp(),
|
||||
new RollTypeTache(),
|
||||
new RollTypeAttaque(),
|
||||
new RollTypePossession(),
|
||||
new RollTypeDefense(),
|
||||
new RollTypeSort(),
|
||||
new RollTypeMeditation(),
|
||||
@@ -75,7 +79,9 @@ const ROLL_PARTS = [
|
||||
new RollPartComp(),
|
||||
|
||||
new RollPartDiff(),
|
||||
new RollPartApprecier(),
|
||||
new RollPartAttaque(),
|
||||
new RollPartPossession(),
|
||||
new RollPartDefense(),
|
||||
new RollPartMeditation(),
|
||||
new RollPartSort(),
|
||||
@@ -314,15 +320,33 @@ export default class RollDialog extends HandlebarsApplicationMixin(ApplicationV2
|
||||
return rollData
|
||||
}
|
||||
|
||||
static saveParts(rollData, impacts) {
|
||||
static saveParts(rollData, impacts = undefined) {
|
||||
if (rollData == undefined) {
|
||||
return undefined
|
||||
}
|
||||
|
||||
function saveBasics(from, to) {
|
||||
if (from) {
|
||||
to.passeArme = from.passeArme
|
||||
to.rolled = from.rolled
|
||||
to.particuliere = from.particuliere
|
||||
to.result = from.result
|
||||
to.done = from.done ?? {}
|
||||
to.dmg = from.dmg
|
||||
if (from.attackerRoll) {
|
||||
to.attackerRoll = {}
|
||||
saveBasics(from.attackerRoll, to.attackerRoll)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
const target = RollBasicParts.initFrom(rollData)
|
||||
ROLL_PARTS.filter(p => p.isActive(rollData))
|
||||
.forEach(p => p.storeClean(rollData, target))
|
||||
target.attackerRoll = rollData.attackerRoll
|
||||
target.rolled = rollData.rolled
|
||||
target.result = rollData.result
|
||||
target.done = rollData.done ?? {}
|
||||
target.dmg = rollData.dmg
|
||||
if (rollData.current) {
|
||||
// stockage de current
|
||||
ROLL_PARTS.filter(p => p.isActive(rollData))
|
||||
.forEach(p => p.storeClean(rollData, target))
|
||||
}
|
||||
saveBasics(rollData, target)
|
||||
if (impacts) {
|
||||
target.reverse = {
|
||||
active: impacts.active?.reverseImpacts(),
|
||||
@@ -330,6 +354,7 @@ export default class RollDialog extends HandlebarsApplicationMixin(ApplicationV2
|
||||
}
|
||||
}
|
||||
return target
|
||||
|
||||
}
|
||||
|
||||
constructor(rollData, rollOptions) {
|
||||
@@ -348,7 +373,7 @@ export default class RollDialog extends HandlebarsApplicationMixin(ApplicationV2
|
||||
}
|
||||
this.chatRollResult = new ChatRollResult()
|
||||
this.selectType()
|
||||
this.registerHooks(rollData);
|
||||
this.registerHooks(rollData)
|
||||
}
|
||||
|
||||
registerHooks(rollData) {
|
||||
@@ -366,10 +391,11 @@ export default class RollDialog extends HandlebarsApplicationMixin(ApplicationV2
|
||||
|
||||
|
||||
selectType() {
|
||||
const selectedType = this.getSelectedType();
|
||||
this.rollData.type.label = selectedType.title(this.rollData)
|
||||
const selectedType = this.getSelectedType()
|
||||
selectedType.prepare(this.rollData)
|
||||
selectedType.setRollDataType(this.rollData)
|
||||
selectedType.onSelect(this.rollData)
|
||||
this.rollData.type.label = selectedType.title(this.rollData)
|
||||
|
||||
ROLL_PARTS.find(it => it.code == PART_CARAC).filterCaracs(this.rollData)
|
||||
ROLL_PARTS.find(it => it.code == PART_COMP).filterComps(this.rollData)
|
||||
|
||||
32
module/roll/roll-part-apprecier.mjs
Normal file
32
module/roll/roll-part-apprecier.mjs
Normal file
@@ -0,0 +1,32 @@
|
||||
import { ROLLDIALOG_SECTION, RollPart } from "./roll-part.mjs";
|
||||
|
||||
export const PART_APPRECIER = "apprecier"
|
||||
|
||||
export class RollPartApprecier extends RollPart {
|
||||
|
||||
get code() { return PART_APPRECIER }
|
||||
get section() { return ROLLDIALOG_SECTION.CHOIX }
|
||||
|
||||
restore(rollData) {
|
||||
this.setCurrent(rollData, this.getSaved(rollData))
|
||||
}
|
||||
|
||||
store(rollData, targetData) {
|
||||
this.setSaved(targetData, this.getCurrent(rollData))
|
||||
}
|
||||
|
||||
visible(rollData) {
|
||||
return rollData.type.appreciation
|
||||
}
|
||||
|
||||
getAjustements(rollData) {
|
||||
const current = this.getCurrent(rollData)
|
||||
if (current.appreciation.jetQualite){
|
||||
return [{
|
||||
label: 'Qualité',
|
||||
value: Math.abs(current.qualite)
|
||||
}]
|
||||
}
|
||||
return []
|
||||
}
|
||||
}
|
||||
@@ -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) {
|
||||
|
||||
@@ -22,7 +22,12 @@ export class RollPartComp extends RollPartSelect {
|
||||
if (selected.forced) {
|
||||
refs.all = all.filter(comp => Grammar.equalsInsensitive(comp.label, selected.key))
|
||||
if (refs.all.length == 0) {
|
||||
refs.all = all.filter(comp => Grammar.includesLowerCaseNoAccent(comp.label, selected.key))
|
||||
if (selected.key.length > 0) {
|
||||
refs.all = all.filter(comp => Grammar.includesLowerCaseNoAccent(comp.label, selected.key))
|
||||
}
|
||||
else {
|
||||
refs.all = all.filter(comp => comp == SANS_COMPETENCE)
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
|
||||
@@ -16,8 +16,8 @@ export class RollPartDefense extends RollPartSelect {
|
||||
get code() { return PART_DEFENSE }
|
||||
get section() { return ROLLDIALOG_SECTION.CHOIX }
|
||||
|
||||
isValid(rollData) { return rollData.attackerRoll != undefined }
|
||||
visible(rollData) { return this.isRollType(rollData, ROLL_TYPE_DEFENSE) }
|
||||
isValid(rollData) { return this.isRollType(rollData, ROLL_TYPE_DEFENSE) && rollData.attackerRoll != undefined }
|
||||
visible(rollData) { return this.isRollType(rollData, ROLL_TYPE_DEFENSE) && rollData.attackerRoll != undefined }
|
||||
|
||||
static getDiffAttaque(attackerRoll) {
|
||||
// TODO: rollDataV2?
|
||||
|
||||
@@ -32,7 +32,7 @@ export class RollPartDiff extends RollPart {
|
||||
}
|
||||
|
||||
visible(rollData) {
|
||||
if (EXCLUDED_ROLL_TYPES.includes(rollData.type.current)) {
|
||||
if (EXCLUDED_ROLL_TYPES.includes(rollData.type.current) || rollData.type.appreciation) {
|
||||
return false
|
||||
}
|
||||
const current = this.getCurrent(rollData)
|
||||
|
||||
85
module/roll/roll-part-possession.mjs
Normal file
85
module/roll/roll-part-possession.mjs
Normal file
@@ -0,0 +1,85 @@
|
||||
import { CATEGORIES_COMPETENCES_CREATURES } from "../item/base-items.js"
|
||||
import { CARACS } from "../rdd-carac.js"
|
||||
import { RdDPossessionV2 } from "../rdd-possession-v2.mjs"
|
||||
import { ROLL_TYPE_POSSESSION } from "./roll-constants.mjs"
|
||||
import { PART_CARAC } from "./roll-part-carac.mjs"
|
||||
import { PART_COMP } from "./roll-part-comp.mjs"
|
||||
import { RollPartSelect } from "./roll-part-select.mjs"
|
||||
import { ROLLDIALOG_SECTION } from "./roll-part.mjs"
|
||||
|
||||
export const PART_POSSESSION = "possession"
|
||||
|
||||
export class RollPartPossession extends RollPartSelect {
|
||||
|
||||
/** TODO: remplacer selectOption par un sélecteur plus sympa (avec image de compétence, par exemple? */
|
||||
|
||||
get code() { return PART_POSSESSION }
|
||||
get name() { return 'Possession' }
|
||||
get section() { return ROLLDIALOG_SECTION.CHOIX }
|
||||
|
||||
visible(rollData) { return this.isRollType(rollData, ROLL_TYPE_POSSESSION) }
|
||||
|
||||
loadRefs(rollData) {
|
||||
const refs = this.getRefs(rollData)
|
||||
refs.all = this.$getActorConjurations(rollData)
|
||||
this.$selectPossession(rollData)
|
||||
}
|
||||
|
||||
|
||||
choices(refs) { return refs.all }
|
||||
|
||||
$getActorConjurations(rollData) {
|
||||
const competences = rollData.active.actor.getDraconicOuPossession()
|
||||
return competences.map(RollPartPossession.extractPossession)
|
||||
}
|
||||
|
||||
static extractPossession(comp) {
|
||||
return {
|
||||
key: comp.id ?? comp.name,
|
||||
label: `${comp.system.categorie == CATEGORIES_COMPETENCES_CREATURES.possession.key ? 'Possession' : 'Conjuration'} (${comp.name})`,
|
||||
value: comp.system.niveau,
|
||||
comp: comp
|
||||
}
|
||||
}
|
||||
|
||||
prepareContext(rollData) {
|
||||
this.$selectPossession(rollData)
|
||||
}
|
||||
|
||||
getAjustements(rollData) {
|
||||
return []
|
||||
}
|
||||
|
||||
async _onRender(rollDialog, context, options) {
|
||||
const rollData = rollDialog.rollData
|
||||
const select = rollDialog.element.querySelector(`roll-section[name="${this.code}"] select[name="select-possession"]`)
|
||||
const button = rollDialog.element.querySelector(`roll-section[name="${this.code}"] button[name="creer-possession"]`)
|
||||
select?.addEventListener("change", e => {
|
||||
const selectOptions = e.currentTarget.options
|
||||
const index = selectOptions.selectedIndex
|
||||
this.$selectPossession(rollData, selectOptions[index]?.value)
|
||||
rollDialog.render()
|
||||
})
|
||||
button?.addEventListener("click", async e => {
|
||||
e.preventDefault()
|
||||
await RdDPossessionV2.createPossessionIfMissing(rollData.active, rollData.opponent)
|
||||
rollDialog.render()
|
||||
})
|
||||
}
|
||||
|
||||
$selectPossession(rollData, key) {
|
||||
this.selectByKey(rollData, key, 0)
|
||||
}
|
||||
|
||||
impactOtherPart(part, rollData) {
|
||||
if (this.visible(rollData)) {
|
||||
const current = this.getCurrent(rollData)
|
||||
switch (part.code) {
|
||||
case PART_CARAC: return part.filterCaracs(rollData, [rollData.type.possession.isPersonnage ? CARACS.REVE_ACTUEL : CARACS.REVE])
|
||||
case PART_COMP: return part.filterComps(rollData, [current.comp?.name])
|
||||
}
|
||||
}
|
||||
return undefined
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,8 +1,9 @@
|
||||
import { RDD_CONFIG } from "../constants.js"
|
||||
import { Misc } from "../misc.js"
|
||||
import { RdDPossessionV2 } from "../rdd-possession-v2.mjs"
|
||||
import { ReglesOptionnelles } from "../settings/regles-optionnelles.js"
|
||||
import { demiReveStatusEffect, StatusEffects } from "../settings/status-effects.js"
|
||||
import { ROLL_TYPE_ATTAQUE, ROLL_TYPE_DEFENSE } from "./roll-constants.mjs"
|
||||
import { StatusEffects } from "../settings/status-effects.js"
|
||||
import { ROLL_TYPE_ATTAQUE, ROLL_TYPE_DEFENSE, ROLL_TYPE_POSSESSION } from "./roll-constants.mjs"
|
||||
import { ROLLDIALOG_SECTION, RollPart } from "./roll-part.mjs"
|
||||
|
||||
export const PART_SIGN = "sign"
|
||||
@@ -25,7 +26,7 @@ export class RollPartSign extends RollPart {
|
||||
}
|
||||
|
||||
isCombat(rollData) {
|
||||
return [ROLL_TYPE_ATTAQUE, ROLL_TYPE_DEFENSE].includes(rollData.type.current) || rollData.type.isCombat
|
||||
return [ROLL_TYPE_ATTAQUE, ROLL_TYPE_DEFENSE, ROLL_TYPE_POSSESSION].includes(rollData.type.current)
|
||||
}
|
||||
|
||||
prepareContext(rollData) {
|
||||
@@ -40,7 +41,7 @@ export class RollPartSign extends RollPart {
|
||||
const isCombat = this.isCombat(rollData)
|
||||
const current = this.getCurrent(rollData)
|
||||
current.armeDisparate = isCombat && current.armeDisparate
|
||||
current.surprise = actor.getSurprise(isCombat, current.forceRequise ?? 0)
|
||||
current.surprise = actor.getSurprise(isCombat, current.forceRequise ?? 0)
|
||||
current.reasons = actor.getEffects(it => StatusEffects.niveauSurprise(it, isCombat) > 0, current.forceRequise ?? 0)
|
||||
.map(it => { return { img: it.img, label: game.i18n.localize(it.name) } })
|
||||
current.diviseur = 1
|
||||
@@ -67,7 +68,16 @@ export class RollPartSign extends RollPart {
|
||||
}
|
||||
|
||||
isAttaqueFinesse(rollData) {
|
||||
return ROLL_TYPE_DEFENSE == rollData.type.current && rollData.attaque?.particuliere == 'finesse'
|
||||
const attackerRoll = rollData.attackerRoll
|
||||
if (rollData.attackerRoll){
|
||||
switch (rollData.type.current) {
|
||||
case ROLL_TYPE_DEFENSE:
|
||||
return attackerRoll?.particuliere == RDD_CONFIG.particuliere.finesse.key
|
||||
case ROLL_TYPE_POSSESSION:
|
||||
return RdDPossessionV2.isDefense(rollData.type.possession.action) && attackerRoll?.particuliere == RDD_CONFIG.particuliere.finesse.key
|
||||
}
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
isParadeArmeDisparate(current) {
|
||||
|
||||
@@ -5,7 +5,12 @@ export class RollTypeComp extends RollType {
|
||||
get code() { return ROLL_TYPE_COMP }
|
||||
get name() { return `Jet de caractéristique / compétence` }
|
||||
|
||||
title(rollData) { return `fait un jet ${rollData.type.opposed ? ' contre ' : ''}` }
|
||||
title(rollData) {
|
||||
if (rollData.type.appreciation) {
|
||||
return "fait un jet d'appéciation"
|
||||
}
|
||||
return `fait un jet ${rollData.type.opposed ? ' contre ' : ''}`
|
||||
}
|
||||
|
||||
|
||||
onSelect(rollData) {
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
import { ITEM_TYPES } from "../constants.js"
|
||||
import { APPRECIATION } from "../moral/apprecier.mjs"
|
||||
import { RollBasicParts } from "./roll-basic-parts.mjs"
|
||||
import { DIFF, ROLL_TYPE_CUISINE } from "./roll-constants.mjs"
|
||||
import { PART_CUISINE } from "./roll-part-cuisine.mjs"
|
||||
@@ -49,7 +50,7 @@ export class RollTypeCuisine extends RollType {
|
||||
return result
|
||||
}
|
||||
onApplyImpacts(roll, impacts) {
|
||||
if (roll.result.plat) {
|
||||
if (roll.result.plat) {
|
||||
// le plat n'est pas créé immédiatement, il faut donc retrouver l'id
|
||||
roll.result.plat.id = impacts.findCreatedId('Item', roll.result.plat.id)
|
||||
}
|
||||
@@ -69,6 +70,7 @@ export class RollTypeCuisine extends RollType {
|
||||
quantite: current.proportions,
|
||||
qualite: result.qualite,
|
||||
cout: result.qualite > 0 ? (result.qualite * 0.01) : 0.01,
|
||||
appreciation: APPRECIATION.CUISINE
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
import { PART_JEU, RollPartJeu } from "./roll-part-jeu.mjs"
|
||||
import { RollType } from "./roll-type.mjs"
|
||||
import { DIFF, ROLL_TYPE_JEU } from "./roll-constants.mjs"
|
||||
import { Apprecier } from "../moral/apprecier.mjs"
|
||||
|
||||
|
||||
export class RollTypeJeu extends RollType {
|
||||
@@ -20,4 +21,8 @@ export class RollTypeJeu extends RollType {
|
||||
RollPartJeu.forceCompJeu(rollData)
|
||||
}
|
||||
|
||||
}
|
||||
getResult(rollData, impacts) {
|
||||
const current = rollData.current[PART_JEU]
|
||||
return Apprecier.getAppreciation(current.qualite, current.jeu, rollData, current.comp)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
import { Apprecier } from "../moral/apprecier.mjs"
|
||||
import { DIFF, ROLL_TYPE_OEUVRE } from "./roll-constants.mjs"
|
||||
import { PART_OEUVRE } from "./roll-part-oeuvre.mjs"
|
||||
import { RollType } from "./roll-type.mjs"
|
||||
@@ -18,12 +19,7 @@ export class RollTypeOeuvre extends RollType {
|
||||
|
||||
getResult(rollData, impacts) {
|
||||
const current = rollData.current[PART_OEUVRE]
|
||||
const qualite = rollData.rolled.isSuccess ? current.qualite : Math.min(current.qualite, current.comp.system.niveau)
|
||||
return {
|
||||
qualite: qualite + rollData.rolled.ptQualite,
|
||||
messages: []
|
||||
}
|
||||
return Apprecier.getAppreciation(current.qualite, current.oeuvre, rollData, current.comp)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
28
module/roll/roll-type-possession.mjs
Normal file
28
module/roll/roll-type-possession.mjs
Normal file
@@ -0,0 +1,28 @@
|
||||
import { RdDPossessionV2 } from "../rdd-possession-v2.mjs"
|
||||
import { DIFF, ROLL_TYPE_POSSESSION } from "./roll-constants.mjs"
|
||||
import { RollType } from "./roll-type.mjs"
|
||||
|
||||
export class RollTypePossession extends RollType {
|
||||
get code() { return ROLL_TYPE_POSSESSION }
|
||||
get name() { return "Posséder" }
|
||||
|
||||
prepare(rollData) {
|
||||
rollData.type.possession = RdDPossessionV2.getTypePossessionAction(rollData.active, rollData.opponent, rollData.type.possession?.action)
|
||||
}
|
||||
|
||||
title(rollData) {
|
||||
return RdDPossessionV2.actionTitle(rollData.type.possession.action)
|
||||
}
|
||||
|
||||
onSelect(rollData) {
|
||||
this.setDiffType(rollData, this.isAttaque(rollData) ? DIFF.ATTAQUE : DIFF.DEFENSE)
|
||||
}
|
||||
|
||||
isEntite(rollData) {
|
||||
return rollData.active.actor.isEntiteNonIncarnee()
|
||||
}
|
||||
|
||||
isAttaque(rollData) {
|
||||
return RdDPossessionV2.isAttaque(rollData.type.possession.action)
|
||||
}
|
||||
}
|
||||
@@ -16,6 +16,7 @@ export class RollType {
|
||||
return { code: this.code, name: this.name, icon: this.icon, section: 'type', template: this.template, selected: this.isSelected(rollData) }
|
||||
}
|
||||
|
||||
prepare(rollData){}
|
||||
isAllowed(rollData) { return rollData.type.allowed == undefined || rollData.type.allowed.includes(this.code) }
|
||||
visible(rollData) { return true }
|
||||
title(rollData) { return this.code }
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -68,18 +68,20 @@ export class SystemCompendiums extends FormApplication {
|
||||
if (pack?.metadata.type == docType) {
|
||||
return await pack.getDocuments();
|
||||
}
|
||||
return [];
|
||||
return []
|
||||
}
|
||||
|
||||
static async getCompetences(actorType) {
|
||||
switch (actorType ?? 'personnage') {
|
||||
case 'personnage':
|
||||
return await SystemCompendiums.getWorldOrCompendiumItems('competence', 'competences')
|
||||
.then(list => list.sort((a, b) => a.name.localeCompare(b.name)))
|
||||
case 'entite':
|
||||
case 'creature':
|
||||
return await SystemCompendiums.getWorldOrCompendiumItems('competencecreature', 'competences-creatures')
|
||||
case 'vehicule': return [];
|
||||
.then(list => list.sort((a, b) => a.name.localeCompare(b.name)))
|
||||
}
|
||||
return []
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
|
||||
@@ -9,12 +9,12 @@ export class DialogRepos extends Dialog {
|
||||
return
|
||||
}
|
||||
if (!ReglesOptionnelles.isUsing("chateau-dormant-gardien") || !actor.hasPlayerOwner) {
|
||||
actor.system.sommeil = {
|
||||
foundry.utils.mergeObject(actor.system.sommeil, {
|
||||
"nouveaujour": true,
|
||||
"insomnie": EffetsDraconiques.isSujetInsomnie(actor),
|
||||
"moral": "neutre",
|
||||
"heures": 4
|
||||
}
|
||||
})
|
||||
}
|
||||
const html = await renderTemplate("systems/foundryvtt-reve-de-dragon/templates/sommeil/dialog-repos.hbs", actor);
|
||||
const dialog = new DialogRepos(html, actor);
|
||||
|
||||
@@ -18,6 +18,14 @@ export class Targets {
|
||||
}
|
||||
}
|
||||
|
||||
static extractActorData(actor) {
|
||||
return {
|
||||
id: actor.id,
|
||||
name: actor.prototypeToken?.name ?? actor.name,
|
||||
img: actor.prototypeToken?.texture.src ?? actor.img ?? 'icons/svg/mystery-man.svg'
|
||||
}
|
||||
}
|
||||
|
||||
static buildActorTokenData(tokenId, actor) {
|
||||
return { id: tokenId, name: actor.name, img: actor.img ?? 'icons/svg/mystery-man.svg' };
|
||||
}
|
||||
@@ -41,7 +49,7 @@ export class Targets {
|
||||
label: "Choisir une seule des cibles",
|
||||
list: targets.map(it => Targets.extractTokenData(it))
|
||||
};
|
||||
DialogSelect.select(selectData, t => onSelectTarget(t.target))
|
||||
DialogSelect.select(selectData, target => onSelectTarget(targets.find(it => it.id == target.id)))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -30,7 +30,11 @@ items:
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
_key: '!actors.items!Igt8XPaL7NQrGYlq.shsUV8UpU18c0RJK'
|
||||
- _id: CYpxxf1uTa78NWR9
|
||||
name: Esquive
|
||||
@@ -59,7 +63,11 @@ items:
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
_key: '!actors.items!Igt8XPaL7NQrGYlq.CYpxxf1uTa78NWR9'
|
||||
- _id: lzEdMrKXbOYrWG5S
|
||||
name: Vigilance
|
||||
@@ -88,7 +96,11 @@ items:
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
_key: '!actors.items!Igt8XPaL7NQrGYlq.lzEdMrKXbOYrWG5S'
|
||||
- _id: NWmRryjNFkXcd1v9
|
||||
name: Piétinement
|
||||
@@ -116,7 +128,12 @@ items:
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
flags: {}
|
||||
_key: '!actors.items!Igt8XPaL7NQrGYlq.NWmRryjNFkXcd1v9'
|
||||
effects: []
|
||||
folder: null
|
||||
@@ -183,16 +200,16 @@ system:
|
||||
value: '+4'
|
||||
label: +dom
|
||||
derivee: true
|
||||
vitesse:
|
||||
type: string
|
||||
value: 10/40
|
||||
label: Vitesse
|
||||
derivee: true
|
||||
encombrement:
|
||||
type: number
|
||||
value: 20
|
||||
label: Encombrement
|
||||
derivee: false
|
||||
vitesse:
|
||||
type: string
|
||||
value: 10/40
|
||||
label: Vitesse
|
||||
derivee: true
|
||||
protection:
|
||||
type: number
|
||||
value: 4
|
||||
@@ -295,7 +312,6 @@ prototypeToken:
|
||||
detectionModes: []
|
||||
appendNumber: false
|
||||
prependAdjective: false
|
||||
hexagonalShape: 0
|
||||
occludable:
|
||||
radius: 0
|
||||
ring:
|
||||
@@ -307,9 +323,19 @@ prototypeToken:
|
||||
subject:
|
||||
scale: 1
|
||||
texture: null
|
||||
turnMarker:
|
||||
mode: 1
|
||||
animation: null
|
||||
src: null
|
||||
disposition: false
|
||||
movementAction: null
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
flags: {}
|
||||
_key: '!actors!Igt8XPaL7NQrGYlq'
|
||||
|
||||
|
||||
@@ -30,7 +30,11 @@ items:
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
_key: '!actors.items!ppjPZoSKp7j841bp.shsUV8UpU18c0RJK'
|
||||
- _id: yDHZfK4RmwQW4YaW
|
||||
name: Discrétion
|
||||
@@ -59,7 +63,11 @@ items:
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
_key: '!actors.items!ppjPZoSKp7j841bp.yDHZfK4RmwQW4YaW'
|
||||
- _id: CYpxxf1uTa78NWR9
|
||||
name: Esquive
|
||||
@@ -88,7 +96,11 @@ items:
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
_key: '!actors.items!ppjPZoSKp7j841bp.CYpxxf1uTa78NWR9'
|
||||
- _id: 6DK46pyO0hzEuuUg
|
||||
name: Morsure
|
||||
@@ -117,7 +129,11 @@ items:
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
_key: '!actors.items!ppjPZoSKp7j841bp.6DK46pyO0hzEuuUg'
|
||||
- _id: lzEdMrKXbOYrWG5S
|
||||
name: Vigilance
|
||||
@@ -146,7 +162,11 @@ items:
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
_key: '!actors.items!ppjPZoSKp7j841bp.lzEdMrKXbOYrWG5S'
|
||||
effects: []
|
||||
folder: null
|
||||
@@ -213,16 +233,16 @@ system:
|
||||
value: -2
|
||||
label: +dom
|
||||
derivee: true
|
||||
vitesse:
|
||||
type: string
|
||||
value: 14/36
|
||||
label: Vitesse
|
||||
derivee: true
|
||||
encombrement:
|
||||
type: number
|
||||
value: 0
|
||||
label: Encombrement
|
||||
derivee: false
|
||||
vitesse:
|
||||
type: string
|
||||
value: 14/36
|
||||
label: Vitesse
|
||||
derivee: true
|
||||
protection:
|
||||
type: number
|
||||
value: -3
|
||||
@@ -327,7 +347,6 @@ prototypeToken:
|
||||
detectionModes: []
|
||||
appendNumber: false
|
||||
prependAdjective: false
|
||||
hexagonalShape: 0
|
||||
occludable:
|
||||
radius: 0
|
||||
ring:
|
||||
@@ -339,9 +358,19 @@ prototypeToken:
|
||||
subject:
|
||||
scale: 1
|
||||
texture: null
|
||||
turnMarker:
|
||||
mode: 1
|
||||
animation: null
|
||||
src: null
|
||||
disposition: false
|
||||
movementAction: null
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
flags: {}
|
||||
_key: '!actors!ppjPZoSKp7j841bp'
|
||||
|
||||
|
||||
@@ -30,7 +30,11 @@ items:
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
_key: '!actors.items!Q0i8frS62Mn7SW5c.shsUV8UpU18c0RJK'
|
||||
- _id: yDHZfK4RmwQW4YaW
|
||||
name: Discrétion
|
||||
@@ -59,7 +63,11 @@ items:
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
_key: '!actors.items!Q0i8frS62Mn7SW5c.yDHZfK4RmwQW4YaW'
|
||||
- _id: CYpxxf1uTa78NWR9
|
||||
name: Esquive
|
||||
@@ -88,7 +96,11 @@ items:
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
_key: '!actors.items!Q0i8frS62Mn7SW5c.CYpxxf1uTa78NWR9'
|
||||
- _id: 6DK46pyO0hzEuuUg
|
||||
name: Morsure
|
||||
@@ -117,7 +129,11 @@ items:
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
_key: '!actors.items!Q0i8frS62Mn7SW5c.6DK46pyO0hzEuuUg'
|
||||
- _id: lzEdMrKXbOYrWG5S
|
||||
name: Vigilance
|
||||
@@ -146,7 +162,11 @@ items:
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
_key: '!actors.items!Q0i8frS62Mn7SW5c.lzEdMrKXbOYrWG5S'
|
||||
effects: []
|
||||
folder: null
|
||||
@@ -213,16 +233,16 @@ system:
|
||||
value: '+4'
|
||||
label: +dom
|
||||
derivee: true
|
||||
vitesse:
|
||||
type: string
|
||||
value: 10/24
|
||||
label: Vitesse
|
||||
derivee: true
|
||||
encombrement:
|
||||
type: number
|
||||
value: 0
|
||||
label: Encombrement
|
||||
derivee: false
|
||||
vitesse:
|
||||
type: string
|
||||
value: 10/24
|
||||
label: Vitesse
|
||||
derivee: true
|
||||
protection:
|
||||
type: number
|
||||
value: 2
|
||||
@@ -317,7 +337,6 @@ prototypeToken:
|
||||
detectionModes: []
|
||||
appendNumber: false
|
||||
prependAdjective: false
|
||||
hexagonalShape: 0
|
||||
occludable:
|
||||
radius: 0
|
||||
ring:
|
||||
@@ -329,9 +348,19 @@ prototypeToken:
|
||||
subject:
|
||||
scale: 1
|
||||
texture: null
|
||||
turnMarker:
|
||||
mode: 1
|
||||
animation: null
|
||||
src: null
|
||||
disposition: false
|
||||
movementAction: null
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
flags: {}
|
||||
_key: '!actors!Q0i8frS62Mn7SW5c'
|
||||
|
||||
|
||||
@@ -30,7 +30,11 @@ items:
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
_key: '!actors.items!ZLROmHLm6G9pElkk.shsUV8UpU18c0RJK'
|
||||
- _id: CYpxxf1uTa78NWR9
|
||||
name: Esquive
|
||||
@@ -59,7 +63,11 @@ items:
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
_key: '!actors.items!ZLROmHLm6G9pElkk.CYpxxf1uTa78NWR9'
|
||||
- _id: BjqRrGtHtTzuNpZB
|
||||
name: Griffes et Crocs
|
||||
@@ -88,7 +96,11 @@ items:
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
_key: '!actors.items!ZLROmHLm6G9pElkk.BjqRrGtHtTzuNpZB'
|
||||
- _id: lzEdMrKXbOYrWG5S
|
||||
name: Vigilance
|
||||
@@ -117,7 +129,11 @@ items:
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
_key: '!actors.items!ZLROmHLm6G9pElkk.lzEdMrKXbOYrWG5S'
|
||||
effects: []
|
||||
folder: null
|
||||
@@ -184,16 +200,16 @@ system:
|
||||
value: '+9'
|
||||
label: +dom
|
||||
derivee: true
|
||||
vitesse:
|
||||
type: string
|
||||
value: 16/60
|
||||
label: Vitesse
|
||||
derivee: true
|
||||
encombrement:
|
||||
type: number
|
||||
value: 0
|
||||
label: Encombrement
|
||||
derivee: false
|
||||
vitesse:
|
||||
type: string
|
||||
value: 16/60
|
||||
label: Vitesse
|
||||
derivee: true
|
||||
protection:
|
||||
type: number
|
||||
value: 10
|
||||
@@ -304,7 +320,6 @@ prototypeToken:
|
||||
detectionModes: []
|
||||
appendNumber: false
|
||||
prependAdjective: false
|
||||
hexagonalShape: 0
|
||||
occludable:
|
||||
radius: 0
|
||||
ring:
|
||||
@@ -316,9 +331,19 @@ prototypeToken:
|
||||
subject:
|
||||
scale: 1
|
||||
texture: null
|
||||
turnMarker:
|
||||
mode: 1
|
||||
animation: null
|
||||
src: null
|
||||
disposition: false
|
||||
movementAction: null
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
flags: {}
|
||||
_key: '!actors!ZLROmHLm6G9pElkk'
|
||||
|
||||
|
||||
@@ -30,7 +30,11 @@ items:
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
_key: '!actors.items!zMvyRrp10dkfcS43.LWQHz5ymNBzh6ZEr'
|
||||
- _id: shsUV8UpU18c0RJK
|
||||
name: Course
|
||||
@@ -59,7 +63,11 @@ items:
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
_key: '!actors.items!zMvyRrp10dkfcS43.shsUV8UpU18c0RJK'
|
||||
- _id: CYpxxf1uTa78NWR9
|
||||
name: Esquive
|
||||
@@ -88,7 +96,11 @@ items:
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
_key: '!actors.items!zMvyRrp10dkfcS43.CYpxxf1uTa78NWR9'
|
||||
- _id: lzEdMrKXbOYrWG5S
|
||||
name: Vigilance
|
||||
@@ -117,7 +129,11 @@ items:
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
_key: '!actors.items!zMvyRrp10dkfcS43.lzEdMrKXbOYrWG5S'
|
||||
- _id: iwQo9KoK5tfIN7sw
|
||||
name: Saut
|
||||
@@ -145,7 +161,12 @@ items:
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
flags: {}
|
||||
_key: '!actors.items!zMvyRrp10dkfcS43.iwQo9KoK5tfIN7sw'
|
||||
effects: []
|
||||
folder: null
|
||||
@@ -212,16 +233,16 @@ system:
|
||||
value: '+4'
|
||||
label: +dom
|
||||
derivee: true
|
||||
vitesse:
|
||||
type: string
|
||||
value: 14/54
|
||||
label: Vitesse
|
||||
derivee: true
|
||||
encombrement:
|
||||
type: number
|
||||
value: 0
|
||||
label: Encombrement
|
||||
derivee: false
|
||||
vitesse:
|
||||
type: string
|
||||
value: 14/54
|
||||
label: Vitesse
|
||||
derivee: true
|
||||
protection:
|
||||
type: number
|
||||
value: 1
|
||||
@@ -319,7 +340,6 @@ prototypeToken:
|
||||
detectionModes: []
|
||||
appendNumber: false
|
||||
prependAdjective: false
|
||||
hexagonalShape: 0
|
||||
occludable:
|
||||
radius: 0
|
||||
ring:
|
||||
@@ -331,9 +351,19 @@ prototypeToken:
|
||||
subject:
|
||||
scale: 1
|
||||
texture: null
|
||||
turnMarker:
|
||||
mode: 1
|
||||
animation: null
|
||||
src: null
|
||||
disposition: false
|
||||
movementAction: null
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
flags: {}
|
||||
_key: '!actors!zMvyRrp10dkfcS43'
|
||||
|
||||
|
||||
@@ -30,7 +30,11 @@ items:
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
_key: '!actors.items!twCuK1GjVBTUFGXF.shsUV8UpU18c0RJK'
|
||||
- _id: 4GmpkphbsmQjvVVK
|
||||
name: Escalade
|
||||
@@ -59,7 +63,11 @@ items:
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
_key: '!actors.items!twCuK1GjVBTUFGXF.4GmpkphbsmQjvVVK'
|
||||
- _id: CYpxxf1uTa78NWR9
|
||||
name: Esquive
|
||||
@@ -88,7 +96,11 @@ items:
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
_key: '!actors.items!twCuK1GjVBTUFGXF.CYpxxf1uTa78NWR9'
|
||||
- _id: BjqRrGtHtTzuNpZB
|
||||
name: Griffes et Crocs
|
||||
@@ -117,7 +129,11 @@ items:
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
_key: '!actors.items!twCuK1GjVBTUFGXF.BjqRrGtHtTzuNpZB'
|
||||
- _id: lzEdMrKXbOYrWG5S
|
||||
name: Vigilance
|
||||
@@ -146,7 +162,11 @@ items:
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
_key: '!actors.items!twCuK1GjVBTUFGXF.lzEdMrKXbOYrWG5S'
|
||||
- _id: plIWZXJT0XGKJ5ar
|
||||
name: Saut
|
||||
@@ -174,7 +194,12 @@ items:
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
flags: {}
|
||||
_key: '!actors.items!twCuK1GjVBTUFGXF.plIWZXJT0XGKJ5ar'
|
||||
effects: []
|
||||
folder: null
|
||||
@@ -241,16 +266,16 @@ system:
|
||||
value: '+0'
|
||||
label: +dom
|
||||
derivee: true
|
||||
vitesse:
|
||||
type: string
|
||||
value: 12/24
|
||||
label: Vitesse
|
||||
derivee: true
|
||||
encombrement:
|
||||
type: number
|
||||
value: 0
|
||||
label: Encombrement
|
||||
derivee: false
|
||||
vitesse:
|
||||
type: string
|
||||
value: 12/24
|
||||
label: Vitesse
|
||||
derivee: true
|
||||
protection:
|
||||
type: number
|
||||
value: 0
|
||||
@@ -300,9 +325,8 @@ system:
|
||||
déchirure. Celle-là se contente de chercher à fuir en
|
||||
cas d’agression, ou attaque toutes griffes dehors si elle se sent
|
||||
acculée. Pour la distinguer (visuellement) de la rieuse,
|
||||
réussir @roll[VUE/Zoologie/-5]. Les caractéristiques de
|
||||
combat indiquées ne s’appliquent qu’à la
|
||||
pointue.</p>
|
||||
réussir @roll[VUE/Zoologie/-5]. Les caractéristiques de combat
|
||||
indiquées ne s’appliquent qu’à la pointue.</p>
|
||||
race: ''
|
||||
notesmj: ''
|
||||
ownership:
|
||||
@@ -371,7 +395,6 @@ prototypeToken:
|
||||
detectionModes: []
|
||||
appendNumber: false
|
||||
prependAdjective: false
|
||||
hexagonalShape: 0
|
||||
occludable:
|
||||
radius: 0
|
||||
ring:
|
||||
@@ -383,9 +406,19 @@ prototypeToken:
|
||||
subject:
|
||||
scale: 1
|
||||
texture: null
|
||||
turnMarker:
|
||||
mode: 1
|
||||
animation: null
|
||||
src: null
|
||||
disposition: false
|
||||
movementAction: null
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
flags: {}
|
||||
_key: '!actors!twCuK1GjVBTUFGXF'
|
||||
|
||||
|
||||
@@ -31,7 +31,11 @@ items:
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
_key: '!actors.items!LqYHIJf9LVGxRT7S.shsUV8UpU18c0RJK'
|
||||
- _id: CYpxxf1uTa78NWR9
|
||||
name: Esquive
|
||||
@@ -60,7 +64,11 @@ items:
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
_key: '!actors.items!LqYHIJf9LVGxRT7S.CYpxxf1uTa78NWR9'
|
||||
- _id: 6DK46pyO0hzEuuUg
|
||||
name: Morsure
|
||||
@@ -89,7 +97,11 @@ items:
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
_key: '!actors.items!LqYHIJf9LVGxRT7S.6DK46pyO0hzEuuUg'
|
||||
- _id: lzEdMrKXbOYrWG5S
|
||||
name: Vigilance
|
||||
@@ -118,7 +130,11 @@ items:
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
_key: '!actors.items!LqYHIJf9LVGxRT7S.lzEdMrKXbOYrWG5S'
|
||||
- _id: 3MgAaUHeKGBcbyr5
|
||||
name: Coup de pied
|
||||
@@ -146,7 +162,12 @@ items:
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
flags: {}
|
||||
_key: '!actors.items!LqYHIJf9LVGxRT7S.3MgAaUHeKGBcbyr5'
|
||||
effects: []
|
||||
system:
|
||||
@@ -211,16 +232,16 @@ system:
|
||||
value: '+4'
|
||||
label: +dom
|
||||
derivee: true
|
||||
vitesse:
|
||||
type: string
|
||||
value: 12/40
|
||||
label: Vitesse
|
||||
derivee: true
|
||||
encombrement:
|
||||
type: number
|
||||
value: 18
|
||||
label: Encombrement
|
||||
derivee: false
|
||||
vitesse:
|
||||
type: string
|
||||
value: 12/40
|
||||
label: Vitesse
|
||||
derivee: true
|
||||
protection:
|
||||
type: number
|
||||
value: 1
|
||||
@@ -324,7 +345,6 @@ prototypeToken:
|
||||
detectionModes: []
|
||||
appendNumber: false
|
||||
prependAdjective: false
|
||||
hexagonalShape: 0
|
||||
occludable:
|
||||
radius: 0
|
||||
ring:
|
||||
@@ -336,10 +356,20 @@ prototypeToken:
|
||||
subject:
|
||||
scale: 1
|
||||
texture: null
|
||||
turnMarker:
|
||||
mode: 1
|
||||
animation: null
|
||||
src: null
|
||||
disposition: false
|
||||
movementAction: null
|
||||
folder: null
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
flags: {}
|
||||
_key: '!actors!LqYHIJf9LVGxRT7S'
|
||||
|
||||
|
||||
@@ -30,7 +30,11 @@ items:
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
_key: '!actors.items!76I21ASdWYBqsg8I.shsUV8UpU18c0RJK'
|
||||
- _id: CYpxxf1uTa78NWR9
|
||||
name: Esquive
|
||||
@@ -59,7 +63,11 @@ items:
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
_key: '!actors.items!76I21ASdWYBqsg8I.CYpxxf1uTa78NWR9'
|
||||
- _id: ndNshntOYb1JFNqi
|
||||
name: Ruade
|
||||
@@ -88,7 +96,11 @@ items:
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
_key: '!actors.items!76I21ASdWYBqsg8I.ndNshntOYb1JFNqi'
|
||||
- _id: lzEdMrKXbOYrWG5S
|
||||
name: Vigilance
|
||||
@@ -117,7 +129,11 @@ items:
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
_key: '!actors.items!76I21ASdWYBqsg8I.lzEdMrKXbOYrWG5S'
|
||||
effects: []
|
||||
folder: null
|
||||
@@ -184,16 +200,16 @@ system:
|
||||
value: '+5'
|
||||
label: +dom
|
||||
derivee: true
|
||||
vitesse:
|
||||
type: string
|
||||
value: 14/58
|
||||
label: Vitesse
|
||||
derivee: true
|
||||
encombrement:
|
||||
type: number
|
||||
value: 22
|
||||
label: Encombrement
|
||||
derivee: false
|
||||
vitesse:
|
||||
type: string
|
||||
value: 14/58
|
||||
label: Vitesse
|
||||
derivee: true
|
||||
protection:
|
||||
type: number
|
||||
value: 2
|
||||
@@ -287,7 +303,6 @@ prototypeToken:
|
||||
detectionModes: []
|
||||
appendNumber: false
|
||||
prependAdjective: false
|
||||
hexagonalShape: 0
|
||||
occludable:
|
||||
radius: 0
|
||||
ring:
|
||||
@@ -299,9 +314,19 @@ prototypeToken:
|
||||
subject:
|
||||
scale: 1
|
||||
texture: null
|
||||
turnMarker:
|
||||
mode: 1
|
||||
animation: null
|
||||
src: null
|
||||
disposition: false
|
||||
movementAction: null
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
flags: {}
|
||||
_key: '!actors!76I21ASdWYBqsg8I'
|
||||
|
||||
|
||||
@@ -31,7 +31,11 @@ items:
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
_key: '!actors.items!XuDpG772k6PAQ5LJ.shsUV8UpU18c0RJK'
|
||||
- _id: CYpxxf1uTa78NWR9
|
||||
name: Esquive
|
||||
@@ -60,7 +64,11 @@ items:
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
_key: '!actors.items!XuDpG772k6PAQ5LJ.CYpxxf1uTa78NWR9'
|
||||
- _id: 6DK46pyO0hzEuuUg
|
||||
name: Morsure
|
||||
@@ -89,7 +97,11 @@ items:
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
_key: '!actors.items!XuDpG772k6PAQ5LJ.6DK46pyO0hzEuuUg'
|
||||
- _id: lzEdMrKXbOYrWG5S
|
||||
name: Vigilance
|
||||
@@ -118,7 +130,11 @@ items:
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
_key: '!actors.items!XuDpG772k6PAQ5LJ.lzEdMrKXbOYrWG5S'
|
||||
- _id: Rtt7bny59v2jBhuO
|
||||
name: Saut
|
||||
@@ -146,7 +162,12 @@ items:
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
flags: {}
|
||||
_key: '!actors.items!XuDpG772k6PAQ5LJ.Rtt7bny59v2jBhuO'
|
||||
effects: []
|
||||
system:
|
||||
@@ -211,16 +232,16 @@ system:
|
||||
value: '+0'
|
||||
label: +dom
|
||||
derivee: true
|
||||
vitesse:
|
||||
type: string
|
||||
value: 12/36
|
||||
label: Vitesse
|
||||
derivee: true
|
||||
encombrement:
|
||||
type: number
|
||||
value: 0
|
||||
label: Encombrement
|
||||
derivee: false
|
||||
vitesse:
|
||||
type: string
|
||||
value: 12/36
|
||||
label: Vitesse
|
||||
derivee: true
|
||||
protection:
|
||||
type: number
|
||||
value: -1
|
||||
@@ -313,7 +334,6 @@ prototypeToken:
|
||||
detectionModes: []
|
||||
appendNumber: false
|
||||
prependAdjective: false
|
||||
hexagonalShape: 0
|
||||
occludable:
|
||||
radius: 0
|
||||
ring:
|
||||
@@ -325,10 +345,20 @@ prototypeToken:
|
||||
subject:
|
||||
scale: 1
|
||||
texture: null
|
||||
turnMarker:
|
||||
mode: 1
|
||||
animation: null
|
||||
src: null
|
||||
disposition: false
|
||||
movementAction: null
|
||||
folder: null
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
flags: {}
|
||||
_key: '!actors!XuDpG772k6PAQ5LJ'
|
||||
|
||||
|
||||
@@ -30,7 +30,11 @@ items:
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
_key: '!actors.items!yL1XStIKWxGnhKvR.shsUV8UpU18c0RJK'
|
||||
- _id: CYpxxf1uTa78NWR9
|
||||
name: Esquive
|
||||
@@ -59,7 +63,11 @@ items:
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
_key: '!actors.items!yL1XStIKWxGnhKvR.CYpxxf1uTa78NWR9'
|
||||
- _id: XgfRxSj8Ty1d3JFM
|
||||
name: Mandibules
|
||||
@@ -88,7 +96,11 @@ items:
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
_key: '!actors.items!yL1XStIKWxGnhKvR.XgfRxSj8Ty1d3JFM'
|
||||
- _id: lzEdMrKXbOYrWG5S
|
||||
name: Vigilance
|
||||
@@ -117,7 +129,11 @@ items:
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
_key: '!actors.items!yL1XStIKWxGnhKvR.lzEdMrKXbOYrWG5S'
|
||||
effects: []
|
||||
folder: null
|
||||
@@ -288,7 +304,6 @@ prototypeToken:
|
||||
detectionModes: []
|
||||
appendNumber: false
|
||||
prependAdjective: false
|
||||
hexagonalShape: 0
|
||||
occludable:
|
||||
radius: 0
|
||||
ring:
|
||||
@@ -300,15 +315,21 @@ prototypeToken:
|
||||
subject:
|
||||
scale: 1
|
||||
texture: null
|
||||
turnMarker:
|
||||
mode: 1
|
||||
animation: null
|
||||
src: null
|
||||
disposition: false
|
||||
movementAction: null
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.32
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
createdTime: null
|
||||
modifiedTime: 1736537299708
|
||||
lastModifiedBy: Hp9ImM4o9YRTSdfu
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
flags: {}
|
||||
_key: '!actors!yL1XStIKWxGnhKvR'
|
||||
|
||||
|
||||
@@ -30,7 +30,11 @@ items:
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
_key: '!actors.items!VsEw24DEekBbU69Z.LWQHz5ymNBzh6ZEr'
|
||||
- _id: shsUV8UpU18c0RJK
|
||||
name: Course
|
||||
@@ -59,7 +63,11 @@ items:
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
_key: '!actors.items!VsEw24DEekBbU69Z.shsUV8UpU18c0RJK'
|
||||
- _id: yDHZfK4RmwQW4YaW
|
||||
name: Discrétion
|
||||
@@ -88,7 +96,11 @@ items:
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
_key: '!actors.items!VsEw24DEekBbU69Z.yDHZfK4RmwQW4YaW'
|
||||
- _id: CYpxxf1uTa78NWR9
|
||||
name: Esquive
|
||||
@@ -117,7 +129,11 @@ items:
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
_key: '!actors.items!VsEw24DEekBbU69Z.CYpxxf1uTa78NWR9'
|
||||
- _id: lzEdMrKXbOYrWG5S
|
||||
name: Vigilance
|
||||
@@ -146,7 +162,11 @@ items:
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
_key: '!actors.items!VsEw24DEekBbU69Z.lzEdMrKXbOYrWG5S'
|
||||
effects: []
|
||||
folder: null
|
||||
@@ -213,16 +233,16 @@ system:
|
||||
value: '+4'
|
||||
label: +dom
|
||||
derivee: true
|
||||
vitesse:
|
||||
type: string
|
||||
value: 12/36
|
||||
label: Vitesse
|
||||
derivee: true
|
||||
encombrement:
|
||||
type: number
|
||||
value: 0
|
||||
label: Encombrement
|
||||
derivee: false
|
||||
vitesse:
|
||||
type: string
|
||||
value: 12/36
|
||||
label: Vitesse
|
||||
derivee: true
|
||||
protection:
|
||||
type: number
|
||||
value: 3
|
||||
@@ -323,7 +343,6 @@ prototypeToken:
|
||||
detectionModes: []
|
||||
appendNumber: false
|
||||
prependAdjective: false
|
||||
hexagonalShape: 0
|
||||
occludable:
|
||||
radius: 0
|
||||
ring:
|
||||
@@ -335,9 +354,19 @@ prototypeToken:
|
||||
subject:
|
||||
scale: 1
|
||||
texture: null
|
||||
turnMarker:
|
||||
mode: 1
|
||||
animation: null
|
||||
src: null
|
||||
disposition: false
|
||||
movementAction: null
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
flags: {}
|
||||
_key: '!actors!VsEw24DEekBbU69Z'
|
||||
|
||||
|
||||
@@ -30,7 +30,11 @@ items:
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
_key: '!actors.items!IdZUNtuYcDBffZKn.shsUV8UpU18c0RJK'
|
||||
- _id: CYpxxf1uTa78NWR9
|
||||
name: Esquive
|
||||
@@ -59,7 +63,11 @@ items:
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
_key: '!actors.items!IdZUNtuYcDBffZKn.CYpxxf1uTa78NWR9'
|
||||
- _id: BjqRrGtHtTzuNpZB
|
||||
name: Griffes et Crocs
|
||||
@@ -88,7 +96,11 @@ items:
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
_key: '!actors.items!IdZUNtuYcDBffZKn.BjqRrGtHtTzuNpZB'
|
||||
- _id: lzEdMrKXbOYrWG5S
|
||||
name: Vigilance
|
||||
@@ -117,7 +129,11 @@ items:
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
_key: '!actors.items!IdZUNtuYcDBffZKn.lzEdMrKXbOYrWG5S'
|
||||
- _id: 0bTL8SzhNJoPrXd4
|
||||
name: Saut
|
||||
@@ -145,7 +161,12 @@ items:
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
flags: {}
|
||||
_key: '!actors.items!IdZUNtuYcDBffZKn.0bTL8SzhNJoPrXd4'
|
||||
effects: []
|
||||
folder: null
|
||||
@@ -212,16 +233,16 @@ system:
|
||||
value: '+1'
|
||||
label: +dom
|
||||
derivee: true
|
||||
vitesse:
|
||||
type: string
|
||||
value: 14/38
|
||||
label: Vitesse
|
||||
derivee: true
|
||||
encombrement:
|
||||
type: number
|
||||
value: 0
|
||||
label: Encombrement
|
||||
derivee: false
|
||||
vitesse:
|
||||
type: string
|
||||
value: 14/38
|
||||
label: Vitesse
|
||||
derivee: true
|
||||
protection:
|
||||
type: number
|
||||
value: 3
|
||||
@@ -326,7 +347,6 @@ prototypeToken:
|
||||
detectionModes: []
|
||||
appendNumber: false
|
||||
prependAdjective: false
|
||||
hexagonalShape: 0
|
||||
occludable:
|
||||
radius: 0
|
||||
ring:
|
||||
@@ -338,9 +358,19 @@ prototypeToken:
|
||||
subject:
|
||||
scale: 1
|
||||
texture: null
|
||||
turnMarker:
|
||||
mode: 1
|
||||
animation: null
|
||||
src: null
|
||||
disposition: false
|
||||
movementAction: null
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
flags: {}
|
||||
_key: '!actors!IdZUNtuYcDBffZKn'
|
||||
|
||||
|
||||
@@ -30,7 +30,11 @@ items:
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
_key: '!actors.items!kPDswxsWVnSYitfL.CYpxxf1uTa78NWR9'
|
||||
- _id: 6DK46pyO0hzEuuUg
|
||||
name: Morsure
|
||||
@@ -59,7 +63,11 @@ items:
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
_key: '!actors.items!kPDswxsWVnSYitfL.6DK46pyO0hzEuuUg'
|
||||
- _id: Kt7WlB5Ui97X211z
|
||||
name: Vol
|
||||
@@ -88,7 +96,11 @@ items:
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
_key: '!actors.items!kPDswxsWVnSYitfL.Kt7WlB5Ui97X211z'
|
||||
effects: []
|
||||
folder: null
|
||||
@@ -155,16 +167,16 @@ system:
|
||||
value: -1
|
||||
label: +dom
|
||||
derivee: true
|
||||
vitesse:
|
||||
type: string
|
||||
value: 12/38
|
||||
label: Vitesse
|
||||
derivee: true
|
||||
encombrement:
|
||||
type: number
|
||||
value: 0
|
||||
label: Encombrement
|
||||
derivee: false
|
||||
vitesse:
|
||||
type: string
|
||||
value: 12/38
|
||||
label: Vitesse
|
||||
derivee: true
|
||||
protection:
|
||||
type: number
|
||||
value: -3
|
||||
@@ -206,8 +218,8 @@ system:
|
||||
à sa victime qui perd alors automatiquement @roll[1d6] points
|
||||
d’endurance par round sous l’effet de la saignée. Quand
|
||||
l’endurance tombe à zéro, le drakkule continue à
|
||||
la vider de son sang à raison de @roll[1d6] points de vie par round. Le
|
||||
drakkule ne se détache que <em>blessé gravement </em>ou
|
||||
la vider de son sang à raison de @roll[1d6] points de vie par round.
|
||||
Le drakkule ne se détache que <em>blessé gravement </em>ou
|
||||
<em>sonné</em>. Pour se dégager, la victime ne peut utiliser
|
||||
que Corps à corps (totaliser 2 points d’empoignade) ou une
|
||||
dague. Tant qu’il est accroché, le drakkule ne joue plus de jet
|
||||
@@ -281,7 +293,6 @@ prototypeToken:
|
||||
detectionModes: []
|
||||
appendNumber: false
|
||||
prependAdjective: false
|
||||
hexagonalShape: 0
|
||||
occludable:
|
||||
radius: 0
|
||||
ring:
|
||||
@@ -293,9 +304,19 @@ prototypeToken:
|
||||
subject:
|
||||
scale: 1
|
||||
texture: null
|
||||
turnMarker:
|
||||
mode: 1
|
||||
animation: null
|
||||
src: null
|
||||
disposition: false
|
||||
movementAction: null
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
flags: {}
|
||||
_key: '!actors!kPDswxsWVnSYitfL'
|
||||
|
||||
|
||||
@@ -30,7 +30,11 @@ items:
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
_key: '!actors.items!tbBCUzaYThtcq3Ch.CYpxxf1uTa78NWR9'
|
||||
- _id: lzEdMrKXbOYrWG5S
|
||||
name: Vigilance
|
||||
@@ -59,7 +63,11 @@ items:
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
_key: '!actors.items!tbBCUzaYThtcq3Ch.lzEdMrKXbOYrWG5S'
|
||||
- _id: Kt7WlB5Ui97X211z
|
||||
name: Vol
|
||||
@@ -88,7 +96,11 @@ items:
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
_key: '!actors.items!tbBCUzaYThtcq3Ch.Kt7WlB5Ui97X211z'
|
||||
effects: []
|
||||
folder: null
|
||||
@@ -155,16 +167,16 @@ system:
|
||||
value: -4
|
||||
label: +dom
|
||||
derivee: true
|
||||
vitesse:
|
||||
type: string
|
||||
value: 10/30 vol
|
||||
label: Vitesse
|
||||
derivee: true
|
||||
encombrement:
|
||||
type: number
|
||||
value: 0
|
||||
label: Encombrement
|
||||
derivee: false
|
||||
vitesse:
|
||||
type: string
|
||||
value: 10/30 vol
|
||||
label: Vitesse
|
||||
derivee: true
|
||||
protection:
|
||||
type: number
|
||||
value: -6
|
||||
@@ -268,7 +280,6 @@ prototypeToken:
|
||||
detectionModes: []
|
||||
appendNumber: false
|
||||
prependAdjective: false
|
||||
hexagonalShape: 0
|
||||
occludable:
|
||||
radius: 0
|
||||
ring:
|
||||
@@ -280,9 +291,19 @@ prototypeToken:
|
||||
subject:
|
||||
scale: 1
|
||||
texture: null
|
||||
turnMarker:
|
||||
mode: 1
|
||||
animation: null
|
||||
src: null
|
||||
disposition: false
|
||||
movementAction: null
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
flags: {}
|
||||
_key: '!actors!tbBCUzaYThtcq3Ch'
|
||||
|
||||
|
||||
@@ -30,7 +30,11 @@ items:
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
_key: '!actors.items!f31jeCsQgw3hWjk6.shsUV8UpU18c0RJK'
|
||||
- _id: yDHZfK4RmwQW4YaW
|
||||
name: Discrétion
|
||||
@@ -59,7 +63,11 @@ items:
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
_key: '!actors.items!f31jeCsQgw3hWjk6.yDHZfK4RmwQW4YaW'
|
||||
- _id: 4GmpkphbsmQjvVVK
|
||||
name: Escalade
|
||||
@@ -88,7 +96,11 @@ items:
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
_key: '!actors.items!f31jeCsQgw3hWjk6.4GmpkphbsmQjvVVK'
|
||||
- _id: CYpxxf1uTa78NWR9
|
||||
name: Esquive
|
||||
@@ -117,7 +129,11 @@ items:
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
_key: '!actors.items!f31jeCsQgw3hWjk6.CYpxxf1uTa78NWR9'
|
||||
- _id: 6DK46pyO0hzEuuUg
|
||||
name: Morsure
|
||||
@@ -146,7 +162,11 @@ items:
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
_key: '!actors.items!f31jeCsQgw3hWjk6.6DK46pyO0hzEuuUg'
|
||||
- _id: lzEdMrKXbOYrWG5S
|
||||
name: Vigilance
|
||||
@@ -175,7 +195,11 @@ items:
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
_key: '!actors.items!f31jeCsQgw3hWjk6.lzEdMrKXbOYrWG5S'
|
||||
effects: []
|
||||
folder: null
|
||||
@@ -242,16 +266,16 @@ system:
|
||||
value: '+0'
|
||||
label: +dom
|
||||
derivee: true
|
||||
vitesse:
|
||||
type: string
|
||||
value: 12/30
|
||||
label: Vitesse
|
||||
derivee: true
|
||||
encombrement:
|
||||
type: number
|
||||
value: 0
|
||||
label: Encombrement
|
||||
derivee: false
|
||||
vitesse:
|
||||
type: string
|
||||
value: 12/30
|
||||
label: Vitesse
|
||||
derivee: true
|
||||
protection:
|
||||
type: number
|
||||
value: 0
|
||||
@@ -352,7 +376,6 @@ prototypeToken:
|
||||
detectionModes: []
|
||||
appendNumber: false
|
||||
prependAdjective: false
|
||||
hexagonalShape: 0
|
||||
occludable:
|
||||
radius: 0
|
||||
ring:
|
||||
@@ -364,9 +387,19 @@ prototypeToken:
|
||||
subject:
|
||||
scale: 1
|
||||
texture: null
|
||||
turnMarker:
|
||||
mode: 1
|
||||
animation: null
|
||||
src: null
|
||||
disposition: false
|
||||
movementAction: null
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
flags: {}
|
||||
_key: '!actors!f31jeCsQgw3hWjk6'
|
||||
|
||||
|
||||
@@ -29,7 +29,12 @@ items:
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
flags: {}
|
||||
_key: '!actors.items!igtHarwizNIUhd8M.bwJZ6nTLX9hohV7Q'
|
||||
- _id: 7td0EmFMtpwNyWwo
|
||||
name: Esquive
|
||||
@@ -57,7 +62,12 @@ items:
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
flags: {}
|
||||
_key: '!actors.items!igtHarwizNIUhd8M.7td0EmFMtpwNyWwo'
|
||||
- _id: d2yxJ5c57vMatAQV
|
||||
name: Discrétion
|
||||
@@ -85,7 +95,12 @@ items:
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
flags: {}
|
||||
_key: '!actors.items!igtHarwizNIUhd8M.d2yxJ5c57vMatAQV'
|
||||
- _id: aGm8xRr55CPUo5rM
|
||||
name: Pickpocket
|
||||
@@ -113,7 +128,12 @@ items:
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
flags: {}
|
||||
_key: '!actors.items!igtHarwizNIUhd8M.aGm8xRr55CPUo5rM'
|
||||
- _id: bL7lL688cp1s1Vke
|
||||
name: Vigilance
|
||||
@@ -141,7 +161,12 @@ items:
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
flags: {}
|
||||
_key: '!actors.items!igtHarwizNIUhd8M.bL7lL688cp1s1Vke'
|
||||
- _id: Fu61NMCeLxi9nfSD
|
||||
name: Course
|
||||
@@ -169,7 +194,12 @@ items:
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
flags: {}
|
||||
_key: '!actors.items!igtHarwizNIUhd8M.Fu61NMCeLxi9nfSD'
|
||||
- _id: uW9fTmhw6GBnf1e9
|
||||
name: Saut
|
||||
@@ -197,7 +227,12 @@ items:
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
flags: {}
|
||||
_key: '!actors.items!igtHarwizNIUhd8M.uW9fTmhw6GBnf1e9'
|
||||
effects: []
|
||||
folder: null
|
||||
@@ -264,16 +299,16 @@ system:
|
||||
value: -1
|
||||
label: +dom
|
||||
derivee: true
|
||||
vitesse:
|
||||
type: string
|
||||
value: 12/26
|
||||
label: Vitesse
|
||||
derivee: true
|
||||
encombrement:
|
||||
type: number
|
||||
value: 0
|
||||
label: Encombrement
|
||||
derivee: false
|
||||
vitesse:
|
||||
type: string
|
||||
value: 12/26
|
||||
label: Vitesse
|
||||
derivee: true
|
||||
protection:
|
||||
type: number
|
||||
value: 0
|
||||
@@ -384,7 +419,6 @@ prototypeToken:
|
||||
detectionModes: []
|
||||
appendNumber: false
|
||||
prependAdjective: false
|
||||
hexagonalShape: 0
|
||||
occludable:
|
||||
radius: 0
|
||||
ring:
|
||||
@@ -396,9 +430,19 @@ prototypeToken:
|
||||
subject:
|
||||
scale: 1
|
||||
texture: null
|
||||
turnMarker:
|
||||
mode: 1
|
||||
animation: null
|
||||
src: null
|
||||
disposition: false
|
||||
movementAction: null
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
flags: {}
|
||||
_key: '!actors!igtHarwizNIUhd8M'
|
||||
|
||||
|
||||
@@ -30,7 +30,11 @@ items:
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
_key: '!actors.items!X7j6D136KAhFvItD.shsUV8UpU18c0RJK'
|
||||
- _id: JTuBQCPdumw3DfxH
|
||||
name: Crête
|
||||
@@ -59,7 +63,11 @@ items:
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
_key: '!actors.items!X7j6D136KAhFvItD.JTuBQCPdumw3DfxH'
|
||||
- _id: yDHZfK4RmwQW4YaW
|
||||
name: Discrétion
|
||||
@@ -88,7 +96,11 @@ items:
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
_key: '!actors.items!X7j6D136KAhFvItD.yDHZfK4RmwQW4YaW'
|
||||
- _id: CYpxxf1uTa78NWR9
|
||||
name: Esquive
|
||||
@@ -117,7 +129,11 @@ items:
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
_key: '!actors.items!X7j6D136KAhFvItD.CYpxxf1uTa78NWR9'
|
||||
- _id: efl1HdDSKpBfImQ1
|
||||
name: Pierre Lancée
|
||||
@@ -146,7 +162,11 @@ items:
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
_key: '!actors.items!X7j6D136KAhFvItD.efl1HdDSKpBfImQ1'
|
||||
- _id: OzHBowOMADRwcVXR
|
||||
name: Pierre Tenue
|
||||
@@ -175,7 +195,11 @@ items:
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
_key: '!actors.items!X7j6D136KAhFvItD.OzHBowOMADRwcVXR'
|
||||
- _id: lzEdMrKXbOYrWG5S
|
||||
name: Vigilance
|
||||
@@ -204,7 +228,11 @@ items:
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
_key: '!actors.items!X7j6D136KAhFvItD.lzEdMrKXbOYrWG5S'
|
||||
- _id: 2G5PanD98Nj91PQD
|
||||
name: Saut
|
||||
@@ -232,7 +260,12 @@ items:
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
flags: {}
|
||||
_key: '!actors.items!X7j6D136KAhFvItD.2G5PanD98Nj91PQD'
|
||||
effects: []
|
||||
folder: null
|
||||
@@ -299,16 +332,16 @@ system:
|
||||
value: '+2'
|
||||
label: +dom
|
||||
derivee: true
|
||||
vitesse:
|
||||
type: string
|
||||
value: 14/26
|
||||
label: Vitesse
|
||||
derivee: true
|
||||
encombrement:
|
||||
type: number
|
||||
value: 0
|
||||
label: Encombrement
|
||||
derivee: false
|
||||
vitesse:
|
||||
type: string
|
||||
value: 14/26
|
||||
label: Vitesse
|
||||
derivee: true
|
||||
protection:
|
||||
type: number
|
||||
value: 4
|
||||
@@ -413,7 +446,6 @@ prototypeToken:
|
||||
detectionModes: []
|
||||
appendNumber: false
|
||||
prependAdjective: false
|
||||
hexagonalShape: 0
|
||||
occludable:
|
||||
radius: 0
|
||||
ring:
|
||||
@@ -425,9 +457,19 @@ prototypeToken:
|
||||
subject:
|
||||
scale: 1
|
||||
texture: null
|
||||
turnMarker:
|
||||
mode: 1
|
||||
animation: null
|
||||
src: null
|
||||
disposition: false
|
||||
movementAction: null
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
flags: {}
|
||||
_key: '!actors!X7j6D136KAhFvItD'
|
||||
|
||||
|
||||
@@ -30,7 +30,11 @@ items:
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
_key: '!actors.items!f6wzOaOzdwy51prt.shsUV8UpU18c0RJK'
|
||||
- _id: yDHZfK4RmwQW4YaW
|
||||
name: Discrétion
|
||||
@@ -59,7 +63,11 @@ items:
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
_key: '!actors.items!f6wzOaOzdwy51prt.yDHZfK4RmwQW4YaW'
|
||||
- _id: CYpxxf1uTa78NWR9
|
||||
name: Esquive
|
||||
@@ -88,7 +96,11 @@ items:
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
_key: '!actors.items!f6wzOaOzdwy51prt.CYpxxf1uTa78NWR9'
|
||||
- _id: BjqRrGtHtTzuNpZB
|
||||
name: Griffes et Crocs
|
||||
@@ -117,7 +129,11 @@ items:
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
_key: '!actors.items!f6wzOaOzdwy51prt.BjqRrGtHtTzuNpZB'
|
||||
- _id: lzEdMrKXbOYrWG5S
|
||||
name: Vigilance
|
||||
@@ -146,7 +162,11 @@ items:
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
_key: '!actors.items!f6wzOaOzdwy51prt.lzEdMrKXbOYrWG5S'
|
||||
effects: []
|
||||
folder: null
|
||||
@@ -213,16 +233,16 @@ system:
|
||||
value: '+1'
|
||||
label: +dom
|
||||
derivee: true
|
||||
vitesse:
|
||||
type: string
|
||||
value: 12/24
|
||||
label: Vitesse
|
||||
derivee: true
|
||||
encombrement:
|
||||
type: number
|
||||
value: 0
|
||||
label: Encombrement
|
||||
derivee: false
|
||||
vitesse:
|
||||
type: string
|
||||
value: 12/24
|
||||
label: Vitesse
|
||||
derivee: true
|
||||
protection:
|
||||
type: number
|
||||
value: 0
|
||||
@@ -335,7 +355,6 @@ prototypeToken:
|
||||
detectionModes: []
|
||||
appendNumber: false
|
||||
prependAdjective: false
|
||||
hexagonalShape: 0
|
||||
occludable:
|
||||
radius: 0
|
||||
ring:
|
||||
@@ -347,9 +366,19 @@ prototypeToken:
|
||||
subject:
|
||||
scale: 1
|
||||
texture: null
|
||||
turnMarker:
|
||||
mode: 1
|
||||
animation: null
|
||||
src: null
|
||||
disposition: false
|
||||
movementAction: null
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
flags: {}
|
||||
_key: '!actors!f6wzOaOzdwy51prt'
|
||||
|
||||
|
||||
@@ -30,7 +30,11 @@ items:
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
_key: '!actors.items!VCRmWnhzCF9tJTD0.yDHZfK4RmwQW4YaW'
|
||||
effects: []
|
||||
folder: null
|
||||
@@ -97,16 +101,16 @@ system:
|
||||
value: '-'
|
||||
label: +dom
|
||||
derivee: true
|
||||
vitesse:
|
||||
type: string
|
||||
value: '-'
|
||||
label: Vitesse
|
||||
derivee: true
|
||||
encombrement:
|
||||
type: number
|
||||
value: '-'
|
||||
label: Encombrement
|
||||
derivee: false
|
||||
vitesse:
|
||||
type: string
|
||||
value: '-'
|
||||
label: Vitesse
|
||||
derivee: true
|
||||
protection:
|
||||
type: number
|
||||
value: '-'
|
||||
@@ -212,7 +216,6 @@ prototypeToken:
|
||||
detectionModes: []
|
||||
appendNumber: false
|
||||
prependAdjective: false
|
||||
hexagonalShape: 0
|
||||
occludable:
|
||||
radius: 0
|
||||
ring:
|
||||
@@ -224,9 +227,19 @@ prototypeToken:
|
||||
subject:
|
||||
scale: 1
|
||||
texture: null
|
||||
turnMarker:
|
||||
mode: 1
|
||||
animation: null
|
||||
src: null
|
||||
disposition: false
|
||||
movementAction: null
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
flags: {}
|
||||
_key: '!actors!VCRmWnhzCF9tJTD0'
|
||||
|
||||
|
||||
@@ -30,7 +30,11 @@ items:
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
_key: '!actors.items!OWuf2ryyCtipWnpE.shsUV8UpU18c0RJK'
|
||||
- _id: 4GmpkphbsmQjvVVK
|
||||
name: Escalade
|
||||
@@ -59,7 +63,11 @@ items:
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
_key: '!actors.items!OWuf2ryyCtipWnpE.4GmpkphbsmQjvVVK'
|
||||
- _id: CYpxxf1uTa78NWR9
|
||||
name: Esquive
|
||||
@@ -88,7 +96,11 @@ items:
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
_key: '!actors.items!OWuf2ryyCtipWnpE.CYpxxf1uTa78NWR9'
|
||||
- _id: BjqRrGtHtTzuNpZB
|
||||
name: Griffes et Crocs
|
||||
@@ -117,7 +129,11 @@ items:
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
_key: '!actors.items!OWuf2ryyCtipWnpE.BjqRrGtHtTzuNpZB'
|
||||
- _id: lzEdMrKXbOYrWG5S
|
||||
name: Vigilance
|
||||
@@ -146,7 +162,11 @@ items:
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
_key: '!actors.items!OWuf2ryyCtipWnpE.lzEdMrKXbOYrWG5S'
|
||||
- _id: wxT2H9CD43z4LlnS
|
||||
name: Saut
|
||||
@@ -174,7 +194,12 @@ items:
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
flags: {}
|
||||
_key: '!actors.items!OWuf2ryyCtipWnpE.wxT2H9CD43z4LlnS'
|
||||
effects: []
|
||||
folder: null
|
||||
@@ -241,16 +266,16 @@ system:
|
||||
value: '+5'
|
||||
label: +dom
|
||||
derivee: true
|
||||
vitesse:
|
||||
type: string
|
||||
value: 12/36
|
||||
label: Vitesse
|
||||
derivee: true
|
||||
encombrement:
|
||||
type: number
|
||||
value: 0
|
||||
label: Encombrement
|
||||
derivee: false
|
||||
vitesse:
|
||||
type: string
|
||||
value: 12/36
|
||||
label: Vitesse
|
||||
derivee: true
|
||||
protection:
|
||||
type: number
|
||||
value: 3
|
||||
@@ -353,7 +378,6 @@ prototypeToken:
|
||||
detectionModes: []
|
||||
appendNumber: false
|
||||
prependAdjective: false
|
||||
hexagonalShape: 0
|
||||
occludable:
|
||||
radius: 0
|
||||
ring:
|
||||
@@ -365,9 +389,19 @@ prototypeToken:
|
||||
subject:
|
||||
scale: 1
|
||||
texture: null
|
||||
turnMarker:
|
||||
mode: 1
|
||||
animation: null
|
||||
src: null
|
||||
disposition: false
|
||||
movementAction: null
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
flags: {}
|
||||
_key: '!actors!OWuf2ryyCtipWnpE'
|
||||
|
||||
|
||||
@@ -30,7 +30,11 @@ items:
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
_key: '!actors.items!BgXjyfnolHRQNWCj.CYpxxf1uTa78NWR9'
|
||||
- _id: ndNshntOYb1JFNqi
|
||||
name: Serres
|
||||
@@ -59,7 +63,11 @@ items:
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
_key: '!actors.items!BgXjyfnolHRQNWCj.ndNshntOYb1JFNqi'
|
||||
effects: []
|
||||
folder: null
|
||||
@@ -126,16 +134,16 @@ system:
|
||||
value: '+0'
|
||||
label: +dom
|
||||
derivee: true
|
||||
vitesse:
|
||||
type: string
|
||||
value: 12/36
|
||||
label: Vitesse
|
||||
derivee: true
|
||||
encombrement:
|
||||
type: number
|
||||
value: 0
|
||||
label: Encombrement
|
||||
derivee: false
|
||||
vitesse:
|
||||
type: string
|
||||
value: 12/36
|
||||
label: Vitesse
|
||||
derivee: true
|
||||
protection:
|
||||
type: number
|
||||
value: 4
|
||||
@@ -174,15 +182,14 @@ system:
|
||||
agressivité s’appliquant aux humanoïdes. S’agissant
|
||||
d’un pouvoir inné, elles n’ont ni à monter dans
|
||||
les TMR, ni à dépenser de points de rêve. La victime
|
||||
doit jouer un jet de résistance standard, @roll[reve-actuel/-8], et en cas
|
||||
d’échec, réussir un jet de @roll[Volonté/-3]
|
||||
pour pouvoir attaquer la harpie. Le JR n’est à jouer
|
||||
qu’une seule fois, tandis qu’en cas d’échec, le jet
|
||||
de VOLONTÉ est à jouer tous les rounds. La non
|
||||
agressivité ne s’applique qu’à
|
||||
l’égard de la harpie qui l’a lancée, et une harpie
|
||||
ne peut pas réutiliser son pouvoir sur un personnage qui a
|
||||
réussi son JR.</p>
|
||||
doit jouer un jet de résistance standard, @roll[reve-actuel/-8], et
|
||||
en cas d’échec, réussir un jet de @roll[Volonté/-3] pour
|
||||
pouvoir attaquer la harpie. Le JR n’est à jouer qu’une
|
||||
seule fois, tandis qu’en cas d’échec, le jet de
|
||||
VOLONTÉ est à jouer tous les rounds. La non agressivité
|
||||
ne s’applique qu’à l’égard de la harpie qui
|
||||
l’a lancée, et une harpie ne peut pas réutiliser son
|
||||
pouvoir sur un personnage qui a réussi son JR.</p>
|
||||
race: ''
|
||||
notesmj: ''
|
||||
ownership:
|
||||
@@ -251,7 +258,6 @@ prototypeToken:
|
||||
detectionModes: []
|
||||
appendNumber: false
|
||||
prependAdjective: false
|
||||
hexagonalShape: 0
|
||||
occludable:
|
||||
radius: 0
|
||||
ring:
|
||||
@@ -263,9 +269,19 @@ prototypeToken:
|
||||
subject:
|
||||
scale: 1
|
||||
texture: null
|
||||
turnMarker:
|
||||
mode: 1
|
||||
animation: null
|
||||
src: null
|
||||
disposition: false
|
||||
movementAction: null
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
flags: {}
|
||||
_key: '!actors!BgXjyfnolHRQNWCj'
|
||||
|
||||
|
||||
@@ -30,7 +30,11 @@ items:
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
_key: '!actors.items!lHt8Tyexy3qzAerO.shsUV8UpU18c0RJK'
|
||||
- _id: CYpxxf1uTa78NWR9
|
||||
name: Esquive
|
||||
@@ -59,7 +63,11 @@ items:
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
_key: '!actors.items!lHt8Tyexy3qzAerO.CYpxxf1uTa78NWR9'
|
||||
- _id: BjqRrGtHtTzuNpZB
|
||||
name: Griffes et Crocs
|
||||
@@ -88,7 +96,11 @@ items:
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
_key: '!actors.items!lHt8Tyexy3qzAerO.BjqRrGtHtTzuNpZB'
|
||||
- _id: lzEdMrKXbOYrWG5S
|
||||
name: Vigilance
|
||||
@@ -117,7 +129,11 @@ items:
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
_key: '!actors.items!lHt8Tyexy3qzAerO.lzEdMrKXbOYrWG5S'
|
||||
- _id: 4JttwOCHxLNbsW4R
|
||||
name: Saut
|
||||
@@ -145,7 +161,12 @@ items:
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
flags: {}
|
||||
_key: '!actors.items!lHt8Tyexy3qzAerO.4JttwOCHxLNbsW4R'
|
||||
effects: []
|
||||
folder: null
|
||||
@@ -212,16 +233,16 @@ system:
|
||||
value: '+1'
|
||||
label: +dom
|
||||
derivee: true
|
||||
vitesse:
|
||||
type: string
|
||||
value: 12/24
|
||||
label: Vitesse
|
||||
derivee: true
|
||||
encombrement:
|
||||
type: number
|
||||
value: 0
|
||||
label: Encombrement
|
||||
derivee: false
|
||||
vitesse:
|
||||
type: string
|
||||
value: 12/24
|
||||
label: Vitesse
|
||||
derivee: true
|
||||
protection:
|
||||
type: number
|
||||
value: 2
|
||||
@@ -320,7 +341,6 @@ prototypeToken:
|
||||
detectionModes: []
|
||||
appendNumber: false
|
||||
prependAdjective: false
|
||||
hexagonalShape: 0
|
||||
occludable:
|
||||
radius: 0
|
||||
ring:
|
||||
@@ -332,9 +352,19 @@ prototypeToken:
|
||||
subject:
|
||||
scale: 1
|
||||
texture: null
|
||||
turnMarker:
|
||||
mode: 1
|
||||
animation: null
|
||||
src: null
|
||||
disposition: false
|
||||
movementAction: null
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
flags: {}
|
||||
_key: '!actors!lHt8Tyexy3qzAerO'
|
||||
|
||||
|
||||
@@ -30,7 +30,11 @@ items:
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
_key: '!actors.items!YjBDfNoLA7rlofsh.CYpxxf1uTa78NWR9'
|
||||
- _id: h9ASt4vrvEgxfj7j
|
||||
name: Tronçonneuse
|
||||
@@ -59,7 +63,11 @@ items:
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
_key: '!actors.items!YjBDfNoLA7rlofsh.h9ASt4vrvEgxfj7j'
|
||||
- _id: lzEdMrKXbOYrWG5S
|
||||
name: Vigilance
|
||||
@@ -88,7 +96,11 @@ items:
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
_key: '!actors.items!YjBDfNoLA7rlofsh.lzEdMrKXbOYrWG5S'
|
||||
- _id: Kt7WlB5Ui97X211z
|
||||
name: Vol
|
||||
@@ -117,7 +129,11 @@ items:
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
_key: '!actors.items!YjBDfNoLA7rlofsh.Kt7WlB5Ui97X211z'
|
||||
effects: []
|
||||
folder: null
|
||||
@@ -184,16 +200,16 @@ system:
|
||||
value: 0
|
||||
label: +dom
|
||||
derivee: true
|
||||
vitesse:
|
||||
type: string
|
||||
value: '-/40'
|
||||
label: Vitesse
|
||||
derivee: true
|
||||
encombrement:
|
||||
type: number
|
||||
value: 0
|
||||
label: Encombrement
|
||||
derivee: false
|
||||
vitesse:
|
||||
type: string
|
||||
value: '-/40'
|
||||
label: Vitesse
|
||||
derivee: true
|
||||
protection:
|
||||
type: number
|
||||
value: -6
|
||||
@@ -299,7 +315,6 @@ prototypeToken:
|
||||
detectionModes: []
|
||||
appendNumber: false
|
||||
prependAdjective: false
|
||||
hexagonalShape: 0
|
||||
occludable:
|
||||
radius: 0
|
||||
ring:
|
||||
@@ -311,9 +326,19 @@ prototypeToken:
|
||||
subject:
|
||||
scale: 1
|
||||
texture: null
|
||||
turnMarker:
|
||||
mode: 1
|
||||
animation: null
|
||||
src: null
|
||||
disposition: false
|
||||
movementAction: null
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
flags: {}
|
||||
_key: '!actors!YjBDfNoLA7rlofsh'
|
||||
|
||||
|
||||
@@ -30,7 +30,11 @@ items:
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
_key: '!actors.items!99I06oTwCziLTnnl.shsUV8UpU18c0RJK'
|
||||
- _id: yDHZfK4RmwQW4YaW
|
||||
name: Discrétion
|
||||
@@ -59,7 +63,11 @@ items:
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
_key: '!actors.items!99I06oTwCziLTnnl.yDHZfK4RmwQW4YaW'
|
||||
- _id: CYpxxf1uTa78NWR9
|
||||
name: Esquive
|
||||
@@ -88,7 +96,11 @@ items:
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
_key: '!actors.items!99I06oTwCziLTnnl.CYpxxf1uTa78NWR9'
|
||||
- _id: 6DK46pyO0hzEuuUg
|
||||
name: Morsure
|
||||
@@ -117,7 +129,11 @@ items:
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
_key: '!actors.items!99I06oTwCziLTnnl.6DK46pyO0hzEuuUg'
|
||||
- _id: lzEdMrKXbOYrWG5S
|
||||
name: Vigilance
|
||||
@@ -146,7 +162,11 @@ items:
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
_key: '!actors.items!99I06oTwCziLTnnl.lzEdMrKXbOYrWG5S'
|
||||
- _id: PBS6YfmZLbSbwzpH
|
||||
name: Saut
|
||||
@@ -174,7 +194,12 @@ items:
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
flags: {}
|
||||
_key: '!actors.items!99I06oTwCziLTnnl.PBS6YfmZLbSbwzpH'
|
||||
effects: []
|
||||
folder: null
|
||||
@@ -241,16 +266,16 @@ system:
|
||||
value: '+0'
|
||||
label: +dom
|
||||
derivee: true
|
||||
vitesse:
|
||||
type: string
|
||||
value: 12/38
|
||||
label: Vitesse
|
||||
derivee: true
|
||||
encombrement:
|
||||
type: number
|
||||
value: 0
|
||||
label: Encombrement
|
||||
derivee: false
|
||||
vitesse:
|
||||
type: string
|
||||
value: 12/38
|
||||
label: Vitesse
|
||||
derivee: true
|
||||
protection:
|
||||
type: number
|
||||
value: 0
|
||||
@@ -353,7 +378,6 @@ prototypeToken:
|
||||
detectionModes: []
|
||||
appendNumber: false
|
||||
prependAdjective: false
|
||||
hexagonalShape: 0
|
||||
occludable:
|
||||
radius: 0
|
||||
ring:
|
||||
@@ -365,9 +389,19 @@ prototypeToken:
|
||||
subject:
|
||||
scale: 1
|
||||
texture: null
|
||||
turnMarker:
|
||||
mode: 1
|
||||
animation: null
|
||||
src: null
|
||||
disposition: false
|
||||
movementAction: null
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
flags: {}
|
||||
_key: '!actors!99I06oTwCziLTnnl'
|
||||
|
||||
|
||||
@@ -30,7 +30,11 @@ items:
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
_key: '!actors.items!DsE2xomX97onO2mN.shsUV8UpU18c0RJK'
|
||||
- _id: yDHZfK4RmwQW4YaW
|
||||
name: Discrétion
|
||||
@@ -59,7 +63,11 @@ items:
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
_key: '!actors.items!DsE2xomX97onO2mN.yDHZfK4RmwQW4YaW'
|
||||
- _id: CYpxxf1uTa78NWR9
|
||||
name: Esquive
|
||||
@@ -88,7 +96,11 @@ items:
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
_key: '!actors.items!DsE2xomX97onO2mN.CYpxxf1uTa78NWR9'
|
||||
- _id: 6DK46pyO0hzEuuUg
|
||||
name: Morsure
|
||||
@@ -117,7 +129,11 @@ items:
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
_key: '!actors.items!DsE2xomX97onO2mN.6DK46pyO0hzEuuUg'
|
||||
- _id: efl1HdDSKpBfImQ1
|
||||
name: Pierre Lancée
|
||||
@@ -146,7 +162,11 @@ items:
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
_key: '!actors.items!DsE2xomX97onO2mN.efl1HdDSKpBfImQ1'
|
||||
- _id: lzEdMrKXbOYrWG5S
|
||||
name: Vigilance
|
||||
@@ -175,7 +195,11 @@ items:
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
_key: '!actors.items!DsE2xomX97onO2mN.lzEdMrKXbOYrWG5S'
|
||||
- _id: WJq3afIoq0xUV2dF
|
||||
name: Saut
|
||||
@@ -203,7 +227,12 @@ items:
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
flags: {}
|
||||
_key: '!actors.items!DsE2xomX97onO2mN.WJq3afIoq0xUV2dF'
|
||||
effects: []
|
||||
folder: null
|
||||
@@ -270,16 +299,16 @@ system:
|
||||
value: -1
|
||||
label: +dom
|
||||
derivee: true
|
||||
vitesse:
|
||||
type: string
|
||||
value: 12/30
|
||||
label: Vitesse
|
||||
derivee: true
|
||||
encombrement:
|
||||
type: number
|
||||
value: 0
|
||||
label: Encombrement
|
||||
derivee: false
|
||||
vitesse:
|
||||
type: string
|
||||
value: 12/30
|
||||
label: Vitesse
|
||||
derivee: true
|
||||
protection:
|
||||
type: number
|
||||
value: 0
|
||||
@@ -391,7 +420,6 @@ prototypeToken:
|
||||
detectionModes: []
|
||||
appendNumber: false
|
||||
prependAdjective: false
|
||||
hexagonalShape: 0
|
||||
occludable:
|
||||
radius: 0
|
||||
ring:
|
||||
@@ -403,9 +431,19 @@ prototypeToken:
|
||||
subject:
|
||||
scale: 1
|
||||
texture: null
|
||||
turnMarker:
|
||||
mode: 1
|
||||
animation: null
|
||||
src: null
|
||||
disposition: false
|
||||
movementAction: null
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
flags: {}
|
||||
_key: '!actors!DsE2xomX97onO2mN'
|
||||
|
||||
|
||||
@@ -30,7 +30,11 @@ items:
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
_key: '!actors.items!i7pvn7kgTwIdKYtP.shsUV8UpU18c0RJK'
|
||||
- _id: CYpxxf1uTa78NWR9
|
||||
name: Esquive
|
||||
@@ -59,7 +63,11 @@ items:
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
_key: '!actors.items!i7pvn7kgTwIdKYtP.CYpxxf1uTa78NWR9'
|
||||
- _id: 6DK46pyO0hzEuuUg
|
||||
name: Morsure
|
||||
@@ -88,7 +96,11 @@ items:
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
_key: '!actors.items!i7pvn7kgTwIdKYtP.6DK46pyO0hzEuuUg'
|
||||
- _id: lzEdMrKXbOYrWG5S
|
||||
name: Vigilance
|
||||
@@ -117,7 +129,11 @@ items:
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
_key: '!actors.items!i7pvn7kgTwIdKYtP.lzEdMrKXbOYrWG5S'
|
||||
- _id: 3MgAaUHeKGBcbyr5
|
||||
name: Coup de pied
|
||||
@@ -145,7 +161,12 @@ items:
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
flags: {}
|
||||
_key: '!actors.items!i7pvn7kgTwIdKYtP.3MgAaUHeKGBcbyr5'
|
||||
effects: []
|
||||
folder: null
|
||||
@@ -212,16 +233,16 @@ system:
|
||||
value: '+4'
|
||||
label: +dom
|
||||
derivee: true
|
||||
vitesse:
|
||||
type: string
|
||||
value: 12/40
|
||||
label: Vitesse
|
||||
derivee: true
|
||||
encombrement:
|
||||
type: number
|
||||
value: 18
|
||||
label: Encombrement
|
||||
derivee: false
|
||||
vitesse:
|
||||
type: string
|
||||
value: 12/40
|
||||
label: Vitesse
|
||||
derivee: true
|
||||
protection:
|
||||
type: number
|
||||
value: 1
|
||||
@@ -307,7 +328,6 @@ prototypeToken:
|
||||
detectionModes: []
|
||||
appendNumber: false
|
||||
prependAdjective: false
|
||||
hexagonalShape: 0
|
||||
occludable:
|
||||
radius: 0
|
||||
ring:
|
||||
@@ -319,9 +339,19 @@ prototypeToken:
|
||||
subject:
|
||||
scale: 1
|
||||
texture: null
|
||||
turnMarker:
|
||||
mode: 1
|
||||
animation: null
|
||||
src: null
|
||||
disposition: false
|
||||
movementAction: null
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
flags: {}
|
||||
_key: '!actors!i7pvn7kgTwIdKYtP'
|
||||
|
||||
|
||||
@@ -30,7 +30,11 @@ items:
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
_key: '!actors.items!0ogeNTXl7IwYfWZR.Kt7WlB5Ui97X211z'
|
||||
effects: []
|
||||
folder: null
|
||||
@@ -97,16 +101,16 @@ system:
|
||||
value: '-'
|
||||
label: +dom
|
||||
derivee: true
|
||||
vitesse:
|
||||
type: string
|
||||
value: '-/40'
|
||||
label: Vitesse
|
||||
derivee: true
|
||||
encombrement:
|
||||
type: number
|
||||
value: 0
|
||||
label: Encombrement
|
||||
derivee: false
|
||||
vitesse:
|
||||
type: string
|
||||
value: '-/40'
|
||||
label: Vitesse
|
||||
derivee: true
|
||||
protection:
|
||||
type: number
|
||||
value: -8
|
||||
@@ -214,7 +218,6 @@ prototypeToken:
|
||||
detectionModes: []
|
||||
appendNumber: false
|
||||
prependAdjective: false
|
||||
hexagonalShape: 0
|
||||
occludable:
|
||||
radius: 0
|
||||
ring:
|
||||
@@ -226,9 +229,19 @@ prototypeToken:
|
||||
subject:
|
||||
scale: 1
|
||||
texture: null
|
||||
turnMarker:
|
||||
mode: 1
|
||||
animation: null
|
||||
src: null
|
||||
disposition: false
|
||||
movementAction: null
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
flags: {}
|
||||
_key: '!actors!0ogeNTXl7IwYfWZR'
|
||||
|
||||
|
||||
@@ -30,7 +30,11 @@ items:
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
_key: '!actors.items!c2CVCRQY3FiZXFre.shsUV8UpU18c0RJK'
|
||||
- _id: qilRzXpVaGceNmQp
|
||||
name: Dague
|
||||
@@ -59,7 +63,11 @@ items:
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
_key: '!actors.items!c2CVCRQY3FiZXFre.qilRzXpVaGceNmQp'
|
||||
- _id: yDHZfK4RmwQW4YaW
|
||||
name: Discrétion
|
||||
@@ -88,7 +96,11 @@ items:
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
_key: '!actors.items!c2CVCRQY3FiZXFre.yDHZfK4RmwQW4YaW'
|
||||
- _id: CYpxxf1uTa78NWR9
|
||||
name: Esquive
|
||||
@@ -117,7 +129,11 @@ items:
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
_key: '!actors.items!c2CVCRQY3FiZXFre.CYpxxf1uTa78NWR9'
|
||||
- _id: BjqRrGtHtTzuNpZB
|
||||
name: Griffes et Crocs
|
||||
@@ -146,7 +162,11 @@ items:
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
_key: '!actors.items!c2CVCRQY3FiZXFre.BjqRrGtHtTzuNpZB'
|
||||
- _id: lzEdMrKXbOYrWG5S
|
||||
name: Vigilance
|
||||
@@ -175,7 +195,11 @@ items:
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
_key: '!actors.items!c2CVCRQY3FiZXFre.lzEdMrKXbOYrWG5S'
|
||||
- _id: tqslo53FM201P3PM
|
||||
name: Saut
|
||||
@@ -203,7 +227,12 @@ items:
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
flags: {}
|
||||
_key: '!actors.items!c2CVCRQY3FiZXFre.tqslo53FM201P3PM'
|
||||
effects: []
|
||||
folder: null
|
||||
@@ -270,16 +299,16 @@ system:
|
||||
value: '+2'
|
||||
label: +dom
|
||||
derivee: true
|
||||
vitesse:
|
||||
type: string
|
||||
value: 14/42
|
||||
label: Vitesse
|
||||
derivee: true
|
||||
encombrement:
|
||||
type: number
|
||||
value: 0
|
||||
label: Encombrement
|
||||
derivee: false
|
||||
vitesse:
|
||||
type: string
|
||||
value: 14/42
|
||||
label: Vitesse
|
||||
derivee: true
|
||||
protection:
|
||||
type: number
|
||||
value: 2
|
||||
@@ -383,7 +412,6 @@ prototypeToken:
|
||||
detectionModes: []
|
||||
appendNumber: false
|
||||
prependAdjective: false
|
||||
hexagonalShape: 0
|
||||
occludable:
|
||||
radius: 0
|
||||
ring:
|
||||
@@ -395,9 +423,19 @@ prototypeToken:
|
||||
subject:
|
||||
scale: 1
|
||||
texture: null
|
||||
turnMarker:
|
||||
mode: 1
|
||||
animation: null
|
||||
src: null
|
||||
disposition: false
|
||||
movementAction: null
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
flags: {}
|
||||
_key: '!actors!c2CVCRQY3FiZXFre'
|
||||
|
||||
|
||||
@@ -30,7 +30,11 @@ items:
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
_key: '!actors.items!eGvgsF9uiR4vKLB2.shsUV8UpU18c0RJK'
|
||||
- _id: 4GmpkphbsmQjvVVK
|
||||
name: Escalade
|
||||
@@ -59,7 +63,11 @@ items:
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
_key: '!actors.items!eGvgsF9uiR4vKLB2.4GmpkphbsmQjvVVK'
|
||||
- _id: CYpxxf1uTa78NWR9
|
||||
name: Esquive
|
||||
@@ -88,7 +96,11 @@ items:
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
_key: '!actors.items!eGvgsF9uiR4vKLB2.CYpxxf1uTa78NWR9'
|
||||
- _id: BjqRrGtHtTzuNpZB
|
||||
name: Griffes et Crocs
|
||||
@@ -117,7 +129,11 @@ items:
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
_key: '!actors.items!eGvgsF9uiR4vKLB2.BjqRrGtHtTzuNpZB'
|
||||
- _id: lzEdMrKXbOYrWG5S
|
||||
name: Vigilance
|
||||
@@ -146,7 +162,11 @@ items:
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
_key: '!actors.items!eGvgsF9uiR4vKLB2.lzEdMrKXbOYrWG5S'
|
||||
- _id: 8O8e3Msr2KPZqwkY
|
||||
name: Saut
|
||||
@@ -174,7 +194,12 @@ items:
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
flags: {}
|
||||
_key: '!actors.items!eGvgsF9uiR4vKLB2.8O8e3Msr2KPZqwkY'
|
||||
effects: []
|
||||
folder: null
|
||||
@@ -241,16 +266,16 @@ system:
|
||||
value: '+3'
|
||||
label: +dom
|
||||
derivee: true
|
||||
vitesse:
|
||||
type: string
|
||||
value: 14/28
|
||||
label: Vitesse
|
||||
derivee: true
|
||||
encombrement:
|
||||
type: number
|
||||
value: 0
|
||||
label: Encombrement
|
||||
derivee: false
|
||||
vitesse:
|
||||
type: string
|
||||
value: 14/28
|
||||
label: Vitesse
|
||||
derivee: true
|
||||
protection:
|
||||
type: number
|
||||
value: 5
|
||||
@@ -357,7 +382,6 @@ prototypeToken:
|
||||
detectionModes: []
|
||||
appendNumber: false
|
||||
prependAdjective: false
|
||||
hexagonalShape: 0
|
||||
occludable:
|
||||
radius: 0
|
||||
ring:
|
||||
@@ -369,9 +393,19 @@ prototypeToken:
|
||||
subject:
|
||||
scale: 1
|
||||
texture: null
|
||||
turnMarker:
|
||||
mode: 1
|
||||
animation: null
|
||||
src: null
|
||||
disposition: false
|
||||
movementAction: null
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
flags: {}
|
||||
_key: '!actors!eGvgsF9uiR4vKLB2'
|
||||
|
||||
|
||||
@@ -29,7 +29,12 @@ items:
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
flags: {}
|
||||
_key: '!actors.items!icS4ht40EGkUbUus.0z35nbSeViandim4'
|
||||
- _id: w1BjJ6evq83ZMieY
|
||||
name: Esquive
|
||||
@@ -57,7 +62,12 @@ items:
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
flags: {}
|
||||
_key: '!actors.items!icS4ht40EGkUbUus.w1BjJ6evq83ZMieY'
|
||||
- _id: dv9QLfHGa5ZwDN7l
|
||||
name: Course
|
||||
@@ -85,7 +95,12 @@ items:
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
flags: {}
|
||||
_key: '!actors.items!icS4ht40EGkUbUus.dv9QLfHGa5ZwDN7l'
|
||||
- _id: VdLbNp5bz8hU6KDl
|
||||
name: Discrétion
|
||||
@@ -113,7 +128,12 @@ items:
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
flags: {}
|
||||
_key: '!actors.items!icS4ht40EGkUbUus.VdLbNp5bz8hU6KDl'
|
||||
- _id: TXC25fwUDxF6Qp5A
|
||||
name: Vigilance
|
||||
@@ -141,7 +161,12 @@ items:
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
flags: {}
|
||||
_key: '!actors.items!icS4ht40EGkUbUus.TXC25fwUDxF6Qp5A'
|
||||
effects: []
|
||||
folder: null
|
||||
@@ -208,16 +233,16 @@ system:
|
||||
value: 0
|
||||
label: +dom
|
||||
derivee: true
|
||||
vitesse:
|
||||
type: string
|
||||
value: 0
|
||||
label: Vitesse
|
||||
derivee: true
|
||||
encombrement:
|
||||
type: number
|
||||
value: 0
|
||||
label: Encombrement
|
||||
derivee: false
|
||||
vitesse:
|
||||
type: string
|
||||
value: 0
|
||||
label: Vitesse
|
||||
derivee: true
|
||||
protection:
|
||||
type: number
|
||||
value: 0
|
||||
@@ -364,7 +389,6 @@ prototypeToken:
|
||||
detectionModes: []
|
||||
appendNumber: false
|
||||
prependAdjective: false
|
||||
hexagonalShape: 0
|
||||
occludable:
|
||||
radius: 0
|
||||
ring:
|
||||
@@ -376,9 +400,19 @@ prototypeToken:
|
||||
subject:
|
||||
scale: 1
|
||||
texture: null
|
||||
turnMarker:
|
||||
mode: 1
|
||||
animation: null
|
||||
src: null
|
||||
disposition: false
|
||||
movementAction: null
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
flags: {}
|
||||
_key: '!actors!icS4ht40EGkUbUus'
|
||||
|
||||
|
||||
@@ -30,7 +30,11 @@ items:
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
_key: '!actors.items!sAcoQO3vvDDEJFva.shsUV8UpU18c0RJK'
|
||||
- _id: yDHZfK4RmwQW4YaW
|
||||
name: Discrétion
|
||||
@@ -59,7 +63,11 @@ items:
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
_key: '!actors.items!sAcoQO3vvDDEJFva.yDHZfK4RmwQW4YaW'
|
||||
- _id: CYpxxf1uTa78NWR9
|
||||
name: Esquive
|
||||
@@ -88,7 +96,11 @@ items:
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
_key: '!actors.items!sAcoQO3vvDDEJFva.CYpxxf1uTa78NWR9'
|
||||
- _id: BjqRrGtHtTzuNpZB
|
||||
name: Griffes et Crocs
|
||||
@@ -117,7 +129,11 @@ items:
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
_key: '!actors.items!sAcoQO3vvDDEJFva.BjqRrGtHtTzuNpZB'
|
||||
- _id: lzEdMrKXbOYrWG5S
|
||||
name: Vigilance
|
||||
@@ -146,7 +162,11 @@ items:
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
_key: '!actors.items!sAcoQO3vvDDEJFva.lzEdMrKXbOYrWG5S'
|
||||
- _id: WML1KyyQrFRbmsLn
|
||||
name: Saut
|
||||
@@ -174,7 +194,12 @@ items:
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
flags: {}
|
||||
_key: '!actors.items!sAcoQO3vvDDEJFva.WML1KyyQrFRbmsLn'
|
||||
effects: []
|
||||
folder: null
|
||||
@@ -241,16 +266,16 @@ system:
|
||||
value: '+0'
|
||||
label: +dom
|
||||
derivee: true
|
||||
vitesse:
|
||||
type: string
|
||||
value: 12/32
|
||||
label: Vitesse
|
||||
derivee: true
|
||||
encombrement:
|
||||
type: number
|
||||
value: 0
|
||||
label: Encombrement
|
||||
derivee: false
|
||||
vitesse:
|
||||
type: string
|
||||
value: 12/32
|
||||
label: Vitesse
|
||||
derivee: true
|
||||
protection:
|
||||
type: number
|
||||
value: 0
|
||||
@@ -354,7 +379,6 @@ prototypeToken:
|
||||
detectionModes: []
|
||||
appendNumber: false
|
||||
prependAdjective: false
|
||||
hexagonalShape: 0
|
||||
occludable:
|
||||
radius: 0
|
||||
ring:
|
||||
@@ -366,9 +390,19 @@ prototypeToken:
|
||||
subject:
|
||||
scale: 1
|
||||
texture: null
|
||||
turnMarker:
|
||||
mode: 1
|
||||
animation: null
|
||||
src: null
|
||||
disposition: false
|
||||
movementAction: null
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
flags: {}
|
||||
_key: '!actors!sAcoQO3vvDDEJFva'
|
||||
|
||||
|
||||
@@ -30,7 +30,11 @@ items:
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
_key: '!actors.items!YwqgGvzxMTgYZFyc.yDHZfK4RmwQW4YaW'
|
||||
- _id: CYpxxf1uTa78NWR9
|
||||
name: Esquive
|
||||
@@ -59,7 +63,11 @@ items:
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
_key: '!actors.items!YwqgGvzxMTgYZFyc.CYpxxf1uTa78NWR9'
|
||||
- _id: 6DK46pyO0hzEuuUg
|
||||
name: Morsure
|
||||
@@ -88,7 +96,11 @@ items:
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
_key: '!actors.items!YwqgGvzxMTgYZFyc.6DK46pyO0hzEuuUg'
|
||||
- _id: lzEdMrKXbOYrWG5S
|
||||
name: Vigilance
|
||||
@@ -117,7 +129,11 @@ items:
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
_key: '!actors.items!YwqgGvzxMTgYZFyc.lzEdMrKXbOYrWG5S'
|
||||
effects: []
|
||||
folder: null
|
||||
@@ -184,16 +200,16 @@ system:
|
||||
value: -4
|
||||
label: +dom
|
||||
derivee: true
|
||||
vitesse:
|
||||
type: string
|
||||
value: 8/14
|
||||
label: Vitesse
|
||||
derivee: true
|
||||
encombrement:
|
||||
type: number
|
||||
value: 0
|
||||
label: Encombrement
|
||||
derivee: false
|
||||
vitesse:
|
||||
type: string
|
||||
value: 8/14
|
||||
label: Vitesse
|
||||
derivee: true
|
||||
protection:
|
||||
type: number
|
||||
value: -8
|
||||
@@ -289,7 +305,6 @@ prototypeToken:
|
||||
detectionModes: []
|
||||
appendNumber: false
|
||||
prependAdjective: false
|
||||
hexagonalShape: 0
|
||||
occludable:
|
||||
radius: 0
|
||||
ring:
|
||||
@@ -301,9 +316,19 @@ prototypeToken:
|
||||
subject:
|
||||
scale: 1
|
||||
texture: null
|
||||
turnMarker:
|
||||
mode: 1
|
||||
animation: null
|
||||
src: null
|
||||
disposition: false
|
||||
movementAction: null
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
flags: {}
|
||||
_key: '!actors!YwqgGvzxMTgYZFyc'
|
||||
|
||||
|
||||
@@ -30,7 +30,11 @@ items:
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
_key: '!actors.items!NZfwIplunfOuuzuD.CYpxxf1uTa78NWR9'
|
||||
- _id: BjqRrGtHtTzuNpZB
|
||||
name: Griffes et Crocs
|
||||
@@ -59,7 +63,11 @@ items:
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
_key: '!actors.items!NZfwIplunfOuuzuD.BjqRrGtHtTzuNpZB'
|
||||
- _id: wDH57NvDsoN8IwhS
|
||||
name: Esquive (sol)
|
||||
@@ -87,7 +95,12 @@ items:
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
flags: {}
|
||||
_key: '!actors.items!NZfwIplunfOuuzuD.wDH57NvDsoN8IwhS'
|
||||
effects: []
|
||||
folder: null
|
||||
@@ -154,16 +167,16 @@ system:
|
||||
value: '+0'
|
||||
label: +dom
|
||||
derivee: true
|
||||
vitesse:
|
||||
type: string
|
||||
value: 'Sol : 4/0 Eau : 12/24'
|
||||
label: Vitesse
|
||||
derivee: true
|
||||
encombrement:
|
||||
type: number
|
||||
value: 0
|
||||
label: Encombrement
|
||||
derivee: false
|
||||
vitesse:
|
||||
type: string
|
||||
value: 'Sol : 4/0 Eau : 12/24'
|
||||
label: Vitesse
|
||||
derivee: true
|
||||
protection:
|
||||
type: number
|
||||
value: 2
|
||||
@@ -220,10 +233,10 @@ system:
|
||||
corps, même visage. Certaines sirènes, plus rarement, donnent
|
||||
des illusions d’hommes. Contrairement aux illusions des Yeux
|
||||
d’Hypnos, l’illusion des sirènes donne lieu à un
|
||||
jet de résistance (standard, @roll[reve-actuel/-8]). Comme pour les chants, ce JR est
|
||||
global : s’il réussit, toutes les sirènes apparaissent
|
||||
sous leur véritable apparence; s’il échoue, toutes sont
|
||||
perçues sous leur apparence illusoire.</p>
|
||||
jet de résistance (standard, @roll[reve-actuel/-8]). Comme pour les
|
||||
chants, ce JR est global : s’il réussit, toutes les
|
||||
sirènes apparaissent sous leur véritable apparence; s’il
|
||||
échoue, toutes sont perçues sous leur apparence illusoire.</p>
|
||||
|
||||
<h1>Alternatives</h1>
|
||||
|
||||
@@ -310,7 +323,6 @@ prototypeToken:
|
||||
detectionModes: []
|
||||
appendNumber: false
|
||||
prependAdjective: false
|
||||
hexagonalShape: 0
|
||||
occludable:
|
||||
radius: 0
|
||||
ring:
|
||||
@@ -322,9 +334,19 @@ prototypeToken:
|
||||
subject:
|
||||
scale: 1
|
||||
texture: null
|
||||
turnMarker:
|
||||
mode: 1
|
||||
animation: null
|
||||
src: null
|
||||
disposition: false
|
||||
movementAction: null
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
flags: {}
|
||||
_key: '!actors!NZfwIplunfOuuzuD'
|
||||
|
||||
|
||||
@@ -30,7 +30,11 @@ items:
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
_key: '!actors.items!dfssLNfeAGrUe70T.shsUV8UpU18c0RJK'
|
||||
- _id: yDHZfK4RmwQW4YaW
|
||||
name: Discrétion
|
||||
@@ -59,7 +63,11 @@ items:
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
_key: '!actors.items!dfssLNfeAGrUe70T.yDHZfK4RmwQW4YaW'
|
||||
- _id: CYpxxf1uTa78NWR9
|
||||
name: Esquive
|
||||
@@ -87,7 +95,12 @@ items:
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
flags: {}
|
||||
_key: '!actors.items!dfssLNfeAGrUe70T.CYpxxf1uTa78NWR9'
|
||||
- _id: BjqRrGtHtTzuNpZB
|
||||
name: Griffes et Crocs
|
||||
@@ -115,7 +128,12 @@ items:
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
flags: {}
|
||||
_key: '!actors.items!dfssLNfeAGrUe70T.BjqRrGtHtTzuNpZB'
|
||||
- _id: lzEdMrKXbOYrWG5S
|
||||
name: Vigilance
|
||||
@@ -144,7 +162,11 @@ items:
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
_key: '!actors.items!dfssLNfeAGrUe70T.lzEdMrKXbOYrWG5S'
|
||||
- _id: MBJkmpxzFM0ZJyyS
|
||||
name: Saut
|
||||
@@ -172,7 +194,12 @@ items:
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
flags: {}
|
||||
_key: '!actors.items!dfssLNfeAGrUe70T.MBJkmpxzFM0ZJyyS'
|
||||
effects: []
|
||||
folder: null
|
||||
@@ -239,16 +266,16 @@ system:
|
||||
value: '+5'
|
||||
label: +dom
|
||||
derivee: true
|
||||
vitesse:
|
||||
type: string
|
||||
value: 14/48
|
||||
label: Vitesse
|
||||
derivee: true
|
||||
encombrement:
|
||||
type: number
|
||||
value: 0
|
||||
label: Encombrement
|
||||
derivee: false
|
||||
vitesse:
|
||||
type: string
|
||||
value: 14/48
|
||||
label: Vitesse
|
||||
derivee: true
|
||||
protection:
|
||||
type: number
|
||||
value: 4
|
||||
@@ -345,7 +372,6 @@ prototypeToken:
|
||||
detectionModes: []
|
||||
appendNumber: false
|
||||
prependAdjective: false
|
||||
hexagonalShape: 0
|
||||
occludable:
|
||||
radius: 0
|
||||
ring:
|
||||
@@ -357,9 +383,19 @@ prototypeToken:
|
||||
subject:
|
||||
scale: 1
|
||||
texture: null
|
||||
turnMarker:
|
||||
mode: 1
|
||||
animation: null
|
||||
src: null
|
||||
disposition: false
|
||||
movementAction: null
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
flags: {}
|
||||
_key: '!actors!dfssLNfeAGrUe70T'
|
||||
|
||||
|
||||
@@ -30,7 +30,11 @@ items:
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
_key: '!actors.items!e4KXDpAj4seWov6A.NctG7suzvGE7ZZzj'
|
||||
- _id: shsUV8UpU18c0RJK
|
||||
name: Course
|
||||
@@ -59,7 +63,11 @@ items:
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
_key: '!actors.items!e4KXDpAj4seWov6A.shsUV8UpU18c0RJK'
|
||||
- _id: CYpxxf1uTa78NWR9
|
||||
name: Esquive
|
||||
@@ -88,7 +96,11 @@ items:
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
_key: '!actors.items!e4KXDpAj4seWov6A.CYpxxf1uTa78NWR9'
|
||||
- _id: lzEdMrKXbOYrWG5S
|
||||
name: Vigilance
|
||||
@@ -117,7 +129,11 @@ items:
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
_key: '!actors.items!e4KXDpAj4seWov6A.lzEdMrKXbOYrWG5S'
|
||||
effects: []
|
||||
folder: null
|
||||
@@ -184,16 +200,16 @@ system:
|
||||
value: '+7'
|
||||
label: +dom
|
||||
derivee: true
|
||||
vitesse:
|
||||
type: string
|
||||
value: 14/30
|
||||
label: Vitesse
|
||||
derivee: true
|
||||
encombrement:
|
||||
type: number
|
||||
value: 0
|
||||
label: Encombrement
|
||||
derivee: false
|
||||
vitesse:
|
||||
type: string
|
||||
value: 14/30
|
||||
label: Vitesse
|
||||
derivee: true
|
||||
protection:
|
||||
type: number
|
||||
value: 8
|
||||
@@ -228,18 +244,18 @@ system:
|
||||
désolations et autres lieux où Thanatos a laissé son
|
||||
empreinte. Ils possèdent le même pouvoir de non
|
||||
agressivité s’appliquant aux humanoïdes que la harpie. La
|
||||
victime doit jouer un jet de résistance standard, @roll[reve-actuel/-8], et en cas
|
||||
d’échec, réussir un jet de @roll[Volonté/-3]
|
||||
pour pouvoir attaquer le tournedent. Le JR n’est à jouer
|
||||
qu’une seule fois, et en cas d’échec, le jet de
|
||||
VOLONTÉ est à jouer tous les rounds. La non agressivité
|
||||
ne s’applique qu’à l’égard du tournedent qui
|
||||
l’a lancée, et il ne peut pas réutiliser son pouvoir sur
|
||||
un personnage qui a réussi son JR. En combat, les bras-bouches du
|
||||
tournedent sont capables de parer comme s’ils étaient des
|
||||
épées (mêmes limitations). Ses réussites
|
||||
particulières sont usuellement passées en
|
||||
<em>rapidité</em>.</p>
|
||||
victime doit jouer un jet de résistance standard,
|
||||
@roll[reve-actuel/-8], et en cas d’échec, réussir un jet
|
||||
de @roll[Volonté/-3] pour pouvoir attaquer le tournedent. Le JR n’est
|
||||
à jouer qu’une seule fois, et en cas d’échec, le
|
||||
jet de VOLONTÉ est à jouer tous les rounds. La non
|
||||
agressivité ne s’applique qu’à
|
||||
l’égard du tournedent qui l’a lancée, et il ne
|
||||
peut pas réutiliser son pouvoir sur un personnage qui a réussi
|
||||
son JR. En combat, les bras-bouches du tournedent sont capables de parer
|
||||
comme s’ils étaient des épées (mêmes
|
||||
limitations). Ses réussites particulières sont usuellement
|
||||
passées en <em>rapidité</em>.</p>
|
||||
race: ''
|
||||
notesmj: ''
|
||||
ownership:
|
||||
@@ -308,7 +324,6 @@ prototypeToken:
|
||||
detectionModes: []
|
||||
appendNumber: false
|
||||
prependAdjective: false
|
||||
hexagonalShape: 0
|
||||
occludable:
|
||||
radius: 0
|
||||
ring:
|
||||
@@ -320,9 +335,19 @@ prototypeToken:
|
||||
subject:
|
||||
scale: 1
|
||||
texture: null
|
||||
turnMarker:
|
||||
mode: 1
|
||||
animation: null
|
||||
src: null
|
||||
disposition: false
|
||||
movementAction: null
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
flags: {}
|
||||
_key: '!actors!e4KXDpAj4seWov6A'
|
||||
|
||||
|
||||
@@ -30,7 +30,11 @@ items:
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
_key: '!actors.items!PwcnOb8HIb6mBcFo.yDHZfK4RmwQW4YaW'
|
||||
- _id: CYpxxf1uTa78NWR9
|
||||
name: Esquive
|
||||
@@ -59,7 +63,11 @@ items:
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
_key: '!actors.items!PwcnOb8HIb6mBcFo.CYpxxf1uTa78NWR9'
|
||||
- _id: 6DK46pyO0hzEuuUg
|
||||
name: Morsure
|
||||
@@ -88,7 +96,11 @@ items:
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
_key: '!actors.items!PwcnOb8HIb6mBcFo.6DK46pyO0hzEuuUg'
|
||||
- _id: lzEdMrKXbOYrWG5S
|
||||
name: Vigilance
|
||||
@@ -117,7 +129,11 @@ items:
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
_key: '!actors.items!PwcnOb8HIb6mBcFo.lzEdMrKXbOYrWG5S'
|
||||
effects: []
|
||||
folder: null
|
||||
@@ -184,16 +200,16 @@ system:
|
||||
value: -5
|
||||
label: +dom
|
||||
derivee: true
|
||||
vitesse:
|
||||
type: string
|
||||
value: 10/16
|
||||
label: Vitesse
|
||||
derivee: true
|
||||
encombrement:
|
||||
type: number
|
||||
value: 0
|
||||
label: Encombrement
|
||||
derivee: false
|
||||
vitesse:
|
||||
type: string
|
||||
value: 10/16
|
||||
label: Vitesse
|
||||
derivee: true
|
||||
protection:
|
||||
type: number
|
||||
value: -8
|
||||
@@ -285,7 +301,6 @@ prototypeToken:
|
||||
detectionModes: []
|
||||
appendNumber: false
|
||||
prependAdjective: false
|
||||
hexagonalShape: 0
|
||||
occludable:
|
||||
radius: 0
|
||||
ring:
|
||||
@@ -297,9 +312,19 @@ prototypeToken:
|
||||
subject:
|
||||
scale: 1
|
||||
texture: null
|
||||
turnMarker:
|
||||
mode: 1
|
||||
animation: null
|
||||
src: null
|
||||
disposition: false
|
||||
movementAction: null
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
flags: {}
|
||||
_key: '!actors!PwcnOb8HIb6mBcFo'
|
||||
|
||||
|
||||
@@ -30,7 +30,11 @@ items:
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
_key: '!actors.items!ZjE5HioS5N2GX88S.CYpxxf1uTa78NWR9'
|
||||
- _id: 5LRlcObZfaefTV6j
|
||||
name: Pinces
|
||||
@@ -58,7 +62,12 @@ items:
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
flags: {}
|
||||
_key: '!actors.items!ZjE5HioS5N2GX88S.5LRlcObZfaefTV6j'
|
||||
effects: []
|
||||
folder: null
|
||||
@@ -125,16 +134,16 @@ system:
|
||||
value: '+2'
|
||||
label: +dom
|
||||
derivee: true
|
||||
vitesse:
|
||||
type: string
|
||||
value: 12/24
|
||||
label: Vitesse
|
||||
derivee: true
|
||||
encombrement:
|
||||
type: number
|
||||
value: 0
|
||||
label: Encombrement
|
||||
derivee: false
|
||||
vitesse:
|
||||
type: string
|
||||
value: 12/24
|
||||
label: Vitesse
|
||||
derivee: true
|
||||
protection:
|
||||
type: number
|
||||
value: 4
|
||||
@@ -230,7 +239,6 @@ prototypeToken:
|
||||
detectionModes: []
|
||||
appendNumber: false
|
||||
prependAdjective: false
|
||||
hexagonalShape: 0
|
||||
occludable:
|
||||
radius: 0
|
||||
ring:
|
||||
@@ -242,9 +250,19 @@ prototypeToken:
|
||||
subject:
|
||||
scale: 1
|
||||
texture: null
|
||||
turnMarker:
|
||||
mode: 1
|
||||
animation: null
|
||||
src: null
|
||||
disposition: false
|
||||
movementAction: null
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
flags: {}
|
||||
_key: '!actors!ZjE5HioS5N2GX88S'
|
||||
|
||||
|
||||
@@ -30,7 +30,11 @@ items:
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
_key: '!actors.items!m5clAUpf4PKPD7E9.os88Rsp7mBkahqmh'
|
||||
- _id: CYpxxf1uTa78NWR9
|
||||
name: Esquive (vol)
|
||||
@@ -59,7 +63,11 @@ items:
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
_key: '!actors.items!m5clAUpf4PKPD7E9.CYpxxf1uTa78NWR9'
|
||||
- _id: lzEdMrKXbOYrWG5S
|
||||
name: Vigilance
|
||||
@@ -88,7 +96,11 @@ items:
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
_key: '!actors.items!m5clAUpf4PKPD7E9.lzEdMrKXbOYrWG5S'
|
||||
effects: []
|
||||
folder: null
|
||||
@@ -155,16 +167,16 @@ system:
|
||||
value: '+1'
|
||||
label: +dom
|
||||
derivee: true
|
||||
vitesse:
|
||||
type: string
|
||||
value: 12/36
|
||||
label: Vitesse
|
||||
derivee: true
|
||||
encombrement:
|
||||
type: number
|
||||
value: 0
|
||||
label: Encombrement
|
||||
derivee: false
|
||||
vitesse:
|
||||
type: string
|
||||
value: 12/36
|
||||
label: Vitesse
|
||||
derivee: true
|
||||
protection:
|
||||
type: number
|
||||
value: 2
|
||||
@@ -264,7 +276,6 @@ prototypeToken:
|
||||
detectionModes: []
|
||||
appendNumber: false
|
||||
prependAdjective: false
|
||||
hexagonalShape: 0
|
||||
occludable:
|
||||
radius: 0
|
||||
ring:
|
||||
@@ -276,9 +287,19 @@ prototypeToken:
|
||||
subject:
|
||||
scale: 1
|
||||
texture: null
|
||||
turnMarker:
|
||||
mode: 1
|
||||
animation: null
|
||||
src: null
|
||||
disposition: false
|
||||
movementAction: null
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
flags: {}
|
||||
_key: '!actors!m5clAUpf4PKPD7E9'
|
||||
|
||||
|
||||
@@ -30,7 +30,11 @@ items:
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
_key: '!actors.items!31XA4x5Yk04TGUHR.os88Rsp7mBkahqmh'
|
||||
- _id: shsUV8UpU18c0RJK
|
||||
name: Course
|
||||
@@ -59,7 +63,11 @@ items:
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
_key: '!actors.items!31XA4x5Yk04TGUHR.shsUV8UpU18c0RJK'
|
||||
- _id: CYpxxf1uTa78NWR9
|
||||
name: Esquive
|
||||
@@ -88,7 +96,11 @@ items:
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
_key: '!actors.items!31XA4x5Yk04TGUHR.CYpxxf1uTa78NWR9'
|
||||
- _id: lzEdMrKXbOYrWG5S
|
||||
name: Vigilance
|
||||
@@ -117,7 +129,11 @@ items:
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
_key: '!actors.items!31XA4x5Yk04TGUHR.lzEdMrKXbOYrWG5S'
|
||||
effects: []
|
||||
folder: null
|
||||
@@ -184,16 +200,16 @@ system:
|
||||
value: '+1'
|
||||
label: +dom
|
||||
derivee: true
|
||||
vitesse:
|
||||
type: string
|
||||
value: 12/36
|
||||
label: Vitesse
|
||||
derivee: true
|
||||
encombrement:
|
||||
type: number
|
||||
value: 12
|
||||
label: Encombrement
|
||||
derivee: false
|
||||
vitesse:
|
||||
type: string
|
||||
value: 12/36
|
||||
label: Vitesse
|
||||
derivee: true
|
||||
protection:
|
||||
type: number
|
||||
value: 0
|
||||
@@ -306,7 +322,6 @@ prototypeToken:
|
||||
detectionModes: []
|
||||
appendNumber: false
|
||||
prependAdjective: false
|
||||
hexagonalShape: 0
|
||||
occludable:
|
||||
radius: 0
|
||||
ring:
|
||||
@@ -318,9 +333,19 @@ prototypeToken:
|
||||
subject:
|
||||
scale: 1
|
||||
texture: null
|
||||
turnMarker:
|
||||
mode: 1
|
||||
animation: null
|
||||
src: null
|
||||
disposition: false
|
||||
movementAction: null
|
||||
_stats:
|
||||
systemId: foundryvtt-reve-de-dragon
|
||||
systemVersion: 12.0.22
|
||||
coreVersion: '12.331'
|
||||
coreVersion: '13.350'
|
||||
lastModifiedBy: null
|
||||
compendiumSource: null
|
||||
duplicateSource: null
|
||||
exportSource: null
|
||||
flags: {}
|
||||
_key: '!actors!31XA4x5Yk04TGUHR'
|
||||
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user