diff --git a/Game/AI/SmartScripts/SmartAI.cs b/Game/AI/SmartScripts/SmartAI.cs index 3964e43aa..858e86811 100644 --- a/Game/AI/SmartScripts/SmartAI.cs +++ b/Game/AI/SmartScripts/SmartAI.cs @@ -1089,58 +1089,6 @@ namespace Game.AI SmartScript mScript = new SmartScript(); } - [Script] - class SmartTrigger : AreaTriggerScript - { - public SmartTrigger() : base("SmartTrigger") { } - - public override bool OnTrigger(Player player, AreaTriggerRecord trigger, bool entered) - { - if (!player.IsAlive()) - return false; - - Log.outDebug(LogFilter.ScriptsAi, "AreaTrigger {0} is using SmartTrigger script", trigger.Id); - SmartScript script = new SmartScript(); - script.OnInitialize(trigger); - script.ProcessEventsFor(SmartEvents.AreatriggerOntrigger, player, trigger.Id); - return true; - } - } - - [Script] - class SmartScene : SceneScript - { - public SmartScene() : base("SmartScene") { } - - public override void OnSceneStart(Player player, uint sceneInstanceID, SceneTemplate sceneTemplate) - { - SmartScript smartScript = new SmartScript(); - smartScript.OnInitialize(sceneTemplate); - smartScript.ProcessEventsFor(SmartEvents.SceneStart, player); - } - - public override void OnSceneTriggerEvent(Player player, uint sceneInstanceID, SceneTemplate sceneTemplate, string triggerName) - { - SmartScript smartScript = new SmartScript(); - smartScript.OnInitialize(sceneTemplate); - smartScript.ProcessEventsFor(SmartEvents.SceneTrigger, player, 0, 0, false, null, null, triggerName); - } - - public override void OnSceneCancel(Player player, uint sceneInstanceID, SceneTemplate sceneTemplate) - { - SmartScript smartScript = new SmartScript(); - smartScript.OnInitialize(sceneTemplate); - smartScript.ProcessEventsFor(SmartEvents.SceneCancel, player); - } - - public override void OnSceneComplete(Player player, uint sceneInstanceID, SceneTemplate sceneTemplate) - { - SmartScript smartScript = new SmartScript(); - smartScript.OnInitialize(sceneTemplate); - smartScript.ProcessEventsFor(SmartEvents.SceneComplete, player); - } - } - public enum SmartEscortState { None = 0x00, //nothing in progress diff --git a/Game/OutdoorPVP/Zones/HellfirePeninsulaPvP.cs b/Game/OutdoorPVP/Zones/HellfirePeninsulaPvP.cs index 9eb0fa197..b26d7bc47 100644 --- a/Game/OutdoorPVP/Zones/HellfirePeninsulaPvP.cs +++ b/Game/OutdoorPVP/Zones/HellfirePeninsulaPvP.cs @@ -23,7 +23,7 @@ using Game.Scripting; namespace Game.PvP { - class HellfirePeninsulaPvP : OutdoorPvP + public class HellfirePeninsulaPvP : OutdoorPvP { public HellfirePeninsulaPvP() { @@ -310,17 +310,6 @@ namespace Game.PvP uint m_TowerType; } - [Script] - class HellfirePeninsulaPvPScript : OutdoorPvPScript - { - public HellfirePeninsulaPvPScript() : base("outdoorpvp_hp") { } - - public override OutdoorPvP GetOutdoorPvP() - { - return new HellfirePeninsulaPvP(); - } - } - struct HPConst { public static uint[] LangCapture_A = { DefenseMessages.BrokenHillTakenAlliance, DefenseMessages.OverlookTakenAlliance, DefenseMessages.StadiumTakenAlliance }; diff --git a/Game/Scripting/ScriptManager.cs b/Game/Scripting/ScriptManager.cs index cc8689c59..a6c34f365 100644 --- a/Game/Scripting/ScriptManager.cs +++ b/Game/Scripting/ScriptManager.cs @@ -56,26 +56,27 @@ namespace Game.Scripting FillSpellSummary(); - //Load Core Scripts - LoadScripts(Assembly.GetExecutingAssembly()); - //Load Scripts.dll - if (!File.Exists("Scripts.dll")) - Log.outError(LogFilter.ServerLoading, "Cant find file {0}, Only Core Scripts are loaded."); - else - { - Assembly asm = Assembly.LoadFile(Path.GetFullPath("Scripts.dll")); - if (asm == null) - Log.outError(LogFilter.ServerLoading, "Error Loading Scripts.dll, Only Core Scripts are loaded."); - else - LoadScripts(asm); - } + LoadScripts(); Log.outInfo(LogFilter.ServerLoading, $"Loaded {GetScriptCount()} C# scripts in {Time.GetMSTimeDiffToNow(oldMSTime)} ms"); } - public void LoadScripts(Assembly assembly) + public void LoadScripts() { + if (!File.Exists("Scripts.dll")) + { + Log.outError(LogFilter.ServerLoading, "Cant find file {0}, Only Core Scripts are loaded."); + return; + } + + Assembly assembly = Assembly.LoadFile(Path.GetFullPath("Scripts.dll")); + if (assembly == null) + { + Log.outError(LogFilter.ServerLoading, "Error Loading Scripts.dll, Only Core Scripts are loaded."); + return; + } + foreach (var type in assembly.GetTypes()) { var attributes = (ScriptAttribute[])type.GetCustomAttributes(); diff --git a/Scripts/Outlands/HellfirePeninsula.cs b/Scripts/Outlands/HellfirePeninsula.cs index 3d1f96959..df7634db7 100644 --- a/Scripts/Outlands/HellfirePeninsula.cs +++ b/Scripts/Outlands/HellfirePeninsula.cs @@ -20,6 +20,7 @@ using Game; using Game.AI; using Game.Entities; using Game.Scripting; +using Game.PvP; namespace Scripts.Outlands { @@ -297,5 +298,16 @@ namespace Scripts.Outlands const uint SPELL_SUMMON_POO = 37688; const uint NPC_DERANGED_HELBOAR = 16863; } + + [Script] + class HellfirePeninsulaPvPScript : OutdoorPvPScript + { + public HellfirePeninsulaPvPScript() : base("outdoorpvp_hp") { } + + public override OutdoorPvP GetOutdoorPvP() + { + return new HellfirePeninsulaPvP(); + } + } } diff --git a/Scripts/Scripts.csproj b/Scripts/Scripts.csproj index 94f70a987..1f2db405e 100644 --- a/Scripts/Scripts.csproj +++ b/Scripts/Scripts.csproj @@ -74,6 +74,7 @@ + diff --git a/Scripts/Smart/SmartAI.cs b/Scripts/Smart/SmartAI.cs new file mode 100644 index 000000000..0e2aeb914 --- /dev/null +++ b/Scripts/Smart/SmartAI.cs @@ -0,0 +1,79 @@ +/* + * Copyright (C) 2012-2017 CypherCore + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +using Framework.Constants; +using Game; +using Game.AI; +using Game.Entities; +using Game.Scripting; +using System.Collections.Generic; +using Game.DataStorage; + +namespace Scripts.Smart +{ + [Script] + class SmartTrigger : AreaTriggerScript + { + public SmartTrigger() : base("SmartTrigger") { } + + public override bool OnTrigger(Player player, AreaTriggerRecord trigger, bool entered) + { + if (!player.IsAlive()) + return false; + + Log.outDebug(LogFilter.ScriptsAi, "AreaTrigger {0} is using SmartTrigger script", trigger.Id); + SmartScript script = new SmartScript(); + script.OnInitialize(trigger); + script.ProcessEventsFor(SmartEvents.AreatriggerOntrigger, player, trigger.Id); + return true; + } + } + + [Script] + class SmartScene : SceneScript + { + public SmartScene() : base("SmartScene") { } + + public override void OnSceneStart(Player player, uint sceneInstanceID, SceneTemplate sceneTemplate) + { + SmartScript smartScript = new SmartScript(); + smartScript.OnInitialize(sceneTemplate); + smartScript.ProcessEventsFor(SmartEvents.SceneStart, player); + } + + public override void OnSceneTriggerEvent(Player player, uint sceneInstanceID, SceneTemplate sceneTemplate, string triggerName) + { + SmartScript smartScript = new SmartScript(); + smartScript.OnInitialize(sceneTemplate); + smartScript.ProcessEventsFor(SmartEvents.SceneTrigger, player, 0, 0, false, null, null, triggerName); + } + + public override void OnSceneCancel(Player player, uint sceneInstanceID, SceneTemplate sceneTemplate) + { + SmartScript smartScript = new SmartScript(); + smartScript.OnInitialize(sceneTemplate); + smartScript.ProcessEventsFor(SmartEvents.SceneCancel, player); + } + + public override void OnSceneComplete(Player player, uint sceneInstanceID, SceneTemplate sceneTemplate) + { + SmartScript smartScript = new SmartScript(); + smartScript.OnInitialize(sceneTemplate); + smartScript.ProcessEventsFor(SmartEvents.SceneComplete, player); + } + } +}