Merge branch 'v1.5-fix-draconique-double' into 'v1.5'

Fix régression sur les effets draconiques doubles

See merge request LeRatierBretonnien/foundryvtt-reve-de-dragon!319
This commit is contained in:
Leratier Bretonnien 2022-05-11 06:11:59 +00:00
commit b8d6c2daac
4 changed files with 25 additions and 13 deletions

View File

@ -68,6 +68,9 @@ export class RdDActorVehiculeSheet extends ActorSheet {
return formData; return formData;
} }
async computeMalusArmure() {
// pas de malus armure
}
/* -------------------------------------------- */ /* -------------------------------------------- */
async _onDropItem(event, dragData) { async _onDropItem(event, dragData) {
const destItemId = $(event.target)?.closest('.item').attr('data-item-id'); const destItemId = $(event.target)?.closest('.item').attr('data-item-id');

View File

@ -2403,8 +2403,7 @@ export class RdDActor extends Actor {
/* -------------------------------------------- */ /* -------------------------------------------- */
async checkSoufflePeage(tmr) { async checkSoufflePeage(tmr) {
let peage = this.data.items.find(item => EffetsDraconiques.isPeage(item)); if ((tmr.type == 'pont' || tmr.type == 'cite') && EffetsDraconiques.isPeage(actor)) {
if (peage && (tmr.type == 'pont' || tmr.type == 'cite')) {
await this.reveActuelIncDec(-1); await this.reveActuelIncDec(-1);
ChatMessage.create({ 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).",
@ -3588,7 +3587,7 @@ export class RdDActor extends Actor {
let monnaies = Monnaie.filtrerMonnaies(this.data.items); let monnaies = Monnaie.filtrerMonnaies(this.data.items);
if (monnaies.length < 4) { if (monnaies.length < 4) {
ui.notifications.error("Problème de monnaies manquantes, impossible de payer correctement!") ui.notifications.error("Problème de monnaies manquantes, impossible de payer correctement!")
return 0; throw "Problème de monnaies manquantes, impossible de payer correctement!";
} }
return monnaies.map(m => Misc.templateData(m)) return monnaies.map(m => Misc.templateData(m))
.map(tpl => tpl.valeur_deniers * Number(tpl.quantite)) .map(tpl => tpl.valeur_deniers * Number(tpl.quantite))

View File

@ -19,6 +19,10 @@ export class Grammar {
return word.match(/^[aeiouy]/i) return word.match(/^[aeiouy]/i)
} }
static includesLowerCaseNoAccent(value, content) {
return Grammar.toLowerCaseNoAccent(value).includes(Grammar.toLowerCaseNoAccent(content));
}
/* -------------------------------------------- */ /* -------------------------------------------- */
static toLowerCaseNoAccent(words) { static toLowerCaseNoAccent(words) {
return words?.toLowerCase().normalize("NFD").replace(/[\u0300-\u036f]/g, "") ?? words; return words?.toLowerCase().normalize("NFD").replace(/[\u0300-\u036f]/g, "") ?? words;

View File

@ -16,7 +16,7 @@ import { Conquete } from "./conquete.js";
import { Pelerinage } from "./pelerinage.js"; import { Pelerinage } from "./pelerinage.js";
import { Periple } from "./periple.js"; import { Periple } from "./periple.js";
import { UrgenceDraconique } from "./urgence-draconique.js"; import { UrgenceDraconique } from "./urgence-draconique.js";
import { Misc } from "../misc.js"; import { Grammar } from "../grammar.js";
export class EffetsDraconiques { 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) { 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) { 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) { 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) { 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) { 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) { 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) { 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) { 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) { static isPontImpraticable(actor) {
@ -152,7 +158,7 @@ export class EffetsDraconiques {
} }
static isPeage(actor) { 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;
} }