aboutsummaryrefslogtreecommitdiff
path: root/src/server/game
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2022-04-24 13:58:18 +0200
committerShauren <shauren.trinity@gmail.com>2022-04-24 13:58:18 +0200
commit1c62b0b90f879e5df6c6785c12e9a5bddd65cb48 (patch)
tree685fae412c39a62e7c789e05329637afda19e4be /src/server/game
parente1abd8256be38c299156264424999c0108613198 (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.cpp27
-rw-r--r--src/server/game/Instances/InstanceScript.h7
-rw-r--r--src/server/game/Maps/ZoneScript.cpp9
-rw-r--r--src/server/game/Maps/ZoneScript.h1
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*/) { }
};