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(); _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;
} }