diff options
| author | Shauren <shauren.trinity@gmail.com> | 2021-11-10 00:01:50 +0100 |
|---|---|---|
| committer | Shauren <shauren.trinity@gmail.com> | 2021-11-10 00:01:50 +0100 |
| commit | f2456ff319b2145457da01ec78844fdc32d8713b (patch) | |
| tree | 4e15da5dd1b08356a575071a6926fb50ff9f4d20 /src/server/game/Scripting | |
| parent | 938c7e518c7831637509c61764bfc50bae0a22dc (diff) | |
Scripts/Areatriggers: Fixed all areatrigger scripts triggering both on enter and exit instead of only on enter
Diffstat (limited to 'src/server/game/Scripting')
| -rw-r--r-- | src/server/game/Scripting/ScriptMgr.cpp | 6 | ||||
| -rw-r--r-- | src/server/game/Scripting/ScriptMgr.h | 9 |
2 files changed, 9 insertions, 6 deletions
diff --git a/src/server/game/Scripting/ScriptMgr.cpp b/src/server/game/Scripting/ScriptMgr.cpp index b1022b43967..c154345a755 100644 --- a/src/server/game/Scripting/ScriptMgr.cpp +++ b/src/server/game/Scripting/ScriptMgr.cpp @@ -1723,7 +1723,7 @@ bool ScriptMgr::OnAreaTrigger(Player* player, AreaTriggerEntry const* trigger, b ASSERT(trigger); GET_SCRIPT_RET(AreaTriggerScript, sObjectMgr->GetAreaTriggerScriptId(trigger->ID), tmpscript, false); - return tmpscript->OnTrigger(player, trigger, entered); + return entered ? tmpscript->OnTrigger(player, trigger) : tmpscript->OnExit(player, trigger); } Battleground* ScriptMgr::CreateBattleground(BattlegroundTypeId /*typeId*/) @@ -2428,7 +2428,7 @@ AreaTriggerScript::AreaTriggerScript(char const* name) ScriptRegistry<AreaTriggerScript>::Instance()->AddScript(this); } -bool OnlyOnceAreaTriggerScript::OnTrigger(Player* player, AreaTriggerEntry const* trigger, bool entered) +bool OnlyOnceAreaTriggerScript::OnTrigger(Player* player, AreaTriggerEntry const* trigger) { uint32 const triggerId = trigger->ID; if (InstanceScript* instance = player->GetInstanceScript()) @@ -2438,7 +2438,7 @@ bool OnlyOnceAreaTriggerScript::OnTrigger(Player* player, AreaTriggerEntry const else instance->MarkAreaTriggerDone(triggerId); } - return _OnTrigger(player, trigger, entered); + return _OnTrigger(player, trigger); } void OnlyOnceAreaTriggerScript::ResetAreaTriggerDone(InstanceScript* script, uint32 triggerId) { script->ResetAreaTriggerDone(triggerId); } void OnlyOnceAreaTriggerScript::ResetAreaTriggerDone(Player const* player, AreaTriggerEntry const* trigger) { if (InstanceScript* instance = player->GetInstanceScript()) ResetAreaTriggerDone(instance, trigger->ID); } diff --git a/src/server/game/Scripting/ScriptMgr.h b/src/server/game/Scripting/ScriptMgr.h index 863661022af..1ab7fc54478 100644 --- a/src/server/game/Scripting/ScriptMgr.h +++ b/src/server/game/Scripting/ScriptMgr.h @@ -445,7 +445,10 @@ class TC_GAME_API AreaTriggerScript : public ScriptObject public: // Called when the area trigger is activated by a player. - virtual bool OnTrigger(Player* /*player*/, AreaTriggerEntry const* /*trigger*/, bool /*entered*/) { return false; } + virtual bool OnTrigger(Player* /*player*/, AreaTriggerEntry const* /*trigger*/) { return false; } + + // Called when the area trigger is left by a player. + virtual bool OnExit(Player* /*player*/, AreaTriggerEntry const* /*trigger*/) { return false; } }; class TC_GAME_API OnlyOnceAreaTriggerScript : public AreaTriggerScript @@ -453,10 +456,10 @@ class TC_GAME_API OnlyOnceAreaTriggerScript : public AreaTriggerScript using AreaTriggerScript::AreaTriggerScript; public: - bool OnTrigger(Player* player, AreaTriggerEntry const* trigger, bool entered) final override; + bool OnTrigger(Player* player, AreaTriggerEntry const* trigger) final; protected: - virtual bool _OnTrigger(Player* player, AreaTriggerEntry const* trigger, bool entered) = 0; + virtual bool _OnTrigger(Player* player, AreaTriggerEntry const* trigger) = 0; void ResetAreaTriggerDone(InstanceScript* instance, uint32 triggerId); void ResetAreaTriggerDone(Player const* player, AreaTriggerEntry const* trigger); }; |
