skill_discovery_template表是AzerothCore中定义专业技能配方发现机制的重要表格。它存储了玩家在制作特定物品时有机会发现新配方的数据,是专业技能系统中配方学习的核心机制之一。
字段名 | 数据类型 | 默认值 | 说明 |
---|---|---|---|
spellId | MEDIUMINT UNSIGNED | 0 | 触发法术ID |
详细说明:触发配方发现的制作法术ID。当玩家使用这个法术制作物品时,有机会发现新配方。
法术类型:
|
|||
reqSpell | MEDIUMINT UNSIGNED | 0 | 发现的配方法术ID |
详细说明:玩家有机会发现的新配方法术ID。这是玩家将学会的新制作法术。
配方特点:
发现机制:
|
|||
reqSkillValue | SMALLINT UNSIGNED | 0 | 所需技能等级 |
详细说明:玩家发现新配方所需的最低技能等级。只有达到这个等级的玩家才有机会发现配方。
技能等级范围:1 - 450 (根据扩展版本而定) 等级设计原则:
平衡考虑:
|
|||
chance | FLOAT | 0 | 发现概率 |
详细说明:每次制作时发现新配方的概率,以百分比表示。
概率范围:0.01 - 100.0 (0.01% - 100%) 典型概率设置:
概率影响因素:
计算方式:每次制作时系统会生成随机数,如果小于设定概率则触发发现 |
-- 查看所有配方发现设置
SELECT spellId, reqSpell, reqSkillValue, chance
FROM skill_discovery_template
ORDER BY reqSkillValue, chance DESC;
-- 查看炼金术相关的配方发现(假设炼金术法术ID范围)
SELECT sdt.spellId, sdt.reqSpell, sdt.reqSkillValue, sdt.chance,
st1.name as trigger_spell, st2.name as discovery_spell
FROM skill_discovery_template sdt
LEFT JOIN spell_template st1 ON sdt.spellId = st1.ID
LEFT JOIN spell_template st2 ON sdt.reqSpell = st2.ID
WHERE sdt.spellId BETWEEN 2259 AND 28596 -- 炼金术法术范围示例
ORDER BY sdt.reqSkillValue;
-- 添加新的配方发现机制
INSERT INTO skill_discovery_template (spellId, reqSpell, reqSkillValue, chance)
VALUES
(2259, 3171, 150, 10.0), -- 制作次级治疗药水时10%概率发现治疗药水配方
(3464, 11449, 200, 5.0), -- 制作次级法力药水时5%概率发现法力药水配方
(7181, 17552, 250, 3.0); -- 制作敏捷药剂时3%概率发现强效敏捷药剂配方
-- 调整特定配方的发现概率
UPDATE skill_discovery_template
SET chance = 8.0
WHERE spellId = 2259 AND reqSpell = 3171;
-- 查找发现概率超过10%的配方
SELECT spellId, reqSpell, reqSkillValue, chance
FROM skill_discovery_template
WHERE chance > 10.0
ORDER BY chance DESC;
配方发现是基于概率的,即使概率较高也可能需要多次尝试。这是正常的随机机制。
概率是固定的,无法通过游戏内手段提高。只能通过多次制作来增加发现机会。
不会。玩家已经学会的配方不会再次被发现,系统会自动过滤已知配方。