表概述

skill_discovery_template表是Skill Discovery System的核心配置。当玩家制作物品时,系统根据此表判断是否随机发现新配方。最常见的是炼金术中的药剂/药水配方发现机制。

主键为 (spellId, reqSpell),每条记录定义了一个可通过制作"reqSpell"物品发现"spellId"配方的规则。

表结构

字段名数据类型默认值说明
spellIdINT UNSIGNED0可发现的技能/法术ID
reqSpellINT UNSIGNED0触发发现的制作法术ID
reqSkillValueSMALLINT UNSIGNED0所需专业技能等级
chanceFLOAT0发现概率(百分比)

重要字段详解

spellId (可发现的配方)

玩家可能发现的技能/物品制作配方ID。如炼金术中通过制作药水发现新配方。

同一个spellId可以通过多种不同的reqSpell来触发发现。

reqSpell (触发条件)

玩家制作这个spellId对应物品时,有概率发现spellId配方。如制作"初级治疗药水"时可能发现"次级治疗药水"配方。

chance (发现概率)

每次制作reqSpell物品时发现spellId配方的概率(0-100):

  • 1.0 - 1%概率
  • 5.0 - 5%概率(常见配置)
  • 100.0 - 必发现

实战案例

查询炼金术(技能ID=171)的所有发现规则:
SELECT sdt.spellId, sdt.reqSpell, sdt.reqSkillValue, sdt.chance
FROM skill_discovery_template sdt
WHERE sdt.spellId IN (SELECT ID FROM spell_dbc WHERE Effect_1 = 24)
ORDER BY sdt.reqSkillValue;
添加新的配方发现规则(10%概率,需炼金300):
INSERT INTO skill_discovery_template (spellId, reqSpell, reqSkillValue, chance)
VALUES (99999, 11479, 300, 10.0);
提高所有发现的概率:
UPDATE skill_discovery_template SET chance = chance * 2 WHERE chance < 100;

常见问题

Q: 制作物品后没有发现新配方,如何排查?

检查以下几点:

  1. skill_discovery_template表中是否有对应(spellId, reqSpell)记录
  2. 玩家专业技能等级是否 >= reqSkillValue
  3. chance概率设置是否正确
  4. 玩家是否已经学会spellId配方

Q: 如何让配方100%被发现?

将对应记录的chance设为100.0即可。