feat: reverseQuestProgress (#2948)
Closes #2939 Reviewed-on: #2948 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
b2749765a3
commit
f3072e84c9
@ -1,12 +1,12 @@
|
|||||||
import type { RequestHandler } from "express";
|
import type { RequestHandler } from "express";
|
||||||
import { parseString } from "../../helpers/general.ts";
|
|
||||||
import { getJSONfromString } from "../../helpers/stringHelpers.ts";
|
import { getJSONfromString } from "../../helpers/stringHelpers.ts";
|
||||||
import { getInventory } from "../../services/inventoryService.ts";
|
import { getInventory } from "../../services/inventoryService.ts";
|
||||||
import { giveKeyChainItem } from "../../services/questService.ts";
|
import { giveKeyChainItem } from "../../services/questService.ts";
|
||||||
import type { IKeyChainRequest } from "../../types/requestTypes.ts";
|
import type { IKeyChainRequest } from "../../types/requestTypes.ts";
|
||||||
|
import { getAccountIdForRequest } from "../../services/loginService.ts";
|
||||||
|
|
||||||
export const giveKeyChainTriggeredItemsController: RequestHandler = async (req, res) => {
|
export const giveKeyChainTriggeredItemsController: RequestHandler = async (req, res) => {
|
||||||
const accountId = parseString(req.query.accountId);
|
const accountId = await getAccountIdForRequest(req);
|
||||||
const keyChainInfo = getJSONfromString<IKeyChainRequest>((req.body as string).toString());
|
const keyChainInfo = getJSONfromString<IKeyChainRequest>((req.body as string).toString());
|
||||||
|
|
||||||
const inventory = await getInventory(accountId);
|
const inventory = await getInventory(accountId);
|
||||||
|
|||||||
17
src/controllers/api/reverseQuestProgressController.ts
Normal file
17
src/controllers/api/reverseQuestProgressController.ts
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
import type { RequestHandler } from "express";
|
||||||
|
import { getAccountIdForRequest } from "../../services/loginService.ts";
|
||||||
|
import { resetQuestKeyToStage } from "../../services/questService.ts";
|
||||||
|
import { getInventory } from "../../services/inventoryService.ts";
|
||||||
|
import { getJSONfromString } from "../../helpers/stringHelpers.ts";
|
||||||
|
import type { IKeyChainRequest } from "../../types/requestTypes.ts";
|
||||||
|
|
||||||
|
export const reverseQuestProgressController: RequestHandler = async (req, res) => {
|
||||||
|
const accountId = await getAccountIdForRequest(req);
|
||||||
|
const keyChainInfo = getJSONfromString<IKeyChainRequest>((req.body as string).toString());
|
||||||
|
|
||||||
|
const inventory = await getInventory(accountId);
|
||||||
|
resetQuestKeyToStage(inventory, keyChainInfo);
|
||||||
|
await inventory.save();
|
||||||
|
|
||||||
|
res.end();
|
||||||
|
};
|
||||||
@ -120,6 +120,7 @@ import { rerollRandomModController } from "../controllers/api/rerollRandomModCon
|
|||||||
import { researchMushroomController } from "../controllers/api/researchMushroomController.ts";
|
import { researchMushroomController } from "../controllers/api/researchMushroomController.ts";
|
||||||
import { resetQuestProgressController } from "../controllers/api/resetQuestProgressController.ts";
|
import { resetQuestProgressController } from "../controllers/api/resetQuestProgressController.ts";
|
||||||
import { retrievePetFromStasisController } from "../controllers/api/retrievePetFromStasisController.ts";
|
import { retrievePetFromStasisController } from "../controllers/api/retrievePetFromStasisController.ts";
|
||||||
|
import { reverseQuestProgressController } from "../controllers/api/reverseQuestProgressController.ts";
|
||||||
import { saveDialogueController } from "../controllers/api/saveDialogueController.ts";
|
import { saveDialogueController } from "../controllers/api/saveDialogueController.ts";
|
||||||
import { saveLoadoutController } from "../controllers/api/saveLoadoutController.ts";
|
import { saveLoadoutController } from "../controllers/api/saveLoadoutController.ts";
|
||||||
import { saveSettingsController } from "../controllers/api/saveSettingsController.ts";
|
import { saveSettingsController } from "../controllers/api/saveSettingsController.ts";
|
||||||
@ -323,6 +324,7 @@ apiRouter.post("/renamePet.php", renamePetController);
|
|||||||
apiRouter.post("/rerollRandomMod.php", rerollRandomModController);
|
apiRouter.post("/rerollRandomMod.php", rerollRandomModController);
|
||||||
apiRouter.post("/researchMushroom.php", researchMushroomController);
|
apiRouter.post("/researchMushroom.php", researchMushroomController);
|
||||||
apiRouter.post("/retrievePetFromStasis.php", retrievePetFromStasisController);
|
apiRouter.post("/retrievePetFromStasis.php", retrievePetFromStasisController);
|
||||||
|
apiRouter.post("/reverseQuestProgress.php", reverseQuestProgressController);
|
||||||
apiRouter.post("/saveDialogue.php", saveDialogueController);
|
apiRouter.post("/saveDialogue.php", saveDialogueController);
|
||||||
apiRouter.post("/saveLoadout.php", saveLoadoutController);
|
apiRouter.post("/saveLoadout.php", saveLoadoutController);
|
||||||
apiRouter.post("/saveSettings.php", saveSettingsController);
|
apiRouter.post("/saveSettings.php", saveSettingsController);
|
||||||
|
|||||||
@ -92,6 +92,30 @@ export const updateQuestStage = (
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
export const resetQuestKeyToStage = (
|
||||||
|
inventory: TInventoryDatabaseDocument,
|
||||||
|
{ KeyChain, ChainStage }: IKeyChainRequest
|
||||||
|
): void => {
|
||||||
|
const quest = inventory.QuestKeys.find(quest => quest.ItemType === KeyChain);
|
||||||
|
|
||||||
|
if (!quest) {
|
||||||
|
throw new Error(`Quest ${KeyChain} not found in QuestKeys`);
|
||||||
|
}
|
||||||
|
|
||||||
|
quest.Progress ??= [];
|
||||||
|
|
||||||
|
quest.Progress.splice(1 + ChainStage); // remove stages past the target
|
||||||
|
|
||||||
|
const questStage = quest.Progress[ChainStage];
|
||||||
|
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
|
||||||
|
if (questStage) {
|
||||||
|
const run = quest.Progress[0].c;
|
||||||
|
if (run >= 0) {
|
||||||
|
questStage.c = run - 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
export const addQuestKey = (
|
export const addQuestKey = (
|
||||||
inventory: TInventoryDatabaseDocument,
|
inventory: TInventoryDatabaseDocument,
|
||||||
questKey: IQuestKeyDatabase
|
questKey: IQuestKeyDatabase
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user