fix(Scripts/Gundrak): Fixed behavior for Colossus and Elemental (#23150)

Co-authored-by: arsinspace <arsinspace@outlook.com>
This commit is contained in:
arsinspace
2025-10-11 14:54:06 +03:00
committed by GitHub
parent dcbc02c93a
commit 43a54d4329

View File

@@ -125,17 +125,18 @@ public:
void Reset() override
{
BossAI::Reset();
for (uint8 i = 0; i < 5; i++)
me->SummonCreature(NPC_LIVING_MOJO, mojoPosition[i].GetPositionX(), mojoPosition[i].GetPositionY(), mojoPosition[i].GetPositionZ(), 0, TEMPSUMMON_MANUAL_DESPAWN, 0);
me->SetUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
me->RemoveUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
}
void InitializeAI() override
{
BossAI::InitializeAI();
me->CastSpell(me, SPELL_FREEZE_ANIM, true);
if (!me->IsInEvadeMode())
{
me->CastSpell(me, SPELL_FREEZE_ANIM, true);
me->SetUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
for (const auto & i : mojoPosition)
me->SummonCreature(NPC_LIVING_MOJO, i.GetPositionX(), i.GetPositionY(), i.GetPositionZ(), 0, TEMPSUMMON_MANUAL_DESPAWN, 0);
}
else
{
me->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
me->RemoveUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
}
}
void JustReachedHome() override
@@ -144,9 +145,9 @@ public:
me->CastSpell(me, SPELL_FREEZE_ANIM, true);
}
void JustEngagedWith(Unit* who) override
void ScheduleTasks() override
{
BossAI::JustEngagedWith(who);
events.ScheduleEvent(EVENT_COLOSSUS_START_FIGHT, 1s);
events.ScheduleEvent(EVENT_COLOSSUS_MIGHTY_BLOW, 10s);
events.ScheduleEvent(EVENT_COLOSSUS_MORTAL_STRIKE, 7s);
events.ScheduleEvent(EVENT_COLOSSUS_HEALTH_1, 1s);
@@ -183,6 +184,7 @@ public:
summons.Despawn(summon);
if (summon->GetEntry() == NPC_DRAKKARI_ELEMENTAL)
{
me->SetHealth(me->GetMaxHealth() / 2);
me->RemoveUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
me->RemoveAurasDueToSpell(SPELL_FREEZE_ANIM);
if (me->GetVictim())
@@ -231,7 +233,7 @@ public:
events.ScheduleEvent(EVENT_COLOSSUS_HEALTH_1, 1s);
break;
case EVENT_COLOSSUS_HEALTH_2:
if (me->HealthBelowPct(21))
if (me->HealthBelowPct(2))
{
me->CastSpell(me, SPELL_EMERGE, false);
me->CastSpell(me, SPELL_EMERGE_SUMMON, true);
@@ -301,7 +303,7 @@ public:
switch (events.ExecuteEvent())
{
case EVENT_ELEMENTAL_HEALTH:
if (me->HealthBelowPct(51))
if (me->HealthBelowPct(56))
{
me->CastSpell(me, SPELL_FACE_ME, true);
me->CastSpell(me, SPELL_SURGE_VISUAL, true);
@@ -315,7 +317,7 @@ public:
case EVENT_ELEMENTAL_SURGE:
Talk(SAY_SURGE);
me->CastSpell(me, SPELL_SURGE_VISUAL, true);
me->CastSpell(me->GetVictim(), SPELL_SURGE, false);
DoCastRandomTarget(SPELL_SURGE, 0, 40, true, false, true);
events.ScheduleEvent(EVENT_ELEMENTAL_SURGE, 15s);
break;
case EVENT_ELEMENTAL_VOLLEY: