diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/server/scripts/Northrend/AzjolNerub/Ahnkahet/ahnkahet.h | 1 | ||||
-rw-r--r-- | src/server/scripts/Northrend/AzjolNerub/Ahnkahet/boss_prince_taldaram.cpp | 657 |
2 files changed, 302 insertions, 356 deletions
diff --git a/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/ahnkahet.h b/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/ahnkahet.h index d508da97427..e0b70b3fa36 100644 --- a/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/ahnkahet.h +++ b/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/ahnkahet.h @@ -85,5 +85,6 @@ inline AI* GetAhnKahetAI(T* obj) } #define RegisterAhnKahetCreatureAI(ai_name) RegisterCreatureAIWithFactory(ai_name, GetAhnKahetAI) +#define RegisterAhnKahetGameObjectAI(ai_name) RegisterGameObjectAIWithFactory(ai_name, GetAhnKahetAI) #endif // AHNKAHET_H_ diff --git a/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/boss_prince_taldaram.cpp b/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/boss_prince_taldaram.cpp index cb8d8c1690b..b4c9312bf32 100644 --- a/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/boss_prince_taldaram.cpp +++ b/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/boss_prince_taldaram.cpp @@ -86,433 +86,378 @@ enum Events EVENT_DESPAWN }; -class boss_prince_taldaram : public CreatureScript +struct boss_prince_taldaram : public BossAI { - public: - boss_prince_taldaram() : CreatureScript("boss_prince_taldaram") { } - - struct boss_prince_taldaramAI : public BossAI + boss_prince_taldaram(Creature* creature) : BossAI(creature, DATA_PRINCE_TALDARAM) + { + me->SetDisableGravity(true); + _embraceTakenDamage = 0; + _initialCheckTimer = 3000; + } + + void Reset() override + { + _Reset(); + _flameSphereTargetGUID.Clear(); + _embraceTargetGUID.Clear(); + _embraceTakenDamage = 0; + + if (!CheckSpheres()) + me->SummonCreatureGroup(SUMMON_GROUP_CONTROLLERS); + } + + void JustEngagedWith(Unit* who) override + { + BossAI::JustEngagedWith(who); + Talk(SAY_AGGRO); + events.ScheduleEvent(EVENT_BLOODTHIRST, 10s); + events.ScheduleEvent(EVENT_VANISH, 25s, 35s); + events.ScheduleEvent(EVENT_CONJURE_FLAME_SPHERES, 5s); + } + + void JustSummoned(Creature* summon) override + { + BossAI::JustSummoned(summon); + + switch (summon->GetEntry()) { - boss_prince_taldaramAI(Creature* creature) : BossAI(creature, DATA_PRINCE_TALDARAM) - { - me->SetDisableGravity(true); - _embraceTakenDamage = 0; - _initialCheckTimer = 3000; - } + case NPC_FLAME_SPHERE_1: + case NPC_FLAME_SPHERE_2: + case NPC_FLAME_SPHERE_3: + summon->AI()->SetGUID(_flameSphereTargetGUID); + break; + case NPC_JEDOGA_CONTROLLER: + summon->CastSpell(me, SPELL_BEAM_VISUAL); + break; + default: + return; + } + } - void Reset() override + void UpdateAI(uint32 diff) override + { + if (_initialCheckTimer) + { + if (_initialCheckTimer <= diff) { - _Reset(); - _flameSphereTargetGUID.Clear(); - _embraceTargetGUID.Clear(); - _embraceTakenDamage = 0; - - if (!CheckSpheres()) - me->SummonCreatureGroup(SUMMON_GROUP_CONTROLLERS); + CheckSpheres(); + _initialCheckTimer = 0; } + else + _initialCheckTimer -= diff; + } - void JustEngagedWith(Unit* who) override + if (me->HasAura(SPELL_VANISH)) + { + if (me->GetThreatManager().IsThreatListEmpty(true)) { - BossAI::JustEngagedWith(who); - Talk(SAY_AGGRO); - events.ScheduleEvent(EVENT_BLOODTHIRST, 10s); - events.ScheduleEvent(EVENT_VANISH, 25s, 35s); - events.ScheduleEvent(EVENT_CONJURE_FLAME_SPHERES, 5s); + EnterEvadeMode(EVADE_REASON_NO_HOSTILES); + return; } + } + else + { + if (!UpdateVictim()) + return; + } - void JustSummoned(Creature* summon) override - { - BossAI::JustSummoned(summon); + events.Update(diff); - switch (summon->GetEntry()) - { - case NPC_FLAME_SPHERE_1: - case NPC_FLAME_SPHERE_2: - case NPC_FLAME_SPHERE_3: - summon->AI()->SetGUID(_flameSphereTargetGUID); - break; - case NPC_JEDOGA_CONTROLLER: - summon->CastSpell(me, SPELL_BEAM_VISUAL); - break; - default: - return; - } - } + if (me->HasUnitState(UNIT_STATE_CASTING)) + return; - void UpdateAI(uint32 diff) override + while (uint32 eventId = events.ExecuteEvent()) + { + switch (eventId) { - if (_initialCheckTimer) - { - if (_initialCheckTimer <= diff) - { - CheckSpheres(); - _initialCheckTimer = 0; - } - else - _initialCheckTimer -= diff; - } - - if (me->HasAura(SPELL_VANISH)) - { - if (me->GetThreatManager().IsThreatListEmpty(true)) + case EVENT_BLOODTHIRST: + DoCast(me, SPELL_BLOODTHIRST); + events.ScheduleEvent(EVENT_BLOODTHIRST, 10s); + break; + case EVENT_CONJURE_FLAME_SPHERES: + // random target? + if (Unit* victim = me->GetVictim()) { - EnterEvadeMode(EVADE_REASON_NO_HOSTILES); - return; + _flameSphereTargetGUID = victim->GetGUID(); + DoCast(victim, SPELL_CONJURE_FLAME_SPHERE); } - } - else - { - if (!UpdateVictim()) - return; - } - - events.Update(diff); - - if (me->HasUnitState(UNIT_STATE_CASTING)) - return; - - while (uint32 eventId = events.ExecuteEvent()) + events.ScheduleEvent(EVENT_CONJURE_FLAME_SPHERES, 15s); + break; + case EVENT_VANISH: { - switch (eventId) + if (me->GetThreatManager().GetThreatListSize() > 1) { - case EVENT_BLOODTHIRST: - DoCast(me, SPELL_BLOODTHIRST); - events.ScheduleEvent(EVENT_BLOODTHIRST, 10s); - break; - case EVENT_CONJURE_FLAME_SPHERES: - // random target? - if (Unit* victim = me->GetVictim()) - { - _flameSphereTargetGUID = victim->GetGUID(); - DoCast(victim, SPELL_CONJURE_FLAME_SPHERE); - } - events.ScheduleEvent(EVENT_CONJURE_FLAME_SPHERES, 15s); - break; - case EVENT_VANISH: - { - if (me->GetThreatManager().GetThreatListSize() > 1) - { - if (Unit* embraceTarget = SelectTarget(SelectTargetMethod::Random, 0, 100.0f, true)) - _embraceTargetGUID = embraceTarget->GetGUID(); - Talk(SAY_VANISH); - DoCast(me, SPELL_VANISH); - events.DelayEvents(500ms); - events.ScheduleEvent(EVENT_START_FEEDING, 2s); - } - events.ScheduleEvent(EVENT_VANISH, 25s, 35s); - break; - } - case EVENT_START_FEEDING: - me->RemoveAurasDueToSpell(SPELL_VANISH); - if (Unit* embraceTarget = GetEmbraceTarget()) - { - DoCast(embraceTarget, SPELL_SHADOWSTEP); - DoCast(embraceTarget, SPELL_EMBRACE_OF_THE_VAMPYR); - Talk(SAY_FEED); - events.ScheduleEvent(EVENT_DONE_FEEDING, 20s); - } - break; - case EVENT_DONE_FEEDING: - _embraceTargetGUID.Clear(); - break; - default: - break; + if (Unit* embraceTarget = SelectTarget(SelectTargetMethod::Random, 0, 100.0f, true)) + _embraceTargetGUID = embraceTarget->GetGUID(); + Talk(SAY_VANISH); + DoCast(me, SPELL_VANISH); + events.DelayEvents(500ms); + events.ScheduleEvent(EVENT_START_FEEDING, 2s); } - - if (me->HasUnitState(UNIT_STATE_CASTING)) - return; + events.ScheduleEvent(EVENT_VANISH, 25s, 35s); + break; } - - DoMeleeAttackIfReady(); - } - - void DamageTaken(Unit* /*doneBy*/, uint32& damage) override - { - Unit* embraceTarget = GetEmbraceTarget(); - - if (embraceTarget && embraceTarget->IsAlive()) - { - _embraceTakenDamage += damage; - if (_embraceTakenDamage > DUNGEON_MODE<uint32>(DATA_EMBRACE_DMG, H_DATA_EMBRACE_DMG)) + case EVENT_START_FEEDING: + me->RemoveAurasDueToSpell(SPELL_VANISH); + if (Unit* embraceTarget = GetEmbraceTarget()) { - _embraceTargetGUID.Clear(); - me->CastStop(); + DoCast(embraceTarget, SPELL_SHADOWSTEP); + DoCast(embraceTarget, SPELL_EMBRACE_OF_THE_VAMPYR); + Talk(SAY_FEED); + events.ScheduleEvent(EVENT_DONE_FEEDING, 20s); } - } - } - - void JustDied(Unit* /*killer*/) override - { - Talk(SAY_DEATH); - _JustDied(); - } - - void KilledUnit(Unit* victim) override - { - if (victim->GetTypeId() != TYPEID_PLAYER) - return; - - if (victim->GetGUID() == _embraceTargetGUID) + break; + case EVENT_DONE_FEEDING: _embraceTargetGUID.Clear(); - - Talk(SAY_SLAY); + break; + default: + break; } - bool CheckSpheres() - { - for (uint8 i = 0; i < 2; ++i) - if (!instance->GetData(DATA_SPHERE_1 + i)) - return false; - - RemovePrison(); - return true; - } + if (me->HasUnitState(UNIT_STATE_CASTING)) + return; + } - Unit* GetEmbraceTarget() - { - if (_embraceTargetGUID) - return ObjectAccessor::GetUnit(*me, _embraceTargetGUID); + DoMeleeAttackIfReady(); + } - return nullptr; - } + void DamageTaken(Unit* /*doneBy*/, uint32& damage) override + { + Unit* embraceTarget = GetEmbraceTarget(); - void RemovePrison() + if (embraceTarget && embraceTarget->IsAlive()) + { + _embraceTakenDamage += damage; + if (_embraceTakenDamage > DUNGEON_MODE<uint32>(DATA_EMBRACE_DMG, H_DATA_EMBRACE_DMG)) { - me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); - summons.DespawnEntry(NPC_JEDOGA_CONTROLLER); - me->RemoveAurasDueToSpell(SPELL_BEAM_VISUAL); - me->SetHomePosition(me->GetPositionX(), me->GetPositionY(), DATA_GROUND_POSITION_Z, me->GetOrientation()); - DoCast(SPELL_HOVER_FALL); - me->SetDisableGravity(false); - me->GetMotionMaster()->MoveLand(0, me->GetHomePosition()); - Talk(SAY_WARNING); - if (GameObject* platform = instance->GetGameObject(DATA_PRINCE_TALDARAM_PLATFORM)) - instance->HandleGameObject(platform->GetGUID(), true); + _embraceTargetGUID.Clear(); + me->CastStop(); } - - private: - ObjectGuid _flameSphereTargetGUID; - ObjectGuid _embraceTargetGUID; - uint32 _embraceTakenDamage; - uint32 _initialCheckTimer; - }; - - CreatureAI* GetAI(Creature* creature) const override - { - return GetAhnKahetAI<boss_prince_taldaramAI>(creature); } + } + + void JustDied(Unit* /*killer*/) override + { + Talk(SAY_DEATH); + _JustDied(); + } + + void KilledUnit(Unit* victim) override + { + if (victim->GetTypeId() != TYPEID_PLAYER) + return; + + if (victim->GetGUID() == _embraceTargetGUID) + _embraceTargetGUID.Clear(); + + Talk(SAY_SLAY); + } + + bool CheckSpheres() + { + for (uint8 i = 0; i < 2; ++i) + if (!instance->GetData(DATA_SPHERE_1 + i)) + return false; + + RemovePrison(); + return true; + } + + Unit* GetEmbraceTarget() + { + if (_embraceTargetGUID) + return ObjectAccessor::GetUnit(*me, _embraceTargetGUID); + + return nullptr; + } + + void RemovePrison() + { + me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); + summons.DespawnEntry(NPC_JEDOGA_CONTROLLER); + me->RemoveAurasDueToSpell(SPELL_BEAM_VISUAL); + me->SetHomePosition(me->GetPositionX(), me->GetPositionY(), DATA_GROUND_POSITION_Z, me->GetOrientation()); + DoCast(SPELL_HOVER_FALL); + me->SetDisableGravity(false); + me->GetMotionMaster()->MoveLand(0, me->GetHomePosition()); + Talk(SAY_WARNING); + if (GameObject* platform = instance->GetGameObject(DATA_PRINCE_TALDARAM_PLATFORM)) + instance->HandleGameObject(platform->GetGUID(), true); + } + +private: + ObjectGuid _flameSphereTargetGUID; + ObjectGuid _embraceTargetGUID; + uint32 _embraceTakenDamage; + uint32 _initialCheckTimer; }; // 30106, 31686, 31687 - Flame Sphere -class npc_prince_taldaram_flame_sphere : public CreatureScript +struct npc_prince_taldaram_flame_sphere : public ScriptedAI { - public: - npc_prince_taldaram_flame_sphere() : CreatureScript("npc_prince_taldaram_flame_sphere") { } - - struct npc_prince_taldaram_flame_sphereAI : public ScriptedAI + npc_prince_taldaram_flame_sphere(Creature* creature) : ScriptedAI(creature) + { + } + + void Reset() override + { + DoCast(me, SPELL_FLAME_SPHERE_SPAWN_EFFECT, true); + DoCast(me, SPELL_FLAME_SPHERE_VISUAL, true); + + _flameSphereTargetGUID.Clear(); + _events.Reset(); + _events.ScheduleEvent(EVENT_START_MOVE, 3s); + _events.ScheduleEvent(EVENT_DESPAWN, 13s); + } + + void SetGUID(ObjectGuid const& guid, int32 /*id*/) override + { + _flameSphereTargetGUID = guid; + } + + void JustEngagedWith(Unit* /*who*/) override { } + void MoveInLineOfSight(Unit* /*who*/) override { } + + void UpdateAI(uint32 diff) override + { + _events.Update(diff); + + while (uint32 eventId = _events.ExecuteEvent()) { - npc_prince_taldaram_flame_sphereAI(Creature* creature) : ScriptedAI(creature) - { - } - - void Reset() override - { - DoCast(me, SPELL_FLAME_SPHERE_SPAWN_EFFECT, true); - DoCast(me, SPELL_FLAME_SPHERE_VISUAL, true); - - _flameSphereTargetGUID.Clear(); - _events.Reset(); - _events.ScheduleEvent(EVENT_START_MOVE, 3s); - _events.ScheduleEvent(EVENT_DESPAWN, 13s); - } - - void SetGUID(ObjectGuid const& guid, int32 /*id*/) override + switch (eventId) { - _flameSphereTargetGUID = guid; - } - - void JustEngagedWith(Unit* /*who*/) override { } - void MoveInLineOfSight(Unit* /*who*/) override { } + case EVENT_START_MOVE: + { + DoCast(me, SPELL_FLAME_SPHERE_PERIODIC, true); - void UpdateAI(uint32 diff) override - { - _events.Update(diff); + /// @todo: find correct values + float angleOffset = 0.0f; + float distOffset = DATA_SPHERE_DISTANCE; - while (uint32 eventId = _events.ExecuteEvent()) - { - switch (eventId) + switch (me->GetEntry()) { - case EVENT_START_MOVE: - { - DoCast(me, SPELL_FLAME_SPHERE_PERIODIC, true); - - /// @todo: find correct values - float angleOffset = 0.0f; - float distOffset = DATA_SPHERE_DISTANCE; - - switch (me->GetEntry()) - { - case NPC_FLAME_SPHERE_1: - break; - case NPC_FLAME_SPHERE_2: - angleOffset = DATA_SPHERE_ANGLE_OFFSET; - break; - case NPC_FLAME_SPHERE_3: - angleOffset = -DATA_SPHERE_ANGLE_OFFSET; - break; - default: - return; - } - - Unit* sphereTarget = ObjectAccessor::GetUnit(*me, _flameSphereTargetGUID); - if (!sphereTarget) - return; - - float angle = me->GetAbsoluteAngle(sphereTarget) + angleOffset; - float x = me->GetPositionX() + distOffset * std::cos(angle); - float y = me->GetPositionY() + distOffset * std::sin(angle); - - /// @todo: correct speed - me->GetMotionMaster()->MovePoint(0, x, y, me->GetPositionZ()); + case NPC_FLAME_SPHERE_1: break; - } - case EVENT_DESPAWN: - DoCast(me, SPELL_FLAME_SPHERE_DEATH_EFFECT, true); - me->DespawnOrUnsummon(1s); + case NPC_FLAME_SPHERE_2: + angleOffset = DATA_SPHERE_ANGLE_OFFSET; break; - default: + case NPC_FLAME_SPHERE_3: + angleOffset = -DATA_SPHERE_ANGLE_OFFSET; break; + default: + return; } - } - } - private: - EventMap _events; - ObjectGuid _flameSphereTargetGUID; - }; + Unit* sphereTarget = ObjectAccessor::GetUnit(*me, _flameSphereTargetGUID); + if (!sphereTarget) + return; + + float angle = me->GetAbsoluteAngle(sphereTarget) + angleOffset; + float x = me->GetPositionX() + distOffset * std::cos(angle); + float y = me->GetPositionY() + distOffset * std::sin(angle); - CreatureAI* GetAI(Creature* creature) const override - { - return GetAhnKahetAI<npc_prince_taldaram_flame_sphereAI>(creature); + /// @todo: correct speed + me->GetMotionMaster()->MovePoint(0, x, y, me->GetPositionZ()); + break; + } + case EVENT_DESPAWN: + DoCast(me, SPELL_FLAME_SPHERE_DEATH_EFFECT, true); + me->DespawnOrUnsummon(1s); + break; + default: + break; + } } + } + +private: + EventMap _events; + ObjectGuid _flameSphereTargetGUID; }; // 193093, 193094 - Ancient Nerubian Device -class go_prince_taldaram_sphere : public GameObjectScript +struct go_prince_taldaram_sphere : public GameObjectAI { - public: - go_prince_taldaram_sphere() : GameObjectScript("go_prince_taldaram_sphere") { } + go_prince_taldaram_sphere(GameObject* go) : GameObjectAI(go), instance(go->GetInstanceScript()) { } - struct go_prince_taldaram_sphereAI : public GameObjectAI - { - go_prince_taldaram_sphereAI(GameObject* go) : GameObjectAI(go), instance(go->GetInstanceScript()) { } + InstanceScript* instance; - InstanceScript* instance; + bool OnGossipHello(Player* /*player*/) override + { + Creature* princeTaldaram = instance->GetCreature(DATA_PRINCE_TALDARAM); + if (princeTaldaram && princeTaldaram->IsAlive()) + { + me->SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE); + me->SetGoState(GO_STATE_ACTIVE); - bool OnGossipHello(Player* /*player*/) override + switch (me->GetEntry()) { - Creature* princeTaldaram = instance->GetCreature(DATA_PRINCE_TALDARAM); - if (princeTaldaram && princeTaldaram->IsAlive()) - { - me->SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE); - me->SetGoState(GO_STATE_ACTIVE); - - switch (me->GetEntry()) - { - case GO_SPHERE_1: - instance->SetData(DATA_SPHERE_1, IN_PROGRESS); - princeTaldaram->AI()->Talk(SAY_1); - break; - case GO_SPHERE_2: - instance->SetData(DATA_SPHERE_2, IN_PROGRESS); - princeTaldaram->AI()->Talk(SAY_1); - break; - } - - ENSURE_AI(boss_prince_taldaram::boss_prince_taldaramAI, princeTaldaram->AI())->CheckSpheres(); - } - return true; + case GO_SPHERE_1: + instance->SetData(DATA_SPHERE_1, IN_PROGRESS); + princeTaldaram->AI()->Talk(SAY_1); + break; + case GO_SPHERE_2: + instance->SetData(DATA_SPHERE_2, IN_PROGRESS); + princeTaldaram->AI()->Talk(SAY_1); + break; } - }; - GameObjectAI* GetAI(GameObject* go) const override - { - return GetAhnKahetAI<go_prince_taldaram_sphereAI>(go); + ENSURE_AI(boss_prince_taldaram, princeTaldaram->AI())->CheckSpheres(); } + return true; + } }; // 55931 - Conjure Flame Sphere -class spell_prince_taldaram_conjure_flame_sphere : public SpellScriptLoader +class spell_prince_taldaram_conjure_flame_sphere : public SpellScript { - public: - spell_prince_taldaram_conjure_flame_sphere() : SpellScriptLoader("spell_prince_taldaram_conjure_flame_sphere") { } - - class spell_prince_taldaram_conjure_flame_sphere_SpellScript : public SpellScript - { - PrepareSpellScript(spell_prince_taldaram_conjure_flame_sphere_SpellScript); - - bool Validate(SpellInfo const* /*spellInfo*/) override - { - return ValidateSpellInfo({ SPELL_FLAME_SPHERE_SUMMON_1, SPELL_FLAME_SPHERE_SUMMON_2, SPELL_FLAME_SPHERE_SUMMON_3 }); - } + PrepareSpellScript(spell_prince_taldaram_conjure_flame_sphere); - void HandleScript(SpellEffIndex /*effIndex*/) - { - Unit* caster = GetCaster(); - caster->CastSpell(caster, SPELL_FLAME_SPHERE_SUMMON_1, true); + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo({ SPELL_FLAME_SPHERE_SUMMON_1, SPELL_FLAME_SPHERE_SUMMON_2, SPELL_FLAME_SPHERE_SUMMON_3 }); + } - if (caster->GetMap()->IsHeroic()) - { - caster->CastSpell(caster, SPELL_FLAME_SPHERE_SUMMON_2, true); - caster->CastSpell(caster, SPELL_FLAME_SPHERE_SUMMON_3, true); - } - } + void HandleScript(SpellEffIndex /*effIndex*/) + { + Unit* caster = GetCaster(); + caster->CastSpell(caster, SPELL_FLAME_SPHERE_SUMMON_1, true); - void Register() override - { - OnEffectHitTarget += SpellEffectFn(spell_prince_taldaram_conjure_flame_sphere_SpellScript::HandleScript, EFFECT_0, SPELL_EFFECT_DUMMY); - } - }; - - SpellScript* GetSpellScript() const override + if (caster->GetMap()->IsHeroic()) { - return new spell_prince_taldaram_conjure_flame_sphere_SpellScript(); + caster->CastSpell(caster, SPELL_FLAME_SPHERE_SUMMON_2, true); + caster->CastSpell(caster, SPELL_FLAME_SPHERE_SUMMON_3, true); } + } + + void Register() override + { + OnEffectHitTarget += SpellEffectFn(spell_prince_taldaram_conjure_flame_sphere::HandleScript, EFFECT_0, SPELL_EFFECT_DUMMY); + } }; // 55895, 59511, 59512 - Flame Sphere Summon -class spell_prince_taldaram_flame_sphere_summon : public SpellScriptLoader +class spell_prince_taldaram_flame_sphere_summon : public SpellScript { - public: - spell_prince_taldaram_flame_sphere_summon() : SpellScriptLoader("spell_prince_taldaram_flame_sphere_summon") { } - - class spell_prince_taldaram_flame_sphere_summon_SpellScript : public SpellScript - { - PrepareSpellScript(spell_prince_taldaram_flame_sphere_summon_SpellScript); - - void SetDest(SpellDestination& dest) - { - Position offset = { 0.0f, 0.0f, 5.5f, 0.0f }; - dest.RelocateOffset(offset); - } - - void Register() override - { - OnDestinationTargetSelect += SpellDestinationTargetSelectFn(spell_prince_taldaram_flame_sphere_summon_SpellScript::SetDest, EFFECT_0, TARGET_DEST_CASTER); - } - }; - - SpellScript* GetSpellScript() const override - { - return new spell_prince_taldaram_flame_sphere_summon_SpellScript(); - } + PrepareSpellScript(spell_prince_taldaram_flame_sphere_summon); + + void SetDest(SpellDestination& dest) + { + Position offset = { 0.0f, 0.0f, 5.5f, 0.0f }; + dest.RelocateOffset(offset); + } + + void Register() override + { + OnDestinationTargetSelect += SpellDestinationTargetSelectFn(spell_prince_taldaram_flame_sphere_summon::SetDest, EFFECT_0, TARGET_DEST_CASTER); + } }; void AddSC_boss_taldaram() { - new boss_prince_taldaram(); - new npc_prince_taldaram_flame_sphere(); - new go_prince_taldaram_sphere(); - new spell_prince_taldaram_conjure_flame_sphere(); - new spell_prince_taldaram_flame_sphere_summon(); + RegisterAhnKahetCreatureAI(boss_prince_taldaram); + RegisterAhnKahetCreatureAI(npc_prince_taldaram_flame_sphere); + RegisterAhnKahetGameObjectAI(go_prince_taldaram_sphere); + RegisterSpellScript(spell_prince_taldaram_conjure_flame_sphere); + RegisterSpellScript(spell_prince_taldaram_flame_sphere_summon); } |