fix(Scripts/ShadowLabyrinth): Blackheart the Inciter's room link (#15994)

* init

* pew

* init

* pew
This commit is contained in:
Eddy Vega
2023-04-18 19:53:05 -06:00
committed by GitHub
parent 2038ae7966
commit a2e8409b41
@@ -22,7 +22,7 @@
enum BlackheartTheInciter enum BlackheartTheInciter
{ {
SPELL_INCITE_CHAOS = 33676, SPELL_INCITE_CHAOS = 33676,
SPELL_INCITE_CHAOS_B = 33684, //debuff applied to each member of party SPELL_INCITE_CHAOS_B = 33684, //debuff applied to each member of party
SPELL_CHARGE = 33709, SPELL_CHARGE = 33709,
SPELL_WAR_STOMP = 33707, SPELL_WAR_STOMP = 33707,
@@ -35,7 +35,7 @@ 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_KNOCKBACK = 4 EVENT_SPELL_WAR_STOMP = 4
}; };
class boss_blackheart_the_inciter : public CreatureScript class boss_blackheart_the_inciter : public CreatureScript
@@ -57,47 +57,54 @@ public:
InstanceScript* instance; InstanceScript* instance;
EventMap events; EventMap events;
bool InciteChaos; bool InciteChaos;
void Reset() override void Reset() override
{ {
InciteChaos = false; InciteChaos = false;
events.Reset(); events.Reset();
if (instance) if (instance)
{
instance->SetData(DATA_BLACKHEARTTHEINCITEREVENT, NOT_STARTED); instance->SetData(DATA_BLACKHEARTTHEINCITEREVENT, NOT_STARTED);
}
} }
void KilledUnit(Unit* victim) override void KilledUnit(Unit* victim) override
{ {
if (victim->GetTypeId() == TYPEID_PLAYER && urand(0, 1)) if (victim->GetTypeId() == TYPEID_PLAYER && urand(0, 1))
{
Talk(SAY_SLAY); Talk(SAY_SLAY);
}
} }
void JustDied(Unit* /*killer*/) override void JustDied(Unit* /*killer*/) override
{ {
Talk(SAY_DEATH); Talk(SAY_DEATH);
if (instance) if (instance)
{
instance->SetData(DATA_BLACKHEARTTHEINCITEREVENT, DONE); instance->SetData(DATA_BLACKHEARTTHEINCITEREVENT, DONE);
}
} }
void JustEngagedWith(Unit* /*who*/) override void JustEngagedWith(Unit* /*who*/) override
{ {
Talk(SAY_AGGRO); Talk(SAY_AGGRO);
me->CallForHelp(100.0f);
events.ScheduleEvent(EVENT_SPELL_INCITE, 24000); events.ScheduleEvent(EVENT_SPELL_INCITE, 24000);
events.ScheduleEvent(EVENT_INCITE_WAIT, 15000); events.ScheduleEvent(EVENT_INCITE_WAIT, 15000);
events.ScheduleEvent(EVENT_SPELL_CHARGE, 0); events.ScheduleEvent(EVENT_SPELL_CHARGE, urand(30000, 50000));
events.ScheduleEvent(EVENT_SPELL_KNOCKBACK, urand(16950, 26350)); events.ScheduleEvent(EVENT_SPELL_WAR_STOMP, urand(16950, 26350));
if (instance) if (instance)
{
instance->SetData(DATA_BLACKHEARTTHEINCITEREVENT, IN_PROGRESS); instance->SetData(DATA_BLACKHEARTTHEINCITEREVENT, IN_PROGRESS);
}
} }
void EnterEvadeMode(EvadeReason why) override void EnterEvadeMode(EvadeReason why) override
{ {
if (InciteChaos && SelectTargetFromPlayerList(100.0f)) if (InciteChaos && SelectTargetFromPlayerList(100.0f))
return; return;
CreatureAI::EnterEvadeMode(why); CreatureAI::EnterEvadeMode(why);
} }
@@ -114,14 +121,16 @@ public:
break; break;
case EVENT_SPELL_INCITE: case EVENT_SPELL_INCITE:
{ {
me->CastSpell(me, SPELL_INCITE_CHAOS, false); DoCastAOE(SPELL_INCITE_CHAOS);
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->GetTypeId() == TYPEID_PLAYER)
{
me->CastSpell(target, SPELL_INCITE_CHAOS_B, true); me->CastSpell(target, SPELL_INCITE_CHAOS_B, true);
}
} }
DoResetThreatList(); DoResetThreatList();
@@ -132,12 +141,11 @@ public:
break; break;
} }
case EVENT_SPELL_CHARGE: case EVENT_SPELL_CHARGE:
if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0)) DoCastRandomTarget(SPELL_CHARGE);
me->CastSpell(target, SPELL_CHARGE, false);
events.RepeatEvent(urand(30000, 50000)); events.RepeatEvent(urand(30000, 50000));
break; break;
case EVENT_SPELL_KNOCKBACK: case EVENT_SPELL_WAR_STOMP:
me->CastSpell(me, SPELL_WAR_STOMP, false); DoCastAOE(SPELL_WAR_STOMP);
events.RepeatEvent(urand(16950, 26350)); events.RepeatEvent(urand(16950, 26350));
break; break;
} }