aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/server/game/Battlegrounds/Zones/BattlegroundAB.cpp26
-rw-r--r--src/server/game/Battlegrounds/Zones/BattlegroundAB.h1
-rw-r--r--src/server/game/Battlegrounds/Zones/BattlegroundAV.cpp26
-rw-r--r--src/server/game/Battlegrounds/Zones/BattlegroundAV.h1
-rw-r--r--src/server/game/Battlegrounds/Zones/BattlegroundBE.cpp16
-rw-r--r--src/server/game/Battlegrounds/Zones/BattlegroundBE.h1
-rw-r--r--src/server/game/Battlegrounds/Zones/BattlegroundDS.cpp38
-rw-r--r--src/server/game/Battlegrounds/Zones/BattlegroundDS.h4
-rw-r--r--src/server/game/Battlegrounds/Zones/BattlegroundEY.cpp28
-rw-r--r--src/server/game/Battlegrounds/Zones/BattlegroundEY.h1
-rw-r--r--src/server/game/Battlegrounds/Zones/BattlegroundNA.cpp16
-rw-r--r--src/server/game/Battlegrounds/Zones/BattlegroundNA.h1
-rw-r--r--src/server/game/Battlegrounds/Zones/BattlegroundRL.cpp16
-rw-r--r--src/server/game/Battlegrounds/Zones/BattlegroundRL.h1
-rw-r--r--src/server/game/Battlegrounds/Zones/BattlegroundRV.cpp19
-rw-r--r--src/server/game/Battlegrounds/Zones/BattlegroundRV.h1
-rw-r--r--src/server/game/Battlegrounds/Zones/BattlegroundSA.cpp7
-rw-r--r--src/server/game/Battlegrounds/Zones/BattlegroundSA.h1
-rw-r--r--src/server/scripts/EasternKingdoms/AlteracValley/alterac_valley.cpp16
-rw-r--r--src/server/scripts/Northrend/zone_dalaran.cpp37
20 files changed, 71 insertions, 186 deletions
diff --git a/src/server/game/Battlegrounds/Zones/BattlegroundAB.cpp b/src/server/game/Battlegrounds/Zones/BattlegroundAB.cpp
index 24fd8729738..e3d532518a9 100644
--- a/src/server/game/Battlegrounds/Zones/BattlegroundAB.cpp
+++ b/src/server/game/Battlegrounds/Zones/BattlegroundAB.cpp
@@ -139,32 +139,6 @@ void BattlegroundAB::StartingEventOpenDoors()
TriggerGameEvent(AB_EVENT_START_BATTLE);
}
-void BattlegroundAB::HandleAreaTrigger(Player* player, uint32 trigger, bool entered)
-{
- switch (trigger)
- {
- case 6635: // Horde Start
- case 6634: // Alliance Start
- if (GetStatus() == STATUS_WAIT_JOIN && !entered)
- TeleportPlayerToExploitLocation(player);
- break;
- case 3948: // Arathi Basin Alliance Exit.
- case 3949: // Arathi Basin Horde Exit.
- case 3866: // Stables
- case 3869: // Gold Mine
- case 3867: // Farm
- case 3868: // Lumber Mill
- case 3870: // Black Smith
- case 4020: // Unk1
- case 4021: // Unk2
- case 4674: // Unk3
- //break;
- default:
- Battleground::HandleAreaTrigger(player, trigger, entered);
- break;
- }
-}
-
void BattlegroundAB::_CalculateTeamNodes(uint8& alliance, uint8& horde)
{
alliance = 0;
diff --git a/src/server/game/Battlegrounds/Zones/BattlegroundAB.h b/src/server/game/Battlegrounds/Zones/BattlegroundAB.h
index c5e3928bff3..45be094ba71 100644
--- a/src/server/game/Battlegrounds/Zones/BattlegroundAB.h
+++ b/src/server/game/Battlegrounds/Zones/BattlegroundAB.h
@@ -222,7 +222,6 @@ class BattlegroundAB : public Battleground
~BattlegroundAB();
void StartingEventOpenDoors() override;
- void HandleAreaTrigger(Player* source, uint32 trigger, bool entered) override;
bool SetupBattleground() override;
void Reset() override;
void EndBattleground(Team winner) override;
diff --git a/src/server/game/Battlegrounds/Zones/BattlegroundAV.cpp b/src/server/game/Battlegrounds/Zones/BattlegroundAV.cpp
index ce5a1023858..d4723737e64 100644
--- a/src/server/game/Battlegrounds/Zones/BattlegroundAV.cpp
+++ b/src/server/game/Battlegrounds/Zones/BattlegroundAV.cpp
@@ -450,32 +450,6 @@ void BattlegroundAV::RemovePlayer(Player* player, ObjectGuid /*guid*/, uint32 /*
player->RemoveAurasDueToSpell(AV_BUFF_ARMOR);
}
-void BattlegroundAV::HandleAreaTrigger(Player* player, uint32 trigger, bool entered)
-{
- switch (trigger)
- {
- case 6633: // Horde Start
- case 6632: // Alliance Start
- if (GetStatus() == STATUS_WAIT_JOIN && entered)
- TeleportPlayerToExploitLocation(player);
- break;
- case 95:
- case 2608:
- case 2606:
- case 3326:
- case 3327:
- case 3328:
- case 3329:
- case 3330:
- case 3331:
- //Source->Unmount();
- break;
- default:
- Battleground::HandleAreaTrigger(player, trigger, entered);
- break;
- }
-}
-
void BattlegroundAV::EventPlayerDestroyedPoint(GameObject* gameobject)
{
if (!gameobject)
diff --git a/src/server/game/Battlegrounds/Zones/BattlegroundAV.h b/src/server/game/Battlegrounds/Zones/BattlegroundAV.h
index 4e3a88d3bd2..767bdb80e20 100644
--- a/src/server/game/Battlegrounds/Zones/BattlegroundAV.h
+++ b/src/server/game/Battlegrounds/Zones/BattlegroundAV.h
@@ -558,7 +558,6 @@ class BattlegroundAV : public Battleground
void StartingEventOpenDoors() override;
void RemovePlayer(Player* player, ObjectGuid guid, uint32 team) override;
- void HandleAreaTrigger(Player* player, uint32 trigger, bool entered) override;
bool SetupBattleground() override;
/*general stuff*/
diff --git a/src/server/game/Battlegrounds/Zones/BattlegroundBE.cpp b/src/server/game/Battlegrounds/Zones/BattlegroundBE.cpp
index 9c6c7658824..1e6c57cdd27 100644
--- a/src/server/game/Battlegrounds/Zones/BattlegroundBE.cpp
+++ b/src/server/game/Battlegrounds/Zones/BattlegroundBE.cpp
@@ -64,22 +64,6 @@ void BattlegroundBE::StartingEventOpenDoors()
SpawnBGObject(i, 60);
}
-void BattlegroundBE::HandleAreaTrigger(Player* player, uint32 trigger, bool entered)
-{
- if (GetStatus() != STATUS_IN_PROGRESS)
- return;
-
- switch (trigger)
- {
- case 4538: // buff trigger?
- case 4539: // buff trigger?
- break;
- default:
- Battleground::HandleAreaTrigger(player, trigger, entered);
- break;
- }
-}
-
bool BattlegroundBE::SetupBattleground()
{
// gates
diff --git a/src/server/game/Battlegrounds/Zones/BattlegroundBE.h b/src/server/game/Battlegrounds/Zones/BattlegroundBE.h
index ec28b5e2bab..fb0d424829c 100644
--- a/src/server/game/Battlegrounds/Zones/BattlegroundBE.h
+++ b/src/server/game/Battlegrounds/Zones/BattlegroundBE.h
@@ -58,7 +58,6 @@ class BattlegroundBE : public Arena
void StartingEventCloseDoors() override;
void StartingEventOpenDoors() override;
- void HandleAreaTrigger(Player* source, uint32 trigger, bool entered) override;
bool SetupBattleground() override;
private:
diff --git a/src/server/game/Battlegrounds/Zones/BattlegroundDS.cpp b/src/server/game/Battlegrounds/Zones/BattlegroundDS.cpp
index 3041072c9c6..d0488b43b41 100644
--- a/src/server/game/Battlegrounds/Zones/BattlegroundDS.cpp
+++ b/src/server/game/Battlegrounds/Zones/BattlegroundDS.cpp
@@ -120,29 +120,6 @@ void BattlegroundDS::StartingEventOpenDoors()
player->RemoveAurasDueToSpell(SPELL_WARL_DEMONIC_CIRCLE);
}
-void BattlegroundDS::HandleAreaTrigger(Player* player, uint32 trigger, bool entered)
-{
- if (GetStatus() != STATUS_IN_PROGRESS)
- return;
-
- switch (trigger)
- {
- case 5347:
- case 5348:
- // 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 (_pipeKnockBackCount >= BG_DS_PIPE_KNOCKBACK_TOTAL_COUNT)
- _pipeKnockBackCount = 0;
- break;
- default:
- Battleground::HandleAreaTrigger(player, trigger, entered);
- break;
- }
-}
-
bool BattlegroundDS::SetupBattleground()
{
// gates
@@ -165,3 +142,18 @@ bool BattlegroundDS::SetupBattleground()
return true;
}
+
+void BattlegroundDS::SetData(uint32 dataId, uint32 value)
+{
+ Arena::SetData(dataId, value);
+ if (dataId == BG_DS_DATA_PIPE_KNOCKBACK_COUNT)
+ _pipeKnockBackCount = value;
+}
+
+uint32 BattlegroundDS::GetData(uint32 dataId) const
+{
+ if (dataId == BG_DS_DATA_PIPE_KNOCKBACK_COUNT)
+ return _pipeKnockBackCount;
+
+ return Arena::GetData(dataId);
+}
diff --git a/src/server/game/Battlegrounds/Zones/BattlegroundDS.h b/src/server/game/Battlegrounds/Zones/BattlegroundDS.h
index 74de658eca6..75ac2c3e498 100644
--- a/src/server/game/Battlegrounds/Zones/BattlegroundDS.h
+++ b/src/server/game/Battlegrounds/Zones/BattlegroundDS.h
@@ -78,6 +78,7 @@ inline constexpr Seconds BG_DS_WATERFALL_TIMER_MAX = 60s;
inline constexpr Seconds BG_DS_WATERFALL_WARNING_DURATION = 5s;
inline constexpr Seconds BG_DS_WATERFALL_DURATION = 30s;
inline constexpr Milliseconds BG_DS_WATERFALL_KNOCKBACK_TIMER = 1500ms;
+inline constexpr uint32 BG_DS_DATA_PIPE_KNOCKBACK_COUNT = 1;
enum BattlegroundDSEvents
{
@@ -98,9 +99,10 @@ class BattlegroundDS : public Arena
void StartingEventCloseDoors() override;
void StartingEventOpenDoors() override;
- void HandleAreaTrigger(Player* source, uint32 trigger, bool entered) override;
bool SetupBattleground() override;
+ void SetData(uint32 dataId, uint32 value) override;
+ uint32 GetData(uint32 dataId) const override;
private:
void PostUpdateImpl(uint32 diff) override;
diff --git a/src/server/game/Battlegrounds/Zones/BattlegroundEY.cpp b/src/server/game/Battlegrounds/Zones/BattlegroundEY.cpp
index c2b169a6859..f43d3d54023 100644
--- a/src/server/game/Battlegrounds/Zones/BattlegroundEY.cpp
+++ b/src/server/game/Battlegrounds/Zones/BattlegroundEY.cpp
@@ -354,34 +354,6 @@ void BattlegroundEY::OnFlagStateChange(GameObject* /*flagInBase*/, FlagState /*o
UpdateWorldState(NETHERSTORM_FLAG, AsUnderlyingType(newValue));
}
-void BattlegroundEY::HandleAreaTrigger(Player* player, uint32 trigger, bool entered)
-{
- if (!player->IsAlive()) //hack code, must be removed later
- return;
-
- switch (trigger)
- {
- case 4530: // Horde Start
- case 4531: // Alliance Start
- if (GetStatus() == STATUS_WAIT_JOIN && !entered)
- TeleportPlayerToExploitLocation(player);
- break;
- case 4512:
- case 4515:
- case 4517:
- case 4519:
- case 4568:
- case 4569:
- case 4570:
- case 4571:
- case 5866:
- break;
- default:
- Battleground::HandleAreaTrigger(player, trigger, entered);
- break;
- }
-}
-
bool BattlegroundEY::SetupBattleground()
{
UpdateWorldState(EY_MAX_RESOURCES, BG_EY_MAX_TEAM_SCORE);
diff --git a/src/server/game/Battlegrounds/Zones/BattlegroundEY.h b/src/server/game/Battlegrounds/Zones/BattlegroundEY.h
index cd4e69a6885..1ba4de41af5 100644
--- a/src/server/game/Battlegrounds/Zones/BattlegroundEY.h
+++ b/src/server/game/Battlegrounds/Zones/BattlegroundEY.h
@@ -264,7 +264,6 @@ class BattlegroundEY : public Battleground
/* inherited from BattlegroundClass */
void StartingEventOpenDoors() override;
- void HandleAreaTrigger(Player* source, uint32 trigger, bool entered) override;
void HandleKillPlayer(Player* player, Player* killer) override;
WorldSafeLocsEntry const* GetExploitTeleportLocation(Team team) override;
bool SetupBattleground() override;
diff --git a/src/server/game/Battlegrounds/Zones/BattlegroundNA.cpp b/src/server/game/Battlegrounds/Zones/BattlegroundNA.cpp
index 510f6caed99..00cbaeb5ba4 100644
--- a/src/server/game/Battlegrounds/Zones/BattlegroundNA.cpp
+++ b/src/server/game/Battlegrounds/Zones/BattlegroundNA.cpp
@@ -61,22 +61,6 @@ void BattlegroundNA::StartingEventOpenDoors()
SpawnBGObject(i, 60);
}
-void BattlegroundNA::HandleAreaTrigger(Player* player, uint32 trigger, bool entered)
-{
- if (GetStatus() != STATUS_IN_PROGRESS)
- return;
-
- switch (trigger)
- {
- case 4536: // buff trigger?
- case 4537: // buff trigger?
- break;
- default:
- Battleground::HandleAreaTrigger(player, trigger, entered);
- break;
- }
-}
-
bool BattlegroundNA::SetupBattleground()
{
// gates
diff --git a/src/server/game/Battlegrounds/Zones/BattlegroundNA.h b/src/server/game/Battlegrounds/Zones/BattlegroundNA.h
index d8c7903005d..ba8ee0ad9a8 100644
--- a/src/server/game/Battlegrounds/Zones/BattlegroundNA.h
+++ b/src/server/game/Battlegrounds/Zones/BattlegroundNA.h
@@ -57,7 +57,6 @@ class BattlegroundNA : public Arena
void StartingEventCloseDoors() override;
void StartingEventOpenDoors() override;
- void HandleAreaTrigger(Player* source, uint32 trigger, bool entered) override;
bool SetupBattleground() override;
private:
diff --git a/src/server/game/Battlegrounds/Zones/BattlegroundRL.cpp b/src/server/game/Battlegrounds/Zones/BattlegroundRL.cpp
index a6559edd804..0f4aacb33c8 100644
--- a/src/server/game/Battlegrounds/Zones/BattlegroundRL.cpp
+++ b/src/server/game/Battlegrounds/Zones/BattlegroundRL.cpp
@@ -61,22 +61,6 @@ void BattlegroundRL::StartingEventOpenDoors()
SpawnBGObject(i, 60);
}
-void BattlegroundRL::HandleAreaTrigger(Player* player, uint32 trigger, bool entered)
-{
- if (GetStatus() != STATUS_IN_PROGRESS)
- return;
-
- switch (trigger)
- {
- case 4696: // buff trigger?
- case 4697: // buff trigger?
- break;
- default:
- Battleground::HandleAreaTrigger(player, trigger, entered);
- break;
- }
-}
-
bool BattlegroundRL::SetupBattleground()
{
// gates
diff --git a/src/server/game/Battlegrounds/Zones/BattlegroundRL.h b/src/server/game/Battlegrounds/Zones/BattlegroundRL.h
index 7941f5d3a48..574038d5e20 100644
--- a/src/server/game/Battlegrounds/Zones/BattlegroundRL.h
+++ b/src/server/game/Battlegrounds/Zones/BattlegroundRL.h
@@ -53,7 +53,6 @@ class BattlegroundRL : public Arena
void StartingEventCloseDoors() override;
void StartingEventOpenDoors() override;
- void HandleAreaTrigger(Player* source, uint32 trigger, bool entered) override;
bool SetupBattleground() override;
private:
diff --git a/src/server/game/Battlegrounds/Zones/BattlegroundRV.cpp b/src/server/game/Battlegrounds/Zones/BattlegroundRV.cpp
index 722b977e87c..e66f1ec7e41 100644
--- a/src/server/game/Battlegrounds/Zones/BattlegroundRV.cpp
+++ b/src/server/game/Battlegrounds/Zones/BattlegroundRV.cpp
@@ -80,25 +80,6 @@ void BattlegroundRV::StartingEventOpenDoors()
TogglePillarCollision();
}
-void BattlegroundRV::HandleAreaTrigger(Player* player, uint32 trigger, bool entered)
-{
- if (GetStatus() != STATUS_IN_PROGRESS)
- return;
-
- switch (trigger)
- {
- case 5224:
- case 5226:
- // fire was removed in 3.2.0
- case 5473:
- case 5474:
- break;
- default:
- Battleground::HandleAreaTrigger(player, trigger, entered);
- break;
- }
-}
-
bool BattlegroundRV::SetupBattleground()
{
// elevators
diff --git a/src/server/game/Battlegrounds/Zones/BattlegroundRV.h b/src/server/game/Battlegrounds/Zones/BattlegroundRV.h
index ca0f183270a..4f8f813fafc 100644
--- a/src/server/game/Battlegrounds/Zones/BattlegroundRV.h
+++ b/src/server/game/Battlegrounds/Zones/BattlegroundRV.h
@@ -95,7 +95,6 @@ class BattlegroundRV : public Arena
/* inherited from BattlegroundClass */
void StartingEventOpenDoors() override;
- void HandleAreaTrigger(Player* source, uint32 trigger, bool entered) override;
bool SetupBattleground() override;
private:
diff --git a/src/server/game/Battlegrounds/Zones/BattlegroundSA.cpp b/src/server/game/Battlegrounds/Zones/BattlegroundSA.cpp
index d7857885a66..f1f0f9b5eba 100644
--- a/src/server/game/Battlegrounds/Zones/BattlegroundSA.cpp
+++ b/src/server/game/Battlegrounds/Zones/BattlegroundSA.cpp
@@ -327,13 +327,6 @@ void BattlegroundSA::AddPlayer(Player* player, BattlegroundQueueTypeId queueId)
void BattlegroundSA::RemovePlayer(Player* /*player*/, ObjectGuid /*guid*/, uint32 /*team*/) { }
-void BattlegroundSA::HandleAreaTrigger(Player* /*source*/, uint32 /*trigger*/, bool /*entered*/)
-{
- // this is wrong way to implement these things. On official it done by gameobject spell cast.
- if (GetStatus() != STATUS_IN_PROGRESS)
- return;
-}
-
void BattlegroundSA::TeleportPlayers() const
{
for (auto const& [playerGuid, bp] : GetPlayers())
diff --git a/src/server/game/Battlegrounds/Zones/BattlegroundSA.h b/src/server/game/Battlegrounds/Zones/BattlegroundSA.h
index a6160aa5041..179ceb0923b 100644
--- a/src/server/game/Battlegrounds/Zones/BattlegroundSA.h
+++ b/src/server/game/Battlegrounds/Zones/BattlegroundSA.h
@@ -267,7 +267,6 @@ class BattlegroundSA : public Battleground
/// Called when a player leave battleground
void RemovePlayer(Player* player, ObjectGuid guid, uint32 team) override;
- void HandleAreaTrigger(Player* source, uint32 trigger, bool entered) override;
void OnGameObjectCreate(GameObject* gameobject) override;
void DoAction(uint32 actionId, WorldObject* source, WorldObject* target) override;
diff --git a/src/server/scripts/EasternKingdoms/AlteracValley/alterac_valley.cpp b/src/server/scripts/EasternKingdoms/AlteracValley/alterac_valley.cpp
index 19837a66ba9..629be86a525 100644
--- a/src/server/scripts/EasternKingdoms/AlteracValley/alterac_valley.cpp
+++ b/src/server/scripts/EasternKingdoms/AlteracValley/alterac_valley.cpp
@@ -177,9 +177,25 @@ private:
TaskScheduler _scheduler;
};
+class at_av_exploit : public AreaTriggerScript
+{
+public:
+ at_av_exploit() : AreaTriggerScript("at_av_exploit") { }
+
+ bool OnTrigger(Player* player, AreaTriggerEntry const* /*trigger*/) override
+ {
+ if (Battleground* battleground = player->GetBattleground())
+ if (battleground->GetStatus() == STATUS_WAIT_JOIN)
+ battleground->TeleportPlayerToExploitLocation(player);
+
+ return true;
+ }
+};
+
void AddSC_alterac_valley()
{
RegisterCreatureAI(npc_av_marshal_or_warmaster);
RegisterGameObjectAI(go_av_capturable_object);
RegisterGameObjectAI(go_av_contested_object);
+ new at_av_exploit();
}
diff --git a/src/server/scripts/Northrend/zone_dalaran.cpp b/src/server/scripts/Northrend/zone_dalaran.cpp
index 92fc14b2c64..46460521b6b 100644
--- a/src/server/scripts/Northrend/zone_dalaran.cpp
+++ b/src/server/scripts/Northrend/zone_dalaran.cpp
@@ -24,6 +24,7 @@ SDCategory: Dalaran
Script Data End */
#include "ScriptMgr.h"
+#include "BattlegroundDS.h"
#include "Containers.h"
#include "DatabaseEnv.h"
#include "Mail.h"
@@ -253,8 +254,44 @@ 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();
}