物品奖励系统介绍
目录
涉及的数据表介绍
ItemBonus.db2
ItemBonusListGroupEntry.db2
ItemBonusListLevelDelta.db2
ItemBonusTree.db2
ItemBonusTreeNode.db2
ItemXBonusTree.db2
工作流程
以下六个数据表共同构建了一个分层物品奖励系统,其核心思想是通过树状结构和分组机制来动态地为物品分配属性和奖励。这种设计允许游戏根据不同的上下文(如副本难度、玩家等级、PvP/PvE 等)为同一物品提供不同的属性。
涉及的数据表介绍
ItemBonus.db2
使用场景
它定义了物品的各种属性加成,包括属性值、类型、顺序等信息。主要用于为物品添加额外的属性值,通过不同的奖励列表实现物品升级
- 物品属性加成: 为物品添加额外的属性值
- 物品升级系统: 通过不同的奖励列表实现物品升级
- 随机属性物品: 为物品添加随机生成的属性
- 装备套装效果: 为套装中的物品添加额外属性
- 特殊效果: 为物品添加特殊效果或功能
字段说明
- ID: 奖励条目的唯一标识符
- Value[0-3]: 4个整数值,具体含义取决于奖励类型(Type)
- ParentItemBonusListID: 指向ItemBonusList的ID,表示这个奖励属于哪个奖励列表
- Type: 奖励类型,决定了Value字段的具体用途,以下介绍主要的ItemBonusType类型及其Value字段用途
类型名称 | Type值 | Value[0] | Value[1] | Value[2] | Value[3] | 功能说明 |
---|---|---|---|---|---|---|
ITEM_BONUS_ITEM_LEVEL | 1 | 物品等级增加值 | 未使用 | 未使用 | 未使用 | 增加物品的等级 |
ITEM_BONUS_STAT | 2 | 属性类型 (参考ItemModType) | 属性值增量 | 未使用 | 未使用 | 增加指定属性值 |
ITEM_BONUS_QUALITY | 3 | 物品品质 (ITEM_QUALITY) | 未使用 | 未使用 | 未使用 | 设置物品品质 |
ITEM_BONUS_NAME_SUBTITLE | 4 | ItemNameDescription ID | 未使用 | 未使用 | 未使用 | 设置物品副标题 |
ITEM_BONUS_SUFFIX | 5 | 后缀ID | 优先级 (数值越小优先级越高) | 未使用 | 未使用 | 设置物品名称后缀 |
ITEM_BONUS_SOCKET | 6 | 插槽数量 | 插槽颜色 (1=Meta, 2=Red, 4=Yellow, 8=Blue等) | 未使用 | 未使用 | 添加插槽到物品 |
ITEM_BONUS_APPEARANCE | 7 | 外观ID | 优先级 (数值越小优先级越高) | 未使用 | 未使用 | 设置物品外观 |
ITEM_BONUS_REQUIRED_LEVEL | 8 | 所需等级 | 未使用 | 未使用 | 未使用 | 设置使用物品所需等级 |
ITEM_BONUS_DISPLAY_TOAST_METHOD | 9 | 显示方式 | 未使用 | 未使用 | 未使用 | 控制物品获得时的提示方式 |
ITEM_BONUS_REPAIR_COST_MULTIPLIER | 10 | 修理费用倍数(百分比形式) | 未使用 | 未使用 | 未使用 | 设置修理费用倍数 |
ITEM_BONUS_SCALING_STAT_DISTRIBUTION | 11 | ScalingStatDistribution ID | 优先级 | 未使用 | 未使用 | 设置缩放属性分布 |
ITEM_BONUS_DISENCHANT_LOOT_ID | 12 | DisenchantLoot ID | 未使用 | 未使用 | 未使用 | 设置分解物品获得的奖励 |
ITEM_BONUS_SCALING_STAT_DISTRIBUTION_FIXED | 13 | ScalingStatDistribution ID | 优先级 | 未使用 | 未使用 | 固定缩放属性分布 |
ITEM_BONUS_ITEM_LEVEL_CAN_INCREASE | 14 | 标志位 | 未使用 | 未使用 | 未使用 | 标记物品等级可以增加(显示"+"号) |
ITEM_BONUS_RANDOM_ENCHANTMENT | 15 | 随机附魔ID | 未使用 | 未使用 | 未使用 | 随机附魔属性 |
ITEM_BONUS_BONDING | 16 | 绑定类型 (0=无, 1=装备绑定, 2=拾取绑定等) | 未使用 | 未使用 | 未使用 | 设置物品绑定类型 |
ITEM_BONUS_RELIC_TYPE | 17 | 圣物类型 | 未使用 | 未使用 | 未使用 | 设置圣物类型 |
ITEM_BONUS_OVERRIDE_REQUIRED_LEVEL | 18 | 覆盖所需等级 | 未使用 | 未使用 | 未使用 | 覆盖物品所需等级 |
ITEM_BONUS_AZERITE_TIER_UNLOCK_SET | 19 | AzeriteTierUnlockSet ID | 未使用 | 未使用 | 未使用 | 解锁Azerite等级 |
ITEM_BONUS_SCRAPPING_LOOT_ID | 20 | ScrappingLoot ID | 未使用 | 未使用 | 未使用 | 设置拆解物品获得的奖励 |
ITEM_BONUS_OVERRIDE_CAN_DISENCHANT | 21 | 可否分解标志 | 未使用 | 未使用 | 未使用 | 覆盖物品是否可以分解 |
ITEM_BONUS_OVERRIDE_CAN_SCRAP | 22 | 可否拆解标志 | 未使用 | 未使用 | 未使用 | 覆盖物品是否可以拆解 |
ITEM_BONUS_ITEM_EFFECT_ID | 23 | ItemEffect ID | 未使用 | 未使用 | 未使用 | 添加物品效果 |
ITEM_BONUS_MODIFIED_CRAFTING_STAT | 25 | ModifiedCraftingItem ID | 未使用 | 未使用 | 未使用 | 修改制造属性 |
ITEM_BONUS_REQUIRED_LEVEL_CURVE | 27 | Curve ID | 未使用 | 未使用 | 未使用 | 基于曲线设置所需等级 |
ITEM_BONUS_DESCRIPTION_TEXT | 30 | 描述文本ID | 未使用 | 未使用 | 未使用 | 物品描述文本 |
ITEM_BONUS_OVERRIDE_NAME | 31 | 名称覆盖ID | 未使用 | 未使用 | 未使用 | 覆盖物品名称 |
ITEM_BONUS_ITEM_BONUS_LIST_GROUP | 34 | BonusListGroup ID | 未使用 | 未使用 | 未使用 | 设置奖励列表组 |
ITEM_BONUS_ITEM_LIMIT_CATEGORY | 35 | ItemLimitCategory ID | 未使用 | 未使用 | 未使用 | 设置物品限制类别 |
ITEM_BONUS_ITEM_CONVERSION | 37 | ItemConversion ID | 未使用 | 未使用 | 未使用 | 物品转换 |
ITEM_BONUS_ITEM_HISTORY_SLOT | 38 | 历史槽位ID | 未使用 | 未使用 | 未使用 | 物品历史槽位 |
- OrderIndex: 排序索引,决定应用奖励的顺序
ItemBonusListGroupEntry.db2
使用场景
用于管理物品奖励列表组的数据库文件。主要用途是将多个物品奖励列表(ItemBonusList)组织成组,以便在不同的游戏情境下选择适当的奖励列表。
- 不同难度的内容: 根据玩家所处的副本难度选择不同的奖励
- 赛季奖励: 根据当前赛季选择不同的奖励列表
- 玩家条件: 根据玩家的等级、成就或其他条件选择奖励
- 序列化奖励: 通过SequenceValue控制奖励的逐步解锁
- 副本奖励系统: 根据副本难度或或挑战模式等级提供不同的物品奖励
- PvP奖励: 根据玩家的竞技场等级或战场表现提供奖励
- 物品升级系统: 通过不同的奖励列表实现物品的逐步升级
字段说明
-
ID(uint32)条目的唯一标识符
-
ItemBonusListGroupID(uint32)物品奖励列表组的ID,用于将多个奖励列表组织在一起
-
ItemBonusListID(int32)物品奖励列表的ID,指向 ItemBonus.db2 中的奖励列表
-
ItemLevelSelectorID(int32)物品等级选择器ID,用于确定物品的等级
-
SequenceValue(int32)序列值,用于确定奖励列表的选择顺序或优先级
-
ItemExtendedCostID(int32)物品扩展消耗ID,指向物品购买时需要的额外消耗
-
PlayerConditionID(int32)玩家条件ID,用于检查玩家是否满足特定条件
-
Flags(int32)标志位,用于控制条目的行为
-
ItemLogicalCostGroupID(int32)物品逻辑消耗组ID,用于分组管理消耗
ItemBonusListLevelDelta.db2
使用场景
用于管理物品等级增量与物品奖励列表之间映射关系的数据库文件。它主要用于根据物品等级的变化来查找相应的物品奖励列表。这个文件在以下情况下被使用:
- 当物品需要根据等级变化应用不同属性时,系统会根据等级增量查找对应的奖励列表
- 在物品升级或降级时,通过等级差值找到相应的属性调整列表
- 支持物品的动态属性变化,例如装备的随机属性或升级属性
- 物品升级系统:当物品通过某种方式升级时,根据等级增量应用相应的属性提升
- 装备随机属性:为不同等级的同种装备生成适当的随机属性
- 装备降级:当装备被降级时,应用相应的属性削减
- 动态物品属性调整:根据游戏进程或玩家行为动态调整物品属性
字段说明
-
ItemLevelDelta(int16)物品等级增量值,表示相对于基础物品等级的变化量
-
ID(uint32)物品奖励列表的ID,指向具体的物品奖励列表
ItemBonusTree.db2
使用场景
定义物品奖励树的根节点和基本条件,它与 ItemBonusTreeNode.db2 和 ItemXBonusTree.db2 一起,构成了一个完整的物品奖励树系统,用于根据不同的条件和上下文为物品应用适当的奖励。
- 不同副本或难度下的物品奖励差异化
- 根据玩家等级或进度调整物品属性
- 为不同职业或专精提供特定的物品奖励
- 赛季物品奖励系统
- Mythic+ 地城的等级相关奖励
字段说明
-
ID(uint32)奖励树的唯一标识符
-
Flags(int32)奖励树的标志位,用于控制奖励树的行为和条件
- 常见取值:
- 0x4: 允许应用奖励
- 0x8: 仅适用于施法者武器
- 0x10: 不适用于施法者武器
- 0x20: 适用于控制型饰品
- 0x40: 不适用于控制型饰品
- 常见取值:
-
InventoryTypeSlotMask(int32)物品栏位掩码,用于指定该奖励树适用于哪些物品栏位
- 通过位运算与物品的 InventoryType 进行匹配
ItemBonusTreeNode.db2
使用场景
用于定义物品奖励树节点结构的数据库文件。它与 ItemBonusTree.db2 和 ItemXBonusTree.db2 协同工作,构成完整的物品奖励系统。主要作用是定义物品奖励树的具体节点和分支逻辑。每个节点可以有以下几种类型的子节点:
- 指向另一个奖励树 (ChildItemBonusTreeID)
- 指向一个奖励列表 (ChildItemBonusListID)
- 指向一个物品等级选择器 (ChildItemLevelSelectorID)
- 指向一个奖励列表组 (ChildItemBonusListGroupID)
- 不同难度副本的物品奖励差异化
- Mythic+ 地城根据钥匙等级提供不同奖励
- 根据玩家职业或专精提供特定物品奖励
- 赛季物品奖励系统
- 任务奖励的上下文相关性
- PvP 和 PvE 版本的物品差异化
字段说明
-
ID(uint32)节点的唯一标识符
-
ItemContext(uint8)物品上下文,用于指定该节点适用于哪种物品上下文环境
- 常见取值:
- 0: NONE (无特定上下文)
- 1: Dungeon Normal (地下城普通难度)
- 2: Dungeon Heroic (地下城英雄难度)
- 3: Dungeon Mythic (地下城史诗难度)
- 4: Raid Normal (团队副本普通难度)
- 5: Raid Heroic (团队副本英雄难度)
- 6: Raid Mythic (团队副本史诗难度)
- 7: PvP (玩家对战)
- 8: World vs World (世界对战)
- 9: Quest (任务奖励)
- 10: Vendor (商人购买)
- 11: Trade (交易获得)
- 12: Achievement (成就奖励)
- 13: Profession (专业技能制作)
- 14: Challenge Mode (挑战模式)
- 15: Force_to_NONE (强制无上下文)
- 常见取值:
-
ChildItemBonusTreeID(uint16)子奖励树ID,指向另一个 ItemBonusTree.db2 的ID,用于构建树状结构
-
ChildItemBonusListID(uint16)子奖励列表ID,指向 ItemBonus.db2 中的奖励列表
-
ChildItemLevelSelectorID(uint16)子物品等级选择器ID,指向 ItemLevelSelector.db2 中的等级选择器
-
ChildItemBonusListGroupID(int32)子奖励列表组ID,指向 ItemBonusListGroupEntry.db2 中的奖励列表组
-
IblGroupPointsModSetID(int32)奖励列表组点数修改集ID,用于调整奖励列表组的选择权重
-
MinMythicPlusLevel(int32)最小 Mythic+ 等级要求,仅在 Mythic+ 地城中使用
-
MaxMythicPlusLevel(int32)最大 Mythic+ 等级限制,仅在 Mythic+ 地城中使用
-
ParentItemBonusTreeID(uint32)父奖励树ID,指向 ItemBonusTree.db2 中的奖励树
ItemXBonusTree.db2
使用场景
用于关联物品和物品奖励树的数据库文件。它作为物品系统和奖励树系统之间的桥梁,将具体的物品与相应的奖励树结构关联起来。
- 将物品与奖励树关联,使物品能够根据不同的游戏情境获得不同的属性
- 支持同一物品在不同副本、难度或活动中的属性差异化
- 实现物品的动态属性系统,使物品属性可以根据玩家条件或游戏进度进行调整
- 支持 Mythic+ 地城中根据钥匙等级提供不同的物品奖励
字段说明
-
ID(uint32)条目的唯一标识符
-
ItemBonusTreeID(uint16)物品奖励树ID,指向 ItemBonusTree.db2 中的奖励树记录
-
ItemID(uint32)物品ID,指向 ItemSparse.db2 中的物品记录
工作流程
-
物品初始化:
- 当需要为物品生成奖励属性时,首先通过 ItemID 在 ItemXBonusTree.db2 中查找对应的 ItemBonusTreeID
-
奖励树遍历:
- 使用 ItemBonusTreeID 在 ItemBonusTree.db2 中找到奖励树的根节点
- 遍历 ItemBonusTreeNode.db2 中的节点,根据上下文和条件筛选合适的节点
-
奖励列表选择:
- 根据节点类型(奖励列表、奖励列表组、等级选择器等)进行相应的处理
- 可能需要查询 ItemBonusListGroupEntry.db2 来获取奖励列表组的条目
- 根据等级差异查询 ItemBonusListLevelDelta.db2 获取相应奖励
-
奖励应用:
- 最终从 ItemBonus.db2 获取具体的奖励条目
- 将这些奖励应用到物品上,完成物品属性的构建