From 5e6d958358276187dbd74cc13125eb657aa25197 Mon Sep 17 00:00:00 2001 From: Sainan <63328889+Sainan@users.noreply.github.com> Date: Thu, 3 Apr 2025 18:42:33 +0200 Subject: [PATCH] handle dojo deco being moved --- .../api/placeDecoInComponentController.ts | 45 +++++++++++-------- 1 file changed, 26 insertions(+), 19 deletions(-) diff --git a/src/controllers/api/placeDecoInComponentController.ts b/src/controllers/api/placeDecoInComponentController.ts index ac791b22..5a3eb68c 100644 --- a/src/controllers/api/placeDecoInComponentController.ts +++ b/src/controllers/api/placeDecoInComponentController.ts @@ -24,26 +24,31 @@ export const placeDecoInComponentController: RequestHandler = async (req, res) = } component.Decos ??= []; - const deco = - component.Decos[ - component.Decos.push({ - _id: new Types.ObjectId(), - Type: request.Type, - Pos: request.Pos, - Rot: request.Rot, - Name: request.Name, - Sockets: request.Sockets - }) - 1 - ]; - - const meta = Object.values(ExportDojoRecipes.decos).find(x => x.resultType == request.Type); - if (meta) { - if (meta.capacityCost) { - component.DecoCapacity -= meta.capacityCost; + if (request.MoveId) { + const deco = component.Decos.find(x => x._id.equals(request.MoveId))!; + deco.Pos = request.Pos; + deco.Rot = request.Rot; + } else { + const deco = + component.Decos[ + component.Decos.push({ + _id: new Types.ObjectId(), + Type: request.Type, + Pos: request.Pos, + Rot: request.Rot, + Name: request.Name, + Sockets: request.Sockets + }) - 1 + ]; + const meta = Object.values(ExportDojoRecipes.decos).find(x => x.resultType == request.Type); + if (meta) { + if (meta.capacityCost) { + component.DecoCapacity -= meta.capacityCost; + } + } + if (!meta || (meta.price == 0 && meta.ingredients.length == 0)) { + deco.CompletionTime = new Date(); } - } - if (!meta || (meta.price == 0 && meta.ingredients.length == 0)) { - deco.CompletionTime = new Date(); } await guild.save(); @@ -58,4 +63,6 @@ interface IPlaceDecoInComponentRequest { Rot: number[]; Name?: string; Sockets?: number; + Scale?: number; // only provided alongside MoveId and seems to always be 1 + MoveId?: string; }