From f7b6131116156bde6ac6baf7762876ac8b2839f9 Mon Sep 17 00:00:00 2001 From: Sainan <63328889+Sainan@users.noreply.github.com> Date: Sun, 20 Jul 2025 19:36:09 +0200 Subject: [PATCH] feat: reset obstacle course --- .../api/destroyDojoDecoController.ts | 24 ++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/src/controllers/api/destroyDojoDecoController.ts b/src/controllers/api/destroyDojoDecoController.ts index 02323720..cb95e930 100644 --- a/src/controllers/api/destroyDojoDecoController.ts +++ b/src/controllers/api/destroyDojoDecoController.ts @@ -3,11 +3,13 @@ import { getGuildForRequestEx, hasAccessToDojo, hasGuildPermission, + refundDojoDeco, removeDojoDeco } from "@/src/services/guildService"; import { getInventory } from "@/src/services/inventoryService"; import { getAccountIdForRequest } from "@/src/services/loginService"; import { GuildPermission } from "@/src/types/guildTypes"; +import { logger } from "@/src/utils/logger"; import { RequestHandler } from "express"; export const destroyDojoDecoController: RequestHandler = async (req, res) => { @@ -18,9 +20,20 @@ export const destroyDojoDecoController: RequestHandler = async (req, res) => { res.json({ DojoRequestStatus: -1 }); return; } - const request = JSON.parse(String(req.body)) as IDestroyDojoDecoRequest; - - removeDojoDeco(guild, request.ComponentId, request.DecoId); + const request = JSON.parse(String(req.body)) as IDestroyDojoDecoRequest | IClearObstacleCourseRequest; + if ("DecoType" in request) { + removeDojoDeco(guild, request.ComponentId, request.DecoId); + } else if (request.Act == "cObst") { + const component = guild.DojoComponents.id(request.ComponentId)!; + if (component.Decos) { + for (const deco of component.Decos) { + refundDojoDeco(guild, component, deco); + } + component.Decos.splice(0, component.Decos.length); + } + } else { + logger.error(`unhandled destroyDojoDeco request`, request); + } await guild.save(); res.json(await getDojoClient(guild, 0, request.ComponentId)); @@ -31,3 +44,8 @@ interface IDestroyDojoDecoRequest { ComponentId: string; DecoId: string; } + +interface IClearObstacleCourseRequest { + ComponentId: string; + Act: "cObst" | "maybesomethingelsewedontknowabout"; +} -- 2.47.2