forked from OpenWF/SpaceNinjaServer
		
	feat: send hex quest email when The Lotus Eaters and The Duviri Paradox are complete (#1761)
Close #1759 Reviewed-on: OpenWF/SpaceNinjaServer#1761 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
							
								
									bdf0ac722b
								
							
						
					
					
						commit
						72b28f1d75
					
				@ -191,6 +191,25 @@ const getQuestCompletionItems = (questKey: string): ITypeCount[] | undefined =>
 | 
				
			|||||||
    return items;
 | 
					    return items;
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Checks that `questKey` is in `requirements`, and if so, that all other quests in `requirements` are also already completed.
 | 
				
			||||||
 | 
					const doesQuestCompletionFinishSet = (
 | 
				
			||||||
 | 
					    inventory: TInventoryDatabaseDocument,
 | 
				
			||||||
 | 
					    questKey: string,
 | 
				
			||||||
 | 
					    requirements: string[]
 | 
				
			||||||
 | 
					): boolean => {
 | 
				
			||||||
 | 
					    let holds = false;
 | 
				
			||||||
 | 
					    for (const requirement of requirements) {
 | 
				
			||||||
 | 
					        if (questKey == requirement) {
 | 
				
			||||||
 | 
					            holds = true;
 | 
				
			||||||
 | 
					        } else {
 | 
				
			||||||
 | 
					            if (!inventory.QuestKeys.find(x => x.ItemType == requirement)?.Completed) {
 | 
				
			||||||
 | 
					                return false;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    return holds;
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const handleQuestCompletion = async (
 | 
					const handleQuestCompletion = async (
 | 
				
			||||||
    inventory: TInventoryDatabaseDocument,
 | 
					    inventory: TInventoryDatabaseDocument,
 | 
				
			||||||
    questKey: string,
 | 
					    questKey: string,
 | 
				
			||||||
@ -218,12 +237,10 @@ const handleQuestCompletion = async (
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    // Whispers in the Walls is unlocked once The New + Heart of Deimos are completed.
 | 
					    // Whispers in the Walls is unlocked once The New + Heart of Deimos are completed.
 | 
				
			||||||
    if (
 | 
					    if (
 | 
				
			||||||
        (questKey == "/Lotus/Types/Keys/NewWarQuest/NewWarQuestKeyChain" &&
 | 
					        doesQuestCompletionFinishSet(inventory, questKey, [
 | 
				
			||||||
            inventory.QuestKeys.find(
 | 
					            "/Lotus/Types/Keys/NewWarQuest/NewWarQuestKeyChain",
 | 
				
			||||||
                x => x.ItemType == "/Lotus/Types/Keys/InfestedMicroplanetQuest/InfestedMicroplanetQuestKeyChain"
 | 
					            "/Lotus/Types/Keys/InfestedMicroplanetQuest/InfestedMicroplanetQuestKeyChain"
 | 
				
			||||||
            )?.Completed) ||
 | 
					        ])
 | 
				
			||||||
        (questKey == "/Lotus/Types/Keys/InfestedMicroplanetQuest/InfestedMicroplanetQuestKeyChain" &&
 | 
					 | 
				
			||||||
            inventory.QuestKeys.find(x => x.ItemType == "/Lotus/Types/Keys/NewWarQuest/NewWarQuestKeyChain")?.Completed)
 | 
					 | 
				
			||||||
    ) {
 | 
					    ) {
 | 
				
			||||||
        await createMessage(inventory.accountOwnerId, [
 | 
					        await createMessage(inventory.accountOwnerId, [
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
@ -237,6 +254,25 @@ const handleQuestCompletion = async (
 | 
				
			|||||||
        ]);
 | 
					        ]);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // The Hex (Quest) is unlocked once The Lotus Eaters + The Duviri Paradox are completed.
 | 
				
			||||||
 | 
					    if (
 | 
				
			||||||
 | 
					        doesQuestCompletionFinishSet(inventory, questKey, [
 | 
				
			||||||
 | 
					            "/Lotus/Types/Keys/1999PrologueQuest/1999PrologueQuestKeyChain",
 | 
				
			||||||
 | 
					            "/Lotus/Types/Keys/DuviriQuest/DuviriQuestKeyChain"
 | 
				
			||||||
 | 
					        ])
 | 
				
			||||||
 | 
					    ) {
 | 
				
			||||||
 | 
					        await createMessage(inventory.accountOwnerId, [
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                sndr: "/Lotus/Language/NewWar/P3M1ChooseMara",
 | 
				
			||||||
 | 
					                msg: "/Lotus/Language/1999Quest/1999QuestInboxBody",
 | 
				
			||||||
 | 
					                att: ["/Lotus/Types/Keys/1999Quest/1999QuestKeyChain"],
 | 
				
			||||||
 | 
					                sub: "/Lotus/Language/1999Quest/1999QuestInboxSubject",
 | 
				
			||||||
 | 
					                icon: "/Lotus/Interface/Icons/Npcs/Operator.png",
 | 
				
			||||||
 | 
					                highPriority: true
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        ]);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    const questCompletionItems = getQuestCompletionItems(questKey);
 | 
					    const questCompletionItems = getQuestCompletionItems(questKey);
 | 
				
			||||||
    logger.debug(`quest completion items`, questCompletionItems);
 | 
					    logger.debug(`quest completion items`, questCompletionItems);
 | 
				
			||||||
    if (questCompletionItems) {
 | 
					    if (questCompletionItems) {
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user