From 8be4c3343fd458d17d9d82e4199bb4e85dce3c17 Mon Sep 17 00:00:00 2001 From: Vincent Vandemeulebrouck Date: Fri, 29 Nov 2024 22:11:24 +0100 Subject: [PATCH] Fix: les tas de conteneurs --- changelog.md | 2 ++ module/actor.js | 11 ++++++----- module/actor/base-actor.js | 14 +++++++++++++- module/item.js | 4 ++++ 4 files changed, 25 insertions(+), 6 deletions(-) diff --git a/changelog.md b/changelog.md index dd0886a4..325878fc 100644 --- a/changelog.md +++ b/changelog.md @@ -1,6 +1,8 @@ # 12.0 ## 12.0.24 - Les ajustements d'Astrobazzarh - corrections + - les tas dans les conteneurs peuvent être désempilés sans rendre le conteneur inutilisable + - les conteneurs ne peuvent plus être empilés (pour éviter que le contenu de Schroedinger quand on les sépare) - on peut maintenant saisir et supprimer les bonus de cases de manière intuitive ## 12.0.23 - La bibliothèque d'Astrobazzarh diff --git a/module/actor.js b/module/actor.js index 081103ee..badb3492 100644 --- a/module/actor.js +++ b/module/actor.js @@ -3017,15 +3017,16 @@ export class RdDActor extends RdDBaseActorSang { case 'queue': case 'ombre': case 'souffle': - await this.onDeleteOwnedDraconique(item, options, id); - break; + await this.onDeleteOwnedDraconique(item, options, id) + break case 'casetmr': - await this.onDeleteOwnedCaseTmr(item, options, id); - break; + await this.onDeleteOwnedCaseTmr(item, options, id) + break case 'empoignade': await RdDEmpoignade.deleteLinkedEmpoignade(this.id, item) - break; + break } + super.onDeleteItem(item, options, id) } /* -------------------------------------------- */ diff --git a/module/actor/base-actor.js b/module/actor/base-actor.js index 349d1973..a1456895 100644 --- a/module/actor/base-actor.js +++ b/module/actor/base-actor.js @@ -213,8 +213,20 @@ export class RdDBaseActor extends Actor { /* -------------------------------------------- */ async onPreUpdateItem(item, change, options, id) { } async onCreateItem(item, options, id) { } - async onDeleteItem(item, options, id) { } async onUpdateActor(update, options, actorId) { } + async onDeleteItem(item, options, id) { + if (item.isInventaire()) { + this._removeItemFromConteneur(item) + } + } + + _removeItemFromConteneur(item) { + this.items.filter(it => it.isConteneur() && it.system.contenu.includes(item.id)) + .forEach(conteneur => { + const nouveauContenu = conteneur.system.contenu.filter(id => id != item.id); + conteneur.update({ 'system.contenu': nouveauContenu }); + }); + } async onTimeChanging(oldTimestamp, newTimestamp) { this.items.filter(it => it.isFinPeriode(oldTimestamp, newTimestamp)) diff --git a/module/item.js b/module/item.js index b45373e2..ace79129 100644 --- a/module/item.js +++ b/module/item.js @@ -571,6 +571,7 @@ export class RdDItem extends Item { else { await this.quantiteIncDec(item.system.quantite); } + // TODO: suppression dans les conteneurs! await item.delete(); } @@ -601,6 +602,9 @@ export class RdDItem extends Item { if (!other || !this.isInventaire()) { return [false, undefined]; } + if (this.isConteneur()){ + return [false, `Impossible de regrouper des conteneurs, ils ne sont pas empilables`]; + } if (this.system.quantite == undefined) { return [false, `Impossible de regrouper des ${this.type}, ils ne sont pas empilables`]; }