chore: dont send messages with completeQuest #2914

Merged
Sainan merged 2 commits from AMelonInsideLemon/SpaceNinjaServer:silent-completeQuest into main 2025-10-20 00:56:46 -07:00
2 changed files with 20 additions and 9 deletions

View File

@ -136,7 +136,7 @@ export const manageQuestsController: RequestHandler = async (req, res) => {
if (currentStage + 1 == questManifest.chainStages?.length) {
logger.debug(`Trying to complete last stage with nextStage, calling completeQuest instead`);
await completeQuest(inventory, questKey.ItemType);
await completeQuest(inventory, questKey.ItemType, true);
} else {
if (run > 0) {
questKey.Progress[currentStage + 1].c = run;

View File

@ -115,7 +115,11 @@ export const addQuestKey = (
return inventory.QuestKeys[index - 1].toJSON<IQuestKeyClient>();
};
export const completeQuest = async (inventory: TInventoryDatabaseDocument, questKey: string): Promise<void> => {
export const completeQuest = async (
inventory: TInventoryDatabaseDocument,
questKey: string,
sendMessages: boolean = false
): Promise<void> => {
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
const chainStages = ExportKeys[questKey]?.chainStages;
@ -133,8 +137,8 @@ export const completeQuest = async (inventory: TInventoryDatabaseDocument, quest
unlock: true,
Progress: Array.from({ length: chainStageTotal }, () => ({
c: 0,
i: false,
m: false,
i: true,
m: true,
b: []
}))
};
@ -161,7 +165,7 @@ export const completeQuest = async (inventory: TInventoryDatabaseDocument, quest
const stage = existingQuestKey.Progress[i];
if (stage.c <= run) {
stage.c = run;
await giveKeyChainStageTriggered(inventory, { KeyChain: questKey, ChainStage: i });
await giveKeyChainStageTriggered(inventory, { KeyChain: questKey, ChainStage: i }, sendMessages);
await giveKeyChainMissionReward(inventory, { KeyChain: questKey, ChainStage: i });
}
}
@ -327,7 +331,8 @@ export const giveKeyChainItem = async (
export const giveKeyChainMessage = async (
inventory: TInventoryDatabaseDocument,
keyChainInfo: IKeyChainRequest,
questKey: IQuestKeyDatabase
questKey: IQuestKeyDatabase,
sendMessage: boolean = true
): Promise<void> => {
const keyChainMessage = getKeyChainMessage(keyChainInfo);
@ -336,7 +341,12 @@ export const giveKeyChainMessage = async (
keyChainMessage.countedAtt = [];
}
if (sendMessage) {
await createMessage(inventory.accountOwnerId, [keyChainMessage]);
} else {
if (keyChainMessage.countedAtt?.length) await addItems(inventory, keyChainMessage.countedAtt);
if (keyChainMessage.att?.length) await addItems(inventory, keyChainMessage.att);
}
updateQuestStage(inventory, keyChainInfo, { m: true });
Review

If we don't send the message, maybe we shouldn't set this either?

If we don't send the message, maybe we shouldn't set this either?
{
    "unlock": true,
    "Progress": [
        {
            "c": 0,
            "i": true,
            "m": true,
            "b": []
        },
        {
            "c": 0,
            "i": true,
            "m": true,
            "b": []
        },
        {
            "c": 0,
            "i": true,
            "m": true,
            "b": []
        },
        {
            "c": 0,
            "i": true,
            "m": true,
            "b": []
        },
        {
            "c": 0,
            "i": true,
            "m": true,
            "b": []
        },
        {
            "c": 0,
            "i": true,
            "m": true,
            "b": []
        },
        {
            "c": 0,
            "i": true,
            "m": true,
            "b": []
        },
        {
            "c": 0,
            "i": true,
            "m": true,
            "b": []
        },
        {
            "c": 0,
            "i": true,
            "m": true,
            "b": []
        },
        {
            "c": 0,
            "i": true,
            "m": true,
            "b": []
        },
        {
            "c": 0,
            "i": true,
            "m": true,
            "b": []
        },
        {
            "c": 0,
            "i": true,
            "m": true,
            "b": []
        },
        {
            "c": 0,
            "i": true,
            "m": true,
            "b": []
        },
        {
            "c": 0,
            "i": true,
            "m": true,
            "b": []
        },
        {
            "c": 0,
            "i": true,
            "m": true,
            "b": []
        },
        {
            "c": 0,
            "i": true,
            "m": true,
            "b": []
        },
        {
            "c": 0,
            "i": true,
            "m": true,
            "b": []
        },
        {
            "c": 0,
            "i": true,
            "m": true,
            "b": []
        },
        {
            "c": 0,
            "i": true,
            "m": true,
            "b": []
        },
        {
            "c": 0,
            "i": true,
            "m": true,
            "b": []
        },
        {
            "c": 0,
            "i": true,
            "m": true,
            "b": []
        },
        {
            "c": 0,
            "i": true,
            "m": true,
            "b": []
        },
        {
            "c": 0,
            "i": true,
            "m": true,
            "b": []
        }
    ],
    "Completed": true,
    "ItemType": "/Lotus/Types/Keys/RailJackBuildQuest/RailjackBuildQuestKeyChain"
}

thats that from account with gifted railjack bundle, they just set all i and m to true.
I think I just need to change defaults in completeQuest to match live

``` { "unlock": true, "Progress": [ { "c": 0, "i": true, "m": true, "b": [] }, { "c": 0, "i": true, "m": true, "b": [] }, { "c": 0, "i": true, "m": true, "b": [] }, { "c": 0, "i": true, "m": true, "b": [] }, { "c": 0, "i": true, "m": true, "b": [] }, { "c": 0, "i": true, "m": true, "b": [] }, { "c": 0, "i": true, "m": true, "b": [] }, { "c": 0, "i": true, "m": true, "b": [] }, { "c": 0, "i": true, "m": true, "b": [] }, { "c": 0, "i": true, "m": true, "b": [] }, { "c": 0, "i": true, "m": true, "b": [] }, { "c": 0, "i": true, "m": true, "b": [] }, { "c": 0, "i": true, "m": true, "b": [] }, { "c": 0, "i": true, "m": true, "b": [] }, { "c": 0, "i": true, "m": true, "b": [] }, { "c": 0, "i": true, "m": true, "b": [] }, { "c": 0, "i": true, "m": true, "b": [] }, { "c": 0, "i": true, "m": true, "b": [] }, { "c": 0, "i": true, "m": true, "b": [] }, { "c": 0, "i": true, "m": true, "b": [] }, { "c": 0, "i": true, "m": true, "b": [] }, { "c": 0, "i": true, "m": true, "b": [] }, { "c": 0, "i": true, "m": true, "b": [] } ], "Completed": true, "ItemType": "/Lotus/Types/Keys/RailJackBuildQuest/RailjackBuildQuestKeyChain" } ``` thats that from account with gifted railjack bundle, they just set all `i` and `m` to `true`. I think I just need to change defaults in `completeQuest` to match live
};
@ -384,7 +394,8 @@ export const giveKeyChainMissionReward = async (
export const giveKeyChainStageTriggered = async (
inventory: TInventoryDatabaseDocument,
keyChainInfo: IKeyChainRequest
keyChainInfo: IKeyChainRequest,
sendMessage: boolean = true
): Promise<void> => {
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
const chainStages = ExportKeys[keyChainInfo.KeyChain]?.chainStages;
@ -396,7 +407,7 @@ export const giveKeyChainStageTriggered = async (
}
if (chainStages[keyChainInfo.ChainStage].messageToSendWhenTriggered) {
await giveKeyChainMessage(inventory, keyChainInfo, questKey);
await giveKeyChainMessage(inventory, keyChainInfo, questKey, sendMessage);
}
}
};