/// <summary>
		/// A simple construtor that initializes the object with the given dependencies.
		/// </summary>
		/// <param name="p_msfFunctions">The object that proxies the script function calls
		/// out of the sandbox.</param>
		public ModScriptInterpreterContext(ModScriptFunctionProxy p_msfFunctions)
		{
			Variables = new Dictionary<string, string>(StringComparer.InvariantCultureIgnoreCase);
			FunctionProxy = p_msfFunctions;
			Variables.Add("NewLine", Environment.NewLine);
			Variables.Add("Tab", "\t");
		}
		/// <summary>
		/// A simple construtor that initializes the object with the given values.
		/// </summary>
		/// <param name="p_msfFunctions">The object that implements the script functions.</param>
		/// <param name="p_strScript">The script to execute.</param>
		public ModScriptInterpreter(ModScriptFunctionProxy p_msfFunctions, string p_strScript)
		{
			m_strScript = p_strScript;
			Regex rgxAllowRunOnLines = new Regex(@"^\s*AllowRunOnLines\s*$", RegexOptions.Multiline);
			if (rgxAllowRunOnLines.IsMatch(m_strScript))
			{
				m_strScript = rgxAllowRunOnLines.Replace(m_strScript, "");
				Regex rgxContinuedLines = new Regex(@"\\\s*\n", RegexOptions.Multiline);
				m_strScript = rgxContinuedLines.Replace(m_strScript, "");
			}
			m_sicContext = CreateInterpreterContext(p_msfFunctions);
		}
 /// <summary>
 /// Creates the context object that tracks the state of the script being executed.
 /// </summary>
 /// <param name="p_msfFunctions">The object that implements the script functions.</param>
 /// <returns>The context object to use to track the state of the script being executed.</returns>
 protected override ModScriptInterpreterContext CreateInterpreterContext(ModScriptFunctionProxy p_msfFunctions)
 {
     return new MorrowindModScriptInterpreterContext(p_msfFunctions);
 }
 /// <summary>
 /// A simple construtor that initializes the object with the given values.
 /// </summary>
 /// <param name="p_msfFunctions">The object that implements the script functions.</param>
 /// <param name="p_strScript">The script to execute.</param>
 public MorrowindModScriptInterpreter(ModScriptFunctionProxy p_msfFunctions, string p_strScript)
     : base(p_msfFunctions, p_strScript)
 {
 }
		/// <summary>
		/// A simple construtor that initializes the object with the given dependencies.
		/// </summary>
		/// <param name="p_msfFunctions">The object that proxies the script function calls
		/// out of the sandbox.</param>
		public OblivionModScriptInterpreterContext(ModScriptFunctionProxy p_msfFunctions)
			: base(p_msfFunctions)
		{
		}
		/// <summary>
		/// A simple construtor that initializes the object with the given values.
		/// </summary>
		/// <param name="p_msfFunctions">The object that implements the script functions.</param>
		/// <param name="p_strScript">The script to execute.</param>
		public OblivionModScriptInterpreter(ModScriptFunctionProxy p_msfFunctions, string p_strScript)
			: base(p_msfFunctions, p_strScript)
		{
		}
        /// <summary>
        /// A simple construtor that initializes the object with the given values.
        /// </summary>
        /// <param name="p_msfFunctions">The object that implements the script functions.</param>
        /// <param name="p_strScript">The script to execute.</param>
		public DragonAge2ModScriptInterpreter(ModScriptFunctionProxy p_msfFunctions, string p_strScript)
            : base(p_msfFunctions, p_strScript)
        {
        }
        /// <summary>
        /// A simple construtor that initializes the object with the given dependencies.
        /// </summary>
        /// <param name="p_msfFunctions">The object that proxies the script function calls
        /// out of the sandbox.</param>
		public Witcher2ModScriptInterpreterContext(ModScriptFunctionProxy p_msfFunctions)
            : base(p_msfFunctions)
        {
        }
		/// <summary>
		/// A simple construtor that initializes the object with the given dependencies.
		/// </summary>
		/// <param name="p_msfFunctions">The object that implements the script functions.</param>
		public ScriptRunner(ModScriptFunctionProxy p_msfFunctions)
		{
			m_msfFunctions = p_msfFunctions;
		}
 /// <summary>
 /// A simple construtor that initializes the object with the given dependencies.
 /// </summary>
 /// <param name="p_msfFunctions">The object that proxies the script function calls
 /// out of the sandbox.</param>
 public StarboundModScriptInterpreterContext(ModScriptFunctionProxy p_msfFunctions)
     : base(p_msfFunctions)
 {
 }
        /// <summary>
        /// A simple construtor that initializes the object with the given values.
        /// </summary>
        /// <param name="p_msfFunctions">The object that implements the script functions.</param>
        /// <param name="p_strScript">The script to execute.</param>
		public GrimrockModScriptInterpreter(ModScriptFunctionProxy p_msfFunctions, string p_strScript)
            : base(p_msfFunctions, p_strScript)
        {
        }
        /// <summary>
        /// Creates the context object that tracks the state of the script being executed.
        /// </summary>
        /// <param name="p_msfFunctions">The object that implements the script functions.</param>
        /// <returns>The context object to use to track the state of the script being executed.</returns>
        protected override ModScriptInterpreterContext CreateInterpreterContext(ModScriptFunctionProxy p_msfFunctions)
        {
			return new StateOfDecayModScriptInterpreterContext(p_msfFunctions);
        }
        /// <summary>
        /// A simple construtor that initializes the object with the given values.
        /// </summary>
        /// <param name="p_msfFunctions">The object that implements the script functions.</param>
        /// <param name="p_strScript">The script to execute.</param>
		public StateOfDecayModScriptInterpreter(ModScriptFunctionProxy p_msfFunctions, string p_strScript)
            : base(p_msfFunctions, p_strScript)
        {
        }
		/// <summary>
		/// Creates the context object that tracks the state of the script being executed.
		/// </summary>
		/// <param name="p_msfFunctions">The object that implements the script functions.</param>
		/// <returns>The context object to use to track the state of the script being executed.</returns>
		protected virtual ModScriptInterpreterContext CreateInterpreterContext(ModScriptFunctionProxy p_msfFunctions)
		{
			return new ModScriptInterpreterContext(p_msfFunctions);
		}
        /// <summary>
        /// A simple construtor that initializes the object with the given dependencies.
        /// </summary>
        /// <param name="p_msfFunctions">The object that proxies the script function calls
        /// out of the sandbox.</param>
		public GrimrockModScriptInterpreterContext(ModScriptFunctionProxy p_msfFunctions)
            : base(p_msfFunctions)
        {
        }
        /// <summary>
        /// A simple construtor that initializes the object with the given dependencies.
        /// </summary>
        /// <param name="p_msfFunctions">The object that proxies the script function calls
        /// out of the sandbox.</param>
		public DarkSoulsModScriptInterpreterContext(ModScriptFunctionProxy p_msfFunctions)
            : base(p_msfFunctions)
        {
        }
        /// <summary>
        /// A simple construtor that initializes the object with the given dependencies.
        /// </summary>
        /// <param name="p_msfFunctions">The object that proxies the script function calls
        /// out of the sandbox.</param>
		public DragonAgeModScriptInterpreterContext(ModScriptFunctionProxy p_msfFunctions)
            : base(p_msfFunctions)
        {
        }
        /// <summary>
        /// A simple construtor that initializes the object with the given values.
        /// </summary>
        /// <param name="p_msfFunctions">The object that implements the script functions.</param>
        /// <param name="p_strScript">The script to execute.</param>
		public DarkSouls2ModScriptInterpreter(ModScriptFunctionProxy p_msfFunctions, string p_strScript)
            : base(p_msfFunctions, p_strScript)
        {
        }
		/// <summary>
		/// A simple constructor that initializes the object with the given values.
		/// </summary>
		/// <param name="p_gmdGameMode">The game mode currently being managed.</param>
		/// <param name="p_eifEnvironmentInfo">The application's envrionment info.</param>
		/// <param name="p_msfFunctions">The proxy providing the implementations of the functions available to the mod script script.</param>
		public ModScriptExecutor(IGameMode p_gmdGameMode, IEnvironmentInfo p_eifEnvironmentInfo, ModScriptFunctionProxy p_msfFunctions)
		{
			m_gmdGameMode = p_gmdGameMode;
			m_eifEnvironmentInfo = p_eifEnvironmentInfo;
			m_msfFunctions = p_msfFunctions;
		}
 /// <summary>
 /// A simple construtor that initializes the object with the given dependencies.
 /// </summary>
 /// <param name="p_msfFunctions">The object that proxies the script function calls
 /// out of the sandbox.</param>
 public MorrowindModScriptInterpreterContext(ModScriptFunctionProxy p_msfFunctions)
     : base(p_msfFunctions)
 {
 }
 /// <summary>
 /// A simple construtor that initializes the object with the given values.
 /// </summary>
 /// <param name="p_msfFunctions">The object that implements the script functions.</param>
 /// <param name="p_strScript">The script to execute.</param>
 public Witcher2ModScriptInterpreter(ModScriptFunctionProxy p_msfFunctions, string p_strScript)
     : base(p_msfFunctions, p_strScript)
 {
 }
        /// <summary>
        /// Creates the context object that tracks the state of the script being executed.
        /// </summary>
        /// <param name="p_msfFunctions">The object that implements the script functions.</param>
        /// <returns>The context object to use to track the state of the script being executed.</returns>
        protected override ModScriptInterpreterContext CreateInterpreterContext(ModScriptFunctionProxy p_msfFunctions)
        {
			return new DragonAge2ModScriptInterpreterContext(p_msfFunctions);
        }
        /// <summary>
        /// A simple construtor that initializes the object with the given dependencies.
        /// </summary>
        /// <param name="p_msfFunctions">The object that proxies the script function calls
        /// out of the sandbox.</param>
		public StateOfDecayModScriptInterpreterContext(ModScriptFunctionProxy p_msfFunctions)
            : base(p_msfFunctions)
        {
        }