XFE Git
XFE Studio Git
Git 首页 全局搜索
XFE 主站 文档 NuGet

XFESpaceNinjaServer

A simple server for a small space ninja game

公开
关注 0 Fork 0 Star 0
返回提交历史

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
Sainan <63328889+Sainan@users.noreply.github.com>
提交于

代码差异

2 个文件 +14 -11
Modified src/services/importService.ts +2 -3
@@ -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;
Modified src/services/inventoryService.ts +12 -8
@@ -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 => {