fix: correct checks for quest replay #2798

Merged
Sainan merged 3 commits from AMelonInsideLemon/SpaceNinjaServer:fix-replay into main 2025-09-21 02:53:06 -07:00
3 changed files with 10 additions and 10 deletions
Showing only changes of commit 34a23aa2dc - Show all commits

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

@ -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) {
Sainan marked this conversation as resolved Outdated

Can't we use stage i to track items were already given?

Can't we use stage `i` to track items were already given?
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) > 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);
}
}
};