fix(Scripts/Spells): Fix Glyph of Voidwalker applying to every pet (#17342)
* fix(Scripts/Spells): Fix Glyph of Voidwalker applying to every pet * Update src/server/game/Entities/Pet/Pet.cpp
This commit is contained in:
@@ -0,0 +1,4 @@
|
|||||||
|
--
|
||||||
|
DELETE FROM `spell_script_names` WHERE `ScriptName` = 'spell_warl_glyph_of_voidwalker' AND `spell_id` = 56247;
|
||||||
|
INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES
|
||||||
|
(56247, 'spell_warl_glyph_of_voidwalker');
|
||||||
@@ -1175,6 +1175,14 @@ bool Guardian::InitStatsForLevel(uint8 petlevel)
|
|||||||
HandleStatModifier(UNIT_MOD_ATTACK_POWER, TOTAL_PCT, aurEff->GetAmount(), true);
|
HandleStatModifier(UNIT_MOD_ATTACK_POWER, TOTAL_PCT, aurEff->GetAmount(), true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case NPC_VOIDWALKER:
|
||||||
|
{
|
||||||
|
if (AuraEffect* aurEff = owner->GetAuraEffectDummy(SPELL_GLYPH_OF_VOIDWALKER))
|
||||||
|
{
|
||||||
|
HandleStatModifier(UNIT_MOD_STAT_STAMINA, TOTAL_PCT, aurEff->GetAmount(), true);
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case NPC_WATER_ELEMENTAL_PERM:
|
case NPC_WATER_ELEMENTAL_PERM:
|
||||||
|
|||||||
@@ -147,6 +147,7 @@ enum PetScalingSpells
|
|||||||
SPELL_WARLOCK_PET_SCALING_04 = 34958,
|
SPELL_WARLOCK_PET_SCALING_04 = 34958,
|
||||||
SPELL_WARLOCK_PET_SCALING_05 = 61013, // Hit / Expertise
|
SPELL_WARLOCK_PET_SCALING_05 = 61013, // Hit / Expertise
|
||||||
SPELL_GLYPH_OF_FELGUARD = 56246,
|
SPELL_GLYPH_OF_FELGUARD = 56246,
|
||||||
|
SPELL_GLYPH_OF_VOIDWALKER = 56247,
|
||||||
SPELL_INFERNAL_SCALING_01 = 36186,
|
SPELL_INFERNAL_SCALING_01 = 36186,
|
||||||
SPELL_INFERNAL_SCALING_02 = 36188,
|
SPELL_INFERNAL_SCALING_02 = 36188,
|
||||||
SPELL_INFERNAL_SCALING_03 = 36189,
|
SPELL_INFERNAL_SCALING_03 = 36189,
|
||||||
|
|||||||
@@ -1028,14 +1028,6 @@ void SpellMgr::LoadSpellInfoCorrections()
|
|||||||
spellInfo->DurationEntry = sSpellDurationStore.LookupEntry(6);
|
spellInfo->DurationEntry = sSpellDurationStore.LookupEntry(6);
|
||||||
});
|
});
|
||||||
|
|
||||||
// Glyph of Voidwalker
|
|
||||||
ApplySpellFix({ 56247 }, [](SpellInfo* spellInfo)
|
|
||||||
{
|
|
||||||
spellInfo->Effects[EFFECT_0].ApplyAuraName = SPELL_AURA_ADD_FLAT_MODIFIER;
|
|
||||||
spellInfo->Effects[EFFECT_0].MiscValue = SPELLMOD_EFFECT1;
|
|
||||||
spellInfo->Effects[EFFECT_0].SpellClassMask = flag96(0x8000000, 0, 0);
|
|
||||||
});
|
|
||||||
|
|
||||||
// Everlasting Affliction
|
// Everlasting Affliction
|
||||||
ApplySpellFix({ 47201, 47202, 47203, 47204, 47205 }, [](SpellInfo* spellInfo)
|
ApplySpellFix({ 47201, 47202, 47203, 47204, 47205 }, [](SpellInfo* spellInfo)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -1267,6 +1267,45 @@ class spell_warl_glyph_of_felguard : public AuraScript
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
class spell_warl_glyph_of_voidwalker : public AuraScript
|
||||||
|
{
|
||||||
|
PrepareAuraScript(spell_warl_glyph_of_voidwalker);
|
||||||
|
|
||||||
|
void HandleApply(AuraEffect const* aurEff, AuraEffectHandleModes /*mode*/)
|
||||||
|
{
|
||||||
|
if (Player* player = GetCaster()->ToPlayer())
|
||||||
|
{
|
||||||
|
if (Pet* pet = player->GetPet())
|
||||||
|
{
|
||||||
|
if (pet->GetEntry() == NPC_VOIDWALKER)
|
||||||
|
{
|
||||||
|
pet->HandleStatModifier(UNIT_MOD_STAT_STAMINA, TOTAL_PCT, aurEff->GetAmount(), true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void HandleRemove(AuraEffect const* aurEff, AuraEffectHandleModes /*mode*/)
|
||||||
|
{
|
||||||
|
if (Player* player = GetCaster()->ToPlayer())
|
||||||
|
{
|
||||||
|
if (Pet* pet = player->GetPet())
|
||||||
|
{
|
||||||
|
if (pet->GetEntry() == NPC_VOIDWALKER)
|
||||||
|
{
|
||||||
|
pet->HandleStatModifier(UNIT_MOD_STAT_STAMINA, TOTAL_PCT, aurEff->GetAmount(), false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void Register() override
|
||||||
|
{
|
||||||
|
OnEffectApply += AuraEffectApplyFn(spell_warl_glyph_of_voidwalker::HandleApply, EFFECT_0, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL);
|
||||||
|
OnEffectRemove += AuraEffectRemoveFn(spell_warl_glyph_of_voidwalker::HandleRemove, EFFECT_0, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
void AddSC_warlock_spell_scripts()
|
void AddSC_warlock_spell_scripts()
|
||||||
{
|
{
|
||||||
RegisterSpellScript(spell_warl_eye_of_kilrogg);
|
RegisterSpellScript(spell_warl_eye_of_kilrogg);
|
||||||
@@ -1299,4 +1338,5 @@ void AddSC_warlock_spell_scripts()
|
|||||||
RegisterSpellScript(spell_warl_drain_soul);
|
RegisterSpellScript(spell_warl_drain_soul);
|
||||||
RegisterSpellScript(spell_warl_shadowburn);
|
RegisterSpellScript(spell_warl_shadowburn);
|
||||||
RegisterSpellScript(spell_warl_glyph_of_felguard);
|
RegisterSpellScript(spell_warl_glyph_of_felguard);
|
||||||
|
RegisterSpellScript(spell_warl_glyph_of_voidwalker);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user