From 3465904dc892af53e62cdc459e7ebe9fb14b377f Mon Sep 17 00:00:00 2001 From: 55Honey <71938210+55Honey@users.noreply.github.com> Date: Sat, 27 Mar 2021 02:38:14 +0100 Subject: [PATCH] fix(scripts/Gruul): Boss script fine tuning (#4126) --- .../scripts/Outland/GruulsLair/boss_gruul.cpp | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/src/server/scripts/Outland/GruulsLair/boss_gruul.cpp b/src/server/scripts/Outland/GruulsLair/boss_gruul.cpp index bc4907f3f..8a8901e5b 100644 --- a/src/server/scripts/Outland/GruulsLair/boss_gruul.cpp +++ b/src/server/scripts/Outland/GruulsLair/boss_gruul.cpp @@ -113,7 +113,13 @@ public: break; case EVENT_HURTFUL_STRIKE: if (Unit* target = SelectTarget(SELECT_TARGET_TOPAGGRO, 1, 5.0f)) + { me->CastSpell(target, SPELL_HURTFUL_STRIKE, false); + } + else + { + me->CastSpell(me->GetVictim(), SPELL_HURTFUL_STRIKE, false); + } events.ScheduleEvent(EVENT_HURTFUL_STRIKE, 15000); break; case EVENT_GROUND_SLAM: @@ -122,14 +128,19 @@ public: events.DelayEvents(8001); events.ScheduleEvent(EVENT_GROUND_SLAM, 60000); events.ScheduleEvent(EVENT_SHATTER, 8000); + me->SetControlled(true, UNIT_STATE_ROOT); break; case EVENT_SHATTER: Talk(SAY_SHATTER); + me->SetControlled(false, UNIT_STATE_ROOT); me->CastSpell(me, SPELL_SHATTER, false); break; } - DoMeleeAttackIfReady(); + if (!me->HasUnitState(UNIT_STATE_ROOT)) + { + DoMeleeAttackIfReady(); + } } private: @@ -178,7 +189,7 @@ public: { PrepareAuraScript(spell_gruul_ground_slam_trigger_AuraScript); - void OnRemove(AuraEffect const* aurEff, AuraEffectHandleModes /*mode*/) + void OnApply(AuraEffect const* aurEff, AuraEffectHandleModes /*mode*/) { if (GetUnitOwner()->GetAuraCount(GetSpellInfo()->Effects[aurEff->GetEffIndex()].TriggerSpell) == 5) GetUnitOwner()->CastSpell(GetUnitOwner(), SPELL_STONED, true); @@ -186,7 +197,7 @@ public: void Register() override { - AfterEffectRemove += AuraEffectRemoveFn(spell_gruul_ground_slam_trigger_AuraScript::OnRemove, EFFECT_0, SPELL_AURA_PERIODIC_TRIGGER_SPELL, AURA_EFFECT_HANDLE_REAL); + AfterEffectRemove += AuraEffectRemoveFn(spell_gruul_ground_slam_trigger_AuraScript::OnApply, EFFECT_0, SPELL_AURA_PERIODIC_TRIGGER_SPELL, AURA_EFFECT_HANDLE_REAL); } };