技能额外物品模板表定义了在使用专业技能制作物品时,有概率额外获得的物品。这个机制增加了专业技能的趣味性和收益性,让玩家在制作过程中有机会获得意外的奖励。
字段名 | 类型 | 描述 |
---|---|---|
spellId | mediumint unsigned | 法术ID |
详细说明:指定触发额外物品的法术ID。对应Spell.dbc中的法术记录,通常是专业技能的制作法术。
取值范围:1 - 16777215 (mediumint unsigned的范围) 适用法术类型:
注意:只有制作类法术才适用,学习类或被动类法术无效 |
||
requiredSpecialization | mediumint unsigned | 所需专精ID |
详细说明:指定触发额外物品所需的专业专精ID。只有拥有对应专精的玩家才能获得额外物品。
取值范围:0 - 16777215 (0表示无专精要求) 常见专精ID:
专精机制:
|
||
additionalCreateChance | float | 额外创造概率 |
详细说明:指定获得额外物品的概率。这是一个百分比值,决定了在成功制作物品时获得额外物品的几率。
取值范围:0.0 - 100.0 (百分比) 概率设置建议:
平衡考虑:
计算示例:
|
||
additionalMaxNum | tinyint unsigned | 额外物品最大数量 |
详细说明:指定一次制作中最多能获得的额外物品数量。当触发额外物品时,系统会在1到这个最大值之间随机选择数量。
取值范围:1 - 255 (tinyint unsigned的范围) 数量设置建议:
随机机制:
平衡考虑:
|
当玩家使用专业技能制作物品时,系统会:
-- 武器大师制作武器时有概率获得额外锻造材料
INSERT INTO skill_extra_item_template (spellId, requiredSpecialization, additionalCreateChance, additionalMaxNum) VALUES
(9787, 17041, 15.0, 2), -- 制作武器法术,武器大师专精,15%概率,最多2个额外材料
(9788, 17041, 12.0, 1); -- 另一个武器制作法术
-- 护甲大师制作护甲时的额外收益
INSERT INTO skill_extra_item_template (spellId, requiredSpecialization, additionalCreateChance, additionalMaxNum) VALUES
(9811, 17040, 18.0, 3), -- 制作护甲法术,护甲大师专精,18%概率,最多3个额外材料
(9813, 17040, 10.0, 1); -- 高级护甲制作
-- 药剂大师制作药剂时的额外收益
INSERT INTO skill_extra_item_template (spellId, requiredSpecialization, additionalCreateChance, additionalMaxNum) VALUES
(7181, 28677, 20.0, 4), -- 制作治疗药剂,药剂大师专精,20%概率,最多4瓶额外药剂
(3447, 28677, 25.0, 3); -- 制作法力药剂
-- 合剂大师制作合剂时的额外收益
INSERT INTO skill_extra_item_template (spellId, requiredSpecialization, additionalCreateChance, additionalMaxNum) VALUES
(17552, 28675, 15.0, 2), -- 制作力量合剂,合剂大师专精,15%概率,最多2瓶额外合剂
(17553, 28675, 12.0, 1); -- 制作敏捷合剂
-- 所有玩家制作基础物品时都有概率获得额外材料
INSERT INTO skill_extra_item_template (spellId, requiredSpecialization, additionalCreateChance, additionalMaxNum) VALUES
(2018, 0, 5.0, 1), -- 制作基础物品,无专精要求,5%概率,1个额外材料
(3100, 0, 8.0, 2); -- 制作常用物品,无专精要求,8%概率,最多2个额外材料
SELECT seit.*, s.SpellName
FROM skill_extra_item_template seit
LEFT JOIN spell_template s ON seit.spellId = s.ID
WHERE seit.requiredSpecialization = 17041 -- 武器大师专精
ORDER BY seit.additionalCreateChance DESC;
SELECT
CASE
WHEN requiredSpecialization = 0 THEN '无专精要求'
WHEN requiredSpecialization = 17041 THEN '武器大师'
WHEN requiredSpecialization = 17040 THEN '护甲大师'
WHEN requiredSpecialization = 28677 THEN '药剂大师'
ELSE CONCAT('专精ID:', requiredSpecialization)
END as specialization_name,
COUNT(*) as spell_count,
AVG(additionalCreateChance) as avg_chance,
AVG(additionalMaxNum) as avg_max_num
FROM skill_extra_item_template
GROUP BY requiredSpecialization
ORDER BY spell_count DESC;
SELECT seit.*, s.SpellName
FROM skill_extra_item_template seit
LEFT JOIN spell_template s ON seit.spellId = s.ID
WHERE seit.additionalCreateChance >= 15.0 -- 概率大于等于15%
ORDER BY seit.additionalCreateChance DESC;