破境准备
-+ {error} + +
+ ) : null} + {notice ? ( ++ {notice} +
+ ) : null} + {moving ? ( ++ 选择目标格位,同类合并,其他物品交换位置。 + +
+ ) : null} + {!data ? ( +正在查看物品……
+ ) : ( +暂无物品
+ ) : null} + {location === 'storage' && data ? ( ++ {error || loadError} +
+ ) : null} ++ 持有 {item.quantity} {definition.kind === 'beast_book' ? '本' : '件'} +
+ {definition.skillId ? ( +
+ {details[definition.skillId]?.description}
+
正在查看灵兽……
: null} + + {beast ? ( +
+ {skillName(id)}
+ {!activeBeastSkills(beast).includes(id)
+ ? '(被高级技能抑制)'
+ : ''}
+
随机覆盖其中一个技能,消耗一本,结果不可撤销。
++ {equipment.equipmentLevel}级道装 · 需要人物 {equipment.requiredLevel}级 +
++ 获得{' '} + {session.itemRewards + .map( + (item) => + `${itemDefinition(item.definitionId).name} ×${item.quantity}`, + ) + .join('、')} + 。已收存,背包不足的部分自动存入洞府储藏室。 +
+ ) : null} ); } diff --git a/src/server/lib/drizzle/schema.ts b/src/server/lib/drizzle/schema.ts index 92fccb95..278f3a51 100644 --- a/src/server/lib/drizzle/schema.ts +++ b/src/server/lib/drizzle/schema.ts @@ -9,7 +9,6 @@ import type { BeastLineup, SummonedBeast, } from '@shared/engine/combat-v6/beasts'; -import type { DaoEquipmentInstanceV1 } from '@shared/engine/combat-v6/equipment'; import type { SpiritFieldPlotState } from '@shared/engine/spirit-field/types'; import type { ItemLibraryEditorConfig, @@ -29,6 +28,7 @@ import { sql } from 'drizzle-orm'; import { bigint, boolean, + check, doublePrecision, index, integer, @@ -648,20 +648,40 @@ export const combatV6ManualSlots = pgTable( ], ); -export const combatV6EquipmentInstances = pgTable( - 'wanjiedaoyou_combat_v6_equipment_instances', +export const inventoryItems = pgTable( + 'wanjiedaoyou_inventory_items', { id: varchar('id', { length: 160 }).primaryKey(), cultivatorId: uuid('cultivator_id') .references(() => cultivators.id, { onDelete: 'cascade' }) .notNull(), - schemaVersion: integer('schema_version').notNull().default(1), - generatorVersion: varchar('generator_version', { length: 64 }).notNull(), - instance: jsonb('instance').$type