From c9211600781e61429fc0c13d9f8a9c677ba46fc1 Mon Sep 17 00:00:00 2001 From: hondacrx Date: Thu, 28 Apr 2022 10:48:35 -0400 Subject: [PATCH] Scripts/AreaTrigger: Rename OnlyOnceAreaTriggerScript::_OnTrigger to TryHandleOnce, and make its return value useful. Port From (https://github.com/TrinityCore/TrinityCore/commit/358dc78e47a6276e9f511e6510e04865d2d87fd2) --- Source/Game/Scripting/CoreScripts.cs | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/Source/Game/Scripting/CoreScripts.cs b/Source/Game/Scripting/CoreScripts.cs index fbc50d1e4..3bab0d2a1 100644 --- a/Source/Game/Scripting/CoreScripts.cs +++ b/Source/Game/Scripting/CoreScripts.cs @@ -414,18 +414,19 @@ namespace Game.Scripting public override bool OnTrigger(Player player, AreaTriggerRecord trigger) { - uint triggerId = trigger.Id; InstanceScript instance = player.GetInstanceScript(); - if (instance != null) - { - if (instance.IsAreaTriggerDone(triggerId)) - return true; - else - instance.MarkAreaTriggerDone(triggerId); - } - return _OnTrigger(player, trigger); + if (instance != null && instance.IsAreaTriggerDone(trigger.Id)) + return true; + + if (TryHandleOnce(player, trigger) && instance != null) + instance.MarkAreaTriggerDone(trigger.Id); + + return true; } + // returns true if the trigger was successfully handled, false if we should try again next time + public virtual bool TryHandleOnce(Player player, AreaTriggerRecord trigger) { return false; } + void ResetAreaTriggerDone(InstanceScript script, uint triggerId) { script.ResetAreaTriggerDone(triggerId); @@ -437,8 +438,6 @@ namespace Game.Scripting if (instance != null) ResetAreaTriggerDone(instance, trigger.Id); } - - public virtual bool _OnTrigger(Player player, AreaTriggerRecord trigger) { return false; } } public class BattlefieldScript : ScriptObject