From 62314e89c7729b3db36b4975da1221ad3ac6882e Mon Sep 17 00:00:00 2001 From: Sainan <63328889+Sainan@users.noreply.github.com> Date: Sun, 20 Jul 2025 10:35:14 -0700 Subject: [PATCH] fix: refund personal decos when destroying dojo room (#2522) Closes #2521 Reviewed-on: https://onlyg.it/OpenWF/SpaceNinjaServer/pulls/2522 Co-authored-by: Sainan <63328889+Sainan@users.noreply.github.com> Co-committed-by: Sainan <63328889+Sainan@users.noreply.github.com> --- src/services/guildService.ts | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/services/guildService.ts b/src/services/guildService.ts index 2b4e4f2f..6d60f0c2 100644 --- a/src/services/guildService.ts +++ b/src/services/guildService.ts @@ -13,6 +13,7 @@ import { IDojoComponentDatabase, IDojoContributable, IDojoDecoClient, + IDojoDecoDatabase, IGuildClient, IGuildMemberClient, IGuildMemberDatabase, @@ -309,7 +310,7 @@ export const removeDojoRoom = async ( guild.DojoEnergy -= meta.energy; } moveResourcesToVault(guild, component); - component.Decos?.forEach(deco => moveResourcesToVault(guild, deco)); + component.Decos?.forEach(deco => refundDojoDeco(guild, component, deco)); if (guild.RoomChanges) { const index = guild.RoomChanges.findIndex(x => x.componentId.equals(component._id)); @@ -344,6 +345,14 @@ export const removeDojoDeco = ( component.Decos!.findIndex(x => x._id.equals(decoId)), 1 )[0]; + refundDojoDeco(guild, component, deco); +}; + +export const refundDojoDeco = ( + guild: TGuildDatabaseDocument, + component: IDojoComponentDatabase, + deco: IDojoDecoDatabase +): void => { const meta = Object.values(ExportDojoRecipes.decos).find(x => x.resultType == deco.Type); if (meta) { if (meta.capacityCost) { @@ -369,7 +378,7 @@ export const removeDojoDeco = ( ]); } } - moveResourcesToVault(guild, deco); + moveResourcesToVault(guild, deco); // Refund resources spent on construction }; const moveResourcesToVault = (guild: TGuildDatabaseDocument, component: IDojoContributable): void => {