Compare commits

...
Author SHA1 Message Date
VincentVk 36c771518d v13.0.21 2025-12-08 20:12:17 +01:00
VincentVk dd7a3700dc Appréciation des services 2025-12-08 20:10:56 +01:00
VincentVk f0736015a7 Surcharge de couleurs de style
Les titres dans les descriptions n'étaient pas bien affichés dans la
fenêtre de jet
2025-12-08 19:40:21 +01:00
VincentVk aae603d798 Appréciation de plats 2025-12-08 19:39:21 +01:00
VincentVk d9bc6309fb Correction des bonus des Cyans 2025-12-08 01:42:57 +01:00
VincentVk c14361919c Update compendiums 2025-12-08 01:42:55 +01:00
VincentVk b26c39cf21 Ajout des options d'appréciation
L'appréciation utilise:

- un niveau de qualité (qui réutilise la qualité sur les items en ayant)
- un bon moment (coeur/musique/...)
- un niveau de jet de moral
- une caractéristique (perception)
- une compétence

Les bon moments passés sont remis à zéro lors du passage de
château dormant.

Ajout des jets de moral très heureux.

Ajout de jet d'appréciation sur les résultats des oeuvres et des jeux.
2025-12-08 01:42:47 +01:00
VincentVk ca2d17bd25 Encombrement avec décimales 2025-12-07 23:48:41 +01:00
VincentVk a243209c90 Fix: selection parmi les cibles 2025-12-07 02:52:19 +01:00
VincentVk 90435c07b4 cleanup unused imports 2025-12-06 21:12:30 +01:00
VincentVk 46d09c7bd9 Dimension des zones editeur
amélioration des zones de saisie des éditeurs (journaux, ...)
2025-12-06 21:12:30 +01:00
VincentVk 05036877ed Possessions dans HUD
Permettre de commencer les possessions V2
2025-12-06 21:12:25 +01:00
VincentVk 98e8c7a10c Gestion de possession - fin de round
- affichage du message pour indiquer l'état d'une possession en fin de
round
- bouton de conjuration depuis la feuille de personnage
2025-12-05 20:12:14 +01:00
VincentVk 19cabe816e Gestion défense et compteur de possession 2025-12-05 20:12:14 +01:00
VincentVk 706aa657b1 Méthode rollPossession pour attaque possession
- Ajout d'une méthode pour ouvrir le dialogue en mode possession
- gestion des information de possession
- fenêtre défense possession
- préparation des messages de tchat
2025-12-05 20:12:09 +01:00
VincentVk fd3f988a4f Roll V2 mode possession 2025-11-28 19:44:06 +01:00
VincentVk 981282d809 Ajout de méthode getConjurations
Pour lister les compétences de possession/conjuration de manière
homogène (tout actor doué de rêve)
2025-11-28 00:04:16 +01:00
1212 changed files with 39815 additions and 9984 deletions
+1
View 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

+18
View File
@@ -1,5 +1,23 @@
# 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
+36 -11
View File
@@ -74,11 +74,12 @@ select,
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);
@@ -682,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;
@@ -738,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;
@@ -1388,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;
@@ -1402,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;
@@ -1424,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) {
+2 -1
View File
@@ -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);
+47 -26
View File
@@ -689,6 +689,7 @@
}
}
}
fieldset {
border-style: groove;
border-width: 0.1rem;
@@ -697,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;
@@ -738,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;
}
+12 -1
View File
@@ -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;
+4 -3
View File
@@ -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))
+77 -58
View File
@@ -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']
@@ -160,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) {
@@ -358,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`;
@@ -410,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) {
@@ -688,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,
@@ -1191,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;
@@ -1213,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
@@ -1241,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
}
/* -------------------------------------------- */
@@ -1306,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;
}
/* -------------------------------------------- */
@@ -1358,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);
}
}
@@ -1425,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;
@@ -1433,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) {
@@ -2564,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)
}
}
/* -------------------------------------------- */
+68 -15
View File
@@ -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,24 @@ 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() {
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) { }
/* -------------------------------------------- */
@@ -198,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);
}
@@ -555,6 +604,10 @@ export class RdDBaseActorReve extends RdDBaseActor {
})
}
rollPossession() {
RdDPossessionV2.rollAttaquePossession(this)
}
verifierForceMin(item) { }
/* -------------------------------------------- */
+7 -6
View File
@@ -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 }
@@ -516,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) {
@@ -848,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,
@@ -856,9 +862,4 @@ export class RdDBaseActor extends Actor {
}
})
}
listActionsCombat() {
const possessions = this.listActionsPossessions()
return possessions.length > 0 ? possessions : this.listActions({})
}
}
+11 -9
View File
@@ -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()) {
+9
View File
@@ -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 });
+2 -1
View File
@@ -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)
+1
View File
@@ -61,6 +61,7 @@ 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',
+1
View File
@@ -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)
+5 -1
View File
@@ -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) {
+17 -12
View File
@@ -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
}
+4
View File
@@ -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"
}
+24 -19
View File
@@ -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,
}
}
+1 -1
View File
@@ -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")
+37 -2
View File
@@ -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
View 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)
}
}
+2 -4
View File
@@ -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,
+3 -3
View File
@@ -89,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)()
}
});
}
+261
View 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 }])
}
}
}
}
+13 -10
View File
@@ -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 }
}
},
{
+1 -1
View File
@@ -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`
}
+17 -5
View File
@@ -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) {
+34 -9
View File
@@ -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 = {
+45 -16
View File
@@ -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)
+5 -5
View File
@@ -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,
}
}
}
+3 -2
View File
@@ -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 },
}
+37 -11
View File
@@ -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
View 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 []
}
}
+6 -1
View File
@@ -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 {
+2 -2
View File
@@ -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?
+1 -1
View File
@@ -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
View 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
}
}
+15 -5
View File
@@ -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) {
+6 -1
View File
@@ -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) {
+3 -1
View File
@@ -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
}
}
}
+6 -1
View File
@@ -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)
}
}
+2 -6
View File
@@ -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
View 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)
}
}
+1
View File
@@ -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 }
+4 -2
View File
@@ -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 []
}
/* -------------------------------------------- */
+2 -2
View File
@@ -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);
+9 -1
View File
@@ -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)))
}
}
}
@@ -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&eacute;chirure. Celle-l&agrave; se contente de chercher &agrave; fuir en
cas d&rsquo;agression, ou attaque toutes griffes dehors si elle se sent
accul&eacute;e. Pour la distinguer (visuellement) de la rieuse,
r&eacute;ussir @roll[VUE/Zoologie/-5]. Les caract&eacute;ristiques de
combat indiqu&eacute;es ne s&rsquo;appliquent qu&rsquo;&agrave; la
pointue.</p>
r&eacute;ussir @roll[VUE/Zoologie/-5]. Les caract&eacute;ristiques de combat
indiqu&eacute;es ne s&rsquo;appliquent qu&rsquo;&agrave; 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:
&agrave; sa victime qui perd alors automatiquement @roll[1d6] points
d&rsquo;endurance par round sous l&rsquo;effet de la saign&eacute;e. Quand
l&rsquo;endurance tombe &agrave; z&eacute;ro, le drakkule continue &agrave;
la vider de son sang &agrave; raison de @roll[1d6] points de vie par round. Le
drakkule ne se d&eacute;tache que <em>bless&eacute; gravement </em>ou
la vider de son sang &agrave; raison de @roll[1d6] points de vie par round.
Le drakkule ne se d&eacute;tache que <em>bless&eacute; gravement </em>ou
<em>sonn&eacute;</em>. Pour se d&eacute;gager, la victime ne peut utiliser
que Corps &agrave; corps (totaliser 2 points d&rsquo;empoignade) ou une
dague. Tant qu&rsquo;il est accroch&eacute;, 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&eacute; s&rsquo;appliquant aux humano&iuml;des. S&rsquo;agissant
d&rsquo;un pouvoir inn&eacute;, elles n&rsquo;ont ni &agrave; monter dans
les TMR, ni &agrave; d&eacute;penser de points de r&ecirc;ve. La victime
doit jouer un jet de r&eacute;sistance standard, @roll[reve-actuel/-8], et en cas
d&rsquo;&eacute;chec, r&eacute;ussir un jet de @roll[Volonté/-3]
pour pouvoir attaquer la harpie. Le JR n&rsquo;est &agrave; jouer
qu&rsquo;une seule fois, tandis qu&rsquo;en cas d&rsquo;&eacute;chec, le jet
de VOLONT&Eacute; est &agrave; jouer tous les rounds. La non
agressivit&eacute; ne s&rsquo;applique qu&rsquo;&agrave;
l&rsquo;&eacute;gard de la harpie qui l&rsquo;a lanc&eacute;e, et une harpie
ne peut pas r&eacute;utiliser son pouvoir sur un personnage qui a
r&eacute;ussi son JR.</p>
doit jouer un jet de r&eacute;sistance standard, @roll[reve-actuel/-8], et
en cas d&rsquo;&eacute;chec, r&eacute;ussir un jet de @roll[Volonté/-3] pour
pouvoir attaquer la harpie. Le JR n&rsquo;est &agrave; jouer qu&rsquo;une
seule fois, tandis qu&rsquo;en cas d&rsquo;&eacute;chec, le jet de
VOLONT&Eacute; est &agrave; jouer tous les rounds. La non agressivit&eacute;
ne s&rsquo;applique qu&rsquo;&agrave; l&rsquo;&eacute;gard de la harpie qui
l&rsquo;a lanc&eacute;e, et une harpie ne peut pas r&eacute;utiliser son
pouvoir sur un personnage qui a r&eacute;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&ecirc;me visage. Certaines sir&egrave;nes, plus rarement, donnent
des illusions d&rsquo;hommes. Contrairement aux illusions des Yeux
d&rsquo;Hypnos, l&rsquo;illusion des sir&egrave;nes donne lieu &agrave; un
jet de r&eacute;sistance (standard, @roll[reve-actuel/-8]). Comme pour les chants, ce JR est
global : s&rsquo;il r&eacute;ussit, toutes les sir&egrave;nes apparaissent
sous leur v&eacute;ritable apparence; s&rsquo;il &eacute;choue, toutes sont
per&ccedil;ues sous leur apparence illusoire.</p>
jet de r&eacute;sistance (standard, @roll[reve-actuel/-8]). Comme pour les
chants, ce JR est global : s&rsquo;il r&eacute;ussit, toutes les
sir&egrave;nes apparaissent sous leur v&eacute;ritable apparence; s&rsquo;il
&eacute;choue, toutes sont per&ccedil;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&eacute;solations et autres lieux o&ugrave; Thanatos a laiss&eacute; son
empreinte. Ils poss&egrave;dent le m&ecirc;me pouvoir de non
agressivit&eacute; s&rsquo;appliquant aux humano&iuml;des que la harpie. La
victime doit jouer un jet de r&eacute;sistance standard, @roll[reve-actuel/-8], et en cas
d&rsquo;&eacute;chec, r&eacute;ussir un jet de @roll[Volonté/-3]
pour pouvoir attaquer le tournedent. Le JR n&rsquo;est &agrave; jouer
qu&rsquo;une seule fois, et en cas d&rsquo;&eacute;chec, le jet de
VOLONT&Eacute; est &agrave; jouer tous les rounds. La non agressivit&eacute;
ne s&rsquo;applique qu&rsquo;&agrave; l&rsquo;&eacute;gard du tournedent qui
l&rsquo;a lanc&eacute;e, et il ne peut pas r&eacute;utiliser son pouvoir sur
un personnage qui a r&eacute;ussi son JR. En combat, les bras-bouches du
tournedent sont capables de parer comme s&rsquo;ils &eacute;taient des
&eacute;p&eacute;es (m&ecirc;mes limitations). Ses r&eacute;ussites
particuli&egrave;res sont usuellement pass&eacute;es en
<em>rapidit&eacute;</em>.</p>
victime doit jouer un jet de r&eacute;sistance standard,
@roll[reve-actuel/-8], et en cas d&rsquo;&eacute;chec, r&eacute;ussir un jet
de @roll[Volonté/-3] pour pouvoir attaquer le tournedent. Le JR n&rsquo;est
&agrave; jouer qu&rsquo;une seule fois, et en cas d&rsquo;&eacute;chec, le
jet de VOLONT&Eacute; est &agrave; jouer tous les rounds. La non
agressivit&eacute; ne s&rsquo;applique qu&rsquo;&agrave;
l&rsquo;&eacute;gard du tournedent qui l&rsquo;a lanc&eacute;e, et il ne
peut pas r&eacute;utiliser son pouvoir sur un personnage qui a r&eacute;ussi
son JR. En combat, les bras-bouches du tournedent sont capables de parer
comme s&rsquo;ils &eacute;taient des &eacute;p&eacute;es (m&ecirc;mes
limitations). Ses r&eacute;ussites particuli&egrave;res sont usuellement
pass&eacute;es en <em>rapidit&eacute;</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
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
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
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
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