skill_discovery_template 表
skill_discovery_template表定义技能发现系统,控制专业技能(如炼金术)中随机发现新配方的概率和前置条件。
表概述
skill_discovery_template表是Skill Discovery System的核心配置。当玩家制作物品时,系统根据此表判断是否随机发现新配方。最常见的是炼金术中的药剂/药水配方发现机制。
主键为 (spellId, reqSpell),每条记录定义了一个可通过制作"reqSpell"物品发现"spellId"配方的规则。
表结构
| 字段名 | 数据类型 | 默认值 | 说明 |
|---|---|---|---|
| spellId | INT UNSIGNED | 0 | 可发现的技能/法术ID |
| reqSpell | INT UNSIGNED | 0 | 触发发现的制作法术ID |
| reqSkillValue | SMALLINT UNSIGNED | 0 | 所需专业技能等级 |
| chance | FLOAT | 0 | 发现概率(百分比) |
重要字段详解
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: 制作物品后没有发现新配方,如何排查?
检查以下几点:
- skill_discovery_template表中是否有对应(spellId, reqSpell)记录
- 玩家专业技能等级是否 >= reqSkillValue
- chance概率设置是否正确
- 玩家是否已经学会spellId配方
Q: 如何让配方100%被发现?
将对应记录的chance设为100.0即可。