using System.Diagnostics; using PkmnLib.Dynamic.Models; using PkmnLib.Dynamic.Models.Choices; using PkmnLib.Dynamic.ScriptHandling.Registry; using PkmnLib.Static; using PkmnLib.Static.Moves; using PkmnLib.Static.Utils; namespace PkmnLib.Dynamic.ScriptHandling; /// /// The script class is used to make changes to how a battle executes, without requiring hardcoded /// changes. This allows for easily defining generational differences, and add effects that the /// developer might require. /// [DebuggerDisplay("{Category} - {Name}")] public abstract class Script : IDeepCloneable, IScriptOnRemove { internal event Action