Scripts/Areatriggers: Fixed all areatrigger scripts triggering both on enter and exit instead of only on enter

Port From (https://github.com/TrinityCore/TrinityCore/commit/f2456ff319b2145457da01ec78844fdc32d8713b)
This commit is contained in:
hondacrx
2021-11-15 20:14:47 -05:00
parent ae1db5610d
commit d14f6b752a
4 changed files with 18 additions and 15 deletions
+7 -4
View File
@@ -396,14 +396,17 @@ namespace Game.Scripting
public override bool IsDatabaseBound() { return true; }
// Called when the area trigger is activated by a player.
public virtual bool OnTrigger(Player player, AreaTriggerRecord trigger, bool entered) { return false; }
public virtual bool OnTrigger(Player player, AreaTriggerRecord trigger) { return false; }
// Called when the area trigger is left by a player.
public virtual bool OnExit(Player player, AreaTriggerRecord trigger) { return false; }
}
public class OnlyOnceAreaTriggerScript : AreaTriggerScript
{
public OnlyOnceAreaTriggerScript(string name) : base(name) { }
public override bool OnTrigger(Player player, AreaTriggerRecord trigger, bool entered)
public override bool OnTrigger(Player player, AreaTriggerRecord trigger)
{
uint triggerId = trigger.Id;
InstanceScript instance = player.GetInstanceScript();
@@ -414,7 +417,7 @@ namespace Game.Scripting
else
instance.MarkAreaTriggerDone(triggerId);
}
return _OnTrigger(player, trigger, entered);
return _OnTrigger(player, trigger);
}
void ResetAreaTriggerDone(InstanceScript script, uint triggerId)
@@ -429,7 +432,7 @@ namespace Game.Scripting
ResetAreaTriggerDone(instance, trigger.Id);
}
public virtual bool _OnTrigger(Player player, AreaTriggerRecord trigger, bool entered) { return false; }
public virtual bool _OnTrigger(Player player, AreaTriggerRecord trigger) { return false; }
}
public class BattlegroundScript : ScriptObject
+1 -1
View File
@@ -706,7 +706,7 @@ namespace Game.Scripting
Cypher.Assert(player != null);
Cypher.Assert(trigger != null);
return RunScriptRet<AreaTriggerScript>(p => p.OnTrigger(player, trigger, entered), Global.ObjectMgr.GetAreaTriggerScriptId(trigger.Id));
return RunScriptRet<AreaTriggerScript>(p => entered ? p.OnTrigger(player, trigger) : p.OnExit(player, trigger), Global.ObjectMgr.GetAreaTriggerScriptId(trigger.Id));
}
//BattlegroundScript