feat: handle DiscoveredMarkers in missionInventoryUpdate (#1339)

Closes #679

Reviewed-on: OpenWF/SpaceNinjaServer#1339
This commit is contained in:
Sainan 2025-03-27 03:32:50 -07:00
parent 5f9475f750
commit 36c7b6f8f8
3 changed files with 25 additions and 3 deletions

View File

@ -81,7 +81,8 @@ import {
IVendorPurchaseHistoryEntryClient, IVendorPurchaseHistoryEntryClient,
INemesisDatabase, INemesisDatabase,
INemesisClient, INemesisClient,
IInfNode IInfNode,
IDiscoveredMarker
} from "../../types/inventoryTypes/inventoryTypes"; } from "../../types/inventoryTypes/inventoryTypes";
import { IOid } from "../../types/commonTypes"; import { IOid } from "../../types/commonTypes";
import { import {
@ -377,6 +378,14 @@ droneSchema.set("toJSON", {
} }
}); });
const discoveredMarkerSchema = new Schema<IDiscoveredMarker>(
{
tag: String,
discoveryState: [Number]
},
{ _id: false }
);
const challengeProgressSchema = new Schema<IChallengeProgress>( const challengeProgressSchema = new Schema<IChallengeProgress>(
{ {
Progress: Number, Progress: Number,
@ -1334,7 +1343,7 @@ const inventorySchema = new Schema<IInventoryDatabase, InventoryDocumentProps>(
ActiveAvatarImageType: { type: String, default: "/Lotus/Types/StoreItems/AvatarImages/AvatarImageDefault" }, ActiveAvatarImageType: { type: String, default: "/Lotus/Types/StoreItems/AvatarImages/AvatarImageDefault" },
// open location store like EidolonPlainsDiscoverable or OrbVallisCaveDiscoverable // open location store like EidolonPlainsDiscoverable or OrbVallisCaveDiscoverable
DiscoveredMarkers: [Schema.Types.Mixed], DiscoveredMarkers: [discoveredMarkerSchema],
//Open location mission like "JobId" + "StageCompletions" //Open location mission like "JobId" + "StageCompletions"
CompletedJobs: [Schema.Types.Mixed], CompletedJobs: [Schema.Types.Mixed],

View File

@ -359,6 +359,17 @@ export const addMissionInventoryUpdates = async (
} }
break; break;
} }
case "DiscoveredMarkers": {
for (const clientMarker of value) {
const dbMarker = inventory.DiscoveredMarkers.find(x => x.tag == clientMarker.tag);
if (dbMarker) {
dbMarker.discoveryState = clientMarker.discoveryState;
} else {
inventory.DiscoveredMarkers.push(clientMarker);
}
}
break;
}
default: default:
// Equipment XP updates // Equipment XP updates
if (equipmentKeys.includes(key as TEquipmentKey)) { if (equipmentKeys.includes(key as TEquipmentKey)) {

View File

@ -16,7 +16,8 @@ import {
IQuestKeyDatabase, IQuestKeyDatabase,
ILoreFragmentScan, ILoreFragmentScan,
IUpgradeClient, IUpgradeClient,
ICollectibleEntry ICollectibleEntry,
IDiscoveredMarker
} from "./inventoryTypes/inventoryTypes"; } from "./inventoryTypes/inventoryTypes";
export interface IAffiliationChange { export interface IAffiliationChange {
@ -106,6 +107,7 @@ export type IMissionInventoryUpdateRequest = {
NumExtraRewards: number; NumExtraRewards: number;
Count: number; Count: number;
}[]; }[];
DiscoveredMarkers?: IDiscoveredMarker[];
} & { } & {
[K in TEquipmentKey]?: IEquipmentClient[]; [K in TEquipmentKey]?: IEquipmentClient[];
}; };