refactor(Scripts/SCC): Update spell scripts to the new register model (#17726)

This commit is contained in:
Andrew
2023-11-16 14:01:13 -03:00
committed by GitHub
parent a5b5278929
commit 1f30a755dc
7 changed files with 330 additions and 678 deletions
@@ -78,13 +78,7 @@ const Position advisorsPosition[MAX_ADVISORS] =
struct boss_fathomlord_karathress : public BossAI
{
boss_fathomlord_karathress(Creature* creature) : BossAI(creature, DATA_FATHOM_LORD_KARATHRESS)
{
scheduler.SetValidator([this]
{
return !me->HasUnitState(UNIT_STATE_CASTING);
});
}
boss_fathomlord_karathress(Creature* creature) : BossAI(creature, DATA_FATHOM_LORD_KARATHRESS) { }
void Reset() override
{
@@ -192,7 +186,7 @@ struct boss_fathomguard_sharkkis : public ScriptedAI
{
_instance = creature->GetInstanceScript();
_scheduler.SetValidator([this]
scheduler.SetValidator([this]
{
return !me->HasUnitState(UNIT_STATE_CASTING);
});
@@ -202,7 +196,7 @@ struct boss_fathomguard_sharkkis : public ScriptedAI
void Reset() override
{
_scheduler.CancelAll();
scheduler.CancelAll();
summons.DespawnAll();
summons.clear();
@@ -220,7 +214,8 @@ struct boss_fathomguard_sharkkis : public ScriptedAI
{
karathress->Attack(who, false);
}
_scheduler.Schedule(2500ms, [this](TaskContext context)
scheduler.Schedule(2500ms, [this](TaskContext context)
{
DoCastRandomTarget(SPELL_HURL_TRIDENT);
context.Repeat(5s);
@@ -267,13 +262,12 @@ struct boss_fathomguard_sharkkis : public ScriptedAI
return;
}
_scheduler.Update(diff);
scheduler.Update(diff);
DoMeleeAttackIfReady();
}
private:
TaskScheduler _scheduler;
InstanceScript* _instance;
};
@@ -250,14 +250,9 @@ private:
bool _recentlySpoken;
};
class spell_hydross_cleansing_field_aura : public SpellScriptLoader
class spell_hydross_cleansing_field_aura : public AuraScript
{
public:
spell_hydross_cleansing_field_aura() : SpellScriptLoader("spell_hydross_cleansing_field_aura") { }
class spell_hydross_cleansing_field_aura_AuraScript : public AuraScript
{
PrepareAuraScript(spell_hydross_cleansing_field_aura_AuraScript)
PrepareAuraScript(spell_hydross_cleansing_field_aura);
void HandleEffectApply(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
{
@@ -275,25 +270,14 @@ public:
void Register() override
{
AfterEffectApply += AuraEffectApplyFn(spell_hydross_cleansing_field_aura_AuraScript::HandleEffectApply, EFFECT_0, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL);
AfterEffectRemove += AuraEffectRemoveFn(spell_hydross_cleansing_field_aura_AuraScript::HandleEffectRemove, EFFECT_0, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL);
AfterEffectApply += AuraEffectApplyFn(spell_hydross_cleansing_field_aura::HandleEffectApply, EFFECT_0, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL);
AfterEffectRemove += AuraEffectRemoveFn(spell_hydross_cleansing_field_aura::HandleEffectRemove, EFFECT_0, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL);
}
};
AuraScript* GetAuraScript() const override
class spell_hydross_cleansing_field_command : public AuraScript
{
return new spell_hydross_cleansing_field_aura_AuraScript();
}
};
class spell_hydross_cleansing_field_command : public SpellScriptLoader
{
public:
spell_hydross_cleansing_field_command() : SpellScriptLoader("spell_hydross_cleansing_field_command") { }
class spell_hydross_cleansing_field_command_AuraScript : public AuraScript
{
PrepareAuraScript(spell_hydross_cleansing_field_command_AuraScript)
PrepareAuraScript(spell_hydross_cleansing_field_command);
void HandleEffectRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
{
@@ -305,24 +289,13 @@ public:
void Register() override
{
AfterEffectRemove += AuraEffectApplyFn(spell_hydross_cleansing_field_command_AuraScript::HandleEffectRemove, EFFECT_0, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL);
AfterEffectRemove += AuraEffectApplyFn(spell_hydross_cleansing_field_command::HandleEffectRemove, EFFECT_0, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL);
}
};
AuraScript* GetAuraScript() const override
class spell_hydross_mark_of_hydross : public AuraScript
{
return new spell_hydross_cleansing_field_command_AuraScript();
}
};
class spell_hydross_mark_of_hydross : public SpellScriptLoader
{
public:
spell_hydross_mark_of_hydross() : SpellScriptLoader("spell_hydross_mark_of_hydross") { }
class spell_hydross_mark_of_hydross_AuraScript : public AuraScript
{
PrepareAuraScript(spell_hydross_mark_of_hydross_AuraScript)
PrepareAuraScript(spell_hydross_mark_of_hydross);
void HandleEffectApply(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
{
@@ -331,20 +304,14 @@ public:
void Register() override
{
OnEffectApply += AuraEffectApplyFn(spell_hydross_mark_of_hydross_AuraScript::HandleEffectApply, EFFECT_0, SPELL_AURA_MOD_DAMAGE_PERCENT_TAKEN, AURA_EFFECT_HANDLE_REAL);
}
};
AuraScript* GetAuraScript() const override
{
return new spell_hydross_mark_of_hydross_AuraScript();
OnEffectApply += AuraEffectApplyFn(spell_hydross_mark_of_hydross::HandleEffectApply, EFFECT_0, SPELL_AURA_MOD_DAMAGE_PERCENT_TAKEN, AURA_EFFECT_HANDLE_REAL);
}
};
void AddSC_boss_hydross_the_unstable()
{
RegisterSerpentShrineAI(boss_hydross_the_unstable);
new spell_hydross_cleansing_field_aura();
new spell_hydross_cleansing_field_command();
new spell_hydross_mark_of_hydross();
RegisterSpellScript(spell_hydross_cleansing_field_aura);
RegisterSpellScript(spell_hydross_cleansing_field_command);
RegisterSpellScript(spell_hydross_mark_of_hydross);
}
@@ -286,116 +286,9 @@ private:
std::chrono::seconds _batTimer;
};
/*
//Toxic Sporebat
//Toxic Spores: Used in Phase 3 by the Spore Bats, it creates a contaminated green patch of ground, dealing about 2775-3225 nature damage every second to anyone who stands in it.
//deprecated -- adds do work
class npc_toxic_sporebat : public CreatureScript
class spell_lady_vashj_magic_barrier : public AuraScript
{
public:
npc_toxic_sporebat() : CreatureScript("npc_toxic_sporebat") { }
CreatureAI* GetAI(Creature* creature) const
{
return GetInstanceAI<npc_toxic_sporebatAI>(creature);
}
struct npc_toxic_sporebatAI : public ScriptedAI
{
npc_toxic_sporebatAI(Creature* creature) : ScriptedAI(creature)
{
instance = creature->GetInstanceScript();
EnterEvadeMode();
}
InstanceScript* instance;
uint32 MovementTimer;
uint32 ToxicSporeTimer;
uint32 BoltTimer;
uint32 CheckTimer;
void Reset()
{
me->SetDisableGravity(true);
me->SetFaction(FACTION_MONSTER);
MovementTimer = 0;
ToxicSporeTimer = 5000;
BoltTimer = 5500;
CheckTimer = 1000;
}
void MoveInLineOfSight(Unit* who)
{
}
void MovementInform(uint32 type, uint32 id)
{
if (type != POINT_MOTION_TYPE)
return;
if (id == 1)
MovementTimer = 0;
}
void UpdateAI(uint32 diff)
{
// Random movement
if (MovementTimer <= diff)
{
uint32 rndpos = rand()%8;
me->GetMotionMaster()->MovePoint(1, SporebatWPPos[rndpos][0], SporebatWPPos[rndpos][1], SporebatWPPos[rndpos][2]);
MovementTimer = 6000;
} else MovementTimer -= diff;
// toxic spores
if (BoltTimer <= diff)
{
if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0))
{
if (Creature* trig = me->SummonCreature(TOXIC_SPORES_TRIGGER, target->GetPositionX(), target->GetPositionY(), target->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN, 30000))
{
trig->SetFaction(FACTION_MONSTER);
trig->CastSpell(trig, SPELL_TOXIC_SPORES, true);
}
}
BoltTimer = 10000+rand()%5000;
}
else BoltTimer -= diff;
// CheckTimer
if (CheckTimer <= diff)
{
// check if vashj is death
Unit* Vashj = ObjectAccessor::GetUnit(*me, instance->GetGuidData(DATA_LADYVASHJ));
if (!Vashj || !Vashj->IsAlive() || CAST_AI(boss_lady_vashj::boss_lady_vashjAI, Vashj->ToCreature()->AI())->Phase != 3)
{
// remove
me->setDeathState(DeathState::Dead);
me->RemoveCorpse();
me->SetFaction(FACTION_FRIENDLY);
}
CheckTimer = 1000;
}
else
CheckTimer -= diff;
}
};
};
*/
class spell_lady_vashj_magic_barrier : public SpellScriptLoader
{
public:
spell_lady_vashj_magic_barrier() : SpellScriptLoader("spell_lady_vashj_magic_barrier") { }
class spell_lady_vashj_magic_barrier_AuraScript : public AuraScript
{
PrepareAuraScript(spell_lady_vashj_magic_barrier_AuraScript)
PrepareAuraScript(spell_lady_vashj_magic_barrier);
void HandleEffectRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
{
@@ -404,24 +297,13 @@ public:
void Register() override
{
AfterEffectRemove += AuraEffectRemoveFn(spell_lady_vashj_magic_barrier_AuraScript::HandleEffectRemove, EFFECT_0, SPELL_AURA_SCHOOL_IMMUNITY, AURA_EFFECT_HANDLE_REAL);
AfterEffectRemove += AuraEffectRemoveFn(spell_lady_vashj_magic_barrier::HandleEffectRemove, EFFECT_0, SPELL_AURA_SCHOOL_IMMUNITY, AURA_EFFECT_HANDLE_REAL);
}
};
AuraScript* GetAuraScript() const override
class spell_lady_vashj_remove_tainted_cores : public SpellScript
{
return new spell_lady_vashj_magic_barrier_AuraScript();
}
};
class spell_lady_vashj_remove_tainted_cores : public SpellScriptLoader
{
public:
spell_lady_vashj_remove_tainted_cores() : SpellScriptLoader("spell_lady_vashj_remove_tainted_cores") { }
class spell_lady_vashj_remove_tainted_cores_SpellScript : public SpellScript
{
PrepareSpellScript(spell_lady_vashj_remove_tainted_cores_SpellScript);
PrepareSpellScript(spell_lady_vashj_remove_tainted_cores);
void HandleScriptEffect(SpellEffIndex effIndex)
{
@@ -434,24 +316,13 @@ public:
void Register() override
{
OnEffectHitTarget += SpellEffectFn(spell_lady_vashj_remove_tainted_cores_SpellScript::HandleScriptEffect, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT);
OnEffectHitTarget += SpellEffectFn(spell_lady_vashj_remove_tainted_cores::HandleScriptEffect, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT);
}
};
SpellScript* GetSpellScript() const override
class spell_lady_vashj_summon_sporebat : public SpellScript
{
return new spell_lady_vashj_remove_tainted_cores_SpellScript();
}
};
class spell_lady_vashj_summon_sporebat : public SpellScriptLoader
{
public:
spell_lady_vashj_summon_sporebat() : SpellScriptLoader("spell_lady_vashj_summon_sporebat") { }
class spell_lady_vashj_summon_sporebat_SpellScript : public SpellScript
{
PrepareSpellScript(spell_lady_vashj_summon_sporebat_SpellScript);
PrepareSpellScript(spell_lady_vashj_summon_sporebat);
void HandleScriptEffect(SpellEffIndex effIndex)
{
@@ -461,24 +332,13 @@ public:
void Register() override
{
OnEffectHitTarget += SpellEffectFn(spell_lady_vashj_summon_sporebat_SpellScript::HandleScriptEffect, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT);
OnEffectHitTarget += SpellEffectFn(spell_lady_vashj_summon_sporebat::HandleScriptEffect, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT);
}
};
SpellScript* GetSpellScript() const override
class spell_lady_vashj_spore_drop_effect : public SpellScript
{
return new spell_lady_vashj_summon_sporebat_SpellScript();
}
};
class spell_lady_vashj_spore_drop_effect : public SpellScriptLoader
{
public:
spell_lady_vashj_spore_drop_effect() : SpellScriptLoader("spell_lady_vashj_spore_drop_effect") { }
class spell_lady_vashj_spore_drop_effect_SpellScript : public SpellScript
{
PrepareSpellScript(spell_lady_vashj_spore_drop_effect_SpellScript);
PrepareSpellScript(spell_lady_vashj_spore_drop_effect);
void HandleScriptEffect(SpellEffIndex effIndex)
{
@@ -491,21 +351,15 @@ public:
void Register() override
{
OnEffectHitTarget += SpellEffectFn(spell_lady_vashj_spore_drop_effect_SpellScript::HandleScriptEffect, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT);
}
};
SpellScript* GetSpellScript() const override
{
return new spell_lady_vashj_spore_drop_effect_SpellScript();
OnEffectHitTarget += SpellEffectFn(spell_lady_vashj_spore_drop_effect::HandleScriptEffect, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT);
}
};
void AddSC_boss_lady_vashj()
{
RegisterSerpentShrineAI(boss_lady_vashj);
new spell_lady_vashj_magic_barrier();
new spell_lady_vashj_remove_tainted_cores();
new spell_lady_vashj_summon_sporebat();
new spell_lady_vashj_spore_drop_effect();
RegisterSpellScript(spell_lady_vashj_magic_barrier);
RegisterSpellScript(spell_lady_vashj_remove_tainted_cores);
RegisterSpellScript(spell_lady_vashj_summon_sporebat);
RegisterSpellScript(spell_lady_vashj_spore_drop_effect);
}
@@ -227,12 +227,10 @@ struct npc_inner_demon : public ScriptedAI
{
npc_inner_demon(Creature* creature) : ScriptedAI(creature)
{
_scheduler.SetValidator([this]
scheduler.SetValidator([this]
{
return !me->HasUnitState(UNIT_STATE_CASTING);
});
_instance = creature->GetInstanceScript();
}
void IsSummonedBy(WorldObject* summoner) override
@@ -247,8 +245,8 @@ struct npc_inner_demon : public ScriptedAI
me->Attack(affectedPlayer, true);
}
_scheduler.CancelAll();
_scheduler.Schedule(4s, [this](TaskContext context)
scheduler.CancelAll();
scheduler.Schedule(4s, [this](TaskContext context)
{
DoCastVictim(SPELL_SHADOW_BOLT);
context.Repeat(6s);
@@ -283,24 +281,17 @@ struct npc_inner_demon : public ScriptedAI
return;
}
_scheduler.Update(diff);
scheduler.Update(diff);
DoMeleeAttackIfReady();
}
private:
TaskScheduler _scheduler;
InstanceScript* _instance;
ObjectGuid _affectedPlayerGUID;
};
class spell_leotheras_whirlwind : public SpellScriptLoader
class spell_leotheras_whirlwind : public SpellScript
{
public:
spell_leotheras_whirlwind() : SpellScriptLoader("spell_leotheras_whirlwind") { }
class spell_leotheras_whirlwind_SpellScript : public SpellScript
{
PrepareSpellScript(spell_leotheras_whirlwind_SpellScript);
PrepareSpellScript(spell_leotheras_whirlwind);
void HandleScriptEffect(SpellEffIndex effIndex)
{
@@ -314,24 +305,13 @@ public:
void Register() override
{
OnEffectHitTarget += SpellEffectFn(spell_leotheras_whirlwind_SpellScript::HandleScriptEffect, EFFECT_2, SPELL_EFFECT_SCRIPT_EFFECT);
OnEffectHitTarget += SpellEffectFn(spell_leotheras_whirlwind::HandleScriptEffect, EFFECT_2, SPELL_EFFECT_SCRIPT_EFFECT);
}
};
SpellScript* GetSpellScript() const override
class spell_leotheras_chaos_blast : public SpellScript
{
return new spell_leotheras_whirlwind_SpellScript();
}
};
class spell_leotheras_chaos_blast : public SpellScriptLoader
{
public:
spell_leotheras_chaos_blast() : SpellScriptLoader("spell_leotheras_chaos_blast") { }
class spell_leotheras_chaos_blast_SpellScript : public SpellScript
{
PrepareSpellScript(spell_leotheras_chaos_blast_SpellScript);
PrepareSpellScript(spell_leotheras_chaos_blast);
void HandleDummy(SpellEffIndex effIndex)
{
@@ -342,24 +322,13 @@ public:
void Register() override
{
OnEffectHitTarget += SpellEffectFn(spell_leotheras_chaos_blast_SpellScript::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY);
OnEffectHitTarget += SpellEffectFn(spell_leotheras_chaos_blast::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY);
}
};
SpellScript* GetSpellScript() const override
class spell_leotheras_insidious_whisper : public SpellScript
{
return new spell_leotheras_chaos_blast_SpellScript();
}
};
class spell_leotheras_insidious_whisper : public SpellScriptLoader
{
public:
spell_leotheras_insidious_whisper() : SpellScriptLoader("spell_leotheras_insidious_whisper") { }
class spell_leotheras_insidious_whisper_SpellScript : public SpellScript
{
PrepareSpellScript(spell_leotheras_insidious_whisper_SpellScript);
PrepareSpellScript(spell_leotheras_insidious_whisper);
void FilterTargets(std::list<WorldObject*>& unitList)
{
@@ -371,18 +340,13 @@ public:
void Register() override
{
OnObjectAreaTargetSelect += SpellObjectAreaTargetSelectFn(spell_leotheras_insidious_whisper_SpellScript::FilterTargets, EFFECT_0, TARGET_UNIT_SRC_AREA_ENEMY);
OnObjectAreaTargetSelect += SpellObjectAreaTargetSelectFn(spell_leotheras_insidious_whisper::FilterTargets, EFFECT_0, TARGET_UNIT_SRC_AREA_ENEMY);
}
};
SpellScript* GetSpellScript() const override
class spell_leotheras_insidious_whisper_aura : public AuraScript
{
return new spell_leotheras_insidious_whisper_SpellScript();
}
class spell_leotheras_insidious_whisper_AuraScript : public AuraScript
{
PrepareAuraScript(spell_leotheras_insidious_whisper_AuraScript)
PrepareAuraScript(spell_leotheras_insidious_whisper_aura);
void HandleEffectApply(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
{
@@ -405,25 +369,14 @@ public:
void Register() override
{
AfterEffectApply += AuraEffectApplyFn(spell_leotheras_insidious_whisper_AuraScript::HandleEffectApply, EFFECT_0, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL);
AfterEffectRemove += AuraEffectRemoveFn(spell_leotheras_insidious_whisper_AuraScript::HandleEffectRemove, EFFECT_0, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL);
AfterEffectApply += AuraEffectApplyFn(spell_leotheras_insidious_whisper_aura::HandleEffectApply, EFFECT_0, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL);
AfterEffectRemove += AuraEffectRemoveFn(spell_leotheras_insidious_whisper_aura::HandleEffectRemove, EFFECT_0, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL);
}
};
AuraScript* GetAuraScript() const override
class spell_leotheras_demon_link : public AuraScript
{
return new spell_leotheras_insidious_whisper_AuraScript();
}
};
class spell_leotheras_demon_link : public SpellScriptLoader
{
public:
spell_leotheras_demon_link() : SpellScriptLoader("spell_leotheras_demon_link") { }
class spell_leotheras_demon_link_AuraScript : public AuraScript
{
PrepareAuraScript(spell_leotheras_demon_link_AuraScript);
PrepareAuraScript(spell_leotheras_demon_link);
void OnPeriodic(AuraEffect const* aurEff)
{
@@ -436,24 +389,13 @@ public:
void Register() override
{
OnEffectPeriodic += AuraEffectPeriodicFn(spell_leotheras_demon_link_AuraScript::OnPeriodic, EFFECT_0, SPELL_AURA_PERIODIC_TRIGGER_SPELL);
OnEffectPeriodic += AuraEffectPeriodicFn(spell_leotheras_demon_link::OnPeriodic, EFFECT_0, SPELL_AURA_PERIODIC_TRIGGER_SPELL);
}
};
AuraScript* GetAuraScript() const override
class spell_leotheras_clear_consuming_madness : public SpellScript
{
return new spell_leotheras_demon_link_AuraScript();
}
};
class spell_leotheras_clear_consuming_madness : public SpellScriptLoader
{
public:
spell_leotheras_clear_consuming_madness() : SpellScriptLoader("spell_leotheras_clear_consuming_madness") { }
class spell_leotheras_clear_consuming_madness_SpellScript : public SpellScript
{
PrepareSpellScript(spell_leotheras_clear_consuming_madness_SpellScript);
PrepareSpellScript(spell_leotheras_clear_consuming_madness);
void HandleScriptEffect(SpellEffIndex effIndex)
{
@@ -466,13 +408,7 @@ public:
void Register() override
{
OnEffectHitTarget += SpellEffectFn(spell_leotheras_clear_consuming_madness_SpellScript::HandleScriptEffect, EFFECT_1, SPELL_EFFECT_SCRIPT_EFFECT);
}
};
SpellScript* GetSpellScript() const override
{
return new spell_leotheras_clear_consuming_madness_SpellScript();
OnEffectHitTarget += SpellEffectFn(spell_leotheras_clear_consuming_madness::HandleScriptEffect, EFFECT_1, SPELL_EFFECT_SCRIPT_EFFECT);
}
};
@@ -480,9 +416,9 @@ void AddSC_boss_leotheras_the_blind()
{
RegisterSerpentShrineAI(boss_leotheras_the_blind);
RegisterSerpentShrineAI(npc_inner_demon);
new spell_leotheras_whirlwind();
new spell_leotheras_chaos_blast();
new spell_leotheras_insidious_whisper();
new spell_leotheras_demon_link();
new spell_leotheras_clear_consuming_madness();
RegisterSpellScript(spell_leotheras_whirlwind);
RegisterSpellScript(spell_leotheras_chaos_blast);
RegisterSpellAndAuraScriptPair(spell_leotheras_insidious_whisper, spell_leotheras_insidious_whisper_aura);
RegisterSpellScript(spell_leotheras_demon_link);
RegisterSpellScript(spell_leotheras_clear_consuming_madness);
}
@@ -63,13 +63,7 @@ const Position positions[MAX_SUMMONS] =
struct boss_the_lurker_below : public BossAI
{
boss_the_lurker_below(Creature* creature) : BossAI(creature, DATA_THE_LURKER_BELOW)
{
scheduler.SetValidator([this]
{
return !me->HasUnitState(UNIT_STATE_CASTING);
});
}
boss_the_lurker_below(Creature* creature) : BossAI(creature, DATA_THE_LURKER_BELOW) { }
void Reset() override
{
@@ -226,14 +220,9 @@ public:
}
};
class spell_lurker_below_spout : public SpellScriptLoader
class spell_lurker_below_spout : public AuraScript
{
public:
spell_lurker_below_spout() : SpellScriptLoader("spell_lurker_below_spout") { }
class spell_lurker_below_spout_AuraScript : public AuraScript
{
PrepareAuraScript(spell_lurker_below_spout_AuraScript);
PrepareAuraScript(spell_lurker_below_spout);
void HandleEffectApply(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
{
@@ -260,15 +249,9 @@ public:
void Register() override
{
OnEffectApply += AuraEffectApplyFn(spell_lurker_below_spout_AuraScript::HandleEffectApply, EFFECT_0, SPELL_AURA_PERIODIC_TRIGGER_SPELL, AURA_EFFECT_HANDLE_REAL);
OnEffectRemove += AuraEffectRemoveFn(spell_lurker_below_spout_AuraScript::HandleEffectRemove, EFFECT_0, SPELL_AURA_PERIODIC_TRIGGER_SPELL, AURA_EFFECT_HANDLE_REAL);
OnEffectPeriodic += AuraEffectPeriodicFn(spell_lurker_below_spout_AuraScript::OnPeriodic, EFFECT_0, SPELL_AURA_PERIODIC_TRIGGER_SPELL);
}
};
AuraScript* GetAuraScript() const override
{
return new spell_lurker_below_spout_AuraScript();
OnEffectApply += AuraEffectApplyFn(spell_lurker_below_spout::HandleEffectApply, EFFECT_0, SPELL_AURA_PERIODIC_TRIGGER_SPELL, AURA_EFFECT_HANDLE_REAL);
OnEffectRemove += AuraEffectRemoveFn(spell_lurker_below_spout::HandleEffectRemove, EFFECT_0, SPELL_AURA_PERIODIC_TRIGGER_SPELL, AURA_EFFECT_HANDLE_REAL);
OnEffectPeriodic += AuraEffectPeriodicFn(spell_lurker_below_spout::OnPeriodic, EFFECT_0, SPELL_AURA_PERIODIC_TRIGGER_SPELL);
}
};
@@ -286,14 +269,9 @@ private:
Unit* _caster;
};
class spell_lurker_below_spout_cone : public SpellScriptLoader
class spell_lurker_below_spout_cone : public SpellScript
{
public:
spell_lurker_below_spout_cone() : SpellScriptLoader("spell_lurker_below_spout_cone") { }
class spell_lurker_below_spout_cone_SpellScript : public SpellScript
{
PrepareSpellScript(spell_lurker_below_spout_cone_SpellScript);
PrepareSpellScript(spell_lurker_below_spout_cone);
void FilterTargets(std::list<WorldObject*>& targets)
{
@@ -302,13 +280,7 @@ public:
void Register() override
{
OnObjectAreaTargetSelect += SpellObjectAreaTargetSelectFn(spell_lurker_below_spout_cone_SpellScript::FilterTargets, EFFECT_ALL, TARGET_UNIT_CONE_ENEMY_24);
}
};
SpellScript* GetSpellScript() const override
{
return new spell_lurker_below_spout_cone_SpellScript();
OnObjectAreaTargetSelect += SpellObjectAreaTargetSelectFn(spell_lurker_below_spout_cone::FilterTargets, EFFECT_ALL, TARGET_UNIT_CONE_ENEMY_24);
}
};
@@ -316,6 +288,6 @@ void AddSC_boss_the_lurker_below()
{
RegisterSerpentShrineAI(boss_the_lurker_below);
new go_strange_pool();
new spell_lurker_below_spout();
new spell_lurker_below_spout_cone();
RegisterSpellScript(spell_lurker_below_spout);
RegisterSpellScript(spell_lurker_below_spout_cone);
}
@@ -138,14 +138,9 @@ private:
bool _recentlySpoken;
};
class spell_morogrim_tidewalker_watery_grave : public SpellScriptLoader
class spell_morogrim_tidewalker_watery_grave : public SpellScript
{
public:
spell_morogrim_tidewalker_watery_grave() : SpellScriptLoader("spell_morogrim_tidewalker_watery_grave") { }
class spell_morogrim_tidewalker_watery_grave_SpellScript : public SpellScript
{
PrepareSpellScript(spell_morogrim_tidewalker_watery_grave_SpellScript);
PrepareSpellScript(spell_morogrim_tidewalker_watery_grave);
bool Load() override
{
@@ -163,27 +158,16 @@ public:
void Register() override
{
OnEffectHitTarget += SpellEffectFn(spell_morogrim_tidewalker_watery_grave_SpellScript::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY);
OnEffectHitTarget += SpellEffectFn(spell_morogrim_tidewalker_watery_grave::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY);
}
private:
uint8 _targetNumber;
};
SpellScript* GetSpellScript() const override
class spell_morogrim_tidewalker_water_globule_new_target : public SpellScript
{
return new spell_morogrim_tidewalker_watery_grave_SpellScript();
}
};
class spell_morogrim_tidewalker_water_globule_new_target : public SpellScriptLoader
{
public:
spell_morogrim_tidewalker_water_globule_new_target() : SpellScriptLoader("spell_morogrim_tidewalker_water_globule_new_target") { }
class spell_morogrim_tidewalker_water_globule_new_target_SpellScript : public SpellScript
{
PrepareSpellScript(spell_morogrim_tidewalker_water_globule_new_target_SpellScript);
PrepareSpellScript(spell_morogrim_tidewalker_water_globule_new_target);
void FilterTargets(std::list<WorldObject*>& unitList)
{
@@ -207,20 +191,14 @@ public:
void Register() override
{
OnObjectAreaTargetSelect += SpellObjectAreaTargetSelectFn(spell_morogrim_tidewalker_water_globule_new_target_SpellScript::FilterTargets, EFFECT_0, TARGET_UNIT_SRC_AREA_ENEMY);
OnEffectHitTarget += SpellEffectFn(spell_morogrim_tidewalker_water_globule_new_target_SpellScript::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY);
}
};
SpellScript* GetSpellScript() const override
{
return new spell_morogrim_tidewalker_water_globule_new_target_SpellScript();
OnObjectAreaTargetSelect += SpellObjectAreaTargetSelectFn(spell_morogrim_tidewalker_water_globule_new_target::FilterTargets, EFFECT_0, TARGET_UNIT_SRC_AREA_ENEMY);
OnEffectHitTarget += SpellEffectFn(spell_morogrim_tidewalker_water_globule_new_target::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY);
}
};
void AddSC_boss_morogrim_tidewalker()
{
RegisterSerpentShrineAI(boss_morogrim_tidewalker);
new spell_morogrim_tidewalker_watery_grave();
new spell_morogrim_tidewalker_water_globule_new_target();
RegisterSpellScript(spell_morogrim_tidewalker_watery_grave);
RegisterSpellScript(spell_morogrim_tidewalker_water_globule_new_target);
}
@@ -208,14 +208,9 @@ public:
}
};
class spell_serpentshrine_cavern_serpentshrine_parasite : public SpellScriptLoader
class spell_serpentshrine_cavern_serpentshrine_parasite : public AuraScript
{
public:
spell_serpentshrine_cavern_serpentshrine_parasite() : SpellScriptLoader("spell_serpentshrine_cavern_serpentshrine_parasite") { }
class spell_serpentshrine_cavern_serpentshrine_parasite_AuraScript : public AuraScript
{
PrepareAuraScript(spell_serpentshrine_cavern_serpentshrine_parasite_AuraScript)
PrepareAuraScript(spell_serpentshrine_cavern_serpentshrine_parasite);
void HandleEffectRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
{
@@ -225,24 +220,13 @@ public:
void Register() override
{
AfterEffectRemove += AuraEffectRemoveFn(spell_serpentshrine_cavern_serpentshrine_parasite_AuraScript::HandleEffectRemove, EFFECT_0, SPELL_AURA_PERIODIC_DAMAGE, AURA_EFFECT_HANDLE_REAL);
AfterEffectRemove += AuraEffectRemoveFn(spell_serpentshrine_cavern_serpentshrine_parasite::HandleEffectRemove, EFFECT_0, SPELL_AURA_PERIODIC_DAMAGE, AURA_EFFECT_HANDLE_REAL);
}
};
AuraScript* GetAuraScript() const override
class spell_serpentshrine_cavern_serpentshrine_parasite_trigger_aura : public AuraScript
{
return new spell_serpentshrine_cavern_serpentshrine_parasite_AuraScript();
}
};
class spell_serpentshrine_cavern_serpentshrine_parasite_trigger : public SpellScriptLoader
{
public:
spell_serpentshrine_cavern_serpentshrine_parasite_trigger() : SpellScriptLoader("spell_serpentshrine_cavern_serpentshrine_parasite_trigger") { }
class spell_serpentshrine_cavern_serpentshrine_parasite_trigger_AuraScript : public AuraScript
{
PrepareAuraScript(spell_serpentshrine_cavern_serpentshrine_parasite_trigger_AuraScript)
PrepareAuraScript(spell_serpentshrine_cavern_serpentshrine_parasite_trigger_aura);
void HandleEffectRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
{
@@ -252,18 +236,13 @@ public:
void Register() override
{
AfterEffectRemove += AuraEffectRemoveFn(spell_serpentshrine_cavern_serpentshrine_parasite_trigger_AuraScript::HandleEffectRemove, EFFECT_0, SPELL_AURA_PERIODIC_DAMAGE, AURA_EFFECT_HANDLE_REAL);
AfterEffectRemove += AuraEffectRemoveFn(spell_serpentshrine_cavern_serpentshrine_parasite_trigger_aura::HandleEffectRemove, EFFECT_0, SPELL_AURA_PERIODIC_DAMAGE, AURA_EFFECT_HANDLE_REAL);
}
};
AuraScript* GetAuraScript() const override
class spell_serpentshrine_cavern_serpentshrine_parasite_trigger : public SpellScript
{
return new spell_serpentshrine_cavern_serpentshrine_parasite_trigger_AuraScript();
}
class spell_serpentshrine_cavern_serpentshrine_parasite_trigger_SpellScript : public SpellScript
{
PrepareSpellScript(spell_serpentshrine_cavern_serpentshrine_parasite_trigger_SpellScript);
PrepareSpellScript(spell_serpentshrine_cavern_serpentshrine_parasite_trigger);
void HandleApplyAura(SpellEffIndex effIndex)
{
@@ -274,24 +253,13 @@ public:
void Register() override
{
OnEffectHitTarget += SpellEffectFn(spell_serpentshrine_cavern_serpentshrine_parasite_trigger_SpellScript::HandleApplyAura, EFFECT_0, SPELL_EFFECT_APPLY_AURA);
OnEffectHitTarget += SpellEffectFn(spell_serpentshrine_cavern_serpentshrine_parasite_trigger::HandleApplyAura, EFFECT_0, SPELL_EFFECT_APPLY_AURA);
}
};
SpellScript* GetSpellScript() const override
class spell_serpentshrine_cavern_infection : public AuraScript
{
return new spell_serpentshrine_cavern_serpentshrine_parasite_trigger_SpellScript();
}
};
class spell_serpentshrine_cavern_infection : public SpellScriptLoader
{
public:
spell_serpentshrine_cavern_infection() : SpellScriptLoader("spell_serpentshrine_cavern_infection") { }
class spell_serpentshrine_cavern_infection_AuraScript : public AuraScript
{
PrepareAuraScript(spell_serpentshrine_cavern_infection_AuraScript)
PrepareAuraScript(spell_serpentshrine_cavern_infection);
void HandleEffectRemove(AuraEffect const* aurEff, AuraEffectHandleModes /*mode*/)
{
@@ -307,24 +275,13 @@ public:
void Register() override
{
AfterEffectRemove += AuraEffectRemoveFn(spell_serpentshrine_cavern_infection_AuraScript::HandleEffectRemove, EFFECT_1, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL);
AfterEffectRemove += AuraEffectRemoveFn(spell_serpentshrine_cavern_infection::HandleEffectRemove, EFFECT_1, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL);
}
};
AuraScript* GetAuraScript() const override
class spell_serpentshrine_cavern_coilfang_water : public AuraScript
{
return new spell_serpentshrine_cavern_infection_AuraScript();
}
};
class spell_serpentshrine_cavern_coilfang_water : public SpellScriptLoader
{
public:
spell_serpentshrine_cavern_coilfang_water() : SpellScriptLoader("spell_serpentshrine_cavern_coilfang_water") { }
class spell_serpentshrine_cavern_coilfang_water_AuraScript : public AuraScript
{
PrepareAuraScript(spell_serpentshrine_cavern_coilfang_water_AuraScript)
PrepareAuraScript(spell_serpentshrine_cavern_coilfang_water);
void HandleEffectApply(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
{
@@ -368,25 +325,19 @@ public:
void Register() override
{
AfterEffectApply += AuraEffectApplyFn(spell_serpentshrine_cavern_coilfang_water_AuraScript::HandleEffectApply, EFFECT_0, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL);
AfterEffectRemove += AuraEffectRemoveFn(spell_serpentshrine_cavern_coilfang_water_AuraScript::HandleEffectRemove, EFFECT_0, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL);
AfterEffectApply += AuraEffectApplyFn(spell_serpentshrine_cavern_coilfang_water::HandleEffectApply, EFFECT_0, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL);
AfterEffectRemove += AuraEffectRemoveFn(spell_serpentshrine_cavern_coilfang_water::HandleEffectRemove, EFFECT_0, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL);
DoEffectCalcPeriodic += AuraEffectCalcPeriodicFn(spell_serpentshrine_cavern_coilfang_water_AuraScript::CalcPeriodic, EFFECT_0, SPELL_AURA_DUMMY);
OnEffectPeriodic += AuraEffectPeriodicFn(spell_serpentshrine_cavern_coilfang_water_AuraScript::HandlePeriodic, EFFECT_0, SPELL_AURA_DUMMY);
}
};
AuraScript* GetAuraScript() const override
{
return new spell_serpentshrine_cavern_coilfang_water_AuraScript();
DoEffectCalcPeriodic += AuraEffectCalcPeriodicFn(spell_serpentshrine_cavern_coilfang_water::CalcPeriodic, EFFECT_0, SPELL_AURA_DUMMY);
OnEffectPeriodic += AuraEffectPeriodicFn(spell_serpentshrine_cavern_coilfang_water::HandlePeriodic, EFFECT_0, SPELL_AURA_DUMMY);
}
};
void AddSC_instance_serpentshrine_cavern()
{
new instance_serpent_shrine();
new spell_serpentshrine_cavern_serpentshrine_parasite();
new spell_serpentshrine_cavern_serpentshrine_parasite_trigger();
new spell_serpentshrine_cavern_infection();
new spell_serpentshrine_cavern_coilfang_water();
RegisterSpellScript(spell_serpentshrine_cavern_serpentshrine_parasite);
RegisterSpellAndAuraScriptPair(spell_serpentshrine_cavern_serpentshrine_parasite_trigger, spell_serpentshrine_cavern_serpentshrine_parasite_trigger_aura);
RegisterSpellScript(spell_serpentshrine_cavern_infection);
RegisterSpellScript(spell_serpentshrine_cavern_coilfang_water);
}