diff --git a/module/actor.js b/module/actor.js index 9e987212..85d5ad2f 100644 --- a/module/actor.js +++ b/module/actor.js @@ -963,15 +963,14 @@ export class RdDActor extends Actor { async processDropItem(event, dragData, objetVersConteneur) { console.log("DRAG", this.id, dragData); - const droppedItemId = dragData.id || dragData.data._id; + const itemId = dragData.id || dragData.data._id; if (dragData.actorId && dragData.actorId != this.id) { console.log("Moving objects", dragData); - this.moveItemsBetweenActors(droppedItemId, dragData.actorId); + this.moveItemsBetweenActors(itemId, dragData.actorId); return false; } let result = true; const destId = $(event.target).parents(".item").attr("data-item-id"); - const itemId = dragData.id || dragData.data._id; const item = this.getObjet(itemId); if (item?.isEquipement()) { if (dragData.actorId == this.id) { @@ -1061,7 +1060,7 @@ export class RdDActor extends Actor { async regrouperEquipementsSimilaires(item, dest) { await dest.quantiteIncDec(Misc.templateData(item).quantite); - await this.deleteEmbeddedDocuments('Item', [item.id]); + await item.delete(); } /* -------------------------------------------- */ @@ -3272,6 +3271,10 @@ export class RdDActor extends Actor { /* -------------------------------------------- */ async achatVente(vendeurId, acheteurId, venteData, chatMessageIdVente) { + if (vendeurId == acheteurId){ + ui.notifications.info("Inutile de se vendre à soi-même"); + return; + } if (!game.user.isGM) { RdDActor.remoteActorCall({ userId: Misc.connectedGMOrUser(), @@ -3286,7 +3289,6 @@ export class RdDActor extends Actor { const itemId = venteData.item._id; const coutDeniers = Math.floor((venteData.prixTotal ?? 0) * 100); - const achat = duplicate(venteData.item); venteData.quantiteTotal = (venteData.nombreLots ?? 1) * (venteData.tailleLot); if (acheteur) { let resteAcheteur = await acheteur.depenser(coutDeniers); @@ -3298,15 +3300,15 @@ export class RdDActor extends Actor { if (vendeur) { let itemData = Misc.data(vendeur.getObjet(itemId)); // diminuer QuantiteVendeur - if (("quantite" in itemData.data && itemData.data.quantite < venteData.nombreLots) - || (!("quantite" in itemData.data) && venteData.nombreLots != 1)) { + if ("quantite" in itemData.data ? + itemData.data.quantite < venteData.quantiteTotal : venteData.nombreLots != 1) { // pas assez de quantite await acheteur?.ajouterDeniers(coutDeniers); ui.notifications.warn(`Le vendeur n'a plus assez de ${venteData.item.name} !`); return; } vendeur.ajouterDeniers(coutDeniers); - let qtReste = (itemData.data.quantite ?? 1) - venteData.nombreLots; + let qtReste = (itemData.data.quantite ?? 1) - venteData.quantiteTotal; if (qtReste == 0) { vendeur.deleteEmbeddedDocuments("Item", itemId); } @@ -3316,11 +3318,11 @@ export class RdDActor extends Actor { } if (acheteur) { - // ajouter l'objet à l'acheteur + // TODO: achat depuis un compendium + const achat = duplicate(Misc.data(vendeur?.getObjet(itemId) ?? game.items.get(itemId))); + achat.data.quantite = venteData.quantiteTotal; achat._id = undefined; - if ("quantite" in achat.data) { - achat.data.quantite = venteData.quantiteTotal; - } + // TODO: investigate bug - création marche mal... await acheteur.createEmbeddedDocuments("Item", [achat]); } if (coutDeniers > 0) { @@ -3332,11 +3334,11 @@ export class RdDActor extends Actor { content: await renderTemplate('systems/foundryvtt-reve-de-dragon/templates/chat-achat-item.html', venteData) }); - venteData.quantiteNbLots -= venteData.nombreLots; - if (venteData.quantiteNbLots <= 0) { + if (venteData.quantiteNbLots <= venteData.nombreLots) { ChatUtility.removeChatMessageId(chatMessageIdVente); } else { + venteData.quantiteNbLots -= venteData.nombreLots; venteData.jsondata = JSON.stringify(venteData.item); let newMessageVente = await renderTemplate('systems/foundryvtt-reve-de-dragon/templates/chat-vente-item.html', venteData); const messageVente = game.messages.get(chatMessageIdVente); diff --git a/module/dialog-item-achat.js b/module/dialog-item-achat.js index d6b16f5d..9fe32cab 100644 --- a/module/dialog-item-achat.js +++ b/module/dialog-item-achat.js @@ -11,7 +11,7 @@ export class DialogItemAchat extends Dialog { ui.notifications.warn("Impossible d'acheter: informations sur l'objet manquantes") return; } - const vendeurId = event.currentTarget.attributes['data-actorId']?.value; + const vendeurId = event.currentTarget.attributes['data-vendeurId']?.value; const vendeur = vendeurId ? game.actors.get(vendeurId) : undefined; const acheteur = RdDUtility.getSelectedActor(); @@ -25,6 +25,7 @@ export class DialogItemAchat extends Dialog { const prixLot = event.currentTarget.attributes['data-prixLot']?.value ?? 0; let venteData = { item: itemData, + vendeurId: vendeurId, vendeur: Misc.data(vendeur), acheteur: Misc.data(acheteur), tailleLot: event.currentTarget.attributes['data-tailleLot']?.value ?? 1, diff --git a/module/dialog-item-vente.js b/module/dialog-item-vente.js index dea6aa77..0354c884 100644 --- a/module/dialog-item-vente.js +++ b/module/dialog-item-vente.js @@ -8,7 +8,7 @@ export class DialogItemVente extends Dialog { const venteData = { item: itemData, alias: item.actor?.name ?? game.user.name, - actorId: item.actor?.id, + vendeurId: item.actor?.id, prixOrigine: itemData.data.cout, prixUnitaire: itemData.data.cout, prixLot: itemData.data.cout, diff --git a/templates/chat-vente-item.html b/templates/chat-vente-item.html index f9d4c0b3..a291cedc 100644 --- a/templates/chat-vente-item.html +++ b/templates/chat-vente-item.html @@ -1,5 +1,5 @@
-

Acheter {{#if alias}}{{alias}} propose: {{/if}}{{item.name}}

+

{{#if alias}}{{alias}} propose:{{else}}Acheter {{/if}}{{item.name}}

{{#if item.img}} {{/if}} @@ -26,7 +26,7 @@