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:
Dan
2023-04-15 21:05:37 +02:00
committed by GitHub
parent c1cafe040b
commit 8cb7bfd908

View File

@@ -126,9 +126,9 @@ struct boss_high_king_maulgar : public BossAI
_JustEngagedWith();
Talk(SAY_AGGRO);
events.ScheduleEvent(EVENT_ARCING_SMASH, 6s);
events.ScheduleEvent(EVENT_MIGHTY_BLOW, 20s);
events.ScheduleEvent(EVENT_WHIRLWIND, 30s);
events.ScheduleEvent(EVENT_ARCING_SMASH, 10s);
events.ScheduleEvent(EVENT_MIGHTY_BLOW, 15s);
events.ScheduleEvent(EVENT_WHIRLWIND, 54s);
events.ScheduleEvent(EVENT_CHECK_HEALTH, 500ms);
}
@@ -149,7 +149,7 @@ struct boss_high_king_maulgar : public BossAI
break;
case EVENT_MIGHTY_BLOW:
me->CastSpell(me->GetVictim(), SPELL_MIGHTY_BLOW, false);
events.ScheduleEvent(EVENT_MIGHTY_BLOW, 16s);
events.ScheduleEvent(EVENT_MIGHTY_BLOW, 15s);
break;
case EVENT_WHIRLWIND:
events.DelayEvents(15s);
@@ -214,9 +214,9 @@ struct boss_olm_the_summoner : public ScriptedAI
me->SetInCombatWithZone();
instance->SetBossState(DATA_MAULGAR, IN_PROGRESS);
events.ScheduleEvent(EVENT_ADD_ABILITY1, 10s);
events.ScheduleEvent(EVENT_ADD_ABILITY2, 15s);
events.ScheduleEvent(EVENT_ADD_ABILITY3, 20s);
events.ScheduleEvent(EVENT_ADD_ABILITY1, 500ms);
events.ScheduleEvent(EVENT_ADD_ABILITY2, 5s);
events.ScheduleEvent(EVENT_ADD_ABILITY3, 6500ms);
}
void JustDied(Unit* /*killer*/) override
@@ -241,19 +241,18 @@ struct boss_olm_the_summoner : public ScriptedAI
switch (events.ExecuteEvent())
{
case EVENT_ADD_ABILITY1:
DoCastVictim(SPELL_DARK_DECAY);
events.ScheduleEvent(EVENT_ADD_ABILITY1, 7s);
me->CastSpell(me, SPELL_SUMMON_WFH, false);
events.ScheduleEvent(EVENT_ADD_ABILITY1, 50s);
break;
case EVENT_ADD_ABILITY2:
me->CastSpell(me, SPELL_SUMMON_WFH, false);
events.ScheduleEvent(EVENT_ADD_ABILITY2, 30s);
DoCastVictim(SPELL_DARK_DECAY);
events.ScheduleEvent(EVENT_ADD_ABILITY2, 6500ms);
break;
case EVENT_ADD_ABILITY3:
DoCastRandomTarget(SPELL_DEATH_COIL);
events.ScheduleEvent(EVENT_ADD_ABILITY3, 20s);
events.ScheduleEvent(EVENT_ADD_ABILITY3, 7s);
break;
}
DoMeleeAttackIfReady();
}
};
@@ -279,9 +278,9 @@ struct boss_kiggler_the_crazed : public ScriptedAI
me->SetInCombatWithZone();
instance->SetBossState(DATA_MAULGAR, IN_PROGRESS);
events.ScheduleEvent(EVENT_ADD_ABILITY1, 5s);
events.ScheduleEvent(EVENT_ADD_ABILITY2, 10s);
events.ScheduleEvent(EVENT_ADD_ABILITY3, 20s);
events.ScheduleEvent(EVENT_ADD_ABILITY1, 1500ms);
events.ScheduleEvent(EVENT_ADD_ABILITY2, 5s);
events.ScheduleEvent(EVENT_ADD_ABILITY3, 25s);
events.ScheduleEvent(EVENT_ADD_ABILITY4, 30s);
}
@@ -302,20 +301,23 @@ struct boss_kiggler_the_crazed : public ScriptedAI
switch (events.ExecuteEvent())
{
case EVENT_ADD_ABILITY1:
if (Unit* target = SelectTarget(SelectTargetMethod::MaxThreat, 1))
me->CastSpell(target, SPELL_GREATER_POLYMORPH, false);
events.ScheduleEvent(EVENT_ADD_ABILITY1, 20s);
DoCastVictim(SPELL_LIGHTNING_BOLT);
events.ScheduleEvent(EVENT_ADD_ABILITY1, 1500ms);
break;
case EVENT_ADD_ABILITY2:
DoCastVictim(SPELL_LIGHTNING_BOLT);
events.ScheduleEvent(EVENT_ADD_ABILITY2, 1500ms);
DoCastVictim(SPELL_ARCANE_SHOCK);
events.ScheduleEvent(EVENT_ADD_ABILITY2, 5s);
break;
case EVENT_ADD_ABILITY3:
DoCastVictim(SPELL_ARCANE_SHOCK);
events.ScheduleEvent(EVENT_ADD_ABILITY3, 20s);
if (Unit* target = SelectTarget(SelectTargetMethod::MaxThreat, 1)) //target method should perhaps change
me->CastSpell(target, SPELL_GREATER_POLYMORPH, false);
events.ScheduleEvent(EVENT_ADD_ABILITY3, 11s);
break;
case EVENT_ADD_ABILITY4:
DoCastAOE(SPELL_ARCANE_EXPLOSION);
if (me->SelectNearestPlayer(30.0f))
{
DoCastAOE(SPELL_ARCANE_EXPLOSION);
}
events.ScheduleEvent(EVENT_ADD_ABILITY4, 30s);
break;
}
@@ -345,9 +347,9 @@ struct boss_blindeye_the_seer : public ScriptedAI
me->SetInCombatWithZone();
instance->SetBossState(DATA_MAULGAR, IN_PROGRESS);
events.ScheduleEvent(EVENT_ADD_ABILITY1, 1700ms);
events.ScheduleEvent(EVENT_ADD_ABILITY2, 10s);
events.ScheduleEvent(EVENT_ADD_ABILITY3, 20s);
events.ScheduleEvent(EVENT_ADD_ABILITY1, 11s);
events.ScheduleEvent(EVENT_ADD_ABILITY2, 30s);
events.ScheduleEvent(EVENT_ADD_ABILITY3, 31s);
}
void JustDied(Unit* /*killer*/) override
@@ -367,15 +369,15 @@ struct boss_blindeye_the_seer : public ScriptedAI
switch (events.ExecuteEvent())
{
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))
{
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;
case EVENT_ADD_ABILITY3:
me->CastSpell(me, SPELL_PRAYER_OH, false);
@@ -417,9 +419,9 @@ struct boss_krosh_firehand : public ScriptedAI
me->SetInCombatWithZone();
instance->SetBossState(DATA_MAULGAR, IN_PROGRESS);
events.ScheduleEvent(EVENT_ADD_ABILITY1, 1s);
events.ScheduleEvent(EVENT_ADD_ABILITY2, 5s);
events.ScheduleEvent(EVENT_ADD_ABILITY3, 20s);
events.ScheduleEvent(EVENT_ADD_ABILITY1, 1500ms); //spellshield
events.ScheduleEvent(EVENT_ADD_ABILITY2, 3500ms); //greater fireball
events.ScheduleEvent(EVENT_ADD_ABILITY3, 8s); //blast wave (needs to check for players in range)
}
void JustDied(Unit* /*killer*/) override
@@ -439,16 +441,19 @@ struct boss_krosh_firehand : public ScriptedAI
switch (events.ExecuteEvent())
{
case EVENT_ADD_ABILITY1:
DoCastVictim(SPELL_GREATER_FIREBALL);
events.ScheduleEvent(EVENT_ADD_ABILITY1, 3500ms);
DoCastSelf(SPELL_SPELLSHIELD);
events.ScheduleEvent(EVENT_ADD_ABILITY1, 30s);
break;
case EVENT_ADD_ABILITY2:
DoCastSelf(SPELL_SPELLSHIELD);
events.ScheduleEvent(EVENT_ADD_ABILITY2, 40s);
DoCastVictim(SPELL_GREATER_FIREBALL);
events.ScheduleEvent(EVENT_ADD_ABILITY2, 1s);
break;
case EVENT_ADD_ABILITY3:
DoCastAOE(SPELL_BLAST_WAVE);
events.ScheduleEvent(EVENT_ADD_ABILITY3, 20s);
if (me->SelectNearestPlayer(15.0f))
{
DoCastAOE(SPELL_BLAST_WAVE);
}
events.ScheduleEvent(EVENT_ADD_ABILITY3, 8s);
break;
}