diff options
Diffstat (limited to 'src/server/game/Scripting/ScriptMgr.cpp')
-rw-r--r-- | src/server/game/Scripting/ScriptMgr.cpp | 16 |
1 files changed, 8 insertions, 8 deletions
diff --git a/src/server/game/Scripting/ScriptMgr.cpp b/src/server/game/Scripting/ScriptMgr.cpp index 709018a98ed..0943147095d 100644 --- a/src/server/game/Scripting/ScriptMgr.cpp +++ b/src/server/game/Scripting/ScriptMgr.cpp @@ -2439,14 +2439,14 @@ AreaTriggerScript::AreaTriggerScript(char const* name) 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); + InstanceScript* instance = player->GetInstanceScript(); + if (instance && instance->IsAreaTriggerDone(triggerId)) + return true; + + if (TryHandleOnce(player, trigger) && instance) + instance->MarkAreaTriggerDone(triggerId); + + return true; } 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); } |