mirror of
https://github.com/mod-playerbots/azerothcore-wotlk.git
synced 2026-01-24 22:26:22 +00:00
fix(Scripts/Gundrak): Fixed behavior for Colossus and Elemental (#23150)
Co-authored-by: arsinspace <arsinspace@outlook.com>
This commit is contained in:
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user