Compare commits

..

57 Commits

Author SHA1 Message Date
8e578c6566 Merge pull request 'Fix: lien jets de dés' (#739) from VincentVk/foundryvtt-reve-de-dragon:v11 into v11
All checks were successful
Release Creation / build (release) Successful in 1m35s
Reviewed-on: #739
2025-01-13 23:44:45 +01:00
5ac9c682d9 Support difficulté numérique 2025-01-13 22:34:34 +01:00
6de19eb357 Convertir tous les jets de dés dans le tchat 2025-01-13 22:27:13 +01:00
90d096a6df Utilisation des class au lieu d'id
Un seul fichier oublié sur un changement précédent (pas de vrai
sauvegarde dans VSCode...)
2025-01-13 22:03:18 +01:00
c733644f3a Jets de compétence avec carac imposée
Fonctionne maintenant correctement

Pour les créatures/entitées: on fait au mieux, mais ça ne correspond
pas forcément bien, car les carac/compétences ne correspondent
pas toujours
2025-01-13 21:44:02 +01:00
de9d3bbb48 Difficultés aléatoires dans les maladresses 2025-01-13 20:10:11 +01:00
efdffd171c Support de difficultés aléatoires
Par exemple: `@roll[vue/vigil/-1d6]`
pour  "VUE / Vigilance à -1d6"
2025-01-13 19:46:55 +01:00
8406c8434a Fix: lien jets de dés
- les boutons pour envoyer dans le tchat sont affichés
- les jets de carac utilisent bien les compétences et difficulté
2025-01-13 19:25:55 +01:00
a4b474970c Merge pull request 'Fin des liens "jet de dés"' (#738) from VincentVk/foundryvtt-reve-de-dragon:v11 into v11
Reviewed-on: #738
2025-01-12 23:02:19 +01:00
135e5e46a0 Support des maladresses 2025-01-12 22:56:11 +01:00
969bc3b573 Liens de jets de dés dans le tchat 2025-01-12 22:56:11 +01:00
a9eb101c9d Merge pull request 'Liens jets de dés' (#737) from VincentVk/foundryvtt-reve-de-dragon:v11 into v11
Reviewed-on: #737
2025-01-12 16:15:33 +01:00
d53da1f011 Jets d'alchimie dans descriptions/journaux
On ne se limite plus aux manipulations alchimiques, et les jets
apparaissent comme tous les autres types de jets
2025-01-12 02:38:31 +01:00
ab0f7e563f Ajout de jets de dés dans les compendiums 2025-01-12 00:39:17 +01:00
57c41a0218 Utiliser perception/reve pour les créatures
Ces caractéristiques remplacent toutes les autres
2025-01-11 19:45:58 +01:00
1b75decb18 Utiliser les fenêtres de jets pour les jets 2025-01-11 19:29:29 +01:00
551438f514 Correction sur les liens de jets de dés
- correction jet de rêve actuel
- utilisation du personnage du joueur
2025-01-11 19:04:38 +01:00
792558ac84 Support @roll[2d6] 2025-01-11 17:32:43 +01:00
06aff9a3c0 Liens jets de dés dans les journaux 2025-01-11 02:21:11 +01:00
7e736a00d7 Gestion des blocs secrets dans les descriptions 2025-01-11 02:19:56 +01:00
b87f406093 Ajouter de "jet de dés" dans les descriptions,
On peut maintenant ajouter des liens dans les descriptions
(acteurs, items) et autres champs similaires.
2025-01-11 00:44:59 +01:00
785bd4b9ce Merge pull request '12.0.33 - la vieillesse d'Astrobazzarh' (#736) from VincentVk/foundryvtt-reve-de-dragon:v11 into v11
All checks were successful
Release Creation / build (release) Successful in 3m24s
Reviewed-on: #736
2025-01-10 20:40:36 +01:00
daca86b1df Fix: experience sur particulière 2025-01-10 19:37:34 +01:00
aa52e26e1a Fix: pas de message si carac exacte pas trouvée
La recherche se fait en deux temps, on avait un message d'erreur pour
odorat-gout
2025-01-09 00:16:52 +01:00
f956da1fc0 Merge pull request '12.0.32 - les rêveries d'Astrobazzarh' (#735) from VincentVk/foundryvtt-reve-de-dragon:v11 into v11
All checks were successful
Release Creation / build (release) Successful in 2m22s
Reviewed-on: #735
2024-12-29 22:01:08 +01:00
10971e9e7b Fix typo 2024-12-29 17:47:10 +01:00
a3e6b95ef3 Simplification import 2024-12-29 17:43:54 +01:00
d0a5a3617c Pas de drag depuis champs dérivés/biographie 2024-12-29 17:39:03 +01:00
755df936fb Cleanup valeurs numériques 2024-12-29 16:50:09 +01:00
2fa0ce5f15 Support de races
L'item "race" permet de paramétrer des ajustements de caracs,
des min/max de taille, et une limite de force.

Ajouter une race à un acteur enlève la/les races précédentes et ajoute
les modificateurs de caracs de la nouvelle race.

Enlever une race enlève les modificateurs de caracs de la race
aux caractéristiques
2024-12-29 16:50:08 +01:00
b4eed49e9a Correction compendiums Voies Draconic
Le nom des voies ne doit pas contenir "Voie de "
2024-12-28 22:36:09 +01:00
af4404aab1 Merge pull request 'Fix: automatisations de combat' (#734) from VincentVk/foundryvtt-reve-de-dragon:v11 into v11
All checks were successful
Release Creation / build (release) Successful in 1m28s
Reviewed-on: #734
2024-12-20 10:52:54 +01:00
85804bc838 Fix: automatisations de combat 2024-12-20 01:30:00 +01:00
ad4baecdf2 Merge pull request 'v11 Niveau des entités; compendiums venins' (#733) from VincentVk/foundryvtt-reve-de-dragon:v11 into v11
All checks were successful
Release Creation / build (release) Successful in 1m28s
Reviewed-on: #733
2024-12-18 23:48:32 +01:00
8dc5616d7c Fix: probleme de sauvegarde messages combat
Il était impossible de sauvegarde à cause d'une exception lors
de la création du flag car on accédait au Token.
2024-12-18 22:15:00 +01:00
db6b025e8f Liens vers les venins 2024-12-18 17:59:08 +01:00
7f53757f26 Pas de valeurs par défaut dans descriptions
Elles n'apportent pas grand chose
2024-12-18 17:38:23 +01:00
879d2d10e5 Mineur - ordre des attributs dérivés 2024-12-18 17:37:35 +01:00
016e4463bd Support d'apostrophe dans les noms
v2: simple escape seulement
2024-12-18 17:36:47 +01:00
1dfab01c4b Support espace insécable
Dans le poids, on a généralement un espace insécable
2024-12-18 17:36:15 +01:00
a9cb211dba Ne pas afficher l'âge si 0
Dans la feuille simplifiée, ne pas afficher l'âge si 0 (correspondant
en général à des acteurs non liés)
2024-12-18 17:28:50 +01:00
4dce510c91 Calcul automatique du niveau des entités 2024-12-18 17:27:50 +01:00
14abfa8e7d Merge pull request '12.0.29 - L'indexation d'Astrobazzarh' (#732) from VincentVk/foundryvtt-reve-de-dragon:v11 into v11
All checks were successful
Release Creation / build (release) Successful in 1m36s
Reviewed-on: #732
2024-12-17 07:11:59 +01:00
1f564e0d89 Meilleure extraction du nom
- cas des entités non incarnées
2024-12-17 01:51:23 +01:00
ab61d5991d Correction des liens vers les compendiums
Afin de permettre de naviguer, les liens référencent maintenant les
compendiums dans les sorts.

Le venin des charasmes est référencé depuis les chrasmes.
2024-12-17 01:39:41 +01:00
e3a858a9ef Meilleure détection type d'acteur
- entités: pas de force (cas des entités non incarnées)
- créatures: pas de vue / avec perception
sinon: personnages
2024-12-17 01:35:47 +01:00
4cacf46ed8 Import "protection naturelle" 2024-12-17 01:32:56 +01:00
5a5b5cdbb3 Ajustement dommages créatures
Les bonus aux dommages des créatures et entitées sont intégrés
dans les données importées, il faut donc retirer le plusdom de
l'acteur après création
2024-12-17 01:32:29 +01:00
f90dddfbf8 Le nom peut contenir une apostrophe 2024-12-14 23:21:50 +01:00
d04da56c22 Merge pull request 'Corrections imports et ajouts sorts en réserve' (#731) from VincentVk/foundryvtt-reve-de-dragon:v11 into v11
All checks were successful
Release Creation / build (release) Successful in 1m35s
Reviewed-on: #731
2024-12-14 16:48:39 +01:00
a87a4d371e Import de Nom avec tiret de séparation 2024-12-14 01:02:19 +01:00
c577fa5f29 Correction import niveau 0
Correction d'import pour armes au niveau 0 (ou négatif)
2024-12-14 00:51:32 +01:00
30303330d7 Correction import armes à deux mains
pluriel!
2024-12-14 00:50:51 +01:00
ded92ddf2d Déplacement update competences
Placé sur les feuilles d'acteurs qui ont des compétences
2024-12-14 00:38:39 +01:00
2d2b75e33f Chance actuelle sur feuille simplifiée
- Affichages boutons +/-

- Jet de chance actuelle

- Correction de la détermination de chance actuelle
parfois vide/undefined
2024-12-14 00:33:31 +01:00
a9b7dff83a Affichage du coût de seuil sur les sorts 2024-12-11 23:29:01 +01:00
75d6f78b40 Mettre en réserve depuis un sort
Ajout d'une icône pour mettre les sorts en réserve depuis la
liste de sorts
2024-12-11 23:22:20 +01:00
324 changed files with 6511 additions and 3620 deletions

View File

@ -1,4 +1,40 @@
# 12.0
## 12.0.34 - la tête d'Astrobazzarh
- support de liens "jets de dés"
- on peut ajouter des liens "jet de dés" dans les journaux, descriptions, notes, maladresses, ...
- avec la syntaxe `@roll[...]` on peut ajouter le lien vers:
- un jet de caractéristique/compétence `@roll[carac/competence/difficulte]` / `@roll[carac/difficulte]` / `@roll[carac/competence]`
- une formule foundry `@roll[2d6]` pour lancer 2d6
- une manipulation alchimique `@roll[couleur vert-bleu]`
- les liens "jet avec caractéristiques" s'appliquent:
- à tous les tokens sélectionnés
- sinon, à l'acteur propriétaire (dans le cas d'un Item) ou à l'acteur courant
- sinon, au personnage du joueur
- on peut poster les liens dans le tchat pour proposer un jet aux joueurs
- gestion des blocs secrets dans les descriptions
## 12.0.33 - la vieillesse d'Astrobazzarh
- retour de l'expérience pour les joueurs
- suppression du message "Pas de caractéristique" sur les jets d'odorat-goût
## 12.0.32 - les rêveries d'Astrobazzarh
- Ajout des Items Race pour gérer les ajustements liés aux races
## 12.0.31 - le mausolée d'Astrobazzarh
- Correction: les automatisation de combat jouer-MJ fonctionnentde nouveau
## 12.0.30 - le cauchemar d'Astrobazzarh
- calcul automatique du niveau des entités selon leur rêve
- la description des créatures venimeuses contient un lien vers leur venin
- Correction: les messages de combats ne marchaient plus (Changement combiné Foundry + rêve de Dragon)
## 12.0.29 - L'indexation d'Astrobazzarh
- les liens dans la descriptions des sorts pointent vers les sorts du compendium
- la description du chrasme contient le lien vers son venin plutôt qu'un tableau
## 12.0.28 - Les réserves d'Astrobazzarh
- possibilité de mettre en réserve depuis un sort connu
## 12.0.27 - Les vêtements d'Astrobazzarh
- Ajout de la liste des armures dans l'onglet caractéristiques
- Ajout d'une option pour choisir une carte des TMR alternatives
@ -115,11 +151,9 @@
- encodage de l'export en windows-1252
- export de l'esquive avec armure et sans armure
## 12.0.10 - Le scriptorium d'Astrobazzarh
## 12.0.9 - 12.0.10 - Le scriptorium d'Astrobazzarh
- corrections de l'export scriptarium
## 12.0.9 - Le scriptorium d'Astrobazzarh
- ajout d'une fonction avancée pour exporter les personnages dans un format csv
- ajout d'une fonction avancée pour un exporter "scriptarium" des personnages
## 12.0.8 - La quincaillerie d'Astrobazzarh
- le propriétaire est indiqué dans les feuilles d'équipements/compétences/...

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.3 KiB

View File

@ -40,6 +40,7 @@
"possession": "Possession",
"potion": "Potion",
"queue": "Queue de Dragon",
"race": "Race",
"recettealchimique": "Recette alchimique",
"recettecuisine": "Recette de cuisine",
"rencontre": "Rencontre TMR",

View File

@ -12,12 +12,14 @@ import { RdDSheetUtility } from "./rdd-sheet-utility.js";
import { STATUSES } from "./settings/status-effects.js";
import { MAINS_DIRECTRICES } from "./actor.js";
import { RdDBaseActorReveSheet } from "./actor/base-actor-reve-sheet.js";
import { RdDItem } from "./item.js";
import { ITEM_TYPES, RdDItem } from "./item.js";
import { RdDItemBlessure } from "./item/blessure.js";
import { RdDEmpoignade } from "./rdd-empoignade.js";
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 { RdDItemRace } from "./item/race.js";
import { RdDTextEditor } from "./apps/rdd-text-roll-editor.js";
/* -------------------------------------------- */
/**
@ -43,8 +45,8 @@ export class RdDActorSheet extends RdDBaseActorSangSheet {
cssClass: this.isEditable ? "editable" : "locked",
limited: this.actor.limited,
owner: this.actor.isOwner,
biographie: await TextEditor.enrichHTML(this.actor.system.biographie, { async: true }),
notes: await TextEditor.enrichHTML(this.actor.system.notes, { async: true }),
biographie: await RdDTextEditor.enrichHTML(this.actor.system.biographie, this.actor),
notes: await RdDTextEditor.enrichHTML(this.actor.system.notes, this.actor),
});
foundry.utils.mergeObject(formData.calc, {
surenc: this.actor.computeMalusSurEncombrement(),
@ -97,6 +99,7 @@ export class RdDActorSheet extends RdDBaseActorSangSheet {
cacheTMR: this.actor.isTMRCache()
}
formData.race = actor.itemTypes[ITEM_TYPES.race].find(it => true)
formData.subacteurs = {
vehicules: this.actor.listeVehicules(),
montures: this.actor.listeMontures(),
@ -183,7 +186,7 @@ export class RdDActorSheet extends RdDBaseActorSangSheet {
// Equip Inventory Item
this.html.find('.item-equip').click(async event => this.actor.equiperObjet(RdDSheetUtility.getItemId(event)))
this.html.find('.chance-actuelle').click(async event => this.actor.rollCarac('chance-actuelle'))
this.html.find('.roll-chance-actuelle').click(async event => this.actor.rollCarac('chance-actuelle'))
this.html.find('.button-appel-chance').click(async event => this.actor.rollAppelChance())
@ -214,12 +217,12 @@ export class RdDActorSheet extends RdDBaseActorSangSheet {
// Boutons spéciaux MJs
this.html.find('.forcer-tmr-aleatoire').click(async event => this.actor.reinsertionAleatoire("Action MJ"))
this.html.find('.don-de-haut-reve').click(async event => this.actor.addDonDeHautReve())
this.html.find('.nouveau-sort-reserve').click(async event => this.actor.addSortReserve())
this.html.find('.sortreserve-add').click(async event => this.actor.addSortReserve(RdDSheetUtility.getItemId(event)))
this.html.find('.afficher-tmr').click(async event => this.actor.changeTMRVisible())
}
// Points de reve actuel
this.html.find('.roll-reve-actuel').click(async event => this.actor.rollCarac('reve-actuel', true))
this.html.find('.roll-reve-actuel').click(async event => this.actor.rollCarac('reve-actuel', {resistance:true}))
this.html.find('.empoignade-label a').click(async event => RdDEmpoignade.onAttaqueEmpoignadeFromItem(RdDSheetUtility.getItem(event, this.actor)))
this.html.find('.roll-arme').click(async event => this.actor.rollArme(foundry.utils.duplicate(this._getEventArmeCombat(event)), 'competence'))
@ -284,6 +287,8 @@ export class RdDActorSheet extends RdDBaseActorSangSheet {
this.html.find('.ptreve-actuel-plus').click(async event => this.actor.reveActuelIncDec(1))
this.html.find('.ptreve-actuel-moins').click(async event => this.actor.reveActuelIncDec(-1))
this.html.find('.chance-actuelle-plus').click(async event => this.actor.chanceActuelleIncDec(1))
this.html.find('.chance-actuelle-moins').click(async event => this.actor.chanceActuelleIncDec(-1))
this.html.find('.fatigue-plus').click(async event => this.actor.santeIncDec("fatigue", 1))
this.html.find('.fatigue-moins').click(async event => this.actor.santeIncDec("fatigue", -1))
}

View File

@ -17,7 +17,7 @@ import { RdDItemSigneDraconique } from "./item/signedraconique.js";
import { ReglesOptionnelles } from "./settings/regles-optionnelles.js";
import { EffetsDraconiques } from "./tmr/effets-draconiques.js";
import { Draconique } from "./tmr/draconique.js";
import { RdDCarac } from "./rdd-carac.js";
import { LIST_CARAC_PERSONNAGE, RdDCarac } from "./rdd-carac.js";
import { DialogConsommer } from "./dialog-item-consommer.js";
import { DialogFabriquerPotion } from "./dialog-fabriquer-potion.js";
import { RollDataAjustements } from "./rolldata-ajustements.js";
@ -41,6 +41,7 @@ import { RdDCombatManager } from "./rdd-combat.js";
import { RdDItemTete } from "./item/tete.js";
import { DialogSelect } from "./dialog-select.js";
import { PAS_DE_DRACONIC, POSSESSION_SANS_DRACONIC } from "./item/base-items.js";
import { RdDItemRace } from "./item/race.js";
export const MAINS_DIRECTRICES = ['Droitier', 'Gaucher', 'Ambidextre']
@ -58,7 +59,7 @@ export class RdDActor extends RdDBaseActorSang {
*/
prepareActorData() {
this.system.carac.force.value = Math.min(this.system.carac.force.value, parseInt(this.system.carac.taille.value) + 4);
RdDItemRace.applyRacialLimits(this)
this.system.carac.melee.value = Math.floor((this.getForce() + parseInt(this.system.carac.agilite.value)) / 2);
this.system.carac.tir.value = Math.floor((parseInt(this.system.carac.vue.value) + parseInt(this.system.carac.dexterite.value)) / 2);
@ -95,11 +96,14 @@ export class RdDActor extends RdDBaseActorSang {
isHautRevant() { return this.system.attributs.hautrevant.value != "" }
/* -------------------------------------------- */
getAgilite() { return this.system.carac.agilite?.value ?? 0 }
getChance() { return this.system.carac.chance?.value ?? 0 }
getAgilite() { return Misc.toInt(this.system.carac.agilite?.value ?? 0) }
getChance() { return Misc.toInt(this.system.carac.chance?.value ?? 0) }
getReveActuel() { return this.system.reve?.reve?.value ?? this.carac.reve.value ?? 0 }
getChanceActuel() { return this.system.compteurs.chance?.value ?? 10 }
getReveActuel() { return Misc.toInt(this.system.reve?.reve?.value) ?? this.carac.reve.value ?? 0 }
getChanceActuel() {
return Number.isNumeric(this.system.compteurs.chance.value) ?
Misc.toInt(this.system.compteurs.chance.value) : this.getChance()
}
getMoralTotal() { return this.system.compteurs.moral?.value ?? 0 }
getEnduranceMax() { return Math.max(1, Math.max(this.getTaille() + this.getConstitution(), this.getVieMax() + this.getVolonte())) }
@ -657,18 +661,16 @@ export class RdDActor extends RdDBaseActorSang {
/* -------------------------------------------- */
async updateCarac(caracName, to) {
if (caracName == "force") {
if (Number(to) > this.getTaille() + 4) {
ui.notifications.warn("Votre FORCE doit être au maximum de TAILLE+4");
return;
}
to = Number(to)
if (!RdDItemRace.checkRacialMax(this, caracName, to)) {
return
}
if (caracName == "reve") {
if (caracName == LIST_CARAC_PERSONNAGE.reve.code) {
if (to > Misc.toInt(this.system.reve.seuil.value)) {
this.setPointsDeSeuil(to);
}
}
if (caracName == "chance") {
if (caracName == LIST_CARAC_PERSONNAGE.chance.code) {
if (to > Misc.toInt(this.system.compteurs.chance.value)) {
this.setPointsDeChance(to);
}
@ -991,21 +993,31 @@ export class RdDActor extends RdDBaseActorSang {
}
}
async addSortReserve() {
async addSortReserve(itemId) {
if (itemId) {
const item = this.items.get(itemId)
if (item.type == ITEM_TYPES.sort && !item.system.isrituel) {
this.$createSortReserve(item)
return
}
}
const selectSortReserve = {
title: "Créer un sort en réserve",
label: "Choisir un sort",
list: this.itemTypes[ITEM_TYPES.sort].filter(it => !it.system.isrituel)
}
DialogSelect.select(selectSortReserve, sort =>
this.createEmbeddedDocuments("Item",
[{
type: ITEM_TYPES.sortreserve,
name: sort.name,
img: sort.img,
system: { sortid: sort.id, draconic: sort.system.draconic, ptreve: Number(sort.system.ptreve.match(/\d+/)), coord: 'A1', heurecible: 'Vaisseau' }
}],
{ renderSheet: true }))
DialogSelect.select(selectSortReserve, sort => this.$createSortReserve(sort))
}
$createSortReserve(sort) {
this.createEmbeddedDocuments("Item",
[{
type: ITEM_TYPES.sortreserve,
name: sort.name,
img: sort.img,
system: { sortid: sort.id, draconic: sort.system.draconic, ptreve: Number(sort.system.ptreve.match(/\d+/)), coord: 'A1', heurecible: 'Vaisseau' }
}],
{ renderSheet: true })
}
/* -------------------------------------------- */
async reinsertionAleatoire(raison, accessible = tmr => true) {
@ -1070,6 +1082,11 @@ export class RdDActor extends RdDBaseActorSang {
await this.update({ "system.reve.reve.value": reve });
}
async chanceActuelleIncDec(value) {
const chance = Math.min(this.getChance(), Math.max(this.getChanceActuel() + value, 0));
await this.update({ "system.compteurs.chance.value": chance });
}
/* -------------------------------------------- */
async regainPointDeSeuil() {
const seuil = Misc.toInt(this.system.reve.seuil.value);
@ -1370,7 +1387,7 @@ export class RdDActor extends RdDBaseActorSang {
}
await RdDResolutionTable.rollData(ethylismeData.jetVie);
this._gererExperience(ethylismeData.jetVie);
this.gererExperience(ethylismeData.jetVie);
RollDataAjustements.calcul(ethylismeData.jetVie, this);
if (ethylismeData.jetVie.rolled.isSuccess) {
ethylisme.nb_doses++;
@ -1402,7 +1419,7 @@ export class RdDActor extends RdDBaseActorSang {
finalLevel: Number(ethylisme.value) + Number(this.system.compteurs.moral.value)
}
await RdDResolutionTable.rollData(ethylismeData.jetVolonte);
this._gererExperience(ethylismeData.jetVolonte);
this.gererExperience(ethylismeData.jetVolonte);
RollDataAjustements.calcul(ethylismeData.jetVolonte, this);
}
}
@ -1513,13 +1530,12 @@ export class RdDActor extends RdDBaseActorSang {
};
}
/* -------------------------------------------- */
isCaracMax(code) {
if (code == 'force' && parseInt(this.system.carac.force.value) >= parseInt(this.system.carac.taille.value) + 4) {
return true;
}
return false
return RdDItemRace.isRacialMax(this, code)
}
async checkCaracXP(caracName, display = true) {
let carac = this.findCaracByName(caracName);
if (carac && carac.xp > 0) {
@ -1580,7 +1596,7 @@ export class RdDActor extends RdDBaseActorSang {
/* -------------------------------------------- */
async appliquerAjoutExperience(rollData, hideChatMessage = 'show') {
if (!Misc.isFirstConnectedGM()) {
if (!Misc.hasConnectedGM()) {
return
}
hideChatMessage = hideChatMessage == 'hide' || (Misc.isRollModeHiddenToPlayer() && !game.user.isGM)
@ -1646,10 +1662,12 @@ export class RdDActor extends RdDBaseActorSang {
/* -------------------------------------------- */
async rollUnSort(coord) {
RdDEmpoignade.checkEmpoignadeEnCours(this)
if (RdDEmpoignade.checkEmpoignadeEnCours(this)) {
return
}
if (EffetsDraconiques.isSortImpossible(this)) {
ui.notifications.error("Une queue ou un souffle vous empèche de lancer de sort!");
return;
ui.notifications.error("Une queue ou un souffle vous empèche de lancer de sort!")
return
}
// Duplication car les pts de reve sont modifiés dans le sort
let sorts = foundry.utils.duplicate(this.$filterSortList(this.itemTypes['sort'], coord));
@ -1781,38 +1799,8 @@ export class RdDActor extends RdDBaseActorSang {
}
}
/**
* Méthode pour faire un jet prédéterminer sans ouvrir la fenêtre de dialogue
* @param {*} caracName
* @param {*} compName
* @param {*} diff
* @param {*} options
* @returns
*/
async doRollCaracCompetence(caracName, compName, diff, options = { title: "" }) {
const carac = this.getCaracByName(caracName);
if (!carac) {
ui.notifications.warn(`${this.name} n'a pas de caractéristique correspondant à ${caracName}`)
return;
}
const competence = this.getCompetence(compName);
let rollData = {
alias: this.getAlias(),
caracValue: Number(carac.value),
selectedCarac: carac,
competence: competence,
diffLibre: diff,
show: { title: options?.title ?? '' }
};
RollDataAjustements.calcul(rollData, this);
await RdDResolutionTable.rollData(rollData);
this._gererExperience(rollData);
await RdDResolutionTable.displayRollData(rollData, this)
return rollData.rolled;
}
/* -------------------------------------------- */
_gererExperience(rollData) {
gererExperience(rollData) {
const callback = this.createCallbackExperience();
if (callback.condition(rollData)) {
callback.action(rollData);
@ -1862,26 +1850,6 @@ export class RdDActor extends RdDBaseActorSang {
return undefined;
}
async rollCaracCompetence(caracName, compName, diff, options = { title: "" }) {
RdDEmpoignade.checkEmpoignadeEnCours(this)
const competence = this.getCompetence(compName);
await this.openRollDialog({
name: 'jet-competence',
label: 'Jet ' + Grammar.apostrophe('de', competence.name),
template: 'systems/foundryvtt-reve-de-dragon/templates/dialog-roll-competence.html',
rollData: {
alias: this.getAlias(),
carac: this.system.carac,
selectedCarac: this.getCaracByName(caracName),
selectedCaracName: caracName,
diffLibre: diff,
competence: competence,
show: { title: options?.title ?? '' }
},
callbackAction: r => this.$onRollCompetence(r, options)
});
}
/* -------------------------------------------- */
async rollTache(id, options = {}) {
RdDEmpoignade.checkEmpoignadeEnCours(this)
@ -2254,12 +2222,6 @@ export class RdDActor extends RdDBaseActorSang {
}
}
/* -------------------------------------------- */
async chanceActuelleIncDec(value) {
const chance = Math.min(this.getChance(), Math.max(this.getChanceActuel() + value, 0));
await this.updateCompteurValue("chance", chance);
}
/* -------------------------------------------- */
async appelDestinee(onSuccess = () => { }, onEchec = () => { }) {
let destinee = this.system.compteurs.destinee?.value ?? 0;
@ -3021,12 +2983,14 @@ export class RdDActor extends RdDBaseActorSang {
/* -------------------------------------------- */
async onCreateItem(item, options, id) {
switch (item.type) {
case 'tete':
case 'queue':
case 'ombre':
case 'souffle':
await this.onCreateOwnedDraconique(item, options, id);
break;
case ITEM_TYPES.tete:
case ITEM_TYPES.queue:
case ITEM_TYPES.ombre:
case ITEM_TYPES.souffle:
await this.onCreateOwnedDraconique(item, options, id)
break
case ITEM_TYPES.race:
await this.onCreateOwnedRace(item, options, id)
}
await item.onCreateItemTemporel(this);
await item.onCreateDecoupeComestible(this);
@ -3034,16 +2998,19 @@ export class RdDActor extends RdDBaseActorSang {
async onDeleteItem(item, options, id) {
switch (item.type) {
case 'tete':
case 'queue':
case 'ombre':
case 'souffle':
case ITEM_TYPES.tete:
case ITEM_TYPES.queue:
case ITEM_TYPES.ombre:
case ITEM_TYPES.souffle:
await this.onDeleteOwnedDraconique(item, options, id)
break
case 'casetmr':
case ITEM_TYPES.race:
await this.onDeleteOwnedRace(item, options, id)
break
case ITEM_TYPES.casetmr:
await this.onDeleteOwnedCaseTmr(item, options, id)
break
case 'empoignade':
case ITEM_TYPES.empoignade:
await RdDEmpoignade.deleteLinkedEmpoignade(this.id, item)
break
}
@ -3072,6 +3039,35 @@ export class RdDActor extends RdDBaseActorSang {
}
}
async onCreateOwnedRace(item, options, id) {
if (Misc.isFirstConnectedGM()) {
const raceIds = this.itemTypes[ITEM_TYPES.race].map(it => it.id).filter(id => id != item.id)
if (raceIds.length > 0) {
await this.deleteEmbeddedDocuments('Item', raceIds)
}
await this._applyRaceCaracUpdates(item, 1)
}
}
async onDeleteOwnedRace(item, options, id) {
if (Misc.isFirstConnectedGM()) {
await this._applyRaceCaracUpdates(item, -1)
}
}
async _applyRaceCaracUpdates(item, sign) {
const updates = {};
RdDCarac.caracs(it => true).forEach(c => {
const toAdd = Number(foundry.utils.getProperty(item, c.path)) * sign
if (toAdd != 0) {
updates[c.path] = Number(foundry.utils.getProperty(this, c.path)) + toAdd
}
})
if (Object.keys(updates).length > 0) {
await this.update(updates)
}
}
/* -------------------------------------------- */
async onDeleteOwnedCaseTmr(item, options, id) {
if (Misc.isFirstConnectedGM()) {

View File

@ -1,3 +1,4 @@
import { RdDTextEditor } from "../apps/rdd-text-roll-editor.js";
import { Grammar } from "../grammar.js";
import { ITEM_TYPES } from "../item.js";
import { RdDSheetUtility } from "../rdd-sheet-utility.js";
@ -27,7 +28,7 @@ export class RdDBaseActorReveSheet extends RdDBaseActorSheet {
this.html.find('.button-encaissement').click(async event => this.actor.encaisser())
this.html.find('.roll-carac').click(async event => {
this.actor.rollCarac(Grammar.toLowerCaseNoAccent(event.currentTarget.attributes['data-carac-name'].value))});
this.actor.rollCarac(Grammar.toLowerCaseNoAccent(event.currentTarget.attributes['data-carac-name'].value))})
this.html.find('.roll-competence').click(async event => this.actor.rollCompetence(RdDSheetUtility.getItemId(event)));
this.html.find('.endurance-plus').click(async event => this.actor.santeIncDec("endurance", 1));
this.html.find('.endurance-moins').click(async event => this.actor.santeIncDec("endurance", -1));
@ -47,7 +48,23 @@ export class RdDBaseActorReveSheet extends RdDBaseActorSheet {
}
}], { renderSheet: true })
)
this.html.find('.roll-text').click(async event => await RdDTextEditor.rollText(event, this.actor))
this.html.find('.chat-roll-text').click(async event => await RdDTextEditor.chatRollText(event))
if (this.options.vueDetaillee) {
// On carac change
this.html.find('.carac-value').change(async event => {
let caracName = event.currentTarget.name.replace(".value", "").replace("system.carac.", "");
this.actor.updateCarac(caracName, parseInt(event.target.value));
});
// On competence change
this.html.find('.competence-value').change(async event => {
let compName = event.currentTarget.attributes.compname.value;
//console.log("Competence changed :", compName);
this.actor.updateCompetence(compName, parseInt(event.target.value));
});
}
}
}

View File

@ -22,6 +22,7 @@ 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 { RollDataAjustements } from "../rolldata-ajustements.js";
/**
* Classe de base pour les acteurs disposant de rêve (donc, pas des objets)
@ -37,6 +38,15 @@ export class RdDBaseActorReve extends RdDBaseActor {
this.system.sante.endurance.value = Math.min(this.system.sante.endurance.value, this.system.sante.endurance.max)
}
getCarac() {
return foundry.utils.mergeObject(this.system.carac,
{
'reve-actuel': this.getCaracReveActuel(),
'chance-actuelle': this.getCaracChanceActuelle()
},
{ inplace: false })
}
getCaracChanceActuelle() {
return {
label: 'Chance actuelle',
@ -53,7 +63,6 @@ export class RdDBaseActorReve extends RdDBaseActor {
};
}
getTaille() { return Misc.toInt(this.system.carac.taille?.value) }
getConstitution() { return this.getReve() }
getForce() { return this.getReve() }
@ -285,6 +294,57 @@ export class RdDBaseActorReve extends RdDBaseActor {
createCallbackAppelAuMoral() { return this.createEmptyCallback(); }
async _onCloseRollDialog(html) { }
async rollCaracCompetence(caracName, compName, diff, options = { title: "" }) {
RdDEmpoignade.checkEmpoignadeEnCours(this)
const competence = this.getCompetence(compName);
await this.openRollDialog({
name: 'jet-competence',
label: competence? 'Jet ' + Grammar.apostrophe('de', competence.name) : `Jet sans compétence (${compName})`,
template: 'systems/foundryvtt-reve-de-dragon/templates/dialog-roll-competence.html',
rollData: {
alias: this.getAlias(),
carac: this.system.carac,
selectedCarac: this.getCaracByName(caracName),
selectedCaracName: caracName,
diffLibre: diff,
competence: competence,
show: { title: options?.title ?? '' }
},
callbackAction: r => this.$onRollCompetence(r, options)
});
}
/**
* Méthode pour faire un jet prédéterminer sans ouvrir la fenêtre de dialogue
* @param {*} caracName code ou label de la caractéristique. On peut utiliser 'intel' pour Intellect.
* @param {*} compName nom de compétence ou nom abrégé.
* @param {*} diff difficulté (0 si undefined)
* @param {*} options
* @returns le jet effectué
*/
async doRollCaracCompetence(caracName, compName, diff, options = { title: "" }) {
const carac = this.getCaracByName(caracName);
if (!carac) {
ui.notifications.warn(`${this.name} n'a pas de caractéristique correspondant à ${caracName}`)
return
}
const competence = this.getCompetence(compName);
let rollData = {
alias: this.getAlias(),
caracValue: Number(carac.value),
selectedCarac: carac,
competence: competence,
diffLibre: diff ?? 0,
show: { title: options?.title ?? '' }
}
RollDataAjustements.calcul(rollData, this);
await RdDResolutionTable.rollData(rollData);
this.gererExperience(rollData);
await RdDResolutionTable.displayRollData(rollData, this)
return rollData.rolled;
}
gererExperience(rollData) { }
/* -------------------------------------------- */
async roll() {
RdDEmpoignade.checkEmpoignadeEnCours(this)
@ -303,24 +363,14 @@ export class RdDBaseActorReve extends RdDBaseActor {
competences: this.itemTypes['competence']
},
callbackAction: r => this.$onRollCaracResult(r)
});
})
}
getCarac() {
// TODO: le niveau d'une entité de cauchemar devrait être exclu...
return foundry.utils.mergeObject(this.system.carac,
{
'reve-actuel': this.getCaracReveActuel(),
'chance-actuelle': this.getCaracChanceActuelle()
},
{ inplace: false })
}
/* -------------------------------------------- */
async rollCarac(caracName, jetResistance = undefined) {
async rollCarac(caracName, options = {}) {
if (Grammar.equalsInsensitive(caracName, 'taille')) {
return
}
foundry.utils.mergeObject(options, { resistance: false, diff: 0 }, { overwrite: false })
RdDEmpoignade.checkEmpoignadeEnCours(this)
let selectedCarac = this.getCaracByName(caracName)
console.log("selectedCarac", selectedCarac)
@ -331,7 +381,8 @@ export class RdDBaseActorReve extends RdDBaseActor {
rollData: {
selectedCarac: selectedCarac,
competences: this.itemTypes['competence'],
jetResistance: jetResistance ? caracName : undefined
diffLibre: options.diff ?? 0,
jetResistance: options.resistance ? caracName : undefined
},
callbackAction: r => this.$onRollCaracResult(r)
});
@ -499,7 +550,7 @@ export class RdDBaseActorReve extends RdDBaseActor {
|| entite.isEntiteAccordee(this)) {
return true;
}
const rolled = await RdDResolutionTable.roll(this.getReveActuel(), - Number(entite.system.carac.niveau.value));
const rolled = await RdDResolutionTable.roll(this.getReveActuel(), - Number(entite.getNiveau()));
const rollData = {
alias: this.getAlias(),
rolled: rolled,

View File

@ -5,6 +5,7 @@ import { RdDSheetUtility } from "../rdd-sheet-utility.js";
import { Monnaie } from "../item-monnaie.js";
import { RdDItem, ITEM_TYPES } from "../item.js";
import { RdDItemCompetenceCreature } from "../item-competencecreature.js";
import { RdDTextEditor } from "../apps/rdd-text-roll-editor.js";
/* -------------------------------------------- */
/**
@ -35,8 +36,8 @@ export class RdDBaseActorSheet extends ActorSheet {
img: this.actor.img,
name: this.actor.name,
system: this.actor.system,
description: await TextEditor.enrichHTML(this.actor.system.description, { async: true }),
notesmj: await TextEditor.enrichHTML(this.actor.system.notesmj, { async: true }),
description: await RdDTextEditor.enrichHTML(this.actor.system.description, this.actor),
notesmj: await RdDTextEditor.enrichHTML(this.actor.system.notesmj, this.actor),
options: RdDSheetUtility.mergeDocumentRights(this.options, this.actor, this.isEditable),
effects: this.actor.effects
}
@ -177,21 +178,6 @@ export class RdDBaseActorSheet extends ActorSheet {
this.options.vueDetaillee = !this.options.vueDetaillee;
this.render(true);
});
if (this.options.vueDetaillee) {
// On carac change
this.html.find('.carac-value').change(async event => {
let caracName = event.currentTarget.name.replace(".value", "").replace("system.carac.", "");
this.actor.updateCarac(caracName, parseInt(event.target.value));
});
// On competence change
this.html.find('.competence-value').change(async event => {
let compName = event.currentTarget.attributes.compname.value;
//console.log("Competence changed :", compName);
this.actor.updateCompetence(compName, parseInt(event.target.value));
});
}
}
_rechercherKeyup(event) {

View File

@ -21,7 +21,7 @@ export class RdDBaseActor extends Actor {
static $findCaracByName(carac, name) {
const caracList = Object.entries(carac);
let entry = Misc.findFirstLike(name, caracList, { mapper: it => it[0], description: 'caractéristique' });
let entry = Misc.findFirstLike(name, caracList, { mapper: it => it[0], description: 'caractéristique', onMessage: m => { } });
if (!entry || entry.length == 0) {
entry = Misc.findFirstLike(name, caracList, { mapper: it => it[1].label, description: 'caractéristique' });
}
@ -81,7 +81,6 @@ export class RdDBaseActor extends Actor {
}
}
static getRealActor(actorId, tokenId) {
if (tokenId) {
let token = canvas.tokens.get(tokenId)
@ -161,8 +160,11 @@ export class RdDBaseActor extends Actor {
return RdDBaseActor.$findCaracByName(carac, name);
}
mapCarac(caracCode) { return caracCode }
getCaracByName(name) {
switch (Grammar.toLowerCaseNoAccent(name)) {
name = this.mapCarac(Grammar.toLowerCaseNoAccent(name))
switch (name) {
case 'reve-actuel': case 'reve actuel':
return this.getCaracReveActuel();
case 'chance-actuelle': case 'chance-actuelle':

View File

@ -1,4 +1,6 @@
import { Grammar } from "../grammar.js";
import { ITEM_TYPES } from "../item.js";
import { LIST_CARAC_AUTRES } from "../rdd-carac.js";
import { RdDBaseActorSang } from "./base-actor-sang.js";
export class RdDCreature extends RdDBaseActorSang {
@ -32,4 +34,16 @@ export class RdDCreature extends RdDBaseActorSang {
}
}
mapCarac(caracCode) {
switch (caracCode) {
case 'vue': case 'ouie': case 'odoratgout': case 'empathie': case 'perception':
return 'perception'
case 'agilite':
return 'force'
case 'force': case 'constitution': case 'taille': case 'reve': case 'volonte':
return caracCode
}
return undefined
}
}

View File

@ -15,6 +15,8 @@ export class RdDActorEntiteSheet extends RdDBaseActorReveSheet {
async getData() {
let formData = await super.getData();
formData.niveau = this.actor.getNiveau()
delete formData.system.carac.niveau
formData.resonances = this.actor.system.sante.resonnance.actors.map(actorId => game.actors.get(actorId))
.map(actor => { return { id: actor.id, name: actor.name, img: actor.img } })
return formData
@ -33,10 +35,6 @@ export class RdDActorEntiteSheet extends RdDBaseActorReveSheet {
let compName = event.currentTarget.attributes.compname.value;
this.actor.updateCreatureCompetence(compName, "carac_value", parseInt(event.target.value));
});
this.html.find('.creature-niveau').change(async event => {
let compName = event.currentTarget.attributes.compname.value;
this.actor.updateCreatureCompetence(compName, "niveau", parseInt(event.target.value));
})
this.html.find('.creature-dommages').change(async event => {
let compName = event.currentTarget.attributes.compname.value;
this.actor.updateCreatureCompetence(compName, "dommages", parseInt(event.target.value));

View File

@ -1,6 +1,7 @@
import { ENTITE_INCARNE, ENTITE_NONINCARNE } from "../constants.js";
import { ITEM_TYPES } from "../item.js";
import { Misc } from "../misc.js";
import { RdDCarac } from "../rdd-carac.js";
import { RdDEncaisser } from "../rdd-roll-encaisser.js";
import { STATUSES } from "../settings/status-effects.js";
import { RdDBaseActorReve } from "./base-actor-reve.js";
@ -18,12 +19,23 @@ export class RdDEntite extends RdDBaseActorReve {
isEntite(typeentite = []) {
return (typeentite.length == 0 || typeentite.includes(this.system.definition.typeentite));
}
isNonIncarnee() { return this.isEntite([ENTITE_NONINCARNE]) }
getReveActuel() {
return Misc.toInt(this.system.carac.reve?.value)
}
getCarac() {
const carac = super.getCarac()
delete carac.niveau
return carac
}
getNiveau() {
const reve = this.getReve()
return RdDCarac.getCaracDerivee(reve).niveau
}
getForce() { return this.getReve() }
getAgilite() { return this.getReve() }
getChance() { return this.getReve() }
@ -64,6 +76,7 @@ export class RdDEntite extends RdDBaseActorReve {
}
return {}
}
async encaisser() {
if (this.isNonIncarnee()) {
return
@ -104,4 +117,14 @@ export class RdDEntite extends RdDBaseActorReve {
super.setEntiteReveAccordee(actor)
}
}
mapCarac(caracCode) {
switch (caracCode) {
case 'taille':
case 'reve':
return caracCode
}
return 'reve'
}
}

View File

@ -83,6 +83,7 @@ const MAPPING_BASE = [
{ column: "protectionarmure", colName: 'Protection', getter: (actor, context) => Mapping.getProtectionArmure(actor, context) },
{ column: "malus_armure", getter: (actor, context) => Mapping.getMalusArmure(actor, context) },
{ column: "reve_actuel", rollClass: 'roll-reve-actuel', colName: 'Rêve actuel', getter: (actor, context) => actor.system.reve.reve.value },
{ column: "chance_actuel", rollClass: 'roll-chance-actuelle', colName: 'Chance actuelle', getter: (actor, context) => actor.system.compteurs.chance.value },
{ column: "vie_actuel", rollClass: 'jet-vie', getter: (actor, context) => actor.system.sante.vie.value },
{ column: "endurance_actuel", rollClass: 'jet-endurance', getter: (actor, context) => actor.system.sante.endurance.value },
{ column: "esquive", getter: (actor, context) => Mapping.getEsquive(context) },
@ -278,7 +279,7 @@ export class Mapping {
const race = ['', 'humain'].includes(Grammar.toLowerCaseNoAccent(actor.system.race)) ? '' : (actor.system.race + ' ')
const heure = actor.system.heure
const hn = `${sexeFeminin} à l'heure ${RdDTimestamp.definition(heure).avecArticle}`
const age = actor.system.age ? `${actor.system.age} ans` : undefined
const age = (actor.system.age && actor.system.age >0) ? `${actor.system.age} ans` : undefined
const taille = actor.system.taille
const poids = actor.system.poids
const cheveux = actor.system.cheveux ? `cheveux ${actor.system.cheveux}` : undefined

View File

@ -6,6 +6,7 @@ import { Grammar } from "../grammar.js";
import { Misc } from "../misc.js";
import { ENTITE_INCARNE, ENTITE_NONINCARNE } from "../constants.js";
import { RdDItemTete } from "../item/tete.js";
import { ITEM_TYPES } from "../item.js";
const WHITESPACES = "\\s+"
const NUMERIC = "[\\+\\-]?\\d+"
@ -26,14 +27,13 @@ const MANIEMENTS = {
'de lancer': (weapon) => { return { name: weapon.system.lancer, categorie: 'lancer' } },
'de jet': (weapon) => { return { name: weapon.system.lancer, categorie: 'lancer' } },
'à une main': (weapon) => { return { name: weapon.system.competence, categorie: 'melee' } },
'à deux main': (weapon) => { return { name: weapon.system.competence.replace("à 1 main", "à 2 main"), categorie: 'melee' } },
'à deux mains': (weapon) => { return { name: weapon.system.competence.replace("à 1 main", "à 2 mains"), categorie: 'melee' } },
'mêlée': (weapon) => { return { name: weapon.system.competence, categorie: 'melee' } },
}
const XREGEXP_WEAPON_MANIEMENT = "(?<maniement>(" + Misc.join(Object.keys(MANIEMENTS), '|') + "))"
const XREGEXP_SORT_VOIE = "(?<voies>[OHNT](\\/[OHNT])*)"
const XREGEXP_SORT_NAME = "(?<name>[^\\(]+)"
// const XREGEXP_SORT_CASE = "(?<coord>([A-Za-zÀ-ÖØ-öø-ÿ\\s\\-]+|[A-M]\\d{1,2})+)"
const XREGEXP_SORT_CASE = "(?<coord>([A-Za-zÀ-ÖØ-öø-ÿ\\s\\-]+|[A-M]\\d{1,2}))"
const XREGEXP_SORT = "(" + XREGEXP_SORT_VOIE
@ -164,26 +164,18 @@ export class RdDStatBlockParser {
switch (type) {
case "creature":
RdDStatBlockParser.parseCreature(statString, actorData)
await RdDStatBlockParser.parseCompetences(statString, actorData, items)
break
case "entite":
RdDStatBlockParser.parseEntite(statString, actorData)
await RdDStatBlockParser.parseCompetences(statString, actorData, items)
break
}
if (type == "personnage") {
// Now process armors
await RdDStatBlockParser.parseArmors(statString, actorData, items);
}
// Get skills from compendium
await RdDStatBlockParser.parseCompetences(statString, actorData, items);
if (type == "personnage") {
// Now process weapons
await RdDStatBlockParser.parseWeapons(statString, items);
await RdDStatBlockParser.parseHautReve(statString, actorData, items);
RdDStatBlockParser.parsePersonnage(statString, actorData);
case "personnage":
await RdDStatBlockParser.parseArmors(statString, actorData, items);
await RdDStatBlockParser.parseCompetences(statString, actorData, items);
await RdDStatBlockParser.parseWeapons(statString, items);
await RdDStatBlockParser.parseHautReve(statString, actorData, items);
RdDStatBlockParser.parsePersonnage(statString, actorData);
}
const name = RdDStatBlockParser.extractName(type, statString);
@ -193,6 +185,7 @@ export class RdDStatBlockParser {
let newActor = await RdDBaseActorReve.create({ name, type, system: actorData, items });
await newActor.remiseANeuf()
await RdDStatBlockParser.adjustAttacks(newActor)
await RdDStatBlockParser.setValeursActuelles(newActor, statString)
await newActor?.sheet.render(true)
}
@ -267,7 +260,7 @@ export class RdDStatBlockParser {
}
let weapMatch = XRegExp.exec(statString, XRegExp(weapon.name
+ "(\\s*" + XREGEXP_WEAPON_MANIEMENT + ")?"
+ "\\s+(?<value>\\+\\d+)", 'giu'));
+ "\\s+(?<value>[\\+\\-]?\\d+)", 'giu'));
if (weapMatch) {
weapon = weapon.toObject();
weapon.system.equipe = 'true';
@ -296,6 +289,21 @@ export class RdDStatBlockParser {
}
}
static async adjustAttacks(newActor) {
if (["creature", "entite"].includes(newActor.type)) {
const bonusDommages = newActor.getBonusDegat()
const ajustementAttaques = newActor.itemTypes[ITEM_TYPES.competencecreature].filter(it => it.system.iscombat)
.map(it => {
return {
_id: it.id,
'system.categorie': 'melee',
'system.dommages': it.system.dommages - bonusDommages
}
})
await newActor.updateEmbeddedDocuments('Item', ajustementAttaques)
}
}
static async setValeursActuelles(newActor, statString) {
const updates = {
}
@ -412,9 +420,9 @@ export class RdDStatBlockParser {
actorData.taille = taille.value;
}
// Get weight
const poids = XRegExp.exec(statString, XRegExp("(?<value>\\d+ kg)", 'giu'));
const poids = XRegExp.exec(statString, XRegExp(",\\s+(?<value>\\d+)\\s+kg", 'giu'));
if (poids?.value) {
actorData.poids = poids.value;
actorData.poids = poids.value + ' kg';
}
// Get cheveux
const cheveux = XRegExp.exec(statString, XRegExp("kg,\\s+(?<value>[A-Za-zÀ-ÖØ-öø-ÿ\\s\\-]+),\\s+yeux", 'giu'));
@ -435,7 +443,7 @@ export class RdDStatBlockParser {
}
static parseCreature(statString, actorData) {
let protection = XRegExp.exec(statString, XRegExp("protection\\s+(?<value>[\\-]?\\d+)", 'giu'));
let protection = XRegExp.exec(statString, XRegExp("protection(\\s+naturelle)?\\s+(?<value>[\\-]?\\d+)", 'giu'));
if (protection?.value) {
actorData.attributs.protection.value = Number(protection.value);
}
@ -461,33 +469,40 @@ export class RdDStatBlockParser {
}
static parseActorType(statString) {
let niveau = XRegExp.exec(statString, XRegExp("Niveau\\s+(?<value>[\\+\\-]?\\d+)", 'giu'))
let force = XRegExp.exec(statString, XRegExp("Force\\s+(?<value>[\\+\\-]?\\d+)", 'giu'))
let vue = XRegExp.exec(statString, XRegExp("Vue\\s+(?<value>[\\+\\-]?\\d+)", 'giu'))
let perception = XRegExp.exec(statString, XRegExp("perception\\s+(?<value>\\d+)", 'giu'))
if (perception?.value) {
return "creature"
}
if (niveau?.value) {
if (!force) {
return "entite"
}
if (!vue || perception) {
return "creature"
}
return "personnage"
}
static extractName(actorType, statString) {
switch (actorType) {
case "personnage":
// Check if ',né le' is present
let namePersonnage = "Importé"
if (statString.includes(", né")) {
// Name is all string before first comma ','
namePersonnage = XRegExp.exec(statString, XRegExp("(?<value>[\\p{Letter}\\s\\d]+),", 'giu'));
} else {
namePersonnage = XRegExp.exec(statString, XRegExp("(?<value>[\\p{Letter}\\s\\d]+)\\s+TAILLE", 'giu'));
}
if (namePersonnage?.value) {
return Misc.upperFirst(namePersonnage?.value);
}
if (actorType == "personnage") {
// Check if ',né le' is present
let namePersonnage = "Importé"
if (statString.includes(", né")) {
// Name is all string before first comma ','
namePersonnage = XRegExp.exec(statString, XRegExp("(?<value>[\\p{Letter}\'\\-\\s\\d]+),", 'giu'));
} else {
namePersonnage = XRegExp.exec(statString, XRegExp("(?<value>[\\p{Letter}\'\\-\\s\\d]+)\\s+TAILLE", 'giu'));
}
if (namePersonnage?.value) {
return Misc.upperFirst(namePersonnage?.value.toLowerCase());
}
}
const name = XRegExp.exec(statString, XRegExp("(?<value>.+)\\s+taille", 'giu'));
if (actorType == "entite") {
if (!(name?.value)) {
const nameEntiteReve = XRegExp.exec(statString, XRegExp("(?<value>.+)\\s+rêve", 'giu'));
return Misc.upperFirst(nameEntiteReve?.value || "Importé");
}
}
return Misc.upperFirst(name?.value || "Importé");
}

View File

@ -0,0 +1,78 @@
import "./xregexp-all.js";
import { SystemCompendiums } from "../settings/system-compendiums.js";
import { ACTOR_TYPES } from "../item.js";
import { TextRollAlchimie } from "./textroll/text-roll-alchimie.js";
import { TextRollCaracCompetence } from "./textroll/text-roll-carac-competence.js";
import { TextRollFormula } from "./textroll/text-roll-formula.js";
import { TextRollManager } from "./textroll/text-roll-formatter.js";
const TEXT_ROLL_MANAGERS = [
new TextRollAlchimie(),
new TextRollCaracCompetence(),
new TextRollFormula()]
export class RdDTextEditor {
static registerChatCallbacks(html) {
html.on("click", '.roll-text', async event => await RdDTextEditor.rollText(event))
}
static async enrichHTML(text, object, options = {showlink:true}) {
const context = {
text,
object,
options,
competences: await SystemCompendiums.getCompetences(ACTOR_TYPES.personnage),
}
for (let manager of TEXT_ROLL_MANAGERS) {
context.code = manager.code
context.template = manager.template
context.text = await manager.onReplaceRoll(context);
}
return await TextEditor.enrichHTML(context.text, {
relativeTo: object,
secrets: object?.isOwner,
async: true
})
}
static async _applyReplaceAll(manager, context) {
context.code = manager.code
context.template = manager.template
context.text = await manager.onReplaceRoll(context);
return context.text
}
static getEventElement(event) {
return $(event.currentTarget)?.parents(".roll-text-link");
}
static async rollText(event, actor) {
const code = TextRollManager.getNode(event)?.data('code')
const manager = TEXT_ROLL_MANAGERS.find(it => it.code == code)
if (manager) {
await manager.onRollText(event, actor)
}
}
static async chatRollText(event) {
const node = TextRollManager.getNode(event);
if (node) {
const code = node.data('code')
const param = node.data('json')
const manager = TEXT_ROLL_MANAGERS.find(it => it.code == code)
const text = await TextRollManager.createRollText(
{
code,
template: manager.template,
options: { showLink: false }
},
param)
ChatMessage.create({
content: text
})
}
}
}

View File

@ -0,0 +1,79 @@
import "../xregexp-all.js";
import { ACTOR_TYPES, ITEM_TYPES } from "../../item.js";
import { RdDCarac } from "../../rdd-carac.js";
import { RdDUtility } from "../../rdd-utility.js";
import { RdDAlchimie } from "../../rdd-alchimie.js";
import { TextRollManager } from "./text-roll-formatter.js";
const REGEX_ALCHIMIE_TERMES = "(?<termes>(\\w|-)+)"
const REGEX_ALCHIMIE_MANIP = "(?<manip>(couleur|consistance))"
const XREGEXP_ROLL_ALCHIMIE = XRegExp("@roll\\[" + REGEX_ALCHIMIE_MANIP + "\\s+" + REGEX_ALCHIMIE_TERMES + "\\]", 'giu')
const XREGEXP_ROLL_ALCHIMIE_MANIP = XRegExp("@" + REGEX_ALCHIMIE_MANIP + "\\{" + REGEX_ALCHIMIE_TERMES + "\\}", 'giu')
/**
* classe pour gérer les jets d'alchimie
*/
export class TextRollAlchimie {
get code() { return 'alchimie' }
get template() { return `systems/foundryvtt-reve-de-dragon/templates/apps/textroll/link-text-roll-alchimie.hbs` }
async onReplaceRoll(context) {
const handler = new AlchimieTextBuilder(context)
return await handler.replaceAll()
}
async onRollText(event, actor) {
actor = this.getSelectedActor(actor)
if (actor) {
const node = TextRollManager.getNode(event)
const recetteId = node.data('recetteid')
const manip = node.data('manip')
const termes = node.data('termes')
if (recetteId) {
await actor.effectuerTacheAlchimie(recetteId, manip, termes)
}
else {
const carac = RdDCarac.caracDetails(RdDAlchimie.getCaracTache(manip))
const diff = RdDAlchimie.getDifficulte(termes)
await actor.rollCaracCompetence(carac.code, 'Alchimie', diff)
}
}
}
getSelectedActor(actor) {
actor = actor ?? RdDUtility.getSelectedActor()
if (actor && actor.type == ACTOR_TYPES.personnage) {
return actor
}
return undefined
}
}
class AlchimieTextBuilder {
constructor(context) {
this.context = context
}
async replaceAll() {
await XRegExp.forEach(this.context.text, XREGEXP_ROLL_ALCHIMIE, async (rollMatch, i) => await this.replaceMatch(rollMatch, i))
await XRegExp.forEach(this.context.text, XREGEXP_ROLL_ALCHIMIE_MANIP, async (rollMatch, i) => await this.replaceMatch(rollMatch, i))
return this.context.text
}
async replaceMatch(rollMatch, i) {
if (rollMatch.termes && rollMatch.manip) {
const manip = rollMatch.manip
const termes = rollMatch.termes
const carac = RdDCarac.caracDetails(RdDAlchimie.getCaracTache(manip))
const diff = RdDAlchimie.getDifficulte(termes)
const recette = (this.context.object instanceof Item && this.context.object.type == ITEM_TYPES.recettealchimique) ? this.context.object : undefined
const replacement = await TextRollManager.createRollText(this.context,
{
code: this.context.code,
manip, termes, carac, diff, recetteid: recette?.id,
})
this.context.text = this.context.text.replace(rollMatch[0], replacement);
}
}
}

View File

@ -0,0 +1,98 @@
import "../xregexp-all.js";
import { RdDCarac } from "../../rdd-carac.js";
import { RdDItemCompetence } from "../../item-competence.js";
import { RdDUtility } from "../../rdd-utility.js";
import { TextRollManager } from "./text-roll-formatter.js";
const REGECP_CARAC = "(?<carac>[A-Za-zÀ-ÖØ-öø-ÿ\\s\\-]+)"
const REGEXP_COMP = "(\\/(?<competence>[A-Za-zÀ-ÖØ-öø-ÿ\\s\\-]+))?"
const REGEXP_DIFF = "(/(?<diff>[\\+\\-]?\\d+(d\\d+)?))?"
const REGEXP_ROLL_CARAC_COMP = REGECP_CARAC + REGEXP_COMP + REGEXP_DIFF
const XREGEXP_ROLL_CARAC_COMP = XRegExp("@roll\\[" + REGEXP_ROLL_CARAC_COMP + "\\]", 'giu')
/**
* classe pour gérer les jets de caractéristique/compétence depuis
* les journaux/descriptions
*/
export class TextRollCaracCompetence {
get code() { return 'carac' }
get template() { return `systems/foundryvtt-reve-de-dragon/templates/apps/textroll/link-text-roll-carac-competence.hbs` }
async onReplaceRoll(context) {
const handler = new CaracCompetenceTextBuilder(context)
return await handler.replaceAll()
}
async onRollText(event, actor) {
const node = TextRollManager.getNode(event)
const caracCode = node.data('carac-code')
if (caracCode) {
const competence = node.data('competence')
const diff = await this.calculDiff(node)
const actors = this.getSelectedActors(actor)
actors.forEach(async it => await this.doRoll(it, caracCode, competence, diff))
}
}
async calculDiff(node) {
const diff = node.data('diff') ?? 0
if (!Number.isInteger(diff)) {
const roll = new Roll(diff)
await roll.evaluate()
await roll.toMessage({ flavor: `La difficulté de ${diff} a donné ${roll.total}` })
return roll.total
}
return diff
}
async doRoll(actor, caracCode, competence, diff) {
caracCode = actor.mapCarac(caracCode)
if (caracCode) {
if (competence) {
await actor.rollCaracCompetence(caracCode, competence, diff)
}
else {
await actor.rollCarac(caracCode, { diff })
}
}
}
getSelectedActors(actor) {
const selected = canvas.tokens.controlled.map(it => it.actor).filter(it => it)
if (selected.length > 0) {
return selected
}
actor = actor ?? RdDUtility.getSelectedActor()
if (actor) {
return [actor]
}
return []
}
}
class CaracCompetenceTextBuilder {
constructor(context) {
this.context = context
}
async replaceAll() {
await XRegExp.forEach(this.context.text, XREGEXP_ROLL_CARAC_COMP, async (rollMatch, i) => await this.replaceMatch(rollMatch, i))
return this.context.text
}
async replaceMatch(rollMatch, i) {
const carac = RdDCarac.caracDetails(rollMatch.carac)
if (carac) {
const competence = rollMatch.competence ? RdDItemCompetence.findCompetence(this.context.competences, rollMatch.competence) : undefined
const replacement = await TextRollManager.createRollText(this.context,
{
code: this.context.code,
carac: carac,
competence: competence?.name,
diff: rollMatch.diff,
})
this.context.text = this.context.text.replace(rollMatch[0], replacement)
}
}
}

View File

@ -0,0 +1,13 @@
export class TextRollManager {
static async createRollText(context, param) {
return await renderTemplate(context.template, {
param, options: context.options
})
}
static getNode(event) {
return $(event.currentTarget)?.parents(".roll-text-link");
}
}

View File

@ -0,0 +1,51 @@
import "../xregexp-all.js";
import { TextRollManager } from "./text-roll-formatter.js";
const REGEXP_ROLL_FORMULA = "(?<formula>[^\\[\\]]+)"
const XREGEXP_ROLL_FORMULA = XRegExp("@roll\\[" + REGEXP_ROLL_FORMULA + "\\]", 'giu')
/**
* classe pour gérer les jets de dés (formules Foundry)
*/
export class TextRollFormula {
get code() { return 'formula' }
get template() { return `systems/foundryvtt-reve-de-dragon/templates/apps/textroll/link-text-roll-formula.hbs` }
async onReplaceRoll(context) {
const handler = new FormulaTextBuilder(context)
return await handler.replaceAll()
}
async onRollText(event, actor) {
const node = TextRollManager.getNode(event)
const rollFormula = node.data('roll-formula')
if (rollFormula) {
const roll = new Roll(rollFormula)
await roll.evaluate()
await roll.toMessage()
}
}
}
class FormulaTextBuilder {
constructor(context) {
this.context = context
}
async replaceAll() {
await XRegExp.forEach(this.context.text, XREGEXP_ROLL_FORMULA,
async (rollMatch, i) => await this.replaceMatch(rollMatch, i))
return this.context.text
}
async replaceMatch(rollMatch, i) {
if (rollMatch.formula) {
const replacement = await TextRollManager.createRollText(this.context,
{
code: this.context.code,
formula: rollMatch.formula,
})
this.context.text = this.context.text.replace(rollMatch[0], replacement)
}
}
}

View File

@ -2002,7 +2002,7 @@ XRegExp.exec = function (str, regex, pos, sticky) {
*/
XRegExp.forEach = function (str, regex, callback) {
XRegExp.forEach = async function (str, regex, callback) {
var pos = 0;
var i = -1;
var match;
@ -2014,7 +2014,7 @@ XRegExp.forEach = function (str, regex, callback) {
// at least. Actually, because of the way `XRegExp.exec` caches globalized versions of
// regexes, mutating the regex will not have any effect on the iteration or matched strings,
// which is a nice side effect that brings extra safety.
callback(match, ++i, str, regex);
await callback(match, ++i, str, regex);
pos = match.index + (match[0].length || 1);
}
};

View File

@ -1,6 +1,7 @@
import { Misc } from "./misc.js";
import { SYSTEM_RDD, SYSTEM_SOCKET_ID } from "./constants.js";
import { RdDTimestamp } from "./time/rdd-timestamp.js";
import { RdDTextEditor } from "./apps/rdd-text-roll-editor.js";
/**
@ -198,6 +199,7 @@ export class ChatUtility {
static async onCreateChatMessage(chatMessage, options, id) {
if (chatMessage.isAuthor) {
await chatMessage.setFlag(SYSTEM_RDD, 'rdd-timestamp', game.system.rdd.calendrier.getTimestamp());
await chatMessage.update({ content: await RdDTextEditor.enrichHTML(chatMessage.content, undefined, {showLink:false}) })
}
}
}

View File

@ -1,6 +1,5 @@
import { RdDBaseActor } from "../actor/base-actor.js";
import { ChatUtility } from "../chat-utility.js";
import { ReglesOptionnelles } from "../settings/regles-optionnelles.js";
const INFO_COEUR = 'info-coeur';

View File

@ -1,13 +1,13 @@
export const SYSTEM_RDD = 'foundryvtt-reve-de-dragon';
export const SYSTEM_SOCKET_ID = 'system.foundryvtt-reve-de-dragon';
export const LOG_HEAD = 'RdD | ';
export const SYSTEM_RDD = 'foundryvtt-reve-de-dragon'
export const SYSTEM_SOCKET_ID = 'system.foundryvtt-reve-de-dragon'
export const LOG_HEAD = 'RdD | '
export const HIDE_DICE = 'hide';
export const SHOW_DICE = 'show';
export const HIDE_DICE = 'hide'
export const SHOW_DICE = 'show'
export const ENTITE_INCARNE = 'incarne';
export const ENTITE_NONINCARNE = 'nonincarne';
export const ENTITE_BLURETTE = 'blurette';
export const ENTITE_INCARNE = 'incarne'
export const ENTITE_NONINCARNE = 'nonincarne'
export const ENTITE_BLURETTE = 'blurette'
export const RDD_CONFIG = {
niveauEthylisme : [

View File

@ -1,6 +1,5 @@
import { RdDItemSort } from "./item-sort.js";
import { RdDUtility } from "./rdd-utility.js";
import { RdDAlchimie } from "./rdd-alchimie.js";
import { RdDItemCompetence } from "./item-competence.js";
import { RdDHerbes } from "./rdd-herbes.js";
import { RdDGemme } from "./rdd-gemme.js";
@ -12,8 +11,9 @@ import { SystemCompendiums } from "./settings/system-compendiums.js";
import { Misc } from "./misc.js";
import { RdDTimestamp } from "./time/rdd-timestamp.js";
import { RdDItemCompetenceCreature } from "./item-competencecreature.js";
import { ITEM_TYPES, RdDItem } from "./item.js";
import { ACTOR_TYPES, ITEM_TYPES, RdDItem } from "./item.js";
import { FLEUVE_COORD, TMRUtility } from "./tmr-utility.js";
import { RdDTextEditor } from "./apps/rdd-text-roll-editor.js";
/**
* Extend the basic ItemSheet for RdD specific items
@ -97,11 +97,11 @@ export class RdDItemSheet extends ItemSheet {
name: this.item.name,
system: this.item.system,
actorId: this.actor?.id,
description: await TextEditor.enrichHTML(this.item.system.description, { async: true }),
descriptionmj: await TextEditor.enrichHTML(this.item.system.descriptionmj, { async: true }),
description: await RdDTextEditor.enrichHTML(this.item.system.description, this.item),
descriptionmj: await RdDTextEditor.enrichHTML(this.item.system.descriptionmj, this.item),
isComestible: this.item.getUtilisationCuisine(),
options: RdDSheetUtility.mergeDocumentRights(this.options, this.item, this.isEditable),
competences: await SystemCompendiums.getCompetences('personnage'),
competences: await SystemCompendiums.getCompetences(ACTOR_TYPES.personnage),
categories: RdDItem.getCategories(this.item.type),
}
@ -120,18 +120,17 @@ export class RdDItemSheet extends ItemSheet {
formData.competences = formData.competences.filter(it => it.isCompetenceArme())
}
if (this.item.type == ITEM_TYPES.recettecuisine) {
formData.ingredients = await TextEditor.enrichHTML(this.object.system.ingredients, { async: true })
formData.ingredients = await RdDTextEditor.enrichHTML(this.item.system.ingredients, this.item)
}
if (this.item.type == ITEM_TYPES.extraitpoetique) {
formData.extrait = await TextEditor.enrichHTML(this.object.system.extrait, { async: true })
formData.texte = await TextEditor.enrichHTML(this.object.system.texte, { async: true })
formData.extrait = await RdDTextEditor.enrichHTML(this.item.system.extrait, this.item)
formData.texte = await RdDTextEditor.enrichHTML(this.item.system.texte, this.item)
}
if (this.item.type == ITEM_TYPES.recettealchimique) {
RdDAlchimie.processManipulation(this.item, this.actor?.id);
formData.manipulation_update = await TextEditor.enrichHTML(this.object.system.manipulation_update, { async: true })
formData.utilisation = await TextEditor.enrichHTML(this.object.system.utilisation, { async: true })
formData.enchantement = await TextEditor.enrichHTML(this.object.system.enchantement, { async: true })
formData.sureffet = await TextEditor.enrichHTML(this.object.system.sureffet, { async: true })
formData.manipulation = await RdDTextEditor.enrichHTML(this.item.system.manipulation, this.item)
formData.utilisation = await RdDTextEditor.enrichHTML(this.item.system.utilisation, this.item)
formData.enchantement = await RdDTextEditor.enrichHTML(this.item.system.enchantement, this.item)
formData.sureffet = await RdDTextEditor.enrichHTML(this.item.system.sureffet, this.item)
}
if (this.item.type == ITEM_TYPES.gemme) {
formData.gemmeTypeList = RdDGemme.getGemmeTypeOptionList();
@ -207,17 +206,8 @@ export class RdDItemSheet extends ItemSheet {
this.html.find('.creer-potion-base').click((event) => this._getEventActor(event).actionHerbe(this.item));
this.html.find('input[name="system.cacher_points_de_tache"]').change(async event => await this.item.update({ 'system.cacher_points_de_tache': event.currentTarget.checked }));
this.html.find('.alchimie-tache a').click((event) => {
let actor = this._getEventActor(event);
if (actor) {
let recetteId = event.currentTarget.attributes['data-recette-id'].value;
let tacheName = event.currentTarget.attributes['data-alchimie-tache'].value;
let tacheData = event.currentTarget.attributes['data-alchimie-data'].value;
actor.effectuerTacheAlchimie(recetteId, tacheName, tacheData);
} else {
ui.notifications.info("Impossible trouver un acteur pour réaliser cette tache Alchimique.");
}
});
this.html.find('.roll-text').click(async event => await RdDTextEditor.rollText(event, this.actor))
this.html.find('.chat-roll-text').click(async event => await RdDTextEditor.chatRollText(event))
if (this.actor) {
this.html.find('.item-split').click(async event => RdDSheetUtility.splitItem(RdDSheetUtility.getItem(event, this.actor), this.actor, this.getActionRenderItem()));
@ -272,7 +262,7 @@ export class RdDItemSheet extends ItemSheet {
}
}
async supprimerBonusCase(deleteCoord){
async supprimerBonusCase(deleteCoord) {
if (this.item.type == ITEM_TYPES.sort) {
const oldList = RdDItemSort.getBonusCaseList(this.item)
const newList = oldList.filter(it => it.case != deleteCoord);

View File

@ -45,6 +45,7 @@ export const ITEM_TYPES = {
danse: 'danse',
chant: 'chant',
jeu: 'jeu',
race: 'race',
recettecuisine: 'recettecuisine',
oeuvre: 'oeuvre',
recettealchimique: 'recettealchimique',

View File

@ -1,9 +1,11 @@
import { RdDItem } from "../item.js";
import { ITEM_TYPES, RdDItem } from "../item.js";
import { Misc } from "../misc.js";
import { ReglesOptionnelles } from "../settings/regles-optionnelles.js";
export class RdDItemArmure extends RdDItem {
static get ITEM_TYPE() { return ITEM_TYPES.armure }
static get defaultIcon() {
return "systems/foundryvtt-reve-de-dragon/icons/armes_armures/armure_plaques.webp";
}

100
module/item/race.js Normal file
View File

@ -0,0 +1,100 @@
import { ITEM_TYPES, RdDItem } from "../item.js";
import { Misc } from "../misc.js";
import { LIST_CARAC_PERSONNAGE, RdDCarac } from "../rdd-carac.js";
export class RdDItemRace extends RdDItem {
static get ITEM_TYPE() { return ITEM_TYPES.race }
static get defaultIcon() {
return "systems/foundryvtt-reve-de-dragon/icons/humanoides/humain.webp";
}
static checkRacialMax(actor, code, value) {
const race = RdDItemRace.getRace(actor)
if (code == LIST_CARAC_PERSONNAGE.force.code) {
if (!race.isForceValid(actor, value)) {
ui.notifications.warn(race.system.carac.force.limitmessage)
return false
}
}
const carac = RdDCarac.carac(code)
if (race.isMax(actor, code, value - 1)) {
ui.notifications.warn(`${value} est supérieure au maximum de ${carac.label}`)
return false
}
return true
}
static applyRacialLimits(actor) {
const race = RdDItemRace.getRace(actor)
actor.system.carac.taille.value = race.getValidTaille(actor.getTaille())
actor.system.carac.force.value = Math.min(
actor.getForce(),
race.getForceMax(actor))
}
static isRacialMax(actor, code, value = undefined) {
return RdDItemRace.getRace(actor).isMax(actor, code, value)
}
static getRace(actor) {
return actor.itemTypes[ITEM_TYPES.race].find(it => true) ?? RdDItemRace.getFallbackRace()
}
static getFallbackRace() {
if (RdDItemRace.fallback == undefined) {
RdDItemRace.fallback = new RdDItemRace({ name: 'Humain', type: RdDItemRace.ITEM_TYPE })
}
return RdDItemRace.fallback
}
isMax(actor, code, value = undefined) {
const path = RdDCarac.carac(code)?.path
if (value == undefined) {
value = path ? foundry.utils.getProperty(actor, path) : 0
}
if (code == LIST_CARAC_PERSONNAGE.force.code) {
return value >= this.getForceMax(actor)
}
const max = foundry.utils.getProperty(this, path) ?? -1
return (max > 0 && value >= max)
}
getValidTaille(taille) {
const min = Math.max(this.system.carac.taille.min, 0)
if (min > taille) {
ui.notifications.warn("La Taille est inférieur au minimum racial")
return min
}
const raceMax = 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")
return max
}
return taille
}
isForceValid(actor, value) {
return value <= this.getForceMax(actor)
}
getForceMax(actor) {
const terms = this.system.carac.force.limit.replaceAll(' ', '').split('+')
return terms.map(
it => {
const term = Number.parseInt(it)
if (Number.isInteger(term)) {
return term
}
const path = RdDCarac.carac(it)?.path
if (path) {
return foundry.utils.getProperty(actor, path)
}
return 0
}
).reduce(Misc.sum());
}
}

View File

@ -1,11 +1,12 @@
import { RdDBaseActorSheet } from "../actor/base-actor-sheet.js";
import { ITEM_TYPES } from "../item.js";
import { RdDSheetUtility } from "../rdd-sheet-utility.js";
import { RdDUtility } from "../rdd-utility.js";
import { RdDItemInventaireSheet } from "./sheet-base-inventaire.js";
export class RdDConteneurItemSheet extends RdDItemInventaireSheet {
static get ITEM_TYPE() { return "conteneur" };
static get ITEM_TYPE() { return ITEM_TYPES.conteneur };
async getData() {
const formData = await super.getData();

View File

@ -106,7 +106,7 @@ export class RdDItemSigneDraconique extends RdDItem {
}
static async randomSigneDescription() {
return await RdDRollTables.drawTextFromRollTable("Signes draconiques", false);
return await RdDRollTables.drawTextFromRollTable("Signes draconiques", {toChat:false});
}
}

View File

@ -0,0 +1,29 @@
import { RdDTextEditor } from "../apps/rdd-text-roll-editor.js";
import { SYSTEM_RDD } from "../constants.js";
import { Misc } from "../misc.js";
export class RdDJournalSheet extends JournalTextPageSheet {
static register() {
DocumentSheetConfig.unregisterSheet(JournalEntryPage, "core", JournalTextPageSheet)
DocumentSheetConfig.registerSheet(JournalEntryPage,
SYSTEM_RDD,
RdDJournalSheet, {
types: ["text"],
makeDefault: true,
});
}
async getData(options) {
const journalData = await super.getData(options);
journalData.editor.content = await RdDTextEditor.enrichHTML(journalData.document.text.content, this.object)
return journalData
}
activateListeners(html) {
super.activateListeners(html);
html.find('.roll-text').click(async event => await RdDTextEditor.rollText(event, this.actor))
html.find('.chat-roll-text').click(async event => await RdDTextEditor.chatRollText(event))
}
}

View File

@ -2,10 +2,11 @@ import { RdDBaseActor } from "./actor/base-actor.js";
import { LOG_HEAD, SYSTEM_RDD } from "./constants.js";
import { Grammar } from "./grammar.js";
import { Monnaie } from "./item-monnaie.js";
import { RdDItem, ITEM_TYPES } from "./item.js";
import { RdDItem, ITEM_TYPES, ACTOR_TYPES } from "./item.js";
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";
class Migration {
get code() { return "sample"; }
@ -566,6 +567,27 @@ class _12_0_26_MigrationVoieSorts extends Migration {
}
}
class _12_0_32_MigrationRaces extends Migration {
get code() { return "migration-races" }
get version() { return "12.0.32" }
async migrate() {
const races = await SystemCompendiums.getItems("races", ITEM_TYPES.race)
await game.actors.filter(it => it.type == ACTOR_TYPES.personnage).forEach(async actor => {
if (actor.itemTypes[ITEM_TYPES.race].length == 0) {
const raceName = actor.system.race ?? 'Humain'
const race = races.find(it => Grammar.equalsInsensitive(raceName, it.name))
if (race) {
console.log(this.code, `Adding race ${race.name} to actor ${actor.name}`)
actor.createEmbeddedDocuments('Item', [race])
console.log(this.code, `Neutralizing race ${race.name} adjustments for actor ${actor.name}`)
actor._applyRaceCaracUpdates(race, -1)
}
}
})
}
}
export class Migrations {
static getMigrations() {
return [
@ -585,7 +607,8 @@ export class Migrations {
new _10_7_19_CategorieCompetenceCreature(),
new _10_7_19_PossessionsEntiteVictime(),
new _11_2_20_MigrationAstrologie(),
new _12_0_26_MigrationVoieSorts()
new _12_0_26_MigrationVoieSorts(),
new _12_0_32_MigrationRaces(),
];
}

View File

@ -1,5 +1,12 @@
import { Grammar } from "./grammar.js";
const DEFAULT_FIND_OPTIONS = {
mapper: it => it.name,
preFilter: it => true,
description: 'valeur',
onMessage: m => ui.notifications.info(m)
}
/**
* This class is intended as a placeholder for utility methods unrelated
* to actual classes of the game system or of FoundryVTT
@ -209,6 +216,10 @@ export class Misc {
static isFirstConnectedGM() {
return game.user == Misc.firstConnectedGM();
}
static hasConnectedGM() {
return Misc.firstConnectedGM();
}
static firstConnectedGMId() {
return Misc.firstConnectedGM()?.id;
@ -226,13 +237,7 @@ export class Misc {
/* -------------------------------------------- */
static findFirstLike(value, elements, options = {}) {
options = foundry.utils.mergeObject({
mapper: it => it.name,
preFilter: it => true,
description: 'valeur',
onMessage: m => ui.notifications.info(m)
}, options, { overwrite: true, inplace: false });
options = foundry.utils.mergeObject(DEFAULT_FIND_OPTIONS, options, { overwrite: true, inplace: false });
const subset = this.findAllLike(value, elements, options);
if (subset.length == 0) {
console.log(`Aucune ${options.description} pour ${value}`);
@ -251,13 +256,7 @@ export class Misc {
}
static findAllLike(value, elements, options = {}) {
options = foundry.utils.mergeObject({
mapper: it => it.name,
preFilter: it => true,
description: 'valeur',
onMessage: m => ui.notifications.info(m)
}, options);
options = foundry.utils.mergeObject(DEFAULT_FIND_OPTIONS, options, { overwrite: true, inplace: false });
if (!value) {
options.onMessage(`Pas de ${options.description} correspondant à une valeur vide`);
return [];

View File

@ -1,48 +1,8 @@
/* -------------------------------------------- */
import { Misc } from "./misc.js";
const matchOperations = new RegExp(/@(\w*){([\w\-]+)}/ig);
const matchOperationTerms = new RegExp(/@(\w*){([\w\-]+)}/i);
/* -------------------------------------------- */
export class RdDAlchimie {
/* -------------------------------------------- */
static processManipulation(recette, actorId = undefined) {
let manip = recette.system.manipulation;
let matchArray = manip.match(matchOperations);
if (matchArray) {
for (let matchStr of matchArray) {
let result = matchStr.match(matchOperationTerms);
if (result[1] && result[2]) {
let commande = Misc.upperFirst(result[1]);
let replacement = this[`_alchimie${commande}`](recette, result[2], actorId);
manip = manip.replace(result[0], replacement);
}
}
}
recette.system.manipulation_update = manip;
}
/* -------------------------------------------- */
static _alchimieCouleur(recette, couleurs, actorId) {
return RdDAlchimie._alchimieLink(recette, couleurs, actorId, 'couleur', 'Température');
}
/* -------------------------------------------- */
static _alchimieConsistance(recette, consistances, actorId) {
return RdDAlchimie._alchimieLink(recette, consistances, actorId, 'consistance', 'Consistance');
}
static _alchimieLink(recette, termes, actorId, tacheAlchimie, labelTache) {
const difficulte = RdDAlchimie.getDifficulte(termes);
const link = actorId ? ` <a data-recette-id="${recette._id}" data-actor-id="${actorId}" data-alchimie-tache="${tacheAlchimie}" data-alchimie-data="${termes}">` : '';
const endLink = actorId ? '</a>' : '';
return `<span class="alchimie-tache">${link}${labelTache} ${termes} (${difficulte})${endLink}</span>`;
}
/* -------------------------------------------- */
static getDifficulte(aspects) {
let elements = aspects.split('-');
static getDifficulte(termes) {
let elements = termes.split('-');
let composantes = elements.length;
let distincts = Object.keys(Misc.classifyFirst(elements, it => it)).length;
if (distincts == 1) {
@ -58,5 +18,4 @@ export class RdDAlchimie {
}
return 'intellect';
}
}

View File

@ -3,42 +3,98 @@ import { Misc } from "./misc.js";
const TABLE_CARACTERISTIQUES_DERIVEES = {
// xp: coût pour passer du niveau inférieur à ce niveau
1: { xp: 3, poids: "moins de 1kg", poidsMin: 0, poidsMax: 1, plusdom: -5, sconst: 0.5, sust: 0.1 },
2: { xp: 3, poids: "1-5", poidsMin: 1, poidsMax: 5, plusdom: -4, sconst: 0.5, sust: 0.3 },
3: { xp: 4, poids: "6-10", poidsMin: 6, poidsMax: 10, plusdom: -3, sconst: 1, sust: 0.5, beaute: 'hideux' },
4: { xp: 4, poids: "11-20", poidsMin: 11, poidsMax: 20, plusdom: -3, sconst: 1, sust: 1, beaute: 'repoussant' },
5: { xp: 5, poids: "21-30", poidsMin: 21, poidsMax: 30, plusdom: -2, sconst: 1, sust: 1, beaute: 'franchement très laid' },
6: { xp: 5, poids: "31-40", poidsMin: 31, poidsMax: 40, plusdom: -1, sconst: 2, sust: 2, beaute: 'laid' },
7: { xp: 6, poids: "41-50", poidsMin: 41, poidsMax: 50, plusdom: -1, sconst: 2, sust: 2, beaute: 'très désavantagé' },
8: { xp: 6, poids: "51-60", poidsMin: 51, poidsMax: 60, plusdom: 0, sconst: 2, sust: 2, beaute: 'désavantagé' },
9: { xp: 7, poids: "61-65", poidsMin: 61, poidsMax: 65, plusdom: 0, sconst: 3, sust: 2, beaute: 'pas terrible' },
10: { xp: 7, poids: "66-70", poidsMin: 66, poidsMax: 70, plusdom: 0, sconst: 3, sust: 3, beaute: 'commun' },
11: { xp: 8, poids: "71-75", poidsMin: 71, poidsMax: 75, plusdom: 0, sconst: 3, sust: 3, beaute: 'pas mal' },
12: { xp: 8, poids: "76-80", poidsMin: 76, poidsMax: 80, plusdom: +1, sconst: 4, sust: 3, beaute: 'avantagé' },
13: { xp: 9, poids: "81-90", poidsMin: 81, poidsMax: 90, plusdom: +1, sconst: 4, sust: 3, beaute: 'mignon' },
14: { xp: 9, poids: "91-100", poidsMin: 91, poidsMax: 100, plusdom: +2, sconst: 4, sust: 4, beaute: 'beau' },
15: { xp: 10, poids: "101-110", poidsMin: 101, poidsMax: 110, plusdom: +2, sconst: 5, sust: 4, beaute: 'très beau' },
16: { xp: 20, poids: "111-120", poidsMin: 111, poidsMax: 120, plusdom: +3, sconst: 5, sust: 4, beaute: 'éblouissant' },
17: { xp: 30, poids: "121-131", poidsMin: 121, poidsMax: 131, plusdom: +3, sconst: 5, sust: 5 },
18: { xp: 40, poids: "131-141", poidsMin: 131, poidsMax: 141, plusdom: +4, sconst: 6, sust: 5 },
19: { xp: 50, poids: "141-150", poidsMin: 141, poidsMax: 150, plusdom: +4, sconst: 6, sust: 5 },
20: { xp: 60, poids: "151-160", poidsMin: 151, poidsMax: 160, plusdom: +4, sconst: 6, sust: 6 },
21: { xp: 70, poids: "161-180", poidsMin: 161, poidsMax: 180, plusdom: +5, sconst: 7, sust: 6 },
22: { xp: 80, poids: "181-200", poidsMin: 181, poidsMax: 200, plusdom: +5, sconst: 7, sust: 7 },
23: { xp: 90, poids: "201-300", poidsMin: 201, poidsMax: 300, plusdom: +6, sconst: 7, sust: 8 },
24: { xp: 100, poids: "301-400", poidsMin: 301, poidsMax: 400, plusdom: +6, sconst: 8, sust: 9 },
25: { xp: 110, poids: "401-500", poidsMin: 401, poidsMax: 500, plusdom: +7, sconst: 8, sust: 10 },
26: { xp: 120, poids: "501-600", poidsMin: 501, poidsMax: 600, plusdom: +7, sconst: 8, sust: 11 },
27: { xp: 130, poids: "601-700", poidsMin: 601, poidsMax: 700, plusdom: +8, sconst: 9, sust: 12 },
28: { xp: 140, poids: "701-800", poidsMin: 701, poidsMax: 800, plusdom: +8, sconst: 9, sust: 13 },
29: { xp: 150, poids: "801-900", poidsMin: 801, poidsMax: 900, plusdom: +9, sconst: 9, sust: 14 },
30: { xp: 160, poids: "901-1000", poidsMin: 901, poidsMax: 1000, plusdom: +9, sconst: 10, sust: 15 },
31: { xp: 170, poids: "1001-1500", poidsMin: 1001, poidsMax: 1500, plusdom: +10, sconst: 10, sust: 16 },
32: { xp: 180, poids: "1501-2000", poidsMin: 1501, poidsMax: 2000, plusdom: +11, sconst: 10, sust: 17 }
1: { xp: 3, niveau: -5, poids: "moins de 1kg", poidsMin: 0, poidsMax: 1, plusdom: -5, sconst: 0.5, sust: 0.1 },
2: { xp: 3, niveau: -4, poids: "1-5", poidsMin: 1, poidsMax: 5, plusdom: -4, sconst: 0.5, sust: 0.3 },
3: { xp: 4, niveau: -3, poids: "6-10", poidsMin: 6, poidsMax: 10, plusdom: -3, sconst: 1, sust: 0.5, beaute: 'hideux' },
4: { xp: 4, niveau: -2, poids: "11-20", poidsMin: 11, poidsMax: 20, plusdom: -3, sconst: 1, sust: 1, beaute: 'repoussant' },
5: { xp: 5, niveau: -1, poids: "21-30", poidsMin: 21, poidsMax: 30, plusdom: -2, sconst: 1, sust: 1, beaute: 'franchement très laid' },
6: { xp: 5, niveau: 0, poids: "31-40", poidsMin: 31, poidsMax: 40, plusdom: -1, sconst: 2, sust: 2, beaute: 'laid' },
7: { xp: 6, niveau: 0, poids: "41-50", poidsMin: 41, poidsMax: 50, plusdom: -1, sconst: 2, sust: 2, beaute: 'très désavantagé' },
8: { xp: 6, niveau: 0, poids: "51-60", poidsMin: 51, poidsMax: 60, plusdom: 0, sconst: 2, sust: 2, beaute: 'désavantagé' },
9: { xp: 7, niveau: 0, poids: "61-65", poidsMin: 61, poidsMax: 65, plusdom: 0, sconst: 3, sust: 2, beaute: 'pas terrible' },
10: { xp: 7, niveau: 0, poids: "66-70", poidsMin: 66, poidsMax: 70, plusdom: 0, sconst: 3, sust: 3, beaute: 'commun' },
11: { xp: 8, niveau: 1, poids: "71-75", poidsMin: 71, poidsMax: 75, plusdom: 0, sconst: 3, sust: 3, beaute: 'pas mal' },
12: { xp: 8, niveau: 1, poids: "76-80", poidsMin: 76, poidsMax: 80, plusdom: +1, sconst: 4, sust: 3, beaute: 'avantagé' },
13: { xp: 9, niveau: 2, poids: "81-90", poidsMin: 81, poidsMax: 90, plusdom: +1, sconst: 4, sust: 3, beaute: 'mignon' },
14: { xp: 9, niveau: 2, poids: "91-100", poidsMin: 91, poidsMax: 100, plusdom: +2, sconst: 4, sust: 4, beaute: 'beau' },
15: { xp: 10, niveau: 3, poids: "101-110", poidsMin: 101, poidsMax: 110, plusdom: +2, sconst: 5, sust: 4, beaute: 'très beau' },
16: { xp: 20, niveau: 3, poids: "111-120", poidsMin: 111, poidsMax: 120, plusdom: +3, sconst: 5, sust: 4, beaute: 'éblouissant' },
17: { xp: 30, niveau: 4, poids: "121-131", poidsMin: 121, poidsMax: 131, plusdom: +3, sconst: 5, sust: 5 },
18: { xp: 40, niveau: 4, poids: "131-141", poidsMin: 131, poidsMax: 141, plusdom: +4, sconst: 6, sust: 5 },
19: { xp: 50, niveau: 5, poids: "141-150", poidsMin: 141, poidsMax: 150, plusdom: +4, sconst: 6, sust: 5 },
20: { xp: 60, niveau: 5, poids: "151-160", poidsMin: 151, poidsMax: 160, plusdom: +4, sconst: 6, sust: 6 },
21: { xp: 70, niveau: 6, poids: "161-180", poidsMin: 161, poidsMax: 180, plusdom: +5, sconst: 7, sust: 6 },
22: { xp: 80, niveau: 6, poids: "181-200", poidsMin: 181, poidsMax: 200, plusdom: +5, sconst: 7, sust: 7 },
23: { xp: 90, niveau: 7, poids: "201-300", poidsMin: 201, poidsMax: 300, plusdom: +6, sconst: 7, sust: 8 },
24: { xp: 100, niveau: 7, poids: "301-400", poidsMin: 301, poidsMax: 400, plusdom: +6, sconst: 8, sust: 9 },
25: { xp: 110, niveau: 8, poids: "401-500", poidsMin: 401, poidsMax: 500, plusdom: +7, sconst: 8, sust: 10 },
26: { xp: 120, niveau: 8, poids: "501-600", poidsMin: 501, poidsMax: 600, plusdom: +7, sconst: 8, sust: 11 },
27: { xp: 130, niveau: 9, poids: "601-700", poidsMin: 601, poidsMax: 700, plusdom: +8, sconst: 9, sust: 12 },
28: { xp: 140, niveau: 9, poids: "701-800", poidsMin: 701, poidsMax: 800, plusdom: +8, sconst: 9, sust: 13 },
29: { xp: 150, niveau: 10, poids: "801-900", poidsMin: 801, poidsMax: 900, plusdom: +9, sconst: 9, sust: 14 },
30: { xp: 160, niveau: 10, poids: "901-1000", poidsMin: 901, poidsMax: 1000, plusdom: +9, sconst: 10, sust: 15 },
31: { xp: 170, niveau: 11, poids: "1001-1500", poidsMin: 1001, poidsMax: 1500, plusdom: +10, sconst: 10, sust: 16 },
32: { xp: 180, niveau: 11, poids: "1501-2000", poidsMin: 1501, poidsMax: 2000, plusdom: +11, sconst: 10, sust: 17 }
};
export const LIST_CARAC_PERSONNAGE = {
'taille': { code: 'taille', label: 'Taille', isCarac: true, path: 'system.carac.taille.value' },
'apparence': { code: 'apparence', label: 'Apparence', isCarac: true, path: 'system.carac.apparence.value' },
'constitution': { code: 'constitution', label: 'Constitution', isCarac: true, path: 'system.carac.constitution.value' },
'force': { code: 'force', label: 'Force', isCarac: true, path: 'system.carac.force.value' },
'agilite': { code: 'agilite', label: 'Agilité', isCarac: true, path: 'system.carac.agilite.value' },
'dexterite': { code: 'dexterite', label: 'Dextérité', isCarac: true, path: 'system.carac.dexterite.value' },
'vue': { code: 'vue', label: 'Vue', isCarac: true, path: 'system.carac.vue.value' },
'ouie': { code: 'ouie', label: 'Ouïe', isCarac: true, path: 'system.carac.ouie.value' },
'odoratgout': { code: 'odoratgout', label: 'Odorat-Goût', isCarac: true, path: 'system.carac.odoratgout.value' },
'volonte': { code: 'volonte', label: 'Volonté', isCarac: true, path: 'system.carac.volonte.value' },
'intellect': { code: 'intellect', label: 'Intellect', isCarac: true, path: 'system.carac.intellect.value' },
'empathie': { code: 'empathie', label: 'Empathie', isCarac: true, path: 'system.carac.empathie.value' },
'reve': { code: 'reve', label: 'Rêve', isCarac: true, path: 'system.carac.reve.value' },
'chance': { code: 'chance', label: 'Chance', isCarac: true, path: 'system.carac.chance.value' },
'protection': { code: 'protection', label: 'Protection naturelle', isCarac: false, path: 'system.attributs.protection.value' },
'beaute': { code: 'beaute', label: 'Beauté', isCarac: false, path: 'system.background.beaute.value' }
}
export const LIST_CARAC_AUTRES = {
'perception': { code: 'perception', label: 'Perception', path: 'system.carac.perception.value' },
}
const LIST_CARAC_DERIVEE = {
'melee': { code: "melee", label: 'Mêlée', path: 'system.carac.melee.value' },
'tir': { code: "tir", label: 'Tir', path: 'system.carac.tir.value' },
'lancer': { code: "lancer", label: 'Lancer', path: 'system.carac.lancer.value' },
'derobee': { code: "derobee", label: 'Dérobée', path: 'system.carac.derobee.value' },
'chance-actuelle': { code: "chance-actuelle", label: 'Chance actuelle', path: 'system.carac.lancer.value' },
'reve-actuel': { code: "reve-actuel", label: 'Rêve actuel', path: 'system.reve.reve.value' },
}
const LIST_CARAC_ROLL = Object.values(LIST_CARAC_PERSONNAGE).filter(it => it.isCarac && it.code != 'taille')
.concat(Object.values(LIST_CARAC_AUTRES))
.concat(Object.values(LIST_CARAC_DERIVEE))
export class RdDCarac {
static caracDetails(name) {
let entry = Misc.findFirstLike(name, LIST_CARAC_ROLL, { mapper: it => it.code, description: 'caractéristique', onMessage: m => { } })
if (entry) {
return entry
}
return Misc.findFirstLike(name, LIST_CARAC_ROLL, { mapper: it => it.label, description: 'caractéristique' })
}
static carac(code) {
return LIST_CARAC_PERSONNAGE[code]
}
static label(code) {
return RdDCarac.carac(code)?.label ?? '---'
}
static caracs(filter = it => it.isCarac) {
return Object.values(LIST_CARAC_PERSONNAGE).filter(filter)
}
static isAgiliteOuDerobee(selectedCarac) {
return selectedCarac?.label.match(/(Agilité|Dérobée)/);
}

View File

@ -472,15 +472,15 @@ export class RdDCombat {
/* -------------------------------------------- */
static registerChatCallbacks(html) {
for (let button of [
'#parer-button',
'#esquiver-button',
'#particuliere-attaque',
'#encaisser-button',
'#appel-chance-defense',
'#appel-destinee-defense',
'#appel-chance-attaque',
'#appel-destinee-attaque',
'#echec-total-attaque',
'.parer-button',
'.esquiver-button',
'.particuliere-attaque',
'.encaisser-button',
'.appel-chance-defense',
'.appel-destinee-defense',
'.appel-chance-attaque',
'.appel-destinee-attaque',
'.echec-total-attaque',
]) {
html.on("click", button, event => {
const rddCombat = RdDCombat.rddCombatForAttackerAndDefender(
@ -539,22 +539,22 @@ export class RdDCombat {
const compId = event.currentTarget.attributes['data-compid']?.value;
switch (button) {
case '#particuliere-attaque': return await this.choixParticuliere(attackerRoll, event.currentTarget.attributes['data-mode'].value);
case '#parer-button': return this.parade(attackerRoll, armeParadeId);
case '#esquiver-button': return this.esquive(attackerRoll, compId, competence);
case '#encaisser-button': return this.encaisser(attackerRoll, defenderRoll);
case '#echec-total-attaque': return this._onEchecTotal(attackerRoll);
case '.particuliere-attaque': return await this.choixParticuliere(attackerRoll, event.currentTarget.attributes['data-mode'].value);
case '.parer-button': return this.parade(attackerRoll, armeParadeId);
case '.esquiver-button': return this.esquive(attackerRoll, compId, competence);
case '0encaisser-button': return this.encaisser(attackerRoll, defenderRoll);
case '.echec-total-attaque': return this._onEchecTotal(attackerRoll);
case '#appel-chance-attaque': return this.attacker.rollAppelChance(
case '.appel-chance-attaque': return this.attacker.rollAppelChance(
() => this.attaqueChanceuse(attackerRoll),
() => this._onEchecTotal(attackerRoll));
case '#appel-chance-defense': return this.defender.rollAppelChance(
case '.appel-chance-defense': return this.defender.rollAppelChance(
() => this.defenseChanceuse(attackerRoll, defenderRoll),
() => this.afficherOptionsDefense(attackerRoll, defenderRoll, { defenseChance: true }));
case '#appel-destinee-attaque': return this.attacker.appelDestinee(
case '.appel-destinee-attaque': return this.attacker.appelDestinee(
() => this.attaqueSignificative(attackerRoll),
() => { });
case '#appel-destinee-defense': return this.defender.appelDestinee(
case '.appel-destinee-defense': return this.defender.appelDestinee(
() => this.defenseDestinee(defenderRoll),
() => { });
}
@ -752,7 +752,6 @@ export class RdDCombat {
dialog.render(true);
}
/* -------------------------------------------- */
_prepareAttaque(competence, arme) {
let rollData = {
@ -968,7 +967,6 @@ export class RdDCombat {
async _onAttaqueEchec(rollData) {
console.log("RdDCombat.onAttaqueEchec >>>", rollData);
await RdDResolutionTable.displayRollData(rollData, this.attacker, 'chat-resultat-attaque.html');
}
/* -------------------------------------------- */

View File

@ -28,9 +28,11 @@ import { Environnement } from "./environnement.js"
import { RdDActor } from "./actor.js"
import { RdDBaseActor } from "./actor/base-actor.js"
import { RdDCreature } from "./actor/creature.js"
import { RdDCommerce } from "./actor/commerce.js"
import { RdDEntite } from "./actor/entite.js"
import { RdDVehicule } from "./actor/vehicule.js"
import { RdDActorSheet } from "./actor-sheet.js"
import { RdDCommerceSheet } from "./actor/commerce-sheet.js"
import { RdDCreatureSheet } from "./actor/creature-sheet.js"
@ -38,6 +40,7 @@ import { RdDActorEntiteSheet } from "./actor/entite-sheet.js"
import { RdDActorVehiculeSheet } from "./actor/vehicule-sheet.js"
import { RdDItem } from "./item.js"
import { RdDItemArmure } from "./item/armure.js"
import { RdDItemBlessure } from "./item/blessure.js"
import { RdDItemService } from "./item/service.js"
import { RdDItemMaladie } from "./item/maladie.js"
@ -45,7 +48,11 @@ import { RdDItemPoison } from "./item/poison.js"
import { RdDItemSigneDraconique } from "./item/signedraconique.js"
import { RdDItemQueue } from "./item/queue.js"
import { RdDItemOmbre } from "./item/ombre.js"
import { RdDItemSort } from "./item-sort.js"
import { RdDItemTete } from "./item/tete.js"
import { RdDItemRace } from "./item/race.js"
import { RdDItemSouffle } from "./item/souffle.js"
import { RdDRencontre } from "./item/rencontre.js"
import { RdDItemSheet } from "./item-sheet.js"
@ -57,20 +64,19 @@ import { RdDPlanteItemSheet } from "./item/sheet-plante.js"
import { RdDIngredientItemSheet } from "./item/sheet-ingredient.js"
import { RdDFauneItemSheet } from "./item/sheet-faune.js"
import { RdDConteneurItemSheet } from "./item/sheet-conteneur.js"
import { RdDSigneDraconiqueItemSheet } from "./item/sheet-signedraconique.js"
import { RdDItemInventaireSheet } from "./item/sheet-base-inventaire.js"
import { RdDSigneDraconiqueItemSheet } from "./item/sheet-signedraconique.js"
import { AppAstrologie } from "./sommeil/app-astrologie.js"
import { RdDItemArmure } from "./item/armure.js"
import { AutoAdjustDarkness } from "./time/auto-adjust-darkness.js"
import { RdDCreature } from "./actor/creature.js"
import { RdDTMRDialog } from "./rdd-tmr-dialog.js"
import { OptionsAvancees } from "./settings/options-avancees.js"
import { ExportScriptarium } from "./actor/export-scriptarium/export-scriptarium.js"
import { AppPersonnageAleatoire } from "./actor/random/app-personnage-aleatoire.js"
import { RdDActorExportSheet } from "./actor/export-scriptarium/actor-encart-sheet.js"
import { RdDStatBlockParser } from "./apps/rdd-import-stats.js"
import { RdDItemSort } from "./item-sort.js"
import { RdDItemTete } from "./item/tete.js"
import { RdDJournalSheet } from "./journal/journal-sheet.js"
import { RdDTextEditor } from "./apps/rdd-text-roll-editor.js"
/**
* RdD system
@ -99,6 +105,7 @@ export class SystemReveDeDragon {
poison: RdDItemPoison,
queue: RdDItemQueue,
tete: RdDItemTete,
race: RdDItemRace,
rencontre: RdDRencontre,
service: RdDItemService,
signedraconique: RdDItemSigneDraconique,
@ -123,7 +130,7 @@ export class SystemReveDeDragon {
console.log(`Initializing Reve de Dragon System Settings`)
// preload handlebars templates
RdDUtility.preloadHandlebarsTemplates()
await RdDUtility.preloadHandlebarsTemplates()
AppPersonnageAleatoire.preloadHandlebars()
RdDItemSort.preloadHandlebars()
@ -191,6 +198,7 @@ export class SystemReveDeDragon {
RdDItemSheet.register(RdDIngredientItemSheet)
RdDItemSheet.register(RdDServiceItemSheet)
RdDItemSheet.register(RdDBlessureItemSheet)
RdDJournalSheet.register()
Items.registerSheet(SYSTEM_RDD, RdDItemInventaireSheet, {
types: [
@ -201,8 +209,9 @@ export class SystemReveDeDragon {
Items.registerSheet(SYSTEM_RDD, RdDItemSheet, {
types: [
"competence", "competencecreature",
"recettealchimique", "musique", "chant", "danse", "jeu", "recettecuisine", "oeuvre",
"meditation", "queue", "ombre", "souffle", "tete", "casetmr", "sort", "sortreserve",
"recettealchimique", "musique", "chant", "danse", "jeu", "race",
"recettecuisine", "oeuvre", "meditation",
"queue", "ombre", "souffle", "tete", "casetmr", "sort", "sortreserve",
"nombreastral", "tache", "maladie", "poison", "possession",
"tarot", "extraitpoetique", "empoignade"
], makeDefault: true

View File

@ -8,6 +8,7 @@ import { RdDCarac } from "./rdd-carac.js";
import { RdDResolutionTable } from "./rdd-resolution-table.js";
import { ReglesOptionnelles } from "./settings/regles-optionnelles.js";
import { Grammar } from "./grammar.js";
import { ACTOR_TYPES } from "./item.js";
/**
* Extend the base Dialog entity to select roll parameters
@ -62,7 +63,7 @@ export class RdDRoll extends Dialog {
forceDiceResult: -1
}
// Mini patch :Ajout du rêve actuel
if (actor.system.type == "personnage") {
if (actor.type == ACTOR_TYPES.personnage) {
defaultRollData.carac["reve-actuel"] = actor.system.reve.reve
}
@ -131,11 +132,12 @@ export class RdDRoll extends Dialog {
console.log('RdDRoll.activateListeners', this.rollData);
// Update html, according to rollData
if (this.rollData.competence) {
const defaut_carac = this.rollData.competence.system.defaut_carac
if (!this.rollData.selectedCarac && this.rollData.competence) {
// Set the default carac from the competence item
this.rollData.selectedCarac = this.rollData.carac[defaut_carac];
this.html.find("[name='carac']").val(defaut_carac);
this.rollData.selectedCarac = this.rollData.carac[this.actor.mapCarac(this.rollData.competence.system.defaut_carac)]
}
if (this.rollData.selectedCarac) {
this.html.find("[name='carac']").val(RdDCarac.caracDetails(this.rollData.selectedCarac.label).code)
}
if (this.rollData.selectedSort) {
this.setSelectedSort(this.rollData.selectedSort);
@ -173,7 +175,7 @@ export class RdDRoll extends Dialog {
this.updateRollResult(html);
this.html.find("[name='diffLibre']").val(this.rollData.diffLibre);
});
this.html.find('.roll-carac-competence').change((event) => {
this.html.find('.roll-text').change((event) => {
const competence = event.currentTarget.value
this.rollData.competence = this.rollData.competences.find(it => Grammar.equalsInsensitive(it.name, competence))
this.updateRollResult(html);

View File

@ -1,3 +1,4 @@
import { RdDTextEditor } from "./apps/rdd-text-roll-editor.js";
import { CompendiumTable, CompendiumTableHelpers, SystemCompendiums } from "./settings/system-compendiums.js";
export class RdDRollTables {
@ -28,8 +29,8 @@ export class RdDRollTables {
}
/* -------------------------------------------- */
static async drawTextFromRollTable(tableName, toChat) {
const drawResult = await RdDRollTables.genericGetTableResult(tableName, toChat);
static async drawTextFromRollTable(tableName, options = {}) {
const drawResult = await RdDRollTables.genericGetTableResult(tableName, options.toChat);
return drawResult.text;
}
@ -103,7 +104,7 @@ export class RdDRollTables {
static async getMaladresse(options = { toChat: false, arme: false }) {
return await RdDRollTables.drawTextFromRollTable(
options.arme ? "Maladresse armé" : "Maladresses non armé",
options.toChat);
options)
}
}

View File

@ -21,6 +21,8 @@ import { RdDCoeur } from "./coeur/rdd-coeur.js";
import { APP_ASTROLOGIE_REFRESH } from "./sommeil/app-astrologie.js";
import { RDD_CONFIG } 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";
/* -------------------------------------------- */
// This table starts at 0 -> niveau -10
@ -261,8 +263,25 @@ export class RdDUtility {
'systems/foundryvtt-reve-de-dragon/templates/chat-fabriquer-potion-base.html',
'systems/foundryvtt-reve-de-dragon/templates/chat-signe-draconique-actor.html'
];
// foundry et options
Handlebars.registerHelper('RDD_CONFIG', path => RDD_CONFIG[path])
Handlebars.registerHelper('linkCompendium', (pack, id, name) => RdDUtility.linkCompendium(pack, id, name));
Handlebars.registerHelper('regle-optionnelle', (option) => ReglesOptionnelles.isUsing(option));
Handlebars.registerHelper('plusMoins', diff => (diff > 0 ? '+' : '') + Math.round(diff))
// Handle v12 removal of this helper
Handlebars.registerHelper('select', function (selected, options) {
const escapedValue = RegExp.escape(Handlebars.escapeExpression(selected));
const rgx = new RegExp(' value=[\"\']' + escapedValue + '[\"\']');
const html = options.fn(this);
return html.replace(rgx, "$& selected");
})
// logic
Handlebars.registerHelper('either', (a, b) => a ?? b);
// string manipulation
Handlebars.registerHelper('upperFirst', str => Misc.upperFirst(str ?? 'Null'));
Handlebars.registerHelper('lowerFirst', str => Misc.lowerFirst(str ?? 'Null'));
Handlebars.registerHelper('uppercase', str => str?.toUpperCase() ?? '');
@ -271,50 +290,58 @@ export class RdDUtility {
Handlebars.registerHelper('grammar-apostrophe', (article, str) => Grammar.apostrophe(article, str));
Handlebars.registerHelper('grammar-un', str => Grammar.articleIndetermine(str));
Handlebars.registerHelper('grammar-accord', (genre, ...args) => Grammar.accord(genre, args));
Handlebars.registerHelper('json-stringify', object => JSON.stringify(object))
Handlebars.registerHelper('RDD_CONFIG', path => RDD_CONFIG[path])
// math
Handlebars.registerHelper('min', (...args) => Math.min(...args.slice(0, -1)));
Handlebars.registerHelper('repeat', function(n, block) {
let accum = '';
for(let i = 0; i < n; ++i){
accum += block.fn(i)
}
return accum
})
// tableaux, listes
Handlebars.registerHelper('array-includes', (array, value) => array.includes(value));
Handlebars.registerHelper('isLastIndex', (index, list) => index + 1 >= list.length);
Handlebars.registerHelper('trier', list => list.sort((a, b) => a.name.localeCompare(b.name)));
// table de résolution
Handlebars.registerHelper('computeResolutionScore', (row, col) => RdDResolutionTable.computePercentage(row, col));
Handlebars.registerHelper('computeResolutionChances', (row, col) => RdDResolutionTable.computeChances(row, col));
Handlebars.registerHelper('buildLigneInventaire', (item, options) => { return new Handlebars.SafeString(RdDUtility.buildLigneInventaire(item, options)); });
Handlebars.registerHelper('buildInventaireConteneur', (actorId, itemId, options) => { return new Handlebars.SafeString(RdDUtility.buildInventaireConteneur(actorId, itemId, options)); });
Handlebars.registerHelper('buildContenuConteneur', (item, options) => { return new Handlebars.SafeString(RdDUtility.buildContenuConteneur(item, options)); });
Handlebars.registerHelper('calculerPrixCommercant', item => item.calculerPrixCommercant());
Handlebars.registerHelper('caseTmr-label', coord => TMRUtility.getTMRLabel(coord));
Handlebars.registerHelper('caseTmr-type', coord => TMRUtility.getTMRType(coord));
Handlebars.registerHelper('typeTmr-name', type => TMRUtility.typeTmrName(type));
Handlebars.registerHelper('effetRencontre-name', coord => TMRUtility.typeTmrName(coord));
// gestion des dates et heures
Handlebars.registerHelper('timestamp-imgSigneHeure', (heure) => { return new Handlebars.SafeString(RdDTimestamp.imgSigneHeure(heure)) });
Handlebars.registerHelper('timestamp-imgSigne', (heure) => { return new Handlebars.SafeString(RdDTimestamp.imgSigne(heure)) });
Handlebars.registerHelper('timestamp-extract', timestamp => new RdDTimestamp(timestamp).toCalendrier());
Handlebars.registerHelper('timestamp-formulesDuree', () => RdDTimestamp.formulesDuree());
Handlebars.registerHelper('timestamp-formulesPeriode', () => RdDTimestamp.formulesPeriode());
// informations sur les acteurs
Handlebars.registerHelper('actor-default', (actorType, ...path) => RdDBaseActor.getDefaultValue(actorType, path.slice(0, -1)));
Handlebars.registerHelper('array-includes', (array, value) => array.includes(value));
Handlebars.registerHelper('min', (...args) => Math.min(...args.slice(0, -1)));
Handlebars.registerHelper('isLastIndex', (index, list) => index + 1 >= list.length);
Handlebars.registerHelper('regle-optionnelle', (option) => ReglesOptionnelles.isUsing(option));
Handlebars.registerHelper('trier', list => list.sort((a, b) => a.name.localeCompare(b.name)));
Handlebars.registerHelper('filtreTriCompetences', competences => RdDItemCompetence.triVisible(competences));
Handlebars.registerHelper('linkCompendium', (pack, id, name) => RdDUtility.linkCompendium(pack, id, name));
Handlebars.registerHelper('uniteQuantite', (itemId, actorId) => RdDUtility.getItem(itemId, actorId)?.getUniteQuantite());
Handlebars.registerHelper('isFieldInventaireModifiable', (type, field) => RdDItem.isFieldInventaireModifiable(type, field));
Handlebars.registerHelper('rarete-getChamp', (rarete, field) => RdDRaretes.getChamp(rarete, field));
Handlebars.registerHelper('plusMoins', diff => (diff > 0 ? '+' : '') + Math.round(diff))
Handlebars.registerHelper('experienceLog-topic', topic => ExperienceLog.labelTopic(topic));
// Handle v12 removal of this helper
Handlebars.registerHelper('select', function (selected, options) {
const escapedValue = RegExp.escape(Handlebars.escapeExpression(selected));
const rgx = new RegExp(' value=[\"\']' + escapedValue + '[\"\']');
const html = options.fn(this);
return html.replace(rgx, "$& selected");
});
Handlebars.registerHelper('carac-label', (code) => RdDCarac.label(code))
return loadTemplates(templatePaths);
// inventaire et marchands
Handlebars.registerHelper('buildLigneInventaire', (item, options) => { return new Handlebars.SafeString(RdDUtility.buildLigneInventaire(item, options)); });
Handlebars.registerHelper('buildInventaireConteneur', (actorId, itemId, options) => { return new Handlebars.SafeString(RdDUtility.buildInventaireConteneur(actorId, itemId, options)); });
Handlebars.registerHelper('buildContenuConteneur', (item, options) => { return new Handlebars.SafeString(RdDUtility.buildContenuConteneur(item, options)); });
Handlebars.registerHelper('calculerPrixCommercant', item => item.calculerPrixCommercant());
Handlebars.registerHelper('uniteQuantite', (itemId, actorId) => RdDUtility.getItem(itemId, actorId)?.getUniteQuantite());
Handlebars.registerHelper('isFieldInventaireModifiable', (type, field) => RdDItem.isFieldInventaireModifiable(type, field));
// Items
Handlebars.registerHelper('rarete-getChamp', (rarete, field) => RdDRaretes.getChamp(rarete, field));
// TMRs
Handlebars.registerHelper('caseTmr-label', coord => TMRUtility.getTMRLabel(coord));
Handlebars.registerHelper('caseTmr-type', coord => TMRUtility.getTMRType(coord));
Handlebars.registerHelper('typeTmr-name', type => TMRUtility.typeTmrName(type));
Handlebars.registerHelper('effetRencontre-name', coord => TMRUtility.typeTmrName(coord));
await loadTemplates(templatePaths);
}
static getItem(itemId, actorId = undefined) {
@ -670,6 +697,7 @@ export class RdDUtility {
RdDCombat.registerChatCallbacks(html)
RdDEmpoignade.registerChatCallbacks(html)
RdDCoeur.registerChatCallbacks(html)
RdDTextEditor.registerChatCallbacks(html)
// Gestion spécifique message passeurs
html.on("click", '.tmr-passeur-coord a', event => {
@ -908,7 +936,7 @@ export class RdDUtility {
/*-------------------------------------------- */
static checkThanatosXP(compName) {
if (compName.includes('Thanatos')) {
let message = "Vous avez mis des points d'Expérience dans la Voie de Thanatos !<br>Vous devez réduire manuellement d'un même montant d'XP une autre compétence Draconique.";
let message = "Vous avez mis des points d'Expérience en Thanatos !<br>Vous devez réduire manuellement d'un même montant d'XP une autre compétence Draconique.";
ChatMessage.create({
whisper: ChatUtility.getUserAndGMs(),
content: message

View File

@ -168,7 +168,7 @@ export class RollDataAjustements {
// s'assurer de la correction des infos rollData
foundry.utils.mergeObject(rollData, { ajustements: {}, use: {} }, { overwrite: false })
for (var key in referenceAjustements) {
for (let key in referenceAjustements) {
const reference = referenceAjustements[key];
rollData.ajustements[key] = {
visible: reference.isVisible && reference.isVisible(rollData, actor),

View File

@ -15,6 +15,7 @@ const CONFIGURABLE_COMPENDIUMS = {
'ombres-de-thanatos': { label: "Ombres de Thanatos", type: "Item" },
'souffles-de-dragon': { label: "Souffles de Dragon", type: "Item" },
'tarot-draconique': { label: "Tarots draconiques", type: "Item" },
'races': { label: "Races", type: "Item" },
'rencontres': { label: "Rencontres dans les TMR", type: "Item" },
'tetes-de-dragon-pour-haut-revants': { label: "Têtes de dragons (haut-rêvant)", type: "Item" },
'tetes-de-dragon-pour-tous-personnages': { label: "Têtes de dragons (tous)", type: "Item" },

View File

@ -14,13 +14,14 @@ export class Targets {
return {
id: target?.id,
name: target?.document.name,
img: target?.document.texture.src ?? target?.actor.img ?? 'icons/svg/mystery-man.svg',
target
};
img: target?.document.texture.src ?? target?.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' };
}
static isTargetEntite(target) {
return target?.actor.type == 'entite' && target?.actor.system.definition.typeentite == ENTITE_NONINCARNE;
}

View File

@ -125,39 +125,39 @@ system:
carac:
taille:
type: number
value: '23'
value: 23
label: Taille
xp: 0
derivee: false
constitution:
type: number
value: '18'
value: 18
label: Constitution
xp: '0'
xp: 0
derivee: false
force:
type: number
value: '18'
value: 18
label: Force
xp: '0'
xp: 0
derivee: false
perception:
type: number
value: '11'
value: 11
label: Perception
xp: '0'
xp: 0
derivee: false
volonte:
type: number
value: '7'
value: 7
label: Volonté
xp: '0'
xp: 0
derivee: false
reve:
type: number
value: '8'
value: 8
label: Rêve
xp: '0'
xp: 0
derivee: false
sante:
vie:
@ -190,12 +190,12 @@ system:
derivee: true
encombrement:
type: number
value: '20'
value: 20
label: Encombrement
derivee: false
protection:
type: number
value: '4'
value: 4
label: Protection
derivee: false
compteurs:

View File

@ -155,37 +155,37 @@ system:
carac:
taille:
type: number
value: '3'
value: 3
label: Taille
xp: 0
derivee: false
constitution:
type: number
value: '12'
value: 12
label: Constitution
xp: 0
derivee: false
force:
type: number
value: '7'
value: 7
label: Force
xp: 0
derivee: false
perception:
type: number
value: '15'
value: 15
label: Perception
xp: 0
derivee: false
volonte:
type: number
value: '10'
value: 10
label: Volonté
xp: 0
derivee: false
reve:
type: number
value: '7'
value: 7
label: Rêve
xp: 0
derivee: false
@ -210,7 +210,7 @@ system:
attributs:
plusdom:
type: number
value: '-2'
value: -2
label: +dom
derivee: true
vitesse:
@ -220,12 +220,12 @@ system:
derivee: true
encombrement:
type: number
value: '0'
value: 0
label: Encombrement
derivee: false
protection:
type: number
value: '-3'
value: -3
label: Protection
derivee: false
compteurs:
@ -257,47 +257,8 @@ system:
d&eacute;vore.</p>
<h1>Venin</h1>
<table style="width: 65.039%; height: 65px;" border="1">
<tbody>
<tr style="height: 16px;">
<td style="width: 30.8567%; height: 16px;">Malignit&eacute;</td>
<td style="width: 68.3263%; height: 16px;">6</td>
</tr>
<tr style="height: 16px;">
<td style="width: 30.8567%; height: 16px;">P&eacute;riodicit&eacute;</td>
<td style="width: 68.3263%; height: 16px;">1 round</td>
</tr>
<tr style="height: 16px;">
<td style="width: 30.8567%; height: 16px;">Dommages</td>
<td style="width: 68.3263%; height: 16px;">-1d6 points d'endurance</td>
</tr>
<tr style="height: 17px;">
<td style="width: 30.8567%; height: 17px;">Antidotes</td>
<td style="width: 68.3263%; height: 17px;">-3 \ Liqueur de Bagdol +12, Lait
de lune +6</td>
</tr>
</tbody>
</table>
<p>@UUID[Compendium.foundryvtt-reve-de-dragon.maladies-et-poisons.Item.v7yZidE9mObKO566]{Venin
d'Araflate}</p> <p></p>
race: ''
notesmj: ''
ownership:

View File

@ -155,37 +155,37 @@ system:
carac:
taille:
type: number
value: '19'
value: 19
label: Taille
xp: 0
derivee: false
constitution:
type: number
value: '18'
value: 18
label: Constitution
xp: 0
derivee: false
force:
type: number
value: '18'
value: 18
label: Force
xp: 0
derivee: false
perception:
type: number
value: '12'
value: 12
label: Perception
xp: 0
derivee: false
volonte:
type: number
value: '4'
value: 4
label: Volonté
xp: 0
derivee: false
reve:
type: number
value: '6'
value: 6
label: Rêve
xp: 0
derivee: false
@ -220,12 +220,12 @@ system:
derivee: true
encombrement:
type: number
value: '0'
value: 0
label: Encombrement
derivee: false
protection:
type: number
value: '2'
value: 2
label: Protection
derivee: false
compteurs:

View File

@ -126,37 +126,37 @@ system:
carac:
taille:
type: number
value: '33'
value: 33
label: Taille
xp: 0
derivee: false
constitution:
type: number
value: '26'
value: 26
label: Constitution
xp: 0
derivee: false
force:
type: number
value: '26'
value: 26
label: Force
xp: 0
derivee: false
perception:
type: number
value: '13'
value: 13
label: Perception
xp: 0
derivee: false
volonte:
type: number
value: '3'
value: 3
label: Volonté
xp: 0
derivee: false
reve:
type: number
value: '10'
value: 10
label: Rêve
xp: 0
derivee: false
@ -191,12 +191,12 @@ system:
derivee: true
encombrement:
type: number
value: '0'
value: 0
label: Encombrement
derivee: false
protection:
type: number
value: '2'
value: 2
label: Protection
derivee: false
compteurs:

View File

@ -154,37 +154,37 @@ system:
carac:
taille:
type: number
value: '20'
value: 20
label: Taille
xp: 0
derivee: false
constitution:
type: number
value: '15'
value: 15
label: Constitution
xp: 0
derivee: false
force:
type: number
value: '16'
value: 16
label: Force
xp: 0
derivee: false
perception:
type: number
value: '13'
value: 13
label: Perception
xp: 0
derivee: false
volonte:
type: number
value: '9'
value: 9
label: Volonté
xp: 0
derivee: false
reve:
type: number
value: '10'
value: 10
label: Rêve
xp: 0
derivee: false
@ -219,12 +219,12 @@ system:
derivee: true
encombrement:
type: number
value: '0'
value: 0
label: Encombrement
derivee: false
protection:
type: number
value: '1'
value: 1
label: Protection
derivee: false
compteurs:

View File

@ -183,37 +183,37 @@ system:
carac:
taille:
type: number
value: '7'
value: 7
label: Taille
xp: 0
derivee: false
constitution:
type: number
value: '12'
value: 12
label: Constitution
xp: 0
derivee: false
force:
type: number
value: '11'
value: 11
label: Force
xp: 0
derivee: false
perception:
type: number
value: '14'
value: 14
label: Perception
xp: 0
derivee: false
volonte:
type: number
value: '8'
value: 8
label: Volonté
xp: 0
derivee: false
reve:
type: number
value: '15'
value: 15
label: Rêve
xp: 0
derivee: false
@ -248,12 +248,12 @@ system:
derivee: true
encombrement:
type: number
value: '0'
value: 0
label: Encombrement
derivee: false
protection:
type: number
value: '0'
value: 0
label: Protection
derivee: false
compteurs:

View File

@ -153,37 +153,37 @@ system:
carac:
taille:
type: number
value: '21'
value: 21
label: Taille
xp: 0
derivee: false
constitution:
type: number
value: '17'
value: 17
label: Constitution
xp: 0
derivee: false
force:
type: number
value: '16'
value: 16
label: Force
xp: 0
derivee: false
perception:
type: number
value: '12'
value: 12
label: Perception
xp: 0
derivee: false
volonte:
type: number
value: '12'
value: 12
label: Volonté
xp: 0
derivee: false
reve:
type: number
value: '12'
value: 12
label: Rêve
xp: 0
derivee: false
@ -218,12 +218,12 @@ system:
derivee: true
encombrement:
type: number
value: '18'
value: 18
label: Encombrement
derivee: false
protection:
type: number
value: '1'
value: 1
label: Protection
derivee: false
compteurs:

View File

@ -126,37 +126,37 @@ system:
carac:
taille:
type: number
value: '25'
value: 25
label: Taille
xp: 0
derivee: false
constitution:
type: number
value: '18'
value: 18
label: Constitution
xp: 0
derivee: false
force:
type: number
value: '20'
value: 20
label: Force
xp: 0
derivee: false
perception:
type: number
value: '12'
value: 12
label: Perception
xp: 0
derivee: false
volonte:
type: number
value: '8'
value: 8
label: Volonté
xp: 0
derivee: false
reve:
type: number
value: '10'
value: 10
label: Rêve
xp: 0
derivee: false
@ -191,12 +191,12 @@ system:
derivee: true
encombrement:
type: number
value: '22'
value: 22
label: Encombrement
derivee: false
protection:
type: number
value: '2'
value: 2
label: Protection
derivee: false
compteurs:

View File

@ -153,37 +153,37 @@ system:
carac:
taille:
type: number
value: '6'
value: 6
label: Taille
xp: 0
derivee: false
constitution:
type: number
value: '10'
value: 10
label: Constitution
xp: 0
derivee: false
force:
type: number
value: '10'
value: 10
label: Force
xp: 0
derivee: false
perception:
type: number
value: '11'
value: 11
label: Perception
xp: 0
derivee: false
volonte:
type: number
value: '8'
value: 8
label: Volonté
xp: 0
derivee: false
reve:
type: number
value: '8'
value: 8
label: Rêve
xp: 0
derivee: false
@ -218,12 +218,12 @@ system:
derivee: true
encombrement:
type: number
value: '0'
value: 0
label: Encombrement
derivee: false
protection:
type: number
value: '-1'
value: -1
label: Protection
derivee: false
compteurs:

View File

@ -126,37 +126,37 @@ system:
carac:
taille:
type: number
value: '7'
value: 7
label: Taille
xp: 0
derivee: false
constitution:
type: number
value: '9'
value: 9
label: Constitution
xp: 0
derivee: false
force:
type: number
value: '11'
value: 11
label: Force
xp: 0
derivee: false
perception:
type: number
value: '10'
value: 10
label: Perception
xp: 0
derivee: false
volonte:
type: number
value: '3'
value: 3
label: Volonté
xp: 0
derivee: false
reve:
type: number
value: '2'
value: 2
label: Rêve
xp: 0
derivee: false
@ -184,19 +184,19 @@ system:
value: '+0'
label: +dom
derivee: true
encombrement:
type: number
value: 0
label: Encombrement
derivee: false
vitesse:
type: string
value: 12/28
label: Vitesse
derivee: true
encombrement:
type: number
value: '0'
label: Encombrement
derivee: false
protection:
type: number
value: '4'
value: 4
label: Protection
derivee: false
compteurs:
@ -207,67 +207,19 @@ system:
value: 0
label: Sur-encombrement
description: >-
<h1>Description</h1>
<p>Description Le chrasme (prononcer krasme) est une sorte de cafard
g&eacute;ant &agrave; carapace de crabe aux jointures poilues. Il mesure en
moyenne 1 m de haut sur 1m50 de long, et peut peser jusqu&rsquo;&agrave; 50
kg. Dot&eacute; de mandibules ac&eacute;r&eacute;es et puissantes, il est
redout&eacute; pour son venin mortel.</p>
<h1>M&oelig;urs</h1>
<p>Le chrasme vit dans les lieux sombres, cavernes et souterrains, o&ugrave;
il se nourrit de tout. Paranos le Moindre affirme qu&rsquo;&agrave;
d&eacute;faut d&rsquo;une meilleure ch&egrave;re, il peut m&ecirc;me se
sustenter de cailloux. Il d&eacute;teste la lumi&egrave;re comme son cousin
de petite taille, mais a toutefois un comportement diff&eacute;rent: au lieu
de fuir, il entre dans une rage f&eacute;roce et se rue sur le porteur de
lumi&egrave;re pour le r&eacute;duire en charpie. Savez-vous, cher Paranos,
que vous nous faites un peu peur ?</p>
<h1>Venin</h1>
<table style="width: 399px; height: 65px;" border="1">
<tbody>
<tr style="height: 16px;">
<td style="width: 121px; height: 16px;">Malignit&eacute;</td>
<td style="width: 274px; height: 16px;">3</td>
</tr>
<tr style="height: 16px;">
<td style="width: 121px; height: 16px;">P&eacute;riodicit&eacute;</td>
<td style="width: 274px; height: 16px;">1 miute</td>
</tr>
<tr style="height: 16px;">
<td style="width: 121px; height: 16px;">Dommages</td>
<td style="width: 274px; height: 16px;">-1 point de vie</td>
</tr>
<tr style="height: 17px;">
<td style="width: 121px; height: 17px;">Antidotes</td>
<td style="width: 274px; height: 17px;">-2 \ Liqueur de Bagdol +16, Teinture
d'Erozonne +10</td>
</tr>
</tbody>
</table>
<h1>Description</h1><p>Description Le chrasme (prononcer krasme) est une
sorte de cafard géant à carapace de crabe aux jointures poilues. Il mesure
en moyenne 1 m de haut sur 1m50 de long, et peut peser jusquà 50 kg. Doté
de mandibules acérées et puissantes, il est redouté pour son venin
mortel.</p><h1>Mœurs</h1><p>Le chrasme vit dans les lieux sombres, cavernes
et souterrains, où il se nourrit de tout. Paranos le Moindre affirme quà
défaut dune meilleure chère, il peut même se sustenter de cailloux. Il
déteste la lumière comme son cousin de petite taille, mais a toutefois un
comportement différent: au lieu de fuir, il entre dans une rage féroce et se
rue sur le porteur de lumière pour le réduire en charpie. Savez-vous, cher
Paranos, que vous nous faites un peu peur
?</p><h1>Venin</h1><p>@UUID[Compendium.foundryvtt-reve-de-dragon.maladies-et-poisons.Item.cFMUtU6LZG0mKeDl]{Venin
de chrasme}</p><p></p>
race: ''
notesmj: ''
ownership:
@ -350,7 +302,13 @@ prototypeToken:
texture: null
_stats:
systemId: foundryvtt-reve-de-dragon
systemVersion: 12.0.22
systemVersion: 12.0.32
coreVersion: '12.331'
createdTime: null
modifiedTime: 1736537299708
lastModifiedBy: Hp9ImM4o9YRTSdfu
compendiumSource: null
duplicateSource: null
flags: {}
_key: '!actors!yL1XStIKWxGnhKvR'

View File

@ -155,37 +155,37 @@ system:
carac:
taille:
type: number
value: '20'
value: 20
label: Taille
xp: 0
derivee: false
constitution:
type: number
value: '18'
value: 18
label: Constitution
xp: 0
derivee: false
force:
type: number
value: '16'
value: 16
label: Force
xp: 0
derivee: false
perception:
type: number
value: '13'
value: 13
label: Perception
xp: 0
derivee: false
volonte:
type: number
value: '7'
value: 7
label: Volonté
xp: 0
derivee: false
reve:
type: number
value: '9'
value: 9
label: Rêve
xp: 0
derivee: false
@ -220,12 +220,12 @@ system:
derivee: true
encombrement:
type: number
value: '0'
value: 0
label: Encombrement
derivee: false
protection:
type: number
value: '3'
value: 3
label: Protection
derivee: false
compteurs:

View File

@ -154,37 +154,37 @@ system:
carac:
taille:
type: number
value: '12'
value: 12
label: Taille
xp: 0
derivee: false
constitution:
type: number
value: '12'
value: 12
label: Constitution
xp: 0
derivee: false
force:
type: number
value: '15'
value: 15
label: Force
xp: 0
derivee: false
perception:
type: number
value: '10'
value: 10
label: Perception
xp: 0
derivee: false
volonte:
type: number
value: '6'
value: 6
label: Volonté
xp: 0
derivee: false
reve:
type: number
value: '4'
value: 4
label: Rêve
xp: 0
derivee: false
@ -219,12 +219,12 @@ system:
derivee: true
encombrement:
type: number
value: '0'
value: 0
label: Encombrement
derivee: false
protection:
type: number
value: '3'
value: 3
label: Protection
derivee: false
compteurs:

View File

@ -97,37 +97,37 @@ system:
carac:
taille:
type: number
value: '4'
value: 4
label: Taille
xp: 0
derivee: false
constitution:
type: number
value: '10'
value: 10
label: Constitution
xp: 0
derivee: false
force:
type: number
value: '8'
value: 8
label: Force
xp: 0
derivee: false
perception:
type: number
value: '12'
value: 12
label: Perception
xp: 0
derivee: false
volonte:
type: number
value: '7'
value: 7
label: Volonté
xp: 0
derivee: false
reve:
type: number
value: '7'
value: 7
label: Rêve
xp: 0
derivee: false
@ -152,7 +152,7 @@ system:
attributs:
plusdom:
type: number
value: '-1'
value: -1
label: +dom
derivee: true
vitesse:
@ -162,12 +162,12 @@ system:
derivee: true
encombrement:
type: number
value: '0'
value: 0
label: Encombrement
derivee: false
protection:
type: number
value: '-3'
value: -3
label: Protection
derivee: false
compteurs:
@ -203,10 +203,10 @@ system:
<p>En combat, quand un drakkule r&eacute;ussit une particuli&egrave;re et
cause au moins une blessure l&eacute;g&egrave;re, il reste accroch&eacute;
&agrave; sa victime qui perd alors automatiquement 1d6 points
&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 1d6 points de vie par round. Le
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

View File

@ -97,37 +97,37 @@ system:
carac:
taille:
type: number
value: '2'
value: 2
label: Taille
xp: 0
derivee: false
constitution:
type: number
value: '8'
value: 8
label: Constitution
xp: 0
derivee: false
force:
type: number
value: '3'
value: 3
label: Force
xp: 0
derivee: false
perception:
type: number
value: '13'
value: 13
label: Perception
xp: 0
derivee: false
volonte:
type: number
value: '10'
value: 10
label: Volonté
xp: 0
derivee: false
reve:
type: number
value: '11'
value: 11
label: Rêve
xp: 0
derivee: false
@ -152,7 +152,7 @@ system:
attributs:
plusdom:
type: number
value: '-4'
value: -4
label: +dom
derivee: true
vitesse:
@ -162,12 +162,12 @@ system:
derivee: true
encombrement:
type: number
value: '0'
value: 0
label: Encombrement
derivee: false
protection:
type: number
value: '-6'
value: -6
label: Protection
derivee: false
compteurs:

View File

@ -184,37 +184,37 @@ system:
carac:
taille:
type: number
value: '7'
value: 7
label: Taille
xp: 0
derivee: false
constitution:
type: number
value: '12'
value: 12
label: Constitution
xp: 0
derivee: false
force:
type: number
value: '11'
value: 11
label: Force
xp: 0
derivee: false
perception:
type: number
value: '13'
value: 13
label: Perception
xp: 0
derivee: false
volonte:
type: number
value: '10'
value: 10
label: Volonté
xp: 0
derivee: false
reve:
type: number
value: '10'
value: 10
label: Rêve
xp: 0
derivee: false
@ -249,12 +249,12 @@ system:
derivee: true
encombrement:
type: number
value: '0'
value: 0
label: Encombrement
derivee: false
protection:
type: number
value: '0'
value: 0
label: Protection
derivee: false
compteurs:

View File

@ -206,37 +206,37 @@ system:
carac:
taille:
type: number
value: '6'
value: 6
label: Taille
xp: 0
derivee: false
constitution:
type: number
value: '10'
value: 10
label: Constitution
xp: 0
derivee: false
force:
type: number
value: '9'
value: 9
label: Force
xp: 0
derivee: false
perception:
type: number
value: '14'
value: 14
label: Perception
xp: 0
derivee: false
volonte:
type: number
value: '11'
value: 11
label: Volonté
xp: 0
derivee: false
reve:
type: number
value: '12'
value: 12
label: Rêve
xp: 0
derivee: false
@ -261,7 +261,7 @@ system:
attributs:
plusdom:
type: number
value: '-1'
value: -1
label: +dom
derivee: true
vitesse:
@ -271,12 +271,12 @@ system:
derivee: true
encombrement:
type: number
value: '0'
value: 0
label: Encombrement
derivee: false
protection:
type: number
value: '0'
value: 0
label: Protection
derivee: false
compteurs:

View File

@ -241,39 +241,39 @@ system:
carac:
taille:
type: number
value: '16'
value: 16
label: Taille
xp: 0
derivee: false
constitution:
type: number
value: '15'
value: 15
label: Constitution
xp: '0'
xp: 0
derivee: false
force:
type: number
value: '13'
value: 13
label: Force
xp: '0'
xp: 0
derivee: false
perception:
type: number
value: '10'
value: 10
label: Perception
xp: '0'
xp: 0
derivee: false
volonte:
type: number
value: '8'
value: 8
label: Volonté
xp: '0'
xp: 0
derivee: false
reve:
type: number
value: '10'
value: 10
label: Rêve
xp: '0'
xp: 0
derivee: false
sante:
vie:
@ -306,12 +306,12 @@ system:
derivee: true
encombrement:
type: number
value: '0'
value: 0
label: Encombrement
derivee: false
protection:
type: number
value: '4'
value: 4
label: Protection
derivee: false
compteurs:

View File

@ -155,37 +155,37 @@ system:
carac:
taille:
type: number
value: '11'
value: 11
label: Taille
xp: 0
derivee: false
constitution:
type: number
value: '14'
value: 14
label: Constitution
xp: 0
derivee: false
force:
type: number
value: '13'
value: 13
label: Force
xp: 0
derivee: false
perception:
type: number
value: '10'
value: 10
label: Perception
xp: 0
derivee: false
volonte:
type: number
value: '7'
value: 7
label: Volonté
xp: 0
derivee: false
reve:
type: number
value: '10'
value: 10
label: Rêve
xp: 0
derivee: false
@ -220,12 +220,12 @@ system:
derivee: true
encombrement:
type: number
value: '0'
value: 0
label: Encombrement
derivee: false
protection:
type: number
value: '0'
value: 0
label: Protection
derivee: false
compteurs:
@ -257,56 +257,8 @@ system:
<h1 style="box-sizing: border-box; user-select: text; color: #191813;
font-family: GoudyAcc, sans-serif;">Venin</h1>
<table style="box-sizing: border-box; user-select: text; width: 395px;
color: #191813; font-family: GoudyAcc, sans-serif; height: 65px;"
border="1">
<tbody style="box-sizing: border-box; user-select: text;">
<tr style="box-sizing: border-box; user-select: text; height: 16px;">
<td style="box-sizing: border-box; user-select: text; width: 122px; height:
16px;">Malignit&eacute;</td>
<td style="box-sizing: border-box; user-select: text; width: 272px; height:
16px;">6</td>
</tr>
<tr style="box-sizing: border-box; user-select: text; height: 16px;">
<td style="box-sizing: border-box; user-select: text; width: 122px; height:
16px;">P&eacute;riodicit&eacute;</td>
<td style="box-sizing: border-box; user-select: text; width: 272px; height:
16px;">1 round</td>
</tr>
<tr style="box-sizing: border-box; user-select: text; height: 16px;">
<td style="box-sizing: border-box; user-select: text; width: 122px; height:
16px;">Dommages</td>
<td style="box-sizing: border-box; user-select: text; width: 272px; height:
16px;">1 ligne de fatigue</td>
</tr>
<tr style="box-sizing: border-box; user-select: text; height: 17px;">
<td style="box-sizing: border-box; user-select: text; width: 122px; height:
17px;">Antidotes</td>
<td style="box-sizing: border-box; user-select: text; width: 272px; height:
17px;">-4 \ Floume-dhu +16</td>
</tr>
</tbody>
</table>
<p>@UUID[Compendium.foundryvtt-reve-de-dragon.maladies-et-poisons.Item.IF19EUvrY1HL87lr]{Venin
paralysant de goule}</p>
<p>La paralysie intervient quand toutes les lignes de fatigue sont pleines
et dure 6 heures.</p>

View File

@ -137,7 +137,7 @@ system:
elles-m&ecirc;mes, leur grincement involontaire est une torture. Toute
personne se trouvant dans un rayon de 10m doit manquer un jet
d&rsquo;OU&Iuml;E &agrave; +5. Si le jet r&eacute;ussit, perte de 1 point
d&rsquo;endurance, puis jet de VOLONT&Eacute; &agrave; -5. Si le jet de
d&rsquo;endurance, puis jet de @roll[volonté/-5]. Si le jet de
VOLONT&Eacute; &eacute;choue, le personnage est sonn&eacute;
jusqu&rsquo;&agrave; la fin du round suivant.</p>

View File

@ -183,37 +183,37 @@ system:
carac:
taille:
type: number
value: '23'
value: 23
label: Taille
xp: 0
derivee: false
constitution:
type: number
value: '20'
value: 20
label: Constitution
xp: 0
derivee: false
force:
type: number
value: '20'
value: 20
label: Force
xp: 0
derivee: false
perception:
type: number
value: '11'
value: 11
label: Perception
xp: 0
derivee: false
volonte:
type: number
value: '8'
value: 8
label: Volonté
xp: 0
derivee: false
reve:
type: number
value: '10'
value: 10
label: Rêve
xp: 0
derivee: false
@ -248,12 +248,12 @@ system:
derivee: true
encombrement:
type: number
value: '0'
value: 0
label: Encombrement
derivee: false
protection:
type: number
value: '3'
value: 3
label: Protection
derivee: false
compteurs:

View File

@ -68,37 +68,37 @@ system:
carac:
taille:
type: number
value: '9'
value: 9
label: Taille
xp: 0
derivee: false
constitution:
type: number
value: '11'
value: 11
label: Constitution
xp: 0
derivee: false
force:
type: number
value: '12'
value: 12
label: Force
xp: 0
derivee: false
perception:
type: number
value: '11'
value: 11
label: Perception
xp: 0
derivee: false
volonte:
type: number
value: '12'
value: 12
label: Volonté
xp: 0
derivee: false
reve:
type: number
value: '11'
value: 11
label: Rêve
xp: 0
derivee: false
@ -133,12 +133,12 @@ system:
derivee: true
encombrement:
type: number
value: '0'
value: 0
label: Encombrement
derivee: false
protection:
type: number
value: '4'
value: 4
label: Protection
derivee: false
compteurs:
@ -174,8 +174,8 @@ 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, r-8, et en cas
d&rsquo;&eacute;chec, r&eacute;ussir un jet de VOLONT&Eacute; &agrave; -3
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

View File

@ -154,37 +154,37 @@ system:
carac:
taille:
type: number
value: '11'
value: 11
label: Taille
xp: 0
derivee: false
constitution:
type: number
value: '13'
value: 13
label: Constitution
xp: 0
derivee: false
force:
type: number
value: '13'
value: 13
label: Force
xp: 0
derivee: false
perception:
type: number
value: '11'
value: 11
label: Perception
xp: 0
derivee: false
volonte:
type: number
value: '6'
value: 6
label: Volonté
xp: 0
derivee: false
reve:
type: number
value: '10'
value: 10
label: Rêve
xp: 0
derivee: false
@ -219,12 +219,12 @@ system:
derivee: true
encombrement:
type: number
value: '0'
value: 0
label: Encombrement
derivee: false
protection:
type: number
value: '2'
value: 2
label: Protection
derivee: false
compteurs:

View File

@ -126,37 +126,37 @@ system:
carac:
taille:
type: number
value: '3'
value: 3
label: Taille
xp: 0
derivee: false
constitution:
type: number
value: '4'
value: 4
label: Constitution
xp: 0
derivee: false
force:
type: number
value: '7'
value: 7
label: Force
xp: 0
derivee: false
perception:
type: number
value: '11'
value: 11
label: Perception
xp: 0
derivee: false
volonte:
type: number
value: '2'
value: 2
label: Volonté
xp: 0
derivee: false
reve:
type: number
value: '2'
value: 2
label: Rêve
xp: 0
derivee: false
@ -181,7 +181,7 @@ system:
attributs:
plusdom:
type: number
value: '0'
value: 0
label: +dom
derivee: true
vitesse:
@ -191,12 +191,12 @@ system:
derivee: true
encombrement:
type: number
value: '0'
value: 0
label: Encombrement
derivee: false
protection:
type: number
value: '-6'
value: -6
label: Protection
derivee: false
compteurs:

View File

@ -183,37 +183,37 @@ system:
carac:
taille:
type: number
value: '8'
value: 8
label: Taille
xp: 0
derivee: false
constitution:
type: number
value: '11'
value: 11
label: Constitution
xp: 0
derivee: false
force:
type: number
value: '12'
value: 12
label: Force
xp: 0
derivee: false
perception:
type: number
value: '13'
value: 13
label: Perception
xp: 0
derivee: false
volonte:
type: number
value: '10'
value: 10
label: Volonté
xp: 0
derivee: false
reve:
type: number
value: '10'
value: 10
label: Rêve
xp: 0
derivee: false
@ -248,12 +248,12 @@ system:
derivee: true
encombrement:
type: number
value: '0'
value: 0
label: Encombrement
derivee: false
protection:
type: number
value: '0'
value: 0
label: Protection
derivee: false
compteurs:

View File

@ -212,37 +212,37 @@ system:
carac:
taille:
type: number
value: '5'
value: 5
label: Taille
xp: 0
derivee: false
constitution:
type: number
value: '11'
value: 11
label: Constitution
xp: 0
derivee: false
force:
type: number
value: '9'
value: 9
label: Force
xp: 0
derivee: false
perception:
type: number
value: '10'
value: 10
label: Perception
xp: 0
derivee: false
volonte:
type: number
value: '10'
value: 10
label: Volonté
xp: 0
derivee: false
reve:
type: number
value: '10'
value: 10
label: Rêve
xp: 0
derivee: false
@ -267,7 +267,7 @@ system:
attributs:
plusdom:
type: number
value: '-1'
value: -1
label: +dom
derivee: true
vitesse:
@ -277,12 +277,12 @@ system:
derivee: true
encombrement:
type: number
value: '0'
value: 0
label: Encombrement
derivee: false
protection:
type: number
value: '0'
value: 0
label: Protection
derivee: false
compteurs:

View File

@ -154,37 +154,37 @@ system:
carac:
taille:
type: number
value: '23'
value: 23
label: Taille
xp: 0
derivee: false
constitution:
type: number
value: '17'
value: 17
label: Constitution
xp: 0
derivee: false
force:
type: number
value: '17'
value: 17
label: Force
xp: 0
derivee: false
perception:
type: number
value: '12'
value: 12
label: Perception
xp: 0
derivee: false
volonte:
type: number
value: '12'
value: 12
label: Volonté
xp: 0
derivee: false
reve:
type: number
value: '12'
value: 12
label: Rêve
xp: 0
derivee: false
@ -219,12 +219,12 @@ system:
derivee: true
encombrement:
type: number
value: '18'
value: 18
label: Encombrement
derivee: false
protection:
type: number
value: '1'
value: 1
label: Protection
derivee: false
compteurs:

View File

@ -39,37 +39,37 @@ system:
carac:
taille:
type: number
value: '2'
value: 2
label: Taille
xp: 0
derivee: false
constitution:
type: number
value: '4'
value: 4
label: Constitution
xp: 0
derivee: false
force:
type: number
value: '1'
value: 1
label: Force
xp: 0
derivee: false
perception:
type: number
value: '15'
value: 15
label: Perception
xp: 0
derivee: false
volonte:
type: number
value: '17'
value: 17
label: Volonté
xp: 0
derivee: false
reve:
type: number
value: '18'
value: 18
label: Rêve
xp: 0
derivee: false
@ -104,12 +104,12 @@ system:
derivee: true
encombrement:
type: number
value: '0'
value: 0
label: Encombrement
derivee: false
protection:
type: number
value: '-8'
value: -8
label: Protection
derivee: false
compteurs:

View File

@ -212,39 +212,39 @@ system:
carac:
taille:
type: number
value: '13'
value: 13
label: Taille
xp: 0
derivee: false
constitution:
type: number
value: '14'
value: 14
label: Constitution
xp: '0'
xp: 0
derivee: false
force:
type: number
value: '15'
value: 15
label: Force
xp: '0'
xp: 0
derivee: false
perception:
type: number
value: '17'
value: 17
label: Perception
xp: '0'
xp: 0
derivee: false
volonte:
type: number
value: '15'
value: 15
label: Volonté
xp: '0'
xp: 0
derivee: false
reve:
type: number
value: '12'
value: 12
label: Rêve
xp: '0'
xp: 0
derivee: false
sante:
vie:
@ -277,12 +277,12 @@ system:
derivee: true
encombrement:
type: number
value: '0'
value: 0
label: Encombrement
derivee: false
protection:
type: number
value: '2'
value: 2
label: Protection
derivee: false
compteurs:

View File

@ -183,37 +183,37 @@ system:
carac:
taille:
type: number
value: '14'
value: 14
label: Taille
xp: 0
derivee: false
constitution:
type: number
value: '14'
value: 14
label: Constitution
xp: 0
derivee: false
force:
type: number
value: '18'
value: 18
label: Force
xp: 0
derivee: false
perception:
type: number
value: '10'
value: 10
label: Perception
xp: 0
derivee: false
volonte:
type: number
value: '10'
value: 10
label: Volonté
xp: 0
derivee: false
reve:
type: number
value: '10'
value: 10
label: Rêve
xp: 0
derivee: false
@ -248,12 +248,12 @@ system:
derivee: true
encombrement:
type: number
value: '0'
value: 0
label: Encombrement
derivee: false
protection:
type: number
value: '5'
value: 5
label: Protection
derivee: false
compteurs:

View File

@ -150,37 +150,37 @@ system:
carac:
taille:
type: number
value: '10'
value: 10
label: Taille
xp: 0
derivee: false
constitution:
type: number
value: '10'
value: 10
label: Constitution
xp: 0
derivee: false
force:
type: number
value: '10'
value: 10
label: Force
xp: 0
derivee: false
perception:
type: number
value: '10'
value: 10
label: Perception
xp: 0
derivee: false
volonte:
type: number
value: '10'
value: 10
label: Volonté
xp: 0
derivee: false
reve:
type: number
value: '10'
value: 10
label: Rêve
xp: 0
derivee: false
@ -205,22 +205,22 @@ system:
attributs:
plusdom:
type: number
value: '0'
value: 0
label: +dom
derivee: true
vitesse:
type: string
value: '0'
value: 0
label: Vitesse
derivee: true
encombrement:
type: number
value: '0'
value: 0
label: Encombrement
derivee: false
protection:
type: number
value: '0'
value: 0
label: Protection
derivee: false
compteurs:

View File

@ -183,37 +183,37 @@ system:
carac:
taille:
type: number
value: '7'
value: 7
label: Taille
xp: 0
derivee: false
constitution:
type: number
value: '13'
value: 13
label: Constitution
xp: 0
derivee: false
force:
type: number
value: '11'
value: 11
label: Force
xp: 0
derivee: false
perception:
type: number
value: '17'
value: 17
label: Perception
xp: 0
derivee: false
volonte:
type: number
value: '14'
value: 14
label: Volonté
xp: 0
derivee: false
reve:
type: number
value: '13'
value: 13
label: Rêve
xp: 0
derivee: false
@ -248,12 +248,12 @@ system:
derivee: true
encombrement:
type: number
value: '0'
value: 0
label: Encombrement
derivee: false
protection:
type: number
value: '0'
value: 0
label: Protection
derivee: false
compteurs:

View File

@ -126,37 +126,37 @@ system:
carac:
taille:
type: number
value: '2'
value: 2
label: Taille
xp: 0
derivee: false
constitution:
type: number
value: '5'
value: 5
label: Constitution
xp: 0
derivee: false
force:
type: number
value: '3'
value: 3
label: Force
xp: 0
derivee: false
perception:
type: number
value: '10'
value: 10
label: Perception
xp: 0
derivee: false
volonte:
type: number
value: '2'
value: 2
label: Volonté
xp: 0
derivee: false
reve:
type: number
value: '2'
value: 2
label: Rêve
xp: 0
derivee: false
@ -181,7 +181,7 @@ system:
attributs:
plusdom:
type: number
value: '-4'
value: -4
label: +dom
derivee: true
vitesse:
@ -191,12 +191,12 @@ system:
derivee: true
encombrement:
type: number
value: '0'
value: 0
label: Encombrement
derivee: false
protection:
type: number
value: '-8'
value: -8
label: Protection
derivee: false
compteurs:
@ -219,50 +219,8 @@ system:
attaque d&egrave;s qu&rsquo;il est surpris ou se croit en danger.</p>
<h1>Venin</h1>
<p>Sensation aigu&euml; de d&eacute;s&eacute;quilibre. Jouer VOLONT&Eacute;
&agrave; -3. En cas d&rsquo;&eacute;chec, on chute sans parvenir &agrave; se
relever.</p>
<table style="width: 59.506%;" border="1">
<tbody>
<tr>
<td style="width: 21.6667%;">Malignit&eacute;</td>
<td style="width: 77.5%;">3</td>
</tr>
<tr>
<td style="width: 21.6667%;">P&eacute;riodicit&eacute;</td>
<td style="width: 77.5%;">1 minute</td>
</tr>
<tr>
<td style="width: 21.6667%;">Dommages</td>
<td style="width: 77.5%;">-1 point de vie</td>
</tr>
<tr>
<td style="width: 21.6667%;">Antidotes</td>
<td style="width: 77.5%;">-3 \ Liqueur de Bagdol +16, Topazo&iuml;ne +8</td>
</tr>
</tbody>
</table>
<p>@UUID[Compendium.foundryvtt-reve-de-dragon.maladies-et-poisons.Item.iwlN0bNJ5XNNfjgj]{Venin
de scologriffe}</p> <p></p>
race: ''
notesmj: ''
ownership:

View File

@ -96,37 +96,37 @@ system:
carac:
taille:
type: number
value: '10'
value: 10
label: Taille
xp: 0
derivee: false
constitution:
type: number
value: '12'
value: 12
label: Constitution
xp: 0
derivee: false
force:
type: number
value: '12'
value: 12
label: Force
xp: 0
derivee: false
perception:
type: number
value: '11'
value: 11
label: Perception
xp: 0
derivee: false
volonte:
type: number
value: '10'
value: 10
label: Volonté
xp: 0
derivee: false
reve:
type: number
value: '12'
value: 12
label: Rêve
xp: 0
derivee: false
@ -161,12 +161,12 @@ system:
derivee: true
encombrement:
type: number
value: '0'
value: 0
label: Encombrement
derivee: false
protection:
type: number
value: '2'
value: 2
label: Protection
derivee: false
compteurs:
@ -201,7 +201,7 @@ system:
<p>La sir&egrave;ne a un chant attractif pouvant porter jusqu&rsquo;&agrave;
50 m. Toute personne, homme ou femme, percevant ce chant, m&ecirc;me faible
et lointain, doit tenter un jet de VOLONT&Eacute; &agrave; -3. Sur toute
et lointain, doit tenter un jet de @roll[Volonté/-3]. Sur toute
r&eacute;ussite, le personnage est libre de sa d&eacute;cision"; sur tout
&eacute;chec, il est irr&eacute;sistiblement attir&eacute; vers la source du
chant. Quand plusieurs sir&egrave;nes chantent simultan&eacute;ment, le jet
@ -220,7 +220,7 @@ 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, r-8). Comme pour les chants, ce JR est
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>

View File

@ -181,37 +181,37 @@ system:
carac:
taille:
type: number
value: '23'
value: 23
label: Taille
xp: 0
derivee: false
constitution:
type: number
value: '20'
value: 20
label: Constitution
xp: 0
derivee: false
force:
type: number
value: '21'
value: 21
label: Force
xp: 0
derivee: false
perception:
type: number
value: '15'
value: 15
label: Perception
xp: 0
derivee: false
volonte:
type: number
value: '15'
value: 15
label: Volonté
xp: 0
derivee: false
reve:
type: number
value: '12'
value: 12
label: Rêve
xp: 0
derivee: false
@ -246,12 +246,12 @@ system:
derivee: true
encombrement:
type: number
value: '0'
value: 0
label: Encombrement
derivee: false
protection:
type: number
value: '4'
value: 4
label: Protection
derivee: false
compteurs:

View File

@ -126,39 +126,39 @@ system:
carac:
taille:
type: number
value: '28'
value: 28
label: Taille
xp: 0
derivee: false
constitution:
type: number
value: '23'
value: 23
label: Constitution
xp: '0'
xp: 0
derivee: false
force:
type: number
value: '23'
value: 23
label: Force
xp: '0'
xp: 0
derivee: false
perception:
type: number
value: '14'
value: 14
label: Perception
xp: '0'
xp: 0
derivee: false
volonte:
type: number
value: '12'
value: 12
label: Volonté
xp: '0'
xp: 0
derivee: false
reve:
type: number
value: '12'
value: 12
label: Rêve
xp: '0'
xp: 0
derivee: false
sante:
vie:
@ -191,12 +191,12 @@ system:
derivee: true
encombrement:
type: number
value: '0'
value: 0
label: Encombrement
derivee: false
protection:
type: number
value: '8'
value: 8
label: Protection
derivee: false
compteurs:
@ -228,8 +228,8 @@ 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, r-8, et en cas
d&rsquo;&eacute;chec, r&eacute;ussir un jet de VOLONT&Eacute; &agrave; -3
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;

View File

@ -126,37 +126,37 @@ system:
carac:
taille:
type: number
value: '1'
value: 1
label: Taille
xp: 0
derivee: false
constitution:
type: number
value: '4'
value: 4
label: Constitution
xp: 0
derivee: false
force:
type: number
value: '2'
value: 2
label: Force
xp: 0
derivee: false
perception:
type: number
value: '10'
value: 10
label: Perception
xp: 0
derivee: false
volonte:
type: number
value: '2'
value: 2
label: Volonté
xp: 0
derivee: false
reve:
type: number
value: '3'
value: 3
label: Rêve
xp: 0
derivee: false
@ -181,7 +181,7 @@ system:
attributs:
plusdom:
type: number
value: '-5'
value: -5
label: +dom
derivee: true
vitesse:
@ -191,12 +191,12 @@ system:
derivee: true
encombrement:
type: number
value: '0'
value: 0
label: Encombrement
derivee: false
protection:
type: number
value: '-8'
value: -8
label: Protection
derivee: false
compteurs:
@ -215,47 +215,8 @@ system:
est mortel.</p>
<h1>Venin</h1>
<table style="width: 61.5572%;" border="1">
<tbody>
<tr>
<td style="width: 21.1221%;">Malignit&eacute;</td>
<td style="width: 78.0528%;">2</td>
</tr>
<tr>
<td style="width: 21.1221%;">P&eacute;riodicit&eacute;</td>
<td style="width: 78.0528%;">6 rounds</td>
</tr>
<tr>
<td style="width: 21.1221%;">Dommages</td>
<td style="width: 78.0528%;">-1 point de vie</td>
</tr>
<tr>
<td style="width: 21.1221%;">Antidotes</td>
<td style="width: 78.0528%;">-3 \ Liqueur de Bagdol +14, Topazo&iuml;ne
+10</td>
</tr>
</tbody>
</table>
<p>@UUID[Compendium.foundryvtt-reve-de-dragon.maladies-et-poisons.Item.lUeNPc0ECKqHglbG]{Venin
de vipère jaune}</p> <p></p>
race: ''
notesmj: ''
ownership:

View File

@ -67,37 +67,37 @@ system:
carac:
taille:
type: number
value: '12'
value: 12
label: Taille
xp: 0
derivee: false
constitution:
type: number
value: '14'
value: 14
label: Constitution
xp: 0
derivee: false
force:
type: number
value: '16'
value: 16
label: Force
xp: 0
derivee: false
perception:
type: number
value: '9'
value: 9
label: Perception
xp: 0
derivee: false
volonte:
type: number
value: '3'
value: 3
label: Volonté
xp: 0
derivee: false
reve:
type: number
value: '3'
value: 3
label: Rêve
xp: 0
derivee: false
@ -132,12 +132,12 @@ system:
derivee: true
encombrement:
type: number
value: '0'
value: 0
label: Encombrement
derivee: false
protection:
type: number
value: '4'
value: 4
label: Protection
derivee: false
compteurs:

View File

@ -97,37 +97,37 @@ system:
carac:
taille:
type: number
value: '12'
value: 12
label: Taille
xp: 0
derivee: false
constitution:
type: number
value: '14'
value: 14
label: Constitution
xp: 0
derivee: false
force:
type: number
value: '14'
value: 14
label: Force
xp: 0
derivee: false
perception:
type: number
value: '14'
value: 14
label: Perception
xp: 0
derivee: false
volonte:
type: number
value: '5'
value: 5
label: Volonté
xp: 0
derivee: false
reve:
type: number
value: '4'
value: 4
label: Rêve
xp: 0
derivee: false
@ -162,12 +162,12 @@ system:
derivee: true
encombrement:
type: number
value: '0'
value: 0
label: Encombrement
derivee: false
protection:
type: number
value: '2'
value: 2
label: Protection
derivee: false
compteurs:

View File

@ -126,37 +126,37 @@ system:
carac:
taille:
type: number
value: '12'
value: 12
label: Taille
xp: 0
derivee: false
constitution:
type: number
value: '12'
value: 12
label: Constitution
xp: 0
derivee: false
force:
type: number
value: '12'
value: 12
label: Force
xp: 0
derivee: false
perception:
type: number
value: '9'
value: 9
label: Perception
xp: 0
derivee: false
volonte:
type: number
value: '4'
value: 4
label: Volonté
xp: 0
derivee: false
reve:
type: number
value: '7'
value: 7
label: Rêve
xp: 0
derivee: false
@ -191,12 +191,12 @@ system:
derivee: true
encombrement:
type: number
value: '12'
value: 12
label: Encombrement
derivee: false
protection:
type: number
value: '0'
value: 0
label: Protection
derivee: false
compteurs:

View File

@ -325,7 +325,6 @@ items:
- P0EyouOgbIkRzesW
- Fo6MwXo6WIVLDhSF
- oG7ESdX8cF9GLupp
- sVKzSOhgTEPpsMlN
- gWLOG3hPMLUzFfDv
- w9LhxHcw4qfTwjxI
- 2n7Y2i47F1bAg1Xx
@ -351,8 +350,13 @@ items:
flags: {}
_stats:
systemId: foundryvtt-reve-de-dragon
systemVersion: 12.0.22
systemVersion: 12.0.32
coreVersion: '12.331'
createdTime: null
modifiedTime: 1735482057018
lastModifiedBy: Hp9ImM4o9YRTSdfu
compendiumSource: null
duplicateSource: null
_key: '!actors.items!1Nng9d8r6lrPHCaJ.yu3BRD1YETFSk6S1'
- name: Soins
type: conteneur
@ -711,7 +715,6 @@ items:
milieu: ''
environnement: []
contenu:
- JZtrqkh6440oUCDH
- TGdXWucOTPkXX2qx
- m7I6Sj4DIBpCknD7
- 6CnfYRcuStwkA3Cr
@ -744,8 +747,13 @@ items:
flags: {}
_stats:
systemId: foundryvtt-reve-de-dragon
systemVersion: 12.0.22
systemVersion: 12.0.32
coreVersion: '12.331'
createdTime: null
modifiedTime: 1735482057018
lastModifiedBy: Hp9ImM4o9YRTSdfu
compendiumSource: null
duplicateSource: null
_key: '!actors.items!1Nng9d8r6lrPHCaJ.1g6qcGkqspVJ2Rwm'
- name: Armes de tir
type: conteneur
@ -1428,7 +1436,7 @@ items:
- milieu: Villes
rarete: Frequente
frequence: 18
protection: '4'
protection: 4
deterioration: 0
malus: -2
ownership:
@ -1466,7 +1474,7 @@ items:
- milieu: Villes
rarete: Frequente
frequence: 18
protection: '3'
protection: 3
deterioration: 0
malus: -1
ownership:
@ -1575,7 +1583,7 @@ items:
- milieu: Villes
rarete: Commune
frequence: 54
protection: '1'
protection: 1
deterioration: 0
malus: 0
ownership:
@ -1643,7 +1651,7 @@ items:
- milieu: Villes
rarete: Rare
frequence: 6
protection: '5'
protection: 5
deterioration: null
malus: -4
ownership:
@ -1775,7 +1783,7 @@ items:
- milieu: Villes
rarete: Rare
frequence: 6
protection: '6'
protection: 6
deterioration: 0
malus: -6
ownership:
@ -2060,10 +2068,10 @@ items:
frequence: 18
resistance: 1
categorie_parade: ''
dommages: '3'
dommages: 3
mortalite: mortel
penetration: 2
force: '0'
force: 0
competence: ''
lancer: ''
tir: Arbalète
@ -2114,10 +2122,10 @@ items:
frequence: 18
resistance: 1
categorie_parade: ''
dommages: '2'
dommages: 2
mortalite: mortel
penetration: 2
force: '0'
force: 0
competence: ''
lancer: ''
tir: Arc
@ -2226,10 +2234,10 @@ items:
frequence: 18
resistance: 8
categorie_parade: ''
dommages: '1'
dommages: 1
mortalite: mortel
penetration: 0
force: '9'
force: 9
competence: Masse à 2 mains
lancer: ''
tir: ''
@ -2422,7 +2430,7 @@ items:
frequence: 18
resistance: 13
categorie_parade: boucliers
dommages: '0'
dommages: 0
mortalite: mortel
penetration: 0
force: '8'
@ -2471,10 +2479,10 @@ items:
frequence: 18
resistance: 20
categorie_parade: boucliers
dommages: '0'
dommages: 0
mortalite: mortel
penetration: 0
force: '13'
force: 13
competence: Bouclier
lancer: ''
tir: ''
@ -2520,10 +2528,10 @@ items:
frequence: 18
resistance: 15
categorie_parade: boucliers
dommages: '0'
dommages: 0
mortalite: mortel
penetration: 0
force: '11'
force: 11
competence: Bouclier
lancer: ''
tir: ''
@ -3342,10 +3350,10 @@ items:
frequence: 18
resistance: 6
categorie_parade: dagues
dommages: '1'
dommages: 1
mortalite: mortel
penetration: 0
force: '0'
force: 0
competence: Dague
lancer: Dague de jet
tir: ''
@ -3582,10 +3590,10 @@ items:
frequence: 18
resistance: 1
categorie_parade: ''
dommages: '1'
dommages: 1
mortalite: mortel
penetration: 0
force: '0'
force: 0
competence: Dague
lancer: Dague de jet
tir: ''
@ -3666,10 +3674,10 @@ items:
frequence: 6
resistance: 13
categorie_parade: epees-lourdes
dommages: '5'
dommages: 5
mortalite: mortel
penetration: 0
force: '13'
force: 13
competence: Épée à 2 mains
lancer: ''
tir: ''
@ -4048,10 +4056,10 @@ items:
frequence: 6
resistance: 12
categorie_parade: epees-lourdes
dommages: '3'
dommages: 3
mortalite: mortel
penetration: 0
force: '11'
force: 11
competence: Épée à 1 main
lancer: ''
tir: ''
@ -4095,10 +4103,10 @@ items:
frequence: 18
resistance: 10
categorie_parade: epees-longues
dommages: '2'
dommages: 2
mortalite: mortel
penetration: 0
force: '10'
force: 10
competence: Épée à 1 main
lancer: ''
tir: ''
@ -4148,10 +4156,10 @@ items:
frequence: 18
resistance: 12
categorie_parade: epees-longues
dommages: '3'
dommages: 3
mortalite: mortel
penetration: 0
force: '11'
force: 11
competence: Épée à 1 main
lancer: ''
tir: ''
@ -4200,7 +4208,7 @@ items:
frequence: 18
resistance: 12
categorie_parade: epees-courtes
dommages: '2'
dommages: 2
mortalite: mortel
penetration: 0
force: '8'
@ -4349,10 +4357,10 @@ items:
frequence: 18
resistance: 9
categorie_parade: epees-longues
dommages: '2'
dommages: 2
mortalite: mortel
penetration: 0
force: '10'
force: 10
competence: Épée à 1 main
lancer: ''
tir: ''
@ -4589,10 +4597,10 @@ items:
frequence: 6
resistance: 10
categorie_parade: ''
dommages: '3'
dommages: 3
mortalite: mortel
penetration: 0
force: '12'
force: 12
competence: Fléau
lancer: ''
tir: ''
@ -4638,10 +4646,10 @@ items:
frequence: 6
resistance: 10
categorie_parade: ''
dommages: '4'
dommages: 4
mortalite: mortel
penetration: 0
force: '13'
force: 13
competence: Fléau
lancer: ''
tir: ''
@ -4755,10 +4763,10 @@ items:
frequence: 6
resistance: 1
categorie_parade: ''
dommages: '1'
dommages: 1
mortalite: mortel
penetration: -1
force: '0'
force: 0
competence: ''
lancer: Fouet
tir: ''
@ -4804,10 +4812,10 @@ items:
frequence: 18
resistance: 1
categorie_parade: ''
dommages: '1'
dommages: 1
mortalite: mortel
penetration: 0
force: '0'
force: 0
competence: ''
lancer: ''
tir: Fronde
@ -4952,10 +4960,10 @@ items:
frequence: 18
resistance: 8
categorie_parade: ''
dommages: '1'
dommages: 1
mortalite: mortel
penetration: 0
force: '7'
force: 7
competence: Masse à 1 main
lancer: ''
tir: ''
@ -5032,10 +5040,10 @@ items:
frequence: 6
resistance: 8
categorie_parade: haches
dommages: '4'
dommages: 4
mortalite: mortel
penetration: 0
force: '13'
force: 13
competence: Hache à 2 mains
lancer: ''
tir: ''
@ -5192,7 +5200,7 @@ items:
frequence: 18
resistance: 6
categorie_parade: haches
dommages: '2'
dommages: 2
mortalite: mortel
penetration: 0
force: '8'
@ -5419,10 +5427,10 @@ items:
frequence: 6
resistance: 5
categorie_parade: lances
dommages: '1'
dommages: 1
mortalite: mortel
penetration: 0
force: '7'
force: 7
competence: Lance
lancer: Javelot
tir: ''
@ -5473,10 +5481,10 @@ items:
frequence: 6
resistance: 1
categorie_parade: lances
dommages: '1'
dommages: 1
mortalite: mortel
penetration: 0
force: '0'
force: 0
competence: Lance
lancer: Javelot
tir: ''
@ -5639,7 +5647,7 @@ items:
frequence: 6
resistance: 5
categorie_parade: lances
dommages: '2'
dommages: 2
mortalite: mortel
penetration: 0
force: '8'
@ -5799,10 +5807,10 @@ items:
frequence: 18
resistance: 8
categorie_parade: hast
dommages: '4'
dommages: 4
mortalite: mortel
penetration: 0
force: '12'
force: 12
competence: Armes d'hast
lancer: ''
tir: ''
@ -6127,10 +6135,10 @@ items:
frequence: 18
resistance: 7
categorie_parade: ''
dommages: '1'
dommages: 1
mortalite: mortel
penetration: 0
force: '7'
force: 7
competence: Masse à 1 main
lancer: ''
tir: ''
@ -6208,10 +6216,10 @@ items:
frequence: 18
resistance: 8
categorie_parade: ''
dommages: '2'
dommages: 2
mortalite: mortel
penetration: 0
force: '7'
force: 7
competence: Masse à 1 main
lancer: ''
tir: ''
@ -6306,10 +6314,10 @@ items:
frequence: 18
resistance: 8
categorie_parade: ''
dommages: '2'
dommages: 2
mortalite: mortel
penetration: 0
force: '9'
force: 9
competence: Masse à 1 main
lancer: ''
tir: ''
@ -7058,10 +7066,10 @@ items:
frequence: 18
resistance: 1
categorie_parade: dagues
dommages: '1'
dommages: 1
mortalite: mortel
penetration: 0
force: '0'
force: 0
competence: Dague
lancer: Dague de jet
tir: ''
@ -8625,7 +8633,8 @@ items:
_key: '!actors.items!1Nng9d8r6lrPHCaJ.1j4LT4BFjJ8hrthx'
- name: Tanemiel d'argent
type: herbe
img: systems/foundryvtt-reve-de-dragon/icons/botanique/Tanemiel%20argent%C3%A9.webp
img: >-
systems/foundryvtt-reve-de-dragon/icons/botanique/Tanemiel%20argent%C3%A9.webp
effects: []
_id: 8NVUaX1Nw59If89G
system:
@ -8665,7 +8674,8 @@ items:
_key: '!actors.items!1Nng9d8r6lrPHCaJ.8NVUaX1Nw59If89G'
- name: Tanemiel doré
type: herbe
img: systems/foundryvtt-reve-de-dragon/icons/botanique/Tanemiel%20dor%C3%A9.webp
img: >-
systems/foundryvtt-reve-de-dragon/icons/botanique/Tanemiel%20dor%C3%A9.webp
effects: []
_id: IqcOrY1eQgmT32R1
system:
@ -9135,6 +9145,7 @@ prototypeToken:
subject:
scale: 1
texture: null
flags: {}
effects: []
ownership:
default: 0
@ -9145,5 +9156,11 @@ _stats:
systemId: foundryvtt-reve-de-dragon
systemVersion: 12.0.22
coreVersion: '12.331'
createdTime: null
modifiedTime: null
lastModifiedBy: null
compendiumSource: null
duplicateSource: null
flags: {}
_key: '!actors!1Nng9d8r6lrPHCaJ'

View File

@ -1890,7 +1890,7 @@ items:
coreVersion: '12.331'
_key: '!actors.items!ryUZTa17LzNv25UY.VyAJK54OPjiRt8oH'
- _id: bt2cR4aE6lIOeg4F
name: Voie d'Hypnos
name: Hypnos
type: competence
sort: 6300000
flags: {}
@ -1918,7 +1918,7 @@ items:
coreVersion: '12.331'
_key: '!actors.items!ryUZTa17LzNv25UY.bt2cR4aE6lIOeg4F'
- _id: nnR2UHelUaF8dxYn
name: Voie d'Oniros
name: Oniros
type: competence
sort: 6400000
flags: {}
@ -1946,7 +1946,7 @@ items:
coreVersion: '12.331'
_key: '!actors.items!ryUZTa17LzNv25UY.nnR2UHelUaF8dxYn'
- _id: u1Peok1EYkBcVsmN
name: Voie de Narcos
name: Narcos
type: competence
sort: 6500000
flags: {}
@ -1972,7 +1972,7 @@ items:
coreVersion: '12.331'
_key: '!actors.items!ryUZTa17LzNv25UY.u1Peok1EYkBcVsmN'
- _id: dPlTQzvU3CEg5qKc
name: Voie de Thanatos
name: Thanatos
type: competence
sort: 6600000
flags: {}
@ -2075,10 +2075,10 @@ items:
environnement: []
resistance: 8
categorie_parade: ''
dommages: '1'
dommages: 1
mortalite: mortel
penetration: 0
force: '7'
force: 7
competence: Dague
lancer: Dague de jet
tir: ''
@ -2822,87 +2822,87 @@ system:
carac:
taille:
type: number
value: '11'
value: 11
label: Taille
xp: '0'
xp: 0
derivee: false
apparence:
type: number
value: '10'
value: 10
label: Apparence
xp: '0'
xp: 0
derivee: false
constitution:
type: number
value: '13'
value: 13
label: Constitution
xp: '0'
xp: 0
derivee: false
force:
type: number
value: 13
label: Force
xp: '0'
xp: 0
derivee: false
agilite:
type: number
value: '12'
value: 12
label: Agilité
xp: '0'
xp: 0
derivee: false
dexterite:
type: number
value: '14'
value: 14
label: Dexterité
xp: '0'
xp: 0
derivee: false
vue:
type: number
value: '12'
value: 12
label: Vue
xp: '0'
xp: 0
derivee: false
ouie:
type: number
value: '10'
value: 10
label: Ouïe
xp: '0'
xp: 0
derivee: false
odoratgout:
type: number
value: '10'
value: 10
label: Odorat-Goût
xp: '0'
xp: 0
derivee: false
volonte:
type: number
value: '10'
value: 10
label: Volonté
xp: '0'
xp: 0
derivee: false
intellect:
type: number
value: '11'
value: 11
label: Intellect
xp: '0'
xp: 0
derivee: false
empathie:
type: number
value: '10'
value: 10
label: Empathie
xp: '0'
xp: 0
derivee: false
reve:
type: number
value: '9'
value: 9
label: Rêve
xp: '0'
xp: 0
derivee: false
chance:
type: number
value: '11'
value: 11
label: Chance
xp: '0'
xp: 0
derivee: false
melee:
type: number
@ -2989,7 +2989,7 @@ system:
derivee: true
reve:
reve:
max: '9'
max: 9
value: 9
label: Points de Rêve actuels
thanatosused: false
@ -3027,7 +3027,7 @@ system:
isInput: true
chance:
value: 11
max: '11'
max: 11
label: Chance
isInput: true
destinee:
@ -3079,7 +3079,7 @@ system:
heure: vaisseau
sexe: ''
age: '30'
beaute: '10'
beaute: 10
main: droitier
experiencelog: []
subacteurs:

View File

@ -1890,7 +1890,7 @@ items:
coreVersion: '12.331'
_key: '!actors.items!ohmz9Jn4jxD88Kll.VyAJK54OPjiRt8oH'
- _id: bt2cR4aE6lIOeg4F
name: Voie d'Hypnos
name: Hypnos
type: competence
sort: 6300000
flags: {}
@ -1918,7 +1918,7 @@ items:
coreVersion: '12.331'
_key: '!actors.items!ohmz9Jn4jxD88Kll.bt2cR4aE6lIOeg4F'
- _id: nnR2UHelUaF8dxYn
name: Voie d'Oniros
name: Oniros
type: competence
sort: 6400000
flags: {}
@ -1946,7 +1946,7 @@ items:
coreVersion: '12.331'
_key: '!actors.items!ohmz9Jn4jxD88Kll.nnR2UHelUaF8dxYn'
- _id: u1Peok1EYkBcVsmN
name: Voie de Narcos
name: Narcos
type: competence
sort: 6500000
flags: {}
@ -1972,7 +1972,7 @@ items:
coreVersion: '12.331'
_key: '!actors.items!ohmz9Jn4jxD88Kll.u1Peok1EYkBcVsmN'
- _id: dPlTQzvU3CEg5qKc
name: Voie de Thanatos
name: Thanatos
type: competence
sort: 6600000
flags: {}
@ -2136,7 +2136,7 @@ items:
environnement: []
resistance: 5
categorie_parade: ''
dommages: '2'
dommages: 2
mortalite: mortel
penetration: 0
force: '8'
@ -2179,10 +2179,10 @@ items:
environnement: []
resistance: 15
categorie_parade: ''
dommages: '0'
dommages: 0
mortalite: mortel
penetration: 0
force: '11'
force: 11
competence: Bouclier
lancer: ''
tir: ''
@ -2426,87 +2426,87 @@ system:
carac:
taille:
type: number
value: '11'
value: 11
label: Taille
xp: '0'
xp: 0
derivee: false
apparence:
type: number
value: '9'
value: 9
label: Apparence
xp: '0'
xp: 0
derivee: false
constitution:
type: number
value: '12'
value: 12
label: Constitution
xp: '0'
xp: 0
derivee: false
force:
type: number
value: 14
label: Force
xp: '0'
xp: 0
derivee: false
agilite:
type: number
value: '12'
value: 12
label: Agilité
xp: '0'
xp: 0
derivee: false
dexterite:
type: number
value: '12'
value: 12
label: Dexterité
xp: '0'
xp: 0
derivee: false
vue:
type: number
value: '13'
value: 13
label: Vue
xp: '0'
xp: 0
derivee: false
ouie:
type: number
value: '11'
value: 11
label: Ouïe
xp: '0'
xp: 0
derivee: false
odoratgout:
type: number
value: '8'
value: 8
label: Odorat-Goût
xp: '0'
xp: 0
derivee: false
volonte:
type: number
value: '10'
value: 10
label: Volonté
xp: '0'
xp: 0
derivee: false
intellect:
type: number
value: '9'
value: 9
label: Intellect
xp: '0'
xp: 0
derivee: false
empathie:
type: number
value: '8'
value: 8
label: Empathie
xp: '0'
xp: 0
derivee: false
reve:
type: number
value: '11'
value: 11
label: Rêve
xp: '0'
xp: 0
derivee: false
chance:
type: number
value: '13'
value: 13
label: Chance
xp: '0'
xp: 0
derivee: false
melee:
type: number
@ -2593,7 +2593,7 @@ system:
derivee: true
reve:
reve:
max: '11'
max: 11
value: 11
label: Points de Rêve actuels
thanatosused: false
@ -2631,7 +2631,7 @@ system:
isInput: true
chance:
value: 13
max: '13'
max: 13
label: Chance
isInput: true
destinee:
@ -2683,7 +2683,7 @@ system:
heure: vaisseau
sexe: ''
age: '30'
beaute: '10'
beaute: 10
main: droitier
experiencelog: []
subacteurs:

View File

@ -1890,7 +1890,7 @@ items:
coreVersion: '12.331'
_key: '!actors.items!JARnWt2MQWDyRwQt.VyAJK54OPjiRt8oH'
- _id: bt2cR4aE6lIOeg4F
name: Voie d'Hypnos
name: Hypnos
type: competence
sort: 6300000
flags: {}
@ -1918,7 +1918,7 @@ items:
coreVersion: '12.331'
_key: '!actors.items!JARnWt2MQWDyRwQt.bt2cR4aE6lIOeg4F'
- _id: nnR2UHelUaF8dxYn
name: Voie d'Oniros
name: Oniros
type: competence
sort: 6400000
flags: {}
@ -1946,7 +1946,7 @@ items:
coreVersion: '12.331'
_key: '!actors.items!JARnWt2MQWDyRwQt.nnR2UHelUaF8dxYn'
- _id: u1Peok1EYkBcVsmN
name: Voie de Narcos
name: Narcos
type: competence
sort: 6500000
flags: {}
@ -1972,7 +1972,7 @@ items:
coreVersion: '12.331'
_key: '!actors.items!JARnWt2MQWDyRwQt.u1Peok1EYkBcVsmN'
- _id: dPlTQzvU3CEg5qKc
name: Voie de Thanatos
name: Thanatos
type: competence
sort: 6600000
flags: {}
@ -2101,10 +2101,10 @@ items:
environnement: []
resistance: 15
categorie_parade: ''
dommages: '0'
dommages: 0
mortalite: mortel
penetration: 0
force: '11'
force: 11
competence: Bouclier
lancer: ''
tir: ''
@ -2573,87 +2573,87 @@ system:
carac:
taille:
type: number
value: '11'
value: 11
label: Taille
xp: '0'
xp: 0
derivee: false
apparence:
type: number
value: '9'
value: 9
label: Apparence
xp: '0'
xp: 0
derivee: false
constitution:
type: number
value: '12'
value: 12
label: Constitution
xp: '0'
xp: 0
derivee: false
force:
type: number
value: 14
label: Force
xp: '0'
xp: 0
derivee: false
agilite:
type: number
value: '12'
value: 12
label: Agilité
xp: '0'
xp: 0
derivee: false
dexterite:
type: number
value: '12'
value: 12
label: Dexterité
xp: '0'
xp: 0
derivee: false
vue:
type: number
value: '13'
value: 13
label: Vue
xp: '0'
xp: 0
derivee: false
ouie:
type: number
value: '11'
value: 11
label: Ouïe
xp: '0'
xp: 0
derivee: false
odoratgout:
type: number
value: '8'
value: 8
label: Odorat-Goût
xp: '0'
xp: 0
derivee: false
volonte:
type: number
value: '10'
value: 10
label: Volonté
xp: '0'
xp: 0
derivee: false
intellect:
type: number
value: '9'
value: 9
label: Intellect
xp: '0'
xp: 0
derivee: false
empathie:
type: number
value: '8'
value: 8
label: Empathie
xp: '0'
xp: 0
derivee: false
reve:
type: number
value: '11'
value: 11
label: Rêve
xp: '0'
xp: 0
derivee: false
chance:
type: number
value: '13'
value: 13
label: Chance
xp: '0'
xp: 0
derivee: false
melee:
type: number
@ -2740,7 +2740,7 @@ system:
derivee: true
reve:
reve:
max: '11'
max: 11
value: 11
label: Points de Rêve actuels
thanatosused: false
@ -2778,7 +2778,7 @@ system:
isInput: true
chance:
value: 13
max: '13'
max: 13
label: Chance
isInput: true
destinee:
@ -2830,7 +2830,7 @@ system:
heure: vaisseau
sexe: ''
age: '30'
beaute: '10'
beaute: 10
main: droitier
experiencelog: []
subacteurs:

View File

@ -1828,7 +1828,7 @@ items:
coreVersion: '12.331'
_key: '!actors.items!SJb0c8FDcYdd41rB.VyAJK54OPjiRt8oH'
- _id: bt2cR4aE6lIOeg4F
name: Voie d'Hypnos
name: Hypnos
type: competence
sort: 6300000
img: systems/foundryvtt-reve-de-dragon/icons/competence_hypnos.webp
@ -1855,7 +1855,7 @@ items:
coreVersion: '12.331'
_key: '!actors.items!SJb0c8FDcYdd41rB.bt2cR4aE6lIOeg4F'
- _id: nnR2UHelUaF8dxYn
name: Voie d'Oniros
name: Oniros
type: competence
sort: 6400000
img: systems/foundryvtt-reve-de-dragon/icons/competence_oniros.webp
@ -1882,7 +1882,7 @@ items:
coreVersion: '12.331'
_key: '!actors.items!SJb0c8FDcYdd41rB.nnR2UHelUaF8dxYn'
- _id: u1Peok1EYkBcVsmN
name: Voie de Narcos
name: Narcos
type: competence
sort: 6500000
img: systems/foundryvtt-reve-de-dragon/icons/competence_narcos.webp
@ -1907,7 +1907,7 @@ items:
coreVersion: '12.331'
_key: '!actors.items!SJb0c8FDcYdd41rB.u1Peok1EYkBcVsmN'
- _id: dPlTQzvU3CEg5qKc
name: Voie de Thanatos
name: Thanatos
type: competence
sort: 6600000
img: systems/foundryvtt-reve-de-dragon/icons/competence_thanatos.webp
@ -2008,10 +2008,10 @@ items:
environnement: []
resistance: 8
categorie_parade: ''
dommages: '1'
dommages: 1
mortalite: mortel
penetration: 0
force: '7'
force: 7
competence: Dague
lancer: Dague de jet
tir: ''
@ -2568,87 +2568,87 @@ system:
carac:
taille:
type: number
value: '8'
value: 8
label: Taille
xp: '0'
xp: 0
derivee: false
apparence:
type: number
value: '8'
value: 8
label: Apparence
xp: '0'
xp: 0
derivee: false
constitution:
type: number
value: '11'
value: 11
label: Constitution
xp: '0'
xp: 0
derivee: false
force:
type: number
value: 11
label: Force
xp: '0'
xp: 0
derivee: false
agilite:
type: number
value: '13'
value: 13
label: Agilité
xp: '0'
xp: 0
derivee: false
dexterite:
type: number
value: '14'
value: 14
label: Dexterité
xp: '0'
xp: 0
derivee: false
vue:
type: number
value: '14'
value: 14
label: Vue
xp: '0'
xp: 0
derivee: false
ouie:
type: number
value: '13'
value: 13
label: Ouïe
xp: '0'
xp: 0
derivee: false
odoratgout:
type: number
value: '13'
value: 13
label: Odorat-Goût
xp: '0'
xp: 0
derivee: false
volonte:
type: number
value: '10'
value: 10
label: Volonté
xp: '0'
xp: 0
derivee: false
intellect:
type: number
value: '9'
value: 9
label: Intellect
xp: '0'
xp: 0
derivee: false
empathie:
type: number
value: '12'
value: 12
label: Empathie
xp: '0'
xp: 0
derivee: false
reve:
type: number
value: '9'
value: 9
label: Rêve
xp: '0'
xp: 0
derivee: false
chance:
type: number
value: '11'
value: 11
label: Chance
xp: '0'
xp: 0
derivee: false
melee:
type: number
@ -2735,7 +2735,7 @@ system:
derivee: true
reve:
reve:
max: '9'
max: 9
value: 9
label: Points de Rêve actuels
thanatosused: false
@ -2773,7 +2773,7 @@ system:
isInput: true
chance:
value: 11
max: '11'
max: 11
label: Chance
isInput: true
destinee:
@ -2825,7 +2825,7 @@ system:
heure: vaisseau
sexe: ''
age: '30'
beaute: '10'
beaute: 10
main: droitier
experiencelog: []
subacteurs:

View File

@ -1890,7 +1890,7 @@ items:
coreVersion: '12.331'
_key: '!actors.items!JQCwAOK64Yijwtch.VyAJK54OPjiRt8oH'
- _id: bt2cR4aE6lIOeg4F
name: Voie d'Hypnos
name: Hypnos
type: competence
sort: 6300000
flags: {}
@ -1918,7 +1918,7 @@ items:
coreVersion: '12.331'
_key: '!actors.items!JQCwAOK64Yijwtch.bt2cR4aE6lIOeg4F'
- _id: nnR2UHelUaF8dxYn
name: Voie d'Oniros
name: Oniros
type: competence
sort: 6400000
flags: {}
@ -1946,7 +1946,7 @@ items:
coreVersion: '12.331'
_key: '!actors.items!JQCwAOK64Yijwtch.nnR2UHelUaF8dxYn'
- _id: u1Peok1EYkBcVsmN
name: Voie de Narcos
name: Narcos
type: competence
sort: 6500000
flags: {}
@ -1972,7 +1972,7 @@ items:
coreVersion: '12.331'
_key: '!actors.items!JQCwAOK64Yijwtch.u1Peok1EYkBcVsmN'
- _id: dPlTQzvU3CEg5qKc
name: Voie de Thanatos
name: Thanatos
type: competence
sort: 6600000
flags: {}
@ -2101,10 +2101,10 @@ items:
environnement: []
resistance: 15
categorie_parade: ''
dommages: '0'
dommages: 0
mortalite: mortel
penetration: 0
force: '11'
force: 11
competence: Bouclier
lancer: ''
tir: ''
@ -2500,87 +2500,87 @@ system:
carac:
taille:
type: number
value: '11'
value: 11
label: Taille
xp: '0'
xp: 0
derivee: false
apparence:
type: number
value: '11'
value: 11
label: Apparence
xp: '0'
xp: 0
derivee: false
constitution:
type: number
value: '12'
value: 12
label: Constitution
xp: '0'
xp: 0
derivee: false
force:
type: number
value: 15
label: Force
xp: '0'
xp: 0
derivee: false
agilite:
type: number
value: '13'
value: 13
label: Agilité
xp: '0'
xp: 0
derivee: false
dexterite:
type: number
value: '13'
value: 13
label: Dexterité
xp: '0'
xp: 0
derivee: false
vue:
type: number
value: '14'
value: 14
label: Vue
xp: '0'
xp: 0
derivee: false
ouie:
type: number
value: '11'
value: 11
label: Ouïe
xp: '0'
xp: 0
derivee: false
odoratgout:
type: number
value: '8'
value: 8
label: Odorat-Goût
xp: '0'
xp: 0
derivee: false
volonte:
type: number
value: '10'
value: 10
label: Volonté
xp: '0'
xp: 0
derivee: false
intellect:
type: number
value: '9'
value: 9
label: Intellect
xp: '0'
xp: 0
derivee: false
empathie:
type: number
value: '6'
value: 6
label: Empathie
xp: '0'
xp: 0
derivee: false
reve:
type: number
value: '11'
value: 11
label: Rêve
xp: '0'
xp: 0
derivee: false
chance:
type: number
value: '13'
value: 13
label: Chance
xp: '0'
xp: 0
derivee: false
melee:
type: number
@ -2667,7 +2667,7 @@ system:
derivee: true
reve:
reve:
max: '11'
max: 11
value: 11
label: Points de Rêve actuels
thanatosused: false
@ -2705,7 +2705,7 @@ system:
isInput: true
chance:
value: 13
max: '13'
max: 13
label: Chance
isInput: true
destinee:
@ -2757,7 +2757,7 @@ system:
heure: vaisseau
sexe: ''
age: '30'
beaute: '10'
beaute: 10
main: droitier
experiencelog: []
subacteurs:
@ -2853,7 +2853,13 @@ prototypeToken:
texture: null
_stats:
systemId: foundryvtt-reve-de-dragon
systemVersion: 12.0.22
systemVersion: 12.0.32
coreVersion: '12.331'
createdTime: null
modifiedTime: 1735482068962
lastModifiedBy: Hp9ImM4o9YRTSdfu
compendiumSource: null
duplicateSource: null
flags: {}
_key: '!actors!JQCwAOK64Yijwtch'

View File

@ -1890,7 +1890,7 @@ items:
coreVersion: '12.331'
_key: '!actors.items!CRRP8ucJpljX6tq8.VyAJK54OPjiRt8oH'
- _id: bt2cR4aE6lIOeg4F
name: Voie d'Hypnos
name: Hypnos
type: competence
sort: 6300000
flags: {}
@ -1918,7 +1918,7 @@ items:
coreVersion: '12.331'
_key: '!actors.items!CRRP8ucJpljX6tq8.bt2cR4aE6lIOeg4F'
- _id: nnR2UHelUaF8dxYn
name: Voie d'Oniros
name: Oniros
type: competence
sort: 6400000
flags: {}
@ -1946,7 +1946,7 @@ items:
coreVersion: '12.331'
_key: '!actors.items!CRRP8ucJpljX6tq8.nnR2UHelUaF8dxYn'
- _id: u1Peok1EYkBcVsmN
name: Voie de Narcos
name: Narcos
type: competence
sort: 6500000
flags: {}
@ -1972,7 +1972,7 @@ items:
coreVersion: '12.331'
_key: '!actors.items!CRRP8ucJpljX6tq8.u1Peok1EYkBcVsmN'
- _id: dPlTQzvU3CEg5qKc
name: Voie de Thanatos
name: Thanatos
type: competence
sort: 6600000
flags: {}
@ -2675,87 +2675,87 @@ system:
carac:
taille:
type: number
value: '10'
value: 10
label: Taille
xp: '0'
xp: 0
derivee: false
apparence:
type: number
value: '10'
value: 10
label: Apparence
xp: '0'
xp: 0
derivee: false
constitution:
type: number
value: '10'
value: 10
label: Constitution
xp: '0'
xp: 0
derivee: false
force:
type: number
value: 9
label: Force
xp: '0'
xp: 0
derivee: false
agilite:
type: number
value: '10'
value: 10
label: Agilité
xp: '0'
xp: 0
derivee: false
dexterite:
type: number
value: '14'
value: 14
label: Dexterité
xp: '0'
xp: 0
derivee: false
vue:
type: number
value: '13'
value: 13
label: Vue
xp: '0'
xp: 0
derivee: false
ouie:
type: number
value: '10'
value: 10
label: Ouïe
xp: '0'
xp: 0
derivee: false
odoratgout:
type: number
value: '13'
value: 13
label: Odorat-Goût
xp: '0'
xp: 0
derivee: false
volonte:
type: number
value: '12'
value: 12
label: Volonté
xp: '0'
xp: 0
derivee: false
intellect:
type: number
value: '14'
value: 14
label: Intellect
xp: '0'
xp: 0
derivee: false
empathie:
type: number
value: '12'
value: 12
label: Empathie
xp: '0'
xp: 0
derivee: false
reve:
type: number
value: '11'
value: 11
label: Rêve
xp: '0'
xp: 0
derivee: false
chance:
type: number
value: '8'
value: 8
label: Chance
xp: '0'
xp: 0
derivee: false
melee:
type: number
@ -2842,7 +2842,7 @@ system:
derivee: true
reve:
reve:
max: '11'
max: 11
value: 12
label: Points de Rêve actuels
thanatosused: false
@ -2932,7 +2932,7 @@ system:
heure: vaisseau
sexe: ''
age: '30'
beaute: '10'
beaute: 10
main: droitier
experiencelog: []
subacteurs:

View File

@ -1890,7 +1890,7 @@ items:
coreVersion: '12.331'
_key: '!actors.items!51vL4MhEE0asjgF2.VyAJK54OPjiRt8oH'
- _id: bt2cR4aE6lIOeg4F
name: Voie d'Hypnos
name: Hypnos
type: competence
sort: 6300000
flags: {}
@ -1918,7 +1918,7 @@ items:
coreVersion: '12.331'
_key: '!actors.items!51vL4MhEE0asjgF2.bt2cR4aE6lIOeg4F'
- _id: nnR2UHelUaF8dxYn
name: Voie d'Oniros
name: Oniros
type: competence
sort: 6400000
flags: {}
@ -1946,7 +1946,7 @@ items:
coreVersion: '12.331'
_key: '!actors.items!51vL4MhEE0asjgF2.nnR2UHelUaF8dxYn'
- _id: u1Peok1EYkBcVsmN
name: Voie de Narcos
name: Narcos
type: competence
sort: 6500000
flags: {}
@ -1972,7 +1972,7 @@ items:
coreVersion: '12.331'
_key: '!actors.items!51vL4MhEE0asjgF2.u1Peok1EYkBcVsmN'
- _id: dPlTQzvU3CEg5qKc
name: Voie de Thanatos
name: Thanatos
type: competence
sort: 6600000
flags: {}
@ -2125,10 +2125,10 @@ items:
environnement: []
resistance: 8
categorie_parade: ''
dommages: '1'
dommages: 1
mortalite: mortel
penetration: 0
force: '7'
force: 7
competence: Dague
lancer: Dague de jet
tir: ''
@ -2251,7 +2251,7 @@ items:
environnement: []
resistance: 13
categorie_parade: ''
dommages: '0'
dommages: 0
mortalite: mortel
penetration: 0
force: '8'
@ -2451,87 +2451,87 @@ system:
carac:
taille:
type: number
value: '12'
value: 12
label: Taille
xp: '0'
xp: 0
derivee: false
apparence:
type: number
value: '13'
value: 13
label: Apparence
xp: '0'
xp: 0
derivee: false
constitution:
type: number
value: '13'
value: 13
label: Constitution
xp: '0'
xp: 0
derivee: false
force:
type: number
value: 11
label: Force
xp: '0'
xp: 0
derivee: false
agilite:
type: number
value: '11'
value: 11
label: Agilité
xp: '0'
xp: 0
derivee: false
dexterite:
type: number
value: '13'
value: 13
label: Dexterité
xp: '0'
xp: 0
derivee: false
vue:
type: number
value: '13'
value: 13
label: Vue
xp: '0'
xp: 0
derivee: false
ouie:
type: number
value: '10'
value: 10
label: Ouïe
xp: '0'
xp: 0
derivee: false
odoratgout:
type: number
value: '10'
value: 10
label: Odorat-Goût
xp: '0'
xp: 0
derivee: false
volonte:
type: number
value: '12'
value: 12
label: Volonté
xp: '0'
xp: 0
derivee: false
intellect:
type: number
value: '11'
value: 11
label: Intellect
xp: '0'
xp: 0
derivee: false
empathie:
type: number
value: '9'
value: 9
label: Empathie
xp: '0'
xp: 0
derivee: false
reve:
type: number
value: '9'
value: 9
label: Rêve
xp: '0'
xp: 0
derivee: false
chance:
type: number
value: '11'
value: 11
label: Chance
xp: '0'
xp: 0
derivee: false
melee:
type: number
@ -2618,7 +2618,7 @@ system:
derivee: true
reve:
reve:
max: '9'
max: 9
value: 9
label: Points de Rêve actuels
thanatosused: false
@ -2656,7 +2656,7 @@ system:
isInput: true
chance:
value: 9
max: '11'
max: 11
label: Chance
isInput: true
destinee:
@ -2708,7 +2708,7 @@ system:
heure: vaisseau
sexe: ''
age: '30'
beaute: '10'
beaute: 10
main: droitier
experiencelog: []
subacteurs:

View File

@ -1890,7 +1890,7 @@ items:
coreVersion: '12.331'
_key: '!actors.items!NX1nAqKKIcQlyGua.VyAJK54OPjiRt8oH'
- _id: bt2cR4aE6lIOeg4F
name: Voie d'Hypnos
name: Hypnos
type: competence
sort: 6300000
flags: {}
@ -1918,7 +1918,7 @@ items:
coreVersion: '12.331'
_key: '!actors.items!NX1nAqKKIcQlyGua.bt2cR4aE6lIOeg4F'
- _id: nnR2UHelUaF8dxYn
name: Voie d'Oniros
name: Oniros
type: competence
sort: 6400000
flags: {}
@ -1946,7 +1946,7 @@ items:
coreVersion: '12.331'
_key: '!actors.items!NX1nAqKKIcQlyGua.nnR2UHelUaF8dxYn'
- _id: u1Peok1EYkBcVsmN
name: Voie de Narcos
name: Narcos
type: competence
sort: 6500000
flags: {}
@ -1972,7 +1972,7 @@ items:
coreVersion: '12.331'
_key: '!actors.items!NX1nAqKKIcQlyGua.u1Peok1EYkBcVsmN'
- _id: dPlTQzvU3CEg5qKc
name: Voie de Thanatos
name: Thanatos
type: competence
sort: 6600000
flags: {}
@ -2125,10 +2125,10 @@ items:
environnement: []
resistance: 8
categorie_parade: ''
dommages: '1'
dommages: 1
mortalite: mortel
penetration: 0
force: '7'
force: 7
competence: Dague
lancer: Dague de jet
tir: ''
@ -2193,10 +2193,10 @@ items:
environnement: []
resistance: 15
categorie_parade: ''
dommages: '0'
dommages: 0
mortalite: mortel
penetration: 0
force: '11'
force: 11
competence: Bouclier
lancer: ''
tir: ''
@ -2351,87 +2351,87 @@ system:
carac:
taille:
type: number
value: '12'
value: 12
label: Taille
xp: '0'
xp: 0
derivee: false
apparence:
type: number
value: '13'
value: 13
label: Apparence
xp: '0'
xp: 0
derivee: false
constitution:
type: number
value: '13'
value: 13
label: Constitution
xp: '0'
xp: 0
derivee: false
force:
type: number
value: 14
label: Force
xp: '0'
xp: 0
derivee: false
agilite:
type: number
value: '12'
value: 12
label: Agilité
xp: '0'
xp: 0
derivee: false
dexterite:
type: number
value: '12'
value: 12
label: Dexterité
xp: '0'
xp: 0
derivee: false
vue:
type: number
value: '11'
value: 11
label: Vue
xp: '0'
xp: 0
derivee: false
ouie:
type: number
value: '10'
value: 10
label: Ouïe
xp: '0'
xp: 0
derivee: false
odoratgout:
type: number
value: '10'
value: 10
label: Odorat-Goût
xp: '0'
xp: 0
derivee: false
volonte:
type: number
value: '12'
value: 12
label: Volonté
xp: '0'
xp: 0
derivee: false
intellect:
type: number
value: '12'
value: 12
label: Intellect
xp: '0'
xp: 0
derivee: false
empathie:
type: number
value: '11'
value: 11
label: Empathie
xp: '0'
xp: 0
derivee: false
reve:
type: number
value: '9'
value: 9
label: Rêve
xp: '0'
xp: 0
derivee: false
chance:
type: number
value: '8'
value: 8
label: Chance
xp: '0'
xp: 0
derivee: false
melee:
type: number
@ -2518,7 +2518,7 @@ system:
derivee: true
reve:
reve:
max: '9'
max: 9
value: 9
label: Points de Rêve actuels
thanatosused: false
@ -2608,7 +2608,7 @@ system:
heure: vaisseau
sexe: ''
age: '30'
beaute: '10'
beaute: 10
main: droitier
experiencelog: []
subacteurs:

View File

@ -1890,7 +1890,7 @@ items:
coreVersion: '12.331'
_key: '!actors.items!2bRaEDuwZezKAyEq.VyAJK54OPjiRt8oH'
- _id: bt2cR4aE6lIOeg4F
name: Voie d'Hypnos
name: Hypnos
type: competence
sort: 6300000
flags: {}
@ -1918,7 +1918,7 @@ items:
coreVersion: '12.331'
_key: '!actors.items!2bRaEDuwZezKAyEq.bt2cR4aE6lIOeg4F'
- _id: nnR2UHelUaF8dxYn
name: Voie d'Oniros
name: Oniros
type: competence
sort: 6400000
flags: {}
@ -1946,7 +1946,7 @@ items:
coreVersion: '12.331'
_key: '!actors.items!2bRaEDuwZezKAyEq.nnR2UHelUaF8dxYn'
- _id: u1Peok1EYkBcVsmN
name: Voie de Narcos
name: Narcos
type: competence
sort: 6500000
flags: {}
@ -1972,7 +1972,7 @@ items:
coreVersion: '12.331'
_key: '!actors.items!2bRaEDuwZezKAyEq.u1Peok1EYkBcVsmN'
- _id: dPlTQzvU3CEg5qKc
name: Voie de Thanatos
name: Thanatos
type: competence
sort: 6600000
flags: {}
@ -2156,10 +2156,10 @@ items:
environnement: []
resistance: 8
categorie_parade: ''
dommages: '1'
dommages: 1
mortalite: mortel
penetration: 0
force: '7'
force: 7
competence: Dague
lancer: Dague de jet
tir: ''
@ -2224,7 +2224,7 @@ items:
environnement: []
resistance: 13
categorie_parade: ''
dommages: '0'
dommages: 0
mortalite: mortel
penetration: 0
force: '8'
@ -2267,7 +2267,7 @@ items:
environnement: []
resistance: 5
categorie_parade: ''
dommages: '2'
dommages: 2
mortalite: mortel
penetration: 0
force: '8'
@ -2394,87 +2394,87 @@ system:
carac:
taille:
type: number
value: '12'
value: 12
label: Taille
xp: '0'
xp: 0
derivee: false
apparence:
type: number
value: '13'
value: 13
label: Apparence
xp: '0'
xp: 0
derivee: false
constitution:
type: number
value: '13'
value: 13
label: Constitution
xp: '0'
xp: 0
derivee: false
force:
type: number
value: 14
label: Force
xp: '0'
xp: 0
derivee: false
agilite:
type: number
value: '12'
value: 12
label: Agilité
xp: '0'
xp: 0
derivee: false
dexterite:
type: number
value: '11'
value: 11
label: Dexterité
xp: '0'
xp: 0
derivee: false
vue:
type: number
value: '11'
value: 11
label: Vue
xp: '0'
xp: 0
derivee: false
ouie:
type: number
value: '10'
value: 10
label: Ouïe
xp: '0'
xp: 0
derivee: false
odoratgout:
type: number
value: '10'
value: 10
label: Odorat-Goût
xp: '0'
xp: 0
derivee: false
volonte:
type: number
value: '12'
value: 12
label: Volonté
xp: '0'
xp: 0
derivee: false
intellect:
type: number
value: '11'
value: 11
label: Intellect
xp: '0'
xp: 0
derivee: false
empathie:
type: number
value: '9'
value: 9
label: Empathie
xp: '0'
xp: 0
derivee: false
reve:
type: number
value: '9'
value: 9
label: Rêve
xp: '0'
xp: 0
derivee: false
chance:
type: number
value: '11'
value: 11
label: Chance
xp: '0'
xp: 0
derivee: false
melee:
type: number
@ -2561,7 +2561,7 @@ system:
derivee: true
reve:
reve:
max: '9'
max: 9
value: 9
label: Points de Rêve actuels
thanatosused: false
@ -2599,7 +2599,7 @@ system:
isInput: true
chance:
value: 11
max: '11'
max: 11
label: Chance
isInput: true
destinee:
@ -2651,7 +2651,7 @@ system:
heure: vaisseau
sexe: ''
age: '30'
beaute: '10'
beaute: 10
main: droitier
experiencelog: []
subacteurs:

View File

@ -1890,7 +1890,7 @@ items:
coreVersion: '12.331'
_key: '!actors.items!IeKSXignUpfUTU4m.VyAJK54OPjiRt8oH'
- _id: bt2cR4aE6lIOeg4F
name: Voie d'Hypnos
name: Hypnos
type: competence
sort: 6300000
flags: {}
@ -1918,7 +1918,7 @@ items:
coreVersion: '12.331'
_key: '!actors.items!IeKSXignUpfUTU4m.bt2cR4aE6lIOeg4F'
- _id: nnR2UHelUaF8dxYn
name: Voie d'Oniros
name: Oniros
type: competence
sort: 6400000
flags: {}
@ -1946,7 +1946,7 @@ items:
coreVersion: '12.331'
_key: '!actors.items!IeKSXignUpfUTU4m.nnR2UHelUaF8dxYn'
- _id: u1Peok1EYkBcVsmN
name: Voie de Narcos
name: Narcos
type: competence
sort: 6500000
flags: {}
@ -1972,7 +1972,7 @@ items:
coreVersion: '12.331'
_key: '!actors.items!IeKSXignUpfUTU4m.u1Peok1EYkBcVsmN'
- _id: dPlTQzvU3CEg5qKc
name: Voie de Thanatos
name: Thanatos
type: competence
sort: 6600000
flags: {}
@ -2156,10 +2156,10 @@ items:
environnement: []
resistance: 8
categorie_parade: ''
dommages: '1'
dommages: 1
mortalite: mortel
penetration: 0
force: '7'
force: 7
competence: Dague
lancer: Dague de jet
tir: ''
@ -2224,10 +2224,10 @@ items:
environnement: []
resistance: 15
categorie_parade: ''
dommages: '0'
dommages: 0
mortalite: mortel
penetration: 0
force: '11'
force: 11
competence: Bouclier
lancer: ''
tir: ''
@ -2351,87 +2351,87 @@ system:
carac:
taille:
type: number
value: '12'
value: 12
label: Taille
xp: '0'
xp: 0
derivee: false
apparence:
type: number
value: '13'
value: 13
label: Apparence
xp: '0'
xp: 0
derivee: false
constitution:
type: number
value: '13'
value: 13
label: Constitution
xp: '0'
xp: 0
derivee: false
force:
type: number
value: 14
label: Force
xp: '0'
xp: 0
derivee: false
agilite:
type: number
value: '12'
value: 12
label: Agilité
xp: '0'
xp: 0
derivee: false
dexterite:
type: number
value: '11'
value: 11
label: Dexterité
xp: '0'
xp: 0
derivee: false
vue:
type: number
value: '11'
value: 11
label: Vue
xp: '0'
xp: 0
derivee: false
ouie:
type: number
value: '10'
value: 10
label: Ouïe
xp: '0'
xp: 0
derivee: false
odoratgout:
type: number
value: '10'
value: 10
label: Odorat-Goût
xp: '0'
xp: 0
derivee: false
volonte:
type: number
value: '12'
value: 12
label: Volonté
xp: '0'
xp: 0
derivee: false
intellect:
type: number
value: '11'
value: 11
label: Intellect
xp: '0'
xp: 0
derivee: false
empathie:
type: number
value: '9'
value: 9
label: Empathie
xp: '0'
xp: 0
derivee: false
reve:
type: number
value: '9'
value: 9
label: Rêve
xp: '0'
xp: 0
derivee: false
chance:
type: number
value: '11'
value: 11
label: Chance
xp: '0'
xp: 0
derivee: false
melee:
type: number
@ -2518,7 +2518,7 @@ system:
derivee: true
reve:
reve:
max: '9'
max: 9
value: 9
label: Points de Rêve actuels
thanatosused: false
@ -2556,7 +2556,7 @@ system:
isInput: true
chance:
value: 11
max: '11'
max: 11
label: Chance
isInput: true
destinee:
@ -2608,7 +2608,7 @@ system:
heure: vaisseau
sexe: ''
age: '30'
beaute: '10'
beaute: 10
main: droitier
experiencelog: []
subacteurs:

View File

@ -1829,7 +1829,7 @@ items:
coreVersion: '12.331'
_key: '!actors.items!pSM0ku0RJNLvHSvF.VyAJK54OPjiRt8oH'
- _id: bt2cR4aE6lIOeg4F
name: Voie d'Hypnos
name: Hypnos
type: competence
sort: 6300000
img: systems/foundryvtt-reve-de-dragon/icons/competence_hypnos.webp
@ -1856,7 +1856,7 @@ items:
coreVersion: '12.331'
_key: '!actors.items!pSM0ku0RJNLvHSvF.bt2cR4aE6lIOeg4F'
- _id: nnR2UHelUaF8dxYn
name: Voie d'Oniros
name: Oniros
type: competence
sort: 6400000
img: systems/foundryvtt-reve-de-dragon/icons/competence_oniros.webp
@ -1883,7 +1883,7 @@ items:
coreVersion: '12.331'
_key: '!actors.items!pSM0ku0RJNLvHSvF.nnR2UHelUaF8dxYn'
- _id: u1Peok1EYkBcVsmN
name: Voie de Narcos
name: Narcos
type: competence
sort: 6500000
img: systems/foundryvtt-reve-de-dragon/icons/competence_narcos.webp
@ -1908,7 +1908,7 @@ items:
coreVersion: '12.331'
_key: '!actors.items!pSM0ku0RJNLvHSvF.u1Peok1EYkBcVsmN'
- _id: dPlTQzvU3CEg5qKc
name: Voie de Thanatos
name: Thanatos
type: competence
sort: 6600000
img: systems/foundryvtt-reve-de-dragon/icons/competence_thanatos.webp
@ -2264,10 +2264,10 @@ items:
environnement: []
resistance: 8
categorie_parade: ''
dommages: '1'
dommages: 1
mortalite: mortel
penetration: 0
force: '7'
force: 7
competence: Dague
lancer: Dague de jet
tir: ''
@ -2312,10 +2312,10 @@ items:
environnement: []
resistance: 1
categorie_parade: ''
dommages: '1'
dommages: 1
mortalite: mortel
penetration: 0
force: '0'
force: 0
competence: Dague
lancer: Dague de jet
tir: ''
@ -2438,87 +2438,87 @@ system:
carac:
taille:
type: number
value: '11'
value: 11
label: Taille
xp: '0'
xp: 0
derivee: false
apparence:
type: number
value: '12'
value: 12
label: Apparence
xp: '0'
xp: 0
derivee: false
constitution:
type: number
value: '11'
value: 11
label: Constitution
xp: '0'
xp: 0
derivee: false
force:
type: number
value: 10
label: Force
xp: '0'
xp: 0
derivee: false
agilite:
type: number
value: '11'
value: 11
label: Agilité
xp: '0'
xp: 0
derivee: false
dexterite:
type: number
value: '13'
value: 13
label: Dexterité
xp: '0'
xp: 0
derivee: false
vue:
type: number
value: '12'
value: 12
label: Vue
xp: '0'
xp: 0
derivee: false
ouie:
type: number
value: '14'
value: 14
label: Ouïe
xp: '0'
xp: 0
derivee: false
odoratgout:
type: number
value: '10'
value: 10
label: Odorat-Goût
xp: '0'
xp: 0
derivee: false
volonte:
type: number
value: '12'
value: 12
label: Volonté
xp: '0'
xp: 0
derivee: false
intellect:
type: number
value: '11'
value: 11
label: Intellect
xp: '0'
xp: 0
derivee: false
empathie:
type: number
value: '13'
value: 13
label: Empathie
xp: '0'
xp: 0
derivee: false
reve:
type: number
value: '9'
value: 9
label: Rêve
xp: '0'
xp: 0
derivee: false
chance:
type: number
value: '10'
value: 10
label: Chance
xp: '0'
xp: 0
derivee: false
melee:
type: number
@ -2605,7 +2605,7 @@ system:
derivee: true
reve:
reve:
max: '9'
max: 9
value: 9
label: Points de Rêve actuels
thanatosused: false
@ -2643,7 +2643,7 @@ system:
isInput: true
chance:
value: 10
max: '10'
max: 10
label: Chance
isInput: true
destinee:
@ -2695,7 +2695,7 @@ system:
heure: vaisseau
sexe: ''
age: '30'
beaute: '10'
beaute: 10
main: droitier
experiencelog: []
subacteurs:

View File

@ -1829,7 +1829,7 @@ items:
coreVersion: '12.331'
_key: '!actors.items!5xPFHgrY5AIP9Mnb.VyAJK54OPjiRt8oH'
- _id: bt2cR4aE6lIOeg4F
name: Voie d'Hypnos
name: Hypnos
type: competence
sort: 6300000
img: systems/foundryvtt-reve-de-dragon/icons/competence_hypnos.webp
@ -1856,7 +1856,7 @@ items:
coreVersion: '12.331'
_key: '!actors.items!5xPFHgrY5AIP9Mnb.bt2cR4aE6lIOeg4F'
- _id: nnR2UHelUaF8dxYn
name: Voie d'Oniros
name: Oniros
type: competence
sort: 6400000
img: systems/foundryvtt-reve-de-dragon/icons/competence_oniros.webp
@ -1883,7 +1883,7 @@ items:
coreVersion: '12.331'
_key: '!actors.items!5xPFHgrY5AIP9Mnb.nnR2UHelUaF8dxYn'
- _id: u1Peok1EYkBcVsmN
name: Voie de Narcos
name: Narcos
type: competence
sort: 6500000
img: systems/foundryvtt-reve-de-dragon/icons/competence_narcos.webp
@ -1908,7 +1908,7 @@ items:
coreVersion: '12.331'
_key: '!actors.items!5xPFHgrY5AIP9Mnb.u1Peok1EYkBcVsmN'
- _id: dPlTQzvU3CEg5qKc
name: Voie de Thanatos
name: Thanatos
type: competence
sort: 6600000
img: systems/foundryvtt-reve-de-dragon/icons/competence_thanatos.webp
@ -2264,10 +2264,10 @@ items:
environnement: []
resistance: 8
categorie_parade: ''
dommages: '1'
dommages: 1
mortalite: mortel
penetration: 0
force: '7'
force: 7
competence: Dague
lancer: Dague de jet
tir: ''
@ -2312,10 +2312,10 @@ items:
environnement: []
resistance: 1
categorie_parade: ''
dommages: '1'
dommages: 1
mortalite: mortel
penetration: 0
force: '0'
force: 0
competence: Dague
lancer: Dague de jet
tir: ''
@ -2438,87 +2438,87 @@ system:
carac:
taille:
type: number
value: '7'
value: 7
label: Taille
xp: '0'
xp: 0
derivee: false
apparence:
type: number
value: '14'
value: 14
label: Apparence
xp: '0'
xp: 0
derivee: false
constitution:
type: number
value: '11'
value: 11
label: Constitution
xp: '0'
xp: 0
derivee: false
force:
type: number
value: 9
label: Force
xp: '0'
xp: 0
derivee: false
agilite:
type: number
value: '13'
value: 13
label: Agilité
xp: '0'
xp: 0
derivee: false
dexterite:
type: number
value: '13'
value: 13
label: Dexterité
xp: '0'
xp: 0
derivee: false
vue:
type: number
value: '11'
value: 11
label: Vue
xp: '0'
xp: 0
derivee: false
ouie:
type: number
value: '14'
value: 14
label: Ouïe
xp: '0'
xp: 0
derivee: false
odoratgout:
type: number
value: '11'
value: 11
label: Odorat-Goût
xp: '0'
xp: 0
derivee: false
volonte:
type: number
value: '10'
value: 10
label: Volonté
xp: '0'
xp: 0
derivee: false
intellect:
type: number
value: '11'
value: 11
label: Intellect
xp: '0'
xp: 0
derivee: false
empathie:
type: number
value: '13'
value: 13
label: Empathie
xp: '0'
xp: 0
derivee: false
reve:
type: number
value: '9'
value: 9
label: Rêve
xp: '0'
xp: 0
derivee: false
chance:
type: number
value: '10'
value: 10
label: Chance
xp: '0'
xp: 0
derivee: false
melee:
type: number
@ -2605,7 +2605,7 @@ system:
derivee: true
reve:
reve:
max: '9'
max: 9
value: 9
label: Points de Rêve actuels
thanatosused: false
@ -2643,7 +2643,7 @@ system:
isInput: true
chance:
value: 10
max: '10'
max: 10
label: Chance
isInput: true
destinee:
@ -2695,7 +2695,7 @@ system:
heure: vaisseau
sexe: ''
age: '30'
beaute: '10'
beaute: 10
main: droitier
experiencelog: []
subacteurs:

View File

@ -1890,7 +1890,7 @@ items:
coreVersion: '12.331'
_key: '!actors.items!U9NNcXQBJmsI9Ttk.VyAJK54OPjiRt8oH'
- _id: bt2cR4aE6lIOeg4F
name: Voie d'Hypnos
name: Hypnos
type: competence
sort: 6300000
flags: {}
@ -1918,7 +1918,7 @@ items:
coreVersion: '12.331'
_key: '!actors.items!U9NNcXQBJmsI9Ttk.bt2cR4aE6lIOeg4F'
- _id: nnR2UHelUaF8dxYn
name: Voie d'Oniros
name: Oniros
type: competence
sort: 6400000
flags: {}
@ -1946,7 +1946,7 @@ items:
coreVersion: '12.331'
_key: '!actors.items!U9NNcXQBJmsI9Ttk.nnR2UHelUaF8dxYn'
- _id: u1Peok1EYkBcVsmN
name: Voie de Narcos
name: Narcos
type: competence
sort: 6500000
flags: {}
@ -1972,7 +1972,7 @@ items:
coreVersion: '12.331'
_key: '!actors.items!U9NNcXQBJmsI9Ttk.u1Peok1EYkBcVsmN'
- _id: dPlTQzvU3CEg5qKc
name: Voie de Thanatos
name: Thanatos
type: competence
sort: 6600000
flags: {}
@ -2379,10 +2379,10 @@ items:
environnement: []
resistance: 8
categorie_parade: ''
dommages: '1'
dommages: 1
mortalite: mortel
penetration: 0
force: '7'
force: 7
competence: Dague
lancer: Dague de jet
tir: ''
@ -2506,87 +2506,87 @@ system:
carac:
taille:
type: number
value: '10'
value: 10
label: Taille
xp: '0'
xp: 0
derivee: false
apparence:
type: number
value: '13'
value: 13
label: Apparence
xp: '0'
xp: 0
derivee: false
constitution:
type: number
value: '10'
value: 10
label: Constitution
xp: '0'
xp: 0
derivee: false
force:
type: number
value: 10
label: Force
xp: '0'
xp: 0
derivee: false
agilite:
type: number
value: '10'
value: 10
label: Agilité
xp: '0'
xp: 0
derivee: false
dexterite:
type: number
value: '12'
value: 12
label: Dexterité
xp: '0'
xp: 0
derivee: false
vue:
type: number
value: '13'
value: 13
label: Vue
xp: '0'
xp: 0
derivee: false
ouie:
type: number
value: '10'
value: 10
label: Ouïe
xp: '0'
xp: 0
derivee: false
odoratgout:
type: number
value: '10'
value: 10
label: Odorat-Goût
xp: '0'
xp: 0
derivee: false
volonte:
type: number
value: '12'
value: 12
label: Volonté
xp: '0'
xp: 0
derivee: false
intellect:
type: number
value: '12'
value: 12
label: Intellect
xp: '0'
xp: 0
derivee: false
empathie:
type: number
value: '13'
value: 13
label: Empathie
xp: '0'
xp: 0
derivee: false
reve:
type: number
value: '9'
value: 9
label: Rêve
xp: '0'
xp: 0
derivee: false
chance:
type: number
value: '12'
value: 12
label: Chance
xp: '0'
xp: 0
derivee: false
melee:
type: number
@ -2673,7 +2673,7 @@ system:
derivee: true
reve:
reve:
max: '9'
max: 9
value: 12
label: Points de Rêve actuels
thanatosused: false
@ -2711,7 +2711,7 @@ system:
isInput: true
chance:
value: 12
max: '12'
max: 12
label: Chance
isInput: true
destinee:
@ -2763,7 +2763,7 @@ system:
heure: vaisseau
sexe: ''
age: '30'
beaute: '10'
beaute: 10
main: droitier
experiencelog: []
subacteurs:

View File

@ -1828,7 +1828,7 @@ items:
coreVersion: '12.331'
_key: '!actors.items!oLDROOdwfctyRusH.VyAJK54OPjiRt8oH'
- _id: bt2cR4aE6lIOeg4F
name: Voie d'Hypnos
name: Hypnos
type: competence
sort: 6300000
img: systems/foundryvtt-reve-de-dragon/icons/competence_hypnos.webp
@ -1855,7 +1855,7 @@ items:
coreVersion: '12.331'
_key: '!actors.items!oLDROOdwfctyRusH.bt2cR4aE6lIOeg4F'
- _id: nnR2UHelUaF8dxYn
name: Voie d'Oniros
name: Oniros
type: competence
sort: 6400000
img: systems/foundryvtt-reve-de-dragon/icons/competence_oniros.webp
@ -1882,7 +1882,7 @@ items:
coreVersion: '12.331'
_key: '!actors.items!oLDROOdwfctyRusH.nnR2UHelUaF8dxYn'
- _id: u1Peok1EYkBcVsmN
name: Voie de Narcos
name: Narcos
type: competence
sort: 6500000
img: systems/foundryvtt-reve-de-dragon/icons/competence_narcos.webp
@ -1907,7 +1907,7 @@ items:
coreVersion: '12.331'
_key: '!actors.items!oLDROOdwfctyRusH.u1Peok1EYkBcVsmN'
- _id: dPlTQzvU3CEg5qKc
name: Voie de Thanatos
name: Thanatos
type: competence
sort: 6600000
img: systems/foundryvtt-reve-de-dragon/icons/competence_thanatos.webp
@ -2006,10 +2006,10 @@ items:
environnement: []
resistance: 8
categorie_parade: ''
dommages: '1'
dommages: 1
mortalite: mortel
penetration: 0
force: '7'
force: 7
competence: Dague
lancer: Dague de jet
tir: ''
@ -2443,87 +2443,87 @@ system:
carac:
taille:
type: number
value: '9'
value: 9
label: Taille
xp: '0'
xp: 0
derivee: false
apparence:
type: number
value: '14'
value: 14
label: Apparence
xp: '0'
xp: 0
derivee: false
constitution:
type: number
value: '12'
value: 12
label: Constitution
xp: '0'
xp: 0
derivee: false
force:
type: number
value: 10
label: Force
xp: '0'
xp: 0
derivee: false
agilite:
type: number
value: '11'
value: 11
label: Agilité
xp: '0'
xp: 0
derivee: false
dexterite:
type: number
value: '9'
value: 9
label: Dexterité
xp: '0'
xp: 0
derivee: false
vue:
type: number
value: '13'
value: 13
label: Vue
xp: '0'
xp: 0
derivee: false
ouie:
type: number
value: '12'
value: 12
label: Ouïe
xp: '0'
xp: 0
derivee: false
odoratgout:
type: number
value: '14'
value: 14
label: Odorat-Goût
xp: '0'
xp: 0
derivee: false
volonte:
type: number
value: '12'
value: 12
label: Volonté
xp: '0'
xp: 0
derivee: false
intellect:
type: number
value: '13'
value: 13
label: Intellect
xp: '0'
xp: 0
derivee: false
empathie:
type: number
value: '9'
value: 9
label: Empathie
xp: '0'
xp: 0
derivee: false
reve:
type: number
value: '9'
value: 9
label: Rêve
xp: '0'
xp: 0
derivee: false
chance:
type: number
value: '12'
value: 12
label: Chance
xp: '0'
xp: 0
derivee: false
melee:
type: number
@ -2610,7 +2610,7 @@ system:
derivee: true
reve:
reve:
max: '9'
max: 9
value: 9
label: Points de Rêve actuels
thanatosused: false
@ -2648,7 +2648,7 @@ system:
isInput: true
chance:
value: 12
max: '12'
max: 12
label: Chance
isInput: true
destinee:
@ -2700,7 +2700,7 @@ system:
heure: vaisseau
sexe: ''
age: '30'
beaute: '10'
beaute: 10
main: droitier
experiencelog: []
subacteurs:

View File

@ -1828,7 +1828,7 @@ items:
coreVersion: '12.331'
_key: '!actors.items!2KN3nKGZ36Qkn7Mf.VyAJK54OPjiRt8oH'
- _id: bt2cR4aE6lIOeg4F
name: Voie d'Hypnos
name: Hypnos
type: competence
sort: 6300000
img: systems/foundryvtt-reve-de-dragon/icons/competence_hypnos.webp
@ -1855,7 +1855,7 @@ items:
coreVersion: '12.331'
_key: '!actors.items!2KN3nKGZ36Qkn7Mf.bt2cR4aE6lIOeg4F'
- _id: nnR2UHelUaF8dxYn
name: Voie d'Oniros
name: Oniros
type: competence
sort: 6400000
img: systems/foundryvtt-reve-de-dragon/icons/competence_oniros.webp
@ -1882,7 +1882,7 @@ items:
coreVersion: '12.331'
_key: '!actors.items!2KN3nKGZ36Qkn7Mf.nnR2UHelUaF8dxYn'
- _id: u1Peok1EYkBcVsmN
name: Voie de Narcos
name: Narcos
type: competence
sort: 6500000
img: systems/foundryvtt-reve-de-dragon/icons/competence_narcos.webp
@ -1907,7 +1907,7 @@ items:
coreVersion: '12.331'
_key: '!actors.items!2KN3nKGZ36Qkn7Mf.u1Peok1EYkBcVsmN'
- _id: dPlTQzvU3CEg5qKc
name: Voie de Thanatos
name: Thanatos
type: competence
sort: 6600000
img: systems/foundryvtt-reve-de-dragon/icons/competence_thanatos.webp
@ -2007,10 +2007,10 @@ items:
environnement: []
resistance: 8
categorie_parade: ''
dommages: '1'
dommages: 1
mortalite: mortel
penetration: 0
force: '7'
force: 7
competence: Dague
lancer: Dague de jet
tir: ''
@ -2467,87 +2467,87 @@ system:
carac:
taille:
type: number
value: '11'
value: 11
label: Taille
xp: '0'
xp: 0
derivee: false
apparence:
type: number
value: '14'
value: 14
label: Apparence
xp: '0'
xp: 0
derivee: false
constitution:
type: number
value: '13'
value: 13
label: Constitution
xp: '0'
xp: 0
derivee: false
force:
type: number
value: 10
label: Force
xp: '0'
xp: 0
derivee: false
agilite:
type: number
value: '11'
value: 11
label: Agilité
xp: '0'
xp: 0
derivee: false
dexterite:
type: number
value: '9'
value: 9
label: Dexterité
xp: '0'
xp: 0
derivee: false
vue:
type: number
value: '13'
value: 13
label: Vue
xp: '0'
xp: 0
derivee: false
ouie:
type: number
value: '12'
value: 12
label: Ouïe
xp: '0'
xp: 0
derivee: false
odoratgout:
type: number
value: '14'
value: 14
label: Odorat-Goût
xp: '0'
xp: 0
derivee: false
volonte:
type: number
value: '12'
value: 12
label: Volonté
xp: '0'
xp: 0
derivee: false
intellect:
type: number
value: '13'
value: 13
label: Intellect
xp: '0'
xp: 0
derivee: false
empathie:
type: number
value: '9'
value: 9
label: Empathie
xp: '0'
xp: 0
derivee: false
reve:
type: number
value: '9'
value: 9
label: Rêve
xp: '0'
xp: 0
derivee: false
chance:
type: number
value: '12'
value: 12
label: Chance
xp: '0'
xp: 0
derivee: false
melee:
type: number
@ -2634,7 +2634,7 @@ system:
derivee: true
reve:
reve:
max: '9'
max: 9
value: 9
label: Points de Rêve actuels
thanatosused: false
@ -2672,7 +2672,7 @@ system:
isInput: true
chance:
value: 12
max: '12'
max: 12
label: Chance
isInput: true
destinee:
@ -2724,7 +2724,7 @@ system:
heure: vaisseau
sexe: ''
age: '30'
beaute: '10'
beaute: 10
main: droitier
experiencelog: []
subacteurs:

View File

@ -1891,7 +1891,7 @@ items:
coreVersion: '12.331'
_key: '!actors.items!V2WOs8deCYdBT2Jo.VyAJK54OPjiRt8oH'
- _id: bt2cR4aE6lIOeg4F
name: Voie d'Hypnos
name: Hypnos
type: competence
sort: 6300000
flags: {}
@ -1919,7 +1919,7 @@ items:
coreVersion: '12.331'
_key: '!actors.items!V2WOs8deCYdBT2Jo.bt2cR4aE6lIOeg4F'
- _id: nnR2UHelUaF8dxYn
name: Voie d'Oniros
name: Oniros
type: competence
sort: 6400000
flags: {}
@ -1947,7 +1947,7 @@ items:
coreVersion: '12.331'
_key: '!actors.items!V2WOs8deCYdBT2Jo.nnR2UHelUaF8dxYn'
- _id: u1Peok1EYkBcVsmN
name: Voie de Narcos
name: Narcos
type: competence
sort: 6500000
flags: {}
@ -1973,7 +1973,7 @@ items:
coreVersion: '12.331'
_key: '!actors.items!V2WOs8deCYdBT2Jo.u1Peok1EYkBcVsmN'
- _id: dPlTQzvU3CEg5qKc
name: Voie de Thanatos
name: Thanatos
type: competence
sort: 6600000
flags: {}
@ -2229,87 +2229,87 @@ system:
carac:
taille:
type: number
value: '12'
value: 12
label: Taille
xp: '0'
xp: 0
derivee: false
apparence:
type: number
value: '8'
value: 8
label: Apparence
xp: '0'
xp: 0
derivee: false
constitution:
type: number
value: '13'
value: 13
label: Constitution
xp: '0'
xp: 0
derivee: false
force:
type: number
value: 13
label: Force
xp: '0'
xp: 0
derivee: false
agilite:
type: number
value: '11'
value: 11
label: Agilité
xp: '0'
xp: 0
derivee: false
dexterite:
type: number
value: '12'
value: 12
label: Dexterité
xp: '0'
xp: 0
derivee: false
vue:
type: number
value: '12'
value: 12
label: Vue
xp: '0'
xp: 0
derivee: false
ouie:
type: number
value: '12'
value: 12
label: Ouïe
xp: '0'
xp: 0
derivee: false
odoratgout:
type: number
value: '9'
value: 9
label: Odorat-Goût
xp: '0'
xp: 0
derivee: false
volonte:
type: number
value: '9'
value: 9
label: Volonté
xp: '0'
xp: 0
derivee: false
intellect:
type: number
value: '8'
value: 8
label: Intellect
xp: '0'
xp: 0
derivee: false
empathie:
type: number
value: '11'
value: 11
label: Empathie
xp: '0'
xp: 0
derivee: false
reve:
type: number
value: '9'
value: 9
label: Rêve
xp: '0'
xp: 0
derivee: false
chance:
type: number
value: '11'
value: 11
label: Chance
xp: '0'
xp: 0
derivee: false
melee:
type: number
@ -2396,7 +2396,7 @@ system:
derivee: true
reve:
reve:
max: '9'
max: 9
value: 9
label: Points de Rêve actuels
thanatosused: false
@ -2434,7 +2434,7 @@ system:
isInput: true
chance:
value: 11
max: '11'
max: 11
label: Chance
isInput: true
destinee:
@ -2486,7 +2486,7 @@ system:
heure: vaisseau
sexe: ''
age: '30'
beaute: '10'
beaute: 10
main: droitier
experiencelog: []
subacteurs:

View File

@ -1891,7 +1891,7 @@ items:
coreVersion: '12.331'
_key: '!actors.items!UNs4RBLYiGbfxd1c.VyAJK54OPjiRt8oH'
- _id: bt2cR4aE6lIOeg4F
name: Voie d'Hypnos
name: Hypnos
type: competence
sort: 6300000
flags: {}
@ -1919,7 +1919,7 @@ items:
coreVersion: '12.331'
_key: '!actors.items!UNs4RBLYiGbfxd1c.bt2cR4aE6lIOeg4F'
- _id: nnR2UHelUaF8dxYn
name: Voie d'Oniros
name: Oniros
type: competence
sort: 6400000
flags: {}
@ -1947,7 +1947,7 @@ items:
coreVersion: '12.331'
_key: '!actors.items!UNs4RBLYiGbfxd1c.nnR2UHelUaF8dxYn'
- _id: u1Peok1EYkBcVsmN
name: Voie de Narcos
name: Narcos
type: competence
sort: 6500000
flags: {}
@ -1973,7 +1973,7 @@ items:
coreVersion: '12.331'
_key: '!actors.items!UNs4RBLYiGbfxd1c.u1Peok1EYkBcVsmN'
- _id: dPlTQzvU3CEg5qKc
name: Voie de Thanatos
name: Thanatos
type: competence
sort: 6600000
flags: {}
@ -2046,10 +2046,10 @@ items:
environnement: []
resistance: 8
categorie_parade: ''
dommages: '1'
dommages: 1
mortalite: mortel
penetration: 0
force: '7'
force: 7
competence: Dague
lancer: Dague de jet
tir: ''
@ -2274,87 +2274,87 @@ system:
carac:
taille:
type: number
value: '11'
value: 11
label: Taille
xp: '0'
xp: 0
derivee: false
apparence:
type: number
value: '12'
value: 12
label: Apparence
xp: '0'
xp: 0
derivee: false
constitution:
type: number
value: '12'
value: 12
label: Constitution
xp: '0'
xp: 0
derivee: false
force:
type: number
value: 12
label: Force
xp: '0'
xp: 0
derivee: false
agilite:
type: number
value: '11'
value: 11
label: Agilité
xp: '0'
xp: 0
derivee: false
dexterite:
type: number
value: '12'
value: 12
label: Dexterité
xp: '0'
xp: 0
derivee: false
vue:
type: number
value: '11'
value: 11
label: Vue
xp: '0'
xp: 0
derivee: false
ouie:
type: number
value: '10'
value: 10
label: Ouïe
xp: '0'
xp: 0
derivee: false
odoratgout:
type: number
value: '12'
value: 12
label: Odorat-Goût
xp: '0'
xp: 0
derivee: false
volonte:
type: number
value: '10'
value: 10
label: Volonté
xp: '0'
xp: 0
derivee: false
intellect:
type: number
value: '8'
value: 8
label: Intellect
xp: '0'
xp: 0
derivee: false
empathie:
type: number
value: '12'
value: 12
label: Empathie
xp: '0'
xp: 0
derivee: false
reve:
type: number
value: '11'
value: 11
label: Rêve
xp: '0'
xp: 0
derivee: false
chance:
type: number
value: '11'
value: 11
label: Chance
xp: '0'
xp: 0
derivee: false
melee:
type: number
@ -2441,7 +2441,7 @@ system:
derivee: true
reve:
reve:
max: '11'
max: 11
value: 13
label: Points de Rêve actuels
thanatosused: false
@ -2479,7 +2479,7 @@ system:
isInput: true
chance:
value: 11
max: '11'
max: 11
label: Chance
isInput: true
destinee:
@ -2531,7 +2531,7 @@ system:
heure: vaisseau
sexe: ''
age: '30'
beaute: '10'
beaute: 10
main: droitier
experiencelog: []
subacteurs:

View File

@ -1891,7 +1891,7 @@ items:
coreVersion: '12.331'
_key: '!actors.items!jfXs7qaHEWQpIHud.VyAJK54OPjiRt8oH'
- _id: bt2cR4aE6lIOeg4F
name: Voie d'Hypnos
name: Hypnos
type: competence
sort: 6300000
flags: {}
@ -1919,7 +1919,7 @@ items:
coreVersion: '12.331'
_key: '!actors.items!jfXs7qaHEWQpIHud.bt2cR4aE6lIOeg4F'
- _id: nnR2UHelUaF8dxYn
name: Voie d'Oniros
name: Oniros
type: competence
sort: 6400000
flags: {}
@ -1947,7 +1947,7 @@ items:
coreVersion: '12.331'
_key: '!actors.items!jfXs7qaHEWQpIHud.nnR2UHelUaF8dxYn'
- _id: u1Peok1EYkBcVsmN
name: Voie de Narcos
name: Narcos
type: competence
sort: 6500000
flags: {}
@ -1973,7 +1973,7 @@ items:
coreVersion: '12.331'
_key: '!actors.items!jfXs7qaHEWQpIHud.u1Peok1EYkBcVsmN'
- _id: dPlTQzvU3CEg5qKc
name: Voie de Thanatos
name: Thanatos
type: competence
sort: 6600000
flags: {}
@ -2257,87 +2257,87 @@ system:
carac:
taille:
type: number
value: '7'
value: 7
label: Taille
xp: '0'
xp: 0
derivee: false
apparence:
type: number
value: '12'
value: 12
label: Apparence
xp: '0'
xp: 0
derivee: false
constitution:
type: number
value: '10'
value: 10
label: Constitution
xp: '0'
xp: 0
derivee: false
force:
type: number
value: 11
label: Force
xp: '0'
xp: 0
derivee: false
agilite:
type: number
value: '13'
value: 13
label: Agilité
xp: '0'
xp: 0
derivee: false
dexterite:
type: number
value: '14'
value: 14
label: Dexterité
xp: '0'
xp: 0
derivee: false
vue:
type: number
value: '12'
value: 12
label: Vue
xp: '0'
xp: 0
derivee: false
ouie:
type: number
value: '12'
value: 12
label: Ouïe
xp: '0'
xp: 0
derivee: false
odoratgout:
type: number
value: '12'
value: 12
label: Odorat-Goût
xp: '0'
xp: 0
derivee: false
volonte:
type: number
value: '9'
value: 9
label: Volonté
xp: '0'
xp: 0
derivee: false
intellect:
type: number
value: '8'
value: 8
label: Intellect
xp: '0'
xp: 0
derivee: false
empathie:
type: number
value: '14'
value: 14
label: Empathie
xp: '0'
xp: 0
derivee: false
reve:
type: number
value: '12'
value: 12
label: Rêve
xp: '0'
xp: 0
derivee: false
chance:
type: number
value: '10'
value: 10
label: Chance
xp: '0'
xp: 0
derivee: false
melee:
type: number
@ -2424,7 +2424,7 @@ system:
derivee: true
reve:
reve:
max: '12'
max: 12
value: 13
label: Points de Rêve actuels
thanatosused: false
@ -2462,7 +2462,7 @@ system:
isInput: true
chance:
value: 0
max: '10'
max: 10
label: Chance
isInput: true
destinee:
@ -2514,7 +2514,7 @@ system:
heure: vaisseau
sexe: ''
age: '30'
beaute: '10'
beaute: 10
main: droitier
experiencelog: []
subacteurs:

Some files were not shown because too many files have changed in this diff Show More