diff options
author | Treeston <treeston.mmoc@gmail.com> | 2017-09-15 03:53:02 +0200 |
---|---|---|
committer | Keader <keader.android@gmail.com> | 2017-09-14 22:53:02 -0300 |
commit | 971ed856a49dc56ea33d9a0779b1386eea5cd3ca (patch) | |
tree | b2b8a1f724ff44504151715df5cd530dedc132a7 /src/server/game/Scripting/ScriptMgr.cpp | |
parent | 49daef4b77baca7266e9a0ea7c916318ba6af6b0 (diff) |
Core/Scripts: Implemented OnlyOnceAreaTriggerScript (#20288)
Diffstat (limited to 'src/server/game/Scripting/ScriptMgr.cpp')
-rw-r--r-- | src/server/game/Scripting/ScriptMgr.cpp | 15 |
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) { |