diff options
author | Shauren <shauren.trinity@gmail.com> | 2022-04-24 13:58:18 +0200 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2022-04-24 13:58:18 +0200 |
commit | 1c62b0b90f879e5df6c6785c12e9a5bddd65cb48 (patch) | |
tree | 685fae412c39a62e7c789e05329637afda19e4be /src/server/game | |
parent | e1abd8256be38c299156264424999c0108613198 (diff) |
Scripts/Instances: Replace manual criteria timer starts in instances with new GameEvents api
Diffstat (limited to 'src/server/game')
-rw-r--r-- | src/server/game/Instances/InstanceScript.cpp | 27 | ||||
-rw-r--r-- | src/server/game/Instances/InstanceScript.h | 7 | ||||
-rw-r--r-- | src/server/game/Maps/ZoneScript.cpp | 9 | ||||
-rw-r--r-- | src/server/game/Maps/ZoneScript.h | 1 |
4 files changed, 32 insertions, 12 deletions
diff --git a/src/server/game/Instances/InstanceScript.cpp b/src/server/game/Instances/InstanceScript.cpp index 918a9561634..64fda3b3c81 100644 --- a/src/server/game/Instances/InstanceScript.cpp +++ b/src/server/game/Instances/InstanceScript.cpp @@ -21,6 +21,7 @@ #include "CreatureAI.h" #include "CreatureAIImpl.h" #include "DatabaseEnv.h" +#include "GameEventSender.h" #include "GameObject.h" #include "Group.h" #include "InstancePackets.h" @@ -129,6 +130,23 @@ ObjectGuid InstanceScript::GetGuidData(uint32 type) const return GetObjectGuid(type); } +void InstanceScript::TriggerGameEvent(uint32 gameEventId, WorldObject* source /*= nullptr*/, WorldObject* target /*= nullptr*/) +{ + if (source) + { + ZoneScript::TriggerGameEvent(gameEventId, source, target); + return; + } + + ProcessEvent(target, gameEventId, source); + instance->DoOnPlayers([gameEventId](Player* player) + { + GameEvents::TriggerForPlayer(gameEventId, player); + }); + + GameEvents::TriggerForMap(gameEventId, instance); +} + Creature* InstanceScript::GetCreature(uint32 type) { return instance->GetCreature(GetObjectGuid(type)); @@ -622,15 +640,6 @@ void InstanceScript::DoUpdateCriteria(CriteriaType type, uint32 miscValue1 /*= 0 }); } -// Start timed achievement for all players in instance -void InstanceScript::DoStartCriteriaTimer(CriteriaStartEvent startEvent, uint32 entry) -{ - instance->DoOnPlayers([startEvent, entry](Player* player) - { - player->StartCriteriaTimer(startEvent, entry); - }); -} - void InstanceScript::DoRemoveAurasDueToSpellOnPlayers(uint32 spell, bool includePets /*= false*/, bool includeControlled /*= false*/) { instance->DoOnPlayers([this, spell, includePets, includeControlled](Player* player) diff --git a/src/server/game/Instances/InstanceScript.h b/src/server/game/Instances/InstanceScript.h index 60f0aa6da6b..353f363174c 100644 --- a/src/server/game/Instances/InstanceScript.h +++ b/src/server/game/Instances/InstanceScript.h @@ -191,6 +191,10 @@ class TC_GAME_API InstanceScript : public ZoneScript ObjectGuid GetObjectGuid(uint32 type) const; virtual ObjectGuid GetGuidData(uint32 type) const override; + // Triggers a GameEvent + // * If source is nullptr then event is triggered for each player in the instance as "source" + void TriggerGameEvent(uint32 gameEventId, WorldObject* source = nullptr, WorldObject* target = nullptr) override; + Creature* GetCreature(uint32 type); GameObject* GetGameObject(uint32 type); @@ -220,9 +224,6 @@ class TC_GAME_API InstanceScript : public ZoneScript // Update Achievement Criteria for all players in instance void DoUpdateCriteria(CriteriaType type, uint32 miscValue1 = 0, uint32 miscValue2 = 0, Unit* unit = nullptr); - // Start Timed Achievement Criteria for all players in instance - void DoStartCriteriaTimer(CriteriaStartEvent startEvent, uint32 entry); - // Remove Auras due to Spell on all players in instance void DoRemoveAurasDueToSpellOnPlayers(uint32 spell, bool includePets = false, bool includeControlled = false); void DoRemoveAurasDueToSpellOnPlayer(Player* player, uint32 spell, bool includePets = false, bool includeControlled = false); diff --git a/src/server/game/Maps/ZoneScript.cpp b/src/server/game/Maps/ZoneScript.cpp index 974a6c7661f..9dce551910c 100644 --- a/src/server/game/Maps/ZoneScript.cpp +++ b/src/server/game/Maps/ZoneScript.cpp @@ -17,6 +17,7 @@ #include "ZoneScript.h" #include "Creature.h" +#include "GameEventSender.h" ZoneScript::ZoneScript() { @@ -30,3 +31,11 @@ uint32 ZoneScript::GetCreatureEntry(ObjectGuid::LowType /*guidLow*/, CreatureDat { return data->id; } + +void ZoneScript::TriggerGameEvent(uint32 gameEventId, WorldObject* source /*= nullptr*/, WorldObject* target /*= nullptr*/) +{ + if (source) + GameEvents::Trigger(gameEventId, source, target); + else + ProcessEvent(nullptr, gameEventId, nullptr); +} diff --git a/src/server/game/Maps/ZoneScript.h b/src/server/game/Maps/ZoneScript.h index 8d3bb397a07..d9bb1b417d9 100644 --- a/src/server/game/Maps/ZoneScript.h +++ b/src/server/game/Maps/ZoneScript.h @@ -61,6 +61,7 @@ class TC_GAME_API ZoneScript virtual uint32 GetData(uint32 /*DataId*/) const { return 0; } virtual void SetData(uint32 /*DataId*/, uint32 /*Value*/) { } + virtual void TriggerGameEvent(uint32 gameEventId, WorldObject* source = nullptr, WorldObject* target = nullptr); virtual void ProcessEvent(WorldObject* /*obj*/, uint32 /*eventId*/, WorldObject* /*invoker*/) { } }; |