aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Scripting/ScriptMgr.cpp
diff options
context:
space:
mode:
authorTreeston <treeston.mmoc@gmail.com>2017-09-15 03:53:02 +0200
committerKeader <keader.android@gmail.com>2017-09-14 22:53:02 -0300
commit971ed856a49dc56ea33d9a0779b1386eea5cd3ca (patch)
treeb2b8a1f724ff44504151715df5cd530dedc132a7 /src/server/game/Scripting/ScriptMgr.cpp
parent49daef4b77baca7266e9a0ea7c916318ba6af6b0 (diff)
Core/Scripts: Implemented OnlyOnceAreaTriggerScript (#20288)
Diffstat (limited to 'src/server/game/Scripting/ScriptMgr.cpp')
-rw-r--r--src/server/game/Scripting/ScriptMgr.cpp15
1 files changed, 15 insertions, 0 deletions
diff --git a/src/server/game/Scripting/ScriptMgr.cpp b/src/server/game/Scripting/ScriptMgr.cpp
index 7d678656079..2a26261d9f1 100644
--- a/src/server/game/Scripting/ScriptMgr.cpp
+++ b/src/server/game/Scripting/ScriptMgr.cpp
@@ -2229,6 +2229,21 @@ AreaTriggerScript::AreaTriggerScript(char const* name)
ScriptRegistry<AreaTriggerScript>::Instance()->AddScript(this);
}
+bool OnlyOnceAreaTriggerScript::OnTrigger(Player* player, AreaTriggerEntry const* trigger)
+{
+ uint32 const triggerId = trigger->id;
+ if (InstanceScript* instance = player->GetInstanceScript())
+ {
+ if (instance->IsAreaTriggerDone(triggerId))
+ return true;
+ else
+ instance->MarkAreaTriggerDone(triggerId);
+ }
+ 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); }
+
BattlegroundScript::BattlegroundScript(char const* name)
: ScriptObject(name)
{