From 568b2913ba0cad7290047bb73ae1714245c84bf1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C4=81nis?= Date: Wed, 23 Apr 2025 00:32:07 +0300 Subject: [PATCH] feat: conquest research points --- .../api/missionInventoryUpdateController.ts | 44 +++++++++++++++++-- src/types/requestTypes.ts | 7 ++- 2 files changed, 47 insertions(+), 4 deletions(-) diff --git a/src/controllers/api/missionInventoryUpdateController.ts b/src/controllers/api/missionInventoryUpdateController.ts index d8bf8ac9..5f43f07a 100644 --- a/src/controllers/api/missionInventoryUpdateController.ts +++ b/src/controllers/api/missionInventoryUpdateController.ts @@ -75,12 +75,10 @@ export const missionInventoryUpdateController: RequestHandler = async (req, res) const { MissionRewards, inventoryChanges, credits, AffiliationMods, SyndicateXPItemReward } = await addMissionRewards(inventory, missionReport, firstCompletion); - await inventory.save(); - const inventoryResponse = await getInventoryResponse(inventory, true); + //TODO: figure out when to send inventory. it is needed for many cases. const response: IMissionInventoryUpdateResponse = { - InventoryJson: JSON.stringify(inventoryResponse), InventoryChanges: inventoryChanges, MissionRewards, ...credits, @@ -89,10 +87,50 @@ export const missionInventoryUpdateController: RequestHandler = async (req, res) SyndicateXPItemReward, AffiliationMods }; + if (missionReport.ConquestMissionsCompleted !== undefined) { response.ConquestCompletedMissionsCount = missionReport.ConquestMissionsCompleted == 2 ? 0 : missionReport.ConquestMissionsCompleted + 1; + + + + let score = 1; + if(missionReport.RewardInfo?.ConquestHardModeActive === 1) + score += 3 + + if (missionReport.RewardInfo?.ConquestPersonalModifiersActive !== undefined) + score += missionReport.RewardInfo?.ConquestPersonalModifiersActive; + if (missionReport.RewardInfo?.ConquestEquipmentSuggestionsFulfilled !== undefined) + score += missionReport.RewardInfo?.ConquestEquipmentSuggestionsFulfilled; + + score *= missionReport.ConquestMissionsCompleted + 1 + + if(missionReport.ConquestMissionsCompleted == 2 && missionReport.RewardInfo?.ConquestHardModeActive === 1) + score += 1; + + const conquestType = missionReport.RewardInfo?.ConquestType; + const conquestNode = conquestType == "HexConquest" ? "EchoesHexConquestHardModeUnlocked" : "EntratiLabConquestHardModeUnlocked"; + if(score >= 25 && inventory.NodeIntrosCompleted.find(x => x == conquestNode) === undefined) + inventory.NodeIntrosCompleted.push(conquestNode); + + if(conquestType == "HexConquest") + { + inventory.EchoesHexConquestCacheScoreMission ??= 0; + + if(score > inventory.EchoesHexConquestCacheScoreMission ) + inventory.EchoesHexConquestCacheScoreMission = score; + }else + { + inventory.EntratiLabConquestCacheScoreMission ??= 0; + + if(score > inventory.EntratiLabConquestCacheScoreMission ) + inventory.EntratiLabConquestCacheScoreMission = score; + } } + + await inventory.save(); + const inventoryResponse = await getInventoryResponse(inventory, true); + response.InventoryJson = JSON.stringify(inventoryResponse); res.json(response); }; diff --git a/src/types/requestTypes.ts b/src/types/requestTypes.ts index 652ea65e..441bf03e 100644 --- a/src/types/requestTypes.ts +++ b/src/types/requestTypes.ts @@ -151,7 +151,12 @@ export interface IRewardInfo { PurgatoryRewardQualifications?: string; rewardSeed?: number | bigint; periodicMissionTag?: string; - + ConquestType?: string; + ConquestCompleted?: number; + ConquestEquipmentSuggestionsFulfilled?: number; + ConquestPersonalModifiersActive?: number; + ConquestStickersActive?: number; + ConquestHardModeActive?: number; // for bounties, only EOM_AFK and node are given from above, plus: JobTier?: number; jobId?: string;