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