- UID
- 38919
- 阅读权限
- 60
- 回帖
- 143
- 喵币
- 0
- 有爱
- 286
- DKP
- 3144
- 金币
- 196740
- 在线时间
- 864 小时
- 注册时间
- 2023-3-26
- 最后登录
- 2026-2-15
声望: 7793   虚弱: 0

Lv.6(觉醒者)
|
发表于 2023-9-16 10:10:34
|
显示全部楼层
本帖最后由 danqu 于 2023-9-16 10:11 编辑
感谢分享,更加灵活性的话,个人觉得可以做如下修改
1,不局限于SPELLFAMILY_PRIEST家族法术
2,不必要的DBC修改,可以更加灵活控制百分比
如下是更加灵活的修改方式,当然我使用的是硬编码,如果使用数据库管理会更加灵活
定义一个结构
struct CustomHealEffect
{
uint32 spellID; // 触发此效果的法术ID
float healPct; // 吸血效果的百分比
uint32 triggeredSpell; // 触发的法术ID
};
创建一个查找表
private:
static const std::vector<CustomHealEffect> customHealEffects;
然后初始化
const std::vector<CustomHealEffect> Unit::customHealEffects =
{
{79500, 0.2f, 39373},
{79501, 0.25f, 39373},
{79502, 0.3f, 39373},
// 你可以继续添加其他法术
};
然后在bool Unit::HandleDummyAuraProc 这个函数的,switch (dummySpell->SpellFamilyName)结束后面添加:
for (const CustomHealEffect& effect : customHealEffects)
{
if (dummySpell->Id == effect.spellID)
{
if (!procSpell || (procSpell->GetSchoolMask() & (SPELL_SCHOOL_MASK_NORMAL | SPELL_SCHOOL_MASK_MAGIC)) == 0)
return false;
basepoints0 = CalculatePct(int32(damage), triggerAmount) * effect.healPct;
target = this;
triggered_spell_id = effect.triggeredSpell;
break; // 如果匹配到,跳出循环
}
}
|
|