diff options
author | Jeremy <Golrag@users.noreply.github.com> | 2023-07-30 19:49:12 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-07-30 19:49:12 +0200 |
commit | f5461a1161a5a9dfabe7a142ad84f8c900776c92 (patch) | |
tree | 4f327bbb5752acd5c8f75d5552ddd0489d76c0dc /src/server/scripts | |
parent | 845f61e0a969891b14e1f182fadd29af347a1a3f (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')
-rw-r--r-- | src/server/scripts/World/areatrigger_scripts.cpp | 36 |
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(); } |