diff --git a/module/actor.js b/module/actor.js index 29f089fb..205fa89e 100644 --- a/module/actor.js +++ b/module/actor.js @@ -38,6 +38,7 @@ import { RdDItemBlessure } from "./item/blessure.js"; import { AppAstrologie } from "./sommeil/app-astrologie.js"; import { RdDEmpoignade } from "./rdd-empoignade.js"; import { ExperienceLog, XP_TOPIC } from "./actor/experience-log.js"; +import { TYPES } from "./item.js"; const POSSESSION_SANS_DRACONIC = { img: 'systems/foundryvtt-reve-de-dragon/icons/entites/possession.webp', @@ -109,7 +110,7 @@ export class RdDActor extends RdDBaseActor { canReceive(item) { if (this.isCreature()) { - return item.type == 'competencecreature' || item.isInventaire(); + return item.type == TYPES.competencecreature || item.isInventaire(); } if (this.isEntite()) { return item.type == 'competencecreature'; diff --git a/module/actor/base-actor.js b/module/actor/base-actor.js index 59b15b25..d5901382 100644 --- a/module/actor/base-actor.js +++ b/module/actor/base-actor.js @@ -248,13 +248,12 @@ export class RdDBaseActor extends Actor { const vendeur = achat.vendeurId ? game.actors.get(achat.vendeurId) : undefined; const acheteur = achat.acheteurId ? game.actors.get(achat.acheteurId) : undefined; const quantite = (achat.choix.nombreLots ?? 1) * (achat.vente.tailleLot); - const itemVendu = vendeur?.getItem(achat.vente.item._id) ?? game.items.get(achat.vente.item._id) ?? achat.vente.item; + const itemVendu = vendeur?.getItem(achat.vente.item._id) ?? game.items.get(achat.vente.item._id); if (!itemVendu) { - ui.notifications.warn("Erreur sur achat: rien à acheter
Si possible, transmettez les logs de la console aux développeurs"); - console.log('Erreur sur achat: rien à acheter', achat); + ChatUtility.notifyUser(achat.userId, 'warn', vendeur ? `Le vendeur n'a pas plus de ${achat.vente.item.name} !`: `Impossible de retrouver: ${achat.vente.item.name} !`); return; } - if (!this.verifierQuantite(vendeur, itemVendu, quantite)) { + if (vendeur && !this.verifierQuantite(itemVendu, quantite)) { ChatUtility.notifyUser(achat.userId, 'warn', `Le vendeur n'a pas assez de ${itemVendu.name} !`); return } @@ -265,7 +264,7 @@ export class RdDBaseActor extends Actor { await this.decrementerVente(vendeur, itemVendu, quantite, cout); if (acheteur) { await acheteur.depenserSols(cout); - const createdItemId = await acheteur.creerQuantiteItem(achat.vente.item, quantite); + const createdItemId = await acheteur.creerQuantiteItem(itemVendu, quantite); await acheteur.consommerNourritureAchetee(achat, achat.vente, createdItemId); } if (cout > 0) { @@ -306,9 +305,9 @@ export class RdDBaseActor extends Actor { return this.getFortune() >= cout; } - verifierQuantite(vendeur, item, quantiteTotal) { - const disponible = vendeur?.getQuantiteDisponible(item); - return disponible == undefined || disponible >= quantiteTotal; + verifierQuantite(item, quantiteDemande) { + const disponible = item?.getQuantite(); + return disponible == undefined || disponible >= quantiteDemande; } async consommerNourritureAchetee(achat, vente, createdItemId) { diff --git a/module/actor/commerce.js b/module/actor/commerce.js index fffc6535..c504e950 100644 --- a/module/actor/commerce.js +++ b/module/actor/commerce.js @@ -22,7 +22,7 @@ export class RdDCommerce extends RdDBaseActor { } getQuantiteDisponible(item) { - return this.system.illimite || item.isService() ? undefined : item.getQuantite(); + return (this.system.illimite || item?.isService()) ? undefined : item.getQuantite(); } verifierFortune(cout) { diff --git a/module/item.js b/module/item.js index 32edbd39..46ba302c 100644 --- a/module/item.js +++ b/module/item.js @@ -370,7 +370,7 @@ export class RdDItem extends Item { } getEncTotal() { - return (this.isService() ? 0 : this.getQuantite()) * this.getEnc(); + return (this.getQuantite() ?? 0) * this.getEnc(); } getEnc() {