Fix: effets draconiques incorrects
* double résistance du fleuve pour tous? * connaissance du fleuve pour tous * réserve en sécurité pour tous * impossible de déclencher un sort * montée accélérée pour tous etc
This commit is contained in:
parent
0d70d9ef83
commit
5578084754
@ -2403,8 +2403,7 @@ export class RdDActor extends Actor {
|
||||
|
||||
/* -------------------------------------------- */
|
||||
async checkSoufflePeage(tmr) {
|
||||
let peage = this.data.items.find(item => EffetsDraconiques.isPeage(item));
|
||||
if (peage && (tmr.type == 'pont' || tmr.type == 'cite')) {
|
||||
if ((tmr.type == 'pont' || tmr.type == 'cite') && EffetsDraconiques.isPeage(actor)) {
|
||||
await this.reveActuelIncDec(-1);
|
||||
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).",
|
||||
|
@ -19,6 +19,10 @@ export class Grammar {
|
||||
return word.match(/^[aeiouy]/i)
|
||||
}
|
||||
|
||||
|
||||
static includesLowerCaseNoAccent(value, content) {
|
||||
return Grammar.toLowerCaseNoAccent(value).includes(Grammar.toLowerCaseNoAccent(content));
|
||||
}
|
||||
/* -------------------------------------------- */
|
||||
static toLowerCaseNoAccent(words) {
|
||||
return words?.toLowerCase().normalize("NFD").replace(/[\u0300-\u036f]/g, "") ?? words;
|
||||
|
@ -16,7 +16,7 @@ import { Conquete } from "./conquete.js";
|
||||
import { Pelerinage } from "./pelerinage.js";
|
||||
import { Periple } from "./periple.js";
|
||||
import { UrgenceDraconique } from "./urgence-draconique.js";
|
||||
import { Misc } from "../misc.js";
|
||||
import { Grammar } from "../grammar.js";
|
||||
|
||||
|
||||
export class EffetsDraconiques {
|
||||
@ -111,36 +111,42 @@ export class EffetsDraconiques {
|
||||
);
|
||||
}
|
||||
|
||||
static filterItems(actor, filter, name) {
|
||||
return actor.data.items.filter(filter)
|
||||
.filter(it => Grammar.includesLowerCaseNoAccent(it.name, name));
|
||||
}
|
||||
|
||||
static isDonDoubleReve(actor) {
|
||||
return actor.data.items.find(it => Draconique.isTeteDragon(it) && it.name == 'Don de double-rêve');
|
||||
return EffetsDraconiques.filterItems(actor, Draconique.isTeteDragon, 'Don de double-rêve').length>0;
|
||||
}
|
||||
|
||||
static isConnaissanceFleuve(actor) {
|
||||
return actor.data.items.find(it => Draconique.isTeteDragon(it) && it.name.toLowerCase().includes('connaissance du fleuve'));
|
||||
return EffetsDraconiques.filterItems(actor, Draconique.isTeteDragon, 'connaissance du fleuve').length>0;
|
||||
}
|
||||
|
||||
static isReserveEnSecurite(actor) {
|
||||
return actor.data.items.find(it => Draconique.isTeteDragon(it) && it.name.toLowerCase().includes(' en sécurité'));
|
||||
return EffetsDraconiques.filterItems(actor, Draconique.isTeteDragon, 'réserve en sécurité').length>0;
|
||||
}
|
||||
|
||||
static isDeplacementAccelere(actor) {
|
||||
return actor.data.items.find(it => Draconique.isTeteDragon(it) && it.name.toLowerCase().includes(' déplacement accéléré'));
|
||||
return EffetsDraconiques.filterItems(actor, Draconique.isTeteDragon, ' déplacement accéléré').length>0;
|
||||
}
|
||||
|
||||
static isDoubleResistanceFleuve(actor) {
|
||||
return actor.data.items.find(it => Draconique.isSouffleDragon(it) && it.name.toLowerCase().includes('résistance du fleuve'));
|
||||
return EffetsDraconiques.filterItems(actor, Draconique.isSouffleDragon, 'résistance du fleuve').length>0;
|
||||
}
|
||||
|
||||
static countInertieDraconique(actor) {
|
||||
return actor.data.items.filter(it => Draconique.isQueueDragon(it) && it.name.toLowerCase().includes('inertie draconique')).length;
|
||||
return EffetsDraconiques.filterItems(actor, Draconique.isQueueDragon, 'inertie draconique').length;
|
||||
}
|
||||
|
||||
static countMonteeLaborieuse(actor) {
|
||||
return actor.data.items.filter(it => Draconique.isQueueSouffle(it) && it.name.toLowerCase().includes('montée laborieuse')).length;
|
||||
return EffetsDraconiques.filterItems(actor, Draconique.isQueueSouffle, 'montée laborieuse').length;
|
||||
}
|
||||
|
||||
static mauvaiseRencontre(actor) {
|
||||
return actor.data.items.find(it => Draconique.isQueueSouffle(it) && it.name.toLowerCase().includes('mauvaise rencontre'));
|
||||
const mauvaisesRencontres = EffetsDraconiques.filterItems(actor, Draconique.isQueueSouffle, 'mauvaise rencontre');
|
||||
return mauvaisesRencontres.length>0 ? mauvaisesRencontres[0] : undefined;
|
||||
}
|
||||
|
||||
static isPontImpraticable(actor) {
|
||||
@ -152,7 +158,7 @@ export class EffetsDraconiques {
|
||||
}
|
||||
|
||||
static isPeage(actor) {
|
||||
return actor.data.items.find(it => Draconique.isSouffleDragon(it) && it.name.toLowerCase().includes('péage'));
|
||||
return EffetsDraconiques.filterItems(actor, Draconique.isSouffleDragon, 'péage').length > 0;
|
||||
}
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user