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:
@@ -396,14 +396,17 @@ namespace Game.Scripting
|
|||||||
public override bool IsDatabaseBound() { return true; }
|
public override bool IsDatabaseBound() { return true; }
|
||||||
|
|
||||||
// Called when the area trigger is activated by a player.
|
// 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 class OnlyOnceAreaTriggerScript : AreaTriggerScript
|
||||||
{
|
{
|
||||||
public OnlyOnceAreaTriggerScript(string name) : base(name) { }
|
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;
|
uint triggerId = trigger.Id;
|
||||||
InstanceScript instance = player.GetInstanceScript();
|
InstanceScript instance = player.GetInstanceScript();
|
||||||
@@ -414,7 +417,7 @@ namespace Game.Scripting
|
|||||||
else
|
else
|
||||||
instance.MarkAreaTriggerDone(triggerId);
|
instance.MarkAreaTriggerDone(triggerId);
|
||||||
}
|
}
|
||||||
return _OnTrigger(player, trigger, entered);
|
return _OnTrigger(player, trigger);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ResetAreaTriggerDone(InstanceScript script, uint triggerId)
|
void ResetAreaTriggerDone(InstanceScript script, uint triggerId)
|
||||||
@@ -429,7 +432,7 @@ namespace Game.Scripting
|
|||||||
ResetAreaTriggerDone(instance, trigger.Id);
|
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
|
public class BattlegroundScript : ScriptObject
|
||||||
|
|||||||
@@ -706,7 +706,7 @@ namespace Game.Scripting
|
|||||||
Cypher.Assert(player != null);
|
Cypher.Assert(player != null);
|
||||||
Cypher.Assert(trigger != 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
|
//BattlegroundScript
|
||||||
|
|||||||
@@ -29,7 +29,7 @@ namespace Scripts.Smart
|
|||||||
{
|
{
|
||||||
public SmartTrigger() : base("SmartTrigger") { }
|
public SmartTrigger() : base("SmartTrigger") { }
|
||||||
|
|
||||||
public override bool OnTrigger(Player player, AreaTriggerRecord trigger, bool entered)
|
public override bool OnTrigger(Player player, AreaTriggerRecord trigger)
|
||||||
{
|
{
|
||||||
if (!player.IsAlive())
|
if (!player.IsAlive())
|
||||||
return false;
|
return false;
|
||||||
|
|||||||
@@ -148,7 +148,7 @@ namespace Scripts.World.Areatriggers
|
|||||||
{
|
{
|
||||||
public AreaTrigger_at_coilfang_waterfall() : base("at_coilfang_waterfall") { }
|
public AreaTrigger_at_coilfang_waterfall() : base("at_coilfang_waterfall") { }
|
||||||
|
|
||||||
public override bool OnTrigger(Player player, AreaTriggerRecord areaTrigger, bool entered)
|
public override bool OnTrigger(Player player, AreaTriggerRecord areaTrigger)
|
||||||
{
|
{
|
||||||
GameObject go = player.FindNearestGameObject(GameObjectIds.CoilfangWaterfall, 35.0f);
|
GameObject go = player.FindNearestGameObject(GameObjectIds.CoilfangWaterfall, 35.0f);
|
||||||
if (go)
|
if (go)
|
||||||
@@ -164,7 +164,7 @@ namespace Scripts.World.Areatriggers
|
|||||||
{
|
{
|
||||||
public AreaTrigger_at_legion_teleporter() : base("at_legion_teleporter") { }
|
public AreaTrigger_at_legion_teleporter() : base("at_legion_teleporter") { }
|
||||||
|
|
||||||
public override bool OnTrigger(Player player, AreaTriggerRecord areaTrigger, bool entered)
|
public override bool OnTrigger(Player player, AreaTriggerRecord areaTrigger)
|
||||||
{
|
{
|
||||||
if (player.IsAlive() && !player.IsInCombat())
|
if (player.IsAlive() && !player.IsInCombat())
|
||||||
{
|
{
|
||||||
@@ -191,7 +191,7 @@ namespace Scripts.World.Areatriggers
|
|||||||
{
|
{
|
||||||
public AreaTrigger_at_stormwright_shelf() : base("at_stormwright_shelf") { }
|
public AreaTrigger_at_stormwright_shelf() : base("at_stormwright_shelf") { }
|
||||||
|
|
||||||
public override bool OnTrigger(Player player, AreaTriggerRecord areaTrigger, bool entered)
|
public override bool OnTrigger(Player player, AreaTriggerRecord areaTrigger)
|
||||||
{
|
{
|
||||||
if (!player.IsDead() && player.GetQuestStatus(QuestIds.StrengthOfTheTempest) == QuestStatus.Incomplete)
|
if (!player.IsDead() && player.GetQuestStatus(QuestIds.StrengthOfTheTempest) == QuestStatus.Incomplete)
|
||||||
player.CastSpell(player, SpellIds.CreateTruePowerOfTheTempest, false);
|
player.CastSpell(player, SpellIds.CreateTruePowerOfTheTempest, false);
|
||||||
@@ -205,7 +205,7 @@ namespace Scripts.World.Areatriggers
|
|||||||
{
|
{
|
||||||
public AreaTrigger_at_scent_larkorwi() : base("at_scent_larkorwi") { }
|
public AreaTrigger_at_scent_larkorwi() : base("at_scent_larkorwi") { }
|
||||||
|
|
||||||
public override bool OnTrigger(Player player, AreaTriggerRecord areaTrigger, bool entered)
|
public override bool OnTrigger(Player player, AreaTriggerRecord areaTrigger)
|
||||||
{
|
{
|
||||||
if (!player.IsDead() && player.GetQuestStatus(QuestIds.ScentOfLarkorwi) == QuestStatus.Incomplete)
|
if (!player.IsDead() && player.GetQuestStatus(QuestIds.ScentOfLarkorwi) == QuestStatus.Incomplete)
|
||||||
{
|
{
|
||||||
@@ -222,7 +222,7 @@ namespace Scripts.World.Areatriggers
|
|||||||
{
|
{
|
||||||
public AreaTrigger_at_sholazar_waygate() : base("at_sholazar_waygate") { }
|
public AreaTrigger_at_sholazar_waygate() : base("at_sholazar_waygate") { }
|
||||||
|
|
||||||
public override bool OnTrigger(Player player, AreaTriggerRecord areaTrigger, bool entered)
|
public override bool OnTrigger(Player player, AreaTriggerRecord areaTrigger)
|
||||||
{
|
{
|
||||||
if (!player.IsDead() && (player.GetQuestStatus(QuestIds.MeetingAGreatOne) != QuestStatus.None ||
|
if (!player.IsDead() && (player.GetQuestStatus(QuestIds.MeetingAGreatOne) != QuestStatus.None ||
|
||||||
(player.GetQuestStatus(QuestIds.TheMakersOverlook) == QuestStatus.Rewarded && player.GetQuestStatus(QuestIds.TheMakersPerch) == QuestStatus.Rewarded)))
|
(player.GetQuestStatus(QuestIds.TheMakersOverlook) == QuestStatus.Rewarded && player.GetQuestStatus(QuestIds.TheMakersPerch) == QuestStatus.Rewarded)))
|
||||||
@@ -248,7 +248,7 @@ namespace Scripts.World.Areatriggers
|
|||||||
{
|
{
|
||||||
public AreaTrigger_at_nats_landing() : base("at_nats_landing") { }
|
public AreaTrigger_at_nats_landing() : base("at_nats_landing") { }
|
||||||
|
|
||||||
public override bool OnTrigger(Player player, AreaTriggerRecord areaTrigger, bool entered)
|
public override bool OnTrigger(Player player, AreaTriggerRecord areaTrigger)
|
||||||
{
|
{
|
||||||
if (!player.IsAlive() || !player.HasAura(SpellIds.FishPaste))
|
if (!player.IsAlive() || !player.HasAura(SpellIds.FishPaste))
|
||||||
return false;
|
return false;
|
||||||
@@ -283,7 +283,7 @@ namespace Scripts.World.Areatriggers
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
public override bool OnTrigger(Player player, AreaTriggerRecord areaTrigger, bool entered)
|
public override bool OnTrigger(Player player, AreaTriggerRecord areaTrigger)
|
||||||
{
|
{
|
||||||
uint triggerId = areaTrigger.Id;
|
uint triggerId = areaTrigger.Id;
|
||||||
// Second trigger happened too early after first, skip for now
|
// Second trigger happened too early after first, skip for now
|
||||||
@@ -327,7 +327,7 @@ namespace Scripts.World.Areatriggers
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
public override bool OnTrigger(Player player, AreaTriggerRecord areaTrigger, bool entered)
|
public override bool OnTrigger(Player player, AreaTriggerRecord areaTrigger)
|
||||||
{
|
{
|
||||||
float x = 0.0f, y = 0.0f, z = 0.0f;
|
float x = 0.0f, y = 0.0f, z = 0.0f;
|
||||||
|
|
||||||
@@ -380,7 +380,7 @@ namespace Scripts.World.Areatriggers
|
|||||||
stormforgedEradictorGUID.Clear();
|
stormforgedEradictorGUID.Clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
public override bool OnTrigger(Player player, AreaTriggerRecord areaTrigger, bool entered)
|
public override bool OnTrigger(Player player, AreaTriggerRecord areaTrigger)
|
||||||
{
|
{
|
||||||
if (player.GetQuestStatus(QuestIds.TheLonesomeWatcher) != QuestStatus.Incomplete)
|
if (player.GetQuestStatus(QuestIds.TheLonesomeWatcher) != QuestStatus.Incomplete)
|
||||||
return false;
|
return false;
|
||||||
|
|||||||
Reference in New Issue
Block a user