Vincent Vandemeulebrouck
582df7e290
Les messages dans les TMRs sont envoyés au GM Simplification des messages de tchat liés à un actor: on peut utiliser les Owners (car les GMs sont owner). Au lieu de passer le name de l'Actor (qui peut être incorrect si deux actors ont le même, mais pas les mêmes propriétaires), on passe directement l'actor pour déterminer mles destinataires de messages
60 lines
2.1 KiB
JavaScript
60 lines
2.1 KiB
JavaScript
import { ChatUtility } from "../chat-utility.js";
|
|
import { Grammar } from "../grammar.js";
|
|
import { TMRUtility } from "../tmr-utility.js";
|
|
import { tmrTokenZIndex } from "../tmr-constants.js";
|
|
import { Draconique } from "./draconique.js";
|
|
|
|
export class PresentCites extends Draconique {
|
|
|
|
type() { return 'tete' }
|
|
match(item) { return Draconique.isTeteDragon(item) && Grammar.toLowerCaseNoAccent(item.name).includes('present des cites'); }
|
|
manualMessage() { return false }
|
|
async onActorCreateOwned(actor, tete) { await this._ajouterPresents(actor, tete); }
|
|
|
|
code() { return 'present-cites' }
|
|
tooltip(linkData) { return `La cité a un présent` }
|
|
img() { return 'systems/foundryvtt-reve-de-dragon/icons/tmr/present.svg' }
|
|
|
|
createSprite(pixiTMR) {
|
|
return pixiTMR.sprite(this.code(),
|
|
{
|
|
zIndex: tmrTokenZIndex.tetes,
|
|
decallage: pixiTMR.sizes.decallage(-1, -1),
|
|
taille: () => pixiTMR.sizes.third
|
|
});
|
|
}
|
|
|
|
async _ajouterPresents(actor, tete) {
|
|
let existants = actor.items.filter(it => this.isCase(it)).map(it => it.system.coord);
|
|
if (existants.length > 0) {
|
|
ChatMessage.create({
|
|
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!"
|
|
})
|
|
}
|
|
else {
|
|
let cites = TMRUtility.filterTMR(it => it.type == 'cite');
|
|
for (let tmr of cites) {
|
|
await this.createCaseTmr(actor, 'Présent', tmr, tete.id);
|
|
}
|
|
}
|
|
}
|
|
|
|
async choisirUnPresent(casetmr, onChoixPresent) {
|
|
const presents = await game.system.rdd.rencontresTMR.getPresentsCite()
|
|
const buttons = {};
|
|
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({
|
|
title: "Présent des cités",
|
|
content: `La ${this.tmrLabel(casetmr)} vous offre un présent, faites votre choix`,
|
|
buttons: buttons
|
|
});
|
|
await dialog.render(true);
|
|
return dialog
|
|
}
|
|
|
|
async ouvrirLePresent(actor, casetmr) {
|
|
await actor.deleteEmbeddedDocuments('Item', [casetmr.id]);
|
|
}
|
|
}
|