fix: correct checks for quest replay (#2798)
Closes #2797 Reviewed-on: OpenWF/SpaceNinjaServer#2798 Reviewed-by: Sainan <63328889+sainan@users.noreply.github.com> Co-authored-by: AMelonInsideLemon <166175391+AMelonInsideLemon@users.noreply.github.com> Co-committed-by: AMelonInsideLemon <166175391+AMelonInsideLemon@users.noreply.github.com>
This commit is contained in:
		
							parent
							
								
									05fbefa7f4
								
							
						
					
					
						commit
						87da94658d
					
				@ -10,7 +10,8 @@ export const giveKeyChainTriggeredItemsController: RequestHandler = async (req,
 | 
			
		||||
    const keyChainInfo = getJSONfromString<IKeyChainRequest>((req.body as string).toString());
 | 
			
		||||
 | 
			
		||||
    const inventory = await getInventory(accountId);
 | 
			
		||||
    const inventoryChanges = await giveKeyChainItem(inventory, keyChainInfo);
 | 
			
		||||
    const questKey = inventory.QuestKeys.find(qk => qk.ItemType === keyChainInfo.KeyChain)!;
 | 
			
		||||
    const inventoryChanges = await giveKeyChainItem(inventory, keyChainInfo, questKey);
 | 
			
		||||
    await inventory.save();
 | 
			
		||||
 | 
			
		||||
    res.send(inventoryChanges);
 | 
			
		||||
 | 
			
		||||
@ -9,7 +9,8 @@ export const giveKeyChainTriggeredMessageController: RequestHandler = async (req
 | 
			
		||||
    const keyChainInfo = JSON.parse((req.body as Buffer).toString()) as IKeyChainRequest;
 | 
			
		||||
 | 
			
		||||
    const inventory = await getInventory(accountId, "QuestKeys accountOwnerId");
 | 
			
		||||
    await giveKeyChainMessage(inventory, keyChainInfo);
 | 
			
		||||
    const questKey = inventory.QuestKeys.find(qk => qk.ItemType === keyChainInfo.KeyChain)!;
 | 
			
		||||
    await giveKeyChainMessage(inventory, keyChainInfo, questKey);
 | 
			
		||||
    await inventory.save();
 | 
			
		||||
 | 
			
		||||
    res.send(1);
 | 
			
		||||
 | 
			
		||||
@ -159,7 +159,7 @@ export const completeQuest = async (inventory: TInventoryDatabaseDocument, quest
 | 
			
		||||
 | 
			
		||||
    for (let i = 0; i < chainStageTotal; i++) {
 | 
			
		||||
        const stage = existingQuestKey.Progress[i];
 | 
			
		||||
        if (stage.c < run) {
 | 
			
		||||
        if (stage.c <= run) {
 | 
			
		||||
            stage.c = run;
 | 
			
		||||
            await giveKeyChainStageTriggered(inventory, { KeyChain: questKey, ChainStage: i });
 | 
			
		||||
            await giveKeyChainMissionReward(inventory, { KeyChain: questKey, ChainStage: i });
 | 
			
		||||
@ -298,11 +298,11 @@ const handleQuestCompletion = async (
 | 
			
		||||
export const giveKeyChainItem = async (
 | 
			
		||||
    inventory: TInventoryDatabaseDocument,
 | 
			
		||||
    keyChainInfo: IKeyChainRequest,
 | 
			
		||||
    isRerun: boolean = false
 | 
			
		||||
    questKey: IQuestKeyDatabase
 | 
			
		||||
): Promise<IInventoryChanges> => {
 | 
			
		||||
    let inventoryChanges: IInventoryChanges = {};
 | 
			
		||||
 | 
			
		||||
    if (!isRerun) {
 | 
			
		||||
    if (questKey.Progress![keyChainInfo.ChainStage].i) {
 | 
			
		||||
        inventoryChanges = await addKeyChainItems(inventory, keyChainInfo);
 | 
			
		||||
 | 
			
		||||
        if (isEmptyObject(inventoryChanges)) {
 | 
			
		||||
@ -327,11 +327,11 @@ export const giveKeyChainItem = async (
 | 
			
		||||
export const giveKeyChainMessage = async (
 | 
			
		||||
    inventory: TInventoryDatabaseDocument,
 | 
			
		||||
    keyChainInfo: IKeyChainRequest,
 | 
			
		||||
    isRerun: boolean = false
 | 
			
		||||
    questKey: IQuestKeyDatabase
 | 
			
		||||
): Promise<void> => {
 | 
			
		||||
    const keyChainMessage = getKeyChainMessage(keyChainInfo);
 | 
			
		||||
 | 
			
		||||
    if (!isRerun) {
 | 
			
		||||
    if (questKey.Progress![0].c > 0) {
 | 
			
		||||
        keyChainMessage.att = [];
 | 
			
		||||
        keyChainMessage.countedAtt = [];
 | 
			
		||||
    }
 | 
			
		||||
@ -391,14 +391,12 @@ export const giveKeyChainStageTriggered = async (
 | 
			
		||||
    const questKey = inventory.QuestKeys.find(qk => qk.ItemType === keyChainInfo.KeyChain);
 | 
			
		||||
 | 
			
		||||
    if (chainStages && questKey) {
 | 
			
		||||
        const run = questKey.Progress?.[0]?.c ?? 0;
 | 
			
		||||
 | 
			
		||||
        if (chainStages[keyChainInfo.ChainStage].itemsToGiveWhenTriggered.length > 0) {
 | 
			
		||||
            await giveKeyChainItem(inventory, keyChainInfo, run > 0);
 | 
			
		||||
            await giveKeyChainItem(inventory, keyChainInfo, questKey);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        if (chainStages[keyChainInfo.ChainStage].messageToSendWhenTriggered) {
 | 
			
		||||
            await giveKeyChainMessage(inventory, keyChainInfo, run > 0);
 | 
			
		||||
            await giveKeyChainMessage(inventory, keyChainInfo, questKey);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user