fix: refund personal decos when destroying dojo room (#2522)
Closes #2521 Reviewed-on: #2522 Co-authored-by: Sainan <63328889+Sainan@users.noreply.github.com> Co-committed-by: Sainan <63328889+Sainan@users.noreply.github.com>
This commit is contained in:
parent
56aa3e3331
commit
62314e89c7
@ -13,6 +13,7 @@ import {
|
|||||||
IDojoComponentDatabase,
|
IDojoComponentDatabase,
|
||||||
IDojoContributable,
|
IDojoContributable,
|
||||||
IDojoDecoClient,
|
IDojoDecoClient,
|
||||||
|
IDojoDecoDatabase,
|
||||||
IGuildClient,
|
IGuildClient,
|
||||||
IGuildMemberClient,
|
IGuildMemberClient,
|
||||||
IGuildMemberDatabase,
|
IGuildMemberDatabase,
|
||||||
@ -309,7 +310,7 @@ export const removeDojoRoom = async (
|
|||||||
guild.DojoEnergy -= meta.energy;
|
guild.DojoEnergy -= meta.energy;
|
||||||
}
|
}
|
||||||
moveResourcesToVault(guild, component);
|
moveResourcesToVault(guild, component);
|
||||||
component.Decos?.forEach(deco => moveResourcesToVault(guild, deco));
|
component.Decos?.forEach(deco => refundDojoDeco(guild, component, deco));
|
||||||
|
|
||||||
if (guild.RoomChanges) {
|
if (guild.RoomChanges) {
|
||||||
const index = guild.RoomChanges.findIndex(x => x.componentId.equals(component._id));
|
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)),
|
component.Decos!.findIndex(x => x._id.equals(decoId)),
|
||||||
1
|
1
|
||||||
)[0];
|
)[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);
|
const meta = Object.values(ExportDojoRecipes.decos).find(x => x.resultType == deco.Type);
|
||||||
if (meta) {
|
if (meta) {
|
||||||
if (meta.capacityCost) {
|
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 => {
|
const moveResourcesToVault = (guild: TGuildDatabaseDocument, component: IDojoContributable): void => {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user