Fix: soucis avec plusieurs queues&souffles
=> montée laborieuse, mauvaises rencontres Simplification de EffetsDraconiques: passer l'actor pour tester si l'acteur a un effet sur lui, ou un item pour tester si un item correspond
This commit is contained in:
parent
9a8ef9f316
commit
f0d23bb1d0
@ -337,7 +337,7 @@ export class RdDActorSheet extends ActorSheet {
|
|||||||
ui.notifications.info("Impossible de lancer l'initiative sans être dans un combat.");
|
ui.notifications.info("Impossible de lancer l'initiative sans être dans un combat.");
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
// Display TMR, visuualisation
|
// Display TMR, visualisation
|
||||||
html.find('.visu-tmr').click(async event => {
|
html.find('.visu-tmr').click(async event => {
|
||||||
this.actor.displayTMR("visu");
|
this.actor.displayTMR("visu");
|
||||||
});
|
});
|
||||||
|
@ -2373,14 +2373,13 @@ export class RdDActor extends Actor {
|
|||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
isRencontreSpeciale() { // Gestion queue/souffle 'Mauvaise Rencontre en Perpective'
|
isRencontreSpeciale() { // Gestion queue/souffle 'Mauvaise Rencontre en Perpective'
|
||||||
let addMsg = "";
|
let addMsg = "";
|
||||||
let rencSpecial = this.data.items.find(item => EffetsDraconiques.isMauvaiseRencontre(item));
|
let rencSpecial = EffetsDraconiques.mauvaiseRencontre(this);
|
||||||
if (rencSpecial) {
|
if (rencSpecial) {
|
||||||
rencSpecial = Misc.data(rencSpecial); // To keep it
|
|
||||||
if (rencSpecial.type != 'souffle') {
|
if (rencSpecial.type != 'souffle') {
|
||||||
this.deleteEmbeddedDocuments('Item', [rencSpecial._id]); // Suppression dans la liste des queues
|
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 manuellement.";
|
addMsg = " Vous devez gérer manuellement le décompte de mauvaises rencontres.";
|
||||||
}
|
}
|
||||||
ChatMessage.create({
|
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,
|
||||||
@ -3138,7 +3137,7 @@ export class RdDActor extends Actor {
|
|||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
countMonteeLaborieuse() { // Return +1 par queue/ombre/souffle Montée Laborieuse présente
|
countMonteeLaborieuse() { // Return +1 par queue/ombre/souffle Montée Laborieuse présente
|
||||||
let countMonteeLaborieuse = this.filterItemsData(it => EffetsDraconiques.isMonteeLaborieuse(it)).length;
|
let countMonteeLaborieuse = EffetsDraconiques.countMonteeLaborieuse(this);
|
||||||
if (countMonteeLaborieuse > 0) {
|
if (countMonteeLaborieuse > 0) {
|
||||||
ChatMessage.create({
|
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.`,
|
||||||
|
@ -589,7 +589,7 @@ export class RdDTMRDialog extends Dialog {
|
|||||||
maitrise: { verbe: 'maîtriser', action: 'Maîtriser le fleuve' }
|
maitrise: { verbe: 'maîtriser', action: 'Maîtriser le fleuve' }
|
||||||
}
|
}
|
||||||
rollData.double = EffetsDraconiques.isDoubleResistanceFleuve(this.actor) ? true : undefined,
|
rollData.double = EffetsDraconiques.isDoubleResistanceFleuve(this.actor) ? true : undefined,
|
||||||
rollData.competence.data.defaut_carac = 'reve-actuel';
|
rollData.competence.data.defaut_carac = 'reve-actuel';
|
||||||
await this._rollMaitriseCaseHumide(rollData);
|
await this._rollMaitriseCaseHumide(rollData);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -92,43 +92,10 @@ export class EffetsDraconiques {
|
|||||||
static isPresentCite(caseTMR, coord) {
|
static isPresentCite(caseTMR, coord) {
|
||||||
return EffetsDraconiques.presentCites.isCase(caseTMR, coord);
|
return EffetsDraconiques.presentCites.isCase(caseTMR, coord);
|
||||||
}
|
}
|
||||||
/* -------------------------------------------- */
|
|
||||||
static isMauvaiseRencontre(item) {
|
|
||||||
return EffetsDraconiques.isMatching(item, it => Draconique.isQueueSouffle(it) && it.name.toLowerCase().includes('mauvaise rencontre'));
|
|
||||||
}
|
|
||||||
|
|
||||||
static isMonteeLaborieuse(item) {
|
|
||||||
return EffetsDraconiques.isMatching(item, it => Draconique.isQueueSouffle(it) && it.name.toLowerCase().includes('montée laborieuse'));
|
|
||||||
}
|
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
static isFermetureCite(item) {
|
static isSortImpossible(actor) {
|
||||||
return EffetsDraconiques.isMatching(item, it => EffetsDraconiques.fermetureCites.match(it));
|
return actor.data.items.find(it =>
|
||||||
}
|
|
||||||
|
|
||||||
static isPontImpraticable(item) {
|
|
||||||
return EffetsDraconiques.isMatching(item, it => EffetsDraconiques.pontImpraticable.match(it));
|
|
||||||
}
|
|
||||||
|
|
||||||
static isDoubleResistanceFleuve(item) {
|
|
||||||
return EffetsDraconiques.isMatching(item, it => Draconique.isSouffleDragon(it) && it.name.toLowerCase().includes('résistance du fleuve'));
|
|
||||||
}
|
|
||||||
|
|
||||||
static isPeage(item) {
|
|
||||||
return EffetsDraconiques.isMatching(item, it => Draconique.isSouffleDragon(it) && it.name.toLowerCase().includes('péage'));
|
|
||||||
}
|
|
||||||
|
|
||||||
static isPeriple(item) {
|
|
||||||
return EffetsDraconiques.isMatching(item, it => EffetsDraconiques.periple.match(it));
|
|
||||||
}
|
|
||||||
|
|
||||||
static isDesorientation(item) {
|
|
||||||
return EffetsDraconiques.isMatching(item, it => EffetsDraconiques.desorientation.match(it)); // TODO
|
|
||||||
}
|
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
|
||||||
static isSortImpossible(item) {
|
|
||||||
return EffetsDraconiques.isMatching(item, it =>
|
|
||||||
EffetsDraconiques.conquete.match(it) ||
|
EffetsDraconiques.conquete.match(it) ||
|
||||||
EffetsDraconiques.periple.match(it) ||
|
EffetsDraconiques.periple.match(it) ||
|
||||||
EffetsDraconiques.urgenceDraconique.match(it) ||
|
EffetsDraconiques.urgenceDraconique.match(it) ||
|
||||||
@ -136,57 +103,57 @@ export class EffetsDraconiques {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
static isSortReserveImpossible(item) {
|
static isSortReserveImpossible(actor) {
|
||||||
return EffetsDraconiques.isMatching(item, it =>
|
return actor.data.items.find(it =>
|
||||||
EffetsDraconiques.conquete.match(it) ||
|
EffetsDraconiques.conquete.match(it) ||
|
||||||
EffetsDraconiques.periple.match(it) ||
|
EffetsDraconiques.periple.match(it) ||
|
||||||
EffetsDraconiques.pelerinage.match(it)
|
EffetsDraconiques.pelerinage.match(it)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
static isConquete(item) {
|
static isDonDoubleReve(actor) {
|
||||||
return EffetsDraconiques.isMatching(item, it => EffetsDraconiques.conquete.match(it));
|
return actor.data.items.find(it => Draconique.isTeteDragon(it) && it.name == 'Don de double-rêve');
|
||||||
}
|
}
|
||||||
|
|
||||||
static isPelerinage(item) {
|
static isConnaissanceFleuve(actor) {
|
||||||
return EffetsDraconiques.isMatching(item, it => EffetsDraconiques.pelerinage.match(it));
|
return actor.data.items.find(it => Draconique.isTeteDragon(it) && it.name.toLowerCase().includes('connaissance du fleuve'));
|
||||||
}
|
}
|
||||||
|
|
||||||
static countInertieDraconique(item) {
|
static isReserveEnSecurite(actor) {
|
||||||
return EffetsDraconiques.count(item, it => Draconique.isQueueDragon(it) && it.name.toLowerCase().includes('inertie draconique'));
|
return actor.data.items.find(it => Draconique.isTeteDragon(it) && it.name.toLowerCase().includes(' en sécurité'));
|
||||||
}
|
}
|
||||||
|
|
||||||
static isUrgenceDraconique(item) {
|
static isDeplacementAccelere(actor) {
|
||||||
return EffetsDraconiques.isMatching(item, it => EffetsDraconiques.urgenceDraconique.match(it));
|
return actor.data.items.find(it => Draconique.isTeteDragon(it) && it.name.toLowerCase().includes(' déplacement accéléré'));
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
static isDoubleResistanceFleuve(actor) {
|
||||||
static isDonDoubleReve(item) {
|
return actor.data.items.find(it => Draconique.isSouffleDragon(it) && it.name.toLowerCase().includes('résistance du fleuve'));
|
||||||
return EffetsDraconiques.isMatching(item, it => Draconique.isTeteDragon(it) && it.name == 'Don de double-rêve');
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static isConnaissanceFleuve(item) {
|
static countInertieDraconique(actor) {
|
||||||
return EffetsDraconiques.isMatching(item, it => Draconique.isTeteDragon(it) && it.name.toLowerCase().includes('connaissance du fleuve'));
|
return actor.data.items.filter(it => Draconique.isQueueDragon(it) && it.name.toLowerCase().includes('inertie draconique')).length;
|
||||||
}
|
}
|
||||||
|
|
||||||
static isReserveEnSecurite(item) {
|
static countMonteeLaborieuse(actor) {
|
||||||
return EffetsDraconiques.isMatching(item, it => Draconique.isTeteDragon(it) && it.name.toLowerCase().includes(' en sécurité'));
|
return actor.data.items.filter(it => Draconique.isQueueSouffle(it) && it.name.toLowerCase().includes('montée laborieuse')).length;
|
||||||
}
|
}
|
||||||
|
|
||||||
static isDeplacementAccelere(item) {
|
static mauvaiseRencontre(actor) {
|
||||||
item = Misc.data(item);
|
return actor.data.items.find(it => Draconique.isQueueSouffle(it) && it.name.toLowerCase().includes('mauvaise rencontre'));
|
||||||
return EffetsDraconiques.isMatching(item, it => Draconique.isTeteDragon(it) && it.name.toLowerCase().includes(' déplacement accéléré'));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static isMatching(item, matcher) {
|
static isPontImpraticable(actor) {
|
||||||
return EffetsDraconiques.toItems(item).find(matcher);
|
return actor.data.items.find(it => EffetsDraconiques.pontImpraticable.match(it));
|
||||||
}
|
|
||||||
static count(item, matcher) {
|
|
||||||
return EffetsDraconiques.toItems(item).filter(matcher).length;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static toItems(item) {
|
static isUrgenceDraconique(actor) {
|
||||||
return (item?.documentName === 'Actor') ? item.data.items : (item?.documentName === 'Item') ? [Misc.data(item)] : [];
|
return actor.data.items.find(it => EffetsDraconiques.urgenceDraconique.match(it));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static isPeage(actor) {
|
||||||
|
return actor.data.items.find(it => Draconique.isSouffleDragon(it) && it.name.toLowerCase().includes('péage'));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
Loading…
Reference in New Issue
Block a user