await ChatMessage.create
ChatMessage.create est async, il faut donc de préférence l'appeler avec un await. Des effets secondaires avaient lieu (ordre de messages, updates ultérieurs parfois pas pris en compte)
This commit is contained in:
178
module/actor.js
178
module/actor.js
@@ -256,7 +256,7 @@ export class RdDActor extends RdDBaseActorSang {
|
|||||||
console.log('perte de rêve des enchantements', toUpdate)
|
console.log('perte de rêve des enchantements', toUpdate)
|
||||||
const messageUpdates = await Promise.all(
|
const messageUpdates = await Promise.all(
|
||||||
toUpdate.map(async it => await renderTemplate(`systems/foundryvtt-reve-de-dragon/templates/chat-pertereve-enchantement-chateaudormant.hbs`, it)))
|
toUpdate.map(async it => await renderTemplate(`systems/foundryvtt-reve-de-dragon/templates/chat-pertereve-enchantement-chateaudormant.hbs`, it)))
|
||||||
ChatMessage.create({
|
await ChatMessage.create({
|
||||||
whisper: ChatUtility.getOwners(this),
|
whisper: ChatUtility.getOwners(this),
|
||||||
content: messageUpdates.reduce(Misc.joining('<br>'))
|
content: messageUpdates.reduce(Misc.joining('<br>'))
|
||||||
})
|
})
|
||||||
@@ -322,8 +322,7 @@ export class RdDActor extends RdDBaseActorSang {
|
|||||||
await this.setBonusPotionSoin(0);
|
await this.setBonusPotionSoin(0);
|
||||||
}
|
}
|
||||||
await this.resetInfoSommeil()
|
await this.resetInfoSommeil()
|
||||||
ChatMessage.create(message);
|
await ChatMessage.create(message)
|
||||||
setTimeout(() => this.sheet.render(), 20)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
async _recuperationSante(message) {
|
async _recuperationSante(message) {
|
||||||
@@ -364,7 +363,7 @@ export class RdDActor extends RdDBaseActorSang {
|
|||||||
const message = {
|
const message = {
|
||||||
whisper: ChatUtility.getOwners(this),
|
whisper: ChatUtility.getOwners(this),
|
||||||
content: ""
|
content: ""
|
||||||
};
|
}
|
||||||
|
|
||||||
await this._recuperationSante(message)
|
await this._recuperationSante(message)
|
||||||
await this._recupereMoralChateauDormant(message)
|
await this._recupereMoralChateauDormant(message)
|
||||||
@@ -375,12 +374,12 @@ export class RdDActor extends RdDBaseActorSang {
|
|||||||
await this.retourSust(message)
|
await this.retourSust(message)
|
||||||
await this.$perteReveEnchantementsChateauDormants()
|
await this.$perteReveEnchantementsChateauDormants()
|
||||||
await this.$suppressionLancementsSort()
|
await this.$suppressionLancementsSort()
|
||||||
await RdDCoeur.applyCoeurChateauDormant(this, message);
|
await RdDCoeur.applyCoeurChateauDormant(this, message)
|
||||||
if (message.content != "") {
|
if (message.content != "") {
|
||||||
message.content = `A la fin Chateau Dormant, ${message.content}<br>Un nouveau jour se lève`;
|
message.content = `A la fin Chateau Dormant, ${message.content}<br>Un nouveau jour se lève`
|
||||||
ChatMessage.create(message);
|
await ChatMessage.create(message)
|
||||||
}
|
}
|
||||||
await this.resetInfoSommeil();
|
await this.resetInfoSommeil()
|
||||||
}
|
}
|
||||||
|
|
||||||
async resetInfoSommeil() {
|
async resetInfoSommeil() {
|
||||||
@@ -536,37 +535,36 @@ export class RdDActor extends RdDBaseActorSang {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (!options.grisReve) {
|
if (!options.grisReve) {
|
||||||
ChatMessage.create(message);
|
await ChatMessage.create(message)
|
||||||
}
|
}
|
||||||
if (options.chateauDormant) {
|
if (options.chateauDormant) {
|
||||||
await this.$dormirChateauDormant();
|
await this.$dormirChateauDormant()
|
||||||
}
|
}
|
||||||
setTimeout(() => this.sheet.render(), 20)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
async reveilReveDeDragon(message, heures) {
|
async reveilReveDeDragon(message, heures) {
|
||||||
const restant = Math.max(this.system.sommeil?.heures - heures, 0)
|
const restant = Math.max(this.system.sommeil?.heures - heures, 0)
|
||||||
if (restant > 0) {
|
if (restant > 0) {
|
||||||
await this.update({ 'system.sommeil': { heures: restant } });
|
await this.update({ 'system.sommeil': { heures: restant } })
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
async $dormirDesHeures(message, heures, options) {
|
async $dormirDesHeures(message, heures, options) {
|
||||||
const dormi = { heures: 0, etat: 'dort', jetsReve: [] };
|
const dormi = { heures: 0, etat: 'dort', jetsReve: [] };
|
||||||
for (; dormi.heures < heures && dormi.etat == 'dort'; dormi.heures++) {
|
for (; dormi.heures < heures && dormi.etat == 'dort'; dormi.heures++) {
|
||||||
await this.$recupererEthylisme(message);
|
await this.$recupererEthylisme(message)
|
||||||
if (options.grisReve) {
|
if (options.grisReve) {
|
||||||
await this.$recupererFatigue(message);
|
await this.$recupererFatigue(message)
|
||||||
}
|
}
|
||||||
else if (!this.system.sommeil?.insomnie) {
|
else if (!this.system.sommeil?.insomnie) {
|
||||||
await this.$recupererFatigue(message);
|
await this.$recupererFatigue(message)
|
||||||
await this.$jetRecuperationReve(dormi, message);
|
await this.$jetRecuperationReve(dormi, message)
|
||||||
if (dormi.etat == 'dort' && EffetsDraconiques.isDonDoubleReve(this)) {
|
if (dormi.etat == 'dort' && EffetsDraconiques.isDonDoubleReve(this)) {
|
||||||
await this.$jetRecuperationReve(dormi, message);
|
await this.$jetRecuperationReve(dormi, message)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return dormi;
|
return dormi
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
@@ -583,7 +581,7 @@ export class RdDActor extends RdDBaseActorSang {
|
|||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
if (!ReglesOptionnelles.isUsing("recuperation-reve")) {
|
if (!ReglesOptionnelles.isUsing("recuperation-reve")) {
|
||||||
ChatMessage.create({
|
await ChatMessage.create({
|
||||||
whisper: ChatUtility.getOwners(this),
|
whisper: ChatUtility.getOwners(this),
|
||||||
content: `Pas de récupération de rêve (${reve} points ignorés)`
|
content: `Pas de récupération de rêve (${reve} points ignorés)`
|
||||||
})
|
})
|
||||||
@@ -891,7 +889,7 @@ export class RdDActor extends RdDBaseActorSang {
|
|||||||
await competence.update({ 'system.xp': toXp })
|
await competence.update({ 'system.xp': toXp })
|
||||||
await ExperienceLog.add(this, XP_TOPIC.XP, fromXp, toXp, competence.name, true)
|
await ExperienceLog.add(this, XP_TOPIC.XP, fromXp, toXp, competence.name, true)
|
||||||
if (toXp > fromXp) {
|
if (toXp > fromXp) {
|
||||||
RdDUtility.checkThanatosXP(competence)
|
await RdDUtility.checkThanatosXP(competence)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -907,7 +905,7 @@ export class RdDActor extends RdDBaseActorSang {
|
|||||||
await competence.update({ 'system.xp_sort': toXpSort })
|
await competence.update({ 'system.xp_sort': toXpSort })
|
||||||
await ExperienceLog.add(this, XP_TOPIC.XPSORT, fromXpSort, toXpSort, competence.name, true)
|
await ExperienceLog.add(this, XP_TOPIC.XPSORT, fromXpSort, toXpSort, competence.name, true)
|
||||||
if (toXpSort > fromXpSort) {
|
if (toXpSort > fromXpSort) {
|
||||||
RdDUtility.checkThanatosXP(competence)
|
await RdDUtility.checkThanatosXP(competence)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -997,7 +995,7 @@ export class RdDActor extends RdDBaseActorSang {
|
|||||||
await this.update({ "system.reve.refoulement.value": 0 })
|
await this.update({ "system.reve.refoulement.value": 0 })
|
||||||
await this.ajouterSouffle({ chat: true })
|
await this.ajouterSouffle({ chat: true })
|
||||||
}
|
}
|
||||||
else{
|
else {
|
||||||
await this.update({ "system.reve.refoulement.value": refoulement })
|
await this.update({ "system.reve.refoulement.value": refoulement })
|
||||||
}
|
}
|
||||||
return roll
|
return roll
|
||||||
@@ -1009,7 +1007,7 @@ export class RdDActor extends RdDBaseActorSang {
|
|||||||
//souffle.id = undefined; //TBC
|
//souffle.id = undefined; //TBC
|
||||||
await this.createEmbeddedDocuments('Item', [souffle])
|
await this.createEmbeddedDocuments('Item', [souffle])
|
||||||
if (options.chat) {
|
if (options.chat) {
|
||||||
ChatMessage.create({
|
await ChatMessage.create({
|
||||||
whisper: ChatUtility.getOwners(this),
|
whisper: ChatUtility.getOwners(this),
|
||||||
content: this.name + " subit un Souffle de Dragon : " + souffle.name
|
content: this.name + " subit un Souffle de Dragon : " + souffle.name
|
||||||
})
|
})
|
||||||
@@ -1019,22 +1017,19 @@ export class RdDActor extends RdDBaseActorSang {
|
|||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
async ajouterQueue(options = { chat: false }) {
|
async ajouterQueue(options = { chat: false }) {
|
||||||
let queue;
|
const thanatos = this.system.reve.reve.thanatosused;
|
||||||
if (this.system.reve.reve.thanatosused) {
|
const queue = (thanatos ? await RdDRollTables.getOmbre() : await RdDRollTables.getQueue())
|
||||||
queue = await RdDRollTables.getOmbre();
|
if (thanatos) {
|
||||||
await this.update({ "system.reve.reve.thanatosused": false })
|
await this.update({ "system.reve.reve.thanatosused": false })
|
||||||
}
|
}
|
||||||
else {
|
await this.createEmbeddedDocuments('Item', [queue])
|
||||||
queue = await RdDRollTables.getQueue();
|
|
||||||
}
|
|
||||||
await this.createEmbeddedDocuments('Item', [queue]);
|
|
||||||
if (options.chat) {
|
if (options.chat) {
|
||||||
ChatMessage.create({
|
await ChatMessage.create({
|
||||||
whisper: ChatUtility.getOwners(this),
|
whisper: ChatUtility.getOwners(this),
|
||||||
content: this.name + " subit une Queue de Dragon : " + queue.name
|
content: this.name + " subit une Queue de Dragon : " + queue.name
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
return queue;
|
return queue
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
@@ -1098,14 +1093,14 @@ export class RdDActor extends RdDBaseActorSang {
|
|||||||
}
|
}
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
async reinsertionAleatoire(raison, accessible = tmr => true) {
|
async reinsertionAleatoire(raison, accessible = tmr => true) {
|
||||||
const innaccessible = this.buildTMRInnaccessible();
|
const innaccessible = this.buildTMRInnaccessible()
|
||||||
let tmr = await TMRUtility.getTMRAleatoire(tmr => accessible(tmr) && !innaccessible.includes(tmr.coord));
|
let tmr = await TMRUtility.getTMRAleatoire(tmr => accessible(tmr) && !innaccessible.includes(tmr.coord))
|
||||||
ChatMessage.create({
|
await ChatMessage.create({
|
||||||
content: `${raison} : ré-insertion aléatoire.`,
|
content: `${raison} : ré-insertion aléatoire.`,
|
||||||
whisper: ChatUtility.getOwners(this)
|
whisper: ChatUtility.getOwners(this)
|
||||||
});
|
})
|
||||||
await this.forcerPositionTMRInconnue(tmr);
|
await this.forcerPositionTMRInconnue(tmr)
|
||||||
return tmr;
|
return tmr
|
||||||
}
|
}
|
||||||
|
|
||||||
async forcerPositionTMRInconnue(tmr) {
|
async forcerPositionTMRInconnue(tmr) {
|
||||||
@@ -1169,7 +1164,7 @@ export class RdDActor extends RdDBaseActorSang {
|
|||||||
async jetEndurance(resteEndurance = undefined) {
|
async jetEndurance(resteEndurance = undefined) {
|
||||||
const result = super.jetEndurance(resteEndurance);
|
const result = super.jetEndurance(resteEndurance);
|
||||||
if (result.jetEndurance == 1) {
|
if (result.jetEndurance == 1) {
|
||||||
ChatMessage.create({ content: await this._gainXpConstitutionJetEndurance() });
|
await ChatMessage.create({ content: await this._gainXpConstitutionJetEndurance() })
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
@@ -1190,7 +1185,7 @@ export class RdDActor extends RdDBaseActorSang {
|
|||||||
}
|
}
|
||||||
const jetMoral = await this._jetDeMoral(situation, bonmoment)
|
const jetMoral = await this._jetDeMoral(situation, bonmoment)
|
||||||
const finMessage = (jetMoral.ajustement == 0 ? "Vous gardez votre moral" : jetMoral.ajustement > 0 ? "Vous gagnez du moral" : "Vous perdez du moral");
|
const finMessage = (jetMoral.ajustement == 0 ? "Vous gardez votre moral" : jetMoral.ajustement > 0 ? "Vous gagnez du moral" : "Vous perdez du moral");
|
||||||
ChatMessage.create({
|
await ChatMessage.create({
|
||||||
whisper: ChatUtility.getOwners(this),
|
whisper: ChatUtility.getOwners(this),
|
||||||
content: `${finMessage} - jet ${jetMoral.succes ? "réussi" : "manqué"} en situation ${SITUATION_MORAL[situation] ?? situation} (${jetMoral.jet}/${jetMoral.difficulte}).`
|
content: `${finMessage} - jet ${jetMoral.succes ? "réussi" : "manqué"} en situation ${SITUATION_MORAL[situation] ?? situation} (${jetMoral.jet}/${jetMoral.difficulte}).`
|
||||||
})
|
})
|
||||||
@@ -1494,7 +1489,7 @@ export class RdDActor extends RdDBaseActorSang {
|
|||||||
exaltation: exaltation
|
exaltation: exaltation
|
||||||
};
|
};
|
||||||
|
|
||||||
ChatMessage.create({
|
await ChatMessage.create({
|
||||||
whisper: ChatUtility.getOwners(this),
|
whisper: ChatUtility.getOwners(this),
|
||||||
content: await renderTemplate(`systems/foundryvtt-reve-de-dragon/templates/chat-resultat-transformer-stress.hbs`, stressRollData)
|
content: await renderTemplate(`systems/foundryvtt-reve-de-dragon/templates/chat-resultat-transformer-stress.hbs`, stressRollData)
|
||||||
});
|
});
|
||||||
@@ -1561,7 +1556,7 @@ export class RdDActor extends RdDBaseActorSang {
|
|||||||
xp: carac.xp
|
xp: carac.xp
|
||||||
}
|
}
|
||||||
if (display) {
|
if (display) {
|
||||||
ChatMessage.create({
|
await ChatMessage.create({
|
||||||
whisper: ChatUtility.getOwners(this),
|
whisper: ChatUtility.getOwners(this),
|
||||||
content: await renderTemplate(`systems/foundryvtt-reve-de-dragon/templates/chat-actor-carac-xp.hbs`, checkXp)
|
content: await renderTemplate(`systems/foundryvtt-reve-de-dragon/templates/chat-actor-carac-xp.hbs`, checkXp)
|
||||||
});
|
});
|
||||||
@@ -1596,7 +1591,7 @@ export class RdDActor extends RdDBaseActorSang {
|
|||||||
ChatUtility.blindMessageToGM({ content: content })
|
ChatUtility.blindMessageToGM({ content: content })
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
ChatMessage.create({
|
await ChatMessage.create({
|
||||||
whisper: ChatUtility.getOwners(this),
|
whisper: ChatUtility.getOwners(this),
|
||||||
content: content
|
content: content
|
||||||
});
|
});
|
||||||
@@ -1700,22 +1695,22 @@ export class RdDActor extends RdDBaseActorSang {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
isMauvaiseRencontre() { // Gestion queue/souffle 'Mauvaise Rencontre en Perpective'
|
async isMauvaiseRencontre() { // Gestion queue/souffle 'Mauvaise Rencontre en Perpective'
|
||||||
let addMsg = "";
|
let addMsg = ""
|
||||||
let rencSpecial = EffetsDraconiques.mauvaiseRencontre(this);
|
let rencSpecial = EffetsDraconiques.mauvaiseRencontre(this)
|
||||||
if (rencSpecial) {
|
if (rencSpecial) {
|
||||||
if (rencSpecial.type != 'souffle') {
|
if (rencSpecial.type != 'souffle') {
|
||||||
this.deleteEmbeddedDocuments('Item', [rencSpecial.id]); // Suppression dans la liste des queues
|
await this.deleteEmbeddedDocuments('Item', [rencSpecial.id]) // Suppression dans la liste des queues
|
||||||
addMsg = " La queue a été supprimée de votre fiche automatiquement";
|
addMsg = " La queue a été supprimée de votre fiche automatiquement"
|
||||||
} else {
|
} else {
|
||||||
addMsg = " Vous devez gérer manuellement le décompte de mauvaises rencontres.";
|
addMsg = " Vous devez gérer manuellement le décompte de mauvaises rencontres."
|
||||||
}
|
}
|
||||||
ChatMessage.create({
|
await ChatMessage.create({
|
||||||
content: "Vous êtes sous le coup d'une Mauvaise Rencontre en Persective." + addMsg,
|
content: "Vous êtes sous le coup d'une Mauvaise Rencontre en Persective." + addMsg,
|
||||||
whisper: ChatUtility.getOwners(this)
|
whisper: ChatUtility.getOwners(this)
|
||||||
});
|
})
|
||||||
}
|
}
|
||||||
return rencSpecial;
|
return rencSpecial
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
@@ -1725,7 +1720,7 @@ export class RdDActor extends RdDBaseActorSang {
|
|||||||
ChatMessage.create({
|
ChatMessage.create({
|
||||||
content: `Vous êtes sous le coup d'Inertie Draconique : vous perdrez ${countInertieDraconique + 1} cases de Fatigue par déplacement au lieu d'une.`,
|
content: `Vous êtes sous le coup d'Inertie Draconique : vous perdrez ${countInertieDraconique + 1} cases de Fatigue par déplacement au lieu d'une.`,
|
||||||
whisper: ChatUtility.getOwners(this)
|
whisper: ChatUtility.getOwners(this)
|
||||||
});
|
})
|
||||||
}
|
}
|
||||||
return countInertieDraconique + 1;
|
return countInertieDraconique + 1;
|
||||||
}
|
}
|
||||||
@@ -1733,11 +1728,11 @@ export class RdDActor extends RdDBaseActorSang {
|
|||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
async checkSoufflePeage(tmr) {
|
async checkSoufflePeage(tmr) {
|
||||||
if ((tmr.type == 'pont' || tmr.type == 'cite') && EffetsDraconiques.isPeage(this)) {
|
if ((tmr.type == 'pont' || tmr.type == 'cite') && EffetsDraconiques.isPeage(this)) {
|
||||||
await this.reveActuelIncDec(-1);
|
await this.reveActuelIncDec(-1)
|
||||||
ChatMessage.create({
|
await ChatMessage.create({
|
||||||
content: "Vous êtes sous le coup d'un Péage : l'entrée sur cette case vous a coûté 1 Point de Rêve (déduit automatiquement).",
|
content: "Vous êtes sous le coup d'un Péage : l'entrée sur cette case vous a coûté 1 Point de Rêve (déduit automatiquement).",
|
||||||
whisper: ChatUtility.getOwners(this)
|
whisper: ChatUtility.getOwners(this)
|
||||||
});
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1763,7 +1758,7 @@ export class RdDActor extends RdDBaseActorSang {
|
|||||||
}
|
}
|
||||||
if (reveActuel > rollData.depenseReve) {
|
if (reveActuel > rollData.depenseReve) {
|
||||||
// Incrémenter/gére le bonus de case
|
// Incrémenter/gére le bonus de case
|
||||||
RdDItemSort.incrementBonusCase(this, selectedSort, rollData.tmr.coord)
|
await RdDItemSort.incrementBonusCase(this, selectedSort, rollData.tmr.coord)
|
||||||
|
|
||||||
if (rollData.isSortReserve) {
|
if (rollData.isSortReserve) {
|
||||||
await this.sortMisEnReserve(selectedSort, rollData.competence, rollData.tmr.coord, Number(selectedSort.system.ptreve_reel))
|
await this.sortMisEnReserve(selectedSort, rollData.competence, rollData.tmr.coord, Number(selectedSort.system.ptreve_reel))
|
||||||
@@ -1796,7 +1791,7 @@ export class RdDActor extends RdDBaseActorSang {
|
|||||||
await RdDRollResult.displayRollData(rollData, this, 'chat-resultat-sort.hbs')
|
await RdDRollResult.displayRollData(rollData, this, 'chat-resultat-sort.hbs')
|
||||||
|
|
||||||
if (reveActuel == 0) { // 0 points de reve
|
if (reveActuel == 0) { // 0 points de reve
|
||||||
ChatMessage.create({ content: this.name + " est réduit à 0 Points de Rêve, et tombe endormi !" })
|
await ChatMessage.create({ content: this.name + " est réduit à 0 Points de Rêve, et tombe endormi !" })
|
||||||
}
|
}
|
||||||
if (!rollData.isSortReserve || !rolled.isSuccess) {
|
if (!rollData.isSortReserve || !rolled.isSuccess) {
|
||||||
this.tmrApp?.close()
|
this.tmrApp?.close()
|
||||||
@@ -2159,7 +2154,7 @@ export class RdDActor extends RdDBaseActorSang {
|
|||||||
async appelDestinee(onSuccess = () => { }, onEchec = () => { }) {
|
async appelDestinee(onSuccess = () => { }, onEchec = () => { }) {
|
||||||
let destinee = this.system.compteurs.destinee?.value ?? 0;
|
let destinee = this.system.compteurs.destinee?.value ?? 0;
|
||||||
if (destinee > 0) {
|
if (destinee > 0) {
|
||||||
ChatMessage.create({ content: `<span class="rdd-roll-part">${this.name} a fait appel à la Destinée !</span>` });
|
await ChatMessage.create({ content: `<span class="rdd-roll-part">${this.name} a fait appel à la Destinée !</span>` });
|
||||||
await this.update({ 'system.compteurs.destinee.value ': destinee - 1 })
|
await this.update({ 'system.compteurs.destinee.value ': destinee - 1 })
|
||||||
onSuccess()
|
onSuccess()
|
||||||
}
|
}
|
||||||
@@ -2194,10 +2189,10 @@ export class RdDActor extends RdDBaseActorSang {
|
|||||||
}
|
}
|
||||||
if (this.checkDesirLancinant()) {
|
if (this.checkDesirLancinant()) {
|
||||||
// Cas de désir lancinant, pas d'expérience sur particulière
|
// Cas de désir lancinant, pas d'expérience sur particulière
|
||||||
ChatMessage.create({
|
await ChatMessage.create({
|
||||||
content: `Vous souffrez au moins d'un Désir Lancinant, vous ne pouvez pas gagner d'expérience sur une Particulière tant que le désir n'est pas assouvi`,
|
content: `Vous souffrez au moins d'un Désir Lancinant, vous ne pouvez pas gagner d'expérience sur une Particulière tant que le désir n'est pas assouvi`,
|
||||||
whisper: ChatUtility.getOwners(this)
|
whisper: ChatUtility.getOwners(this)
|
||||||
});
|
})
|
||||||
return []
|
return []
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2325,15 +2320,15 @@ export class RdDActor extends RdDBaseActorSang {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
countMonteeLaborieuse() { // Return +1 par queue/ombre/souffle Montée Laborieuse présente
|
async countMonteeLaborieuse() { // Return +1 par queue/ombre/souffle Montée Laborieuse présente
|
||||||
let countMonteeLaborieuse = EffetsDraconiques.countMonteeLaborieuse(this);
|
let countMonteeLaborieuse = EffetsDraconiques.countMonteeLaborieuse(this);
|
||||||
if (countMonteeLaborieuse > 0) {
|
if (countMonteeLaborieuse > 0) {
|
||||||
ChatMessage.create({
|
await ChatMessage.create({
|
||||||
content: `Vous êtes sous le coup d'une Montée Laborieuse : vos montées en TMR coûtent ${countMonteeLaborieuse} Point de Rêve de plus.`,
|
content: `Vous êtes sous le coup d'une Montée Laborieuse : vos montées en TMR coûtent ${countMonteeLaborieuse} Point de Rêve de plus.`,
|
||||||
whisper: ChatUtility.getOwners(this)
|
whisper: ChatUtility.getOwners(this)
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
return countMonteeLaborieuse;
|
return countMonteeLaborieuse
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
@@ -2376,9 +2371,9 @@ export class RdDActor extends RdDBaseActorSang {
|
|||||||
async _doDisplayTMR(mode) {
|
async _doDisplayTMR(mode) {
|
||||||
let isRapide = mode == "rapide";
|
let isRapide = mode == "rapide";
|
||||||
if (mode != "visu") {
|
if (mode != "visu") {
|
||||||
let minReveValue = (isRapide && !EffetsDraconiques.isDeplacementAccelere(this) ? 3 : 2) + this.countMonteeLaborieuse();
|
let minReveValue = (isRapide && !EffetsDraconiques.isDeplacementAccelere(this) ? 3 : 2) + (await this.countMonteeLaborieuse())
|
||||||
if (this.getReveActuel() < minReveValue) {
|
if (this.getReveActuel() < minReveValue) {
|
||||||
ChatMessage.create({
|
await ChatMessage.create({
|
||||||
content: `Vous n'avez les ${minReveValue} Points de Reve nécessaires pour monter dans les Terres Médianes`,
|
content: `Vous n'avez les ${minReveValue} Points de Reve nécessaires pour monter dans les Terres Médianes`,
|
||||||
whisper: ChatUtility.getOwners(this)
|
whisper: ChatUtility.getOwners(this)
|
||||||
});
|
});
|
||||||
@@ -2420,15 +2415,16 @@ export class RdDActor extends RdDBaseActorSang {
|
|||||||
if (!viewOnly) {
|
if (!viewOnly) {
|
||||||
await this.supprimerSignesDraconiques(it => it.system.ephemere && it.system.duree == '1 round', { render: false })
|
await this.supprimerSignesDraconiques(it => it.system.ephemere && it.system.duree == '1 round', { render: false })
|
||||||
await this.setEffect(STATUSES.StatusDemiReve, false)
|
await this.setEffect(STATUSES.StatusDemiReve, false)
|
||||||
ChatUtility.tellToUserAndGM(message)
|
await ChatUtility.tellToUserAndGM(message)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
async supprimerSignesDraconiques(filter = it => true, options = { render: true }) {
|
async supprimerSignesDraconiques(filter = it => true, options = { render: true }) {
|
||||||
const signes = this.itemTypes[ITEM_TYPES.signedraconique].filter(filter)
|
const ids = this.itemTypes[ITEM_TYPES.signedraconique].filter(filter)
|
||||||
if (signes.length > 0) {
|
.map(it => it.id)
|
||||||
this.deleteEmbeddedDocuments("Item", signes.map(item => item.id), options)
|
if (ids.length > 0) {
|
||||||
|
await this.deleteEmbeddedDocuments("Item", ids, options)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2466,9 +2462,9 @@ export class RdDActor extends RdDBaseActorSang {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
verifierForceMin(item) {
|
async verifierForceMin(item) {
|
||||||
if (item.type == 'arme' && item.system.force > parseInt(this.system.carac.force.value)) {
|
if (item.type == 'arme' && item.system.force > parseInt(this.system.carac.force.value)) {
|
||||||
ChatMessage.create({
|
await ChatMessage.create({
|
||||||
content: `<strong>${this.name} s'est équipé(e) de l'arme ${item.name}, mais n'a pas une force suffisante pour l'utiliser normalement </strong>
|
content: `<strong>${this.name} s'est équipé(e) de l'arme ${item.name}, mais n'a pas une force suffisante pour l'utiliser normalement </strong>
|
||||||
(${item.system.force} nécessaire pour une Force de ${this.system.carac.force.value})`
|
(${item.system.force} nécessaire pour une Force de ${this.system.carac.force.value})`
|
||||||
});
|
});
|
||||||
@@ -2482,7 +2478,7 @@ export class RdDActor extends RdDBaseActorSang {
|
|||||||
await item.update({ "system.equipe": isEquipe })
|
await item.update({ "system.equipe": isEquipe })
|
||||||
this.computeEncTotal()
|
this.computeEncTotal()
|
||||||
if (isEquipe)
|
if (isEquipe)
|
||||||
this.verifierForceMin(item)
|
await this.verifierForceMin(item)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2744,25 +2740,25 @@ export class RdDActor extends RdDBaseActorSang {
|
|||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
async consommerPotionSoin(potion) {
|
async consommerPotionSoin(potion) {
|
||||||
potion.alias = this.name;
|
potion.alias = this.name
|
||||||
potion.supprimer = true;
|
potion.supprimer = true
|
||||||
|
|
||||||
if (potion.system.magique) {
|
if (potion.system.magique) {
|
||||||
// Gestion de la résistance:
|
// Gestion de la résistance:
|
||||||
potion.rolled = await RdDResolutionTable.roll(this.getReveActuel(), -8);
|
potion.rolled = await RdDResolutionTable.roll(this.getReveActuel(), -8)
|
||||||
if (potion.rolled.isEchec) {
|
if (potion.rolled.isEchec) {
|
||||||
await this.reveActuelIncDec(-1);
|
await this.reveActuelIncDec(-1);
|
||||||
potion.guerisonData = await this.buildPotionGuerisonList(potion.system.puissance);
|
potion.guerisonData = await this.buildPotionGuerisonList(potion.system.puissance)
|
||||||
potion.guerisonMinutes = potion.guerisonData.pointsConsommes * 5;
|
potion.guerisonMinutes = potion.guerisonData.pointsConsommes * 5
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (!potion.system.magique || potion.rolled.isSuccess) {
|
if (!potion.system.magique || potion.rolled.isSuccess) {
|
||||||
await this.setBonusPotionSoin(potion.system.herbebonus);
|
await this.setBonusPotionSoin(potion.system.herbebonus)
|
||||||
}
|
}
|
||||||
ChatMessage.create({
|
await ChatMessage.create({
|
||||||
whisper: ChatUtility.getOwners(this),
|
whisper: ChatUtility.getOwners(this),
|
||||||
content: await renderTemplate(`systems/foundryvtt-reve-de-dragon/templates/chat-consommer-potion-soin.hbs`, potion)
|
content: await renderTemplate(`systems/foundryvtt-reve-de-dragon/templates/chat-consommer-potion-soin.hbs`, potion)
|
||||||
});
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
async setBonusPotionSoin(bonus) {
|
async setBonusPotionSoin(bonus) {
|
||||||
@@ -2796,10 +2792,10 @@ export class RdDActor extends RdDBaseActorSang {
|
|||||||
if (!potion.system.magique || potion.rolled.isSuccess) {
|
if (!potion.system.magique || potion.rolled.isSuccess) {
|
||||||
this.bonusRepos = potion.system.herbebonus;
|
this.bonusRepos = potion.system.herbebonus;
|
||||||
}
|
}
|
||||||
ChatMessage.create({
|
await ChatMessage.create({
|
||||||
whisper: ChatUtility.getOwners(this),
|
whisper: ChatUtility.getOwners(this),
|
||||||
content: await renderTemplate(`systems/foundryvtt-reve-de-dragon/templates/chat-consommer-potion-repos.hbs`, potion)
|
content: await renderTemplate(`systems/foundryvtt-reve-de-dragon/templates/chat-consommer-potion-repos.hbs`, potion)
|
||||||
});
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
@@ -2821,7 +2817,7 @@ export class RdDActor extends RdDBaseActorSang {
|
|||||||
await this.createEmbeddedDocuments('Item', [newPotion])
|
await this.createEmbeddedDocuments('Item', [newPotion])
|
||||||
await this.diminuerQuantiteObjet(herbeData._id, herbeData.nbBrins)
|
await this.diminuerQuantiteObjet(herbeData._id, herbeData.nbBrins)
|
||||||
|
|
||||||
ChatMessage.create({
|
await ChatMessage.create({
|
||||||
whisper: ChatUtility.getOwners(this),
|
whisper: ChatUtility.getOwners(this),
|
||||||
content: await renderTemplate(`systems/foundryvtt-reve-de-dragon/templates/chat-fabriquer-potion-base.hbs`, {
|
content: await renderTemplate(`systems/foundryvtt-reve-de-dragon/templates/chat-fabriquer-potion-base.hbs`, {
|
||||||
alias: this.getAlias(),
|
alias: this.getAlias(),
|
||||||
@@ -2839,19 +2835,19 @@ export class RdDActor extends RdDBaseActorSang {
|
|||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
async consommerPotionGenerique(potion) {
|
async consommerPotionGenerique(potion) {
|
||||||
potion.alias = this.name;
|
potion.alias = this.name
|
||||||
|
|
||||||
if (potion.system.magique) {
|
if (potion.system.magique) {
|
||||||
// Gestion de la résistance:
|
// Gestion de la résistance:
|
||||||
potion.rolled = await RdDResolutionTable.roll(this.getReveActuel(), -8);
|
potion.rolled = await RdDResolutionTable.roll(this.getReveActuel(), -8);
|
||||||
if (potion.rolled.isEchec) {
|
if (potion.rolled.isEchec) {
|
||||||
await this.reveActuelIncDec(-1);
|
await this.reveActuelIncDec(-1)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
ChatMessage.create({
|
await ChatMessage.create({
|
||||||
whisper: ChatUtility.getOwners(this),
|
whisper: ChatUtility.getOwners(this),
|
||||||
content: await renderTemplate(`systems/foundryvtt-reve-de-dragon/templates/chat-consommer-potion-generique.hbs`, potion)
|
content: await renderTemplate(`systems/foundryvtt-reve-de-dragon/templates/chat-consommer-potion-generique.hbs`, potion)
|
||||||
});
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
@@ -2914,7 +2910,7 @@ export class RdDActor extends RdDBaseActorSang {
|
|||||||
let draconique = Draconique.all().find(it => it.match(item));
|
let draconique = Draconique.all().find(it => it.match(item));
|
||||||
if (draconique) {
|
if (draconique) {
|
||||||
await draconique.onActorCreateOwned(this, item)
|
await draconique.onActorCreateOwned(this, item)
|
||||||
this.notifyGestionTeteSouffleQueue(item, draconique.manualMessage());
|
await this.notifyGestionTeteSouffleQueue(item, draconique.manualMessage());
|
||||||
}
|
}
|
||||||
await this.setInfoSommeilInsomnie();
|
await this.setInfoSommeilInsomnie();
|
||||||
}
|
}
|
||||||
@@ -2970,8 +2966,8 @@ export class RdDActor extends RdDBaseActorSang {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
notifyGestionTeteSouffleQueue(item, manualMessage = true) {
|
async notifyGestionTeteSouffleQueue(item, manualMessage = true) {
|
||||||
ChatMessage.create({
|
await ChatMessage.create({
|
||||||
whisper: ChatUtility.getOwners(this),
|
whisper: ChatUtility.getOwners(this),
|
||||||
content: `${this.name} a reçu un/une ${item.type}: ${item.name}, qui ${manualMessage ? "n'est pas" : "est"} géré(e) automatiquement. ${manualMessage ? manualMessage : ''}`
|
content: `${this.name} a reçu un/une ${item.type}: ${item.name}, qui ${manualMessage ? "n'est pas" : "est"} géré(e) automatiquement. ${manualMessage ? manualMessage : ''}`
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -169,10 +169,11 @@ export class RdDBaseActorReve extends RdDBaseActor {
|
|||||||
}
|
}
|
||||||
|
|
||||||
async finDeRoundSuppressionEffetsTermines(options) {
|
async finDeRoundSuppressionEffetsTermines(options) {
|
||||||
for (let effect of this.getEffects()) {
|
const effects = this.getEffects();
|
||||||
|
for (let effect of effects) {
|
||||||
if (effect.duration.type !== 'none' && (effect.duration.remaining <= 0 || options.terminer)) {
|
if (effect.duration.type !== 'none' && (effect.duration.remaining <= 0 || options.terminer)) {
|
||||||
await effect.delete();
|
await effect.delete()
|
||||||
ChatMessage.create({ content: `${this.getAlias()} n'est plus ${Misc.lowerFirst(game.i18n.localize(effect.system.label))} !` });
|
await ChatMessage.create({ content: `${this.getAlias()} n'est plus ${Misc.lowerFirst(game.i18n.localize(effect.system.label))} !` })
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -615,7 +616,7 @@ export class RdDBaseActorReve extends RdDBaseActor {
|
|||||||
RdDPossessionV2.rollAttaquePossession(this)
|
RdDPossessionV2.rollAttaquePossession(this)
|
||||||
}
|
}
|
||||||
|
|
||||||
verifierForceMin(item) { }
|
async verifierForceMin(item) { }
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
async encaisser() { await RdDEncaisser.encaisser(this) }
|
async encaisser() { await RdDEncaisser.encaisser(this) }
|
||||||
@@ -675,10 +676,10 @@ export class RdDBaseActorReve extends RdDBaseActor {
|
|||||||
if (!encaissement.hasPlayerOwner && encaissement.endurance != 0) {
|
if (!encaissement.hasPlayerOwner && encaissement.endurance != 0) {
|
||||||
encaissement = foundry.utils.duplicate(encaissement)
|
encaissement = foundry.utils.duplicate(encaissement)
|
||||||
encaissement.isGM = true
|
encaissement.isGM = true
|
||||||
ChatMessage.create({
|
await ChatMessage.create({
|
||||||
whisper: ChatUtility.getGMs(),
|
whisper: ChatUtility.getGMs(),
|
||||||
content: await renderTemplate('systems/foundryvtt-reve-de-dragon/templates/chat-resultat-encaissement.hbs', encaissement)
|
content: await renderTemplate('systems/foundryvtt-reve-de-dragon/templates/chat-resultat-encaissement.hbs', encaissement)
|
||||||
});
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -36,7 +36,7 @@ export class RdDBaseActorSangSheet extends RdDBaseActorReveSheet {
|
|||||||
async jetEndurance() {
|
async jetEndurance() {
|
||||||
const endurance = this.actor.getEnduranceActuelle()
|
const endurance = this.actor.getEnduranceActuelle()
|
||||||
const result = await this.actor.jetEndurance(endurance);
|
const result = await this.actor.jetEndurance(endurance);
|
||||||
ChatMessage.create({
|
await ChatMessage.create({
|
||||||
content: `Jet d'Endurance : ${result.jetEndurance} / ${endurance}
|
content: `Jet d'Endurance : ${result.jetEndurance} / ${endurance}
|
||||||
<br>${this.actor.name} a ${result.sonne ? 'échoué' : 'réussi'} son Jet d'Endurance ${result.sonne ? 'et devient Sonné' : ''}`,
|
<br>${this.actor.name} a ${result.sonne ? 'échoué' : 'réussi'} son Jet d'Endurance ${result.sonne ? 'et devient Sonné' : ''}`,
|
||||||
whisper: ChatUtility.getOwners(this.actor)
|
whisper: ChatUtility.getOwners(this.actor)
|
||||||
|
|||||||
@@ -351,11 +351,10 @@ export class RdDBaseActorSang extends RdDBaseActorReve {
|
|||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
async jetDeVie() {
|
async jetDeVie() {
|
||||||
if (this.isDead()) {
|
if (this.isDead()) {
|
||||||
ChatMessage.create({
|
return await ChatMessage.create({
|
||||||
content: `Jet de Vie: ${this.getAlias()} est déjà mort, ce n'est pas la peine d'en rajouter !!!!!`,
|
content: `Jet de Vie: ${this.getAlias()} est déjà mort, ce n'est pas la peine d'en rajouter !!!!!`,
|
||||||
whisper: ChatUtility.getOwners(this)
|
whisper: ChatUtility.getOwners(this)
|
||||||
})
|
})
|
||||||
return
|
|
||||||
}
|
}
|
||||||
const jetDeVie = await RdDDice.roll("1d20");
|
const jetDeVie = await RdDDice.roll("1d20");
|
||||||
const sConst = this.getSConst();
|
const sConst = this.getSConst();
|
||||||
@@ -380,7 +379,7 @@ export class RdDBaseActorSang extends RdDBaseActorReve {
|
|||||||
else if (prochainJet > 0) {
|
else if (prochainJet > 0) {
|
||||||
msgText += `<br>Prochain jet de vie dans ${prochainJet} ${isCritique ? 'round' : 'minute'}${prochainJet > 1 ? 's' : ''} ${isCritique ? '(état critique)' : '(état grave)'}`
|
msgText += `<br>Prochain jet de vie dans ${prochainJet} ${isCritique ? 'round' : 'minute'}${prochainJet > 1 ? 's' : ''} ${isCritique ? '(état critique)' : '(état grave)'}`
|
||||||
}
|
}
|
||||||
ChatMessage.create({
|
return await ChatMessage.create({
|
||||||
content: msgText,
|
content: msgText,
|
||||||
whisper: ChatUtility.getOwners(this)
|
whisper: ChatUtility.getOwners(this)
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -450,7 +450,7 @@ export class RdDBaseActor extends Actor {
|
|||||||
msg = "Vous n'avez pas assez d'argent pour payer cette somme !";
|
msg = "Vous n'avez pas assez d'argent pour payer cette somme !";
|
||||||
}
|
}
|
||||||
|
|
||||||
ChatMessage.create({
|
await ChatMessage.create({
|
||||||
whisper: ChatUtility.getOwners(this),
|
whisper: ChatUtility.getOwners(this),
|
||||||
content: msg
|
content: msg
|
||||||
})
|
})
|
||||||
@@ -494,7 +494,7 @@ export class RdDBaseActor extends Actor {
|
|||||||
await Monnaie.optimiserFortune(this, sols + this.getFortune());
|
await Monnaie.optimiserFortune(this, sols + this.getFortune());
|
||||||
|
|
||||||
RdDAudio.PlayContextAudio("argent"); // Petit son
|
RdDAudio.PlayContextAudio("argent"); // Petit son
|
||||||
ChatMessage.create({
|
await ChatMessage.create({
|
||||||
whisper: ChatUtility.getOwners(this),
|
whisper: ChatUtility.getOwners(this),
|
||||||
content: `Vous avez reçu <strong>${sols} Sols</strong> ${fromActor ? " de " + fromActor.name : ''}, qui ont été ajoutés à votre argent.`
|
content: `Vous avez reçu <strong>${sols} Sols</strong> ${fromActor ? " de " + fromActor.name : ''}, qui ont été ajoutés à votre argent.`
|
||||||
})
|
})
|
||||||
@@ -548,7 +548,7 @@ export class RdDBaseActor extends Actor {
|
|||||||
}
|
}
|
||||||
const chatAchatItem = foundry.utils.duplicate(achat.vente);
|
const chatAchatItem = foundry.utils.duplicate(achat.vente);
|
||||||
chatAchatItem.quantiteTotal = quantite;
|
chatAchatItem.quantiteTotal = quantite;
|
||||||
ChatMessage.create({
|
await ChatMessage.create({
|
||||||
user: achat.userId,
|
user: achat.userId,
|
||||||
speaker: { alias: (acheteur ?? vendeur).getAlias() },
|
speaker: { alias: (acheteur ?? vendeur).getAlias() },
|
||||||
whisper: ChatUtility.getOwners(this),
|
whisper: ChatUtility.getOwners(this),
|
||||||
@@ -893,7 +893,7 @@ export class RdDBaseActor extends Actor {
|
|||||||
system: { description: this.system.description }
|
system: { description: this.system.description }
|
||||||
}
|
}
|
||||||
renderTemplate('systems/foundryvtt-reve-de-dragon/templates/post-actor.hbs', chatData)
|
renderTemplate('systems/foundryvtt-reve-de-dragon/templates/post-actor.hbs', chatData)
|
||||||
.then(html => ChatMessage.create(RdDUtility.chatDataSetup(html, modeOverride)));
|
.then(async html => await ChatMessage.create(RdDUtility.chatDataSetup(html, modeOverride)));
|
||||||
}
|
}
|
||||||
|
|
||||||
actionImpossible(action) {
|
actionImpossible(action) {
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ export class RdDTextEditor {
|
|||||||
$(html).on("click", '.roll-text', async event => await RdDTextEditor.rollText(event))
|
$(html).on("click", '.roll-text', async event => await RdDTextEditor.rollText(event))
|
||||||
}
|
}
|
||||||
|
|
||||||
static async enrichHTML(text, object, options = {showlink:true}) {
|
static async enrichHTML(text, object, options = { showlink: true }) {
|
||||||
const context = {
|
const context = {
|
||||||
text,
|
text,
|
||||||
object,
|
object,
|
||||||
@@ -70,9 +70,7 @@ export class RdDTextEditor {
|
|||||||
options: { showLink: false }
|
options: { showLink: false }
|
||||||
},
|
},
|
||||||
param)
|
param)
|
||||||
ChatMessage.create({
|
await ChatMessage.create({ content: text })
|
||||||
content: text
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -116,20 +116,20 @@ export class ChatUtility {
|
|||||||
return messageData
|
return messageData
|
||||||
}
|
}
|
||||||
|
|
||||||
static tellToUser(message) {
|
static async tellToUser(message) {
|
||||||
ChatMessage.create({ content: message, user: game.user.id, whisper: [game.user.id] });
|
await ChatMessage.create({ content: message, user: game.user.id, whisper: [game.user.id] });
|
||||||
}
|
}
|
||||||
|
|
||||||
static tellToGM(message) {
|
static async tellToGM(message) {
|
||||||
ChatMessage.create({
|
await ChatMessage.create({
|
||||||
user: game.user.id,
|
user: game.user.id,
|
||||||
content: message,
|
content: message,
|
||||||
whisper: ChatUtility.getGMs()
|
whisper: ChatUtility.getGMs()
|
||||||
});
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
static tellToUserAndGM(message) {
|
static async tellToUserAndGM(message) {
|
||||||
ChatMessage.create({
|
await ChatMessage.create({
|
||||||
user: game.user.id,
|
user: game.user.id,
|
||||||
content: message,
|
content: message,
|
||||||
whisper: ChatUtility.getUserAndGMs()
|
whisper: ChatUtility.getUserAndGMs()
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ import { TMRUtility } from "./tmr-utility.js";
|
|||||||
export class DialogCreateSigneDraconique extends Dialog {
|
export class DialogCreateSigneDraconique extends Dialog {
|
||||||
|
|
||||||
static async createSigneForActors() {
|
static async createSigneForActors() {
|
||||||
const signe = await RdDItemSigneDraconique.randomSigneDraconique({ephemere: true});
|
const signe = await RdDItemSigneDraconique.randomSigneDraconique({ ephemere: true });
|
||||||
let dialogData = {
|
let dialogData = {
|
||||||
signe: signe,
|
signe: signe,
|
||||||
tmrs: TMRUtility.buildSelectionTypesTMR(signe.system.typesTMR),
|
tmrs: TMRUtility.buildSelectionTypesTMR(signe.system.typesTMR),
|
||||||
@@ -36,25 +36,25 @@ export class DialogCreateSigneDraconique extends Dialog {
|
|||||||
super(conf, options);
|
super(conf, options);
|
||||||
this.dialogData = dialogData;
|
this.dialogData = dialogData;
|
||||||
}
|
}
|
||||||
|
|
||||||
async _onCreerSigneActeurs() {
|
async _onCreerSigneActeurs() {
|
||||||
await this.html.find("[name='signe.system.ephemere']").change();
|
await this.html.find("[name='signe.system.ephemere']").change()
|
||||||
await this.html.find(".signe-xp-sort").change();
|
await this.html.find(".signe-xp-sort").change()
|
||||||
this.validerSigne();
|
this.validerSigne()
|
||||||
this.dialogData.actors.filter(it => it.selected)
|
await Promise.all(this.dialogData.actors.filter(it => it.selected)
|
||||||
.map(it => game.actors.get(it.id))
|
.map(it => game.actors.get(it.id))
|
||||||
.forEach(actor => this._createSigneForActor(actor, this.dialogData.signe));
|
.map(async actor => await this._createSigneForActor(actor, this.dialogData.signe)))
|
||||||
}
|
}
|
||||||
|
|
||||||
async _createSigneForActor(actor, signe) {
|
async _createSigneForActor(actor, signe) {
|
||||||
actor.createEmbeddedDocuments("Item", [signe]);
|
await actor.createEmbeddedDocuments("Item", [signe]);
|
||||||
ChatMessage.create({
|
await ChatMessage.createChatMessage.create({
|
||||||
whisper: ChatUtility.getOwners(actor),
|
whisper: ChatUtility.getOwners(actor),
|
||||||
content: await renderTemplate("systems/foundryvtt-reve-de-dragon/templates/chat-signe-draconique-actor.hbs", {
|
content: await renderTemplate("systems/foundryvtt-reve-de-dragon/templates/chat-signe-draconique-actor.hbs", {
|
||||||
signe: signe,
|
signe: signe,
|
||||||
alias: actor.getAlias()
|
alias: actor.getAlias()
|
||||||
})
|
})
|
||||||
});
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
validerSigne() {
|
validerSigne() {
|
||||||
@@ -67,7 +67,7 @@ export class DialogCreateSigneDraconique extends Dialog {
|
|||||||
this.dialogData.signe.system.duree = this.html.find("[name='signe.system.duree']").val();
|
this.dialogData.signe.system.duree = this.html.find("[name='signe.system.duree']").val();
|
||||||
this.dialogData.signe.system.typesTMR = TMRUtility.buildListTypesTMRSelection(this.dialogData.tmrs);
|
this.dialogData.signe.system.typesTMR = TMRUtility.buildListTypesTMRSelection(this.dialogData.tmrs);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
activateListeners(html) {
|
activateListeners(html) {
|
||||||
super.activateListeners(html);
|
super.activateListeners(html);
|
||||||
@@ -81,7 +81,7 @@ export class DialogCreateSigneDraconique extends Dialog {
|
|||||||
}
|
}
|
||||||
|
|
||||||
async setSigneAleatoire() {
|
async setSigneAleatoire() {
|
||||||
const newSigne = await RdDItemSigneDraconique.randomSigneDraconique({ephemere: true});
|
const newSigne = await RdDItemSigneDraconique.randomSigneDraconique({ ephemere: true });
|
||||||
|
|
||||||
this.html.find("[name='signe.name']").val(newSigne.name);
|
this.html.find("[name='signe.name']").val(newSigne.name);
|
||||||
this.html.find("[name='signe.system.valeur.norm']").val(newSigne.system.valeur.norm);
|
this.html.find("[name='signe.system.valeur.norm']").val(newSigne.system.valeur.norm);
|
||||||
@@ -92,7 +92,7 @@ export class DialogCreateSigneDraconique extends Dialog {
|
|||||||
this.html.find("[name='signe.system.ephemere']").prop("checked", newSigne.system.ephemere);
|
this.html.find("[name='signe.system.ephemere']").prop("checked", newSigne.system.ephemere);
|
||||||
this.dialogData.tmrs = TMRUtility.buildSelectionTypesTMR(newSigne.system.typesTMR);
|
this.dialogData.tmrs = TMRUtility.buildSelectionTypesTMR(newSigne.system.typesTMR);
|
||||||
this.dialogData.tmrs.forEach(t => {
|
this.dialogData.tmrs.forEach(t => {
|
||||||
this.html.find(`[data-tmr-name='${t.name}']`).prop( "checked", t.selected);
|
this.html.find(`[data-tmr-name='${t.name}']`).prop("checked", t.selected);
|
||||||
})
|
})
|
||||||
this.setEphemere(newSigne.system.ephemere);
|
this.setEphemere(newSigne.system.ephemere);
|
||||||
}
|
}
|
||||||
@@ -113,7 +113,7 @@ export class DialogCreateSigneDraconique extends Dialog {
|
|||||||
onSelectTmr(event) {
|
onSelectTmr(event) {
|
||||||
const tmrName = this.html.find(event.currentTarget)?.data("tmr-name");
|
const tmrName = this.html.find(event.currentTarget)?.data("tmr-name");
|
||||||
const onTmr = this.dialogData.tmrs.find(it => it.name == tmrName);
|
const onTmr = this.dialogData.tmrs.find(it => it.name == tmrName);
|
||||||
if (onTmr){
|
if (onTmr) {
|
||||||
onTmr.selected = event.currentTarget.checked;
|
onTmr.selected = event.currentTarget.checked;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -91,7 +91,7 @@ export class RdDItemCompetence extends RdDItem {
|
|||||||
archetypeWarning: newNiv > this.system.niveau_archetype
|
archetypeWarning: newNiv > this.system.niveau_archetype
|
||||||
}
|
}
|
||||||
if (display) {
|
if (display) {
|
||||||
ChatMessage.create({
|
await ChatMessage.create({
|
||||||
whisper: ChatUtility.getOwners(this.actor),
|
whisper: ChatUtility.getOwners(this.actor),
|
||||||
content: await renderTemplate(`systems/foundryvtt-reve-de-dragon/templates/chat-actor-competence-xp.hbs`, xpData)
|
content: await renderTemplate(`systems/foundryvtt-reve-de-dragon/templates/chat-actor-competence-xp.hbs`, xpData)
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -153,10 +153,10 @@ export class RdDItemSort extends RdDItem {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
static incrementBonusCase(actor, sort, coord) {
|
static async incrementBonusCase(actor, sort, coord) {
|
||||||
let bonuscase = RdDItemSort.calculBonuscase(sort, coord)
|
let bonuscase = RdDItemSort.calculBonuscase(sort, coord)
|
||||||
|
|
||||||
actor.updateEmbeddedDocuments('Item', [{ _id: sort._id, 'system.bonuscase': bonuscase }]);
|
await actor.updateEmbeddedDocuments('Item', [{ _id: sort._id, 'system.bonuscase': bonuscase }]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -627,14 +627,14 @@ export class RdDItem extends Item {
|
|||||||
system: { description: this.system.description },
|
system: { description: this.system.description },
|
||||||
properties: this.getProprietes(),
|
properties: this.getProprietes(),
|
||||||
}
|
}
|
||||||
renderTemplate(this.getChatItemTemplate(), chatData).then(html => {
|
renderTemplate(this.getChatItemTemplate(), chatData).then(async html => {
|
||||||
let chatOptions = RdDUtility.chatDataSetup(html, modeOverride);
|
let chatOptions = RdDUtility.chatDataSetup(html, modeOverride);
|
||||||
ChatMessage.create(chatOptions)
|
await ChatMessage.create(chatOptions)
|
||||||
});
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
getChatItemTemplate() {
|
getChatItemTemplate() {
|
||||||
return 'systems/foundryvtt-reve-de-dragon/templates/post-item.hbs';
|
return 'systems/foundryvtt-reve-de-dragon/templates/post-item.hbs'
|
||||||
}
|
}
|
||||||
|
|
||||||
static propertyIfDefined(name, val, condition = true) {
|
static propertyIfDefined(name, val, condition = true) {
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ export class RdDItemArmure extends RdDItem {
|
|||||||
if (deterioration >= 10) {
|
if (deterioration >= 10) {
|
||||||
deterioration -= 10;
|
deterioration -= 10;
|
||||||
protection = this.calculProtectionDeterioree();
|
protection = this.calculProtectionDeterioree();
|
||||||
ChatMessage.create({ content: `Votre armure ${this.name} s'est détériorée, elle protège maintenant de ${protection}` });
|
await ChatMessage.create({ content: `Votre armure ${this.name} s'est détériorée, elle protège maintenant de ${protection}` });
|
||||||
}
|
}
|
||||||
await this.update({
|
await this.update({
|
||||||
'system.deterioration': deterioration,
|
'system.deterioration': deterioration,
|
||||||
|
|||||||
@@ -54,7 +54,7 @@ export class RdDItemBlessure extends RdDItem {
|
|||||||
}
|
}
|
||||||
await this.createBlessure(actor, gravite)
|
await this.createBlessure(actor, gravite)
|
||||||
|
|
||||||
ChatMessage.create({
|
await ChatMessage.create({
|
||||||
//TODO: hbs
|
//TODO: hbs
|
||||||
content: `Blessure ${definition.label} appliquée à ${actor.name}<br>Perte d'endurance : ${lostEndurance} (${definition.endurance})<br>Perte de Vie : ${definition.vie}`,
|
content: `Blessure ${definition.label} appliquée à ${actor.name}<br>Perte d'endurance : ${lostEndurance} (${definition.endurance})<br>Perte de Vie : ${definition.vie}`,
|
||||||
whisper: ChatUtility.getOwners(actor)
|
whisper: ChatUtility.getOwners(actor)
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ export class RdDItemMaladie extends RdDItem {
|
|||||||
const souffrance = mal.system.identifie
|
const souffrance = mal.system.identifie
|
||||||
? `de ${mal.name}`
|
? `de ${mal.name}`
|
||||||
: `d'un mal inconnu`
|
: `d'un mal inconnu`
|
||||||
ChatMessage.create({
|
await ChatMessage.create({
|
||||||
whisper: ChatUtility.getOwners(mal.actor),
|
whisper: ChatUtility.getOwners(mal.actor),
|
||||||
content: `${mal.actor.name} souffre ${souffrance} (${Misc.typeName('Item', mal.type)}): vérifiez que les effets ne se sont pas aggravés !`
|
content: `${mal.actor.name} souffre ${souffrance} (${Misc.typeName('Item', mal.type)}): vérifiez que les effets ne se sont pas aggravés !`
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -354,7 +354,7 @@ class _10_4_6_ServicesEnCommerces extends Migration {
|
|||||||
}
|
}
|
||||||
async transformInventaireCommerce(service) {
|
async transformInventaireCommerce(service) {
|
||||||
const serviceItems = (service.system.items ?? []);
|
const serviceItems = (service.system.items ?? []);
|
||||||
const commerceItems = await Promise.all(serviceItems.map(async (it) => { return await this.transformToItemBoutique(it); }));
|
const commerceItems = await Promise.all(serviceItems.map((it) => this.transformToItemBoutique(it)))
|
||||||
return commerceItems.concat(Monnaie.monnaiesStandard());
|
return commerceItems.concat(Monnaie.monnaiesStandard());
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -434,7 +434,7 @@ class _10_7_0_MigrationBlessures extends Migration {
|
|||||||
'system.blessures.graves.liste': [],
|
'system.blessures.graves.liste': [],
|
||||||
'system.blessures.critiques.liste': []
|
'system.blessures.critiques.liste': []
|
||||||
})
|
})
|
||||||
}));
|
}))
|
||||||
}
|
}
|
||||||
creerBlessure(gravite, graviteTexte, blessure, timestamp) {
|
creerBlessure(gravite, graviteTexte, blessure, timestamp) {
|
||||||
const dateBlessure = timestamp.addJours(-blessure.jours);
|
const dateBlessure = timestamp.addJours(-blessure.jours);
|
||||||
|
|||||||
@@ -168,7 +168,7 @@ export class Apprecier {
|
|||||||
|
|
||||||
async rollMoral(moral = undefined) {
|
async rollMoral(moral = undefined) {
|
||||||
if (this.raisons.length > 0) {
|
if (this.raisons.length > 0) {
|
||||||
ChatMessage.create({
|
await ChatMessage.create({
|
||||||
whisper: ChatUtility.getOwners(this.actor),
|
whisper: ChatUtility.getOwners(this.actor),
|
||||||
content: 'Pas de jet de moral:' + Misc.concat(this.raisons.map(r => `<br> - ${r}`))
|
content: 'Pas de jet de moral:' + Misc.concat(this.raisons.map(r => `<br> - ${r}`))
|
||||||
})
|
})
|
||||||
@@ -176,7 +176,6 @@ export class Apprecier {
|
|||||||
}
|
}
|
||||||
|
|
||||||
moral = moral ?? this.appreciation.moral
|
moral = moral ?? this.appreciation.moral
|
||||||
// TODO: jet de moral
|
|
||||||
await this.actor.jetDeMoral(moral, this.appreciation.bonmoment)
|
await this.actor.jetDeMoral(moral, this.appreciation.bonmoment)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -199,8 +199,8 @@ export class RdDCombatManager extends Combat {
|
|||||||
<div>
|
<div>
|
||||||
Etant donné son ${action.name}, son initative pour ce premier round est désormais de ${initData.init}.
|
Etant donné son ${action.name}, son initative pour ce premier round est désormais de ${initData.init}.
|
||||||
</div>`
|
</div>`
|
||||||
ChatMessage.create({ content: msg });
|
ChatMessage.create({ content: msg })
|
||||||
game.combat.setInitiative(combatant._id, initData.init);
|
game.combat.setInitiative(combatant._id, initData.init)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -610,7 +610,7 @@ export class RdDCombat {
|
|||||||
async proposerAjustementTirLancer(rollData) {
|
async proposerAjustementTirLancer(rollData) {
|
||||||
if (['tir', 'lancer'].includes(rollData.competence.system.categorie)) {
|
if (['tir', 'lancer'].includes(rollData.competence.system.categorie)) {
|
||||||
if (this.defender.isEntiteBlurette()) {
|
if (this.defender.isEntiteBlurette()) {
|
||||||
ChatMessage.create({
|
await ChatMessage.create({
|
||||||
content: `<strong>La cible est une blurette, l'arme à distance sera perdue dans le blurêve`,
|
content: `<strong>La cible est une blurette, l'arme à distance sera perdue dans le blurêve`,
|
||||||
whisper: ChatUtility.getGMs()
|
whisper: ChatUtility.getGMs()
|
||||||
})
|
})
|
||||||
@@ -625,7 +625,7 @@ export class RdDCombat {
|
|||||||
},
|
},
|
||||||
Distance.ajustements(_token, defenderToken, { arme: rollData.arme, main: rollData.competence.system.categorie })
|
Distance.ajustements(_token, defenderToken, { arme: rollData.arme, main: rollData.competence.system.categorie })
|
||||||
)
|
)
|
||||||
ChatMessage.create({
|
await ChatMessage.create({
|
||||||
content: await renderTemplate('systems/foundryvtt-reve-de-dragon/templates/chat-info-distance.hbs', info),
|
content: await renderTemplate('systems/foundryvtt-reve-de-dragon/templates/chat-info-distance.hbs', info),
|
||||||
whisper: ChatUtility.getGMs()
|
whisper: ChatUtility.getGMs()
|
||||||
})
|
})
|
||||||
@@ -756,7 +756,7 @@ export class RdDCombat {
|
|||||||
let rollData = this._prepareAttaque(competence, arme)
|
let rollData = this._prepareAttaque(competence, arme)
|
||||||
console.log("RdDCombat.attaque >>>", rollData)
|
console.log("RdDCombat.attaque >>>", rollData)
|
||||||
if (arme) {
|
if (arme) {
|
||||||
this.attacker.verifierForceMin(arme);
|
await this.attacker.verifierForceMin(arme);
|
||||||
}
|
}
|
||||||
await this.proposerAjustementTirLancer(rollData)
|
await this.proposerAjustementTirLancer(rollData)
|
||||||
|
|
||||||
|
|||||||
@@ -367,7 +367,7 @@ export class RdDCommands {
|
|||||||
|
|
||||||
const carac = params[0];
|
const carac = params[0];
|
||||||
const competence = length > 1 ? '/' + Misc.join(params.slice(1, length), ' ') : ''
|
const competence = length > 1 ? '/' + Misc.join(params.slice(1, length), ' ') : ''
|
||||||
ChatMessage.create({ content: `@roll[${carac}${competence}/${diff}]` })
|
await ChatMessage.create({ content: `@roll[${carac}${competence}/${diff}]` })
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -117,7 +117,7 @@ export class RdDMeteo {
|
|||||||
meteo.nuage.description = RdDMeteo.nuage(meteo.nuage.force);
|
meteo.nuage.description = RdDMeteo.nuage(meteo.nuage.force);
|
||||||
meteo.pluie.description = RdDMeteo.pluie(meteo.pluie.force);
|
meteo.pluie.description = RdDMeteo.pluie(meteo.pluie.force);
|
||||||
|
|
||||||
ChatMessage.create({
|
await ChatMessage.create({
|
||||||
content: await renderTemplate('systems/foundryvtt-reve-de-dragon/templates/chat-resultat-meteo.hbs', meteo),
|
content: await renderTemplate('systems/foundryvtt-reve-de-dragon/templates/chat-resultat-meteo.hbs', meteo),
|
||||||
whisper: ChatUtility.getGMs()
|
whisper: ChatUtility.getGMs()
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -49,7 +49,7 @@ export class RdDTMRDialog extends Dialog {
|
|||||||
await PixiTMR.init()
|
await PixiTMR.init()
|
||||||
let html = await renderTemplate('systems/foundryvtt-reve-de-dragon/templates/dialog-tmr.hbs', tmrData);
|
let html = await renderTemplate('systems/foundryvtt-reve-de-dragon/templates/dialog-tmr.hbs', tmrData);
|
||||||
if (tmrData.mode != 'visu' && !game.user.isGM) {
|
if (tmrData.mode != 'visu' && !game.user.isGM) {
|
||||||
ChatMessage.create({ content: actor.name + " est monté dans les TMR en mode : " + tmrData.mode, whisper: ChatUtility.getGMs() });
|
await ChatMessage.create({ content: actor.name + " est monté dans les TMR en mode : " + tmrData.mode, whisper: ChatUtility.getGMs() });
|
||||||
}
|
}
|
||||||
return new RdDTMRDialog(html, actor, tmrData)
|
return new RdDTMRDialog(html, actor, tmrData)
|
||||||
}
|
}
|
||||||
@@ -138,7 +138,7 @@ export class RdDTMRDialog extends Dialog {
|
|||||||
this.html.find('img.tmr-move').click(event => this.deplacementTMR(this.html.find(event.currentTarget)?.data('move')));
|
this.html.find('img.tmr-move').click(event => this.deplacementTMR(this.html.find(event.currentTarget)?.data('move')));
|
||||||
|
|
||||||
// Gestion du cout de montée en points de rêve
|
// Gestion du cout de montée en points de rêve
|
||||||
await this.actor.reveActuelIncDec(this.calculCoutMonteeTMR());
|
await this.actor.reveActuelIncDec(await this.calculCoutMonteeTMR());
|
||||||
this.cumulFatigue += this.fatigueParCase;
|
this.cumulFatigue += this.fatigueParCase;
|
||||||
|
|
||||||
// Le reste...
|
// Le reste...
|
||||||
@@ -305,8 +305,8 @@ export class RdDTMRDialog extends Dialog {
|
|||||||
await this.$checkQuitterTMR();
|
await this.$checkQuitterTMR();
|
||||||
}
|
}
|
||||||
|
|
||||||
calculCoutMonteeTMR() {
|
async calculCoutMonteeTMR() {
|
||||||
return ((this.tmrdata.isRapide && !EffetsDraconiques.isDeplacementAccelere(this.actor)) ? -2 : -1) - this.actor.countMonteeLaborieuse();
|
return ((this.tmrdata.isRapide && !EffetsDraconiques.isDeplacementAccelere(this.actor)) ? -2 : -1) - (await this.actor.countMonteeLaborieuse())
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
@@ -501,7 +501,7 @@ export class RdDTMRDialog extends Dialog {
|
|||||||
rencData.poesie = { extrait: result.poesie, reference: result.reference };
|
rencData.poesie = { extrait: result.poesie, reference: result.reference };
|
||||||
rencData.message = this.$formatMessageRencontre(rencData, result.message);
|
rencData.message = this.$formatMessageRencontre(rencData, result.message);
|
||||||
|
|
||||||
ChatMessage.create({
|
await ChatMessage.create({
|
||||||
whisper: ChatUtility.getOwners(this.actor),
|
whisper: ChatUtility.getOwners(this.actor),
|
||||||
content: await renderTemplate(`systems/foundryvtt-reve-de-dragon/templates/chat-rencontre-tmr.hbs`, rencData)
|
content: await renderTemplate(`systems/foundryvtt-reve-de-dragon/templates/chat-rencontre-tmr.hbs`, rencData)
|
||||||
});
|
});
|
||||||
@@ -653,7 +653,7 @@ export class RdDTMRDialog extends Dialog {
|
|||||||
this.restoreTMRAfterAction()
|
this.restoreTMRAfterAction()
|
||||||
if (myRoll == 7) {
|
if (myRoll == 7) {
|
||||||
ChatUtility.tellToUser(myRoll + ": Rencontre en " + coordTMR);
|
ChatUtility.tellToUser(myRoll + ": Rencontre en " + coordTMR);
|
||||||
return await game.system.rdd.rencontresTMR.getRencontreAleatoire(tmr, this.actor.isMauvaiseRencontre())
|
return await game.system.rdd.rencontresTMR.getRencontreAleatoire(tmr, await this.actor.isMauvaiseRencontre())
|
||||||
} else {
|
} else {
|
||||||
ChatUtility.tellToUser(myRoll + ": Pas de rencontre en " + coordTMR);
|
ChatUtility.tellToUser(myRoll + ": Pas de rencontre en " + coordTMR);
|
||||||
return undefined;
|
return undefined;
|
||||||
@@ -708,7 +708,7 @@ export class RdDTMRDialog extends Dialog {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
rollData.poesie = await Poetique.getExtrait();
|
rollData.poesie = await Poetique.getExtrait();
|
||||||
ChatMessage.create({
|
await ChatMessage.create({
|
||||||
whisper: ChatUtility.getOwners(this.actor),
|
whisper: ChatUtility.getOwners(this.actor),
|
||||||
content: await renderTemplate(`systems/foundryvtt-reve-de-dragon/templates/chat-resultat-maitrise-tmr.hbs`, rollData)
|
content: await renderTemplate(`systems/foundryvtt-reve-de-dragon/templates/chat-resultat-maitrise-tmr.hbs`, rollData)
|
||||||
});
|
});
|
||||||
@@ -728,16 +728,16 @@ export class RdDTMRDialog extends Dialog {
|
|||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
isCaseHumide(tmr) {
|
isCaseHumide(tmr) {
|
||||||
if (!(TMRUtility.isCaseHumide(tmr) || this.isCaseHumideAdditionelle(tmr))) {
|
if (!(TMRUtility.isCaseHumide(tmr) || this.isCaseHumideAdditionelle(tmr))) {
|
||||||
return false;
|
return false
|
||||||
}
|
}
|
||||||
if (this.isCaseMaitrisee(tmr.coord)) {
|
if (this.isCaseMaitrisee(tmr.coord)) {
|
||||||
ChatMessage.create({
|
ChatMessage.create({
|
||||||
content: tmr.label + ": cette case humide est déja maitrisée grâce à votre Tête <strong>Quête des Eaux</strong>",
|
content: tmr.label + ": cette case humide est déja maitrisée grâce à votre Tête <strong>Quête des Eaux</strong>",
|
||||||
whisper: ChatUtility.getOwners(this.actor)
|
whisper: ChatUtility.getOwners(this.actor)
|
||||||
});
|
})
|
||||||
return false;
|
return false
|
||||||
}
|
}
|
||||||
return true;
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
@@ -747,16 +747,16 @@ export class RdDTMRDialog extends Dialog {
|
|||||||
content: tmr.label + ": Vous êtes sous le coup d'une Impraticabilité des Ponts : ce pont doit être maîtrisé comme une case humide.",
|
content: tmr.label + ": Vous êtes sous le coup d'une Impraticabilité des Ponts : ce pont doit être maîtrisé comme une case humide.",
|
||||||
whisper: ChatUtility.getOwners(this.actor)
|
whisper: ChatUtility.getOwners(this.actor)
|
||||||
});
|
});
|
||||||
return true;
|
return true
|
||||||
}
|
}
|
||||||
if (this.isCaseInondee(tmr.coord)) {
|
if (this.isCaseInondee(tmr.coord)) {
|
||||||
ChatMessage.create({
|
ChatMessage.create({
|
||||||
content: tmr.label + ": cette case est inondée, elle doit être maîtrisée comme une case humide.",
|
content: tmr.label + ": cette case est inondée, elle doit être maîtrisée comme une case humide.",
|
||||||
whisper: ChatUtility.getOwners(this.actor)
|
whisper: ChatUtility.getOwners(this.actor)
|
||||||
});
|
});
|
||||||
return true;
|
return true
|
||||||
}
|
}
|
||||||
return false;
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
@@ -825,7 +825,7 @@ export class RdDTMRDialog extends Dialog {
|
|||||||
rollData.souffle = await this.actor.ajouterSouffle({ chat: false })
|
rollData.souffle = await this.actor.ajouterSouffle({ chat: false })
|
||||||
}
|
}
|
||||||
rollData.poesie = await Poetique.getExtrait()
|
rollData.poesie = await Poetique.getExtrait()
|
||||||
ChatMessage.create({
|
await ChatMessage.create({
|
||||||
whisper: ChatUtility.getOwners(this.actor),
|
whisper: ChatUtility.getOwners(this.actor),
|
||||||
content: await renderTemplate(`systems/foundryvtt-reve-de-dragon/templates/chat-resultat-maitrise-tmr.hbs`, rollData)
|
content: await renderTemplate(`systems/foundryvtt-reve-de-dragon/templates/chat-resultat-maitrise-tmr.hbs`, rollData)
|
||||||
})
|
})
|
||||||
@@ -876,7 +876,7 @@ export class RdDTMRDialog extends Dialog {
|
|||||||
const reserveSecurite = EffetsDraconiques.isReserveEnSecurite(this.actor);
|
const reserveSecurite = EffetsDraconiques.isReserveEnSecurite(this.actor);
|
||||||
const reserveExtensible = this.isReserveExtensible(coord);
|
const reserveExtensible = this.isReserveExtensible(coord);
|
||||||
if (!EffetsDraconiques.isUrgenceDraconique(this.actor) && (reserveSecurite || reserveExtensible)) {
|
if (!EffetsDraconiques.isUrgenceDraconique(this.actor) && (reserveSecurite || reserveExtensible)) {
|
||||||
ChatMessage.create({
|
await ChatMessage.create({
|
||||||
content: await renderTemplate(`systems/foundryvtt-reve-de-dragon/templates/chat-demande-declencher-sort.hbs`, {
|
content: await renderTemplate(`systems/foundryvtt-reve-de-dragon/templates/chat-demande-declencher-sort.hbs`, {
|
||||||
actor: this.actor,
|
actor: this.actor,
|
||||||
sorts: sorts,
|
sorts: sorts,
|
||||||
@@ -892,13 +892,13 @@ export class RdDTMRDialog extends Dialog {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
lancerSortEnReserve(coord, sortId) {
|
async lancerSortEnReserve(coord, sortId) {
|
||||||
const sort = this.getSortsReserve(coord)
|
const sort = this.getSortsReserve(coord)
|
||||||
.find(it => it.id == sortId);
|
.find(it => it.id == sortId);
|
||||||
if (sort) {
|
if (sort) {
|
||||||
this.processSortReserve(sort);
|
await this.processSortReserve(sort);
|
||||||
} else {
|
} else {
|
||||||
ChatMessage.create({
|
await ChatMessage.create({
|
||||||
content: "Une erreur est survenue : impossible de récupérer le sort en réserve demandé.",
|
content: "Une erreur est survenue : impossible de récupérer le sort en réserve demandé.",
|
||||||
whisper: ChatUtility.getOwners(this.actor)
|
whisper: ChatUtility.getOwners(this.actor)
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -752,12 +752,12 @@ export class RdDUtility {
|
|||||||
actor.tmrApp.positionnerDemiReve(coord);
|
actor.tmrApp.positionnerDemiReve(coord);
|
||||||
});
|
});
|
||||||
// Gestion spécifique des sorts en réserve multiples (ie têtes)
|
// Gestion spécifique des sorts en réserve multiples (ie têtes)
|
||||||
$(html).on("click", '.declencher-sort-reserve', event => {
|
$(html).on("click", '.declencher-sort-reserve', async event => {
|
||||||
let coord = event.currentTarget.attributes['data-tmr-coord'].value;
|
let coord = event.currentTarget.attributes['data-tmr-coord'].value;
|
||||||
let sortId = event.currentTarget.attributes['data-sort-id'].value;
|
let sortId = event.currentTarget.attributes['data-sort-id'].value;
|
||||||
let actorId = event.currentTarget.attributes['data-actor-id'].value;
|
let actorId = event.currentTarget.attributes['data-actor-id'].value;
|
||||||
let actor = game.actors.get(actorId);
|
let actor = game.actors.get(actorId);
|
||||||
actor.tmrApp.lancerSortEnReserve(coord, sortId);
|
await actor.tmrApp.lancerSortEnReserve(coord, sortId);
|
||||||
// TODO: supprimer le message?
|
// TODO: supprimer le message?
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -846,12 +846,12 @@ export class RdDUtility {
|
|||||||
return game.user.character;
|
return game.user.character;
|
||||||
}
|
}
|
||||||
if (msgPlayer != undefined) {
|
if (msgPlayer != undefined) {
|
||||||
msgPlayer += "<br>vous pouvez sélectionner un seul token lié à un personnage";
|
msgPlayer += "<br>vous pouvez sélectionner un seul token lié à un personnage"
|
||||||
msgPlayer += "<br>vous devez être connecté comme joueur avec un personnage sélectionné";
|
msgPlayer += "<br>vous devez être connecté comme joueur avec un personnage sélectionné";
|
||||||
ui.notifications.warn(msgPlayer);
|
ui.notifications.warn(msgPlayer);
|
||||||
ChatMessage.create({ content: msgPlayer, whisper: [game.user] });
|
ChatMessage.create({ content: msgPlayer, whisper: [game.user] })
|
||||||
}
|
}
|
||||||
return undefined;
|
return undefined
|
||||||
}
|
}
|
||||||
|
|
||||||
static doWithSelectedActor(onSelected = () => { }, filter = actor => true) {
|
static doWithSelectedActor(onSelected = () => { }, filter = actor => true) {
|
||||||
@@ -944,9 +944,9 @@ export class RdDUtility {
|
|||||||
content: `<p>Etes vous certain de vouloir supprimer: ${item.name}?</p>`,
|
content: `<p>Etes vous certain de vouloir supprimer: ${item.name}?</p>`,
|
||||||
title: `Supprimer ${item.name}`,
|
title: `Supprimer ${item.name}`,
|
||||||
buttonLabel: "Supprimer",
|
buttonLabel: "Supprimer",
|
||||||
onAction: () => {
|
onAction: async () => {
|
||||||
console.log('Delete : ', itemId);
|
console.log('Delete : ', itemId);
|
||||||
actor.deleteEmbeddedDocuments('Item', [itemId], { renderSheet: false });
|
await actor.deleteEmbeddedDocuments('Item', [itemId], { renderSheet: false });
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
if (item.isConteneurNonVide()) {
|
if (item.isConteneurNonVide()) {
|
||||||
@@ -957,9 +957,9 @@ export class RdDUtility {
|
|||||||
'deleteall': {
|
'deleteall': {
|
||||||
icon: '<i class="fas fa-check"></i>',
|
icon: '<i class="fas fa-check"></i>',
|
||||||
label: "Supprimer conteneur et contenu",
|
label: "Supprimer conteneur et contenu",
|
||||||
callback: () => {
|
callback: async () => {
|
||||||
console.log("Delete : ", itemId);
|
console.log("Delete : ", itemId);
|
||||||
actor.deleteAllConteneur(itemId, { renderSheet: false });
|
await actor.deleteAllConteneur(itemId, { renderSheet: false });
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@@ -997,10 +997,10 @@ export class RdDUtility {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*-------------------------------------------- */
|
/*-------------------------------------------- */
|
||||||
static checkThanatosXP(item) {
|
static async checkThanatosXP(item) {
|
||||||
if (item.isCompetencePersonnage() && item.name.includes('Thanatos')) {
|
if (item.isCompetencePersonnage() && item.name.includes('Thanatos')) {
|
||||||
let message = "Vous avez mis des points d'Expérience en Thanatos !<br>Vous devez réduire manuellement d'un même montant d'XP une autre compétence Draconique.";
|
let message = "Vous avez mis des points d'Expérience en Thanatos !<br>Vous devez réduire manuellement d'un même montant d'XP une autre compétence Draconique.";
|
||||||
ChatMessage.create({
|
await ChatMessage.create({
|
||||||
whisper: ChatUtility.getUserAndGMs(),
|
whisper: ChatUtility.getUserAndGMs(),
|
||||||
content: message
|
content: message
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -280,7 +280,7 @@ export class RdDCalendrier extends Application {
|
|||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
async setNewTimestamp(newTimestamp) {
|
async setNewTimestamp(newTimestamp) {
|
||||||
const oldTimestamp = this.timestamp;
|
const oldTimestamp = this.timestamp;
|
||||||
await Promise.all(game.actors.map(async actor => await actor.onTimeChanging(oldTimestamp, newTimestamp)));
|
await Promise.all(game.actors.map(actor => actor.onTimeChanging(oldTimestamp, newTimestamp)))
|
||||||
RdDTimestamp.setWorldTime(newTimestamp);
|
RdDTimestamp.setWorldTime(newTimestamp);
|
||||||
if (oldTimestamp.indexDate + 1 == newTimestamp.indexDate && ReglesOptionnelles.isUsing("chateau-dormant-gardien")) {
|
if (oldTimestamp.indexDate + 1 == newTimestamp.indexDate && ReglesOptionnelles.isUsing("chateau-dormant-gardien")) {
|
||||||
await DialogChateauDormant.create();
|
await DialogChateauDormant.create();
|
||||||
|
|||||||
@@ -103,7 +103,7 @@ export class EffetsRencontre {
|
|||||||
tete: context.rolled.isPart,
|
tete: context.rolled.isPart,
|
||||||
poesie: await Poetique.getExtrait()
|
poesie: await Poetique.getExtrait()
|
||||||
})
|
})
|
||||||
ChatMessage.create({
|
await ChatMessage.create({
|
||||||
whisper: ChatUtility.getOwners(context.actor),
|
whisper: ChatUtility.getOwners(context.actor),
|
||||||
content: await renderTemplate(`systems/foundryvtt-reve-de-dragon/templates/chat-resultat-reve-de-dragon.hbs`, context)
|
content: await renderTemplate(`systems/foundryvtt-reve-de-dragon/templates/chat-resultat-reve-de-dragon.hbs`, context)
|
||||||
});
|
});
|
||||||
@@ -118,7 +118,7 @@ export class EffetsRencontre {
|
|||||||
context.queues.push(await context.actor.ajouterQueue());
|
context.queues.push(await context.actor.ajouterQueue());
|
||||||
}
|
}
|
||||||
|
|
||||||
ChatMessage.create({
|
await ChatMessage.create({
|
||||||
whisper: ChatUtility.getOwners(context.actor),
|
whisper: ChatUtility.getOwners(context.actor),
|
||||||
content: await renderTemplate(`systems/foundryvtt-reve-de-dragon/templates/chat-resultat-reve-de-dragon.hbs`, context)
|
content: await renderTemplate(`systems/foundryvtt-reve-de-dragon/templates/chat-resultat-reve-de-dragon.hbs`, context)
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -27,13 +27,13 @@ export class PresentCites extends Draconique {
|
|||||||
async _ajouterPresents(actor, tete) {
|
async _ajouterPresents(actor, tete) {
|
||||||
let existants = actor.items.filter(it => this.isCase(it)).map(it => it.system.coord);
|
let existants = actor.items.filter(it => this.isCase(it)).map(it => it.system.coord);
|
||||||
if (existants.length > 0) {
|
if (existants.length > 0) {
|
||||||
ChatMessage.create({
|
await ChatMessage.create({
|
||||||
whisper: ChatUtility.getOwners(actor),
|
whisper: ChatUtility.getOwners(actor),
|
||||||
content: "Vous avez encore des présents dans des cités, vous devrez tirer une autre tête pour remplacer celle ci!"
|
content: "Vous avez encore des présents dans des cités, vous devrez tirer une autre tête pour remplacer celle ci!"
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
let cites = TMRUtility.filterTMR(it => it.type == 'cite');
|
let cites = TMRUtility.filterTMR(it => it.type == 'cite')
|
||||||
for (let tmr of cites) {
|
for (let tmr of cites) {
|
||||||
await this.createCaseTmr(actor, 'Présent', tmr, tete.id);
|
await this.createCaseTmr(actor, 'Présent', tmr, tete.id);
|
||||||
}
|
}
|
||||||
@@ -43,7 +43,7 @@ export class PresentCites extends Draconique {
|
|||||||
async choisirUnPresent(casetmr, onChoixPresent) {
|
async choisirUnPresent(casetmr, onChoixPresent) {
|
||||||
const presents = await game.system.rdd.rencontresTMR.getPresentsCite()
|
const presents = await game.system.rdd.rencontresTMR.getPresentsCite()
|
||||||
const buttons = {};
|
const buttons = {};
|
||||||
presents.forEach(r => buttons['present'+r.id] = { icon: '<i class="fas fa-check"></i>', label: r.name, callback: async () => onChoixPresent(r) });
|
presents.forEach(r => buttons['present' + r.id] = { icon: '<i class="fas fa-check"></i>', label: r.name, callback: async () => onChoixPresent(r) });
|
||||||
let dialog = new Dialog({
|
let dialog = new Dialog({
|
||||||
title: "Présent des cités",
|
title: "Présent des cités",
|
||||||
content: `La ${this.tmrLabel(casetmr)} vous offre un présent, faites votre choix`,
|
content: `La ${this.tmrLabel(casetmr)} vous offre un présent, faites votre choix`,
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ export class UrgenceDraconique extends Draconique {
|
|||||||
if (coordSortsReserve.length == 0) {
|
if (coordSortsReserve.length == 0) {
|
||||||
// La queue se transforme en idée fixe
|
// La queue se transforme en idée fixe
|
||||||
const ideeFixe = await RdDRollTables.getIdeeFixe();
|
const ideeFixe = await RdDRollTables.getIdeeFixe();
|
||||||
ChatMessage.create({
|
await ChatMessage.create({
|
||||||
whisper: ChatUtility.getOwners(actor),
|
whisper: ChatUtility.getOwners(actor),
|
||||||
content: `En l'absence de sorts en réserve, l'urgence draconique de ${actor.name} se transforme en ${ideeFixe.name}`
|
content: `En l'absence de sorts en réserve, l'urgence draconique de ${actor.name} se transforme en ${ideeFixe.name}`
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -174,7 +174,7 @@ export class DialogFatigueVoyage extends Dialog {
|
|||||||
.filter(it => it.selected)
|
.filter(it => it.selected)
|
||||||
.forEach(async it => {
|
.forEach(async it => {
|
||||||
const perteFatigue = fatigueBase + it.ajustement
|
const perteFatigue = fatigueBase + it.ajustement
|
||||||
ChatMessage.create({
|
await ChatMessage.create({
|
||||||
whisper: ChatUtility.getOwners(it.actor),
|
whisper: ChatUtility.getOwners(it.actor),
|
||||||
content: await renderTemplate(
|
content: await renderTemplate(
|
||||||
'systems/foundryvtt-reve-de-dragon/templates/voyage/chat-fatigue_voyage.hbs',
|
'systems/foundryvtt-reve-de-dragon/templates/voyage/chat-fatigue_voyage.hbs',
|
||||||
|
|||||||
Reference in New Issue
Block a user