fix(Scripts/ZulGurub): Gah'zranka's Slam should reset threat. (#11910)

This commit is contained in:
UltraNix
2022-06-10 01:28:57 +02:00
committed by GitHub
parent 94528cd44d
commit e951208610
2 changed files with 42 additions and 0 deletions

View File

@@ -24,6 +24,7 @@ EndScriptData */
#include "ScriptMgr.h"
#include "ScriptedCreature.h"
#include "SpellScript.h"
#include "zulgurub.h"
enum Spells
@@ -110,7 +111,44 @@ public:
}
};
class spell_gahzranka_slam : public SpellScript
{
PrepareSpellScript(spell_gahzranka_slam);
void FilterTargets(std::list<WorldObject*>& targets)
{
if (Unit* caster = GetCaster())
{
_wipeThreat = targets.size() < caster->GetThreatMgr().getThreatList().size();
}
}
void HandleWipeThreat(SpellEffIndex /*effIndex*/)
{
if (_wipeThreat)
{
if (Unit* caster = GetCaster())
{
if (Unit* target = GetHitUnit())
{
caster->GetThreatMgr().modifyThreatPercent(target, -100);
}
}
}
}
void Register() override
{
OnObjectAreaTargetSelect += SpellObjectAreaTargetSelectFn(spell_gahzranka_slam::FilterTargets, EFFECT_1, TARGET_UNIT_SRC_AREA_ENEMY);
OnEffectHitTarget += SpellEffectFn(spell_gahzranka_slam::HandleWipeThreat, EFFECT_1, SPELL_EFFECT_KNOCK_BACK);
}
private:
bool _wipeThreat = false;
};
void AddSC_boss_gahzranka()
{
new boss_gahzranka();
RegisterSpellScript(spell_gahzranka_slam);
}