fix(Scripts/Gundrak): Update Slad'ran script (#22975)
This commit is contained in:
@@ -75,21 +75,32 @@ class boss_slad_ran : public CreatureScript
|
|||||||
public:
|
public:
|
||||||
boss_slad_ran() : CreatureScript("boss_slad_ran") { }
|
boss_slad_ran() : CreatureScript("boss_slad_ran") { }
|
||||||
|
|
||||||
CreatureAI* GetAI(Creature* creature) const override
|
|
||||||
{
|
|
||||||
return GetGundrakAI<boss_slad_ranAI>(creature);
|
|
||||||
}
|
|
||||||
|
|
||||||
struct boss_slad_ranAI : public BossAI
|
struct boss_slad_ranAI : public BossAI
|
||||||
{
|
{
|
||||||
boss_slad_ranAI(Creature* creature) : BossAI(creature, DATA_SLAD_RAN)
|
boss_slad_ranAI(Creature* creature) : BossAI(creature, DATA_SLAD_RAN) { }
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
void Reset() override
|
void Reset() override
|
||||||
{
|
{
|
||||||
BossAI::Reset();
|
BossAI::Reset();
|
||||||
_achievement = true;
|
_achievement = true;
|
||||||
|
|
||||||
|
ScheduleHealthCheckEvent(90, [&] {
|
||||||
|
Talk(SAY_SUMMON_SNAKES);
|
||||||
|
|
||||||
|
ScheduleTimedEvent(1s, [&] {
|
||||||
|
for (uint8 i = MAX_CONSTRICTOR; i < MAX_SUMMONS; ++i)
|
||||||
|
me->SummonCreature(NPC_SLADRAN_VIPER, SpawnLoc[i], TEMPSUMMON_CORPSE_TIMED_DESPAWN, 20 * IN_MILLISECONDS);
|
||||||
|
}, 8s);
|
||||||
|
});
|
||||||
|
|
||||||
|
ScheduleHealthCheckEvent(DUNGEON_MODE(50, 75), [&] {
|
||||||
|
Talk(SAY_SUMMON_CONSTRICTORS);
|
||||||
|
|
||||||
|
ScheduleTimedEvent(1s, [&] {
|
||||||
|
for (uint8 i = 0; i < MAX_CONSTRICTOR; ++i)
|
||||||
|
me->SummonCreature(NPC_SLADRAN_CONSTRICTORS, SpawnLoc[i], TEMPSUMMON_CORPSE_TIMED_DESPAWN, 20 * IN_MILLISECONDS);
|
||||||
|
}, 3s, 5s);
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
uint32 GetData(uint32 data) const override
|
uint32 GetData(uint32 data) const override
|
||||||
@@ -110,11 +121,18 @@ public:
|
|||||||
Talk(SAY_AGGRO);
|
Talk(SAY_AGGRO);
|
||||||
BossAI::JustEngagedWith(who);
|
BossAI::JustEngagedWith(who);
|
||||||
|
|
||||||
events.ScheduleEvent(EVENT_POISON_NOVA, 10s);
|
ScheduleTimedEvent(10s, [&]{
|
||||||
events.ScheduleEvent(EVENT_POWERFULL_BITE, 3s);
|
Talk(EMOTE_NOVA);
|
||||||
events.ScheduleEvent(EVENT_VENOM_BOLT, 15s);
|
DoCastAOE(SPELL_POISON_NOVA);
|
||||||
events.ScheduleEvent(EVENT_CHECK_HEALTH1, 1s);
|
}, 15s);
|
||||||
events.ScheduleEvent(EVENT_CHECK_HEALTH2, 1s);
|
|
||||||
|
ScheduleTimedEvent(3s, [&] {
|
||||||
|
DoCastVictim(SPELL_POWERFULL_BITE);
|
||||||
|
}, 10s);
|
||||||
|
|
||||||
|
ScheduleTimedEvent(15s, [&] {
|
||||||
|
DoCastVictim(SPELL_VENOM_BOLT);
|
||||||
|
}, 10s);
|
||||||
}
|
}
|
||||||
|
|
||||||
void JustDied(Unit* killer) override
|
void JustDied(Unit* killer) override
|
||||||
@@ -133,72 +151,14 @@ public:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void JustSummoned(Creature* summon) override
|
|
||||||
{
|
|
||||||
summon->SetInCombatWithZone();
|
|
||||||
summons.Summon(summon);
|
|
||||||
}
|
|
||||||
|
|
||||||
void UpdateAI(uint32 diff) override
|
|
||||||
{
|
|
||||||
if (!UpdateVictim())
|
|
||||||
return;
|
|
||||||
|
|
||||||
events.Update(diff);
|
|
||||||
if (me->HasUnitState(UNIT_STATE_CASTING))
|
|
||||||
return;
|
|
||||||
|
|
||||||
switch (events.ExecuteEvent())
|
|
||||||
{
|
|
||||||
case EVENT_CHECK_HEALTH1:
|
|
||||||
if (me->HealthBelowPct(70))
|
|
||||||
{
|
|
||||||
Talk(SAY_SUMMON_SNAKES);
|
|
||||||
events.ScheduleEvent(EVENT_SUMMON1, 1s);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
events.ScheduleEvent(EVENT_CHECK_HEALTH1, 1s);
|
|
||||||
break;
|
|
||||||
case EVENT_CHECK_HEALTH2:
|
|
||||||
if (me->HealthBelowPct(50))
|
|
||||||
{
|
|
||||||
Talk(SAY_SUMMON_CONSTRICTORS);
|
|
||||||
events.ScheduleEvent(EVENT_SUMMON2, 1s);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
events.ScheduleEvent(EVENT_CHECK_HEALTH2, 1s);
|
|
||||||
break;
|
|
||||||
case EVENT_POISON_NOVA:
|
|
||||||
Talk(EMOTE_NOVA);
|
|
||||||
me->CastSpell(me, SPELL_POISON_NOVA, false);
|
|
||||||
events.ScheduleEvent(EVENT_POISON_NOVA, 15s);
|
|
||||||
break;
|
|
||||||
case EVENT_POWERFULL_BITE:
|
|
||||||
me->CastSpell(me->GetVictim(), SPELL_POWERFULL_BITE, false);
|
|
||||||
events.ScheduleEvent(EVENT_POWERFULL_BITE, 10s);
|
|
||||||
break;
|
|
||||||
case EVENT_VENOM_BOLT:
|
|
||||||
me->CastSpell(me->GetVictim(), SPELL_VENOM_BOLT, false);
|
|
||||||
events.ScheduleEvent(EVENT_VENOM_BOLT, 10s);
|
|
||||||
break;
|
|
||||||
case EVENT_SUMMON1:
|
|
||||||
for (uint8 i = MAX_CONSTRICTOR; i < MAX_SUMMONS; ++i)
|
|
||||||
me->SummonCreature(NPC_SLADRAN_VIPER, SpawnLoc[i], TEMPSUMMON_CORPSE_TIMED_DESPAWN, 20 * IN_MILLISECONDS);
|
|
||||||
events.ScheduleEvent(EVENT_SUMMON1, 8s);
|
|
||||||
break;
|
|
||||||
case EVENT_SUMMON2:
|
|
||||||
for (uint8 i = 0; i < MAX_CONSTRICTOR; ++i)
|
|
||||||
me->SummonCreature(NPC_SLADRAN_CONSTRICTORS, SpawnLoc[i], TEMPSUMMON_CORPSE_TIMED_DESPAWN, 20 * IN_MILLISECONDS);
|
|
||||||
events.ScheduleEvent(EVENT_SUMMON2, 3s, 5s);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
DoMeleeAttackIfReady();
|
|
||||||
}
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
bool _achievement;
|
bool _achievement;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
CreatureAI* GetAI(Creature* creature) const override
|
||||||
|
{
|
||||||
|
return GetGundrakAI<boss_slad_ranAI>(creature);
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
class spell_sladran_grip_of_sladran_aura : public AuraScript
|
class spell_sladran_grip_of_sladran_aura : public AuraScript
|
||||||
|
|||||||
Reference in New Issue
Block a user