From 1078ad720c8e3cb1f9dc51d53911854f5d348eab Mon Sep 17 00:00:00 2001 From: UltraNix <80540499+UltraNix@users.noreply.github.com> Date: Tue, 19 Jul 2022 17:11:44 +0200 Subject: [PATCH] fix(Scripts/ZulGurub): Improvements to Jindo the Hexxer (#12395) --- .../rev_1657968102568754700.sql | 2 + .../EasternKingdoms/ZulGurub/boss_jindo.cpp | 43 ++++++++++++++----- 2 files changed, 34 insertions(+), 11 deletions(-) create mode 100644 data/sql/updates/pending_db_world/rev_1657968102568754700.sql diff --git a/data/sql/updates/pending_db_world/rev_1657968102568754700.sql b/data/sql/updates/pending_db_world/rev_1657968102568754700.sql new file mode 100644 index 000000000..9f15023c0 --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1657968102568754700.sql @@ -0,0 +1,2 @@ +-- +UPDATE `creature_template` SET `ScriptName`='npc_brain_wash_totem' WHERE `entry`=15112; diff --git a/src/server/scripts/EasternKingdoms/ZulGurub/boss_jindo.cpp b/src/server/scripts/EasternKingdoms/ZulGurub/boss_jindo.cpp index d4aa84a18..6d85c47d8 100644 --- a/src/server/scripts/EasternKingdoms/ZulGurub/boss_jindo.cpp +++ b/src/server/scripts/EasternKingdoms/ZulGurub/boss_jindo.cpp @@ -68,6 +68,9 @@ struct boss_jindo : public BossAI events.ScheduleEvent(EVENT_TELEPORT, 5000); Talk(SAY_AGGRO); + + me->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_STATE_NONE); + _scheduler.CancelAll(); } void JustSummoned(Creature* summon) override @@ -76,14 +79,15 @@ struct boss_jindo : public BossAI switch (summon->GetEntry()) { - case NPC_BRAIN_WASH_TOTEM: - if (Unit* target = SelectTarget(SelectTargetMethod::Random, 1)) - { - summon->CastSpell(target, summon->m_spells[0], true); - } - break; - default: - break; + case NPC_BRAIN_WASH_TOTEM: + summon->SetReactState(REACT_PASSIVE); + if (Unit* target = SelectTarget(SelectTargetMethod::Random, me->GetThreatMgr().getThreatList().size() > 1 ? 1 : 0)) + { + summon->CastSpell(target, summon->m_spells[0], true); + } + break; + default: + break; } } @@ -91,20 +95,22 @@ struct boss_jindo : public BossAI { if (_EnterEvadeMode(evadeReason)) { - me->AddUnitState(UNIT_STATE_EVADE); Reset(); me->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_STATE_DANCE); - me->m_Events.AddEventAtOffset([&]() + _scheduler.Schedule(4s, [this](TaskContext /*context*/) { me->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_STATE_NONE); + me->AddUnitState(UNIT_STATE_EVADE); me->GetMotionMaster()->MoveTargetedHome(); - }, 4s); + }); } } void UpdateAI(uint32 diff) override { + _scheduler.Update(diff); + if (!UpdateVictim()) return; @@ -153,6 +159,9 @@ struct boss_jindo : public BossAI return true; } + +private: + TaskScheduler _scheduler; }; //Healing Ward @@ -282,11 +291,23 @@ class spell_delusions_of_jindo : public SpellScript } }; +struct npc_brain_wash_totem : public ScriptedAI +{ + npc_brain_wash_totem(Creature* creature) : ScriptedAI(creature) + { + } + + void EnterEvadeMode(EvadeReason /*evadeReason*/) override + { + } +}; + void AddSC_boss_jindo() { RegisterZulGurubCreatureAI(boss_jindo); RegisterZulGurubCreatureAI(npc_healing_ward); RegisterZulGurubCreatureAI(npc_shade_of_jindo); + RegisterZulGurubCreatureAI(npc_brain_wash_totem); RegisterSpellScript(spell_random_aggro); RegisterSpellScript(spell_delusions_of_jindo); }