fix(Scripts/RuinsOfAhnQiraj): Improve Kurinnaxx (#12136)
This commit is contained in:
@@ -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:
|
||||||
|
|||||||
Reference in New Issue
Block a user