fix(Scripts/RuinsOfAhnQiraj): Improve Kurinnaxx (#12136)

This commit is contained in:
Eddy Vega
2022-07-20 11:09:09 -06:00
committed by GitHub
parent 36824f6aa7
commit e8f271ca25
2 changed files with 18 additions and 21 deletions

View File

@@ -26,7 +26,6 @@ enum Spells
SPELL_SANDTRAP = 25648,
SPELL_ENRAGE = 26527,
SPELL_SUMMON_PLAYER = 26446,
SPELL_TRASH = 3391, // Should perhaps be triggered by an aura? Couldn't find any though
SPELL_WIDE_SLASH = 25814
};
@@ -34,13 +33,12 @@ enum Events
{
EVENT_MORTAL_WOUND = 1,
EVENT_SANDTRAP = 2,
EVENT_TRASH = 3,
EVENT_WIDE_SLASH = 4
EVENT_WIDE_SLASH = 3
};
enum Texts
{
SAY_KURINAXX_DEATH = 5, // Yelled by Ossirian the Unscarred
SAY_KURINAXX_DEATH = 5 // Yell by 'Ossirian the Unscarred'
};
class boss_kurinnaxx : public CreatureScript
@@ -50,25 +48,22 @@ public:
struct boss_kurinnaxxAI : public BossAI
{
boss_kurinnaxxAI(Creature* creature) : BossAI(creature, DATA_KURINNAXX)
{
}
boss_kurinnaxxAI(Creature* creature) : BossAI(creature, DATA_KURINNAXX) {}
void Reset() override
{
_Reset();
_enraged = false;
events.ScheduleEvent(EVENT_MORTAL_WOUND, 8000);
events.ScheduleEvent(EVENT_MORTAL_WOUND, urand(8000, 10000));
events.ScheduleEvent(EVENT_SANDTRAP, urand(5000, 15000));
events.ScheduleEvent(EVENT_TRASH, 1000);
events.ScheduleEvent(EVENT_WIDE_SLASH, 11000);
events.ScheduleEvent(EVENT_WIDE_SLASH, urand(10000, 15000));
}
void DamageTaken(Unit*, uint32& /*damage*/, DamageEffectType, SpellSchoolMask) override
{
if (!_enraged && HealthBelowPct(30))
{
DoCast(me, SPELL_ENRAGE);
DoCastSelf(SPELL_ENRAGE);
_enraged = true;
}
}
@@ -77,7 +72,9 @@ public:
{
_JustDied();
if (Creature* Ossirian = me->GetMap()->GetCreature(instance->GetGuidData(DATA_OSSIRIAN)))
{
sCreatureTextMgr->SendChat(Ossirian, SAY_KURINAXX_DEATH, nullptr, CHAT_MSG_ADDON, LANG_ADDON, TEXT_RANGE_ZONE);
}
}
void UpdateAI(uint32 diff) override
@@ -96,28 +93,23 @@ public:
{
case EVENT_MORTAL_WOUND:
DoCastVictim(SPELL_MORTALWOUND);
events.ScheduleEvent(EVENT_MORTAL_WOUND, 8000);
events.ScheduleEvent(EVENT_MORTAL_WOUND, urand(8000, 10000));
break;
case EVENT_SANDTRAP:
if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 100, true))
{
target->CastSpell(target, SPELL_SANDTRAP, true);
else if (Unit* victim = me->GetVictim())
victim->CastSpell(victim, SPELL_SANDTRAP, true);
}
events.ScheduleEvent(EVENT_SANDTRAP, urand(5000, 15000));
break;
case EVENT_WIDE_SLASH:
DoCast(me, SPELL_WIDE_SLASH);
events.ScheduleEvent(EVENT_WIDE_SLASH, 11000);
break;
case EVENT_TRASH:
DoCast(me, SPELL_TRASH);
events.ScheduleEvent(EVENT_WIDE_SLASH, 16000);
DoCastSelf(SPELL_WIDE_SLASH);
events.ScheduleEvent(EVENT_WIDE_SLASH, urand(12000, 15000));
break;
default:
break;
}
}
DoMeleeAttackIfReady();
}
private: