fix: save nightwave challenges & sortie/archon hunt completion (#933)
Some checks failed
Build Docker image / docker (push) Waiting to run
Build / build (18) (push) Has been cancelled
Build / build (20) (push) Has been cancelled
Build / build (22) (push) Has been cancelled

Closes #932, Closes #468

Reviewed-on: #933
Co-authored-by: AMelonInsideLemon <166175391+AMelonInsideLemon@users.noreply.github.com>
Co-committed-by: AMelonInsideLemon <166175391+AMelonInsideLemon@users.noreply.github.com>
This commit is contained in:
AMelonInsideLemon 2025-02-09 09:39:45 -08:00 committed by OrdisPrime
parent 4398d37566
commit 7863833850
2 changed files with 33 additions and 0 deletions

View File

@ -83,6 +83,19 @@ export const addMissionInventoryUpdates = (
if (inventoryUpdates.MissionFailed === true) { if (inventoryUpdates.MissionFailed === true) {
return; return;
} }
if (inventoryUpdates.RewardInfo && inventoryUpdates.RewardInfo.periodicMissionTag) {
const tag = inventoryUpdates.RewardInfo.periodicMissionTag;
const existingCompletion = inventory.PeriodicMissionCompletions.find(completion => completion.tag === tag);
if (existingCompletion) {
existingCompletion.date = new Date();
} else {
inventory.PeriodicMissionCompletions.push({
tag: tag,
date: new Date()
});
}
}
for (const [key, value] of getEntriesUnsafe(inventoryUpdates)) { for (const [key, value] of getEntriesUnsafe(inventoryUpdates)) {
if (value === undefined) { if (value === undefined) {
logger.error(`Inventory update key ${key} has no value `); logger.error(`Inventory update key ${key} has no value `);
@ -178,6 +191,22 @@ export const addMissionInventoryUpdates = (
}); });
break; break;
} }
case "SyndicateId": {
inventory.CompletedSyndicates.push(value);
break;
}
case "SortieId": {
inventory.CompletedSorties.push(value);
break;
}
case "SeasonChallengeCompletions":
const processedCompletions = value.map(({ challenge, id }) => ({
challenge: challenge.substring(challenge.lastIndexOf("/") + 1),
id
}));
inventory.SeasonChallengeHistory.push(...processedCompletions);
break;
default: default:
// Equipment XP updates // Equipment XP updates
if (equipmentKeys.includes(key as TEquipmentKey)) { if (equipmentKeys.includes(key as TEquipmentKey)) {

View File

@ -44,6 +44,9 @@ export type IMissionInventoryUpdateRequest = {
CrewShipAmmo?: ITypeCount[]; CrewShipAmmo?: ITypeCount[];
BonusMiscItems?: ITypeCount[]; BonusMiscItems?: ITypeCount[];
SyndicateId?: string;
SortieId?: string;
SeasonChallengeCompletions?: ISeasonChallenge[];
AffiliationChanges?: IAffiliationChange[]; AffiliationChanges?: IAffiliationChange[];
crossPlaySetting?: string; crossPlaySetting?: string;
rewardsMultiplier?: number; rewardsMultiplier?: number;
@ -100,6 +103,7 @@ export interface IRewardInfo {
rewardQualifications?: string; // did a Survival for 5 minutes and this was "1" rewardQualifications?: string; // did a Survival for 5 minutes and this was "1"
PurgatoryRewardQualifications?: string; PurgatoryRewardQualifications?: string;
rewardSeed?: number; rewardSeed?: number;
periodicMissionTag?: string;
} }
export type IMissionStatus = "GS_SUCCESS" | "GS_FAILURE" | "GS_DUMPED" | "GS_QUIT" | "GS_INTERRUPTED"; export type IMissionStatus = "GS_SUCCESS" | "GS_FAILURE" | "GS_DUMPED" | "GS_QUIT" | "GS_INTERRUPTED";