diff options
author | Shauren <shauren.trinity@gmail.com> | 2022-04-24 12:09:10 +0200 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2022-04-24 12:09:10 +0200 |
commit | 111fc6ac6fd703bb645046e7a477a986d8519a64 (patch) | |
tree | c1ecc58df252a2b5144ac721be980ce409890add /src/server/game/Events/GameEventSender.cpp | |
parent | 597485f1d4ccadaccf800a2663f3d74342aa5c4d (diff) |
Core/Battlegrounds: Replace manual criteria timer starts in battlegrounds with new GameEvents api
Diffstat (limited to 'src/server/game/Events/GameEventSender.cpp')
-rw-r--r-- | src/server/game/Events/GameEventSender.cpp | 31 |
1 files changed, 22 insertions, 9 deletions
diff --git a/src/server/game/Events/GameEventSender.cpp b/src/server/game/Events/GameEventSender.cpp index a454ce547a2..0d798826197 100644 --- a/src/server/game/Events/GameEventSender.cpp +++ b/src/server/game/Events/GameEventSender.cpp @@ -22,6 +22,7 @@ #include "InstanceScript.h" #include "Map.h" #include "ObjectMgr.h" +#include "Player.h" #include "Util.h" void GameEvents::Trigger(uint32 gameEventId, WorldObject* source, WorldObject* target) @@ -38,15 +39,27 @@ void GameEvents::Trigger(uint32 gameEventId, WorldObject* source, WorldObject* t zoneScript->ProcessEvent(target, gameEventId, source); Map* map = refForMapAndZoneScript->GetMap(); - if (target) - { - if (GameObject* goTarget = target->ToGameObject()) - if (GameObjectAI* goAI = goTarget->AI()) - goAI->EventInform(gameEventId); - - if (BattlegroundMap* bgMap = map->ToBattlegroundMap()) - bgMap->GetBG()->ProcessEvent(target, gameEventId, source); - } + if (GameObject* goTarget = Object::ToGameObject(target)) + if (GameObjectAI* goAI = goTarget->AI()) + goAI->EventInform(gameEventId); + + if (Player* sourcePlayer = Object::ToPlayer(source)) + TriggerForPlayer(gameEventId, sourcePlayer); + + TriggerForMap(gameEventId, map, source, target); +} + +void GameEvents::TriggerForPlayer(uint32 gameEventId, Player* source) +{ + Map* map = source->GetMap(); + if (map->Instanceable()) + source->StartCriteriaTimer(CriteriaStartEvent::SendEvent, gameEventId); +} + +void GameEvents::TriggerForMap(uint32 gameEventId, Map* map, WorldObject* source, WorldObject* target) +{ + if (BattlegroundMap* bgMap = map->ToBattlegroundMap()) + bgMap->GetBG()->ProcessEvent(target, gameEventId, source); map->ScriptsStart(sEventScripts, gameEventId, source, target); } |