diff options
author | Jeremy <Golrag@users.noreply.github.com> | 2024-03-28 19:29:22 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-03-28 19:29:22 +0100 |
commit | be11f42a16d1fa0482e9572bf54e99e4dedd3c78 (patch) | |
tree | 3d33413d7ed5cada34d7ced7f430380731160d5b /src/server/scripts/Northrend | |
parent | 78635f640ee3b632a487a50dcf492ae62c2a0933 (diff) |
Core/Battlegrounds: Move to scripts (#29799)
* Introduce new BattlegroundScript class for map/bg specific scripts
* Remove all sub, zone specific, battleground classes except Arena
* Move all bg zone scripts to new BattlegroundScripts class in script folder
* Remove ZoneScript from Battleground class
* Remove some unused hooks from Battleground
Diffstat (limited to 'src/server/scripts/Northrend')
5 files changed, 0 insertions, 649 deletions
diff --git a/src/server/scripts/Northrend/IsleOfConquest/boss_ioc_horde_alliance.cpp b/src/server/scripts/Northrend/IsleOfConquest/boss_ioc_horde_alliance.cpp deleted file mode 100644 index 77f5e53207e..00000000000 --- a/src/server/scripts/Northrend/IsleOfConquest/boss_ioc_horde_alliance.cpp +++ /dev/null @@ -1,123 +0,0 @@ -/* - * This file is part of the TrinityCore Project. See AUTHORS file for Copyright information - * - * This program is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License as published by the - * Free Software Foundation; either version 2 of the License, or (at your - * option) any later version. - * - * This program is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - * more details. - * - * You should have received a copy of the GNU General Public License along - * with this program. If not, see <http://www.gnu.org/licenses/>. - */ - -#include "ScriptMgr.h" -#include "BattlegroundIC.h" -#include "ScriptedCreature.h" - -enum BossSpells -{ - SPELL_BRUTAL_STRIKE = 58460, - SPELL_DAGGER_THROW = 67280, - SPELL_CRUSHING_LEAP = 68506, - SPELL_RAGE = 66776 -}; - -enum BossEvents -{ - EVENT_BRUTAL_STRIKE = 1, - EVENT_DAGGER_THROW = 2, - EVENT_CRUSHING_LEAP = 3, - EVENT_CHECK_RANGE = 4 -}; - -struct boss_ioc_horde_alliance : public ScriptedAI -{ - boss_ioc_horde_alliance(Creature* creature) : ScriptedAI(creature) { } - - void Reset() override - { - _events.Reset(); - - uint32 _npcGuard; - if (me->GetEntry() == NPC_HIGH_COMMANDER_HALFORD_WYRMBANE) - _npcGuard = NPC_SEVEN_TH_LEGION_INFANTRY; - else - _npcGuard = NPC_KOR_KRON_GUARD; - - std::list<Creature*> guardsList; - me->GetCreatureListWithEntryInGrid(guardsList, _npcGuard, 100.0f); - for (std::list<Creature*>::const_iterator itr = guardsList.begin(); itr != guardsList.end(); ++itr) - (*itr)->Respawn(); - }; - - void JustEngagedWith(Unit* /*who*/) override - { - _events.ScheduleEvent(EVENT_BRUTAL_STRIKE, 5s); - _events.ScheduleEvent(EVENT_DAGGER_THROW, 7s); - _events.ScheduleEvent(EVENT_CHECK_RANGE, 1s); - _events.ScheduleEvent(EVENT_CRUSHING_LEAP, 15s); - } - - void SpellHit(WorldObject* caster, SpellInfo const* /*spellInfo*/) override - { - Unit* unitCaster = caster->ToUnit(); - if (!unitCaster) - return; - - if (unitCaster->IsVehicle()) - Unit::Kill(me, unitCaster); - } - - void UpdateAI(uint32 diff) override - { - if (!UpdateVictim()) - return; - - _events.Update(diff); - - if (me->HasUnitState(UNIT_STATE_CASTING)) - return; - - while (uint32 eventId = _events.ExecuteEvent()) - { - switch (eventId) - { - case EVENT_BRUTAL_STRIKE: - DoCastVictim(SPELL_BRUTAL_STRIKE); - _events.ScheduleEvent(EVENT_BRUTAL_STRIKE, 5s); - break; - case EVENT_DAGGER_THROW: - if (Unit* target = SelectTarget(SelectTargetMethod::Random, 1)) - DoCast(target, SPELL_DAGGER_THROW); - _events.ScheduleEvent(EVENT_DAGGER_THROW, 7s); - break; - case EVENT_CRUSHING_LEAP: - DoCastVictim(SPELL_CRUSHING_LEAP); - _events.ScheduleEvent(EVENT_CRUSHING_LEAP, 25s); - break; - case EVENT_CHECK_RANGE: - if (me->GetDistance(me->GetHomePosition()) > 25.0f) - DoCast(me, SPELL_RAGE); - else - me->RemoveAurasDueToSpell(SPELL_RAGE); - _events.ScheduleEvent(EVENT_CHECK_RANGE, 1s); - break; - default: - break; - } - } - } - -private: - EventMap _events; -}; - -void AddSC_boss_ioc_horde_alliance() -{ - RegisterCreatureAI(boss_ioc_horde_alliance); -} diff --git a/src/server/scripts/Northrend/IsleOfConquest/isle_of_conquest.cpp b/src/server/scripts/Northrend/IsleOfConquest/isle_of_conquest.cpp deleted file mode 100644 index 1492335ce15..00000000000 --- a/src/server/scripts/Northrend/IsleOfConquest/isle_of_conquest.cpp +++ /dev/null @@ -1,392 +0,0 @@ -/* - * This file is part of the TrinityCore Project. See AUTHORS file for Copyright information - * - * This program is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License as published by the - * Free Software Foundation; either version 2 of the License, or (at your - * option) any later version. - * - * This program is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - * more details. - * - * You should have received a copy of the GNU General Public License along - * with this program. If not, see <http://www.gnu.org/licenses/>. - */ - -#include "ScriptMgr.h" -#include "BattlegroundIC.h" -#include "GameObject.h" -#include "GameObjectAI.h" -#include "Map.h" -#include "MotionMaster.h" -#include "ObjectAccessor.h" -#include "PassiveAI.h" -#include "Player.h" -#include "ScriptedCreature.h" -#include "SpellInfo.h" -#include "SpellScript.h" -#include "Vehicle.h" -#include "WorldStateMgr.h" - -// TO-DO: This should be done with SmartAI, but yet it does not correctly support vehicles's AIs. -// Even adding ReactState Passive we still have issues using SmartAI. - -struct npc_four_car_garage : public NullCreatureAI -{ - npc_four_car_garage(Creature* creature) : NullCreatureAI(creature) { } - - void PassengerBoarded(Unit* who, int8 /*seatId*/, bool apply) override - { - if (apply) - { - uint32 spellId = 0; - - switch (me->GetEntry()) - { - case NPC_DEMOLISHER: - spellId = SPELL_DRIVING_CREDIT_DEMOLISHER; - break; - case NPC_GLAIVE_THROWER_A: - case NPC_GLAIVE_THROWER_H: - spellId = SPELL_DRIVING_CREDIT_GLAIVE; - break; - case NPC_SIEGE_ENGINE_H: - case NPC_SIEGE_ENGINE_A: - spellId = SPELL_DRIVING_CREDIT_SIEGE; - break; - case NPC_CATAPULT: - spellId = SPELL_DRIVING_CREDIT_CATAPULT; - break; - default: - return; - } - - me->CastSpell(who, spellId, true); - } - } -}; - -enum Events -{ - EVENT_TALK = 1, - EVENT_DESPAWN -}; - -enum Texts -{ - SAY_ONBOARD = 0 -}; - -struct npc_ioc_gunship_captain : public ScriptedAI -{ - npc_ioc_gunship_captain(Creature* creature) : ScriptedAI(creature) { } - - void JustAppeared() override - { - DoCast(me, SPELL_SIMPLE_TELEPORT); - _events.ScheduleEvent(EVENT_TALK, 3s); - } - - void UpdateAI(uint32 diff) override - { - _events.Update(diff); - while (uint32 eventId = _events.ExecuteEvent()) - { - switch (eventId) - { - case EVENT_TALK: - _events.ScheduleEvent(EVENT_DESPAWN, 1s); - Talk(SAY_ONBOARD); - DoCast(me, SPELL_TELEPORT_VISUAL_ONLY); - break; - case EVENT_DESPAWN: - me->DespawnOrUnsummon(); - break; - default: - break; - } - } - } - -private: - EventMap _events; -}; - -struct npc_ioc_siege_engine : public ScriptedAI -{ - npc_ioc_siege_engine(Creature* creature) : ScriptedAI(creature) { } - - static constexpr uint32 SPELL_DAMAGED = 67323; - static constexpr uint32 VEHICLE_REC_ID = 514; - static constexpr int32 ACTION_REPAIRED = 1; - - void JustAppeared() override - { - me->RemoveVehicleKit(false); - DoCastSelf(SPELL_DAMAGED); - } - - void DoAction(int32 actionId) override - { - // there should be some moving involved first - if (actionId == ACTION_REPAIRED) - { - me->CreateVehicleKit(VEHICLE_REC_ID, me->GetEntry(), false); - me->GetVehicleKit()->InstallAllAccessories(false); - } - } -}; - -struct go_ioc_capturable_object : public GameObjectAI -{ - go_ioc_capturable_object(GameObject* go) : GameObjectAI(go) { } - - bool OnGossipHello(Player* player) override - { - if (me->GetGoState() != GO_STATE_READY || me->HasFlag(GO_FLAG_NOT_SELECTABLE)) - return true; - - if (ZoneScript* zonescript = me->GetZoneScript()) - { - zonescript->DoAction(ACTION_IOC_INTERACT_CAPTURABLE_OBJECT, player, me); - return false; - } - - return true; - } -}; - -struct go_ioc_contested_object : public go_ioc_capturable_object -{ - go_ioc_contested_object(GameObject* go) : go_ioc_capturable_object(go) { } - - void Reset() override - { - go_ioc_capturable_object::Reset(); - _scheduler.Schedule(1min, [&](TaskContext) - { - if (ZoneScript* zonescript = me->GetZoneScript()) - zonescript->DoAction(ACTION_IOC_CAPTURE_CAPTURABLE_OBJECT, me, me); - }); - } - - void UpdateAI(uint32 diff) override - { - _scheduler.Update(diff); - } - -private: - TaskScheduler _scheduler; -}; - -// 67323 - Damaged -class spell_ioc_damaged : public AuraScript -{ - void HandleRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/) const - { - if (Creature const* creatureTarget = GetTarget()->ToCreature()) - if (UnitAI* ai = creatureTarget->GetAI()) - ai->DoAction(npc_ioc_siege_engine::ACTION_REPAIRED); - } - - void Register() override - { - OnEffectRemove += AuraEffectRemoveFn(spell_ioc_damaged::HandleRemove, EFFECT_0, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL); - } -}; - -// 66630 - Alliance Gunship Portal -// 66637 - Horde Gunship Portal -class spell_ioc_gunship_portal : public SpellScript -{ - bool Load() override - { - return GetCaster()->GetTypeId() == TYPEID_PLAYER; - } - - void HandleScript(SpellEffIndex /*effIndex*/) - { - Player* caster = GetCaster()->ToPlayer(); - /* - * HACK: GetWorldLocation() returns real position and not transportposition. - * ServertoClient: SMSG_MOVE_TELEPORT (0x0B39) - * counter: 45 - * Tranpsort Guid: Full: xxxx Type: MOTransport Low: xxx - * Transport Position X: 0 Y: 0 Z: 0 O: 0 - * Position: X: 7.305609 Y: -0.095246 Z: 34.51022 O: 0 - */ - caster->TeleportTo(GetHitCreature()->GetWorldLocation(), TELE_TO_NOT_LEAVE_TRANSPORT); - } - - void Register() override - { - OnEffectHitTarget += SpellEffectFn(spell_ioc_gunship_portal::HandleScript, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT); - } -}; - -// 66656 - Parachute -class spell_ioc_parachute_ic : public AuraScript -{ - void HandleTriggerSpell(AuraEffect const* /*aurEff*/) - { - PreventDefaultAction(); - if (Player* target = GetTarget()->ToPlayer()) - if (target->m_movementInfo.GetFallTime() > 2000 && !target->GetTransport()) - target->CastSpell(target, SPELL_PARACHUTE_IC, true); - } - - void Register() override - { - OnEffectPeriodic += AuraEffectPeriodicFn(spell_ioc_parachute_ic::HandleTriggerSpell, EFFECT_0, SPELL_AURA_PERIODIC_TRIGGER_SPELL); - } -}; - -class StartLaunchEvent : public BasicEvent -{ - public: - StartLaunchEvent(Position const& pos, ObjectGuid const& guid) : _pos(pos), _guid(guid) - { - } - - bool Execute(uint64 /*time*/, uint32 /*diff*/) override - { - Player* player = ObjectAccessor::FindPlayer(_guid); - if (!player || !player->GetVehicle()) - return true; - - player->AddAura(SPELL_LAUNCH_NO_FALLING_DAMAGE, player); // prevents falling damage - float speedZ = 10.0f; - float dist = player->GetExactDist2d(&_pos); - - player->ExitVehicle(); - player->GetMotionMaster()->MoveJump(_pos, dist, speedZ, EVENT_JUMP, true); - return true; - } - - private: - Position _pos; - ObjectGuid _guid; -}; - -// 66218 - Launch -class spell_ioc_launch : public SpellScript -{ - void Launch() - { - if (!GetCaster()->ToCreature() || !GetExplTargetDest()) - return; - - GetCaster()->ToCreature()->m_Events.AddEvent(new StartLaunchEvent(*GetExplTargetDest(), ASSERT_NOTNULL(GetHitPlayer())->GetGUID()), GetCaster()->ToCreature()->m_Events.CalculateTime(2500ms)); - } - - void Register() override - { - AfterHit += SpellHitFn(spell_ioc_launch::Launch); - } -}; - -enum SeaforiumBombSpells -{ - SPELL_SEAFORIUM_BLAST = 66676, - SPELL_HUGE_SEAFORIUM_BLAST = 66672, - SPELL_A_BOMB_INABLE_CREDIT = 68366, - SPELL_A_BOMB_INATION_CREDIT = 68367 -}; - -// 66672 - Huge Seaforium Blast -// 66676 - Seaforium Blast -class spell_ioc_seaforium_blast_credit : public SpellScript -{ - bool Validate(SpellInfo const* /*spellInfo*/) override - { - return ValidateSpellInfo({ SPELL_A_BOMB_INABLE_CREDIT, SPELL_A_BOMB_INATION_CREDIT }); - } - - void HandleAchievementCredit(SpellEffIndex /*effIndex*/) - { - uint32 _creditSpell = 0; - Unit* caster = GetOriginalCaster(); - if (!caster) - return; - - if (GetSpellInfo()->Id == SPELL_SEAFORIUM_BLAST) - _creditSpell = SPELL_A_BOMB_INABLE_CREDIT; - else if (GetSpellInfo()->Id == SPELL_HUGE_SEAFORIUM_BLAST) - _creditSpell = SPELL_A_BOMB_INATION_CREDIT; - - if (GetHitGObj() && GetHitGObj()->IsDestructibleBuilding()) - caster->CastSpell(caster, _creditSpell, true); - } - - void Register() override - { - OnEffectHitTarget += SpellEffectFn(spell_ioc_seaforium_blast_credit::HandleAchievementCredit, EFFECT_1, SPELL_EFFECT_GAMEOBJECT_DAMAGE); - } -}; - -class at_ioc_exploit : public AreaTriggerScript -{ -public: - at_ioc_exploit() : AreaTriggerScript("at_ioc_exploit") { } - - bool OnExit(Player* player, AreaTriggerEntry const* /*trigger*/) override - { - if (Battleground* battleground = player->GetBattleground()) - if (battleground->GetStatus() == STATUS_WAIT_JOIN) - battleground->TeleportPlayerToExploitLocation(player); - - return true; - } -}; - -class at_ioc_backdoor_job : public AreaTriggerScript -{ -public: - static constexpr uint32 AT_HORDE_KEEP = 5535; - static constexpr uint32 AT_ALLIANCE_KEEP = 5536; - - at_ioc_backdoor_job() : AreaTriggerScript("at_ioc_backdoor_job") { } - - bool OnTrigger(Player* player, AreaTriggerEntry const* trigger) override - { - /// @hack: this spell should be cast by npc 22515 (World Trigger) and not by the player - if (player->GetBGTeam() == HORDE && trigger->ID == AT_ALLIANCE_KEEP) - { - bool keepClosed = sWorldStateMgr->GetValue(BG_IC_GATE_EAST_A_WS_CLOSED, player->GetMap()) == 1 - && sWorldStateMgr->GetValue(BG_IC_GATE_WEST_A_WS_CLOSED, player->GetMap()) == 1 - && sWorldStateMgr->GetValue(BG_IC_GATE_FRONT_A_WS_CLOSED, player->GetMap()) == 1; - - if (keepClosed) - player->CastSpell(player, SPELL_BACK_DOOR_JOB_ACHIEVEMENT, true); - } - else if (player->GetBGTeam() == ALLIANCE && trigger->ID == AT_HORDE_KEEP) - { - bool keepClosed = sWorldStateMgr->GetValue(BG_IC_GATE_EAST_H_WS_CLOSED, player->GetMap()) == 1 - && sWorldStateMgr->GetValue(BG_IC_GATE_WEST_H_WS_CLOSED, player->GetMap()) == 1 - && sWorldStateMgr->GetValue(BG_IC_GATE_FRONT_H_WS_CLOSED, player->GetMap()) == 1; - - if (keepClosed) - player->CastSpell(player, SPELL_BACK_DOOR_JOB_ACHIEVEMENT, true); - } - - return true; - } -}; - -void AddSC_isle_of_conquest() -{ - RegisterCreatureAI(npc_four_car_garage); - RegisterCreatureAI(npc_ioc_gunship_captain); - RegisterCreatureAI(npc_ioc_siege_engine); - RegisterGameObjectAI(go_ioc_capturable_object); - RegisterGameObjectAI(go_ioc_contested_object); - RegisterSpellScript(spell_ioc_damaged); - RegisterSpellScript(spell_ioc_gunship_portal); - RegisterSpellScript(spell_ioc_parachute_ic); - RegisterSpellScript(spell_ioc_launch); - RegisterSpellScript(spell_ioc_seaforium_blast_credit); - new at_ioc_exploit(); - new at_ioc_backdoor_job(); -} diff --git a/src/server/scripts/Northrend/StrandOfTheAncients/strand_of_the_ancients.cpp b/src/server/scripts/Northrend/StrandOfTheAncients/strand_of_the_ancients.cpp deleted file mode 100644 index ed268327760..00000000000 --- a/src/server/scripts/Northrend/StrandOfTheAncients/strand_of_the_ancients.cpp +++ /dev/null @@ -1,87 +0,0 @@ -/* - * This file is part of the TrinityCore Project. See AUTHORS file for Copyright information - * - * This program is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License as published by the - * Free Software Foundation; either version 2 of the License, or (at your - * option) any later version. - * - * This program is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - * more details. - * - * You should have received a copy of the GNU General Public License along - * with this program. If not, see <http://www.gnu.org/licenses/>. - */ - -#include "ScriptMgr.h" -#include "BattlegroundSA.h" -#include "GameObject.h" -#include "GameObjectAI.h" -#include "Player.h" -#include "SpellScript.h" -#include "ZoneScript.h" - -// 191305 - Horde Banner -// 191306 - Alliance Banner -// 191307 - Horde Banner -// 191308 - Alliance Banner -// 191309 - Horde Banner -// 191310 - Alliance Banner -struct go_sota_capturable_object : public GameObjectAI -{ - go_sota_capturable_object(GameObject* go) : GameObjectAI(go) { } - - bool OnGossipHello(Player* player) override - { - if (me->GetGoState() != GO_STATE_READY || me->HasFlag(GO_FLAG_NOT_SELECTABLE)) - return true; - - if (ZoneScript* zonescript = me->GetZoneScript()) - { - zonescript->DoAction(ACTION_SOTA_CAPTURE_GRAVEYARD, player, me); - return false; - } - - return true; - } -}; - -// 52410 - Place Seaforium Charge -class spell_place_seaforium_charge : public SpellScript -{ - enum Spells - { - SPELL_PLACE_SEAFORIUM_CHARGE_HORDE = 226090, - SPELL_PLACE_SEAFORIUM_CHARGE_ALLIANCE = 226094 - }; - - bool Validate(SpellInfo const* /*spell*/) override - { - return ValidateSpellInfo({ SPELL_PLACE_SEAFORIUM_CHARGE_HORDE, SPELL_PLACE_SEAFORIUM_CHARGE_ALLIANCE }); - } - - void HandleDummy(SpellEffIndex /*effIndex*/) - { - if (Player* playerCaster = GetCaster()->ToPlayer()) - { - Team const team = playerCaster->GetBGTeam(); - if (team == ALLIANCE) - playerCaster->CastSpell(playerCaster, SPELL_PLACE_SEAFORIUM_CHARGE_ALLIANCE, true); - else if (team == HORDE) - playerCaster->CastSpell(playerCaster, SPELL_PLACE_SEAFORIUM_CHARGE_HORDE, true); - } - } - - void Register() override - { - OnEffectHit += SpellEffectFn(spell_place_seaforium_charge::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY); - } -}; - -void AddSC_strand_of_the_ancients() -{ - RegisterGameObjectAI(go_sota_capturable_object); - RegisterSpellScript(spell_place_seaforium_charge); -} diff --git a/src/server/scripts/Northrend/northrend_script_loader.cpp b/src/server/scripts/Northrend/northrend_script_loader.cpp index fe2514d804e..639aa223fa8 100644 --- a/src/server/scripts/Northrend/northrend_script_loader.cpp +++ b/src/server/scripts/Northrend/northrend_script_loader.cpp @@ -194,9 +194,6 @@ void AddSC_boss_baltharus_the_warborn(); void AddSC_boss_saviana_ragefire(); void AddSC_boss_general_zarithrian(); void AddSC_boss_halion(); -// Isle of Conquest -void AddSC_isle_of_conquest(); -void AddSC_boss_ioc_horde_alliance(); void AddSC_dalaran(); void AddSC_borean_tundra(); @@ -210,8 +207,6 @@ void AddSC_wintergrasp(); void AddSC_zuldrak(); void AddSC_crystalsong_forest(); -void AddSC_strand_of_the_ancients(); - // The name of this function should match: // void Add${NameOfDirectory}Scripts() void AddNorthrendScripts() @@ -394,9 +389,6 @@ void AddNorthrendScripts() AddSC_boss_saviana_ragefire(); AddSC_boss_general_zarithrian(); AddSC_boss_halion(); - // Isle of Conquest - AddSC_isle_of_conquest(); - AddSC_boss_ioc_horde_alliance(); AddSC_dalaran(); AddSC_borean_tundra(); @@ -408,6 +400,4 @@ void AddNorthrendScripts() AddSC_storm_peaks(); AddSC_wintergrasp(); AddSC_zuldrak(); - - AddSC_strand_of_the_ancients(); } diff --git a/src/server/scripts/Northrend/zone_dalaran.cpp b/src/server/scripts/Northrend/zone_dalaran.cpp index 46460521b6b..92fc14b2c64 100644 --- a/src/server/scripts/Northrend/zone_dalaran.cpp +++ b/src/server/scripts/Northrend/zone_dalaran.cpp @@ -24,7 +24,6 @@ SDCategory: Dalaran Script Data End */ #include "ScriptMgr.h" -#include "BattlegroundDS.h" #include "Containers.h" #include "DatabaseEnv.h" #include "Mail.h" @@ -254,44 +253,8 @@ private: EventMap events; }; -class at_ds_pipe_knockback : public AreaTriggerScript -{ -public: - at_ds_pipe_knockback() : AreaTriggerScript("at_ds_pipe_knockback") { } - - void Trigger(Player* player) const - { - if (Battleground* battleground = player->GetBattleground()) - { - if (battleground->GetStatus() != STATUS_IN_PROGRESS) - return; - - // Remove effects of Demonic Circle Summon - player->RemoveAurasDueToSpell(SPELL_WARL_DEMONIC_CIRCLE); - - // Someone has get back into the pipes and the knockback has already been performed, - // so we reset the knockback count for kicking the player again into the arena. - if (battleground->GetData(BG_DS_DATA_PIPE_KNOCKBACK_COUNT) >= BG_DS_PIPE_KNOCKBACK_TOTAL_COUNT) - battleground->SetData(BG_DS_DATA_PIPE_KNOCKBACK_COUNT, 0); - } - } - - bool OnTrigger(Player* player, AreaTriggerEntry const* /*trigger*/) override - { - Trigger(player); - return true; - } - - bool OnExit(Player* player, AreaTriggerEntry const* /*trigger*/) override - { - Trigger(player); - return true; - } -}; - void AddSC_dalaran() { RegisterCreatureAI(npc_mageguard_dalaran); RegisterCreatureAI(npc_minigob_manabonk); - new at_ds_pipe_knockback(); } |