fix: defer resolving of StrippedItems in bounties to extraction
All checks were successful
Build / build (pull_request) Successful in 59s
All checks were successful
Build / build (pull_request) Successful in 59s
This commit is contained in:
parent
d794bd94ce
commit
451279e588
@ -1133,7 +1133,8 @@ export const addMissionRewards = async (
|
|||||||
VoidTearParticipantsCurrWave: voidTearWave,
|
VoidTearParticipantsCurrWave: voidTearWave,
|
||||||
StrippedItems: strippedItems,
|
StrippedItems: strippedItems,
|
||||||
AffiliationChanges: AffiliationMods,
|
AffiliationChanges: AffiliationMods,
|
||||||
InvasionProgress: invasionProgress
|
InvasionProgress: invasionProgress,
|
||||||
|
EndOfMatchUpload: endOfMatchUpload
|
||||||
}: IMissionInventoryUpdateRequest,
|
}: IMissionInventoryUpdateRequest,
|
||||||
firstCompletion: boolean
|
firstCompletion: boolean
|
||||||
): Promise<AddMissionRewardsReturnType> => {
|
): Promise<AddMissionRewardsReturnType> => {
|
||||||
@ -1392,73 +1393,77 @@ export const addMissionRewards = async (
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (strippedItems) {
|
if (strippedItems) {
|
||||||
for (const si of strippedItems) {
|
if (endOfMatchUpload) {
|
||||||
if (si.DropTable in droptableAliases) {
|
for (const si of strippedItems) {
|
||||||
logger.debug(`rewriting ${si.DropTable} to ${droptableAliases[si.DropTable]}`);
|
if (si.DropTable in droptableAliases) {
|
||||||
si.DropTable = droptableAliases[si.DropTable];
|
logger.debug(`rewriting ${si.DropTable} to ${droptableAliases[si.DropTable]}`);
|
||||||
}
|
si.DropTable = droptableAliases[si.DropTable];
|
||||||
const droptables = ExportEnemies.droptables[si.DropTable] ?? [];
|
|
||||||
if (si.DROP_MOD) {
|
|
||||||
const modDroptable = droptables.find(x => x.type == "mod");
|
|
||||||
if (modDroptable) {
|
|
||||||
for (let i = 0; i != si.DROP_MOD.length; ++i) {
|
|
||||||
const reward = getRandomReward(modDroptable.items)!;
|
|
||||||
logger.debug(`stripped droptable (mods pool) rolled`, reward);
|
|
||||||
await addItem(inventory, reward.type);
|
|
||||||
MissionRewards.push({
|
|
||||||
StoreItem: toStoreItem(reward.type),
|
|
||||||
ItemCount: 1,
|
|
||||||
FromEnemyCache: true // to show "identified"
|
|
||||||
});
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
logger.error(`unknown droptable ${si.DropTable} for DROP_MOD`);
|
|
||||||
}
|
}
|
||||||
}
|
const droptables = ExportEnemies.droptables[si.DropTable] ?? [];
|
||||||
if (si.DROP_BLUEPRINT) {
|
if (si.DROP_MOD) {
|
||||||
const blueprintDroptable = droptables.find(x => x.type == "blueprint");
|
const modDroptable = droptables.find(x => x.type == "mod");
|
||||||
if (blueprintDroptable) {
|
if (modDroptable) {
|
||||||
for (let i = 0; i != si.DROP_BLUEPRINT.length; ++i) {
|
for (let i = 0; i != si.DROP_MOD.length; ++i) {
|
||||||
const reward = getRandomReward(blueprintDroptable.items)!;
|
const reward = getRandomReward(modDroptable.items)!;
|
||||||
logger.debug(`stripped droptable (blueprints pool) rolled`, reward);
|
logger.debug(`stripped droptable (mods pool) rolled`, reward);
|
||||||
await addItem(inventory, reward.type);
|
await addItem(inventory, reward.type);
|
||||||
MissionRewards.push({
|
|
||||||
StoreItem: toStoreItem(reward.type),
|
|
||||||
ItemCount: 1,
|
|
||||||
FromEnemyCache: true // to show "identified"
|
|
||||||
});
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
logger.error(`unknown droptable ${si.DropTable} for DROP_BLUEPRINT`);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// e.g. H-09 Apex Turret Sumdali
|
|
||||||
if (si.DROP_MISC_ITEM) {
|
|
||||||
const resourceDroptable = droptables.find(x => x.type == "resource");
|
|
||||||
if (resourceDroptable) {
|
|
||||||
for (let i = 0; i != si.DROP_MISC_ITEM.length; ++i) {
|
|
||||||
const reward = getRandomReward(resourceDroptable.items)!;
|
|
||||||
logger.debug(`stripped droptable (resources pool) rolled`, reward);
|
|
||||||
if (Object.keys(await addItem(inventory, reward.type)).length == 0) {
|
|
||||||
logger.debug(`item already owned, skipping`);
|
|
||||||
} else {
|
|
||||||
MissionRewards.push({
|
MissionRewards.push({
|
||||||
StoreItem: toStoreItem(reward.type),
|
StoreItem: toStoreItem(reward.type),
|
||||||
ItemCount: 1,
|
ItemCount: 1,
|
||||||
FromEnemyCache: true // to show "identified"
|
FromEnemyCache: true // to show "identified"
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
logger.error(`unknown droptable ${si.DropTable} for DROP_MOD`);
|
||||||
}
|
}
|
||||||
} else {
|
}
|
||||||
logger.error(`unknown droptable ${si.DropTable} for DROP_MISC_ITEM`);
|
if (si.DROP_BLUEPRINT) {
|
||||||
|
const blueprintDroptable = droptables.find(x => x.type == "blueprint");
|
||||||
|
if (blueprintDroptable) {
|
||||||
|
for (let i = 0; i != si.DROP_BLUEPRINT.length; ++i) {
|
||||||
|
const reward = getRandomReward(blueprintDroptable.items)!;
|
||||||
|
logger.debug(`stripped droptable (blueprints pool) rolled`, reward);
|
||||||
|
await addItem(inventory, reward.type);
|
||||||
|
MissionRewards.push({
|
||||||
|
StoreItem: toStoreItem(reward.type),
|
||||||
|
ItemCount: 1,
|
||||||
|
FromEnemyCache: true // to show "identified"
|
||||||
|
});
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
logger.error(`unknown droptable ${si.DropTable} for DROP_BLUEPRINT`);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// e.g. H-09 Apex Turret Sumdali
|
||||||
|
if (si.DROP_MISC_ITEM) {
|
||||||
|
const resourceDroptable = droptables.find(x => x.type == "resource");
|
||||||
|
if (resourceDroptable) {
|
||||||
|
for (let i = 0; i != si.DROP_MISC_ITEM.length; ++i) {
|
||||||
|
const reward = getRandomReward(resourceDroptable.items)!;
|
||||||
|
logger.debug(`stripped droptable (resources pool) rolled`, reward);
|
||||||
|
if (Object.keys(await addItem(inventory, reward.type)).length == 0) {
|
||||||
|
logger.debug(`item already owned, skipping`);
|
||||||
|
} else {
|
||||||
|
MissionRewards.push({
|
||||||
|
StoreItem: toStoreItem(reward.type),
|
||||||
|
ItemCount: 1,
|
||||||
|
FromEnemyCache: true // to show "identified"
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
logger.error(`unknown droptable ${si.DropTable} for DROP_MISC_ITEM`);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (si.DropTable == "/Lotus/Types/DropTables/ContainerDropTables/VoidVaultMissionRewardsDropTable") {
|
||||||
|
// Consume netracells search pulse; only when the container reward was picked up. Discussed in https://onlyg.it/OpenWF/SpaceNinjaServer/issues/2673
|
||||||
|
updateEntratiVault(inventory);
|
||||||
|
inventory.EntratiVaultCountLastPeriod! += 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
if (si.DropTable == "/Lotus/Types/DropTables/ContainerDropTables/VoidVaultMissionRewardsDropTable") {
|
logger.debug(`ignoring StrippedItems in intermediate inventory update, deferring until extraction`);
|
||||||
// Consume netracells search pulse; only when the container reward was picked up. Discussed in https://onlyg.it/OpenWF/SpaceNinjaServer/issues/2673
|
|
||||||
updateEntratiVault(inventory);
|
|
||||||
inventory.EntratiVaultCountLastPeriod! += 1;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user