fix(Scripts/ZulGurub): Improvements to Jindo the Hexxer (#12395)

This commit is contained in:
UltraNix
2022-07-19 17:11:44 +02:00
committed by GitHub
parent 700dfde2af
commit 1078ad720c
2 changed files with 34 additions and 11 deletions
@@ -0,0 +1,2 @@
--
UPDATE `creature_template` SET `ScriptName`='npc_brain_wash_totem' WHERE `entry`=15112;
@@ -68,6 +68,9 @@ struct boss_jindo : public BossAI
events.ScheduleEvent(EVENT_TELEPORT, 5000); events.ScheduleEvent(EVENT_TELEPORT, 5000);
Talk(SAY_AGGRO); Talk(SAY_AGGRO);
me->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_STATE_NONE);
_scheduler.CancelAll();
} }
void JustSummoned(Creature* summon) override void JustSummoned(Creature* summon) override
@@ -76,14 +79,15 @@ struct boss_jindo : public BossAI
switch (summon->GetEntry()) switch (summon->GetEntry())
{ {
case NPC_BRAIN_WASH_TOTEM: case NPC_BRAIN_WASH_TOTEM:
if (Unit* target = SelectTarget(SelectTargetMethod::Random, 1)) 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); {
} summon->CastSpell(target, summon->m_spells[0], true);
break; }
default: break;
break; default:
break;
} }
} }
@@ -91,20 +95,22 @@ struct boss_jindo : public BossAI
{ {
if (_EnterEvadeMode(evadeReason)) if (_EnterEvadeMode(evadeReason))
{ {
me->AddUnitState(UNIT_STATE_EVADE);
Reset(); Reset();
me->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_STATE_DANCE); 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->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_STATE_NONE);
me->AddUnitState(UNIT_STATE_EVADE);
me->GetMotionMaster()->MoveTargetedHome(); me->GetMotionMaster()->MoveTargetedHome();
}, 4s); });
} }
} }
void UpdateAI(uint32 diff) override void UpdateAI(uint32 diff) override
{ {
_scheduler.Update(diff);
if (!UpdateVictim()) if (!UpdateVictim())
return; return;
@@ -153,6 +159,9 @@ struct boss_jindo : public BossAI
return true; return true;
} }
private:
TaskScheduler _scheduler;
}; };
//Healing Ward //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() void AddSC_boss_jindo()
{ {
RegisterZulGurubCreatureAI(boss_jindo); RegisterZulGurubCreatureAI(boss_jindo);
RegisterZulGurubCreatureAI(npc_healing_ward); RegisterZulGurubCreatureAI(npc_healing_ward);
RegisterZulGurubCreatureAI(npc_shade_of_jindo); RegisterZulGurubCreatureAI(npc_shade_of_jindo);
RegisterZulGurubCreatureAI(npc_brain_wash_totem);
RegisterSpellScript(spell_random_aggro); RegisterSpellScript(spell_random_aggro);
RegisterSpellScript(spell_delusions_of_jindo); RegisterSpellScript(spell_delusions_of_jindo);
} }