Compare commits
No commits in common. "v11" and "12.0.27" have entirely different histories.
21
changelog.md
21
changelog.md
@ -1,19 +1,4 @@
|
|||||||
# 12.0
|
# 12.0
|
||||||
## 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
|
## 12.0.27 - Les vêtements d'Astrobazzarh
|
||||||
- Ajout de la liste des armures dans l'onglet caractéristiques
|
- Ajout de la liste des armures dans l'onglet caractéristiques
|
||||||
- Ajout d'une option pour choisir une carte des TMR alternatives
|
- Ajout d'une option pour choisir une carte des TMR alternatives
|
||||||
@ -130,9 +115,11 @@
|
|||||||
- encodage de l'export en windows-1252
|
- encodage de l'export en windows-1252
|
||||||
- export de l'esquive avec armure et sans armure
|
- export de l'esquive avec armure et sans armure
|
||||||
|
|
||||||
## 12.0.9 - 12.0.10 - Le scriptorium d'Astrobazzarh
|
## 12.0.10 - Le scriptorium d'Astrobazzarh
|
||||||
- corrections de l'export scriptarium
|
- corrections de l'export scriptarium
|
||||||
- ajout d'une fonction avancée pour un exporter "scriptarium" des personnages
|
|
||||||
|
## 12.0.9 - Le scriptorium d'Astrobazzarh
|
||||||
|
- ajout d'une fonction avancée pour exporter les personnages dans un format csv
|
||||||
|
|
||||||
## 12.0.8 - La quincaillerie d'Astrobazzarh
|
## 12.0.8 - La quincaillerie d'Astrobazzarh
|
||||||
- le propriétaire est indiqué dans les feuilles d'équipements/compétences/...
|
- le propriétaire est indiqué dans les feuilles d'équipements/compétences/...
|
||||||
|
@ -183,7 +183,7 @@ export class RdDActorSheet extends RdDBaseActorSangSheet {
|
|||||||
|
|
||||||
// Equip Inventory Item
|
// Equip Inventory Item
|
||||||
this.html.find('.item-equip').click(async event => this.actor.equiperObjet(RdDSheetUtility.getItemId(event)))
|
this.html.find('.item-equip').click(async event => this.actor.equiperObjet(RdDSheetUtility.getItemId(event)))
|
||||||
this.html.find('.roll-chance-actuelle').click(async event => this.actor.rollCarac('chance-actuelle'))
|
this.html.find('.chance-actuelle').click(async event => this.actor.rollCarac('chance-actuelle'))
|
||||||
|
|
||||||
this.html.find('.button-appel-chance').click(async event => this.actor.rollAppelChance())
|
this.html.find('.button-appel-chance').click(async event => this.actor.rollAppelChance())
|
||||||
|
|
||||||
@ -214,7 +214,7 @@ export class RdDActorSheet extends RdDBaseActorSangSheet {
|
|||||||
// Boutons spéciaux MJs
|
// Boutons spéciaux MJs
|
||||||
this.html.find('.forcer-tmr-aleatoire').click(async event => this.actor.reinsertionAleatoire("Action MJ"))
|
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('.don-de-haut-reve').click(async event => this.actor.addDonDeHautReve())
|
||||||
this.html.find('.sortreserve-add').click(async event => this.actor.addSortReserve(RdDSheetUtility.getItemId(event)))
|
this.html.find('.nouveau-sort-reserve').click(async event => this.actor.addSortReserve())
|
||||||
this.html.find('.afficher-tmr').click(async event => this.actor.changeTMRVisible())
|
this.html.find('.afficher-tmr').click(async event => this.actor.changeTMRVisible())
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -284,8 +284,6 @@ export class RdDActorSheet extends RdDBaseActorSangSheet {
|
|||||||
|
|
||||||
this.html.find('.ptreve-actuel-plus').click(async event => this.actor.reveActuelIncDec(1))
|
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('.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-plus').click(async event => this.actor.santeIncDec("fatigue", 1))
|
||||||
this.html.find('.fatigue-moins').click(async event => this.actor.santeIncDec("fatigue", -1))
|
this.html.find('.fatigue-moins').click(async event => this.actor.santeIncDec("fatigue", -1))
|
||||||
}
|
}
|
||||||
|
@ -95,14 +95,11 @@ export class RdDActor extends RdDBaseActorSang {
|
|||||||
isHautRevant() { return this.system.attributs.hautrevant.value != "" }
|
isHautRevant() { return this.system.attributs.hautrevant.value != "" }
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
getAgilite() { return Misc.toInt(this.system.carac.agilite?.value ?? 0) }
|
getAgilite() { return this.system.carac.agilite?.value ?? 0 }
|
||||||
getChance() { return Misc.toInt(this.system.carac.chance?.value ?? 0) }
|
getChance() { return this.system.carac.chance?.value ?? 0 }
|
||||||
|
|
||||||
getReveActuel() { return Misc.toInt(this.system.reve?.reve?.value) ?? this.carac.reve.value ?? 0 }
|
getReveActuel() { return this.system.reve?.reve?.value ?? this.carac.reve.value ?? 0 }
|
||||||
getChanceActuel() {
|
getChanceActuel() { return this.system.compteurs.chance?.value ?? 10 }
|
||||||
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 }
|
getMoralTotal() { return this.system.compteurs.moral?.value ?? 0 }
|
||||||
|
|
||||||
getEnduranceMax() { return Math.max(1, Math.max(this.getTaille() + this.getConstitution(), this.getVieMax() + this.getVolonte())) }
|
getEnduranceMax() { return Math.max(1, Math.max(this.getTaille() + this.getConstitution(), this.getVieMax() + this.getVolonte())) }
|
||||||
@ -994,23 +991,13 @@ export class RdDActor extends RdDBaseActorSang {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
async addSortReserve(itemId) {
|
async addSortReserve() {
|
||||||
if (itemId) {
|
|
||||||
const item = this.items.get(itemId)
|
|
||||||
if (item.type == ITEM_TYPES.sort && !item.system.isrituel) {
|
|
||||||
this.$createSortReserve(item)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
}
|
|
||||||
const selectSortReserve = {
|
const selectSortReserve = {
|
||||||
title: "Créer un sort en réserve",
|
title: "Créer un sort en réserve",
|
||||||
label: "Choisir un sort",
|
label: "Choisir un sort",
|
||||||
list: this.itemTypes[ITEM_TYPES.sort].filter(it => !it.system.isrituel)
|
list: this.itemTypes[ITEM_TYPES.sort].filter(it => !it.system.isrituel)
|
||||||
}
|
}
|
||||||
DialogSelect.select(selectSortReserve, sort => this.$createSortReserve(sort))
|
DialogSelect.select(selectSortReserve, sort =>
|
||||||
}
|
|
||||||
|
|
||||||
$createSortReserve(sort) {
|
|
||||||
this.createEmbeddedDocuments("Item",
|
this.createEmbeddedDocuments("Item",
|
||||||
[{
|
[{
|
||||||
type: ITEM_TYPES.sortreserve,
|
type: ITEM_TYPES.sortreserve,
|
||||||
@ -1018,7 +1005,7 @@ export class RdDActor extends RdDBaseActorSang {
|
|||||||
img: sort.img,
|
img: sort.img,
|
||||||
system: { sortid: sort.id, draconic: sort.system.draconic, ptreve: Number(sort.system.ptreve.match(/\d+/)), coord: 'A1', heurecible: 'Vaisseau' }
|
system: { sortid: sort.id, draconic: sort.system.draconic, ptreve: Number(sort.system.ptreve.match(/\d+/)), coord: 'A1', heurecible: 'Vaisseau' }
|
||||||
}],
|
}],
|
||||||
{ renderSheet: true })
|
{ renderSheet: true }))
|
||||||
}
|
}
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
async reinsertionAleatoire(raison, accessible = tmr => true) {
|
async reinsertionAleatoire(raison, accessible = tmr => true) {
|
||||||
@ -1083,11 +1070,6 @@ export class RdDActor extends RdDBaseActorSang {
|
|||||||
await this.update({ "system.reve.reve.value": reve });
|
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() {
|
async regainPointDeSeuil() {
|
||||||
const seuil = Misc.toInt(this.system.reve.seuil.value);
|
const seuil = Misc.toInt(this.system.reve.seuil.value);
|
||||||
@ -2272,6 +2254,12 @@ 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 = () => { }) {
|
async appelDestinee(onSuccess = () => { }, onEchec = () => { }) {
|
||||||
let destinee = this.system.compteurs.destinee?.value ?? 0;
|
let destinee = this.system.compteurs.destinee?.value ?? 0;
|
||||||
|
@ -48,19 +48,6 @@ export class RdDBaseActorReveSheet extends RdDBaseActorSheet {
|
|||||||
}], { renderSheet: true })
|
}], { renderSheet: 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));
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -37,15 +37,6 @@ export class RdDBaseActorReve extends RdDBaseActor {
|
|||||||
this.system.sante.endurance.value = Math.min(this.system.sante.endurance.value, this.system.sante.endurance.max)
|
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() {
|
getCaracChanceActuelle() {
|
||||||
return {
|
return {
|
||||||
label: 'Chance actuelle',
|
label: 'Chance actuelle',
|
||||||
@ -62,6 +53,7 @@ export class RdDBaseActorReve extends RdDBaseActor {
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
getTaille() { return Misc.toInt(this.system.carac.taille?.value) }
|
getTaille() { return Misc.toInt(this.system.carac.taille?.value) }
|
||||||
getConstitution() { return this.getReve() }
|
getConstitution() { return this.getReve() }
|
||||||
getForce() { return this.getReve() }
|
getForce() { return this.getReve() }
|
||||||
@ -314,6 +306,16 @@ export class RdDBaseActorReve extends RdDBaseActor {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
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, jetResistance = undefined) {
|
||||||
if (Grammar.equalsInsensitive(caracName, 'taille')) {
|
if (Grammar.equalsInsensitive(caracName, 'taille')) {
|
||||||
@ -497,7 +499,7 @@ export class RdDBaseActorReve extends RdDBaseActor {
|
|||||||
|| entite.isEntiteAccordee(this)) {
|
|| entite.isEntiteAccordee(this)) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
const rolled = await RdDResolutionTable.roll(this.getReveActuel(), - Number(entite.getNiveau()));
|
const rolled = await RdDResolutionTable.roll(this.getReveActuel(), - Number(entite.system.carac.niveau.value));
|
||||||
const rollData = {
|
const rollData = {
|
||||||
alias: this.getAlias(),
|
alias: this.getAlias(),
|
||||||
rolled: rolled,
|
rolled: rolled,
|
||||||
|
@ -177,6 +177,21 @@ export class RdDBaseActorSheet extends ActorSheet {
|
|||||||
this.options.vueDetaillee = !this.options.vueDetaillee;
|
this.options.vueDetaillee = !this.options.vueDetaillee;
|
||||||
this.render(true);
|
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) {
|
_rechercherKeyup(event) {
|
||||||
|
@ -15,8 +15,6 @@ export class RdDActorEntiteSheet extends RdDBaseActorReveSheet {
|
|||||||
|
|
||||||
async getData() {
|
async getData() {
|
||||||
let formData = await super.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))
|
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 } })
|
.map(actor => { return { id: actor.id, name: actor.name, img: actor.img } })
|
||||||
return formData
|
return formData
|
||||||
@ -35,6 +33,10 @@ export class RdDActorEntiteSheet extends RdDBaseActorReveSheet {
|
|||||||
let compName = event.currentTarget.attributes.compname.value;
|
let compName = event.currentTarget.attributes.compname.value;
|
||||||
this.actor.updateCreatureCompetence(compName, "carac_value", parseInt(event.target.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 => {
|
this.html.find('.creature-dommages').change(async event => {
|
||||||
let compName = event.currentTarget.attributes.compname.value;
|
let compName = event.currentTarget.attributes.compname.value;
|
||||||
this.actor.updateCreatureCompetence(compName, "dommages", parseInt(event.target.value));
|
this.actor.updateCreatureCompetence(compName, "dommages", parseInt(event.target.value));
|
||||||
|
@ -1,7 +1,6 @@
|
|||||||
import { ENTITE_INCARNE, ENTITE_NONINCARNE } from "../constants.js";
|
import { ENTITE_INCARNE, ENTITE_NONINCARNE } from "../constants.js";
|
||||||
import { ITEM_TYPES } from "../item.js";
|
import { ITEM_TYPES } from "../item.js";
|
||||||
import { Misc } from "../misc.js";
|
import { Misc } from "../misc.js";
|
||||||
import { RdDCarac } from "../rdd-carac.js";
|
|
||||||
import { RdDEncaisser } from "../rdd-roll-encaisser.js";
|
import { RdDEncaisser } from "../rdd-roll-encaisser.js";
|
||||||
import { STATUSES } from "../settings/status-effects.js";
|
import { STATUSES } from "../settings/status-effects.js";
|
||||||
import { RdDBaseActorReve } from "./base-actor-reve.js";
|
import { RdDBaseActorReve } from "./base-actor-reve.js";
|
||||||
@ -19,23 +18,12 @@ export class RdDEntite extends RdDBaseActorReve {
|
|||||||
isEntite(typeentite = []) {
|
isEntite(typeentite = []) {
|
||||||
return (typeentite.length == 0 || typeentite.includes(this.system.definition.typeentite));
|
return (typeentite.length == 0 || typeentite.includes(this.system.definition.typeentite));
|
||||||
}
|
}
|
||||||
|
|
||||||
isNonIncarnee() { return this.isEntite([ENTITE_NONINCARNE]) }
|
isNonIncarnee() { return this.isEntite([ENTITE_NONINCARNE]) }
|
||||||
|
|
||||||
getReveActuel() {
|
getReveActuel() {
|
||||||
return Misc.toInt(this.system.carac.reve?.value)
|
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() }
|
getForce() { return this.getReve() }
|
||||||
getAgilite() { return this.getReve() }
|
getAgilite() { return this.getReve() }
|
||||||
getChance() { return this.getReve() }
|
getChance() { return this.getReve() }
|
||||||
@ -76,7 +64,6 @@ export class RdDEntite extends RdDBaseActorReve {
|
|||||||
}
|
}
|
||||||
return {}
|
return {}
|
||||||
}
|
}
|
||||||
|
|
||||||
async encaisser() {
|
async encaisser() {
|
||||||
if (this.isNonIncarnee()) {
|
if (this.isNonIncarnee()) {
|
||||||
return
|
return
|
||||||
|
@ -83,7 +83,6 @@ const MAPPING_BASE = [
|
|||||||
{ column: "protectionarmure", colName: 'Protection', getter: (actor, context) => Mapping.getProtectionArmure(actor, context) },
|
{ column: "protectionarmure", colName: 'Protection', getter: (actor, context) => Mapping.getProtectionArmure(actor, context) },
|
||||||
{ column: "malus_armure", getter: (actor, context) => Mapping.getMalusArmure(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: "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: "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: "endurance_actuel", rollClass: 'jet-endurance', getter: (actor, context) => actor.system.sante.endurance.value },
|
||||||
{ column: "esquive", getter: (actor, context) => Mapping.getEsquive(context) },
|
{ column: "esquive", getter: (actor, context) => Mapping.getEsquive(context) },
|
||||||
@ -279,7 +278,7 @@ export class Mapping {
|
|||||||
const race = ['', 'humain'].includes(Grammar.toLowerCaseNoAccent(actor.system.race)) ? '' : (actor.system.race + ' ')
|
const race = ['', 'humain'].includes(Grammar.toLowerCaseNoAccent(actor.system.race)) ? '' : (actor.system.race + ' ')
|
||||||
const heure = actor.system.heure
|
const heure = actor.system.heure
|
||||||
const hn = `${sexeFeminin} à l'heure ${RdDTimestamp.definition(heure).avecArticle}`
|
const hn = `${sexeFeminin} à l'heure ${RdDTimestamp.definition(heure).avecArticle}`
|
||||||
const age = (actor.system.age && actor.system.age >0) ? `${actor.system.age} ans` : undefined
|
const age = actor.system.age ? `${actor.system.age} ans` : undefined
|
||||||
const taille = actor.system.taille
|
const taille = actor.system.taille
|
||||||
const poids = actor.system.poids
|
const poids = actor.system.poids
|
||||||
const cheveux = actor.system.cheveux ? `cheveux ${actor.system.cheveux}` : undefined
|
const cheveux = actor.system.cheveux ? `cheveux ${actor.system.cheveux}` : undefined
|
||||||
|
@ -6,7 +6,6 @@ import { Grammar } from "../grammar.js";
|
|||||||
import { Misc } from "../misc.js";
|
import { Misc } from "../misc.js";
|
||||||
import { ENTITE_INCARNE, ENTITE_NONINCARNE } from "../constants.js";
|
import { ENTITE_INCARNE, ENTITE_NONINCARNE } from "../constants.js";
|
||||||
import { RdDItemTete } from "../item/tete.js";
|
import { RdDItemTete } from "../item/tete.js";
|
||||||
import { ITEM_TYPES } from "../item.js";
|
|
||||||
|
|
||||||
const WHITESPACES = "\\s+"
|
const WHITESPACES = "\\s+"
|
||||||
const NUMERIC = "[\\+\\-]?\\d+"
|
const NUMERIC = "[\\+\\-]?\\d+"
|
||||||
@ -27,7 +26,7 @@ const MANIEMENTS = {
|
|||||||
'de lancer': (weapon) => { return { name: weapon.system.lancer, categorie: 'lancer' } },
|
'de lancer': (weapon) => { return { name: weapon.system.lancer, categorie: 'lancer' } },
|
||||||
'de jet': (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' } },
|
'à une main': (weapon) => { return { name: weapon.system.competence, categorie: 'melee' } },
|
||||||
'à deux mains': (weapon) => { return { name: weapon.system.competence.replace("à 1 main", "à 2 mains"), categorie: 'melee' } },
|
'à deux main': (weapon) => { return { name: weapon.system.competence.replace("à 1 main", "à 2 main"), categorie: 'melee' } },
|
||||||
'mêlée': (weapon) => { return { name: weapon.system.competence, 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_WEAPON_MANIEMENT = "(?<maniement>(" + Misc.join(Object.keys(MANIEMENTS), '|') + "))"
|
||||||
@ -194,7 +193,6 @@ export class RdDStatBlockParser {
|
|||||||
|
|
||||||
let newActor = await RdDBaseActorReve.create({ name, type, system: actorData, items });
|
let newActor = await RdDBaseActorReve.create({ name, type, system: actorData, items });
|
||||||
await newActor.remiseANeuf()
|
await newActor.remiseANeuf()
|
||||||
await RdDStatBlockParser.adjustAttacks(newActor)
|
|
||||||
await RdDStatBlockParser.setValeursActuelles(newActor, statString)
|
await RdDStatBlockParser.setValeursActuelles(newActor, statString)
|
||||||
await newActor?.sheet.render(true)
|
await newActor?.sheet.render(true)
|
||||||
}
|
}
|
||||||
@ -269,7 +267,7 @@ export class RdDStatBlockParser {
|
|||||||
}
|
}
|
||||||
let weapMatch = XRegExp.exec(statString, XRegExp(weapon.name
|
let weapMatch = XRegExp.exec(statString, XRegExp(weapon.name
|
||||||
+ "(\\s*" + XREGEXP_WEAPON_MANIEMENT + ")?"
|
+ "(\\s*" + XREGEXP_WEAPON_MANIEMENT + ")?"
|
||||||
+ "\\s+(?<value>[\\+\\-]?\\d+)", 'giu'));
|
+ "\\s+(?<value>\\+\\d+)", 'giu'));
|
||||||
if (weapMatch) {
|
if (weapMatch) {
|
||||||
weapon = weapon.toObject();
|
weapon = weapon.toObject();
|
||||||
weapon.system.equipe = 'true';
|
weapon.system.equipe = 'true';
|
||||||
@ -298,21 +296,6 @@ 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) {
|
static async setValeursActuelles(newActor, statString) {
|
||||||
const updates = {
|
const updates = {
|
||||||
}
|
}
|
||||||
@ -429,9 +412,9 @@ export class RdDStatBlockParser {
|
|||||||
actorData.taille = taille.value;
|
actorData.taille = taille.value;
|
||||||
}
|
}
|
||||||
// Get weight
|
// Get weight
|
||||||
const poids = XRegExp.exec(statString, XRegExp(",\\s+(?<value>\\d+)\\s+kg", 'giu'));
|
const poids = XRegExp.exec(statString, XRegExp("(?<value>\\d+ kg)", 'giu'));
|
||||||
if (poids?.value) {
|
if (poids?.value) {
|
||||||
actorData.poids = poids.value + ' kg';
|
actorData.poids = poids.value;
|
||||||
}
|
}
|
||||||
// Get cheveux
|
// Get cheveux
|
||||||
const cheveux = XRegExp.exec(statString, XRegExp("kg,\\s+(?<value>[A-Za-zÀ-ÖØ-öø-ÿ\\s\\-]+),\\s+yeux", 'giu'));
|
const cheveux = XRegExp.exec(statString, XRegExp("kg,\\s+(?<value>[A-Za-zÀ-ÖØ-öø-ÿ\\s\\-]+),\\s+yeux", 'giu'));
|
||||||
@ -452,7 +435,7 @@ export class RdDStatBlockParser {
|
|||||||
}
|
}
|
||||||
|
|
||||||
static parseCreature(statString, actorData) {
|
static parseCreature(statString, actorData) {
|
||||||
let protection = XRegExp.exec(statString, XRegExp("protection(\\s+naturelle)?\\s+(?<value>[\\-]?\\d+)", 'giu'));
|
let protection = XRegExp.exec(statString, XRegExp("protection\\s+(?<value>[\\-]?\\d+)", 'giu'));
|
||||||
if (protection?.value) {
|
if (protection?.value) {
|
||||||
actorData.attributs.protection.value = Number(protection.value);
|
actorData.attributs.protection.value = Number(protection.value);
|
||||||
}
|
}
|
||||||
@ -478,40 +461,33 @@ export class RdDStatBlockParser {
|
|||||||
}
|
}
|
||||||
|
|
||||||
static parseActorType(statString) {
|
static parseActorType(statString) {
|
||||||
let force = XRegExp.exec(statString, XRegExp("Force\\s+(?<value>[\\+\\-]?\\d+)", 'giu'))
|
let niveau = XRegExp.exec(statString, XRegExp("Niveau\\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'))
|
let perception = XRegExp.exec(statString, XRegExp("perception\\s+(?<value>\\d+)", 'giu'))
|
||||||
if (!force) {
|
if (perception?.value) {
|
||||||
return "entite"
|
|
||||||
}
|
|
||||||
if (!vue || perception) {
|
|
||||||
return "creature"
|
return "creature"
|
||||||
}
|
}
|
||||||
|
if (niveau?.value) {
|
||||||
|
return "entite"
|
||||||
|
}
|
||||||
return "personnage"
|
return "personnage"
|
||||||
}
|
}
|
||||||
|
|
||||||
static extractName(actorType, statString) {
|
static extractName(actorType, statString) {
|
||||||
if (actorType == "personnage") {
|
switch (actorType) {
|
||||||
|
case "personnage":
|
||||||
// Check if ',né le' is present
|
// Check if ',né le' is present
|
||||||
let namePersonnage = "Importé"
|
let namePersonnage = "Importé"
|
||||||
if (statString.includes(", né")) {
|
if (statString.includes(", né")) {
|
||||||
// Name is all string before first comma ','
|
// Name is all string before first comma ','
|
||||||
namePersonnage = XRegExp.exec(statString, XRegExp("(?<value>[\\p{Letter}\'\\-\\s\\d]+),", 'giu'));
|
namePersonnage = XRegExp.exec(statString, XRegExp("(?<value>[\\p{Letter}\\s\\d]+),", 'giu'));
|
||||||
} else {
|
} else {
|
||||||
namePersonnage = XRegExp.exec(statString, XRegExp("(?<value>[\\p{Letter}\'\\-\\s\\d]+)\\s+TAILLE", 'giu'));
|
namePersonnage = XRegExp.exec(statString, XRegExp("(?<value>[\\p{Letter}\\s\\d]+)\\s+TAILLE", 'giu'));
|
||||||
}
|
}
|
||||||
if (namePersonnage?.value) {
|
if (namePersonnage?.value) {
|
||||||
return Misc.upperFirst(namePersonnage?.value.toLowerCase());
|
return Misc.upperFirst(namePersonnage?.value);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const name = XRegExp.exec(statString, XRegExp("(?<value>.+)\\s+taille", 'giu'));
|
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é");
|
return Misc.upperFirst(name?.value || "Importé");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3,38 +3,38 @@ import { Misc } from "./misc.js";
|
|||||||
|
|
||||||
const TABLE_CARACTERISTIQUES_DERIVEES = {
|
const TABLE_CARACTERISTIQUES_DERIVEES = {
|
||||||
// xp: coût pour passer du niveau inférieur à ce niveau
|
// xp: coût pour passer du niveau inférieur à ce niveau
|
||||||
1: { xp: 3, niveau: -5, poids: "moins de 1kg", poidsMin: 0, poidsMax: 1, plusdom: -5, sconst: 0.5, sust: 0.1 },
|
1: { xp: 3, 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 },
|
2: { xp: 3, 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' },
|
3: { xp: 4, 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' },
|
4: { xp: 4, 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' },
|
5: { xp: 5, 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' },
|
6: { xp: 5, 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é' },
|
7: { xp: 6, 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é' },
|
8: { xp: 6, 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' },
|
9: { xp: 7, 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' },
|
10: { xp: 7, 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' },
|
11: { xp: 8, 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é' },
|
12: { xp: 8, 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' },
|
13: { xp: 9, 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' },
|
14: { xp: 9, 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' },
|
15: { xp: 10, 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' },
|
16: { xp: 20, 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 },
|
17: { xp: 30, 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 },
|
18: { xp: 40, 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 },
|
19: { xp: 50, 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 },
|
20: { xp: 60, 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 },
|
21: { xp: 70, 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 },
|
22: { xp: 80, 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 },
|
23: { xp: 90, 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 },
|
24: { xp: 100, 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 },
|
25: { xp: 110, 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 },
|
26: { xp: 120, 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 },
|
27: { xp: 130, 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 },
|
28: { xp: 140, 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 },
|
29: { xp: 150, 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 },
|
30: { xp: 160, 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 },
|
31: { xp: 170, 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 }
|
32: { xp: 180, poids: "1501-2000", poidsMin: 1501, poidsMax: 2000, plusdom: +11, sconst: 10, sust: 17 }
|
||||||
};
|
};
|
||||||
|
|
||||||
export class RdDCarac {
|
export class RdDCarac {
|
||||||
|
@ -752,6 +752,7 @@ export class RdDCombat {
|
|||||||
dialog.render(true);
|
dialog.render(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
_prepareAttaque(competence, arme) {
|
_prepareAttaque(competence, arme) {
|
||||||
let rollData = {
|
let rollData = {
|
||||||
|
@ -262,24 +262,7 @@ export class RdDUtility {
|
|||||||
'systems/foundryvtt-reve-de-dragon/templates/chat-signe-draconique-actor.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);
|
Handlebars.registerHelper('either', (a, b) => a ?? b);
|
||||||
// string manipulation
|
|
||||||
Handlebars.registerHelper('upperFirst', str => Misc.upperFirst(str ?? 'Null'));
|
Handlebars.registerHelper('upperFirst', str => Misc.upperFirst(str ?? 'Null'));
|
||||||
Handlebars.registerHelper('lowerFirst', str => Misc.lowerFirst(str ?? 'Null'));
|
Handlebars.registerHelper('lowerFirst', str => Misc.lowerFirst(str ?? 'Null'));
|
||||||
Handlebars.registerHelper('uppercase', str => str?.toUpperCase() ?? '');
|
Handlebars.registerHelper('uppercase', str => str?.toUpperCase() ?? '');
|
||||||
@ -289,52 +272,47 @@ export class RdDUtility {
|
|||||||
Handlebars.registerHelper('grammar-un', str => Grammar.articleIndetermine(str));
|
Handlebars.registerHelper('grammar-un', str => Grammar.articleIndetermine(str));
|
||||||
Handlebars.registerHelper('grammar-accord', (genre, ...args) => Grammar.accord(genre, args));
|
Handlebars.registerHelper('grammar-accord', (genre, ...args) => Grammar.accord(genre, args));
|
||||||
|
|
||||||
// math
|
Handlebars.registerHelper('RDD_CONFIG', path => RDD_CONFIG[path])
|
||||||
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('computeResolutionScore', (row, col) => RdDResolutionTable.computePercentage(row, col));
|
||||||
Handlebars.registerHelper('computeResolutionChances', (row, col) => RdDResolutionTable.computeChances(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-imgSigneHeure', (heure) => { return new Handlebars.SafeString(RdDTimestamp.imgSigneHeure(heure)) });
|
||||||
Handlebars.registerHelper('timestamp-imgSigne', (heure) => { return new Handlebars.SafeString(RdDTimestamp.imgSigne(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-extract', timestamp => new RdDTimestamp(timestamp).toCalendrier());
|
||||||
Handlebars.registerHelper('timestamp-formulesDuree', () => RdDTimestamp.formulesDuree());
|
Handlebars.registerHelper('timestamp-formulesDuree', () => RdDTimestamp.formulesDuree());
|
||||||
Handlebars.registerHelper('timestamp-formulesPeriode', () => RdDTimestamp.formulesPeriode());
|
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('actor-default', (actorType, ...path) => RdDBaseActor.getDefaultValue(actorType, path.slice(0, -1)));
|
||||||
Handlebars.registerHelper('filtreTriCompetences', competences => RdDItemCompetence.triVisible(competences));
|
|
||||||
Handlebars.registerHelper('experienceLog-topic', topic => ExperienceLog.labelTopic(topic));
|
|
||||||
|
|
||||||
// inventaire et marchands
|
Handlebars.registerHelper('array-includes', (array, value) => array.includes(value));
|
||||||
Handlebars.registerHelper('buildLigneInventaire', (item, options) => { return new Handlebars.SafeString(RdDUtility.buildLigneInventaire(item, options)); });
|
Handlebars.registerHelper('min', (...args) => Math.min(...args.slice(0, -1)));
|
||||||
Handlebars.registerHelper('buildInventaireConteneur', (actorId, itemId, options) => { return new Handlebars.SafeString(RdDUtility.buildInventaireConteneur(actorId, itemId, options)); });
|
Handlebars.registerHelper('isLastIndex', (index, list) => index + 1 >= list.length);
|
||||||
Handlebars.registerHelper('buildContenuConteneur', (item, options) => { return new Handlebars.SafeString(RdDUtility.buildContenuConteneur(item, options)); });
|
Handlebars.registerHelper('regle-optionnelle', (option) => ReglesOptionnelles.isUsing(option));
|
||||||
Handlebars.registerHelper('calculerPrixCommercant', item => item.calculerPrixCommercant());
|
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('uniteQuantite', (itemId, actorId) => RdDUtility.getItem(itemId, actorId)?.getUniteQuantite());
|
||||||
Handlebars.registerHelper('isFieldInventaireModifiable', (type, field) => RdDItem.isFieldInventaireModifiable(type, field));
|
Handlebars.registerHelper('isFieldInventaireModifiable', (type, field) => RdDItem.isFieldInventaireModifiable(type, field));
|
||||||
// Items
|
|
||||||
Handlebars.registerHelper('rarete-getChamp', (rarete, field) => RdDRaretes.getChamp(rarete, field));
|
Handlebars.registerHelper('rarete-getChamp', (rarete, field) => RdDRaretes.getChamp(rarete, field));
|
||||||
|
|
||||||
// TMRs
|
Handlebars.registerHelper('plusMoins', diff => (diff > 0 ? '+' : '') + Math.round(diff))
|
||||||
Handlebars.registerHelper('caseTmr-label', coord => TMRUtility.getTMRLabel(coord));
|
Handlebars.registerHelper('experienceLog-topic', topic => ExperienceLog.labelTopic(topic));
|
||||||
Handlebars.registerHelper('caseTmr-type', coord => TMRUtility.getTMRType(coord));
|
|
||||||
Handlebars.registerHelper('typeTmr-name', type => TMRUtility.typeTmrName(type));
|
// Handle v12 removal of this helper
|
||||||
Handlebars.registerHelper('effetRencontre-name', coord => TMRUtility.typeTmrName(coord));
|
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");
|
||||||
|
});
|
||||||
|
|
||||||
return loadTemplates(templatePaths);
|
return loadTemplates(templatePaths);
|
||||||
}
|
}
|
||||||
|
@ -14,14 +14,13 @@ export class Targets {
|
|||||||
return {
|
return {
|
||||||
id: target?.id,
|
id: target?.id,
|
||||||
name: target?.document.name,
|
name: target?.document.name,
|
||||||
img: target?.document.texture.src ?? target?.actor.img ?? 'icons/svg/mystery-man.svg'
|
img: target?.document.texture.src ?? target?.actor.img ?? 'icons/svg/mystery-man.svg',
|
||||||
|
target
|
||||||
|
};
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
static buildActorTokenData(tokenId, actor) {
|
static buildActorTokenData(tokenId, actor) {
|
||||||
return { id: tokenId, name: actor.name, img: actor.img ?? 'icons/svg/mystery-man.svg' };
|
return { id: tokenId, name: actor.name, img: actor.img ?? 'icons/svg/mystery-man.svg' };
|
||||||
}
|
}
|
||||||
|
|
||||||
static isTargetEntite(target) {
|
static isTargetEntite(target) {
|
||||||
return target?.actor.type == 'entite' && target?.actor.system.definition.typeentite == ENTITE_NONINCARNE;
|
return target?.actor.type == 'entite' && target?.actor.system.definition.typeentite == ENTITE_NONINCARNE;
|
||||||
}
|
}
|
||||||
|
@ -257,8 +257,47 @@ system:
|
|||||||
dévore.</p>
|
dévore.</p>
|
||||||
|
|
||||||
<h1>Venin</h1>
|
<h1>Venin</h1>
|
||||||
<p>@UUID[Compendium.foundryvtt-reve-de-dragon.maladies-et-poisons.Item.v7yZidE9mObKO566]{Venin d'Araflate}</p>
|
|
||||||
<p></p>
|
<table style="width: 65.039%; height: 65px;" border="1">
|
||||||
|
|
||||||
|
<tbody>
|
||||||
|
|
||||||
|
<tr style="height: 16px;">
|
||||||
|
|
||||||
|
<td style="width: 30.8567%; height: 16px;">Malignité</td>
|
||||||
|
|
||||||
|
<td style="width: 68.3263%; height: 16px;">6</td>
|
||||||
|
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr style="height: 16px;">
|
||||||
|
|
||||||
|
<td style="width: 30.8567%; height: 16px;">Périodicité</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>
|
||||||
race: ''
|
race: ''
|
||||||
notesmj: ''
|
notesmj: ''
|
||||||
ownership:
|
ownership:
|
||||||
|
@ -227,8 +227,47 @@ system:
|
|||||||
que vous nous faites un peu peur ?</p>
|
que vous nous faites un peu peur ?</p>
|
||||||
|
|
||||||
<h1>Venin</h1>
|
<h1>Venin</h1>
|
||||||
<p>@UUID[Compendium.foundryvtt-reve-de-dragon.maladies-et-poisons.Item.cFMUtU6LZG0mKeDl]{Venin de chrasme}</p>
|
|
||||||
<p></p>
|
<table style="width: 399px; height: 65px;" border="1">
|
||||||
|
|
||||||
|
<tbody>
|
||||||
|
|
||||||
|
<tr style="height: 16px;">
|
||||||
|
|
||||||
|
<td style="width: 121px; height: 16px;">Malignité</td>
|
||||||
|
|
||||||
|
<td style="width: 274px; height: 16px;">3</td>
|
||||||
|
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr style="height: 16px;">
|
||||||
|
|
||||||
|
<td style="width: 121px; height: 16px;">Périodicité</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>
|
||||||
race: ''
|
race: ''
|
||||||
notesmj: ''
|
notesmj: ''
|
||||||
ownership:
|
ownership:
|
||||||
|
@ -257,7 +257,56 @@ system:
|
|||||||
|
|
||||||
<h1 style="box-sizing: border-box; user-select: text; color: #191813;
|
<h1 style="box-sizing: border-box; user-select: text; color: #191813;
|
||||||
font-family: GoudyAcc, sans-serif;">Venin</h1>
|
font-family: GoudyAcc, sans-serif;">Venin</h1>
|
||||||
<p>@UUID[Compendium.foundryvtt-reve-de-dragon.maladies-et-poisons.Item.IF19EUvrY1HL87lr]{Venin paralysant de goule}</p>
|
|
||||||
|
<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é</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ériodicité</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>La paralysie intervient quand toutes les lignes de fatigue sont pleines
|
<p>La paralysie intervient quand toutes les lignes de fatigue sont pleines
|
||||||
et dure 6 heures.</p>
|
et dure 6 heures.</p>
|
||||||
|
@ -219,8 +219,50 @@ system:
|
|||||||
attaque dès qu’il est surpris ou se croit en danger.</p>
|
attaque dès qu’il est surpris ou se croit en danger.</p>
|
||||||
|
|
||||||
<h1>Venin</h1>
|
<h1>Venin</h1>
|
||||||
<p>@UUID[Compendium.foundryvtt-reve-de-dragon.maladies-et-poisons.Item.iwlN0bNJ5XNNfjgj]{Venin de scologriffe}</p>
|
|
||||||
<p></p>
|
<p>Sensation aiguë de déséquilibre. Jouer VOLONTÉ
|
||||||
|
à -3. En cas d’échec, on chute sans parvenir à se
|
||||||
|
relever.</p>
|
||||||
|
|
||||||
|
<table style="width: 59.506%;" border="1">
|
||||||
|
|
||||||
|
<tbody>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
|
||||||
|
<td style="width: 21.6667%;">Malignité</td>
|
||||||
|
|
||||||
|
<td style="width: 77.5%;">3</td>
|
||||||
|
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
|
||||||
|
<td style="width: 21.6667%;">Périodicité</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ïne +8</td>
|
||||||
|
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
</tbody>
|
||||||
|
|
||||||
|
</table>
|
||||||
race: ''
|
race: ''
|
||||||
notesmj: ''
|
notesmj: ''
|
||||||
ownership:
|
ownership:
|
||||||
|
@ -215,8 +215,47 @@ system:
|
|||||||
est mortel.</p>
|
est mortel.</p>
|
||||||
|
|
||||||
<h1>Venin</h1>
|
<h1>Venin</h1>
|
||||||
<p>@UUID[Compendium.foundryvtt-reve-de-dragon.maladies-et-poisons.Item.lUeNPc0ECKqHglbG]{Venin de vipère jaune}</p>
|
|
||||||
<p></p>
|
<table style="width: 61.5572%;" border="1">
|
||||||
|
|
||||||
|
<tbody>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
|
||||||
|
<td style="width: 21.1221%;">Malignité</td>
|
||||||
|
|
||||||
|
<td style="width: 78.0528%;">2</td>
|
||||||
|
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
|
||||||
|
<td style="width: 21.1221%;">Périodicité</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ïne
|
||||||
|
+10</td>
|
||||||
|
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
</tbody>
|
||||||
|
|
||||||
|
</table>
|
||||||
race: ''
|
race: ''
|
||||||
notesmj: ''
|
notesmj: ''
|
||||||
ownership:
|
ownership:
|
||||||
|
@ -6,7 +6,7 @@ _id: v7yZidE9mObKO566
|
|||||||
system:
|
system:
|
||||||
description: >-
|
description: >-
|
||||||
<p>Venin de l'araflate. Sa morsure inflige un venin anesthésiant,
|
<p>Venin de l'araflate. Sa morsure inflige un venin anesthésiant,
|
||||||
inoculé sur toute blessure sauf contusion/éraflure.</p>
|
inoculé sur toute blessure sauf contusion\ éraflure.</p>
|
||||||
|
|
||||||
<p>Chaque perte d’endurance s’accompagne de la fatigue
|
<p>Chaque perte d’endurance s’accompagne de la fatigue
|
||||||
équivalente. À zéro d’endurance, la victime est
|
équivalente. À zéro d’endurance, la victime est
|
||||||
|
@ -4,7 +4,7 @@ img: systems/foundryvtt-reve-de-dragon/icons/maladies_venins/venin.webp
|
|||||||
effects: []
|
effects: []
|
||||||
_id: cFMUtU6LZG0mKeDl
|
_id: cFMUtU6LZG0mKeDl
|
||||||
system:
|
system:
|
||||||
description: ''
|
description: <p>Venin du chrasme. </p>
|
||||||
descriptionmj: ''
|
descriptionmj: ''
|
||||||
temporel:
|
temporel:
|
||||||
debut:
|
debut:
|
||||||
|
@ -5,8 +5,10 @@ effects: []
|
|||||||
_id: iwlN0bNJ5XNNfjgj
|
_id: iwlN0bNJ5XNNfjgj
|
||||||
system:
|
system:
|
||||||
description: >-
|
description: >-
|
||||||
<p>Sensation aiguë de déséquilibre.
|
<p>Venin du scologriffe. Il provoque une sensation aiguë de
|
||||||
Jouer VOLONTÉ à -3. En cas d’échec, on chute
|
déséquilibre.</p>
|
||||||
|
|
||||||
|
<p>Jouer VOLONTÉ à -3. En cas d’échec, on chute
|
||||||
sans parvenir à se relever.</p>
|
sans parvenir à se relever.</p>
|
||||||
descriptionmj: ''
|
descriptionmj: ''
|
||||||
temporel:
|
temporel:
|
||||||
@ -24,7 +26,7 @@ system:
|
|||||||
nombre: 1
|
nombre: 1
|
||||||
remedesconnus: false
|
remedesconnus: false
|
||||||
remedes: '-3 \ Liqueur de Bagdol +16 Topazoïne +8'
|
remedes: '-3 \ Liqueur de Bagdol +16 Topazoïne +8'
|
||||||
dommages: 1 pt de Vie, sensation de déséquilibre
|
dommages: 1 pt de Vie
|
||||||
periodicite: 1 minute
|
periodicite: 1 minute
|
||||||
ownership:
|
ownership:
|
||||||
default: 0
|
default: 0
|
||||||
|
@ -4,7 +4,7 @@ img: systems/foundryvtt-reve-de-dragon/icons/maladies_venins/venin.webp
|
|||||||
effects: []
|
effects: []
|
||||||
_id: lUeNPc0ECKqHglbG
|
_id: lUeNPc0ECKqHglbG
|
||||||
system:
|
system:
|
||||||
description: ''
|
description: <p>Venin de la vipère jaune. Il provoque des spasmes musculaires.</p>
|
||||||
descriptionmj: ''
|
descriptionmj: ''
|
||||||
temporel:
|
temporel:
|
||||||
debut:
|
debut:
|
||||||
@ -21,7 +21,7 @@ system:
|
|||||||
nombre: 6
|
nombre: 6
|
||||||
remedesconnus: false
|
remedesconnus: false
|
||||||
remedes: '-3\ Liqueur de Bagdol +14, Topazoïne +10'
|
remedes: '-3\ Liqueur de Bagdol +14, Topazoïne +10'
|
||||||
dommages: 1 pt de Vie, spasmes musculaires
|
dommages: 1 pt de Vie
|
||||||
periodicite: 6 rounds
|
periodicite: 6 rounds
|
||||||
ownership:
|
ownership:
|
||||||
default: 0
|
default: 0
|
||||||
|
@ -6,8 +6,9 @@ effects: []
|
|||||||
system:
|
system:
|
||||||
description: >-
|
description: >-
|
||||||
<p>Ce sort ne peut être recherché/synthétisé qu’en ayant compris le
|
<p>Ce sort ne peut être recherché/synthétisé qu’en ayant compris le
|
||||||
@UUID[Compendium.foundryvtt-reve-de-dragon.meditations-et-ecrits.Item.aFTL3ynBabEUHdP3]{Le Paradoxe de l’Immobilité Rapide}
|
@Item[u2izNaMF2bnwHAwj]{Le Paradoxe de l’Immobilité Rapide} tel qu’énoncé
|
||||||
tel qu’énoncé par Wanister de Bravo.</p>
|
par Wanister de Bravo.</p>
|
||||||
|
|
||||||
<p>Ce sort permet de monter en TMR et d’y demeurer tout en n’étant qu’à demi
|
<p>Ce sort permet de monter en TMR et d’y demeurer tout en n’étant qu’à demi
|
||||||
libre de ses mouvements : à cheval, secoué dans une voiture, en bateau, etc.
|
libre de ses mouvements : à cheval, secoué dans une voiture, en bateau, etc.
|
||||||
Il est également possible, sous l’effet de Concentration, de monter en TMR
|
Il est également possible, sous l’effet de Concentration, de monter en TMR
|
||||||
|
@ -6,7 +6,7 @@ effects: []
|
|||||||
system:
|
system:
|
||||||
description: >-
|
description: >-
|
||||||
<p>Ce sort ne peut être recherché/synthétisé qu’en ayant compris le sens
|
<p>Ce sort ne peut être recherché/synthétisé qu’en ayant compris le sens
|
||||||
caché du @UUID[Compendium.foundryvtt-reve-de-dragon.meditations-et-ecrits.Item.3ya2og0wNFKHZs3Q]{Premier Chant Dérisoire} de Yester
|
caché du @Item[qdyYSktETI8mKY6Z]{Premier Chant Dérisoire} de Yester
|
||||||
l’Ancien</p>
|
l’Ancien</p>
|
||||||
|
|
||||||
<p>Cette illusion visuelle donne à la cible un air comique, drôle,
|
<p>Cette illusion visuelle donne à la cible un air comique, drôle,
|
||||||
|
@ -18,7 +18,7 @@ system:
|
|||||||
|
|
||||||
<p>Ce rituel permet d’entendre à distance. Il doit être ciblé sur un
|
<p>Ce rituel permet d’entendre à distance. Il doit être ciblé sur un
|
||||||
instrument sonore (harpe, luth, gong, cloche, etc.) faute de quoi l’on
|
instrument sonore (harpe, luth, gong, cloche, etc.) faute de quoi l’on
|
||||||
aboutit à un cas de @UUID[Compendium.foundryvtt-reve-de-dragon.rappel-des-regles.JournalEntry.erO7AICiN1LtRyFg]{Magie impossible}. Lors
|
aboutit à un cas de @JournalEntry[eANDHKJXMPmPNJ2F]{Magie impossible}. Lors
|
||||||
du lancer, le rituel doit être paramétré sur une personne précise
|
du lancer, le rituel doit être paramétré sur une personne précise
|
||||||
(humanoïde) ou un lieu architectural précis (salle, couloir, perron,
|
(humanoïde) ou un lieu architectural précis (salle, couloir, perron,
|
||||||
escalier, balcon, etc.). Les éléments naturels du paysage (rochers, arbres,
|
escalier, balcon, etc.). Les éléments naturels du paysage (rochers, arbres,
|
||||||
|
@ -13,7 +13,7 @@ system:
|
|||||||
l’information n’est plus transmise au cerveau. Toutefois, dès qu’un conflit
|
l’information n’est plus transmise au cerveau. Toutefois, dès qu’un conflit
|
||||||
survient avec l’un des quatre autres sens, une brume limbaire apparaît à la
|
survient avec l’un des quatre autres sens, une brume limbaire apparaît à la
|
||||||
place de la cible, affectant grossièrement la forme de cette dernière (voir
|
place de la cible, affectant grossièrement la forme de cette dernière (voir
|
||||||
@UUID[Compendium.foundryvtt-reve-de-dragon.rappel-des-regles.JournalEntry.ZmMoOtUdgjMd4cNs]{Conflit de sens}). Le sort n’affecte
|
@JournalEntry[9bvrfDaudPqvQZPY]{Conflit de sens}). Le sort n’affecte
|
||||||
rigoureusement que la cible dans sa catégorie. Lancé sur un humanoïde, il
|
rigoureusement que la cible dans sa catégorie. Lancé sur un humanoïde, il
|
||||||
rend son corps invisible, mais pas son équipement. Pour bénéficier d’une
|
rend son corps invisible, mais pas son équipement. Pour bénéficier d’une
|
||||||
réelle invisibilité, un humanoïde doit être intégralement nu, ou bien
|
réelle invisibilité, un humanoïde doit être intégralement nu, ou bien
|
||||||
|
@ -17,11 +17,9 @@ system:
|
|||||||
points de rêve sont tout de même dépensés.</p>
|
points de rêve sont tout de même dépensés.</p>
|
||||||
|
|
||||||
<p>La perfection de ce rituel opère la synthèse de
|
<p>La perfection de ce rituel opère la synthèse de
|
||||||
@UUID[Compendium.foundryvtt-reve-de-dragon.sorts-hypnos.Item.8qdOVBr3S7AhRsJw]{Miroir d'Hypnos},
|
@Item[Ew5JzQ2lzcpGoF11]{Miroir d'Hypnos}, @Item[M99MFM5GalPJxIdW]{Harpe
|
||||||
@UUID[Compendium.foundryvtt-reve-de-dragon.sorts-hypnos.Item.DvP1kqAtGpr5Kux2]{Harpe d'Hypnos},
|
d'Hypnos}, @Item[phT9NLxLGFQp5CSI]{Invoquer sa voix}
|
||||||
@UUID[phT9Compendium.foundryvtt-reve-de-dragon.sorts-hypnos.Item.1PskCeKgFa9XiKoS]{Invoquer sa voix} et
|
et@Item[vygR045EwEOsNqJl]{Invoquer son image}. Paramétrage et ciblage
|
||||||
@UUID[Compendium.foundryvtt-reve-de-dragon.sorts-hypnos.Item.cghxHRstw7cXLEm4]{Invoquer son image}.
|
|
||||||
Paramétrage et ciblage
|
|
||||||
obéissent aux mêmes conditions et restrictions que Miroir d’Hypnos, avec
|
obéissent aux mêmes conditions et restrictions que Miroir d’Hypnos, avec
|
||||||
magie impossible en cas de ciblage ailleurs que sur un miroir. Dès que les
|
magie impossible en cas de ciblage ailleurs que sur un miroir. Dès que les
|
||||||
formes y bougent et que l’état hypnotique commence, le haut-rêvant voit la
|
formes y bougent et que l’état hypnotique commence, le haut-rêvant voit la
|
||||||
|
@ -16,9 +16,8 @@ system:
|
|||||||
celle-ci est morte ou a changé de rêve, aucun effet ne se produit, mais les
|
celle-ci est morte ou a changé de rêve, aucun effet ne se produit, mais les
|
||||||
points de rêve sont tout de même dépensés.</p>
|
points de rêve sont tout de même dépensés.</p>
|
||||||
|
|
||||||
<p>Ce rituel est comme le négatif de
|
<p>Ce rituel est comme le négatif de @Item[Ew5JzQ2lzcpGoF11]{Miroir
|
||||||
@UUID[Compendium.foundryvtt-reve-de-dragon.sorts-hypnos.Item.8qdOVBr3S7AhRsJw]{Miroir d'Hypnos}.
|
d'Hypnos}. Les conditions de ciblage et de paramétrage en sont exactement
|
||||||
Les conditions de ciblage et de paramétrage en sont exactement
|
|
||||||
les mêmes. Lorsqu’un mouvement apparaît au centre du miroir, provoquant
|
les mêmes. Lorsqu’un mouvement apparaît au centre du miroir, provoquant
|
||||||
l’état hypnotique, le haut-rêvant peut commencer à effectuer des gestes, des
|
l’état hypnotique, le haut-rêvant peut commencer à effectuer des gestes, des
|
||||||
mimiques, ou montrer ostensiblement un objet qu’il tient sur lui, mais sans
|
mimiques, ou montrer ostensiblement un objet qu’il tient sur lui, mais sans
|
||||||
|
@ -10,9 +10,8 @@ system:
|
|||||||
aliments et aux boissons. Par définition, la catégorie est toujours la même
|
aliments et aux boissons. Par définition, la catégorie est toujours la même
|
||||||
: objet en objet. L’intensité de la saveur est celle de la cible. Comme pour
|
: objet en objet. L’intensité de la saveur est celle de la cible. Comme pour
|
||||||
tous les sorts d’illusions sensorielles, la saveur illusoire ne peut être
|
tous les sorts d’illusions sensorielles, la saveur illusoire ne peut être
|
||||||
qu’une saveur connue du haut-rêvant. Couplé à @UUID[Compendium.foundryvtt-reve-de-dragon.sorts-hypnos.Item.nNh8N9nF8m6zLtrt]{Narine
|
qu’une saveur connue du haut-rêvant. Couplé à @Item[dEs7qg5UsqpQxok6]{Narine
|
||||||
d'Hypnos} et à @UUID[Compendium.foundryvtt-reve-de-dragon.sorts-hypnos.Item.ktFI49xqZ0mGfTzt]{Transfiguration},
|
d'Hypnos} et à @Item[skPIvFb5tRRPHDGU]{Transfiguration}, ce sort peut
|
||||||
ce sort peut
|
|
||||||
permettre des ignominies gastronomiques : que pensez- vous de ce vin à la
|
permettre des ignominies gastronomiques : que pensez- vous de ce vin à la
|
||||||
robe de rubis, au savoureux bouquet de framboise, et qui vous roule sur la
|
robe de rubis, au savoureux bouquet de framboise, et qui vous roule sur la
|
||||||
langue comme du velours ?... Illusion de bout en bout, ce n’est que de l’eau
|
langue comme du velours ?... Illusion de bout en bout, ce n’est que de l’eau
|
||||||
|
@ -18,7 +18,7 @@ system:
|
|||||||
|
|
||||||
<p>Ce rituel permet de voir à distance. Il doit être ciblé sur un miroir ou
|
<p>Ce rituel permet de voir à distance. Il doit être ciblé sur un miroir ou
|
||||||
une surface réfléchissante, comme de l’eau parfaitement calme, faute de quoi
|
une surface réfléchissante, comme de l’eau parfaitement calme, faute de quoi
|
||||||
l’on aboutit à un cas de @UUID[Compendium.foundryvtt-reve-de-dragon.rappel-des-regles.JournalEntry.erO7AICiN1LtRyFg]{Magie impossible}.
|
l’on aboutit à un cas de @JournalEntry[eANDHKJXMPmPNJ2F]{Magie impossible}.
|
||||||
Lors du lancer, le rituel doit être paramétré sur une personne ou un lieu
|
Lors du lancer, le rituel doit être paramétré sur une personne ou un lieu
|
||||||
architectural précis, mêmes restrictions que pour Harpe d’Hypnos. Puis le
|
architectural précis, mêmes restrictions que pour Harpe d’Hypnos. Puis le
|
||||||
sort étant ciblé sur le miroir, le haut-rêvant croit voir y évoluer des
|
sort étant ciblé sur le miroir, le haut-rêvant croit voir y évoluer des
|
||||||
|
@ -6,7 +6,7 @@ effects: []
|
|||||||
system:
|
system:
|
||||||
description: >-
|
description: >-
|
||||||
<p>Narine d’Hypnos est une illusion purement <em>olfactive</em>. Son
|
<p>Narine d’Hypnos est une illusion purement <em>olfactive</em>. Son
|
||||||
fonctionnement est identique à @UUID[Compendium.foundryvtt-reve-de-dragon.sorts-hypnos.Item.D9eSbTGp3i5gdbc5]{Tympan d'Hypnos},
|
fonctionnement est identique à @Item[QdtcV9WVi9BdL153]{Tympan d'Hypnos},
|
||||||
s’appliquant aux odeurs à la place des sons. L’illusion doit pareillement
|
s’appliquant aux odeurs à la place des sons. L’illusion doit pareillement
|
||||||
rester dans la même catégorie que la cible. Peu utilisé sur les humanoïdes
|
rester dans la même catégorie que la cible. Peu utilisé sur les humanoïdes
|
||||||
et les animaux, à moins d’avoir une raison très précise de vouloir qu’un
|
et les animaux, à moins d’avoir une raison très précise de vouloir qu’un
|
||||||
|
@ -5,7 +5,7 @@ img: systems/foundryvtt-reve-de-dragon/icons/competence_hypnos.webp
|
|||||||
effects: []
|
effects: []
|
||||||
system:
|
system:
|
||||||
description: >-
|
description: >-
|
||||||
<p>Comme @UUID[Compendium.foundryvtt-reve-de-dragon.sorts-hypnos.Item.7eeKT1BbsGdyY1GL]{Robe d'Hypnos}, cette illusion visuelle
|
<p>Comme @Item[viSBXe0CnbRI1O2J]{Robe d'Hypnos}, cette illusion visuelle
|
||||||
s’applique à tout ce qui est porté par la cible au moment du ciblage.
|
s’applique à tout ce qui est porté par la cible au moment du ciblage.
|
||||||
Vêtements et équipement deviennent invisibles : le résultat est que la cible
|
Vêtements et équipement deviennent invisibles : le résultat est que la cible
|
||||||
semble nue.</p>
|
semble nue.</p>
|
||||||
@ -17,7 +17,7 @@ system:
|
|||||||
<p>La nudité résultante n’est elle-même qu’une illusion. Un corps nu
|
<p>La nudité résultante n’est elle-même qu’une illusion. Un corps nu
|
||||||
apparaît, vraisemblable, mais sans pour autant que ce soit exactement celui
|
apparaît, vraisemblable, mais sans pour autant que ce soit exactement celui
|
||||||
de la cible. Toucher ce corps nu entraîne évidemment un
|
de la cible. Toucher ce corps nu entraîne évidemment un
|
||||||
@UUID[Compendium.foundryvtt-reve-de-dragon.rappel-des-regles.JournalEntry.ZmMoOtUdgjMd4cNs]{Conflit de sens} et une brume limbaire.</p>
|
@JournalEntry[9bvrfDaudPqvQZPY]{Conflit de sens} et une brume limbaire.</p>
|
||||||
|
|
||||||
<p>Tout vêtement retiré, cessant d’être en contact avec la cible, redevient
|
<p>Tout vêtement retiré, cessant d’être en contact avec la cible, redevient
|
||||||
visible quant à lui, mais n’altère pas l’illusion de nudité. (On ne saurait
|
visible quant à lui, mais n’altère pas l’illusion de nudité. (On ne saurait
|
||||||
|
@ -47,7 +47,7 @@ system:
|
|||||||
<li>Si l’on prévoit qu’une pièce d’équipement va cesser à un moment d’être
|
<li>Si l’on prévoit qu’une pièce d’équipement va cesser à un moment d’être
|
||||||
en contact avec la cible et que l’on désire que son illusion perdure,
|
en contact avec la cible et que l’on désire que son illusion perdure,
|
||||||
utiliser conjointement à son sujet le sort standard de
|
utiliser conjointement à son sujet le sort standard de
|
||||||
@UUID[Compendium.foundryvtt-reve-de-dragon.sorts-hypnos.Item.ktFI49xqZ0mGfTzt]{Transfiguration}.</li>
|
@Item[skPIvFb5tRRPHDGU]{Transfiguration}.</li>
|
||||||
|
|
||||||
</ul>
|
</ul>
|
||||||
descriptionmj: ''
|
descriptionmj: ''
|
||||||
|
@ -6,7 +6,7 @@ effects: []
|
|||||||
system:
|
system:
|
||||||
description: >-
|
description: >-
|
||||||
<p>Cette illusion visuelle ne peut être lancée que sur un humanoïde nu ou
|
<p>Cette illusion visuelle ne peut être lancée que sur un humanoïde nu ou
|
||||||
étant préalablement sous l’effet de @UUID[Compendium.foundryvtt-reve-de-dragon.sorts-hypnos.Item.o99y8VPp7x2mGbaU]{Nudité
|
étant préalablement sous l’effet de @Item[m2pwvCCImJnbKVcW]{Nudité
|
||||||
d'Hypnos}. Il est alors possible de lui inventer tous les vêtements
|
d'Hypnos}. Il est alors possible de lui inventer tous les vêtements
|
||||||
imaginables, couvrant plus ou moins totalement son corps, y compris une
|
imaginables, couvrant plus ou moins totalement son corps, y compris une
|
||||||
armure. Des pièces d’équipement illusoires sont également possibles, armes,
|
armure. Des pièces d’équipement illusoires sont également possibles, armes,
|
||||||
@ -16,13 +16,12 @@ system:
|
|||||||
sort n’a aucun effet mais les points de rêve sont dépensés quand même.</p>
|
sort n’a aucun effet mais les points de rêve sont dépensés quand même.</p>
|
||||||
|
|
||||||
<p>Si la cible est réellement nue, seul le fait de la toucher peut générer
|
<p>Si la cible est réellement nue, seul le fait de la toucher peut générer
|
||||||
un @UUID[Compendium.foundryvtt-reve-de-dragon.rappel-des-regles.JournalEntry.ZmMoOtUdgjMd4cNs]{Conflit de sens} et une brume limbaire,
|
un @JournalEntry[9bvrfDaudPqvQZPY]{Conflit de sens} et une brume limbaire,
|
||||||
pas son comportement. En revanche, si sa nudité est illusoire, son
|
pas son comportement. En revanche, si sa nudité est illusoire, son
|
||||||
comportement peut générer un conflit de sens s’il y a contradiction entre
|
comportement peut générer un conflit de sens s’il y a contradiction entre
|
||||||
l’utilisation de son équipement réel (rendu invisible par
|
l’utilisation de son équipement réel (rendu invisible par
|
||||||
@UUID[Compendium.foundryvtt-reve-de-dragon.sorts-hypnos.Item.o99y8VPp7x2mGbaU]{Nudité
|
@Item[m2pwvCCImJnbKVcW]{Nudité d'Hypnos}) et son équipement illusoire (celui
|
||||||
d'Hypnos}) et son équipement illusoire (celui inventé par Robe
|
inventé par Robe Fantasmagorique).</p>
|
||||||
Fantasmagorique).</p>
|
|
||||||
descriptionmj: ''
|
descriptionmj: ''
|
||||||
draconic: Voie d'Hypnos
|
draconic: Voie d'Hypnos
|
||||||
duree: HN
|
duree: HN
|
||||||
|
@ -6,7 +6,7 @@ effects: []
|
|||||||
system:
|
system:
|
||||||
description: >-
|
description: >-
|
||||||
<p>L’illusion purement visuelle de Transfiguration fonctionne de la même
|
<p>L’illusion purement visuelle de Transfiguration fonctionne de la même
|
||||||
façon que @UUID[Compendium.foundryvtt-reve-de-dragon.sorts-hypnos.Item.OTtXNS1SnVfWWGKi]{Métamorphose}, sauf que l’illusion doit
|
façon que @Item[Z2U35toRL5nSBr1k]{Métamorphose}, sauf que l’illusion doit
|
||||||
rester dans la même catégorie que la cible : humanoïde en humanoïde, animal
|
rester dans la même catégorie que la cible : humanoïde en humanoïde, animal
|
||||||
en animal, végétal en végétal, ou objet en objet, exclusivement. Toute
|
en animal, végétal en végétal, ou objet en objet, exclusivement. Toute
|
||||||
disparité de catégorie entre la cible et l’illusion entraîne la dissipation
|
disparité de catégorie entre la cible et l’illusion entraîne la dissipation
|
||||||
|
@ -7,7 +7,7 @@ system:
|
|||||||
description: >-
|
description: >-
|
||||||
<p>Tympan d’Hypnos est une illusion purement <em>auditive </em>pouvant
|
<p>Tympan d’Hypnos est une illusion purement <em>auditive </em>pouvant
|
||||||
s’appliquer indifféremment à un humanoïde, un animal ou un objet. Comme pour
|
s’appliquer indifféremment à un humanoïde, un animal ou un objet. Comme pour
|
||||||
@UUID[Compendium.foundryvtt-reve-de-dragon.sorts-hypnos.Item.ktFI49xqZ0mGfTzt]{Transfiguration}, l’illusion doit toujours
|
@Item[skPIvFb5tRRPHDGU]{Transfiguration}, l’illusion doit toujours
|
||||||
appartenir à la même catégorie que la cible. Toute disparité entraîne les
|
appartenir à la même catégorie que la cible. Toute disparité entraîne les
|
||||||
mêmes conséquences. On peut ainsi changer la voix d’un humanoïde en une
|
mêmes conséquences. On peut ainsi changer la voix d’un humanoïde en une
|
||||||
autre <em>voix </em>d’humanoïde, le cri d’un animal en <em>cri </em>d’un
|
autre <em>voix </em>d’humanoïde, le cri d’un animal en <em>cri </em>d’un
|
||||||
@ -15,7 +15,7 @@ system:
|
|||||||
Tympan d’Hypnos sur un objet non sonore n’aboutit à aucun effet. Ce sort
|
Tympan d’Hypnos sur un objet non sonore n’aboutit à aucun effet. Ce sort
|
||||||
permet entre autres d’enrichir une illusion visuelle en lui apportant son
|
permet entre autres d’enrichir une illusion visuelle en lui apportant son
|
||||||
complément sonore, diminuant ainsi les risques de
|
complément sonore, diminuant ainsi les risques de
|
||||||
@UUID[Compendium.foundryvtt-reve-de-dragon.rappel-des-regles.JournalEntry.ZmMoOtUdgjMd4cNs]{Conflit de sens}. Le cri illusoire d’un
|
@JournalEntry[9bvrfDaudPqvQZPY]{Conflit de sens}. Le cri illusoire d’un
|
||||||
animal doit être le cri d’un animal connu, et vouloir donner à un humanoïde
|
animal doit être le cri d’un animal connu, et vouloir donner à un humanoïde
|
||||||
la même voix que quelqu’un d’autre demande un jet d’OUÏE à -8, avec les
|
la même voix que quelqu’un d’autre demande un jet d’OUÏE à -8, avec les
|
||||||
mêmes remarques que pour Transfiguration. Noter que seule la voix est
|
mêmes remarques que pour Transfiguration. Noter que seule la voix est
|
||||||
|
@ -5,7 +5,7 @@ img: systems/foundryvtt-reve-de-dragon/icons/competence_narcos.webp
|
|||||||
effects: []
|
effects: []
|
||||||
system:
|
system:
|
||||||
description: >-
|
description: >-
|
||||||
<p>Même principe que la @UUID[Compendium.foundryvtt-reve-de-dragon.sorts-narcos.Item.lq3jQDJsAflJ2PEy]{Flèche de Feu}.
|
<p>Même principe que la @Item[r9onPANmiK5E5Jnw]{Flèche de Feu}.
|
||||||
Une dague ainsi modifiée a un +dom de +4.</p>
|
Une dague ainsi modifiée a un +dom de +4.</p>
|
||||||
|
|
||||||
<p>La dague de force a une résistance absolue tant que dure
|
<p>La dague de force a une résistance absolue tant que dure
|
||||||
|
@ -5,8 +5,8 @@ img: systems/foundryvtt-reve-de-dragon/icons/competence_narcos.webp
|
|||||||
effects: []
|
effects: []
|
||||||
system:
|
system:
|
||||||
description: >-
|
description: >-
|
||||||
<p>Même principe que la @UUID[Compendium.foundryvtt-reve-de-dragon.sorts-narcos.Item.lq3jQDJsAflJ2PEy]{Flèche de Feu}
|
<p>Même principe que la@Item[r9onPANmiK5E5Jnw]{Flèche de Feu}
|
||||||
et la @UUID[Compendium.foundryvtt-reve-de-dragon.sorts-narcos.Item.0N6ILL5RMgmShyM8]{Dague de Force}, y compris la
|
et la @Item[8BJ9kn3AWLFDwvez]{Dague de Force}, y compris la
|
||||||
détérioration automatique de 1 point de résistance. Une
|
détérioration automatique de 1 point de résistance. Une
|
||||||
épée dragonne ainsi modifiée a un +dom de +6.</p>
|
épée dragonne ainsi modifiée a un +dom de +6.</p>
|
||||||
descriptionmj: ''
|
descriptionmj: ''
|
||||||
|
@ -9,7 +9,7 @@ system:
|
|||||||
description: >-
|
description: >-
|
||||||
<p>Les sorts d’Invulnérabilité Chromatique ne peuvent
|
<p>Les sorts d’Invulnérabilité Chromatique ne peuvent
|
||||||
être recherchés/synthétisés qu’en ayant
|
être recherchés/synthétisés qu’en ayant
|
||||||
compris le @UUID[Compendium.foundryvtt-reve-de-dragon.meditations-et-ecrits.Item.UoEHSr7Mcz4crdSF]{Le Principe Drachromatique} (voir Les
|
compris le @Item[5YK6q2KuKArkvDWy]{Le Principe Drachromatique} (voir Les
|
||||||
grimoires, p218).</p>
|
grimoires, p218).</p>
|
||||||
|
|
||||||
<p>Cette zone mobile personnelle, obéissant à toutes les
|
<p>Cette zone mobile personnelle, obéissant à toutes les
|
||||||
@ -27,8 +27,8 @@ system:
|
|||||||
protection chromatique au rouge r2 confère une protection de +2 ;
|
protection chromatique au rouge r2 confère une protection de +2 ;
|
||||||
celle au bleu r6 une protection de +6.</p>
|
celle au bleu r6 une protection de +6.</p>
|
||||||
|
|
||||||
<p>Ce sort est incompatible avec le rituel @UUID[Compendium.foundryvtt-reve-de-dragon.sorts-oniros.Item.K9lspVNJAJmCAQHB]{Haubert
|
<p>Ce sort est incompatible avec le rituel @Item[qW1vAyoqrvxG0tDn]{Haubert
|
||||||
d'Oniros}.</p>
|
d'Oniros (rituel)}.</p>
|
||||||
|
|
||||||
<p>Vêtements et équipement peuvent avoir été
|
<p>Vêtements et équipement peuvent avoir été
|
||||||
colorés dans la teinte voulue par une <em>Transmutation
|
colorés dans la teinte voulue par une <em>Transmutation
|
||||||
|
@ -7,7 +7,7 @@ system:
|
|||||||
description: >-
|
description: >-
|
||||||
<p>Les sorts d’Invulnérabilité Chromatique ne peuvent
|
<p>Les sorts d’Invulnérabilité Chromatique ne peuvent
|
||||||
être recherchés/synthétisés qu’en ayant
|
être recherchés/synthétisés qu’en ayant
|
||||||
compris le @UUID[Compendium.foundryvtt-reve-de-dragon.meditations-et-ecrits.Item.UoEHSr7Mcz4crdSF]{Le Principe Drachromatique} (voir Les
|
compris le @Item[5YK6q2KuKArkvDWy]{Le Principe Drachromatique} (voir Les
|
||||||
grimoires, p218).</p>
|
grimoires, p218).</p>
|
||||||
|
|
||||||
<p>Cette zone mobile personnelle, obéissant à toutes les
|
<p>Cette zone mobile personnelle, obéissant à toutes les
|
||||||
@ -25,8 +25,8 @@ system:
|
|||||||
protection chromatique au rouge r2 confère une protection de +2 ;
|
protection chromatique au rouge r2 confère une protection de +2 ;
|
||||||
celle au bleu r6 une protection de +6.</p>
|
celle au bleu r6 une protection de +6.</p>
|
||||||
|
|
||||||
<p>Ce sort est incompatible avec le rituel @UUID[Compendium.foundryvtt-reve-de-dragon.sorts-oniros.Item.K9lspVNJAJmCAQHB]{Haubert
|
<p>Ce sort est incompatible avec le rituel @Item[qW1vAyoqrvxG0tDn]{Haubert
|
||||||
d'Oniros}.</p>
|
d'Oniros (rituel)}.</p>
|
||||||
|
|
||||||
<p>Vêtements et équipement peuvent avoir été
|
<p>Vêtements et équipement peuvent avoir été
|
||||||
colorés dans la teinte voulue par une <em>Transmutation
|
colorés dans la teinte voulue par une <em>Transmutation
|
||||||
|
@ -7,7 +7,7 @@ system:
|
|||||||
description: >-
|
description: >-
|
||||||
<p>Les sorts d’Invulnérabilité Chromatique ne peuvent
|
<p>Les sorts d’Invulnérabilité Chromatique ne peuvent
|
||||||
être recherchés/synthétisés qu’en ayant
|
être recherchés/synthétisés qu’en ayant
|
||||||
compris le @UUID[Compendium.foundryvtt-reve-de-dragon.meditations-et-ecrits.Item.UoEHSr7Mcz4crdSF]{Le Principe Drachromatique} (voir Les
|
compris le @Item[5YK6q2KuKArkvDWy]{Le Principe Drachromatique} (voir Les
|
||||||
grimoires, p218).</p>
|
grimoires, p218).</p>
|
||||||
|
|
||||||
<p>Cette zone mobile personnelle, obéissant à toutes les
|
<p>Cette zone mobile personnelle, obéissant à toutes les
|
||||||
@ -25,8 +25,8 @@ system:
|
|||||||
protection chromatique au rouge r2 confère une protection de +2 ;
|
protection chromatique au rouge r2 confère une protection de +2 ;
|
||||||
celle au bleu r6 une protection de +6.</p>
|
celle au bleu r6 une protection de +6.</p>
|
||||||
|
|
||||||
<p>Ce sort est incompatible avec le rituel @UUID[Compendium.foundryvtt-reve-de-dragon.sorts-oniros.Item.K9lspVNJAJmCAQHB]{Haubert
|
<p>Ce sort est incompatible avec le rituel @Item[qW1vAyoqrvxG0tDn]{Haubert
|
||||||
d'Oniros}.</p>
|
d'Oniros (rituel)}.</p>
|
||||||
|
|
||||||
<p>Vêtements et équipement peuvent avoir été
|
<p>Vêtements et équipement peuvent avoir été
|
||||||
colorés dans la teinte voulue par une <em>Transmutation
|
colorés dans la teinte voulue par une <em>Transmutation
|
||||||
|
@ -7,7 +7,7 @@ system:
|
|||||||
description: >-
|
description: >-
|
||||||
<p>Les sorts d’Invulnérabilité Chromatique ne peuvent
|
<p>Les sorts d’Invulnérabilité Chromatique ne peuvent
|
||||||
être recherchés/synthétisés qu’en ayant
|
être recherchés/synthétisés qu’en ayant
|
||||||
compris le @UUID[Compendium.foundryvtt-reve-de-dragon.meditations-et-ecrits.Item.UoEHSr7Mcz4crdSF]{Le Principe Drachromatique} (voir Les
|
compris le @Item[5YK6q2KuKArkvDWy]{Le Principe Drachromatique} (voir Les
|
||||||
grimoires, p218).</p>
|
grimoires, p218).</p>
|
||||||
|
|
||||||
<p>Cette zone mobile personnelle, obéissant à toutes les
|
<p>Cette zone mobile personnelle, obéissant à toutes les
|
||||||
@ -25,8 +25,8 @@ system:
|
|||||||
protection chromatique au rouge r2 confère une protection de +2 ;
|
protection chromatique au rouge r2 confère une protection de +2 ;
|
||||||
celle au bleu r6 une protection de +6.</p>
|
celle au bleu r6 une protection de +6.</p>
|
||||||
|
|
||||||
<p>Ce sort est incompatible avec le rituel @UUID[Compendium.foundryvtt-reve-de-dragon.sorts-oniros.Item.K9lspVNJAJmCAQHB]{Haubert
|
<p>Ce sort est incompatible avec le rituel @Item[qW1vAyoqrvxG0tDn]{Haubert
|
||||||
d'Oniros}.</p>
|
d'Oniros (rituel)}.</p>
|
||||||
|
|
||||||
<p>Vêtements et équipement peuvent avoir été
|
<p>Vêtements et équipement peuvent avoir été
|
||||||
colorés dans la teinte voulue par une <em>Transmutation
|
colorés dans la teinte voulue par une <em>Transmutation
|
||||||
|
@ -7,7 +7,7 @@ system:
|
|||||||
description: >-
|
description: >-
|
||||||
<p>Les sorts d’Invulnérabilité Chromatique ne peuvent
|
<p>Les sorts d’Invulnérabilité Chromatique ne peuvent
|
||||||
être recherchés/synthétisés qu’en ayant
|
être recherchés/synthétisés qu’en ayant
|
||||||
compris le @UUID[Compendium.foundryvtt-reve-de-dragon.meditations-et-ecrits.Item.UoEHSr7Mcz4crdSF]{Le Principe Drachromatique} (voir Les
|
compris le @Item[5YK6q2KuKArkvDWy]{Le Principe Drachromatique} (voir Les
|
||||||
grimoires, p218).</p>
|
grimoires, p218).</p>
|
||||||
|
|
||||||
<p>Cette zone mobile personnelle, obéissant à toutes les
|
<p>Cette zone mobile personnelle, obéissant à toutes les
|
||||||
@ -25,8 +25,8 @@ system:
|
|||||||
protection chromatique au rouge r2 confère une protection de +2 ;
|
protection chromatique au rouge r2 confère une protection de +2 ;
|
||||||
celle au bleu r6 une protection de +6.</p>
|
celle au bleu r6 une protection de +6.</p>
|
||||||
|
|
||||||
<p>Ce sort est incompatible avec le rituel @UUID[Compendium.foundryvtt-reve-de-dragon.sorts-oniros.Item.K9lspVNJAJmCAQHB]{Haubert
|
<p>Ce sort est incompatible avec le rituel @Item[qW1vAyoqrvxG0tDn]{Haubert
|
||||||
d'Oniros}.</p>
|
d'Oniros (rituel)}.</p>
|
||||||
|
|
||||||
<p>Vêtements et équipement peuvent avoir été
|
<p>Vêtements et équipement peuvent avoir été
|
||||||
colorés dans la teinte voulue par une <em>Transmutation
|
colorés dans la teinte voulue par une <em>Transmutation
|
||||||
|
@ -22,7 +22,7 @@ system:
|
|||||||
<li>Visage et torse (+ épaules/bras/mains) : 4 m</li>
|
<li>Visage et torse (+ épaules/bras/mains) : 4 m</li>
|
||||||
|
|
||||||
<li>Nudité quasi totale : 8 m, comme une lanterne ou le sort de
|
<li>Nudité quasi totale : 8 m, comme une lanterne ou le sort de
|
||||||
@UUID[Compendium.foundryvtt-reve-de-dragon.sorts-oniros.Item.tuVJbePw7bmVs2pO]{Lanterne}.</li>
|
@Item[frNisNWwVXP8N5mn]{Lanterne}.</li>
|
||||||
|
|
||||||
</ul>
|
</ul>
|
||||||
descriptionmj: ''
|
descriptionmj: ''
|
||||||
|
@ -6,7 +6,7 @@ effects: []
|
|||||||
system:
|
system:
|
||||||
description: >-
|
description: >-
|
||||||
<p>La recherche des zones de Transmutation Chromatique requiert la
|
<p>La recherche des zones de Transmutation Chromatique requiert la
|
||||||
connaissance du @UUID[Compendium.foundryvtt-reve-de-dragon.meditations-et-ecrits.Item.UoEHSr7Mcz4crdSF]{Le Principe Drachromatique} (voir
|
connaissance du @Item[5YK6q2KuKArkvDWy]{Le Principe Drachromatique} (voir
|
||||||
Les grimoires, p218).</p>
|
Les grimoires, p218).</p>
|
||||||
|
|
||||||
<p>Les zones de Transmutation Chromatique modifient la couleur des objets
|
<p>Les zones de Transmutation Chromatique modifient la couleur des objets
|
||||||
|
@ -6,7 +6,7 @@ effects: []
|
|||||||
system:
|
system:
|
||||||
description: >-
|
description: >-
|
||||||
<p>La recherche des zones de Transmutation Chromatique requiert la
|
<p>La recherche des zones de Transmutation Chromatique requiert la
|
||||||
connaissance du @UUID[Compendium.foundryvtt-reve-de-dragon.meditations-et-ecrits.Item.UoEHSr7Mcz4crdSF]{Le Principe Drachromatique} (voir
|
connaissance du @Item[5YK6q2KuKArkvDWy]{Le Principe Drachromatique} (voir
|
||||||
Les grimoires, p218).</p>
|
Les grimoires, p218).</p>
|
||||||
|
|
||||||
<p>Les zones de Transmutation Chromatique modifient la couleur des objets
|
<p>Les zones de Transmutation Chromatique modifient la couleur des objets
|
||||||
|
@ -6,7 +6,7 @@ effects: []
|
|||||||
system:
|
system:
|
||||||
description: >-
|
description: >-
|
||||||
<p>La recherche des zones de Transmutation Chromatique requiert la
|
<p>La recherche des zones de Transmutation Chromatique requiert la
|
||||||
connaissance du @UUID[Compendium.foundryvtt-reve-de-dragon.meditations-et-ecrits.Item.UoEHSr7Mcz4crdSF]{Le Principe Drachromatique} (voir
|
connaissance du @Item[5YK6q2KuKArkvDWy]{Le Principe Drachromatique} (voir
|
||||||
Les grimoires, p218).</p>
|
Les grimoires, p218).</p>
|
||||||
|
|
||||||
<p>Les zones de Transmutation Chromatique modifient la couleur des objets
|
<p>Les zones de Transmutation Chromatique modifient la couleur des objets
|
||||||
|
@ -6,7 +6,7 @@ effects: []
|
|||||||
system:
|
system:
|
||||||
description: >-
|
description: >-
|
||||||
<p>La recherche des zones de Transmutation Chromatique requiert la
|
<p>La recherche des zones de Transmutation Chromatique requiert la
|
||||||
connaissance du @UUID[Compendium.foundryvtt-reve-de-dragon.meditations-et-ecrits.Item.UoEHSr7Mcz4crdSF]{Le Principe Drachromatique} (voir
|
connaissance du @Item[5YK6q2KuKArkvDWy]{Le Principe Drachromatique} (voir
|
||||||
Les grimoires, p218).</p>
|
Les grimoires, p218).</p>
|
||||||
|
|
||||||
<p>Les zones de Transmutation Chromatique modifient la couleur des objets
|
<p>Les zones de Transmutation Chromatique modifient la couleur des objets
|
||||||
|
@ -6,7 +6,7 @@ effects: []
|
|||||||
system:
|
system:
|
||||||
description: >-
|
description: >-
|
||||||
<p>La recherche des zones de Transmutation Chromatique requiert la
|
<p>La recherche des zones de Transmutation Chromatique requiert la
|
||||||
connaissance du @UUID[Compendium.foundryvtt-reve-de-dragon.meditations-et-ecrits.Item.UoEHSr7Mcz4crdSF]{Le Principe Drachromatique} (voir
|
connaissance du @Item[5YK6q2KuKArkvDWy]{Le Principe Drachromatique} (voir
|
||||||
Les grimoires, p218).</p>
|
Les grimoires, p218).</p>
|
||||||
|
|
||||||
<p>Les zones de Transmutation Chromatique modifient la couleur des objets
|
<p>Les zones de Transmutation Chromatique modifient la couleur des objets
|
||||||
|
@ -6,7 +6,7 @@ effects: []
|
|||||||
system:
|
system:
|
||||||
description: >-
|
description: >-
|
||||||
<p>La recherche des zones de Transmutation Chromatique requiert la
|
<p>La recherche des zones de Transmutation Chromatique requiert la
|
||||||
connaissance du @UUID[Compendium.foundryvtt-reve-de-dragon.meditations-et-ecrits.Item.UoEHSr7Mcz4crdSF]{Le Principe Drachromatique} (voir
|
connaissance du @Item[5YK6q2KuKArkvDWy]{Le Principe Drachromatique} (voir
|
||||||
Les grimoires, p218).</p>
|
Les grimoires, p218).</p>
|
||||||
|
|
||||||
<p>Les zones de Transmutation Chromatique modifient la couleur des objets
|
<p>Les zones de Transmutation Chromatique modifient la couleur des objets
|
||||||
|
@ -2146,8 +2146,8 @@ items:
|
|||||||
la même : objet en objet. L’intensité de la saveur est celle de la
|
la même : objet en objet. L’intensité de la saveur est celle de la
|
||||||
cible. Comme pour tous les sorts d’illusions sensorielles, la saveur
|
cible. Comme pour tous les sorts d’illusions sensorielles, la saveur
|
||||||
illusoire ne peut être qu’une saveur connue du haut-rêvant. Couplé à
|
illusoire ne peut être qu’une saveur connue du haut-rêvant. Couplé à
|
||||||
@UUID[Compendium.foundryvtt-reve-de-dragon.sorts-hypnos.Item.nNh8N9nF8m6zLtrt]{Narine d'Hypnos} et à
|
@Item[dEs7qg5UsqpQxok6]{Narine d'Hypnos} et à
|
||||||
@UUID[Compendium.foundryvtt-reve-de-dragon.sorts-hypnos.Item.ktFI49xqZ0mGfTzt]{Transfiguration}, ce sort peut permettre des
|
@Item[skPIvFb5tRRPHDGU]{Transfiguration}, ce sort peut permettre des
|
||||||
ignominies gastronomiques : que pensez- vous de ce vin à la robe de
|
ignominies gastronomiques : que pensez- vous de ce vin à la robe de
|
||||||
rubis, au savoureux bouquet de framboise, et qui vous roule sur la
|
rubis, au savoureux bouquet de framboise, et qui vous roule sur la
|
||||||
langue comme du velours ?... Illusion de bout en bout, ce n’est que de
|
langue comme du velours ?... Illusion de bout en bout, ce n’est que de
|
||||||
@ -2183,7 +2183,7 @@ items:
|
|||||||
system:
|
system:
|
||||||
description: >-
|
description: >-
|
||||||
<p>Narine d’Hypnos est une illusion purement <em>olfactive</em>. Son
|
<p>Narine d’Hypnos est une illusion purement <em>olfactive</em>. Son
|
||||||
fonctionnement est identique à @UUID[Compendium.foundryvtt-reve-de-dragon.sorts-hypnos.Item.D9eSbTGp3i5gdbc5]{Tympan d'Hypnos},
|
fonctionnement est identique à @Item[QdtcV9WVi9BdL153]{Tympan d'Hypnos},
|
||||||
s’appliquant aux odeurs à la place des sons. L’illusion doit
|
s’appliquant aux odeurs à la place des sons. L’illusion doit
|
||||||
pareillement rester dans la même catégorie que la cible. Peu utilisé sur
|
pareillement rester dans la même catégorie que la cible. Peu utilisé sur
|
||||||
les humanoïdes et les animaux, à moins d’avoir une raison très précise
|
les humanoïdes et les animaux, à moins d’avoir une raison très précise
|
||||||
|
@ -2246,7 +2246,7 @@ items:
|
|||||||
description: >-
|
description: >-
|
||||||
<p>Tympan d’Hypnos est une illusion purement <em>auditive </em>pouvant
|
<p>Tympan d’Hypnos est une illusion purement <em>auditive </em>pouvant
|
||||||
s’appliquer indifféremment à un humanoïde, un animal ou un objet. Comme
|
s’appliquer indifféremment à un humanoïde, un animal ou un objet. Comme
|
||||||
pour @UUID[Compendium.foundryvtt-reve-de-dragon.sorts-hypnos.Item.ktFI49xqZ0mGfTzt]{Transfiguration}, l’illusion doit toujours
|
pour @Item[skPIvFb5tRRPHDGU]{Transfiguration}, l’illusion doit toujours
|
||||||
appartenir à la même catégorie que la cible. Toute disparité entraîne
|
appartenir à la même catégorie que la cible. Toute disparité entraîne
|
||||||
les mêmes conséquences. On peut ainsi changer la voix d’un humanoïde en
|
les mêmes conséquences. On peut ainsi changer la voix d’un humanoïde en
|
||||||
une autre <em>voix </em>d’humanoïde, le cri d’un animal en <em>cri
|
une autre <em>voix </em>d’humanoïde, le cri d’un animal en <em>cri
|
||||||
@ -2254,7 +2254,7 @@ items:
|
|||||||
objet. Lancer Tympan d’Hypnos sur un objet non sonore n’aboutit à aucun
|
objet. Lancer Tympan d’Hypnos sur un objet non sonore n’aboutit à aucun
|
||||||
effet. Ce sort permet entre autres d’enrichir une illusion visuelle en
|
effet. Ce sort permet entre autres d’enrichir une illusion visuelle en
|
||||||
lui apportant son complément sonore, diminuant ainsi les risques de
|
lui apportant son complément sonore, diminuant ainsi les risques de
|
||||||
@UUID[Compendium.foundryvtt-reve-de-dragon.rappel-des-regles.JournalEntry.ZmMoOtUdgjMd4cNs]{Conflit de sens}. Le cri illusoire d’un
|
@JournalEntry[9bvrfDaudPqvQZPY]{Conflit de sens}. Le cri illusoire d’un
|
||||||
animal doit être le cri d’un animal connu, et vouloir donner à un
|
animal doit être le cri d’un animal connu, et vouloir donner à un
|
||||||
humanoïde la même voix que quelqu’un d’autre demande un jet d’OUÏE à -8,
|
humanoïde la même voix que quelqu’un d’autre demande un jet d’OUÏE à -8,
|
||||||
avec les mêmes remarques que pour Transfiguration. Noter que seule la
|
avec les mêmes remarques que pour Transfiguration. Noter que seule la
|
||||||
|
@ -2112,7 +2112,7 @@ items:
|
|||||||
|
|
||||||
<p>Ce rituel permet d’entendre à distance. Il doit être ciblé sur un
|
<p>Ce rituel permet d’entendre à distance. Il doit être ciblé sur un
|
||||||
instrument sonore (harpe, luth, gong, cloche, etc.) faute de quoi l’on
|
instrument sonore (harpe, luth, gong, cloche, etc.) faute de quoi l’on
|
||||||
aboutit à un cas de @UUID[Compendium.foundryvtt-reve-de-dragon.rappel-des-regles.JournalEntry.erO7AICiN1LtRyFg]{Magie impossible}.
|
aboutit à un cas de @JournalEntry[eANDHKJXMPmPNJ2F]{Magie impossible}.
|
||||||
Lors du lancer, le rituel doit être paramétré sur une personne précise
|
Lors du lancer, le rituel doit être paramétré sur une personne précise
|
||||||
(humanoïde) ou un lieu architectural précis (salle, couloir, perron,
|
(humanoïde) ou un lieu architectural précis (salle, couloir, perron,
|
||||||
escalier, balcon, etc.). Les éléments naturels du paysage (rochers,
|
escalier, balcon, etc.). Les éléments naturels du paysage (rochers,
|
||||||
@ -2168,7 +2168,8 @@ items:
|
|||||||
|
|
||||||
<p>Ce rituel permet de voir à distance. Il doit être ciblé sur un miroir
|
<p>Ce rituel permet de voir à distance. Il doit être ciblé sur un miroir
|
||||||
ou une surface réfléchissante, comme de l’eau parfaitement calme, faute
|
ou une surface réfléchissante, comme de l’eau parfaitement calme, faute
|
||||||
de quoi l’on aboutit à un cas de @UUID[Compendium.foundryvtt-reve-de-dragon.rappel-des-regles.JournalEntry.erO7AICiN1LtRyFg]{Magie impossible}. Lors du lancer, le rituel doit être paramétré sur une
|
de quoi l’on aboutit à un cas de @JournalEntry[eANDHKJXMPmPNJ2F]{Magie
|
||||||
|
impossible}. Lors du lancer, le rituel doit être paramétré sur une
|
||||||
personne ou un lieu architectural précis, mêmes restrictions que pour
|
personne ou un lieu architectural précis, mêmes restrictions que pour
|
||||||
Harpe d’Hypnos. Puis le sort étant ciblé sur le miroir, le haut-rêvant
|
Harpe d’Hypnos. Puis le sort étant ciblé sur le miroir, le haut-rêvant
|
||||||
croit voir y évoluer des formes, qui le plongent aussitôt dans un état
|
croit voir y évoluer des formes, qui le plongent aussitôt dans un état
|
||||||
|
@ -797,9 +797,6 @@ input:is(.blessure-premiers_soins, .blessure-soins_complets) {
|
|||||||
padding: 0;
|
padding: 0;
|
||||||
overflow-y: auto;
|
overflow-y: auto;
|
||||||
}
|
}
|
||||||
.item-list-title{
|
|
||||||
flex: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.foundryvtt-reve-de-dragon .item-list .item-header {
|
.foundryvtt-reve-de-dragon .item-list .item-header {
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
@ -819,12 +816,12 @@ input:is(.blessure-premiers_soins, .blessure-soins_complets) {
|
|||||||
.competence-list .item-controls.hidden-controls {
|
.competence-list .item-controls.hidden-controls {
|
||||||
display: none !important;
|
display: none !important;
|
||||||
}
|
}
|
||||||
.item-controls i:is(.fas, .fa, .fa-solid, .fa-regular) {
|
.item-controls i:is(.fas, .fa, .fa-solid) {
|
||||||
font-size: 0.8em;
|
font-size: 0.8em;
|
||||||
color: var(--color-controls);
|
color: var(--color-controls);
|
||||||
}
|
}
|
||||||
.item-controls i:is(.fas, .far, .fa-solid, .fa-regular):hover {
|
.item-controls i:is(.fas, .far, .fa-solid):hover {
|
||||||
opacity: 0.6;
|
opacity: 0.7 ;
|
||||||
}
|
}
|
||||||
|
|
||||||
.rdd-roll-dialog .description-sort {
|
.rdd-roll-dialog .description-sort {
|
||||||
|
@ -16,9 +16,9 @@
|
|||||||
},
|
},
|
||||||
"background": {
|
"background": {
|
||||||
"metier": "",
|
"metier": "",
|
||||||
"biographie": "",
|
"biographie": "Histoire personnelle...",
|
||||||
"notes": "",
|
"notes": "Notes",
|
||||||
"notesmj": "",
|
"notesmj": "Notes du MJ",
|
||||||
"race": "Humain",
|
"race": "Humain",
|
||||||
"yeux": "",
|
"yeux": "",
|
||||||
"cheveux": "",
|
"cheveux": "",
|
||||||
@ -191,18 +191,18 @@
|
|||||||
"label": "+dom",
|
"label": "+dom",
|
||||||
"derivee": true
|
"derivee": true
|
||||||
},
|
},
|
||||||
"encombrement": {
|
|
||||||
"type": "number",
|
|
||||||
"value": 0,
|
|
||||||
"label": "Encombrement",
|
|
||||||
"derivee": true
|
|
||||||
},
|
|
||||||
"vitesse": {
|
"vitesse": {
|
||||||
"type": "string",
|
"type": "string",
|
||||||
"value": 0,
|
"value": 0,
|
||||||
"label": "Vitesse",
|
"label": "Vitesse",
|
||||||
"derivee": false
|
"derivee": false
|
||||||
},
|
},
|
||||||
|
"encombrement": {
|
||||||
|
"type": "number",
|
||||||
|
"value": 0,
|
||||||
|
"label": "Encombrement",
|
||||||
|
"derivee": true
|
||||||
|
},
|
||||||
"protection": {
|
"protection": {
|
||||||
"type": "number",
|
"type": "number",
|
||||||
"value": 0,
|
"value": 0,
|
||||||
|
@ -47,10 +47,8 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="grid grid-2col">
|
<div class="grid grid-2col">
|
||||||
<div class="flex-group-left flexcol">
|
<div class="flex-group-left flexcol">
|
||||||
<ul class="carac-list alterne-list">
|
|
||||||
{{>"systems/foundryvtt-reve-de-dragon/templates/actor/carac-main.html"}}
|
{{>"systems/foundryvtt-reve-de-dragon/templates/actor/carac-main.html"}}
|
||||||
{{>"systems/foundryvtt-reve-de-dragon/templates/actor/carac-creature.html"}}
|
{{>"systems/foundryvtt-reve-de-dragon/templates/actor/carac-creature.html"}}
|
||||||
</ul>
|
|
||||||
</div>
|
</div>
|
||||||
<div class="flex-group-left flexcol competence-column">
|
<div class="flex-group-left flexcol competence-column">
|
||||||
{{>"systems/foundryvtt-reve-de-dragon/templates/actor/comp-creature.html"}}
|
{{>"systems/foundryvtt-reve-de-dragon/templates/actor/comp-creature.html"}}
|
||||||
|
@ -33,10 +33,8 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="grid grid-2col">
|
<div class="grid grid-2col">
|
||||||
<div class="flex-group-left flexcol">
|
<div class="flex-group-left flexcol">
|
||||||
<ul class="carac-list alterne-list">
|
|
||||||
{{>"systems/foundryvtt-reve-de-dragon/templates/actor/carac-main.html"}}
|
{{>"systems/foundryvtt-reve-de-dragon/templates/actor/carac-main.html"}}
|
||||||
{{>"systems/foundryvtt-reve-de-dragon/templates/actor/carac-entitee.html"}}
|
{{>"systems/foundryvtt-reve-de-dragon/templates/actor/carac-entitee.html"}}
|
||||||
</ul>
|
|
||||||
</div>
|
</div>
|
||||||
<div class="flex-group-left flexcol">
|
<div class="flex-group-left flexcol">
|
||||||
<div class="flex-group-left flexcol competence-column">
|
<div class="flex-group-left flexcol competence-column">
|
||||||
|
@ -41,10 +41,8 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="grid grid-2col">
|
<div class="grid grid-2col">
|
||||||
<div class="flex-group-left flexcol">
|
<div class="flex-group-left flexcol">
|
||||||
<ul class="carac-list alterne-list">
|
|
||||||
{{>"systems/foundryvtt-reve-de-dragon/templates/actor/carac-main.html"}}
|
{{>"systems/foundryvtt-reve-de-dragon/templates/actor/carac-main.html"}}
|
||||||
{{>"systems/foundryvtt-reve-de-dragon/templates/actor/carac-total.html"}}
|
{{>"systems/foundryvtt-reve-de-dragon/templates/actor/carac-total.html"}}
|
||||||
</ul>
|
|
||||||
</div>
|
</div>
|
||||||
<div class="flex-group-left flexcol" >
|
<div class="flex-group-left flexcol" >
|
||||||
{{>"systems/foundryvtt-reve-de-dragon/templates/actor/carac-derivee.html"}}
|
{{>"systems/foundryvtt-reve-de-dragon/templates/actor/carac-derivee.html"}}
|
||||||
|
@ -1,10 +1,11 @@
|
|||||||
|
<ol class="carac-list alterne-list">
|
||||||
{{#each system.attributs as |attr key|}}
|
{{#each system.attributs as |attr key|}}
|
||||||
{{#if (and (eq key 'plusdom') (eq @root.system.definition.typeentite 'nonincarne'))}}
|
{{#if (and (eq key 'plusdom') (eq @root.system.definition.typeentite 'nonincarne'))}}
|
||||||
{{else}}
|
{{else}}
|
||||||
<li class="caracteristique flexrow list-item" data-attribute="{{key}}">
|
<li class="caracteristique flexrow list-item" data-attribute="{{key}}">
|
||||||
<span class="carac-label" name="system.attributs.{{key}}.label">{{attr.label}}</span>
|
<span class="carac-label" name="system.attributs.{{key}}.label">{{attr.label}}</span>
|
||||||
{{#if (actor-default @root.type 'attributs' key 'derivee')}}
|
{{#if (actor-default @root.type 'attributs' key 'derivee')}}
|
||||||
<input class="carac-value" type="text" name="system.attributs.{{key}}.value"
|
<input class="caracteristique streched" type="text" name="system.attributs.{{key}}.value"
|
||||||
{{#if (eq key 'plusdom')}}
|
{{#if (eq key 'plusdom')}}
|
||||||
value="{{numberFormat attr.value decimals=0 sign=true}}"
|
value="{{numberFormat attr.value decimals=0 sign=true}}"
|
||||||
{{else}}
|
{{else}}
|
||||||
@ -14,7 +15,7 @@
|
|||||||
{{else}}
|
{{else}}
|
||||||
<input class="caracteristique streched" type="text" name="system.attributs.{{key}}.value" value="{{attr.value}}" data-dtype="{{attr.type}}" {{#unless @root.options.vueDetaillee}}disabled{{/unless}}/>
|
<input class="caracteristique streched" type="text" name="system.attributs.{{key}}.value" value="{{attr.value}}" data-dtype="{{attr.type}}" {{#unless @root.options.vueDetaillee}}disabled{{/unless}}/>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
<label class="carac-xp"/>
|
|
||||||
</li>
|
</li>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
{{/each}}
|
{{/each}}
|
||||||
|
</ol>
|
||||||
|
@ -37,7 +37,7 @@
|
|||||||
<input class="derivee-value" type="number" name="system.compteurs.dissolution.value" value="{{system.compteurs.dissolution.value}}" data-dtype="number"/>
|
<input class="derivee-value" type="number" name="system.compteurs.dissolution.value" value="{{system.compteurs.dissolution.value}}" data-dtype="number"/>
|
||||||
</li>
|
</li>
|
||||||
<li class="caracteristique flexrow list-item">
|
<li class="caracteristique flexrow list-item">
|
||||||
<label class="derivee-label chance-actuelle" data-tooltip="Jet de chance actuelle"><a class="roll-chance-actuelle">Chance actuelle</a></label>
|
<label class="derivee-label chance-actuelle" data-tooltip="Jet de chance actuelle"><a>Chance actuelle</a></label>
|
||||||
<input class="derivee-value" type="number" name="system.compteurs.chance.value" value="{{system.compteurs.chance.value}}" data-dtype="number"/>
|
<input class="derivee-value" type="number" name="system.compteurs.chance.value" value="{{system.compteurs.chance.value}}" data-dtype="number"/>
|
||||||
</li>
|
</li>
|
||||||
<li class="caracteristique flexrow list-item">
|
<li class="caracteristique flexrow list-item">
|
||||||
|
@ -1,21 +1,16 @@
|
|||||||
|
<ol class="carac-list alterne-list">
|
||||||
<li class="caracteristique flexrow list-item">
|
<li class="caracteristique flexrow list-item">
|
||||||
<span class="carac-label">Niveau</span>
|
<span class="carac-label" name="catEntite">Catégorie : </span>
|
||||||
<label class="carac-value">{{numberFormat niveau decimals=0 sign=true}}
|
|
||||||
</label>
|
|
||||||
<label class="carac-xp"/>
|
|
||||||
</li>
|
|
||||||
{{>"systems/foundryvtt-reve-de-dragon/templates/actor/carac-creature.html"}}
|
|
||||||
<li class="caracteristique flexrow list-item">
|
|
||||||
<span class="carac-label" name="catEntite">Catégorie</span>
|
|
||||||
<select name="system.definition.categorieentite" value="{{system.definition.categorieentite}}" data-dtype="String" {{#unless @root.options.vueDetaillee}}disabled{{/unless}}>
|
<select name="system.definition.categorieentite" value="{{system.definition.categorieentite}}" data-dtype="String" {{#unless @root.options.vueDetaillee}}disabled{{/unless}}>
|
||||||
{{selectOptions (RDD_CONFIG 'categorieEntite') selected=system.definition.categorieentite}}
|
{{selectOptions (RDD_CONFIG 'categorieEntite') selected=system.definition.categorieentite}}
|
||||||
</select>
|
</select>
|
||||||
<label class="carac-xp"/>
|
|
||||||
</li>
|
</li>
|
||||||
<li class="caracteristique flexrow list-item">
|
<li class="caracteristique flexrow list-item">
|
||||||
<span class="carac-label" name="typeEntite">Type d'entité</span>
|
<span class="carac-label" name="typeEntite">Type d'entité : </span>
|
||||||
<select name="system.definition.typeentite" value="{{system.definition.typeentite}}" data-dtype="String" {{#unless @root.options.vueDetaillee}}disabled{{/unless}}>
|
<select name="system.definition.typeentite" value="{{system.definition.typeentite}}" data-dtype="String" {{#unless @root.options.vueDetaillee}}disabled{{/unless}}>
|
||||||
{{selectOptions (RDD_CONFIG 'typeEntite') selected=system.definition.typeentite}}
|
{{selectOptions (RDD_CONFIG 'typeEntite') selected=system.definition.typeentite}}
|
||||||
</select>
|
</select>
|
||||||
<label class="carac-xp"/>
|
|
||||||
</li>
|
</li>
|
||||||
|
</ol>
|
||||||
|
|
||||||
|
{{> "systems/foundryvtt-reve-de-dragon/templates/actor/carac-creature.html"}}
|
||||||
|
@ -1,3 +1,4 @@
|
|||||||
|
<ul class="carac-list alterne-list">
|
||||||
{{#each system.carac as |carac key|}}
|
{{#each system.carac as |carac key|}}
|
||||||
{{#if (and (eq key 'taille') (eq @root.system.definition.typeentite 'nonincarne'))}}
|
{{#if (and (eq key 'taille') (eq @root.system.definition.typeentite 'nonincarne'))}}
|
||||||
{{else}}
|
{{else}}
|
||||||
@ -9,7 +10,7 @@
|
|||||||
{{else}}
|
{{else}}
|
||||||
{{#if (actor-default @root.type 'carac' key 'derivee')}}
|
{{#if (actor-default @root.type 'carac' key 'derivee')}}
|
||||||
<span class="carac-label" name="system.carac.{{key}}.label"><a class="roll-carac" data-carac-name={{key}}>{{carac.label}}</a></span>
|
<span class="carac-label" name="system.carac.{{key}}.label"><a class="roll-carac" data-carac-name={{key}}>{{carac.label}}</a></span>
|
||||||
<label class="carac-value">{{carac.value}}</label>
|
<label class="competence-value">{{carac.value}}</label>
|
||||||
<label class="carac-xp"/>
|
<label class="carac-xp"/>
|
||||||
{{else}}
|
{{else}}
|
||||||
{{#if carac.isLevelUp}}
|
{{#if carac.isLevelUp}}
|
||||||
@ -35,3 +36,4 @@
|
|||||||
</li>
|
</li>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
{{/each}}
|
{{/each}}
|
||||||
|
</ul>
|
||||||
|
@ -1,13 +1,14 @@
|
|||||||
<h4 class="item-list-title">Compétences{{#if @root.options.vueDetaillee}} <a class="competence-add" data-tooltip="Ajouter une compétence">
|
<h4>Compétences{{#if @root.options.vueDetaillee}} <a class="competence-add" data-tooltip="Ajouter une compétence">
|
||||||
<i class="fa-solid fa-books-medical"></i>
|
<i class="fa-solid fa-books-medical"></i>
|
||||||
</a>{{/if}}</h4>
|
</a>{{/if}}</h4>
|
||||||
<ul class="item-list alterne-list">
|
<ol class="item-list alterne-list">
|
||||||
{{#each (trier competences) as |comp key|}}
|
{{#each (trier competences) as |comp key|}}
|
||||||
<li class="item flexrow list-item" data-item-id="{{comp._id}}">
|
<li class="item flexrow list-item" data-item-id="{{comp._id}}">
|
||||||
<a class="competence-label roll-competence">
|
<a class="competence-label roll-competence">
|
||||||
<img class="sheet-competence-img" src="{{comp.img}}" data-tooltip="{{comp.name}}"/>
|
<img class="sheet-competence-img" src="{{comp.img}}" data-tooltip="{{comp.name}}"/>
|
||||||
<span>{{comp.name}}</span>
|
<span>{{comp.name}}</span>
|
||||||
</a>
|
</a>
|
||||||
|
|
||||||
<input class="competence-carac creature-carac" type="text" compname="{{comp.name}}" name="{{comp._id}}.carac"
|
<input class="competence-carac creature-carac" type="text" compname="{{comp.name}}" name="{{comp._id}}.carac"
|
||||||
value="{{comp.system.carac_value}}" data-dtype="number"
|
value="{{comp.system.carac_value}}" data-dtype="number"
|
||||||
{{#unless @root.options.vueDetaillee}}disabled{{/unless}}/>
|
{{#unless @root.options.vueDetaillee}}disabled{{/unless}}/>
|
||||||
@ -31,4 +32,4 @@
|
|||||||
{{/if}}
|
{{/if}}
|
||||||
</li>
|
</li>
|
||||||
{{/each}}
|
{{/each}}
|
||||||
</ul>
|
</ol>
|
||||||
|
@ -54,7 +54,7 @@
|
|||||||
{{>"systems/foundryvtt-reve-de-dragon/templates/actor/export-scriptarium/carac.hbs" carac=export.empathie}}
|
{{>"systems/foundryvtt-reve-de-dragon/templates/actor/export-scriptarium/carac.hbs" carac=export.empathie}}
|
||||||
{{>"systems/foundryvtt-reve-de-dragon/templates/actor/export-scriptarium/carac.hbs" carac=export.intellect}}
|
{{>"systems/foundryvtt-reve-de-dragon/templates/actor/export-scriptarium/carac.hbs" carac=export.intellect}}
|
||||||
{{>"systems/foundryvtt-reve-de-dragon/templates/actor/export-scriptarium/carac-compteur.hbs" carac=export.reve actuel=export.reve_actuel button-name='ptreve-actuel'}}
|
{{>"systems/foundryvtt-reve-de-dragon/templates/actor/export-scriptarium/carac-compteur.hbs" carac=export.reve actuel=export.reve_actuel button-name='ptreve-actuel'}}
|
||||||
{{>"systems/foundryvtt-reve-de-dragon/templates/actor/export-scriptarium/carac-compteur.hbs" carac=export.chance actuel=export.chance_actuel button-name='chance-actuelle'}}
|
{{>"systems/foundryvtt-reve-de-dragon/templates/actor/export-scriptarium/carac.hbs" carac=export.chance}}
|
||||||
</div>
|
</div>
|
||||||
<div class="flexcol flex-group-top">
|
<div class="flexcol flex-group-top">
|
||||||
{{>"systems/foundryvtt-reve-de-dragon/templates/actor/export-scriptarium/carac-derivee.hbs" carac=export.melee}}
|
{{>"systems/foundryvtt-reve-de-dragon/templates/actor/export-scriptarium/carac-derivee.hbs" carac=export.melee}}
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
{{#if sortsReserve.length}}
|
{{#if sortsReserve.length}}
|
||||||
<h3>Sorts en Réserve{{#if options.isGM}} <a class="sortreserve-add">
|
<h3>Sorts en Réserve{{#if options.isGM}} <a class="nouveau-sort-reserve"><i class="fa-solid fa-sparkles"></i>
|
||||||
<i class="fa-solid fa-sparkles"></i>
|
|
||||||
</a>{{/if}}
|
</a>{{/if}}
|
||||||
</h3>
|
</h3>
|
||||||
<ul class="item-list alterne-list">
|
<ul class="item-list alterne-list">
|
||||||
|
@ -5,12 +5,8 @@
|
|||||||
<li class="item list-item flexrow" data-item-id="{{sort._id}}" data-attribute="{{key}}" data-tooltip="{{#if sort.system.isrituel}}Rituel{{else}}Sort{{/if}}: {{sort.name}}">
|
<li class="item list-item flexrow" data-item-id="{{sort._id}}" data-attribute="{{key}}" data-tooltip="{{#if sort.system.isrituel}}Rituel{{else}}Sort{{/if}}: {{sort.name}}">
|
||||||
<img class="sheet-competence-img" src="{{sort.img}}"/>
|
<img class="sheet-competence-img" src="{{sort.img}}"/>
|
||||||
<span class="flex-shrink">{{itemSort-shortDraconic sort.system.draconic}}</span>
|
<span class="flex-shrink">{{itemSort-shortDraconic sort.system.draconic}}</span>
|
||||||
<span class="item-edit flex-grow-3">{{sort.name}}
|
<span class="item-edit flex-grow-3">{{sort.name}}{{#if sort.system.isrituel}}
|
||||||
{{#if sort.system.isrituel}}<i class="fa-solid fa-book-sparkles"></i>{{/if}}
|
<i class="fa-regular fa-book-sparkles"></i>{{/if}}</span>
|
||||||
{{#if sort.system.coutseuil}}
|
|
||||||
{{#repeat sort.system.coutseuil}}<i class="fa-solid fa-star-sharp" data-tooltip="coût de seuil: {{sort.system.coutseuil}}"></i>{{/repeat}}
|
|
||||||
{{/if}}
|
|
||||||
</span>
|
|
||||||
<span class="flex-grow-2">
|
<span class="flex-grow-2">
|
||||||
{{#if sort.system.caseTMRspeciale}}{{sort.system.caseTMRspeciale}}{{else}}{{upperFirst sort.system.caseTMR}}{{/if}}
|
{{#if sort.system.caseTMRspeciale}}{{sort.system.caseTMRspeciale}}{{else}}{{upperFirst sort.system.caseTMR}}{{/if}}
|
||||||
</span>
|
</span>
|
||||||
@ -19,11 +15,6 @@
|
|||||||
<a class="item-edit" data-tooltip="Modifier"><i class="fas fa-edit"></i></a>
|
<a class="item-edit" data-tooltip="Modifier"><i class="fas fa-edit"></i></a>
|
||||||
<a class="item-delete" data-tooltip="Supprimer"><i class="fas fa-trash"></i></a>
|
<a class="item-delete" data-tooltip="Supprimer"><i class="fas fa-trash"></i></a>
|
||||||
<a class="item-montrer" data-tooltip="Montrer"><i class="fas fa-comment"></i></a>
|
<a class="item-montrer" data-tooltip="Montrer"><i class="fas fa-comment"></i></a>
|
||||||
{{#if (and @root.options.isGM (not sort.system.isrituel))}}
|
|
||||||
<a class="sortreserve-add" data-tooltip="Ajouter ce sort en réserve">
|
|
||||||
<i class="fa-solid fa-sparkles"></i>
|
|
||||||
</a>
|
|
||||||
{{/if}}
|
|
||||||
</div>
|
</div>
|
||||||
</li>
|
</li>
|
||||||
{{/each}}
|
{{/each}}
|
||||||
|
Loading…
Reference in New Issue
Block a user