mirror of
https://github.com/liyunfan1223/azerothcore-wotlk.git
synced 2026-08-09 00:08:01 +00:00
fix(Scripts/GruulsLair): timing/scripting fixes for High King Maulgar fight (#15924)
* (Scripts/GruulsLair)Fix spells High King Maulgar * dumb handling of blast wave aoe placeholder * fixed Blindeye the Seer spells * more edits to Maulgar adds timers are more correct now. still needs more exact pinpointing with sniffs * Maulgar edits see title * fix trigger for aoe attacks * remove whitespaces * remove delay
This commit is contained in:
@@ -126,9 +126,9 @@ struct boss_high_king_maulgar : public BossAI
|
|||||||
_JustEngagedWith();
|
_JustEngagedWith();
|
||||||
Talk(SAY_AGGRO);
|
Talk(SAY_AGGRO);
|
||||||
|
|
||||||
events.ScheduleEvent(EVENT_ARCING_SMASH, 6s);
|
events.ScheduleEvent(EVENT_ARCING_SMASH, 10s);
|
||||||
events.ScheduleEvent(EVENT_MIGHTY_BLOW, 20s);
|
events.ScheduleEvent(EVENT_MIGHTY_BLOW, 15s);
|
||||||
events.ScheduleEvent(EVENT_WHIRLWIND, 30s);
|
events.ScheduleEvent(EVENT_WHIRLWIND, 54s);
|
||||||
events.ScheduleEvent(EVENT_CHECK_HEALTH, 500ms);
|
events.ScheduleEvent(EVENT_CHECK_HEALTH, 500ms);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -149,7 +149,7 @@ struct boss_high_king_maulgar : public BossAI
|
|||||||
break;
|
break;
|
||||||
case EVENT_MIGHTY_BLOW:
|
case EVENT_MIGHTY_BLOW:
|
||||||
me->CastSpell(me->GetVictim(), SPELL_MIGHTY_BLOW, false);
|
me->CastSpell(me->GetVictim(), SPELL_MIGHTY_BLOW, false);
|
||||||
events.ScheduleEvent(EVENT_MIGHTY_BLOW, 16s);
|
events.ScheduleEvent(EVENT_MIGHTY_BLOW, 15s);
|
||||||
break;
|
break;
|
||||||
case EVENT_WHIRLWIND:
|
case EVENT_WHIRLWIND:
|
||||||
events.DelayEvents(15s);
|
events.DelayEvents(15s);
|
||||||
@@ -214,9 +214,9 @@ struct boss_olm_the_summoner : public ScriptedAI
|
|||||||
me->SetInCombatWithZone();
|
me->SetInCombatWithZone();
|
||||||
instance->SetBossState(DATA_MAULGAR, IN_PROGRESS);
|
instance->SetBossState(DATA_MAULGAR, IN_PROGRESS);
|
||||||
|
|
||||||
events.ScheduleEvent(EVENT_ADD_ABILITY1, 10s);
|
events.ScheduleEvent(EVENT_ADD_ABILITY1, 500ms);
|
||||||
events.ScheduleEvent(EVENT_ADD_ABILITY2, 15s);
|
events.ScheduleEvent(EVENT_ADD_ABILITY2, 5s);
|
||||||
events.ScheduleEvent(EVENT_ADD_ABILITY3, 20s);
|
events.ScheduleEvent(EVENT_ADD_ABILITY3, 6500ms);
|
||||||
}
|
}
|
||||||
|
|
||||||
void JustDied(Unit* /*killer*/) override
|
void JustDied(Unit* /*killer*/) override
|
||||||
@@ -241,19 +241,18 @@ struct boss_olm_the_summoner : public ScriptedAI
|
|||||||
switch (events.ExecuteEvent())
|
switch (events.ExecuteEvent())
|
||||||
{
|
{
|
||||||
case EVENT_ADD_ABILITY1:
|
case EVENT_ADD_ABILITY1:
|
||||||
DoCastVictim(SPELL_DARK_DECAY);
|
me->CastSpell(me, SPELL_SUMMON_WFH, false);
|
||||||
events.ScheduleEvent(EVENT_ADD_ABILITY1, 7s);
|
events.ScheduleEvent(EVENT_ADD_ABILITY1, 50s);
|
||||||
break;
|
break;
|
||||||
case EVENT_ADD_ABILITY2:
|
case EVENT_ADD_ABILITY2:
|
||||||
me->CastSpell(me, SPELL_SUMMON_WFH, false);
|
DoCastVictim(SPELL_DARK_DECAY);
|
||||||
events.ScheduleEvent(EVENT_ADD_ABILITY2, 30s);
|
events.ScheduleEvent(EVENT_ADD_ABILITY2, 6500ms);
|
||||||
break;
|
break;
|
||||||
case EVENT_ADD_ABILITY3:
|
case EVENT_ADD_ABILITY3:
|
||||||
DoCastRandomTarget(SPELL_DEATH_COIL);
|
DoCastRandomTarget(SPELL_DEATH_COIL);
|
||||||
events.ScheduleEvent(EVENT_ADD_ABILITY3, 20s);
|
events.ScheduleEvent(EVENT_ADD_ABILITY3, 7s);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
DoMeleeAttackIfReady();
|
DoMeleeAttackIfReady();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@@ -279,9 +278,9 @@ struct boss_kiggler_the_crazed : public ScriptedAI
|
|||||||
me->SetInCombatWithZone();
|
me->SetInCombatWithZone();
|
||||||
instance->SetBossState(DATA_MAULGAR, IN_PROGRESS);
|
instance->SetBossState(DATA_MAULGAR, IN_PROGRESS);
|
||||||
|
|
||||||
events.ScheduleEvent(EVENT_ADD_ABILITY1, 5s);
|
events.ScheduleEvent(EVENT_ADD_ABILITY1, 1500ms);
|
||||||
events.ScheduleEvent(EVENT_ADD_ABILITY2, 10s);
|
events.ScheduleEvent(EVENT_ADD_ABILITY2, 5s);
|
||||||
events.ScheduleEvent(EVENT_ADD_ABILITY3, 20s);
|
events.ScheduleEvent(EVENT_ADD_ABILITY3, 25s);
|
||||||
events.ScheduleEvent(EVENT_ADD_ABILITY4, 30s);
|
events.ScheduleEvent(EVENT_ADD_ABILITY4, 30s);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -302,20 +301,23 @@ struct boss_kiggler_the_crazed : public ScriptedAI
|
|||||||
switch (events.ExecuteEvent())
|
switch (events.ExecuteEvent())
|
||||||
{
|
{
|
||||||
case EVENT_ADD_ABILITY1:
|
case EVENT_ADD_ABILITY1:
|
||||||
if (Unit* target = SelectTarget(SelectTargetMethod::MaxThreat, 1))
|
DoCastVictim(SPELL_LIGHTNING_BOLT);
|
||||||
me->CastSpell(target, SPELL_GREATER_POLYMORPH, false);
|
events.ScheduleEvent(EVENT_ADD_ABILITY1, 1500ms);
|
||||||
events.ScheduleEvent(EVENT_ADD_ABILITY1, 20s);
|
|
||||||
break;
|
break;
|
||||||
case EVENT_ADD_ABILITY2:
|
case EVENT_ADD_ABILITY2:
|
||||||
DoCastVictim(SPELL_LIGHTNING_BOLT);
|
DoCastVictim(SPELL_ARCANE_SHOCK);
|
||||||
events.ScheduleEvent(EVENT_ADD_ABILITY2, 1500ms);
|
events.ScheduleEvent(EVENT_ADD_ABILITY2, 5s);
|
||||||
break;
|
break;
|
||||||
case EVENT_ADD_ABILITY3:
|
case EVENT_ADD_ABILITY3:
|
||||||
DoCastVictim(SPELL_ARCANE_SHOCK);
|
if (Unit* target = SelectTarget(SelectTargetMethod::MaxThreat, 1)) //target method should perhaps change
|
||||||
events.ScheduleEvent(EVENT_ADD_ABILITY3, 20s);
|
me->CastSpell(target, SPELL_GREATER_POLYMORPH, false);
|
||||||
|
events.ScheduleEvent(EVENT_ADD_ABILITY3, 11s);
|
||||||
break;
|
break;
|
||||||
case EVENT_ADD_ABILITY4:
|
case EVENT_ADD_ABILITY4:
|
||||||
DoCastAOE(SPELL_ARCANE_EXPLOSION);
|
if (me->SelectNearestPlayer(30.0f))
|
||||||
|
{
|
||||||
|
DoCastAOE(SPELL_ARCANE_EXPLOSION);
|
||||||
|
}
|
||||||
events.ScheduleEvent(EVENT_ADD_ABILITY4, 30s);
|
events.ScheduleEvent(EVENT_ADD_ABILITY4, 30s);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -345,9 +347,9 @@ struct boss_blindeye_the_seer : public ScriptedAI
|
|||||||
me->SetInCombatWithZone();
|
me->SetInCombatWithZone();
|
||||||
instance->SetBossState(DATA_MAULGAR, IN_PROGRESS);
|
instance->SetBossState(DATA_MAULGAR, IN_PROGRESS);
|
||||||
|
|
||||||
events.ScheduleEvent(EVENT_ADD_ABILITY1, 1700ms);
|
events.ScheduleEvent(EVENT_ADD_ABILITY1, 11s);
|
||||||
events.ScheduleEvent(EVENT_ADD_ABILITY2, 10s);
|
events.ScheduleEvent(EVENT_ADD_ABILITY2, 30s);
|
||||||
events.ScheduleEvent(EVENT_ADD_ABILITY3, 20s);
|
events.ScheduleEvent(EVENT_ADD_ABILITY3, 31s);
|
||||||
}
|
}
|
||||||
|
|
||||||
void JustDied(Unit* /*killer*/) override
|
void JustDied(Unit* /*killer*/) override
|
||||||
@@ -367,15 +369,15 @@ struct boss_blindeye_the_seer : public ScriptedAI
|
|||||||
switch (events.ExecuteEvent())
|
switch (events.ExecuteEvent())
|
||||||
{
|
{
|
||||||
case EVENT_ADD_ABILITY1:
|
case EVENT_ADD_ABILITY1:
|
||||||
DoCastSelf(SPELL_GREATER_PW_SHIELD);
|
|
||||||
events.ScheduleEvent(EVENT_ADD_ABILITY1, 30s);
|
|
||||||
break;
|
|
||||||
case EVENT_ADD_ABILITY2:
|
|
||||||
if (Unit* target = DoSelectLowestHpFriendly(60.0f, 50000))
|
if (Unit* target = DoSelectLowestHpFriendly(60.0f, 50000))
|
||||||
{
|
{
|
||||||
DoCast(target, SPELL_HEAL);
|
DoCast(target, SPELL_HEAL);
|
||||||
}
|
}
|
||||||
events.ScheduleEvent(EVENT_ADD_ABILITY2, 25s);
|
events.ScheduleEvent(EVENT_ADD_ABILITY1, 6s);
|
||||||
|
break;
|
||||||
|
case EVENT_ADD_ABILITY2:
|
||||||
|
DoCastSelf(SPELL_GREATER_PW_SHIELD);
|
||||||
|
events.ScheduleEvent(EVENT_ADD_ABILITY2, 30s);
|
||||||
break;
|
break;
|
||||||
case EVENT_ADD_ABILITY3:
|
case EVENT_ADD_ABILITY3:
|
||||||
me->CastSpell(me, SPELL_PRAYER_OH, false);
|
me->CastSpell(me, SPELL_PRAYER_OH, false);
|
||||||
@@ -417,9 +419,9 @@ struct boss_krosh_firehand : public ScriptedAI
|
|||||||
me->SetInCombatWithZone();
|
me->SetInCombatWithZone();
|
||||||
instance->SetBossState(DATA_MAULGAR, IN_PROGRESS);
|
instance->SetBossState(DATA_MAULGAR, IN_PROGRESS);
|
||||||
|
|
||||||
events.ScheduleEvent(EVENT_ADD_ABILITY1, 1s);
|
events.ScheduleEvent(EVENT_ADD_ABILITY1, 1500ms); //spellshield
|
||||||
events.ScheduleEvent(EVENT_ADD_ABILITY2, 5s);
|
events.ScheduleEvent(EVENT_ADD_ABILITY2, 3500ms); //greater fireball
|
||||||
events.ScheduleEvent(EVENT_ADD_ABILITY3, 20s);
|
events.ScheduleEvent(EVENT_ADD_ABILITY3, 8s); //blast wave (needs to check for players in range)
|
||||||
}
|
}
|
||||||
|
|
||||||
void JustDied(Unit* /*killer*/) override
|
void JustDied(Unit* /*killer*/) override
|
||||||
@@ -439,16 +441,19 @@ struct boss_krosh_firehand : public ScriptedAI
|
|||||||
switch (events.ExecuteEvent())
|
switch (events.ExecuteEvent())
|
||||||
{
|
{
|
||||||
case EVENT_ADD_ABILITY1:
|
case EVENT_ADD_ABILITY1:
|
||||||
DoCastVictim(SPELL_GREATER_FIREBALL);
|
DoCastSelf(SPELL_SPELLSHIELD);
|
||||||
events.ScheduleEvent(EVENT_ADD_ABILITY1, 3500ms);
|
events.ScheduleEvent(EVENT_ADD_ABILITY1, 30s);
|
||||||
break;
|
break;
|
||||||
case EVENT_ADD_ABILITY2:
|
case EVENT_ADD_ABILITY2:
|
||||||
DoCastSelf(SPELL_SPELLSHIELD);
|
DoCastVictim(SPELL_GREATER_FIREBALL);
|
||||||
events.ScheduleEvent(EVENT_ADD_ABILITY2, 40s);
|
events.ScheduleEvent(EVENT_ADD_ABILITY2, 1s);
|
||||||
break;
|
break;
|
||||||
case EVENT_ADD_ABILITY3:
|
case EVENT_ADD_ABILITY3:
|
||||||
DoCastAOE(SPELL_BLAST_WAVE);
|
if (me->SelectNearestPlayer(15.0f))
|
||||||
events.ScheduleEvent(EVENT_ADD_ABILITY3, 20s);
|
{
|
||||||
|
DoCastAOE(SPELL_BLAST_WAVE);
|
||||||
|
}
|
||||||
|
events.ScheduleEvent(EVENT_ADD_ABILITY3, 8s);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user