aboutsummaryrefslogtreecommitdiff
path: root/src/server/scripts/World
diff options
context:
space:
mode:
authorJeremy <Golrag@users.noreply.github.com>2023-07-30 19:49:12 +0200
committerGitHub <noreply@github.com>2023-07-30 19:49:12 +0200
commitf5461a1161a5a9dfabe7a142ad84f8c900776c92 (patch)
tree4f327bbb5752acd5c8f75d5552ddd0489d76c0dc /src/server/scripts/World
parent845f61e0a969891b14e1f182fadd29af347a1a3f (diff)
Battlegrounds/Buffs: Rework using areatriggers (#29171)
* Rework GameObject trap handling for buffs (removed radius hack) * Add script for Old AreaTriggers * Add script for new AreaTriggers * Spawn AreaTriggers in Arathi Basin
Diffstat (limited to 'src/server/scripts/World')
-rw-r--r--src/server/scripts/World/areatrigger_scripts.cpp36
1 files changed, 36 insertions, 0 deletions
diff --git a/src/server/scripts/World/areatrigger_scripts.cpp b/src/server/scripts/World/areatrigger_scripts.cpp
index 71f1f89ae3e..8bf43d076ac 100644
--- a/src/server/scripts/World/areatrigger_scripts.cpp
+++ b/src/server/scripts/World/areatrigger_scripts.cpp
@@ -407,6 +407,40 @@ struct areatrigger_stormwind_teleport_unit : AreaTriggerAI
}
};
+void HandleBuffAreaTrigger(Player* player)
+{
+ if (GameObject* buffObject = player->FindNearestGameObjectWithOptions(4.0f, { .StringId = "bg_buff_object" }))
+ {
+ buffObject->ActivateObject(GameObjectActions::Disturb, 0, player);
+ buffObject->DespawnOrUnsummon();
+ }
+}
+
+struct areatrigger_battleground_buffs : AreaTriggerAI
+{
+ areatrigger_battleground_buffs(AreaTrigger* areatrigger) : AreaTriggerAI(areatrigger) { }
+
+ void OnUnitEnter(Unit* unit) override
+ {
+ if (!unit->IsPlayer())
+ return;
+
+ HandleBuffAreaTrigger(unit->ToPlayer());
+ }
+};
+
+class AreaTrigger_at_battleground_buffs : public AreaTriggerScript
+{
+public:
+ AreaTrigger_at_battleground_buffs() : AreaTriggerScript("at_battleground_buffs") { }
+
+ bool OnTrigger(Player* player, AreaTriggerEntry const* /*areaTrigger*/) override
+ {
+ HandleBuffAreaTrigger(player);
+ return true;
+ }
+};
+
void AddSC_areatrigger_scripts()
{
new AreaTrigger_at_coilfang_waterfall();
@@ -418,4 +452,6 @@ void AddSC_areatrigger_scripts()
new AreaTrigger_at_area_52_entrance();
new AreaTrigger_at_frostgrips_hollow();
RegisterAreaTriggerAI(areatrigger_stormwind_teleport_unit);
+ RegisterAreaTriggerAI(areatrigger_battleground_buffs);
+ new AreaTrigger_at_battleground_buffs();
}