aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Scripting/ScriptMgr.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/server/game/Scripting/ScriptMgr.cpp')
-rw-r--r--src/server/game/Scripting/ScriptMgr.cpp16
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); }