Merge branch 'v1.3' of gitlab.com:LeRatierBretonnien/foundryvtt-reve-de-dragon into v1.3
This commit is contained in:
commit
f8206d0a43
251
module/actor.js
251
module/actor.js
@ -175,12 +175,24 @@ export class RdDActor extends Actor {
|
|||||||
isCreature() {
|
isCreature() {
|
||||||
return this.data.type == 'creature' || this.data.type == 'entite';
|
return this.data.type == 'creature' || this.data.type == 'entite';
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
isPersonnage() {
|
isPersonnage() {
|
||||||
return this.data.type == 'personnage';
|
return this.data.type == 'personnage';
|
||||||
}
|
}
|
||||||
|
/* -------------------------------------------- */
|
||||||
|
getFatigueActuelle() {
|
||||||
|
if (!this.isPersonnage()) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
return Misc.toInt(this.data.data.sante.fatigue?.value);
|
||||||
|
}
|
||||||
|
/* -------------------------------------------- */
|
||||||
|
getFatigueMax() {
|
||||||
|
if (!this.isPersonnage()) {
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
return Misc.toInt(this.data.data.sante.fatigue?.max);
|
||||||
|
}
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
getReveActuel() {
|
getReveActuel() {
|
||||||
return Misc.toInt(this.data.data.reve?.reve?.value ?? this.data.data.carac.reve.value);
|
return Misc.toInt(this.data.data.reve?.reve?.value ?? this.data.data.carac.reve.value);
|
||||||
@ -246,8 +258,8 @@ export class RdDActor extends Actor {
|
|||||||
return this.data.items.filter((item) => item.type == 'competence');
|
return this.data.items.filter((item) => item.type == 'competence');
|
||||||
}
|
}
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
getCompetence(compName) {
|
getCompetence(name) {
|
||||||
return RdDItemCompetence.findCompetence(this.data.items, compName);
|
return RdDItemCompetence.findCompetence(this.data.items, name);
|
||||||
}
|
}
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
getTache(id) {
|
getTache(id) {
|
||||||
@ -297,7 +309,7 @@ export class RdDActor extends Actor {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
getSurprise(isCombat = true) {
|
getSurprise(isCombat = undefined) {
|
||||||
let niveauSurprise = Array.from(this.effects?.values() ?? [])
|
let niveauSurprise = Array.from(this.effects?.values() ?? [])
|
||||||
.map(effect => StatusEffects.valeurSurprise(effect.data, isCombat))
|
.map(effect => StatusEffects.valeurSurprise(effect.data, isCombat))
|
||||||
.reduce((a,b)=> a+b, 0);
|
.reduce((a,b)=> a+b, 0);
|
||||||
@ -926,7 +938,6 @@ export class RdDActor extends Actor {
|
|||||||
if (item.data.quantite == undefined) item.data.quantite = 1; // Auto-fix
|
if (item.data.quantite == undefined) item.data.quantite = 1; // Auto-fix
|
||||||
if (item.data.cout < 0) item.data.cout = 0; // Auto-fix
|
if (item.data.cout < 0) item.data.cout = 0; // Auto-fix
|
||||||
prixTotalEquipement += Number(item.data.cout) * Number(item.data.quantite);
|
prixTotalEquipement += Number(item.data.cout) * Number(item.data.quantite);
|
||||||
//console.log("cout équipement : ", item.name, item.data.cout, item.data.quantite, prixTotalEquipement);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Mise à jour valeur totale de l'équipement
|
// Mise à jour valeur totale de l'équipement
|
||||||
@ -1296,14 +1307,17 @@ export class RdDActor extends Actor {
|
|||||||
if (sante.fatigue && fatigue > 0) {
|
if (sante.fatigue && fatigue > 0) {
|
||||||
sante.fatigue.value = Math.max(sante.fatigue.value + fatigue, this._computeFatigueMin());
|
sante.fatigue.value = Math.max(sante.fatigue.value + fatigue, this._computeFatigueMin());
|
||||||
}
|
}
|
||||||
if (!this.isEntiteCauchemar() && sante.vie.value<-this.getSConst()) {
|
await this.update({ "data.sante": sante });
|
||||||
|
if (this.isDead()) {
|
||||||
await this.addStatusEffectById('dead');
|
await this.addStatusEffectById('dead');
|
||||||
}
|
}
|
||||||
|
|
||||||
await this.update({ "data.sante": sante });
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
isDead() {
|
||||||
|
return !this.isEntiteCauchemar() && this.data.data.sante.vie.value<-this.getSConst()
|
||||||
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
_computeFatigueMin() {
|
_computeFatigueMin() {
|
||||||
return this.data.data.sante.endurance.max - this.data.data.sante.endurance.value;
|
return this.data.data.sante.endurance.max - this.data.data.sante.endurance.value;
|
||||||
@ -1999,129 +2013,87 @@ export class RdDActor extends Actor {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
async rollChant( id ) {
|
async _rollArt(artData, selectedCarac, competence, oeuvre) {
|
||||||
let chant = duplicate(this.getChant(id));
|
mergeObject(artData, {
|
||||||
let competence = duplicate(this.getCompetence("chant"));
|
oeuvre: oeuvre,
|
||||||
competence.data.defaut_carac = "ouie";
|
competence: duplicate(competence),
|
||||||
let chantData = {
|
diffLibre: -oeuvre.data.niveau,
|
||||||
competence: competence,
|
|
||||||
chant: chant,
|
|
||||||
diffLibre: -chant.data.niveau,
|
|
||||||
diffConditions: 0,
|
|
||||||
use: { libre: false, conditions: true, },
|
|
||||||
carac: {}
|
|
||||||
};
|
|
||||||
chantData.carac["ouie"] = duplicate(this.data.data.carac["ouie"]);
|
|
||||||
|
|
||||||
console.log("rollChant !!!", chantData);
|
|
||||||
|
|
||||||
const dialog = await RdDRoll.create(this, chantData, { html: 'systems/foundryvtt-reve-de-dragon/templates/dialog-roll-chant.html' }, {
|
|
||||||
name: 'jet-chant',
|
|
||||||
label: 'Chanter ' + chant.name,
|
|
||||||
height: 600,
|
|
||||||
callbacks: [
|
|
||||||
this.createCallbackExperience(),
|
|
||||||
{ action: r => this._chantResult(r) }
|
|
||||||
]
|
|
||||||
});
|
|
||||||
dialog.render(true);
|
|
||||||
}
|
|
||||||
/* -------------------------------------------- */
|
|
||||||
async _chantResult(chantData) {
|
|
||||||
if ( chantData.rolled.isSuccess) {
|
|
||||||
chantData.qualiteFinale = chantData.danse.data.niveau + chantData.rolled.ptQualite;
|
|
||||||
} else {
|
|
||||||
chantData.qualiteFinale = chantData.competence.data.niveau + chantData.rolled.ptQualite;
|
|
||||||
}
|
|
||||||
console.log("CHAN", chantData)
|
|
||||||
RdDResolutionTable.displayRollData(chantData, this.name, 'chat-resultat-chant.html');
|
|
||||||
}
|
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
|
||||||
async rollDanse( id ) {
|
|
||||||
let danse = duplicate(this.getDanse(id));
|
|
||||||
let competence = duplicate(this.getCompetence("danse"));
|
|
||||||
let danseData = {
|
|
||||||
competence: competence,
|
|
||||||
danse: danse,
|
|
||||||
diffLibre: -danse.data.niveau,
|
|
||||||
diffConditions: 0,
|
diffConditions: 0,
|
||||||
use: { libre: false, conditions: true, },
|
use: { libre: false, conditions: true, },
|
||||||
|
selectedCarac: duplicate(this.data.data.carac[selectedCarac]),
|
||||||
forceCarac: {}
|
forceCarac: {}
|
||||||
};
|
});
|
||||||
if ( danse.data.agilite) {
|
artData.competence.data.defaut_carac = selectedCarac;
|
||||||
competence.data.defaut_carac = "agilite";
|
artData.forceCarac[selectedCarac] = duplicate(this.data.data.carac[selectedCarac]);
|
||||||
danseData.selectedCarac = duplicate(this.data.data.carac["agilite"]);
|
|
||||||
danseData.forceCarac["agilite"] = duplicate(this.data.data.carac["agilite"]);
|
|
||||||
}
|
|
||||||
if ( danse.data.apparence) {
|
|
||||||
competence.data.defaut_carac = "apparence";
|
|
||||||
danseData.selectedCarac = duplicate(this.data.data.carac["apparence"]);
|
|
||||||
danseData.forceCarac["apparence"] = duplicate(this.data.data.carac["apparence"]);
|
|
||||||
}
|
|
||||||
|
|
||||||
console.log("rollDanse !!!", danseData);
|
console.log("rollArtiste !!!", artData);
|
||||||
|
|
||||||
const dialog = await RdDRoll.create(this, danseData, { html: 'systems/foundryvtt-reve-de-dragon/templates/dialog-roll-danse.html' }, {
|
const dialog = await RdDRoll.create(this, artData, { html: `systems/foundryvtt-reve-de-dragon/templates/dialog-roll-${artData.art}.html` }, {
|
||||||
name: 'jet-danse',
|
name: `jet-${artData.art}`,
|
||||||
label: 'Danser ' + danse.name,
|
label: `${artData.verbe} ${oeuvre.name}`,
|
||||||
height: 600,
|
height: 600,
|
||||||
callbacks: [
|
callbacks: [
|
||||||
this.createCallbackExperience(),
|
this.createCallbackExperience(),
|
||||||
{ action: r => this._danseResult(r) }
|
{ action: r => this._resultArt(r) }
|
||||||
]
|
]
|
||||||
});
|
});
|
||||||
dialog.render(true);
|
dialog.render(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
async _danseResult(danseData) {
|
async _resultArt(artData) {
|
||||||
if ( danseData.rolled.isSuccess) {
|
const baseQualite = (artData.rolled.isSuccess ? artData.oeuvre.data.niveau : artData.competence.data.niveau);
|
||||||
danseData.qualiteFinale = danseData.danse.data.niveau + danseData.rolled.ptQualite;
|
artData.qualiteFinale = Math.min(baseQualite, artData.oeuvre.data.niveau) + artData.rolled.ptQualite;
|
||||||
} else {
|
|
||||||
danseData.qualiteFinale = danseData.competence.data.niveau + danseData.rolled.ptQualite;
|
console.log("OEUVRE", artData.art, artData)
|
||||||
}
|
RdDResolutionTable.displayRollData(artData, this.name, `chat-resultat-${artData.art}.html`);
|
||||||
console.log("CHAN", danseData)
|
|
||||||
RdDResolutionTable.displayRollData(danseData, this.name, 'chat-resultat-danse.html');
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
async rollMusique( id ) {
|
async rollDanse(id) {
|
||||||
let musique = duplicate(this.getMusique(id));
|
const oeuvre = duplicate(this.getDanse(id));
|
||||||
let competence = duplicate(this.getCompetence("musique"));
|
const competence = this.getCompetence("danse");
|
||||||
competence.data.defaut_carac = "ouie";
|
const selectedCarac = this._getCaracDanse(oeuvre, competence);
|
||||||
let musiqueData = {
|
const artData = { art: 'danse', verbe: 'Danser' };
|
||||||
competence: competence,
|
await this._rollArt(artData, selectedCarac, competence, oeuvre);
|
||||||
musique: musique,
|
}
|
||||||
diffLibre: -musique.data.niveau,
|
|
||||||
diffConditions: 0,
|
_getCaracDanse(oeuvre, competence) {
|
||||||
use: { libre: false, conditions: true, },
|
if (oeuvre.data.agilite) { return "agilite"; }
|
||||||
carac: {}
|
else if (oeuvre.data.apparence) { return "apparence"; }
|
||||||
};
|
return competence.data.defaut_carac;
|
||||||
musiqueData.carac["ouie"] = duplicate(this.data.data.carac["ouie"]);
|
}
|
||||||
|
|
||||||
console.log("rollMusique !!!", musiqueData);
|
/* -------------------------------------------- */
|
||||||
|
async rollMusique(id) {
|
||||||
|
const oeuvre = duplicate(this.getMusique(id));
|
||||||
|
const competence = this.getCompetence("musique");
|
||||||
|
const selectedCarac = "ouie";
|
||||||
|
const artData = { art: 'musique', verbe: 'Jouer' };
|
||||||
|
await this._rollArt(artData, selectedCarac, competence, oeuvre);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* -------------------------------------------- */
|
||||||
|
async rollRecetteCuisine(id) {
|
||||||
|
const oeuvre = duplicate(this.getRecetteCuisine(id));
|
||||||
|
const competence = this.getCompetence("cuisine");
|
||||||
|
const selectedCarac = 'odoratgout';
|
||||||
|
const artData = { art: 'cuisine', verbe: 'Cuisiner' };
|
||||||
|
await this._rollArt(artData, selectedCarac, competence, oeuvre);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* -------------------------------------------- */
|
||||||
|
async rollJeu(id) {
|
||||||
|
const oeuvre = duplicate(this.getJeu(id));
|
||||||
|
const competence = this.getCompetence("jeu");
|
||||||
|
const selectedCarac = competence.data.defaut_carac;
|
||||||
|
const artData = {
|
||||||
|
art: 'jeu', verbe: 'Jeu',
|
||||||
|
use: { libre: true, conditions: true, },
|
||||||
|
};
|
||||||
|
await this._rollArt(artData, selectedCarac, competence, oeuvre);
|
||||||
|
}
|
||||||
|
|
||||||
const dialog = await RdDRoll.create(this, musiqueData, { html: 'systems/foundryvtt-reve-de-dragon/templates/dialog-roll-musique.html' }, {
|
|
||||||
name: 'jet-musique',
|
|
||||||
label: 'Jouer ' + musique.name,
|
|
||||||
height: 600,
|
|
||||||
callbacks: [
|
|
||||||
this.createCallbackExperience(),
|
|
||||||
{ action: r => this._musiqueResult(r) }
|
|
||||||
]
|
|
||||||
});
|
|
||||||
dialog.render(true);
|
|
||||||
}
|
|
||||||
/* -------------------------------------------- */
|
|
||||||
async _musiqueResult(musiqueData) {
|
|
||||||
if ( musiqueData.rolled.isSuccess) {
|
|
||||||
musiqueData.qualiteFinale = musiqueData.musique.data.niveau + musiqueData.rolled.ptQualite;
|
|
||||||
} else {
|
|
||||||
musiqueData.qualiteFinale = musiqueData.competence.data.niveau + musiqueData.rolled.ptQualite;
|
|
||||||
}
|
|
||||||
console.log("MUSIQUE", musiqueData)
|
|
||||||
RdDResolutionTable.displayRollData(musiqueData, this.name, 'chat-resultat-musique.html');
|
|
||||||
}
|
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
async rollJeu( id ) {
|
async rollJeu( id ) {
|
||||||
@ -2155,46 +2127,7 @@ export class RdDActor extends Actor {
|
|||||||
RdDResolutionTable.displayRollData(jeudData, this.name, 'chat-resultat-jeu.html');
|
RdDResolutionTable.displayRollData(jeudData, this.name, 'chat-resultat-jeu.html');
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
|
||||||
async rollRecetteCuisine( id ) {
|
|
||||||
let cuisine = duplicate(this.getRecetteCuisine(id));
|
|
||||||
let competence = duplicate(this.getCompetence("cuisine"));
|
|
||||||
competence.data.defaut_carac = "odoratgout";
|
|
||||||
let cuisineData = {
|
|
||||||
competence: competence,
|
|
||||||
cuisine: cuisine,
|
|
||||||
diffLibre: -cuisine.data.niveau,
|
|
||||||
diffConditions: 0,
|
|
||||||
use: { libre: true, conditions: true, },
|
|
||||||
carac: {}
|
|
||||||
};
|
|
||||||
cuisineData.carac["odoratgout"] = duplicate(this.data.data.carac["odoratgout"]);
|
|
||||||
|
|
||||||
console.log("rollRecetteCuisine !!!", cuisineData);
|
|
||||||
|
|
||||||
const dialog = await RdDRoll.create(this, cuisineData, { html: 'systems/foundryvtt-reve-de-dragon/templates/dialog-roll-cuisine.html' }, {
|
|
||||||
name: 'jet-jeu',
|
|
||||||
label: 'Cuisiner ' + cuisine.name,
|
|
||||||
height: 600,
|
|
||||||
callbacks: [
|
|
||||||
this.createCallbackExperience(),
|
|
||||||
{ action: r => this._recetteCuisineResult(r) }
|
|
||||||
]
|
|
||||||
});
|
|
||||||
dialog.render(true);
|
|
||||||
}
|
|
||||||
/* -------------------------------------------- */
|
|
||||||
async _recetteCuisineResult(cuisineData) {
|
|
||||||
if ( cuisineData.rolled.isSuccess) {
|
|
||||||
cuisineData.qualiteFinale = cuisineData.cuisine.data.niveau + cuisineData.rolled.ptQualite;
|
|
||||||
} else {
|
|
||||||
cuisineData.qualiteFinale = cuisineData.competence.data.niveau + cuisineData.rolled.ptQualite;
|
|
||||||
}
|
|
||||||
console.log("Cuisine", cuisineData)
|
|
||||||
RdDResolutionTable.displayRollData(cuisineData, this.name, 'chat-resultat-cuisine.html');
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
async rollMeditation(id) {
|
async rollMeditation(id) {
|
||||||
let meditation = duplicate(this.getMeditation(id));
|
let meditation = duplicate(this.getMeditation(id));
|
||||||
@ -2324,9 +2257,7 @@ export class RdDActor extends Actor {
|
|||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
async appliquerExperience(rolled, caracName, competence = undefined) {
|
async appliquerExperience(rolled, caracName, competence = undefined) {
|
||||||
if (this.isCreature()) {
|
if (!this.isPersonnage()) return;
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (rolled.isPart && rolled.finalLevel < 0) {
|
if (rolled.isPart && rolled.finalLevel < 0) {
|
||||||
// Cas de désir lancinant, pas d'expérience sur particulière
|
// Cas de désir lancinant, pas d'expérience sur particulière
|
||||||
if (this.checkDesirLancinant()) {
|
if (this.checkDesirLancinant()) {
|
||||||
@ -2357,7 +2288,7 @@ export class RdDActor extends Actor {
|
|||||||
await this.update({ "data.carac": carac });
|
await this.update({ "data.carac": carac });
|
||||||
} else {
|
} else {
|
||||||
ChatMessage.create({
|
ChatMessage.create({
|
||||||
content: `Vous avez ${xpCarac} à répartir pour la caractérisque dérivée ${caracName}. Vous devez le faire manuellement.`,
|
content: `Vous avez ${xpCarac} à répartir pour la caractéristique dérivée ${caracName}. Vous devez le faire manuellement.`,
|
||||||
whisper: ChatMessage.getWhisperRecipients(game.user.name)
|
whisper: ChatMessage.getWhisperRecipients(game.user.name)
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@ -2707,7 +2638,7 @@ export class RdDActor extends Actor {
|
|||||||
} else {
|
} else {
|
||||||
// TODO: status effect dead
|
// TODO: status effect dead
|
||||||
this.addStatusEffectById('dead');
|
this.addStatusEffectById('dead');
|
||||||
ChatMessage.create({ content: `<img class="chat-icon" src="icons/svg/skull.svg" alt="charge" height="32" width="32" />
|
ChatMessage.create({ content: `<img class="chat-icon" src="icons/svg/skull.svg" alt="charge" />
|
||||||
<strong>${this.name} vient de succomber à une seconde blessure critique ! Que les Dragons gardent son Archétype en paix !</strong>` });
|
<strong>${this.name} vient de succomber à une seconde blessure critique ! Que les Dragons gardent son Archétype en paix !</strong>` });
|
||||||
encaissement.critiques -= count;
|
encaissement.critiques -= count;
|
||||||
encaissement.mort = true;
|
encaissement.mort = true;
|
||||||
|
@ -878,6 +878,8 @@ ul, li {
|
|||||||
border: 0;
|
border: 0;
|
||||||
padding: 2px 6px 2px 2px;
|
padding: 2px 6px 2px 2px;
|
||||||
float: left;
|
float: left;
|
||||||
|
width: 64px;
|
||||||
|
height: 64px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#sidebar-tabs {
|
#sidebar-tabs {
|
||||||
|
@ -906,11 +906,11 @@
|
|||||||
</div>
|
</div>
|
||||||
<ul class="item-list alterne-list">
|
<ul class="item-list alterne-list">
|
||||||
<li class="competence-header flexrow">
|
<li class="competence-header flexrow">
|
||||||
|
<img class="sheet-competence-img" src="systems/foundryvtt-reve-de-dragon/icons/objets/sac_a_dos.webp" title="Equipement"/>
|
||||||
<span class="competence-title competence-label">Nom</span>
|
<span class="competence-title competence-label">Nom</span>
|
||||||
<span class="competence-title competence-label">Q.</span>
|
<span class="competence-title competence-label">Q.</span>
|
||||||
<span class="competence-title competence-value">Enc.</span>
|
<span class="competence-title competence-label">Enc.</span>
|
||||||
<span class="competence-title competence-value">Equiper</span>
|
<span class="competence-title competence-label">Equiper/Editer/Suppr.</span>
|
||||||
<span class="competence-title competence-value">Editer/Suppr.</span>
|
|
||||||
</li>
|
</li>
|
||||||
{{#each data.objets as |item id|}}
|
{{#each data.objets as |item id|}}
|
||||||
{{#unless item.estContenu}}
|
{{#unless item.estContenu}}
|
||||||
@ -920,11 +920,11 @@
|
|||||||
<span class="item-name">{{item.name}}</span>
|
<span class="item-name">{{item.name}}</span>
|
||||||
<span class="item-quantite">{{item.data.quantite}}</span>
|
<span class="item-quantite">{{item.data.quantite}}</span>
|
||||||
<span class="item-quantite">{{numberFormat item.data.encTotal decimals=2}}</span>
|
<span class="item-quantite">{{numberFormat item.data.encTotal decimals=2}}</span>
|
||||||
<div class="item-controls">
|
<span class="item-controls">
|
||||||
<a class="item-control item-equip" title="Equiper">{{#if item.data.equipe}}<i class="fas fa-circle"></i>{{else}}<i class="fas fa-genderless"></i>{{/if}}</a>
|
<a class="item-control item-equip" title="Equiper">{{#if item.data.equipe}}<i class="fas fa-circle"></i>{{else}}<i class="fas fa-genderless"></i>{{/if}}</a>
|
||||||
<a class="item-control item-edit" title="Editer"><i class="fas fa-edit"></i></a>
|
<a class="item-control item-edit" title="Editer"><i class="fas fa-edit"></i></a>
|
||||||
<a class="item-control item-delete" title="Supprimer"><i class="fas fa-trash"></i></a>
|
<a class="item-control item-delete" title="Supprimer"><i class="fas fa-trash"></i></a>
|
||||||
</div>
|
</span>
|
||||||
</li>
|
</li>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
{{/unless}}
|
{{/unless}}
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
<img class="chat-icon" src="systems/foundryvtt-reve-de-dragon/icons/competence_alchimie.png" alt="préparation alchimique" height="32" width="32" />
|
<img class="chat-icon" src="systems/foundryvtt-reve-de-dragon/icons/competence_alchimie.png" alt="préparation alchimique" />
|
||||||
<h4>
|
<h4>
|
||||||
{{alias}} essaye de réaliser sa recette Alchimique : {{recette.name}}
|
{{alias}} essaye de réaliser sa recette Alchimique : {{recette.name}}
|
||||||
</h4>
|
</h4>
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
<img class="chat-icon" src="{{competence.img}}" alt="{{competence.name}}" height="32" width="32" />
|
<img class="chat-icon" src="{{competence.img}}" alt="{{competence.name}}" />
|
||||||
<h4>{{alias}} attaque à {{diffLibre}}: {{arme.name}}</h4>
|
<h4>{{alias}} attaque à {{diffLibre}}: {{arme.name}}</h4>
|
||||||
<div>{{selectedCarac.label}}{{#unless (eq selectedCarac.label competence.name)}} / {{competence.name}}{{/unless}}</div>
|
<div>{{selectedCarac.label}}{{#unless (eq selectedCarac.label competence.name)}} / {{competence.name}}{{/unless}}</div>
|
||||||
{{> "systems/foundryvtt-reve-de-dragon/templates/chat-infojet.html"}}
|
{{> "systems/foundryvtt-reve-de-dragon/templates/chat-infojet.html"}}
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
<img class="chat-icon" src="systems/foundryvtt-reve-de-dragon/icons/competence_chant.png" alt="chant" height="32" width="32" />
|
<img class="chat-icon" src="systems/foundryvtt-reve-de-dragon/icons/competence_chant.png" alt="chant" />
|
||||||
<h4>
|
<h4>
|
||||||
{{alias}} tente de chanter la chanson : {{chant.name}} (niveau {{chant.data.niveau}})
|
{{alias}} tente de chanter la chanson : {{oeuvre.name}} (niveau {{oeuvre.data.niveau}})
|
||||||
</h4>
|
</h4>
|
||||||
{{> "systems/foundryvtt-reve-de-dragon/templates/chat-infojet.html"}}
|
{{> "systems/foundryvtt-reve-de-dragon/templates/chat-infojet.html"}}
|
||||||
<hr>
|
<hr>
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
<img class="chat-icon" src="{{competence.img}}" alt="{{competence.name}}" height="32" width="32" />
|
<img class="chat-icon" src="{{competence.img}}" alt="{{competence.name}}" />
|
||||||
<h4>
|
<h4>
|
||||||
{{alias}} {{show.title}}:
|
{{alias}} {{show.title}}:
|
||||||
{{#if selectedCarac}}{{selectedCarac.label}}
|
{{#if selectedCarac}}{{selectedCarac.label}}
|
||||||
|
@ -1,13 +1,13 @@
|
|||||||
<img class="chat-icon" src="systems/foundryvtt-reve-de-dragon/icons/competence_cuisine.webp" alt="cuisine" height="32" width="32" />
|
<img class="chat-icon" src="systems/foundryvtt-reve-de-dragon/icons/competence_cuisine.webp" alt="cuisine" />
|
||||||
<h4>
|
<h4>
|
||||||
{{alias}} tente cuisiner la recette : {{cuisine.name}} (niveau {{cuisine.data.niveau}})
|
{{alias}} tente de cuisiner la recette : {{oeuvre.name}} (niveau {{oeuvre.data.niveau}})
|
||||||
</h4>
|
</h4>
|
||||||
{{> "systems/foundryvtt-reve-de-dragon/templates/chat-infojet.html"}}
|
{{> "systems/foundryvtt-reve-de-dragon/templates/chat-infojet.html"}}
|
||||||
<hr>
|
<hr>
|
||||||
<div>
|
<div>
|
||||||
{{#if rolled.isSuccess}}
|
{{#if rolled.isSuccess}}
|
||||||
{{alias}} réussit sa cuisine, avec un plat de {{qualiteFinale}} pour {{cuisine.data.sust}} Points de Sustentation.
|
{{alias}} réussit sa recette, avec un plat de {{qualiteFinale}} pour {{oeuvre.data.sust}} Points de Sustentation.
|
||||||
{{else}}
|
{{else}}
|
||||||
{{alias}} fait un pière cuisinier(e), et obtient une qualité de {{qualiteFinale}}. Selon la décision du MJ, le plat peut fournir {{cuisine.data.sust}} Points de Sustentation
|
{{alias}} fait un pière cuisinier(e), et obtient une qualité de {{qualiteFinale}}. Selon la décision du MJ, le plat peut fournir {{oeuvre.data.sust}} Points de Sustentation
|
||||||
{{/if}}
|
{{/if}}
|
||||||
</div>
|
</div>
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
<img class="chat-icon" src="systems/foundryvtt-reve-de-dragon/icons/competence_danse.webp" alt="danse" height="32" width="32" />
|
<img class="chat-icon" src="systems/foundryvtt-reve-de-dragon/icons/competence_danse.webp" alt="danse" />
|
||||||
<h4>
|
<h4>
|
||||||
{{alias}} tente de danser : {{danse.name}} (niveau {{danse.data.niveau}})
|
{{alias}} tente de danser : {{oeuvre.name}} (niveau {{oeuvre.data.niveau}})
|
||||||
</h4>
|
</h4>
|
||||||
{{> "systems/foundryvtt-reve-de-dragon/templates/chat-infojet.html"}}
|
{{> "systems/foundryvtt-reve-de-dragon/templates/chat-infojet.html"}}
|
||||||
<hr>
|
<hr>
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
<img class="chat-icon" src="{{competence.img}}" alt="{{competence.name}}" height="32" width="32" />
|
<img class="chat-icon" src="{{competence.img}}" alt="{{competence.name}}" />
|
||||||
<h4>{{alias}} esquive une attaque à {{diffLibre}}</h4>
|
<h4>{{alias}} esquive une attaque à {{diffLibre}}</h4>
|
||||||
<div>{{selectedCarac.label}}{{#unless (eq selectedCarac.label competence.name)}} / {{competence.name}}{{/unless}}</div>
|
<div>{{selectedCarac.label}}{{#unless (eq selectedCarac.label competence.name)}} / {{competence.name}}{{/unless}}</div>
|
||||||
{{> "systems/foundryvtt-reve-de-dragon/templates/chat-infojet.html"}}
|
{{> "systems/foundryvtt-reve-de-dragon/templates/chat-infojet.html"}}
|
||||||
@ -21,8 +21,7 @@
|
|||||||
<img class="chat-icon" src="icons/svg/thrust.svg" alt="charge" height="32" width="32" />
|
<img class="chat-icon" src="icons/svg/thrust.svg" alt="charge" height="32" width="32" />
|
||||||
C'était une charge, les parades de votre adversaire auront un -4 et il ne pourra pas esquiver!
|
C'était une charge, les parades de votre adversaire auront un -4 et il ne pourra pas esquiver!
|
||||||
{{ else if (eq attackerRoll.tactique 'feinte')}}
|
{{ else if (eq attackerRoll.tactique 'feinte')}}
|
||||||
<img class="chat-icon" src="systems/foundryvtt-reve-de-dragon/icons/heures/hd06.svg" alt="feinte" height="32"
|
<img class="chat-icon" src="systems/foundryvtt-reve-de-dragon/icons/heures/hd06.svg" alt="feinte" height="32" width="32" />
|
||||||
width="32" />
|
|
||||||
C'était une feinte!
|
C'était une feinte!
|
||||||
{{/if}}
|
{{/if}}
|
||||||
</div>
|
</div>
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
{{#if competence.img}}
|
{{#if competence.img}}
|
||||||
<img class="chat-icon" src="{{competence.img}}" alt="{{competence.name}}" height="32" width="32" />
|
<img class="chat-icon" src="{{competence.img}}" alt="{{competence.name}}" />
|
||||||
{{/if}}
|
{{/if}}
|
||||||
<h4>
|
<h4>
|
||||||
{{alias}} {{#if show.title}}{{show.title}}: {{/if}}
|
{{alias}} {{#if show.title}}{{show.title}}: {{/if}}
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
<img class="chat-icon" src="systems/foundryvtt-reve-de-dragon/icons/competence_jeu.webp" alt="jeu" height="32" width="32" />
|
<img class="chat-icon" src="systems/foundryvtt-reve-de-dragon/icons/competence_jeu.webp" alt="jeu" />
|
||||||
<h4>
|
<h4>
|
||||||
{{alias}} joue à : {{jeu.name}}
|
{{alias}} joue à : {{oeuvre.name}}
|
||||||
</h4>
|
</h4>
|
||||||
{{> "systems/foundryvtt-reve-de-dragon/templates/chat-infojet.html"}}
|
{{> "systems/foundryvtt-reve-de-dragon/templates/chat-infojet.html"}}
|
||||||
<hr>
|
<hr>
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
<img class="chat-icon" src="{{competence.img}}" alt="{{competence.name}}" height="32" width="32" />
|
<img class="chat-icon" src="{{competence.img}}" alt="{{competence.name}}" />
|
||||||
<h4>
|
<h4>
|
||||||
{{alias}} a médité : {{meditation.name}}
|
{{alias}} a médité : {{meditation.name}}
|
||||||
</h4>
|
</h4>
|
||||||
|
@ -1,12 +1,12 @@
|
|||||||
<img class="chat-icon" src="systems/foundryvtt-reve-de-dragon/icons/competence_musique.webp" alt="musique" height="32" width="32" />
|
<img class="chat-icon" src="systems/foundryvtt-reve-de-dragon/icons/competence_musique.webp" alt="musique" />
|
||||||
<h4>
|
<h4>
|
||||||
{{alias}} tente de chanter la chanson : {{musique.name}} (niveau {{musique.data.niveau}})
|
{{alias}} tente de jouer le morceau : {{oeuvre.name}} (niveau {{oeuvre.data.niveau}})
|
||||||
</h4>
|
</h4>
|
||||||
{{> "systems/foundryvtt-reve-de-dragon/templates/chat-infojet.html"}}
|
{{> "systems/foundryvtt-reve-de-dragon/templates/chat-infojet.html"}}
|
||||||
<hr>
|
<hr>
|
||||||
<div>
|
<div>
|
||||||
{{#if rolled.isSuccess}}
|
{{#if rolled.isSuccess}}
|
||||||
{{alias}} réussi son interprétation avec une qualité de {{qualiteFinale}} .
|
{{alias}} réussit son interprétation avec une qualité de {{qualiteFinale}} .
|
||||||
{{else}}
|
{{else}}
|
||||||
{{alias}} est peu inspiré(e) et son interprétation a une qualité de {{qualiteFinale}}.
|
{{alias}} est peu inspiré(e) et son interprétation a une qualité de {{qualiteFinale}}.
|
||||||
{{/if}}
|
{{/if}}
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
<img class="chat-icon" src="{{competence.img}}" alt="{{competence.name}}" height="32" width="32" />
|
<img class="chat-icon" src="{{competence.img}}" alt="{{competence.name}}" />
|
||||||
<h4>{{alias}} pare une attaque à {{diffLibre}} - {{arme.name}}</h4>
|
<h4>{{alias}} pare une attaque à {{diffLibre}} - {{arme.name}}</h4>
|
||||||
<div>{{selectedCarac.label}}{{#unless (eq selectedCarac.label competence.name)}} / {{competence.name}}{{/unless}}</div>
|
<div>{{selectedCarac.label}}{{#unless (eq selectedCarac.label competence.name)}} / {{competence.name}}{{/unless}}</div>
|
||||||
{{> "systems/foundryvtt-reve-de-dragon/templates/chat-infojet.html"}}
|
{{> "systems/foundryvtt-reve-de-dragon/templates/chat-infojet.html"}}
|
||||||
@ -34,7 +34,7 @@
|
|||||||
{{#if attackerRoll.tactique}}
|
{{#if attackerRoll.tactique}}
|
||||||
<div>
|
<div>
|
||||||
{{#if (eq attackerRoll.tactique 'charge')}}
|
{{#if (eq attackerRoll.tactique 'charge')}}
|
||||||
<img class="chat-icon" src="icons/svg/thrust.svg" alt="charge" height="32" width="32" />
|
<img class="chat-icon" src="icons/svg/thrust.svg" alt="charge" />
|
||||||
C'était une charge, les parades de l'adversaire auront un -4 et il ne pourra pas esquiver!
|
C'était une charge, les parades de l'adversaire auront un -4 et il ne pourra pas esquiver!
|
||||||
{{ else if (eq attackerRoll.tactique 'feinte')}}
|
{{ else if (eq attackerRoll.tactique 'feinte')}}
|
||||||
<img class="chat-icon" src="systems/foundryvtt-reve-de-dragon/icons/heures/hd06.svg" alt="feinte" height="32"
|
<img class="chat-icon" src="systems/foundryvtt-reve-de-dragon/icons/heures/hd06.svg" alt="feinte" height="32"
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
<img class="chat-icon" src="{{competence.img}}" alt="{{competence.name}}" height="32" width="32" />
|
<img class="chat-icon" src="{{competence.img}}" alt="{{competence.name}}" />
|
||||||
<h4>
|
<h4>
|
||||||
{{alias}} {{#if isSortReserve}}met en réserve{{else}}lance{{/if}}
|
{{alias}} {{#if isSortReserve}}met en réserve{{else}}lance{{/if}}
|
||||||
le {{#if selectedSort.data.isrituel}}rituel{{else}}sort{{/if}}
|
le {{#if selectedSort.data.isrituel}}rituel{{else}}sort{{/if}}
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
<img class="chat-icon" src="{{competence.img}}" alt="{{competence.name}}" height="32" width="32" />
|
<img class="chat-icon" src="{{competence.img}}" alt="{{competence.name}}" />
|
||||||
<h4>
|
<h4>
|
||||||
{{alias}} travaille à sa tâche {{tache.name}}
|
{{alias}} travaille à sa tâche {{tache.name}}
|
||||||
<br>{{selectedCarac.label}}/{{competence.name}}
|
<br>{{selectedCarac.label}}/{{competence.name}}
|
||||||
|
Loading…
Reference in New Issue
Block a user