feat: reverseQuestProgress
	
		
			
	
		
	
	
		
	
		
			All checks were successful
		
		
	
	
		
			
				
	
				Build / build (pull_request) Successful in 3m18s
				
			
		
		
	
	
				
					
				
			
		
			All checks were successful
		
		
	
	Build / build (pull_request) Successful in 3m18s
				
			This commit is contained in:
		
							parent
							
								
									654652b889
								
							
						
					
					
						commit
						e45f2e41fe
					
				@ -1,12 +1,12 @@
 | 
			
		||||
import type { RequestHandler } from "express";
 | 
			
		||||
import { parseString } from "../../helpers/general.ts";
 | 
			
		||||
import { getJSONfromString } from "../../helpers/stringHelpers.ts";
 | 
			
		||||
import { getInventory } from "../../services/inventoryService.ts";
 | 
			
		||||
import { giveKeyChainItem } from "../../services/questService.ts";
 | 
			
		||||
import type { IKeyChainRequest } from "../../types/requestTypes.ts";
 | 
			
		||||
import { getAccountIdForRequest } from "../../services/loginService.ts";
 | 
			
		||||
 | 
			
		||||
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 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 { resetQuestProgressController } from "../controllers/api/resetQuestProgressController.ts";
 | 
			
		||||
import { retrievePetFromStasisController } from "../controllers/api/retrievePetFromStasisController.ts";
 | 
			
		||||
import { reverseQuestProgressController } from "../controllers/api/reverseQuestProgressController.ts";
 | 
			
		||||
import { saveDialogueController } from "../controllers/api/saveDialogueController.ts";
 | 
			
		||||
import { saveLoadoutController } from "../controllers/api/saveLoadoutController.ts";
 | 
			
		||||
import { saveSettingsController } from "../controllers/api/saveSettingsController.ts";
 | 
			
		||||
@ -323,6 +324,7 @@ apiRouter.post("/renamePet.php", renamePetController);
 | 
			
		||||
apiRouter.post("/rerollRandomMod.php", rerollRandomModController);
 | 
			
		||||
apiRouter.post("/researchMushroom.php", researchMushroomController);
 | 
			
		||||
apiRouter.post("/retrievePetFromStasis.php", retrievePetFromStasisController);
 | 
			
		||||
apiRouter.post("/reverseQuestProgress.php", reverseQuestProgressController);
 | 
			
		||||
apiRouter.post("/saveDialogue.php", saveDialogueController);
 | 
			
		||||
apiRouter.post("/saveLoadout.php", saveLoadoutController);
 | 
			
		||||
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 = (
 | 
			
		||||
    inventory: TInventoryDatabaseDocument,
 | 
			
		||||
    questKey: IQuestKeyDatabase
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user