Compare commits

...

3 Commits

Author SHA1 Message Date
d0f6650c41 handle KeyToRemove in EOM upload 2025-04-06 16:05:44 +02:00
bbadca908c add "addLevelKeys" 2025-04-06 16:05:24 +02:00
cb89e31c15 merge EndOfMatchUpload conditions 2025-04-06 16:02:20 +02:00
3 changed files with 57 additions and 48 deletions

View File

@ -538,15 +538,9 @@ export const addItem = async (
if (!key) return {}; if (!key) return {};
return { QuestKeys: [key] }; return { QuestKeys: [key] };
} else { } else {
const key = { ItemType: typeName, ItemCount: quantity }; const levelKeyChanges = [{ ItemType: typeName, ItemCount: quantity }];
addLevelKeys(inventory, levelKeyChanges);
const index = inventory.LevelKeys.findIndex(levelKey => levelKey.ItemType == typeName); return { LevelKeys: levelKeyChanges };
if (index != -1) {
inventory.LevelKeys[index].ItemCount += quantity;
} else {
inventory.LevelKeys.push(key);
}
return { LevelKeys: [key] };
} }
} }
if (typeName in ExportDrones) { if (typeName in ExportDrones) {
@ -1240,6 +1234,10 @@ export const addRecipes = (inventory: TInventoryDatabaseDocument, itemsArray: IT
applyArrayChanges(inventory.Recipes, itemsArray); applyArrayChanges(inventory.Recipes, itemsArray);
}; };
export const addLevelKeys = (inventory: TInventoryDatabaseDocument, itemsArray: ITypeCount[]): void => {
applyArrayChanges(inventory.LevelKeys, itemsArray);
};
export const addMods = (inventory: TInventoryDatabaseDocument, itemsArray: IRawUpgrade[]): void => { export const addMods = (inventory: TInventoryDatabaseDocument, itemsArray: IRawUpgrade[]): void => {
const { RawUpgrades } = inventory; const { RawUpgrades } = inventory;

View File

@ -22,6 +22,7 @@ import {
addFusionTreasures, addFusionTreasures,
addGearExpByCategory, addGearExpByCategory,
addItem, addItem,
addLevelKeys,
addMiscItems, addMiscItems,
addMissionComplete, addMissionComplete,
addMods, addMods,
@ -77,11 +78,8 @@ export const addMissionInventoryUpdates = async (
inventoryUpdates: IMissionInventoryUpdateRequest inventoryUpdates: IMissionInventoryUpdateRequest
): Promise<IInventoryChanges> => { ): Promise<IInventoryChanges> => {
const inventoryChanges: IInventoryChanges = {}; const inventoryChanges: IInventoryChanges = {};
if ( if (inventoryUpdates.EndOfMatchUpload) {
inventoryUpdates.EndOfMatchUpload && if (inventoryUpdates.Missions && inventoryUpdates.Missions.Tag in ExportRegions) {
inventoryUpdates.Missions &&
inventoryUpdates.Missions.Tag in ExportRegions
) {
const node = ExportRegions[inventoryUpdates.Missions.Tag]; const node = ExportRegions[inventoryUpdates.Missions.Tag];
if (node.miscItemFee) { if (node.miscItemFee) {
addMiscItems(inventory, [ addMiscItems(inventory, [
@ -92,28 +90,19 @@ export const addMissionInventoryUpdates = async (
]); ]);
} }
} }
if (inventoryUpdates.RewardInfo) { if (inventoryUpdates.KeyToRemove) {
if (inventoryUpdates.RewardInfo.periodicMissionTag) { if (!inventoryUpdates.KeyOwner || inventory.accountOwnerId.equals(inventoryUpdates.KeyOwner)) {
const tag = inventoryUpdates.RewardInfo.periodicMissionTag; addLevelKeys(inventory, [
const existingCompletion = inventory.PeriodicMissionCompletions.find(completion => completion.tag === tag); {
ItemType: inventoryUpdates.KeyToRemove,
if (existingCompletion) { ItemCount: -1
existingCompletion.date = new Date();
} else {
inventory.PeriodicMissionCompletions.push({
tag: tag,
date: new Date()
});
} }
} ]);
if (inventoryUpdates.RewardInfo.NemesisAbandonedRewards) {
inventory.NemesisAbandonedRewards = inventoryUpdates.RewardInfo.NemesisAbandonedRewards;
} }
} }
if ( if (
inventoryUpdates.MissionFailed && inventoryUpdates.MissionFailed &&
inventoryUpdates.MissionStatus == "GS_FAILURE" && inventoryUpdates.MissionStatus == "GS_FAILURE" &&
inventoryUpdates.EndOfMatchUpload &&
inventoryUpdates.ObjectiveReached && inventoryUpdates.ObjectiveReached &&
!inventoryUpdates.LockedWeaponGroup !inventoryUpdates.LockedWeaponGroup
) { ) {
@ -136,6 +125,25 @@ export const addMissionInventoryUpdates = async (
]); ]);
} }
} }
}
if (inventoryUpdates.RewardInfo) {
if (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()
});
}
}
if (inventoryUpdates.RewardInfo.NemesisAbandonedRewards) {
inventory.NemesisAbandonedRewards = inventoryUpdates.RewardInfo.NemesisAbandonedRewards;
}
}
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 `);

View File

@ -49,6 +49,9 @@ export type IMissionInventoryUpdateRequest = {
rewardsMultiplier?: number; rewardsMultiplier?: number;
GoalTag: string; GoalTag: string;
LevelKeyName: string; LevelKeyName: string;
KeyOwner?: string;
KeyRemovalHash?: string;
KeyToRemove?: string;
ActiveBoosters?: IBooster[]; ActiveBoosters?: IBooster[];
RawUpgrades?: IRawUpgrade[]; RawUpgrades?: IRawUpgrade[];
FusionTreasures?: IFusionTreasure[]; FusionTreasures?: IFusionTreasure[];