forked from OpenWF/SpaceNinjaServer
		
	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 keyChainInfo = getJSONfromString<IKeyChainRequest>((req.body as string).toString());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    const inventory = await getInventory(accountId);
 | 
					    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();
 | 
					    await inventory.save();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    res.send(inventoryChanges);
 | 
					    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 keyChainInfo = JSON.parse((req.body as Buffer).toString()) as IKeyChainRequest;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    const inventory = await getInventory(accountId, "QuestKeys accountOwnerId");
 | 
					    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();
 | 
					    await inventory.save();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    res.send(1);
 | 
					    res.send(1);
 | 
				
			||||||
 | 
				
			|||||||
@ -159,7 +159,7 @@ export const completeQuest = async (inventory: TInventoryDatabaseDocument, quest
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    for (let i = 0; i < chainStageTotal; i++) {
 | 
					    for (let i = 0; i < chainStageTotal; i++) {
 | 
				
			||||||
        const stage = existingQuestKey.Progress[i];
 | 
					        const stage = existingQuestKey.Progress[i];
 | 
				
			||||||
        if (stage.c < run) {
 | 
					        if (stage.c <= run) {
 | 
				
			||||||
            stage.c = run;
 | 
					            stage.c = run;
 | 
				
			||||||
            await giveKeyChainStageTriggered(inventory, { KeyChain: questKey, ChainStage: i });
 | 
					            await giveKeyChainStageTriggered(inventory, { KeyChain: questKey, ChainStage: i });
 | 
				
			||||||
            await giveKeyChainMissionReward(inventory, { KeyChain: questKey, ChainStage: i });
 | 
					            await giveKeyChainMissionReward(inventory, { KeyChain: questKey, ChainStage: i });
 | 
				
			||||||
@ -298,11 +298,11 @@ const handleQuestCompletion = async (
 | 
				
			|||||||
export const giveKeyChainItem = async (
 | 
					export const giveKeyChainItem = async (
 | 
				
			||||||
    inventory: TInventoryDatabaseDocument,
 | 
					    inventory: TInventoryDatabaseDocument,
 | 
				
			||||||
    keyChainInfo: IKeyChainRequest,
 | 
					    keyChainInfo: IKeyChainRequest,
 | 
				
			||||||
    isRerun: boolean = false
 | 
					    questKey: IQuestKeyDatabase
 | 
				
			||||||
): Promise<IInventoryChanges> => {
 | 
					): Promise<IInventoryChanges> => {
 | 
				
			||||||
    let inventoryChanges: IInventoryChanges = {};
 | 
					    let inventoryChanges: IInventoryChanges = {};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (!isRerun) {
 | 
					    if (questKey.Progress![keyChainInfo.ChainStage].i) {
 | 
				
			||||||
        inventoryChanges = await addKeyChainItems(inventory, keyChainInfo);
 | 
					        inventoryChanges = await addKeyChainItems(inventory, keyChainInfo);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if (isEmptyObject(inventoryChanges)) {
 | 
					        if (isEmptyObject(inventoryChanges)) {
 | 
				
			||||||
@ -327,11 +327,11 @@ export const giveKeyChainItem = async (
 | 
				
			|||||||
export const giveKeyChainMessage = async (
 | 
					export const giveKeyChainMessage = async (
 | 
				
			||||||
    inventory: TInventoryDatabaseDocument,
 | 
					    inventory: TInventoryDatabaseDocument,
 | 
				
			||||||
    keyChainInfo: IKeyChainRequest,
 | 
					    keyChainInfo: IKeyChainRequest,
 | 
				
			||||||
    isRerun: boolean = false
 | 
					    questKey: IQuestKeyDatabase
 | 
				
			||||||
): Promise<void> => {
 | 
					): Promise<void> => {
 | 
				
			||||||
    const keyChainMessage = getKeyChainMessage(keyChainInfo);
 | 
					    const keyChainMessage = getKeyChainMessage(keyChainInfo);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (!isRerun) {
 | 
					    if (questKey.Progress![0].c > 0) {
 | 
				
			||||||
        keyChainMessage.att = [];
 | 
					        keyChainMessage.att = [];
 | 
				
			||||||
        keyChainMessage.countedAtt = [];
 | 
					        keyChainMessage.countedAtt = [];
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
@ -391,14 +391,12 @@ export const giveKeyChainStageTriggered = async (
 | 
				
			|||||||
    const questKey = inventory.QuestKeys.find(qk => qk.ItemType === keyChainInfo.KeyChain);
 | 
					    const questKey = inventory.QuestKeys.find(qk => qk.ItemType === keyChainInfo.KeyChain);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (chainStages && questKey) {
 | 
					    if (chainStages && questKey) {
 | 
				
			||||||
        const run = questKey.Progress?.[0]?.c ?? 0;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        if (chainStages[keyChainInfo.ChainStage].itemsToGiveWhenTriggered.length > 0) {
 | 
					        if (chainStages[keyChainInfo.ChainStage].itemsToGiveWhenTriggered.length > 0) {
 | 
				
			||||||
            await giveKeyChainItem(inventory, keyChainInfo, run > 0);
 | 
					            await giveKeyChainItem(inventory, keyChainInfo, questKey);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if (chainStages[keyChainInfo.ChainStage].messageToSendWhenTriggered) {
 | 
					        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