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
56 lines
2.1 KiB
JavaScript
56 lines
2.1 KiB
JavaScript
import { ChatUtility } from "../chat-utility.js";
|
|
import { Grammar } from "../grammar.js";
|
|
import { Misc } from "../misc.js";
|
|
import { RdDRollTables } from "../rdd-rolltables.js";
|
|
import { TMRUtility } from "../tmr-utility.js";
|
|
import { tmrTokenZIndex } from "../tmr-constants.js";
|
|
import { Draconique } from "./draconique.js";
|
|
import { ITEM_TYPES } from "../item.js";
|
|
import { TMRAnimations } from "./animation.js";
|
|
|
|
export class UrgenceDraconique extends Draconique {
|
|
|
|
type() { return 'queue' }
|
|
match(item) { return Draconique.isQueueDragon(item) && Grammar.toLowerCaseNoAccent(item.name).includes('urgence draconique'); }
|
|
manualMessage() { return false }
|
|
async onActorCreateOwned(actor, queue) {
|
|
const coordSortsReserve = actor.itemTypes[ITEM_TYPES.sortreserve].map(it => it.system.coord) ?? [];
|
|
if (coordSortsReserve.length == 0) {
|
|
// La queue se transforme en idée fixe
|
|
const ideeFixe = await RdDRollTables.getIdeeFixe();
|
|
ChatMessage.create({
|
|
whisper: ChatUtility.getOwners(actor),
|
|
content: `En l'absence de sorts en réserve, l'urgence draconique de ${actor.name} se transforme en ${ideeFixe.name}`
|
|
});
|
|
await actor.createEmbeddedDocuments('Item', [ideeFixe]);
|
|
await actor.deleteEmbeddedDocuments('Item', [queue.id]);
|
|
}
|
|
else {
|
|
const demiReve = actor.getDemiReve();
|
|
coordSortsReserve.sort(Misc.ascending(t => TMRUtility.distanceCoordTMR(t, demiReve)));
|
|
const tmr = TMRUtility.getTMR(coordSortsReserve[0]);
|
|
await this.createCaseTmr(actor, 'Urgence draconique', tmr, queue.id);
|
|
}
|
|
}
|
|
|
|
async onActorDeleteCaseTmr(actor, casetmr) {
|
|
await actor.deleteEmbeddedDocuments('Item', [casetmr.system.sourceid]);
|
|
}
|
|
|
|
code() { return 'urgence' }
|
|
tooltip(linkData) { return `Urgence draconique` }
|
|
img() { return 'systems/foundryvtt-reve-de-dragon/icons/tmr/urgence.svg' }
|
|
|
|
createSprite(pixiTMR) {
|
|
return TMRAnimations.withAnimation(
|
|
pixiTMR.sprite(this.code(), {
|
|
zIndex: tmrTokenZIndex.conquete,
|
|
decallage: pixiTMR.sizes.decallage(0, 0),
|
|
taille: () => pixiTMR.sizes.half,
|
|
}),
|
|
pixiTMR,
|
|
TMRAnimations.changeZoom()
|
|
)
|
|
}
|
|
}
|