diff --git a/data/sql/updates/pending_db_world/rev_1654407708502994800.sql b/data/sql/updates/pending_db_world/rev_1654407708502994800.sql new file mode 100644 index 000000000..cf1bf636a --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1654407708502994800.sql @@ -0,0 +1,2 @@ +-- +UPDATE `creature_template` SET `flags_extra`=`flags_extra`|256 WHERE `entry`=15082; diff --git a/src/server/scripts/EasternKingdoms/ZulGurub/boss_grilek.cpp b/src/server/scripts/EasternKingdoms/ZulGurub/boss_grilek.cpp index 74be364eb..0c7fef454 100644 --- a/src/server/scripts/EasternKingdoms/ZulGurub/boss_grilek.cpp +++ b/src/server/scripts/EasternKingdoms/ZulGurub/boss_grilek.cpp @@ -29,13 +29,16 @@ EndScriptData */ enum Spells { SPELL_AVATAR = 24646, // Enrage Spell - SPELL_GROUND_TREMOR = 6524 + SPELL_GROUND_TREMOR = 6524, + SPELL_ENTANGLING_ROOTS = 24648 }; enum Events { EVENT_AVATAR = 1, - EVENT_GROUND_TREMOR = 2 + EVENT_GROUND_TREMOR = 2, + EVENT_START_PURSUIT = 3, + EVENT_ENTANGLING_ROOTS = 4 }; class boss_grilek : public CreatureScript // grilek @@ -45,23 +48,16 @@ public: struct boss_grilekAI : public BossAI { - boss_grilekAI(Creature* creature) : BossAI(creature, DATA_EDGE_OF_MADNESS) { } - - void Reset() override + boss_grilekAI(Creature* creature) : BossAI(creature, DATA_EDGE_OF_MADNESS) { - _Reset(); - } - - void JustDied(Unit* /*killer*/) override - { - _JustDied(); } void EnterCombat(Unit* /*who*/) override { _EnterCombat(); - events.ScheduleEvent(EVENT_AVATAR, urand(15000, 25000)); - events.ScheduleEvent(EVENT_GROUND_TREMOR, urand(15000, 25000)); + events.ScheduleEvent(EVENT_AVATAR, 20s, 30s); + events.ScheduleEvent(EVENT_GROUND_TREMOR, 15s, 25s); + events.ScheduleEvent(EVENT_ENTANGLING_ROOTS, 5s, 15s); } void UpdateAI(uint32 diff) override @@ -80,19 +76,21 @@ public: { case EVENT_AVATAR: DoCast(me, SPELL_AVATAR); - if (Unit* victim = me->GetVictim()) - { - if (DoGetThreat(victim)) - DoModifyThreatPercent(victim, -50); - } - - if (Unit* target = SelectTarget(SelectTargetMethod::Random, 1)) - AttackStart(target); - events.ScheduleEvent(EVENT_AVATAR, urand(25000, 35000)); + DoResetThreat(); + me->SetReactState(REACT_PASSIVE); + events.ScheduleEvent(EVENT_START_PURSUIT, 2s); + events.ScheduleEvent(EVENT_AVATAR, 45s, 50s); break; case EVENT_GROUND_TREMOR: DoCastVictim(SPELL_GROUND_TREMOR, true); - events.ScheduleEvent(EVENT_GROUND_TREMOR, urand(12000, 16000)); + events.ScheduleEvent(EVENT_GROUND_TREMOR, 12s, 16s); + break; + case EVENT_START_PURSUIT: + me->SetReactState(REACT_AGGRESSIVE); + break; + case EVENT_ENTANGLING_ROOTS: + DoCastVictim(SPELL_ENTANGLING_ROOTS); + events.ScheduleEvent(EVENT_ENTANGLING_ROOTS, 10s, 20s); break; default: break;