From 967624c6644f641d261d82c4284e091793bca718 Mon Sep 17 00:00:00 2001 From: hondacrx Date: Thu, 14 Sep 2023 04:53:47 -0400 Subject: [PATCH] Scripts/AreaTrigger: Added CanCaptureFlag and CaptureFlag hooks Port From (https://github.com/TrinityCore/TrinityCore/commit/30f57de184fb96dfb6c548201e7717fa293682e1) --- Source/Game/Maps/ZoneScript.cs | 3 +++ Source/Scripts/World/AreaTrigger.cs | 22 ++++++++++++++++++++-- 2 files changed, 23 insertions(+), 2 deletions(-) diff --git a/Source/Game/Maps/ZoneScript.cs b/Source/Game/Maps/ZoneScript.cs index 00976e43e..ff033d23e 100644 --- a/Source/Game/Maps/ZoneScript.cs +++ b/Source/Game/Maps/ZoneScript.cs @@ -46,6 +46,9 @@ namespace Game.Maps public virtual void OnFlagStateChange(GameObject flagInBase, FlagState oldValue, FlagState newValue, Player player) { } + public virtual bool CanCaptureFlag(AreaTrigger areaTrigger, Player player) { return false; } + public virtual void OnCaptureFlag(AreaTrigger areaTrigger, Player player) { } + protected EventMap _events = new(); } } diff --git a/Source/Scripts/World/AreaTrigger.cs b/Source/Scripts/World/AreaTrigger.cs index cc6bc9759..04704e743 100644 --- a/Source/Scripts/World/AreaTrigger.cs +++ b/Source/Scripts/World/AreaTrigger.cs @@ -2,12 +2,13 @@ // Licensed under the GNU GENERAL PUBLIC LICENSE. See LICENSE file in the project root for full license information. using Framework.Constants; +using Game.AI; using Game.DataStorage; using Game.Entities; +using Game.Maps; using Game.Scripting; -using System.Collections.Generic; -using Game.AI; using System; +using System.Collections.Generic; namespace Scripts.World.Areatriggers { @@ -433,4 +434,21 @@ namespace Scripts.World.Areatriggers return true; } } + + [Script] + class areatrigger_action_capture_flag : AreaTriggerAI + { + public areatrigger_action_capture_flag(AreaTrigger areatrigger) : base(areatrigger) { } + + public override void OnUnitEnter(Unit unit) + { + if (!unit.IsPlayer()) + return; + + Player player = unit.ToPlayer(); + ZoneScript zoneScript = at.GetZoneScript(); + if (zoneScript != null && zoneScript.CanCaptureFlag(at, player)) + zoneScript.OnCaptureFlag(at, player); + } + } } \ No newline at end of file