feat: send hex quest email when The Lotus Eaters and The Duviri Paradox are complete #1761
@ -191,6 +191,25 @@ const getQuestCompletionItems = (questKey: string): ITypeCount[] | undefined =>
|
||||
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 (
|
||||
inventory: TInventoryDatabaseDocument,
|
||||
questKey: string,
|
||||
@ -218,12 +237,10 @@ const handleQuestCompletion = async (
|
||||
|
||||
// Whispers in the Walls is unlocked once The New + Heart of Deimos are completed.
|
||||
if (
|
||||
(questKey == "/Lotus/Types/Keys/NewWarQuest/NewWarQuestKeyChain" &&
|
||||
inventory.QuestKeys.find(
|
||||
x => x.ItemType == "/Lotus/Types/Keys/InfestedMicroplanetQuest/InfestedMicroplanetQuestKeyChain"
|
||||
)?.Completed) ||
|
||||
(questKey == "/Lotus/Types/Keys/InfestedMicroplanetQuest/InfestedMicroplanetQuestKeyChain" &&
|
||||
inventory.QuestKeys.find(x => x.ItemType == "/Lotus/Types/Keys/NewWarQuest/NewWarQuestKeyChain")?.Completed)
|
||||
doesQuestCompletionFinishSet(inventory, questKey, [
|
||||
"/Lotus/Types/Keys/NewWarQuest/NewWarQuestKeyChain",
|
||||
"/Lotus/Types/Keys/InfestedMicroplanetQuest/InfestedMicroplanetQuestKeyChain"
|
||||
])
|
||||
) {
|
||||
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);
|
||||
logger.debug(`quest completion items`, questCompletionItems);
|
||||
if (questCompletionItems) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user