返回提交历史
Modified
src/controllers/custom/manageQuestsController.ts
+1
-1
Modified
src/services/questService.ts
+19
-8
XFEstudio/SpaceNinjaServer
chore: dont send messages with `completeQuest` (#2914)
Re #2754 Reviewed-on: https://onlyg.it/OpenWF/SpaceNinjaServer/pulls/2914 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>
a0ce110e
代码差异
2 个文件
+20
-9
@@ -136,7 +136,7 @@ export const manageQuestsController: RequestHandler = async (req, res) => {
136
136
137
137
if (currentStage + 1 == questManifest.chainStages?.length) {
138
138
logger.debug(`Trying to complete last stage with nextStage, calling completeQuest instead`);
139
await completeQuest(inventory, questKey.ItemType);
139
await completeQuest(inventory, questKey.ItemType, true);
140
140
} else {
141
141
if (run > 0) {
142
142
questKey.Progress[currentStage + 1].c = run;
@@ -116,7 +116,11 @@ export const addQuestKey = (
116
116
return inventory.QuestKeys[index - 1].toJSON<IQuestKeyClient>();
117
117
};
118
118
119
export const completeQuest = async (inventory: TInventoryDatabaseDocument, questKey: string): Promise<void> => {
119
export const completeQuest = async (
120
inventory: TInventoryDatabaseDocument,
121
questKey: string,
122
sendMessages: boolean = false
123
): Promise<void> => {
120
124
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
121
125
const chainStages = ExportKeys[questKey]?.chainStages;
122
126
@@ -134,8 +138,8 @@ export const completeQuest = async (inventory: TInventoryDatabaseDocument, quest
134
138
unlock: true,
135
139
Progress: Array.from({ length: chainStageTotal }, () => ({
136
140
c: 0,
137
i: false,
138
m: false,
141
i: true,
142
m: true,
139
143
b: []
140
144
}))
141
145
};
@@ -162,7 +166,7 @@ export const completeQuest = async (inventory: TInventoryDatabaseDocument, quest
162
166
const stage = existingQuestKey.Progress[i];
163
167
if (stage.c <= run) {
164
168
stage.c = run;
165
await giveKeyChainStageTriggered(inventory, { KeyChain: questKey, ChainStage: i });
169
await giveKeyChainStageTriggered(inventory, { KeyChain: questKey, ChainStage: i }, sendMessages);
166
170
await giveKeyChainMissionReward(inventory, { KeyChain: questKey, ChainStage: i });
167
171
}
168
172
}
@@ -328,7 +332,8 @@ export const giveKeyChainItem = async (
328
332
export const giveKeyChainMessage = async (
329
333
inventory: TInventoryDatabaseDocument,
330
334
keyChainInfo: IKeyChainRequest,
331
questKey: IQuestKeyDatabase
335
questKey: IQuestKeyDatabase,
336
sendMessage: boolean = true
332
337
): Promise<void> => {
333
338
const keyChainMessage = getKeyChainMessage(keyChainInfo);
334
339
@@ -337,7 +342,12 @@ export const giveKeyChainMessage = async (
337
342
keyChainMessage.countedAtt = [];
338
343
}
339
344
340
await createMessage(inventory.accountOwnerId, [keyChainMessage]);
345
if (sendMessage) {
346
await createMessage(inventory.accountOwnerId, [keyChainMessage]);
347
} else {
348
if (keyChainMessage.countedAtt?.length) await addItems(inventory, keyChainMessage.countedAtt);
349
if (keyChainMessage.att?.length) await addItems(inventory, keyChainMessage.att);
350
}
341
351
342
352
updateQuestStage(inventory, keyChainInfo, { m: true });
343
353
};
@@ -385,7 +395,8 @@ export const giveKeyChainMissionReward = async (
385
395
386
396
export const giveKeyChainStageTriggered = async (
387
397
inventory: TInventoryDatabaseDocument,
388
keyChainInfo: IKeyChainRequest
398
keyChainInfo: IKeyChainRequest,
399
sendMessage: boolean = true
389
400
): Promise<void> => {
390
401
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
391
402
const chainStages = ExportKeys[keyChainInfo.KeyChain]?.chainStages;
@@ -397,7 +408,7 @@ export const giveKeyChainStageTriggered = async (
397
408
}
398
409
399
410
if (chainStages[keyChainInfo.ChainStage].messageToSendWhenTriggered) {
400
await giveKeyChainMessage(inventory, keyChainInfo, questKey);
411
await giveKeyChainMessage(inventory, keyChainInfo, questKey, sendMessage);
401
412
}
402
413
}
403
414
};