fix(Scripts/ShadowLabirynth): Fixed Blackheart's Incite Chaos. (#15583)
This commit is contained in:
@@ -1977,7 +1977,7 @@ void Player::UpdateCharmedAI()
|
|||||||
|
|
||||||
if (!target || !IsValidAttackTarget(target))
|
if (!target || !IsValidAttackTarget(target))
|
||||||
{
|
{
|
||||||
target = SelectNearbyTarget(nullptr, 30);
|
target = SelectNearbyTarget(nullptr, GetMap()->IsDungeon() ? 100.f : 30.f);
|
||||||
if (!target)
|
if (!target)
|
||||||
{
|
{
|
||||||
if (!HasUnitState(UNIT_STATE_FOLLOW))
|
if (!HasUnitState(UNIT_STATE_FOLLOW))
|
||||||
|
|||||||
+17
-4
@@ -35,7 +35,10 @@ enum BlackheartTheInciter
|
|||||||
EVENT_SPELL_INCITE = 1,
|
EVENT_SPELL_INCITE = 1,
|
||||||
EVENT_INCITE_WAIT = 2,
|
EVENT_INCITE_WAIT = 2,
|
||||||
EVENT_SPELL_CHARGE = 3,
|
EVENT_SPELL_CHARGE = 3,
|
||||||
EVENT_SPELL_WAR_STOMP = 4
|
EVENT_SPELL_KNOCKBACK = 4,
|
||||||
|
EVENT_SPELL_WAR_STOMP = 5,
|
||||||
|
|
||||||
|
NPC_INCITE_TRIGGER = 19300
|
||||||
};
|
};
|
||||||
|
|
||||||
class boss_blackheart_the_inciter : public CreatureScript
|
class boss_blackheart_the_inciter : public CreatureScript
|
||||||
@@ -61,6 +64,7 @@ public:
|
|||||||
|
|
||||||
void Reset() override
|
void Reset() override
|
||||||
{
|
{
|
||||||
|
me->SetImmuneToPC(false);
|
||||||
InciteChaos = false;
|
InciteChaos = false;
|
||||||
events.Reset();
|
events.Reset();
|
||||||
if (instance)
|
if (instance)
|
||||||
@@ -110,30 +114,39 @@ public:
|
|||||||
|
|
||||||
void UpdateAI(uint32 diff) override
|
void UpdateAI(uint32 diff) override
|
||||||
{
|
{
|
||||||
if (!UpdateVictim())
|
if (!UpdateVictim() && !InciteChaos)
|
||||||
|
{
|
||||||
return;
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
events.Update(diff);
|
events.Update(diff);
|
||||||
switch (events.ExecuteEvent())
|
switch (events.ExecuteEvent())
|
||||||
{
|
{
|
||||||
case EVENT_INCITE_WAIT:
|
case EVENT_INCITE_WAIT:
|
||||||
|
me->SetImmuneToPC(false);
|
||||||
InciteChaos = false;
|
InciteChaos = false;
|
||||||
break;
|
break;
|
||||||
case EVENT_SPELL_INCITE:
|
case EVENT_SPELL_INCITE:
|
||||||
{
|
{
|
||||||
DoCastAOE(SPELL_INCITE_CHAOS);
|
DoCastAOE(SPELL_INCITE_CHAOS);
|
||||||
|
|
||||||
|
uint32 inciteTriggerID = NPC_INCITE_TRIGGER;
|
||||||
std::list<HostileReference*> t_list = me->GetThreatMgr().GetThreatList();
|
std::list<HostileReference*> t_list = me->GetThreatMgr().GetThreatList();
|
||||||
for (std::list<HostileReference*>::const_iterator itr = t_list.begin(); itr != t_list.end(); ++itr)
|
for (std::list<HostileReference*>::const_iterator itr = t_list.begin(); itr != t_list.end(); ++itr)
|
||||||
{
|
{
|
||||||
Unit* target = ObjectAccessor::GetUnit(*me, (*itr)->getUnitGuid());
|
Unit* target = ObjectAccessor::GetUnit(*me, (*itr)->getUnitGuid());
|
||||||
if (target && target->GetTypeId() == TYPEID_PLAYER)
|
|
||||||
|
if (target && target->IsPlayer())
|
||||||
{
|
{
|
||||||
me->CastSpell(target, SPELL_INCITE_CHAOS_B, true);
|
if (Creature* inciteTrigger = me->SummonCreature(inciteTriggerID++, *target, TEMPSUMMON_TIMED_DESPAWN, 15 * IN_MILLISECONDS))
|
||||||
|
{
|
||||||
|
inciteTrigger->CastSpell(target, SPELL_INCITE_CHAOS_B, true);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
DoResetThreatList();
|
DoResetThreatList();
|
||||||
|
me->SetImmuneToPC(true);
|
||||||
InciteChaos = true;
|
InciteChaos = true;
|
||||||
events.DelayEvents(15000);
|
events.DelayEvents(15000);
|
||||||
events.RepeatEvent(urand(50000, 70000));
|
events.RepeatEvent(urand(50000, 70000));
|
||||||
|
|||||||
Reference in New Issue
Block a user