feat: stripped rewards
Eidolon kill & captures will be handled like this with the next PE+ update, otherwise this should work as all the stripped rewards I'm aware of are enemy drops.
This commit is contained in:
parent
6bf365ddc5
commit
10ab36701a
@ -1,4 +1,5 @@
|
||||
import {
|
||||
ExportEnemies,
|
||||
ExportFusionBundles,
|
||||
ExportRegions,
|
||||
ExportRewards,
|
||||
@ -18,6 +19,7 @@ import {
|
||||
addFocusXpIncreases,
|
||||
addFusionTreasures,
|
||||
addGearExpByCategory,
|
||||
addItem,
|
||||
addMiscItems,
|
||||
addMissionComplete,
|
||||
addMods,
|
||||
@ -28,7 +30,7 @@ import {
|
||||
import { updateQuestKey } from "@/src/services/questService";
|
||||
import { HydratedDocument } from "mongoose";
|
||||
import { IInventoryChanges } from "@/src/types/purchaseTypes";
|
||||
import { getLevelKeyRewards, getNode } from "@/src/services/itemDataService";
|
||||
import { getLevelKeyRewards, getNode, toStoreItem } from "@/src/services/itemDataService";
|
||||
import { InventoryDocumentProps, TInventoryDatabaseDocument } from "@/src/models/inventoryModels/inventoryModel";
|
||||
import { getEntriesUnsafe } from "@/src/utils/ts-utils";
|
||||
import { IEquipmentClient } from "@/src/types/inventoryTypes/commonInventoryTypes";
|
||||
@ -319,7 +321,8 @@ export const addMissionRewards = async (
|
||||
LevelKeyName: levelKeyName,
|
||||
Missions: missions,
|
||||
RegularCredits: creditDrops,
|
||||
VoidTearParticipantsCurrWave: voidTearWave
|
||||
VoidTearParticipantsCurrWave: voidTearWave,
|
||||
StrippedItems: strippedItems
|
||||
}: IMissionInventoryUpdateRequest
|
||||
) => {
|
||||
if (!rewardInfo) {
|
||||
@ -406,6 +409,27 @@ export const addMissionRewards = async (
|
||||
MissionRewards.push({ StoreItem: reward.type, ItemCount: reward.itemCount });
|
||||
}
|
||||
|
||||
if (strippedItems) {
|
||||
for (const si of strippedItems) {
|
||||
const droptable = ExportEnemies.droptables[si.DropTable];
|
||||
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
|
||||
if (!droptable) {
|
||||
logger.error(`unknown droptable ${si.DropTable}`);
|
||||
} else {
|
||||
for (const pool of droptable) {
|
||||
const reward = getRandomReward(pool.items)!;
|
||||
logger.debug(`stripped droptable rolled`, reward);
|
||||
await addItem(inventory, reward.type);
|
||||
MissionRewards.push({
|
||||
StoreItem: toStoreItem(reward.type),
|
||||
ItemCount: 1,
|
||||
FromEnemyCache: true // to show "identified"
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return { inventoryChanges, MissionRewards, credits };
|
||||
};
|
||||
|
||||
|
@ -103,6 +103,10 @@ export type IMissionInventoryUpdateRequest = {
|
||||
}[];
|
||||
CollectibleScans?: ICollectibleEntry[];
|
||||
Upgrades?: IUpgradeClient[]; // riven challenge progress
|
||||
StrippedItems?: {
|
||||
DropTable: string;
|
||||
DROP_MOD: number[];
|
||||
}[];
|
||||
} & {
|
||||
[K in TEquipmentKey]?: IEquipmentClient[];
|
||||
};
|
||||
|
Loading…
x
Reference in New Issue
Block a user