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

View File

@@ -22,7 +22,7 @@
enum BlackheartTheInciter
{
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_WAR_STOMP = 33707,
@@ -35,7 +35,7 @@ enum BlackheartTheInciter
EVENT_SPELL_INCITE = 1,
EVENT_INCITE_WAIT = 2,
EVENT_SPELL_CHARGE = 3,
EVENT_SPELL_KNOCKBACK = 4
EVENT_SPELL_WAR_STOMP = 4
};
class boss_blackheart_the_inciter : public CreatureScript
@@ -57,47 +57,54 @@ public:
InstanceScript* instance;
EventMap events;
bool InciteChaos;
void Reset() override
{
InciteChaos = false;
events.Reset();
if (instance)
{
instance->SetData(DATA_BLACKHEARTTHEINCITEREVENT, NOT_STARTED);
}
}
void KilledUnit(Unit* victim) override
{
if (victim->GetTypeId() == TYPEID_PLAYER && urand(0, 1))
{
Talk(SAY_SLAY);
}
}
void JustDied(Unit* /*killer*/) override
{
Talk(SAY_DEATH);
if (instance)
{
instance->SetData(DATA_BLACKHEARTTHEINCITEREVENT, DONE);
}
}
void JustEngagedWith(Unit* /*who*/) override
{
Talk(SAY_AGGRO);
me->CallForHelp(100.0f);
events.ScheduleEvent(EVENT_SPELL_INCITE, 24000);
events.ScheduleEvent(EVENT_INCITE_WAIT, 15000);
events.ScheduleEvent(EVENT_SPELL_CHARGE, 0);
events.ScheduleEvent(EVENT_SPELL_KNOCKBACK, urand(16950, 26350));
events.ScheduleEvent(EVENT_SPELL_CHARGE, urand(30000, 50000));
events.ScheduleEvent(EVENT_SPELL_WAR_STOMP, urand(16950, 26350));
if (instance)
{
instance->SetData(DATA_BLACKHEARTTHEINCITEREVENT, IN_PROGRESS);
}
}
void EnterEvadeMode(EvadeReason why) override
{
if (InciteChaos && SelectTargetFromPlayerList(100.0f))
return;
CreatureAI::EnterEvadeMode(why);
}
@@ -114,14 +121,16 @@ public:
break;
case EVENT_SPELL_INCITE:
{
me->CastSpell(me, SPELL_INCITE_CHAOS, false);
DoCastAOE(SPELL_INCITE_CHAOS);
std::list<HostileReference*> t_list = me->GetThreatMgr().GetThreatList();
for (std::list<HostileReference*>::const_iterator itr = t_list.begin(); itr != t_list.end(); ++itr)
{
Unit* target = ObjectAccessor::GetUnit(*me, (*itr)->getUnitGuid());
if (target && target->GetTypeId() == TYPEID_PLAYER)
{
me->CastSpell(target, SPELL_INCITE_CHAOS_B, true);
}
}
DoResetThreatList();
@@ -132,12 +141,11 @@ public:
break;
}
case EVENT_SPELL_CHARGE:
if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0))
me->CastSpell(target, SPELL_CHARGE, false);
DoCastRandomTarget(SPELL_CHARGE);
events.RepeatEvent(urand(30000, 50000));
break;
case EVENT_SPELL_KNOCKBACK:
me->CastSpell(me, SPELL_WAR_STOMP, false);
case EVENT_SPELL_WAR_STOMP:
DoCastAOE(SPELL_WAR_STOMP);
events.RepeatEvent(urand(16950, 26350));
break;
}