aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Scripting
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2021-11-10 00:01:50 +0100
committerShauren <shauren.trinity@gmail.com>2021-11-10 00:01:50 +0100
commitf2456ff319b2145457da01ec78844fdc32d8713b (patch)
tree4e15da5dd1b08356a575071a6926fb50ff9f4d20 /src/server/game/Scripting
parent938c7e518c7831637509c61764bfc50bae0a22dc (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.cpp6
-rw-r--r--src/server/game/Scripting/ScriptMgr.h9
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);
};