aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authoroffl <11556157+offl@users.noreply.github.com>2021-12-01 02:51:04 +0200
committerGitHub <noreply@github.com>2021-12-01 02:51:04 +0200
commit43315e0e19fe1609b336f6a9aae486e302317c79 (patch)
tree7be2e9fcfac396e9328275850f0bea6333ae3ae1 /src
parent2fe3b6cc2ff7f68ffbd009b80ab39dc8f3264abf (diff)
Scripts/The Eye: Few updates to Kael'thas & Astromancer (#27304)
Diffstat (limited to 'src')
-rw-r--r--src/server/game/Spells/Auras/SpellAuraEffects.cpp6
-rw-r--r--src/server/scripts/Outland/TempestKeep/Eye/boss_kaelthas.cpp164
2 files changed, 104 insertions, 66 deletions
diff --git a/src/server/game/Spells/Auras/SpellAuraEffects.cpp b/src/server/game/Spells/Auras/SpellAuraEffects.cpp
index 3dbaf996478..4ec98435b52 100644
--- a/src/server/game/Spells/Auras/SpellAuraEffects.cpp
+++ b/src/server/game/Spells/Auras/SpellAuraEffects.cpp
@@ -4471,9 +4471,6 @@ void AuraEffect::HandleAuraDummy(AuraApplication const* aurApp, uint8 mode, bool
bf->RemovePlayerFromResurrectQueue(target->GetGUID());
}
break;
- case 36730: // Flame Strike
- target->CastSpell(target, 36731, this);
- break;
case 43681: // Inactive
{
if (target->GetTypeId() != TYPEID_PLAYER || aurApp->GetRemoveMode() != AURA_REMOVE_BY_EXPIRE)
@@ -4483,9 +4480,6 @@ void AuraEffect::HandleAuraDummy(AuraApplication const* aurApp, uint8 mode, bool
target->ToPlayer()->LeaveBattleground();
break;
}
- case 42783: // Wrath of the Astromancer
- target->CastSpell(target, GetAmount(), this);
- break;
case 46308: // Burning Winds cast only at creatures at spawn
target->CastSpell(target, 47287, this);
break;
diff --git a/src/server/scripts/Outland/TempestKeep/Eye/boss_kaelthas.cpp b/src/server/scripts/Outland/TempestKeep/Eye/boss_kaelthas.cpp
index 2faa06cc8c1..921f594fdb0 100644
--- a/src/server/scripts/Outland/TempestKeep/Eye/boss_kaelthas.cpp
+++ b/src/server/scripts/Outland/TempestKeep/Eye/boss_kaelthas.cpp
@@ -27,6 +27,7 @@ EndScriptData */
#include "InstanceScript.h"
#include "MotionMaster.h"
#include "ObjectAccessor.h"
+#include "Player.h"
#include "ScriptedCreature.h"
#include "Spell.h"
#include "SpellInfo.h"
@@ -86,9 +87,7 @@ enum Spells
// Phase 4 spells
SPELL_FIREBALL = 36805,
SPELL_PYROBLAST = 36819,
- SPELL_FLAME_STRIKE = 36735,
- SPELL_FLAME_STRIKE_VIS = 36730,
- SPELL_FLAME_STRIKE_DMG = 36731,
+ SPELL_SUMMON_FLAME_STRIKE = 36735,
SPELL_ARCANE_DISRUPTION = 36834,
SPELL_SHOCK_BARRIER = 36815,
SPELL_PHOENIX_ANIMATION = 36723,
@@ -145,6 +144,16 @@ enum Spells
SPELL_GRAVITY_LAPSE_TELE_CASTER_RIGHT2 = 35989,
SPELL_GRAVITY_LAPSE_TELE_CASTER_BACK_RIGHT3 = 35990,
+ // Generic spells
+ SPELL_REMOVE_WEAPONS = 39497,
+ SPELL_REMOVE_WEAPONA = 39498,
+ SPELL_REMOVE_WEAPONB = 39499,
+ SPELL_REMOVE_WEAPONC = 39500,
+ SPELL_REMOVE_WEAPOND = 39501,
+ SPELL_REMOVE_WEAPONE = 39502,
+ SPELL_REMOVE_WEAPONF = 39503,
+ SPELL_REMOVE_WEAPONG = 39504,
+
// Thaladred the Darkener spells
SPELL_PSYCHIC_BLOW = 10689,
SPELL_SILENCE = 30225,
@@ -164,7 +173,11 @@ enum Spells
//Phoenix spell
SPELL_BURN = 36720,
SPELL_EMBER_BLAST = 34341,
- SPELL_REBIRTH = 41587
+ SPELL_REBIRTH = 41587,
+
+ // Flame Strike
+ SPELL_FLAME_STRIKE_DUMMY = 36730,
+ SPELL_FLAME_STRIKE_DAMAGE = 36731
};
enum Creatures
@@ -262,12 +275,18 @@ enum MovementPoints
POINT_END_TRANSITION = 6
};
-uint32 m_auiSpellSummonWeapon[]=
+uint32 const SummonWeaponsSpells[] =
{
SPELL_SUMMON_WEAPONA, SPELL_SUMMON_WEAPONB, SPELL_SUMMON_WEAPONC, SPELL_SUMMON_WEAPOND,
SPELL_SUMMON_WEAPONE, SPELL_SUMMON_WEAPONF, SPELL_SUMMON_WEAPONG
};
+uint32 const RemoveWeaponsSpells[] =
+{
+ SPELL_REMOVE_WEAPONA, SPELL_REMOVE_WEAPONB, SPELL_REMOVE_WEAPONC, SPELL_REMOVE_WEAPOND,
+ SPELL_REMOVE_WEAPONE, SPELL_REMOVE_WEAPONF, SPELL_REMOVE_WEAPONG
+};
+
uint32 GravityLapseSpells[] =
{
SPELL_GRAVITY_LAPSE_TELE_FRONT,
@@ -345,6 +364,7 @@ struct boss_kaelthas : public BossAI
void JustReachedHome() override
{
BossAI::JustReachedHome();
+ DoCastSelf(SPELL_REMOVE_WEAPONS);
// Rebuild the surrounding environment.
if (GameObject* statue = instance->GetGameObject(DATA_KAEL_STATUE_LEFT))
@@ -569,17 +589,9 @@ struct boss_kaelthas : public BossAI
++_advisorCounter;
break;
case EVENT_SUMMON_WEAPONS:
- {
- DoCast(me, SPELL_SUMMON_WEAPONS, false);
-
- uint8 uiMaxWeapon = sizeof(m_auiSpellSummonWeapon) / sizeof(uint32);
-
- for (uint32 i = 0; i < uiMaxWeapon; ++i)
- DoCast(me, m_auiSpellSummonWeapon[i], true);
-
+ DoCastSelf(SPELL_SUMMON_WEAPONS);
events.ScheduleEvent(EVENT_REVIVE_ADVISORS, 120s);
break;
- }
case EVENT_REVIVE_ADVISORS:
_phase = PHASE_REVIVED_ADVISORS;
Talk(SAY_PHASE3_ADVANCE);
@@ -609,7 +621,7 @@ struct boss_kaelthas : public BossAI
break;
case EVENT_FLAMESTRIKE:
if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0))
- DoCast(target, SPELL_FLAME_STRIKE);
+ DoCast(target, SPELL_SUMMON_FLAME_STRIKE);
events.ScheduleEvent(EVENT_FLAMESTRIKE, 30s, EVENT_GROUP_COMBAT, PHASE_COMBAT);
break;
@@ -1193,56 +1205,17 @@ struct boss_master_engineer_telonicus : public advisorbase_ai
struct npc_kael_flamestrike : public ScriptedAI
{
- npc_kael_flamestrike(Creature* creature) : ScriptedAI(creature)
- {
- Initialize();
- SetCombatMovement(false);
- }
+ npc_kael_flamestrike(Creature* creature) : ScriptedAI(creature) { }
- void Initialize()
- {
- Timer = 5000;
- Casting = false;
- KillSelf = false;
- }
-
- uint32 Timer;
- bool Casting;
- bool KillSelf;
-
- void Reset() override
+ void InitializeAI() override
{
- Initialize();
+ me->SetReactState(REACT_PASSIVE);
}
- void MoveInLineOfSight(Unit* /*who*/) override { }
-
- void JustEngagedWith(Unit* /*who*/) override { }
-
- void UpdateAI(uint32 diff) override
+ void JustAppeared() override
{
- if (!Casting)
- {
- DoCast(me, SPELL_FLAME_STRIKE_VIS);
- Casting = true;
- }
-
- //Timer
- if (Timer <= diff)
- {
- if (!KillSelf)
- {
- me->InterruptNonMeleeSpells(false);
- DoCast(me, SPELL_FLAME_STRIKE_DMG);
- }
- else
- me->KillSelf();
-
- KillSelf = true;
- Timer = 1000;
- }
- else
- Timer -= diff;
+ DoCastSelf(SPELL_FLAME_STRIKE_DUMMY);
+ me->DespawnOrUnsummon(15s);
}
};
@@ -1380,6 +1353,74 @@ private:
uint8 _targetCount;
};
+// 36730 - Flame Strike
+class spell_kaelthas_flame_strike : public AuraScript
+{
+ PrepareAuraScript(spell_kaelthas_flame_strike);
+
+ bool Validate(SpellInfo const* /*spellInfo*/) override
+ {
+ return ValidateSpellInfo({ SPELL_FLAME_STRIKE_DAMAGE });
+ }
+
+ void AfterRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
+ {
+ if (Unit* target = GetTarget())
+ target->CastSpell(target, SPELL_FLAME_STRIKE_DAMAGE);
+ }
+
+ void Register() override
+ {
+ AfterEffectRemove += AuraEffectRemoveFn(spell_kaelthas_flame_strike::AfterRemove, EFFECT_0, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL);
+ }
+};
+
+// 36976 - Summon Weapons
+class spell_kaelthas_summon_weapons : public SpellScript
+{
+ PrepareSpellScript(spell_kaelthas_summon_weapons);
+
+ bool Validate(SpellInfo const* /*spellInfo*/) override
+ {
+ return ValidateSpellInfo(SummonWeaponsSpells);
+ }
+
+ void HandleScript(SpellEffIndex /*effIndex*/)
+ {
+ if (Unit* caster = GetCaster())
+ for (uint32 spells : SummonWeaponsSpells)
+ caster->CastSpell(caster, spells, true);
+ }
+
+ void Register() override
+ {
+ OnEffectHitTarget += SpellEffectFn(spell_kaelthas_summon_weapons::HandleScript, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT);
+ }
+};
+
+// 39497 - Remove Enchanted Weapons
+class spell_kaelthas_remove_weapons : public SpellScript
+{
+ PrepareSpellScript(spell_kaelthas_remove_weapons);
+
+ bool Validate(SpellInfo const* /*spellInfo*/) override
+ {
+ return ValidateSpellInfo(RemoveWeaponsSpells);
+ }
+
+ void HandleScript(SpellEffIndex /*effIndex*/)
+ {
+ if (Player* player = GetHitPlayer())
+ for (uint32 spells : RemoveWeaponsSpells)
+ player->CastSpell(player, spells, TriggerCastFlags(TRIGGERED_FULL_MASK & ~TRIGGERED_IGNORE_POWER_AND_REAGENT_COST));
+ }
+
+ void Register() override
+ {
+ OnEffectHitTarget += SpellEffectFn(spell_kaelthas_remove_weapons::HandleScript, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT);
+ }
+};
+
void AddSC_boss_kaelthas()
{
RegisterTheEyeCreatureAI(boss_kaelthas);
@@ -1391,4 +1432,7 @@ void AddSC_boss_kaelthas()
RegisterTheEyeCreatureAI(npc_phoenix_tk);
RegisterTheEyeCreatureAI(npc_phoenix_egg_tk);
RegisterSpellScript(spell_kael_gravity_lapse);
+ RegisterSpellScript(spell_kaelthas_flame_strike);
+ RegisterSpellScript(spell_kaelthas_summon_weapons);
+ RegisterSpellScript(spell_kaelthas_remove_weapons);
}