fix: correct checks for quest replay (#2798)
Some checks failed
Build / build (push) Has been cancelled
Build Docker image / docker-arm64 (push) Successful in 1m17s
Build Docker image / docker-amd64 (push) Has been cancelled

Closes #2797

Reviewed-on: #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:
AMelonInsideLemon 2025-09-21 02:53:05 -07:00 committed by Sainan
parent 05fbefa7f4
commit 87da94658d
3 changed files with 11 additions and 11 deletions

View File

@ -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);

View File

@ -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);

View File

@ -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);
}
}
};