forked from OpenWF/SpaceNinjaServer
parent
86998b6760
commit
2a2c57a932
@ -136,7 +136,7 @@ export const manageQuestsController: RequestHandler = async (req, res) => {
|
|||||||
|
|
||||||
if (currentStage + 1 == questManifest.chainStages?.length) {
|
if (currentStage + 1 == questManifest.chainStages?.length) {
|
||||||
logger.debug(`Trying to complete last stage with nextStage, calling completeQuest instead`);
|
logger.debug(`Trying to complete last stage with nextStage, calling completeQuest instead`);
|
||||||
await completeQuest(inventory, questKey.ItemType);
|
await completeQuest(inventory, questKey.ItemType, true);
|
||||||
} else {
|
} else {
|
||||||
if (run > 0) {
|
if (run > 0) {
|
||||||
questKey.Progress[currentStage + 1].c = run;
|
questKey.Progress[currentStage + 1].c = run;
|
||||||
|
|||||||
@ -115,7 +115,11 @@ export const addQuestKey = (
|
|||||||
return inventory.QuestKeys[index - 1].toJSON<IQuestKeyClient>();
|
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
|
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
|
||||||
const chainStages = ExportKeys[questKey]?.chainStages;
|
const chainStages = ExportKeys[questKey]?.chainStages;
|
||||||
|
|
||||||
@ -161,7 +165,7 @@ export const completeQuest = async (inventory: TInventoryDatabaseDocument, quest
|
|||||||
const stage = existingQuestKey.Progress[i];
|
const stage = existingQuestKey.Progress[i];
|
||||||
if (stage.c <= run) {
|
if (stage.c <= run) {
|
||||||
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 });
|
await giveKeyChainMissionReward(inventory, { KeyChain: questKey, ChainStage: i });
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -327,7 +331,8 @@ export const giveKeyChainItem = async (
|
|||||||
export const giveKeyChainMessage = async (
|
export const giveKeyChainMessage = async (
|
||||||
inventory: TInventoryDatabaseDocument,
|
inventory: TInventoryDatabaseDocument,
|
||||||
keyChainInfo: IKeyChainRequest,
|
keyChainInfo: IKeyChainRequest,
|
||||||
questKey: IQuestKeyDatabase
|
questKey: IQuestKeyDatabase,
|
||||||
|
sendMessage: boolean = true
|
||||||
): Promise<void> => {
|
): Promise<void> => {
|
||||||
const keyChainMessage = getKeyChainMessage(keyChainInfo);
|
const keyChainMessage = getKeyChainMessage(keyChainInfo);
|
||||||
|
|
||||||
@ -336,7 +341,12 @@ export const giveKeyChainMessage = async (
|
|||||||
keyChainMessage.countedAtt = [];
|
keyChainMessage.countedAtt = [];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (sendMessage) {
|
||||||
await createMessage(inventory.accountOwnerId, [keyChainMessage]);
|
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 });
|
updateQuestStage(inventory, keyChainInfo, { m: true });
|
||||||
};
|
};
|
||||||
@ -384,7 +394,8 @@ export const giveKeyChainMissionReward = async (
|
|||||||
|
|
||||||
export const giveKeyChainStageTriggered = async (
|
export const giveKeyChainStageTriggered = async (
|
||||||
inventory: TInventoryDatabaseDocument,
|
inventory: TInventoryDatabaseDocument,
|
||||||
keyChainInfo: IKeyChainRequest
|
keyChainInfo: IKeyChainRequest,
|
||||||
|
sendMessage: boolean = true
|
||||||
): Promise<void> => {
|
): Promise<void> => {
|
||||||
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
|
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
|
||||||
const chainStages = ExportKeys[keyChainInfo.KeyChain]?.chainStages;
|
const chainStages = ExportKeys[keyChainInfo.KeyChain]?.chainStages;
|
||||||
@ -396,7 +407,7 @@ export const giveKeyChainStageTriggered = async (
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (chainStages[keyChainInfo.ChainStage].messageToSendWhenTriggered) {
|
if (chainStages[keyChainInfo.ChainStage].messageToSendWhenTriggered) {
|
||||||
await giveKeyChainMessage(inventory, keyChainInfo, questKey);
|
await giveKeyChainMessage(inventory, keyChainInfo, questKey, sendMessage);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user