返回提交历史
Modified
src/services/importService.ts
+2
-3
Modified
src/services/inventoryService.ts
+12
-8
XFEstudio/XFESpaceNinjaServer
fix: conflict in migration to hybrid fusion treasure format (#3906)
Reviewed-on: https://onlyg.it/OpenWF/SpaceNinjaServer/pulls/3906 Co-authored-by: Sainan <63328889+Sainan@users.noreply.github.com> Co-committed-by: Sainan <63328889+Sainan@users.noreply.github.com>
d2ad8c06
代码差异
2 个文件
+14
-11
@@ -88,7 +88,7 @@ import type {
88
88
import { fromMongoDate, fromOid } from "../helpers/inventoryHelpers.ts";
89
89
import { getRecipe } from "./itemDataService.ts";
90
90
import { logger } from "../utils/logger.ts";
91
import { addFusionTreasures, prepareFusionTreasuresForMigration } from "./inventoryService.ts";
91
import { migrateFusionTreasures } from "./inventoryService.ts";
92
92
93
93
const convertOptionalDate = (value: IMongoDateWithLegacySupport | undefined): Date | undefined => {
94
94
return value ? fromMongoDate(value) : undefined;
@@ -466,8 +466,7 @@ export const importInventory = (db: TInventoryDatabaseDocument, client: Partial<
466
466
}
467
467
if (client.FusionTreasures !== undefined) {
468
468
db.HybridFusionTreasures.splice(0, db.HybridFusionTreasures.length);
469
prepareFusionTreasuresForMigration(client.FusionTreasures as IFusionTreasure[]);
470
addFusionTreasures(db, client.FusionTreasures as IFusionTreasure[]);
469
migrateFusionTreasures(db, client.FusionTreasures as IFusionTreasure[]);
471
470
}
472
471
if (client.FocusUpgrades !== undefined) {
473
472
db.FocusUpgrades = client.FocusUpgrades;
@@ -2876,23 +2876,27 @@ export const cleanupInventory = (inventory: TInventoryDatabaseDocument): void =>
2876
2876
2877
2877
// Migrate fusion treasures to hybrid format
2878
2878
if (inventory.FusionTreasures) {
2879
prepareFusionTreasuresForMigration(inventory.FusionTreasures);
2880
addFusionTreasures(inventory, inventory.FusionTreasures);
2879
migrateFusionTreasures(inventory, inventory.FusionTreasures);
2881
2880
inventory.FusionTreasures = undefined;
2882
2881
}
2883
2882
};
2884
2883
2885
export const prepareFusionTreasuresForMigration = (fusionTreasures: IFusionTreasure[]): void => {
2884
export const migrateFusionTreasures = (
2885
inventory: TInventoryDatabaseDocument,
2886
fusionTreasures: IFusionTreasure[]
2887
): void => {
2888
const arr: IFusionTreasure[] = [];
2886
2889
for (const treasure of fusionTreasures) {
2887
if (treasure.ItemCount < 0) {
2888
treasure.ItemCount = 0;
2889
} else if (treasure.ItemCount > 100) {
2890
if (treasure.ItemCount > 100) {
2890
2891
logger.debug(
2891
`reducing ${treasure.ItemCount} owned ${treasure.ItemType} to 100 for migration to hybrid format`
2892
`reducing ${treasure.ItemCount} owned ${treasure.ItemType}_${treasure.Sockets} to 100 for migration to hybrid format`
2892
2893
);
2893
treasure.ItemCount = 100;
2894
arr.push({ ItemType: treasure.ItemType, ItemCount: 100, Sockets: treasure.Sockets });
2895
} else if (treasure.ItemCount > 0) {
2896
arr.push(treasure);
2894
2897
}
2895
2898
}
2899
addFusionTreasures(inventory, arr);
2896
2900
};
2897
2901
2898
2902
export const getDialogue = (inventory: TInventoryDatabaseDocument, dialogueName: string): IDialogueDatabase => {