feat: handle KeyToRemove in EOM upload #1491
@ -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;
|
||||||
|
|
||||||
|
@ -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 `);
|
||||||
|
@ -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[];
|
||||||
|
Loading…
x
Reference in New Issue
Block a user