From b7bdf2b7449bd5eb5b130ac6ad68524f95da4fe1 Mon Sep 17 00:00:00 2001 From: Deukhoofd Date: Sat, 28 Jun 2025 12:02:24 +0200 Subject: [PATCH] Refactor move classes to implement respective interfaces for better structure --- .../BattleFlow/MoveTurnExecutor.cs | 23 +- PkmnLib.Dynamic/BattleFlow/TurnRunner.cs | 2 +- PkmnLib.Dynamic/Models/Battle.cs | 7 +- PkmnLib.Dynamic/Models/BattleChoiceQueue.cs | 2 +- PkmnLib.Dynamic/ScriptHandling/Script.cs | 258 +++++++++++------- .../Scripts/Abilities/BattleBond.cs | 4 +- .../Scripts/Abilities/GaleWings.cs | 4 +- .../Scripts/Abilities/LightningRod.cs | 4 +- .../Scripts/Abilities/MagicBounce.cs | 4 +- .../Scripts/Abilities/ParentalBond.cs | 4 +- .../Scripts/Abilities/Prankster.cs | 4 +- .../Scripts/Abilities/Protean.cs | 4 +- .../Scripts/Abilities/QuickFeet.cs | 4 +- .../Scripts/Abilities/SandRush.cs | 4 +- .../Scripts/Abilities/SlushRush.cs | 4 +- .../Abilities/SpeedModifierInWeather.cs | 4 +- .../Scripts/Abilities/Stall.cs | 4 +- .../Scripts/Abilities/StanceChange.cs | 4 +- .../Scripts/Abilities/StormDrain.cs | 4 +- .../Scripts/Abilities/SurgeSurfer.cs | 4 +- .../Scripts/Abilities/SwiftSwim.cs | 4 +- .../Scripts/Abilities/Triage.cs | 4 +- .../Scripts/Abilities/Truant.cs | 4 +- .../Scripts/Abilities/Unburden.cs | 4 +- .../Scripts/Battle/SnatchEffect.cs | 4 +- .../Scripts/Battle/TrickRoomEffect.cs | 4 +- .../Scripts/Battle/UproarEffect.cs | 4 +- .../MoveVolatile/FireGrassPledgeMove.cs | 4 +- .../MoveVolatile/FireWaterPledgeMove.cs | 4 +- .../MoveVolatile/GrassWaterPledgeMove.cs | 4 +- .../Scripts/Moves/Assist.cs | 4 +- .../Scripts/Moves/BaseChargeMove.cs | 7 +- .../Scripts/Moves/BeakBlast.cs | 4 +- .../Scripts/Moves/BeatUp.cs | 4 +- .../Scripts/Moves/Bounce.cs | 6 +- .../Scripts/Moves/BrickBreak.cs | 4 +- .../Scripts/Moves/ChargeMove.cs | 4 +- .../Scripts/Moves/Copycat.cs | 4 +- .../Scripts/Moves/Counter.cs | 6 +- .../PkmnLib.Plugin.Gen7/Scripts/Moves/Dig.cs | 6 +- .../PkmnLib.Plugin.Gen7/Scripts/Moves/Dive.cs | 4 +- .../Scripts/Moves/DoubleHitMove.cs | 4 +- .../Moves/DoublePowerIfTargetDamagedInTurn.cs | 4 +- .../Scripts/Moves/FakeOut.cs | 4 +- .../Scripts/Moves/FirePledge.cs | 4 +- .../Scripts/Moves/FirstImpression.cs | 4 +- .../PkmnLib.Plugin.Gen7/Scripts/Moves/Fly.cs | 6 +- .../Scripts/Moves/FocusPunch.cs | 6 +- .../Scripts/Moves/FollowMe.cs | 4 +- .../Scripts/Moves/FutureSight.cs | 4 +- .../Scripts/Moves/GrassPledge.cs | 4 +- .../Scripts/Moves/MeFirst.cs | 4 +- .../Scripts/Moves/MetalBurst.cs | 4 +- .../Scripts/Moves/Metronome.cs | 4 +- .../Scripts/Moves/MirrorCoat.cs | 4 +- .../Scripts/Moves/MirrorMove.cs | 4 +- .../Scripts/Moves/MultiHitMove.cs | 4 +- .../Scripts/Moves/NaturePower.cs | 4 +- .../Scripts/Moves/ParabolicCharge.cs | 4 +- .../Scripts/Moves/PhantomForce.cs | 4 +- .../Scripts/Moves/Pursuit.cs | 6 +- .../Scripts/Moves/RazorWind.cs | 4 +- .../Scripts/Moves/Round.cs | 4 +- .../Scripts/Moves/SelfDestruct.cs | 4 +- .../Scripts/Moves/ShadowForce.cs | 4 +- .../Scripts/Moves/ShellTrap.cs | 6 +- .../Scripts/Moves/SkullBash.cs | 4 +- .../Scripts/Moves/SkyAttack.cs | 4 +- .../Scripts/Moves/SkyDrop.cs | 6 +- .../Scripts/Moves/SleepTalk.cs | 4 +- .../Scripts/Moves/Snore.cs | 4 +- .../Scripts/Moves/Struggle.cs | 4 +- .../Scripts/Moves/Synchronoise.cs | 4 +- .../Scripts/Moves/TripleKick.cs | 4 +- .../Scripts/Moves/Twineedle.cs | 4 +- .../Scripts/Moves/WaterPledge.cs | 4 +- .../Scripts/Pokemon/BaseChargeEffect.cs | 4 +- .../Scripts/Pokemon/BideEffect.cs | 4 +- .../Scripts/Pokemon/ChargeBounceEffect.cs | 4 +- .../Scripts/Pokemon/ChargeFlyEffect.cs | 4 +- .../Scripts/Pokemon/ChargeMoveEffect.cs | 4 +- .../Scripts/Pokemon/ChargeSkyDropEffect.cs | 4 +- .../Scripts/Pokemon/Confusion.cs | 4 +- .../Scripts/Pokemon/DestinyBondEffect.cs | 4 +- .../Scripts/Pokemon/DigEffect.cs | 4 +- .../Scripts/Pokemon/DiveEffect.cs | 4 +- .../Scripts/Pokemon/EncoreEffect.cs | 4 +- .../Scripts/Pokemon/FlinchEffect.cs | 4 +- .../Scripts/Pokemon/FuryCutterEffect.cs | 4 +- .../Scripts/Pokemon/HealBlockEffect.cs | 4 +- .../Scripts/Pokemon/IceBallEffect.cs | 4 +- .../Scripts/Pokemon/Infatuated.cs | 4 +- .../Scripts/Pokemon/OutrageLikeEffect.cs | 4 +- .../Scripts/Pokemon/PhantomForceCharge.cs | 4 +- .../Pokemon/ProtectionFailureScript.cs | 4 +- .../Scripts/Pokemon/RequiresRechargeEffect.cs | 6 +- .../Scripts/Pokemon/ShadowForceCharge.cs | 4 +- .../Scripts/Pokemon/SkullbashEffect.cs | 4 +- .../Scripts/Pokemon/SkyAttackEffect.cs | 4 +- .../Scripts/Pokemon/SlowStartEffect.cs | 4 +- .../Scripts/Pokemon/TauntEffect.cs | 4 +- .../Scripts/Pokemon/ThroatChopEffect.cs | 4 +- .../Scripts/Pokemon/TormentEffect.cs | 4 +- .../Scripts/Pokemon/TruantEffect.cs | 4 +- .../Scripts/Side/CraftyShieldEffect.cs | 4 +- .../Scripts/Side/RagePowderEffect.cs | 4 +- .../Scripts/Side/SpotlightEffect.cs | 4 +- .../Scripts/Side/SwampEffect.cs | 4 +- .../Scripts/Side/TailwindEffect.cs | 4 +- .../Scripts/Side/WideGuardEffect.cs | 4 +- .../Scripts/Status/Frozen.cs | 4 +- .../Scripts/Status/Paralyzed.cs | 6 +- .../Scripts/Status/Sleep.cs | 4 +- .../Scripts/Weather/DesolateLands.cs | 4 +- .../Scripts/Weather/PrimordialSea.cs | 4 +- 115 files changed, 407 insertions(+), 348 deletions(-) diff --git a/PkmnLib.Dynamic/BattleFlow/MoveTurnExecutor.cs b/PkmnLib.Dynamic/BattleFlow/MoveTurnExecutor.cs index 6648f85..572b5f6 100644 --- a/PkmnLib.Dynamic/BattleFlow/MoveTurnExecutor.cs +++ b/PkmnLib.Dynamic/BattleFlow/MoveTurnExecutor.cs @@ -19,7 +19,7 @@ public static class MoveTurnExecutor var useMove = chosenMove.MoveData; var moveDataName = useMove.Name; - moveChoice.RunScriptHook(x => x.ChangeMove(moveChoice, ref moveDataName)); + moveChoice.RunScriptHookInterface(x => x.ChangeMove(moveChoice, ref moveDataName)); if (useMove.Name != moveDataName) { if (!battle.Library.StaticLibrary.Moves.TryGet(moveDataName, out useMove)) @@ -51,17 +51,22 @@ public static class MoveTurnExecutor var targetType = useMove.Target; var targets = TargetResolver.ResolveTargets(battle, moveChoice.TargetSide, moveChoice.TargetPosition, targetType); - moveChoice.RunScriptHook(x => x.ChangeTargets(moveChoice, ref targets)); + moveChoice.RunScriptHookInterface(x => x.ChangeTargets(moveChoice, ref targets)); if (targets.Count == 0) { moveChoice.Fail(); return; } - targets.WhereNotNull().RunScriptHook(x => x.ChangeIncomingTargets(moveChoice, ref targets)); + foreach (var target in targets.WhereNotNull()) + { + target.RunScriptHookInterface(x => + x.ChangeIncomingTargets(moveChoice, ref targets)); + } byte numberOfHits = 1; - moveChoice.RunScriptHook(x => x.ChangeNumberOfHits(moveChoice, ref numberOfHits)); + moveChoice.RunScriptHookInterface(x => + x.ChangeNumberOfHits(moveChoice, ref numberOfHits)); if (numberOfHits == 0) { return; @@ -72,7 +77,7 @@ public static class MoveTurnExecutor battle.EventHook.Invoke(new MoveUseEvent(executingMove)); var prevented = false; - executingMove.RunScriptHook(x => x.PreventMove(executingMove, ref prevented)); + executingMove.RunScriptHookInterface(x => x.PreventMove(executingMove, ref prevented)); if (prevented) return; @@ -83,7 +88,7 @@ public static class MoveTurnExecutor return; var failed = false; - executingMove.RunScriptHook(x => x.FailMove(executingMove, ref failed)); + executingMove.RunScriptHookInterface(x => x.FailMove(executingMove, ref failed)); if (failed) { // TODO: fail handling @@ -106,16 +111,16 @@ public static class MoveTurnExecutor public static void ExecuteMove(IExecutingMove executingMove) { var stopped = false; - executingMove.RunScriptHook(x => x.StopBeforeMove(executingMove, ref stopped)); + executingMove.RunScriptHookInterface(x => x.StopBeforeMove(executingMove, ref stopped)); if (stopped) return; - executingMove.RunScriptHook(x => x.OnBeforeMove(executingMove)); + executingMove.RunScriptHookInterface(x => x.OnBeforeMove(executingMove)); foreach (var target in executingMove.Targets.WhereNotNull()) { ExecuteMoveChoiceForTarget(executingMove.Battle, executingMove, target); } - executingMove.RunScriptHook(x => x.OnAfterMove(executingMove)); + executingMove.RunScriptHookInterface(x => x.OnAfterMove(executingMove)); } private static void ExecuteMoveChoiceForTarget(IBattle battle, IExecutingMove executingMove, IPokemon target) diff --git a/PkmnLib.Dynamic/BattleFlow/TurnRunner.cs b/PkmnLib.Dynamic/BattleFlow/TurnRunner.cs index 107dfdd..1255a3c 100644 --- a/PkmnLib.Dynamic/BattleFlow/TurnRunner.cs +++ b/PkmnLib.Dynamic/BattleFlow/TurnRunner.cs @@ -31,7 +31,7 @@ public static class TurnRunner // they can then know this later on.) foreach (var choice in queue.GetChoices().WhereNotNull()) { - choice.RunScriptHook(script => script.OnBeforeTurnStart(choice)); + choice.RunScriptHookInterface(script => script.OnBeforeTurnStart(choice)); } // Now we can properly begin executing choices. diff --git a/PkmnLib.Dynamic/Models/Battle.cs b/PkmnLib.Dynamic/Models/Battle.cs index 11b36ec..561158f 100644 --- a/PkmnLib.Dynamic/Models/Battle.cs +++ b/PkmnLib.Dynamic/Models/Battle.cs @@ -309,7 +309,7 @@ public class BattleImpl : ScriptSource, IBattle } ITurnChoice? forcedChoice = null; - pokemon.RunScriptHook(script => + pokemon.RunScriptHookInterface(script => script.ForceTurnSelection(this, battleData.SideIndex, battleData.Position, ref forcedChoice)); choice = forcedChoice; return choice != null; @@ -375,12 +375,13 @@ public class BattleImpl : ScriptSource, IBattle if (choice is IMoveChoice moveChoice) { var priority = moveChoice.ChosenMove.MoveData.Priority; - choice.RunScriptHook(script => script.ChangePriority(moveChoice, ref priority)); + choice.RunScriptHookInterface(script => + script.ChangePriority(moveChoice, ref priority)); moveChoice.Priority = priority; } var speed = choice.User.BoostedStats.Speed; - choice.RunScriptHook(script => script.ChangeSpeed(choice, ref speed)); + choice.RunScriptHookInterface(script => script.ChangeSpeed(choice, ref speed)); choice.Speed = speed; choice.RandomValue = (uint)Random.GetInt(); diff --git a/PkmnLib.Dynamic/Models/BattleChoiceQueue.cs b/PkmnLib.Dynamic/Models/BattleChoiceQueue.cs index 3533185..b2704c7 100644 --- a/PkmnLib.Dynamic/Models/BattleChoiceQueue.cs +++ b/PkmnLib.Dynamic/Models/BattleChoiceQueue.cs @@ -72,7 +72,7 @@ public class BattleChoiceQueue : IDeepCloneable continue; // Ensure that the speed is up to date var speed = choice.User.BoostedStats.Speed; - choice.User.RunScriptHook(script => script.ChangeSpeed(choice, ref speed)); + choice.User.RunScriptHookInterface(script => script.ChangeSpeed(choice, ref speed)); choice.Speed = speed; } diff --git a/PkmnLib.Dynamic/ScriptHandling/Script.cs b/PkmnLib.Dynamic/ScriptHandling/Script.cs index 1093968..8c088a4 100644 --- a/PkmnLib.Dynamic/ScriptHandling/Script.cs +++ b/PkmnLib.Dynamic/ScriptHandling/Script.cs @@ -61,109 +61,6 @@ public abstract class Script : IDeepCloneable { } - /// - /// Force a certain move choice to be selected. If the choice is set, the Pokemon will be forced - /// to use it, and will not be able to select any other choice. - /// - public virtual void ForceTurnSelection(IBattle battle, byte sideIndex, byte position, ref ITurnChoice? choice) - { - } - - /// - /// This function is ran just before the start of the turn. Everyone has made its choices here, - /// and the turn is about to start. This is a great place to initialize data if you need to know - /// something has happened during a turn. - /// - public virtual void OnBeforeTurnStart(ITurnChoice choice) - { - } - - /// - /// This function allows you to modify the effective speed of the Pokemon. This is run before - /// turn ordering, so overriding here will allow you to put certain Pokemon before others. - /// - public virtual void ChangeSpeed(ITurnChoice choice, ref uint speed) - { - } - - /// - /// This function allows you to modify the effective priority of the Pokemon. This is run before - /// turn ordering, so overriding here will allow you to put certain Pokemon before others. Note - /// that this is only relevant on move choices, as other turn choice types do not have a priority. - /// - public virtual void ChangePriority(IMoveChoice choice, ref sbyte priority) - { - } - - /// - /// This function allows you to change the move that is used during execution. This is useful for - /// moves such as metronome, where the move chosen actually differs from the move used. - /// - public virtual void ChangeMove(IMoveChoice choice, ref StringKey moveName) - { - } - - /// - /// Changes the targets of a move choice. This allows for changing the targets of a move before the move starts. - /// - public virtual void ChangeTargets(IMoveChoice moveChoice, ref IReadOnlyList targets) - { - } - - /// - /// This function allows you to change the targets of a move choice before the move starts. - /// - public virtual void ChangeIncomingTargets(IMoveChoice moveChoice, ref IReadOnlyList targets) - { - } - - /// - /// This function allows you to change a move into a multi-hit move. The number of hits set here - /// gets used as the number of hits. If set to 0, this will behave as if the move missed on its - /// first hit. - /// - public virtual void ChangeNumberOfHits(IMoveChoice choice, ref byte numberOfHits) - { - } - - /// - /// This function allows you to prevent a move from running. If this gets set to true, the move - /// ends execution here. No PP will be decreased in this case. - /// - public virtual void PreventMove(IExecutingMove move, ref bool prevent) - { - } - - /// - /// This function makes the move fail. If the fail field gets set to true, the move ends execution, - /// and fail events get triggered. - /// - public virtual void FailMove(IExecutingMove move, ref bool fail) - { - } - - /// - /// Similar to . This function will also stop execution of the move, but - /// PP will still be decreased. - /// - public virtual void StopBeforeMove(IExecutingMove move, ref bool stop) - { - } - - /// - /// This function runs just before the move starts its execution. - /// - public virtual void OnBeforeMove(IExecutingMove move) - { - } - - /// - /// This function runs immediately after all targets have had their hits executed. - /// - public virtual void OnAfterMove(IExecutingMove move) - { - } - /// /// This function allows a script to prevent a move that is targeted at its owner. If set to true /// the move fails, and fail events get triggered. @@ -858,4 +755,159 @@ public interface IScriptPreventMoveSelection /// Override to customize whether the move can be selected at all. /// void PreventMoveSelection(IMoveChoice choice, ref bool prevent); +} + +/// +/// This interface is used to allow scripts to force a certain turn choice to be selected. +/// +public interface IScriptForceTurnSelection +{ + /// + /// Force a certain move choice to be selected. If the choice is set, the Pokemon will be forced + /// to use it, and will not be able to select any other choice. + /// + void ForceTurnSelection(IBattle battle, byte sideIndex, byte position, ref ITurnChoice? choice); +} + +/// +/// This interface is used to allow scripts to run before the start of a turn. +/// +public interface IScriptOnBeforeTurnStart +{ + /// + /// This function is ran just before the start of the turn. Everyone has made its choices here, + /// and the turn is about to start. This is a great place to initialize data if you need to know + /// something has happened during a turn. + /// + void OnBeforeTurnStart(ITurnChoice choice); +} + +/// +/// This interface allows scripts to modify the effective speed of the Pokemon. +/// +public interface IScriptChangeSpeed +{ + /// + /// This function allows you to modify the effective speed of the Pokemon. This is run before + /// turn ordering, so overriding here will allow you to put certain Pokemon before others. + /// + void ChangeSpeed(ITurnChoice choice, ref uint speed); +} + +/// +/// This interface allows scripts to modify the effective priority of the Pokemon. +/// +public interface IScriptChangePriority +{ + /// + /// This function allows you to modify the effective priority of the Pokemon. This is run before + /// turn ordering, so overriding here will allow you to put certain Pokemon before others. Note + /// that this is only relevant on move choices, as other turn choice types do not have a priority. + /// + void ChangePriority(IMoveChoice choice, ref sbyte priority); +} + +/// +/// This interface allows scripts to change the move that is used during execution. +/// +public interface IScriptChangeMove +{ + /// + /// This function allows you to change the move that is used during execution. This is useful for + /// moves such as metronome, where the move chosen actually differs from the move used. + /// + void ChangeMove(IMoveChoice choice, ref StringKey moveName); +} + +/// +/// This interface allows scripts to change the targets of a move choice. +/// +public interface IScriptChangeTargets +{ + /// + /// Changes the targets of a move choice. This allows for changing the targets of a move before the move starts. + /// + void ChangeTargets(IMoveChoice moveChoice, ref IReadOnlyList targets); +} + +/// +/// This interface allows scripts to change the incoming targets of a move choice. +/// +public interface IScriptChangeIncomingTargets +{ + /// + /// This function allows you to change the targets of a move choice before the move starts. + /// + void ChangeIncomingTargets(IMoveChoice moveChoice, ref IReadOnlyList targets); +} + +/// +/// This interface allows scripts to change a move into a multi-hit move. +/// +public interface IScriptChangeNumberOfHits +{ + /// + /// This function allows you to change a move into a multi-hit move. The number of hits set here + /// gets used as the number of hits. If set to 0, this will behave as if the move missed on its + /// first hit. + /// + void ChangeNumberOfHits(IMoveChoice choice, ref byte numberOfHits); +} + +/// +/// This interface allows scripts to prevent a move from running. +/// +public interface IScriptPreventMove +{ + /// + /// This function allows you to prevent a move from running. If this gets set to true, the move + /// ends execution here. No PP will be decreased in this case. + /// + void PreventMove(IExecutingMove move, ref bool prevent); +} + +/// +/// This interface allows scripts to make the move fail. +/// +public interface IScriptFailMove +{ + /// + /// This function makes the move fail. If the fail field gets set to true, the move ends execution, + /// and fail events get triggered. + /// + void FailMove(IExecutingMove move, ref bool fail); +} + +/// +/// This interface allows scripts to stop execution of the move before it starts. +/// +public interface IScriptStopBeforeMove +{ + /// + /// Similar to . This function will also stop execution of the move, but + /// PP will still be decreased. + /// + void StopBeforeMove(IExecutingMove move, ref bool stop); +} + +/// +/// This interface allows scripts to run just before the move starts its execution. +/// +public interface IScriptOnBeforeMove +{ + /// + /// This function runs just before the move starts its execution. + /// + void OnBeforeMove(IExecutingMove move); +} + +/// +/// This interface allows scripts to run immediately after all targets have had their hits executed. +/// +public interface IScriptOnAfterMove +{ + /// + /// This function runs immediately after all targets have had their hits executed. + /// + void OnAfterMove(IExecutingMove move); } \ No newline at end of file diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/BattleBond.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/BattleBond.cs index acccab6..2c031c2 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/BattleBond.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/BattleBond.cs @@ -7,7 +7,7 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Abilities; /// Bulbapedia - Battle Bond /// [Script(ScriptCategory.Ability, "battle_bond")] -public class BattleBond : Script +public class BattleBond : Script, IScriptChangeNumberOfHits { /// public override void OnOpponentFaints(IExecutingMove move, IPokemon target, byte hit) @@ -28,7 +28,7 @@ public class BattleBond : Script } /// - public override void ChangeNumberOfHits(IMoveChoice choice, ref byte numberOfHits) + public void ChangeNumberOfHits(IMoveChoice choice, ref byte numberOfHits) { if (choice.ChosenMove.MoveData.Name == "water_shuriken" && choice.User.Form.Name == "ash") { diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/GaleWings.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/GaleWings.cs index bafe6b8..b1f6b64 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/GaleWings.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/GaleWings.cs @@ -7,10 +7,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Abilities; /// Bulbapedia - Gale Wings /// [Script(ScriptCategory.Ability, "gale_wings")] -public class GaleWings : Script +public class GaleWings : Script, IScriptChangePriority { /// - public override void ChangePriority(IMoveChoice choice, ref sbyte priority) + public void ChangePriority(IMoveChoice choice, ref sbyte priority) { if (choice.User.CurrentHealth != choice.User.MaxHealth) return; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/LightningRod.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/LightningRod.cs index e993b0b..d6dc8b3 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/LightningRod.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/LightningRod.cs @@ -6,10 +6,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Abilities; /// Bulbapedia - Lightning Rod /// [Script(ScriptCategory.Ability, "lightning_rod")] -public class LightningRod : Script +public class LightningRod : Script, IScriptChangeIncomingTargets { /// - public override void ChangeIncomingTargets(IMoveChoice moveChoice, ref IReadOnlyList targets) + public void ChangeIncomingTargets(IMoveChoice moveChoice, ref IReadOnlyList targets) { if (moveChoice.ChosenMove.MoveData.MoveType.Name == "electric" && targets.Count == 1) { diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/MagicBounce.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/MagicBounce.cs index d72eba4..b4f7917 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/MagicBounce.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/MagicBounce.cs @@ -6,10 +6,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Abilities; /// Bulbapedia - Magic Bounce /// [Script(ScriptCategory.Ability, "magic_bounce")] -public class MagicBounce : Script +public class MagicBounce : Script, IScriptChangeIncomingTargets { /// - public override void ChangeIncomingTargets(IMoveChoice moveChoice, ref IReadOnlyList targets) + public void ChangeIncomingTargets(IMoveChoice moveChoice, ref IReadOnlyList targets) { if (moveChoice.ChosenMove.MoveData.HasFlag("reflectable")) { diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/ParentalBond.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/ParentalBond.cs index 8e82aba..66be13b 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/ParentalBond.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/ParentalBond.cs @@ -6,10 +6,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Abilities; /// Bulbapedia - Parental Bond /// [Script(ScriptCategory.Ability, "parental_bond")] -public class ParentalBond : Script +public class ParentalBond : Script, IScriptChangeNumberOfHits { /// - public override void ChangeNumberOfHits(IMoveChoice choice, ref byte numberOfHits) + public void ChangeNumberOfHits(IMoveChoice choice, ref byte numberOfHits) { if (numberOfHits == 1) numberOfHits = 2; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Prankster.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Prankster.cs index 32d43d6..2db98e0 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Prankster.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Prankster.cs @@ -8,10 +8,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Abilities; /// Bulbapedia - Prankster /// [Script(ScriptCategory.Ability, "prankster")] -public class Prankster : Script +public class Prankster : Script, IScriptChangePriority { /// - public override void ChangePriority(IMoveChoice choice, ref sbyte priority) + public void ChangePriority(IMoveChoice choice, ref sbyte priority) { if (choice.ChosenMove.MoveData.Category == MoveCategory.Status && priority != sbyte.MaxValue) priority++; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Protean.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Protean.cs index 4fd6eff..2295217 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Protean.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Protean.cs @@ -6,10 +6,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Abilities; /// Bulbapedia - Protean /// [Script(ScriptCategory.Ability, "protean")] -public class Protean : Script +public class Protean : Script, IScriptOnBeforeMove { /// - public override void OnBeforeMove(IExecutingMove move) + public void OnBeforeMove(IExecutingMove move) { if (move.User.Types.Count == 1 && move.User.Types[0] == move.UseMove.MoveType) return; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/QuickFeet.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/QuickFeet.cs index fd836ee..04a1d2a 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/QuickFeet.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/QuickFeet.cs @@ -6,10 +6,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Abilities; /// Bulbapedia - Quick Feet /// [Script(ScriptCategory.Ability, "quick_feet")] -public class QuickFeet : Script +public class QuickFeet : Script, IScriptChangeSpeed { /// - public override void ChangeSpeed(ITurnChoice choice, ref uint speed) + public void ChangeSpeed(ITurnChoice choice, ref uint speed) { if (choice.User.StatusScript.IsEmpty) return; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/SandRush.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/SandRush.cs index a823e75..74b0e5e 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/SandRush.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/SandRush.cs @@ -6,10 +6,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Abilities; /// Bulbapedia - Sand Rush /// [Script(ScriptCategory.Ability, "sand_rush")] -public class SandRush : Script +public class SandRush : Script, IScriptChangeSpeed { /// - public override void ChangeSpeed(ITurnChoice choice, ref uint speed) + public void ChangeSpeed(ITurnChoice choice, ref uint speed) { if (choice.User.BattleData?.Battle.WeatherName == ScriptUtils.ResolveName()) { diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/SlushRush.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/SlushRush.cs index 953d60a..cd48f6a 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/SlushRush.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/SlushRush.cs @@ -6,10 +6,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Abilities; /// Bulbapedia - Slush Rush /// [Script(ScriptCategory.Ability, "slush_rush")] -public class SlushRush : Script +public class SlushRush : Script, IScriptChangeSpeed { /// - public override void ChangeSpeed(ITurnChoice choice, ref uint speed) + public void ChangeSpeed(ITurnChoice choice, ref uint speed) { if (choice.User.BattleData?.Battle.WeatherName == ScriptUtils.ResolveName()) { diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/SpeedModifierInWeather.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/SpeedModifierInWeather.cs index c12e514..5d255f0 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/SpeedModifierInWeather.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/SpeedModifierInWeather.cs @@ -9,7 +9,7 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Abilities; /// Bulbapedia - Sand Rush /// [Script(ScriptCategory.Ability, "speed_modifier_in_weather")] -public class SpeedModifierInWeather : Script, IScriptOnInitialize +public class SpeedModifierInWeather : Script, IScriptOnInitialize, IScriptChangeSpeed { private StringKey _weather; private float _modifier; @@ -33,7 +33,7 @@ public class SpeedModifierInWeather : Script, IScriptOnInitialize } /// - public override void ChangeSpeed(ITurnChoice choice, ref uint speed) + public void ChangeSpeed(ITurnChoice choice, ref uint speed) { var battle = choice.User.BattleData?.Battle; if (battle is null) diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Stall.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Stall.cs index c6bda3f..5fafd28 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Stall.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Stall.cs @@ -6,10 +6,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Abilities; /// Bulbapedia - Stall /// [Script(ScriptCategory.Ability, "stall")] -public class Stall : Script +public class Stall : Script, IScriptChangeSpeed { /// - public override void ChangeSpeed(ITurnChoice choice, ref uint speed) + public void ChangeSpeed(ITurnChoice choice, ref uint speed) { speed = 0; } diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/StanceChange.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/StanceChange.cs index bd4bf8f..c9e48de 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/StanceChange.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/StanceChange.cs @@ -8,10 +8,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Abilities; /// Bulbapedia - Stance Change /// [Script(ScriptCategory.Ability, "stance_change")] -public class StanceChange : Script +public class StanceChange : Script, IScriptOnBeforeMove { /// - public override void OnBeforeMove(IExecutingMove move) + public void OnBeforeMove(IExecutingMove move) { if (move.User.Species.Name != "aegislash") return; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/StormDrain.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/StormDrain.cs index 70bff84..d0bd8b1 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/StormDrain.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/StormDrain.cs @@ -6,10 +6,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Abilities; /// Bulbapedia - Storm Drain /// [Script(ScriptCategory.Ability, "storm_drain")] -public class StormDrain : Script +public class StormDrain : Script, IScriptChangeIncomingTargets { /// - public override void ChangeIncomingTargets(IMoveChoice moveChoice, ref IReadOnlyList targets) + public void ChangeIncomingTargets(IMoveChoice moveChoice, ref IReadOnlyList targets) { if (moveChoice.ChosenMove.MoveData.MoveType.Name == "water" && targets.Count == 1) { diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/SurgeSurfer.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/SurgeSurfer.cs index 8cb9d7b..b34c086 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/SurgeSurfer.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/SurgeSurfer.cs @@ -6,10 +6,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Abilities; /// Bulbapedia - Surge Surfer /// [Script(ScriptCategory.Ability, "surge_surfer")] -public class SurgeSurfer : Script +public class SurgeSurfer : Script, IScriptChangeSpeed { /// - public override void ChangeSpeed(ITurnChoice choice, ref uint speed) + public void ChangeSpeed(ITurnChoice choice, ref uint speed) { if (choice.User.BattleData?.Battle.TerrainName == ScriptUtils.ResolveName()) { diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/SwiftSwim.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/SwiftSwim.cs index 2885ef1..8d176b3 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/SwiftSwim.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/SwiftSwim.cs @@ -6,10 +6,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Abilities; /// Bulbapedia - Swift Swim /// [Script(ScriptCategory.Ability, "swift_swim")] -public class SwiftSwim : Script +public class SwiftSwim : Script, IScriptChangeSpeed { /// - public override void ChangeSpeed(ITurnChoice choice, ref uint speed) + public void ChangeSpeed(ITurnChoice choice, ref uint speed) { if (choice.User.BattleData?.Battle.WeatherName == ScriptUtils.ResolveName()) { diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Triage.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Triage.cs index 663cd52..33aaba7 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Triage.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Triage.cs @@ -6,10 +6,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Abilities; /// Bulbapedia - Triage /// [Script(ScriptCategory.Ability, "triage")] -public class Triage : Script +public class Triage : Script, IScriptChangePriority { /// - public override void ChangePriority(IMoveChoice choice, ref sbyte priority) + public void ChangePriority(IMoveChoice choice, ref sbyte priority) { if (!choice.ChosenMove.MoveData.HasFlag("heal")) return; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Truant.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Truant.cs index aa66f0a..715c0ff 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Truant.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Truant.cs @@ -8,10 +8,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Abilities; /// Bulbapedia - Truant /// [Script(ScriptCategory.Ability, "truant")] -public class Truant : Script +public class Truant : Script, IScriptOnAfterMove { /// - public override void OnAfterMove(IExecutingMove move) + public void OnAfterMove(IExecutingMove move) { move.User.Volatile.Add(new TruantEffect(move.User)); } diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Unburden.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Unburden.cs index 84809aa..7da1ef1 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Unburden.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Unburden.cs @@ -6,10 +6,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Abilities; /// Bulbapedia - Unburden /// [Script(ScriptCategory.Ability, "unburden")] -public class Unburden : Script +public class Unburden : Script, IScriptChangeSpeed { /// - public override void ChangeSpeed(ITurnChoice choice, ref uint speed) + public void ChangeSpeed(ITurnChoice choice, ref uint speed) { if (choice.User.HasItemBeenRemovedForBattle) { diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Battle/SnatchEffect.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Battle/SnatchEffect.cs index a6244d6..747bae7 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Battle/SnatchEffect.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Battle/SnatchEffect.cs @@ -4,7 +4,7 @@ using PkmnLib.Dynamic.BattleFlow; namespace PkmnLib.Plugin.Gen7.Scripts.Battle; [Script(ScriptCategory.Battle, "snatch_effect")] -public class SnatchEffect : Script +public class SnatchEffect : Script, IScriptStopBeforeMove { private Queue _snatchers = new(); @@ -33,7 +33,7 @@ public class SnatchEffect : Script } /// - public override void StopBeforeMove(IExecutingMove move, ref bool stop) + public void StopBeforeMove(IExecutingMove move, ref bool stop) { if (move.UseMove.HasFlag("snatch") && TryGetSnatcher(out var snatcher)) { diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Battle/TrickRoomEffect.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Battle/TrickRoomEffect.cs index b226302..d1ac73f 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Battle/TrickRoomEffect.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Battle/TrickRoomEffect.cs @@ -1,12 +1,12 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Battle; [Script(ScriptCategory.Battle, "trick_room")] -public class TrickRoomEffect : Script +public class TrickRoomEffect : Script, IScriptChangeSpeed { private int _turnsLeft = 5; /// - public override void ChangeSpeed(ITurnChoice choice, ref uint speed) + public void ChangeSpeed(ITurnChoice choice, ref uint speed) { speed = uint.MaxValue - speed; } diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Battle/UproarEffect.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Battle/UproarEffect.cs index 819c7be..d909811 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Battle/UproarEffect.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Battle/UproarEffect.cs @@ -1,7 +1,7 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Battle; [Script(ScriptCategory.Battle, "uproar_effect")] -public class UproarEffect : Script +public class UproarEffect : Script, IScriptOnBeforeTurnStart { private IPokemon? _placer; private bool _hasUsedUproar; @@ -24,7 +24,7 @@ public class UproarEffect : Script } /// - public override void OnBeforeTurnStart(ITurnChoice choice) + public void OnBeforeTurnStart(ITurnChoice choice) { _hasUsedUproar = false; } diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/MoveVolatile/FireGrassPledgeMove.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/MoveVolatile/FireGrassPledgeMove.cs index d982e9d..93afa91 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/MoveVolatile/FireGrassPledgeMove.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/MoveVolatile/FireGrassPledgeMove.cs @@ -3,10 +3,10 @@ using PkmnLib.Plugin.Gen7.Scripts.Side; namespace PkmnLib.Plugin.Gen7.Scripts.MoveVolatile; [Script(ScriptCategory.MoveVolatile, "fire_grass_pledge")] -public class FireGrassPledgeMove : Script +public class FireGrassPledgeMove : Script, IScriptChangeMove { /// - public override void ChangeMove(IMoveChoice choice, ref StringKey moveName) + public void ChangeMove(IMoveChoice choice, ref StringKey moveName) { moveName = "fire_pledge"; } diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/MoveVolatile/FireWaterPledgeMove.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/MoveVolatile/FireWaterPledgeMove.cs index 3467f2b..67646a8 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/MoveVolatile/FireWaterPledgeMove.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/MoveVolatile/FireWaterPledgeMove.cs @@ -3,10 +3,10 @@ using PkmnLib.Plugin.Gen7.Scripts.Side; namespace PkmnLib.Plugin.Gen7.Scripts.MoveVolatile; [Script(ScriptCategory.MoveVolatile, "fire_water_pledge")] -public class FireWaterPledgeMove : Script +public class FireWaterPledgeMove : Script, IScriptChangeMove { /// - public override void ChangeMove(IMoveChoice choice, ref StringKey moveName) + public void ChangeMove(IMoveChoice choice, ref StringKey moveName) { moveName = "water_pledge"; } diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/MoveVolatile/GrassWaterPledgeMove.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/MoveVolatile/GrassWaterPledgeMove.cs index 31db24e..69f1735 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/MoveVolatile/GrassWaterPledgeMove.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/MoveVolatile/GrassWaterPledgeMove.cs @@ -3,10 +3,10 @@ using PkmnLib.Plugin.Gen7.Scripts.Side; namespace PkmnLib.Plugin.Gen7.Scripts.MoveVolatile; [Script(ScriptCategory.MoveVolatile, "grass_water_pledge")] -public class GrassWaterPledgeMove : Script +public class GrassWaterPledgeMove : Script, IScriptChangeMove { /// - public override void ChangeMove(IMoveChoice choice, ref StringKey moveName) + public void ChangeMove(IMoveChoice choice, ref StringKey moveName) { moveName = "grass_pledge"; } diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Assist.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Assist.cs index 5c8bc65..490c950 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Assist.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Assist.cs @@ -14,10 +14,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Moves; /// If the other Pokémon in the user's party do not know any eligible moves, Assist fails. /// [Script(ScriptCategory.Move, "assist")] -public class Assist : Script +public class Assist : Script, IScriptChangeMove { /// - public override void ChangeMove(IMoveChoice choice, ref StringKey moveName) + public void ChangeMove(IMoveChoice choice, ref StringKey moveName) { var user = choice.User; if (user.BattleData == null) diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/BaseChargeMove.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/BaseChargeMove.cs index 824ee3b..6908b71 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/BaseChargeMove.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/BaseChargeMove.cs @@ -2,11 +2,12 @@ using PkmnLib.Plugin.Gen7.Scripts.Pokemon; namespace PkmnLib.Plugin.Gen7.Scripts.Moves; -public abstract class BaseChargeMove : Script where TVolatile : RequireChargeEffect +public abstract class BaseChargeMove : Script, IScriptPreventMove, IScriptOnBeforeMove + where TVolatile : RequireChargeEffect { public abstract TVolatile CreateVolatile(IPokemon user); - public override void PreventMove(IExecutingMove move, ref bool prevent) + public void PreventMove(IExecutingMove move, ref bool prevent) { if (move.User.Volatile.Contains()) return; @@ -20,7 +21,7 @@ public abstract class BaseChargeMove : Script where TVolatile : Requi } /// - public override void OnBeforeMove(IExecutingMove move) + public void OnBeforeMove(IExecutingMove move) { move.User.Volatile.Remove(ScriptUtils.ResolveName()); } diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/BeakBlast.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/BeakBlast.cs index 55fd4c7..3837a74 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/BeakBlast.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/BeakBlast.cs @@ -3,10 +3,10 @@ using PkmnLib.Plugin.Gen7.Scripts.Pokemon; namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "beak_blast")] -public class BeakBlast : Script +public class BeakBlast : Script, IScriptOnBeforeTurnStart { /// - public override void OnBeforeTurnStart(ITurnChoice choice) + public void OnBeforeTurnStart(ITurnChoice choice) { var battleData = choice.User.BattleData; if (battleData == null) diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/BeatUp.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/BeatUp.cs index 5c7af57..24e28ba 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/BeatUp.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/BeatUp.cs @@ -1,7 +1,7 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "beat_up")] -public class BeatUp : Script +public class BeatUp : Script, IScriptChangeNumberOfHits { private IPokemon[]? _relevantPartyMembers; @@ -16,7 +16,7 @@ public class BeatUp : Script } /// - public override void ChangeNumberOfHits(IMoveChoice choice, ref byte numberOfHits) + public void ChangeNumberOfHits(IMoveChoice choice, ref byte numberOfHits) { var relevantPartyMembers = _relevantPartyMembers ??= GetRelevantPartyMembers(choice.User).ToArray(); diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Bounce.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Bounce.cs index 6043e87..908943e 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Bounce.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Bounce.cs @@ -3,10 +3,10 @@ using PkmnLib.Plugin.Gen7.Scripts.Pokemon; namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "bounce")] -public class Bounce : Script +public class Bounce : Script, IScriptPreventMove, IScriptOnBeforeMove { /// - public override void PreventMove(IExecutingMove move, ref bool prevent) + public void PreventMove(IExecutingMove move, ref bool prevent) { if (move.User.Volatile.Contains()) return; @@ -20,7 +20,7 @@ public class Bounce : Script } /// - public override void OnBeforeMove(IExecutingMove move) + public void OnBeforeMove(IExecutingMove move) { move.User.Volatile.Remove(ScriptUtils.ResolveName()); } diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/BrickBreak.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/BrickBreak.cs index 1fc4af1..ceec19a 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/BrickBreak.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/BrickBreak.cs @@ -3,10 +3,10 @@ using PkmnLib.Plugin.Gen7.Scripts.Side; namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "brick_break")] -public class BrickBreak : Script +public class BrickBreak : Script, IScriptOnBeforeMove { /// - public override void OnBeforeMove(IExecutingMove move) + public void OnBeforeMove(IExecutingMove move) { var sides = move.User.BattleData?.Battle.Sides; if (sides == null) diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/ChargeMove.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/ChargeMove.cs index 3fafa87..f08a66a 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/ChargeMove.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/ChargeMove.cs @@ -3,9 +3,9 @@ using PkmnLib.Plugin.Gen7.Scripts.Pokemon; namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "charge_move")] -public class ChargeMove : Script +public class ChargeMove : Script, IScriptPreventMove { - public override void PreventMove(IExecutingMove move, ref bool prevent) + public void PreventMove(IExecutingMove move, ref bool prevent) { var args = new CustomTriggers.BypassChargeMoveArgs(move, false); move.RunScriptHook(script => script.CustomTrigger(CustomTriggers.BypassChargeMove, args)); diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Copycat.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Copycat.cs index 79c55bd..446d8f0 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Copycat.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Copycat.cs @@ -3,10 +3,10 @@ using PkmnLib.Plugin.Gen7.Scripts.Utils; namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "copycat")] -public class Copycat : Script +public class Copycat : Script, IScriptChangeMove { /// - public override void ChangeMove(IMoveChoice choice, ref StringKey moveName) + public void ChangeMove(IMoveChoice choice, ref StringKey moveName) { var lastMove = choice.User.BattleData?.Battle.PreviousTurnChoices.SelectMany(x => x).OfType() .LastOrDefault(); diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Counter.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Counter.cs index 3df0caa..fbd1a26 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Counter.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Counter.cs @@ -3,16 +3,16 @@ using PkmnLib.Plugin.Gen7.Scripts.Pokemon; namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "counter")] -public class Counter : Script +public class Counter : Script, IScriptOnBeforeTurnStart, IScriptChangeTargets { /// - public override void OnBeforeTurnStart(ITurnChoice choice) + public void OnBeforeTurnStart(ITurnChoice choice) { choice.User.Volatile.Add(new CounterHelperEffect()); } /// - public override void ChangeTargets(IMoveChoice moveChoice, ref IReadOnlyList targets) + public void ChangeTargets(IMoveChoice moveChoice, ref IReadOnlyList targets) { var counterHelper = moveChoice.User.Volatile.Get(); var lastHitBy = counterHelper?.LastHitBy; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Dig.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Dig.cs index 8e06dc4..671f3d3 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Dig.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Dig.cs @@ -3,10 +3,10 @@ using PkmnLib.Plugin.Gen7.Scripts.Pokemon; namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "dig")] -public class Dig : Script +public class Dig : Script, IScriptPreventMove, IScriptOnBeforeMove { /// - public override void PreventMove(IExecutingMove move, ref bool prevent) + public void PreventMove(IExecutingMove move, ref bool prevent) { if (move.User.Volatile.Contains()) return; @@ -20,7 +20,7 @@ public class Dig : Script } /// - public override void OnBeforeMove(IExecutingMove move) + public void OnBeforeMove(IExecutingMove move) { move.User.Volatile.Remove(ScriptUtils.ResolveName()); } diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Dive.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Dive.cs index ad0c636..278a968 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Dive.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Dive.cs @@ -3,10 +3,10 @@ using PkmnLib.Plugin.Gen7.Scripts.Pokemon; namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "dive")] -public class Dive : Script +public class Dive : Script, IScriptPreventMove { /// - public override void PreventMove(IExecutingMove move, ref bool prevent) + public void PreventMove(IExecutingMove move, ref bool prevent) { if (move.User.Volatile.Contains()) return; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/DoubleHitMove.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/DoubleHitMove.cs index 670e19b..f442b54 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/DoubleHitMove.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/DoubleHitMove.cs @@ -1,9 +1,9 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "2_hit_move")] -public class DoubleHitMove : Script +public class DoubleHitMove : Script, IScriptChangeNumberOfHits { - public override void ChangeNumberOfHits(IMoveChoice choice, ref byte numberOfHits) + public void ChangeNumberOfHits(IMoveChoice choice, ref byte numberOfHits) { numberOfHits = 2; } diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/DoublePowerIfTargetDamagedInTurn.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/DoublePowerIfTargetDamagedInTurn.cs index a306b1e..6734e48 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/DoublePowerIfTargetDamagedInTurn.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/DoublePowerIfTargetDamagedInTurn.cs @@ -3,10 +3,10 @@ using PkmnLib.Plugin.Gen7.Scripts.Side; namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "double_power_if_target_damaged_in_turn")] -public class DoublePowerIfTargetDamagedInTurn : Script +public class DoublePowerIfTargetDamagedInTurn : Script, IScriptOnBeforeTurnStart { /// - public override void OnBeforeTurnStart(ITurnChoice choice) + public void OnBeforeTurnStart(ITurnChoice choice) { if (choice is IMoveChoice moveChoice) { diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/FakeOut.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/FakeOut.cs index a5098fb..3a32118 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/FakeOut.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/FakeOut.cs @@ -3,10 +3,10 @@ using PkmnLib.Plugin.Gen7.Scripts.Pokemon; namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "fake_out")] -public class FakeOut : Script +public class FakeOut : Script, IScriptStopBeforeMove { /// - public override void StopBeforeMove(IExecutingMove move, ref bool stop) + public void StopBeforeMove(IExecutingMove move, ref bool stop) { var battleData = move.User.BattleData; if (battleData == null) diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/FirePledge.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/FirePledge.cs index e2f3a1d..33f1b4b 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/FirePledge.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/FirePledge.cs @@ -3,10 +3,10 @@ using PkmnLib.Plugin.Gen7.Scripts.MoveVolatile; namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "fire_pledge")] -public class FirePledge : Script +public class FirePledge : Script, IScriptStopBeforeMove { /// - public override void StopBeforeMove(IExecutingMove move, ref bool stop) + public void StopBeforeMove(IExecutingMove move, ref bool stop) { if (move.MoveChoice.Volatile.Contains() || move.MoveChoice.Volatile.Contains()) diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/FirstImpression.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/FirstImpression.cs index 05beaa0..c97839a 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/FirstImpression.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/FirstImpression.cs @@ -1,9 +1,9 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "first_impression")] -public class FirstImpression : Script +public class FirstImpression : Script, IScriptStopBeforeMove { - public override void StopBeforeMove(IExecutingMove move, ref bool stop) + public void StopBeforeMove(IExecutingMove move, ref bool stop) { var battleData = move.User.BattleData; if (battleData == null) diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Fly.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Fly.cs index e3330f0..4fb5042 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Fly.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Fly.cs @@ -3,10 +3,10 @@ using PkmnLib.Plugin.Gen7.Scripts.Pokemon; namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "fly")] -public class Fly : Script +public class Fly : Script, IScriptPreventMove, IScriptOnBeforeMove { /// - public override void PreventMove(IExecutingMove move, ref bool prevent) + public void PreventMove(IExecutingMove move, ref bool prevent) { if (move.User.Volatile.Contains()) return; @@ -20,7 +20,7 @@ public class Fly : Script } /// - public override void OnBeforeMove(IExecutingMove move) + public void OnBeforeMove(IExecutingMove move) { move.User.Volatile.Remove(ScriptUtils.ResolveName()); } diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/FocusPunch.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/FocusPunch.cs index 1ce53c5..6e8de0a 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/FocusPunch.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/FocusPunch.cs @@ -3,10 +3,10 @@ using PkmnLib.Plugin.Gen7.Scripts.Pokemon; namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "focus_punch")] -public class FocusPunch : Script +public class FocusPunch : Script, IScriptOnBeforeTurnStart, IScriptPreventMove { /// - public override void OnBeforeTurnStart(ITurnChoice choice) + public void OnBeforeTurnStart(ITurnChoice choice) { choice.User.Volatile.Add(new FocusPunchEffect()); choice.User.BattleData?.Battle.EventHook.Invoke(new DialogEvent("focus_punch_charge", @@ -17,7 +17,7 @@ public class FocusPunch : Script } /// - public override void PreventMove(IExecutingMove move, ref bool prevent) + public void PreventMove(IExecutingMove move, ref bool prevent) { var focusPunchEffect = move.User.Volatile.Get(); if (focusPunchEffect == null || focusPunchEffect.WasHit) diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/FollowMe.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/FollowMe.cs index 66b7cf9..4c107b7 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/FollowMe.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/FollowMe.cs @@ -1,10 +1,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "follow_me")] -public class FollowMe : Script +public class FollowMe : Script, IScriptChangeTargets { /// - public override void ChangeTargets(IMoveChoice moveChoice, ref IReadOnlyList targets) + public void ChangeTargets(IMoveChoice moveChoice, ref IReadOnlyList targets) { if (targets.Count != 1) return; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/FutureSight.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/FutureSight.cs index 76cbbe9..63c5449 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/FutureSight.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/FutureSight.cs @@ -3,10 +3,10 @@ using PkmnLib.Plugin.Gen7.Scripts.Battle; namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "future_sight")] -public class FutureSight : Script +public class FutureSight : Script, IScriptStopBeforeMove { /// - public override void StopBeforeMove(IExecutingMove move, ref bool prevent) + public void StopBeforeMove(IExecutingMove move, ref bool prevent) { var battleData = move.User.BattleData; if (battleData == null) diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/GrassPledge.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/GrassPledge.cs index 469315c..a59af61 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/GrassPledge.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/GrassPledge.cs @@ -3,10 +3,10 @@ using PkmnLib.Plugin.Gen7.Scripts.MoveVolatile; namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "grass_pledge")] -public class GrassPledge : Script +public class GrassPledge : Script, IScriptStopBeforeMove { /// - public override void StopBeforeMove(IExecutingMove move, ref bool stop) + public void StopBeforeMove(IExecutingMove move, ref bool stop) { if (move.MoveChoice.Volatile.Contains() || move.MoveChoice.Volatile.Contains()) diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/MeFirst.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/MeFirst.cs index d348a85..e97480f 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/MeFirst.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/MeFirst.cs @@ -3,10 +3,10 @@ using PkmnLib.Plugin.Gen7.Scripts.MoveVolatile; namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "me_first")] -public class MeFirst : Script +public class MeFirst : Script, IScriptChangeMove { /// - public override void ChangeMove(IMoveChoice choice, ref StringKey moveName) + public void ChangeMove(IMoveChoice choice, ref StringKey moveName) { var battleData = choice.User.BattleData; if (battleData == null) diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/MetalBurst.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/MetalBurst.cs index f1b2539..f2957f1 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/MetalBurst.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/MetalBurst.cs @@ -3,10 +3,10 @@ using PkmnLib.Static.Moves; namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "metal_burst")] -public class MetalBurst : Script +public class MetalBurst : Script, IScriptOnBeforeTurnStart { /// - public override void OnBeforeTurnStart(ITurnChoice choice) + public void OnBeforeTurnStart(ITurnChoice choice) { choice.User.Volatile.Add(new MetalBurstHelper()); } diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Metronome.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Metronome.cs index 20d070f..b03d6fe 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Metronome.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Metronome.cs @@ -3,10 +3,10 @@ using PkmnLib.Plugin.Gen7.Scripts.Utils; namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "metronome")] -public class Metronome : Script +public class Metronome : Script, IScriptChangeMove { /// - public override void ChangeMove(IMoveChoice choice, ref StringKey moveName) + public void ChangeMove(IMoveChoice choice, ref StringKey moveName) { var battleData = choice.User.BattleData; if (battleData == null) diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/MirrorCoat.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/MirrorCoat.cs index 8da449c..7f96768 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/MirrorCoat.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/MirrorCoat.cs @@ -3,10 +3,10 @@ using PkmnLib.Static.Moves; namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "mirror_coat")] -public class MirrorCoat : Script +public class MirrorCoat : Script, IScriptOnBeforeTurnStart { /// - public override void OnBeforeTurnStart(ITurnChoice choice) + public void OnBeforeTurnStart(ITurnChoice choice) { choice.User.Volatile.Add(new MirrorCoatHelper()); } diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/MirrorMove.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/MirrorMove.cs index 8a588a6..ea27524 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/MirrorMove.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/MirrorMove.cs @@ -3,10 +3,10 @@ using PkmnLib.Plugin.Gen7.Scripts.Utils; namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "mirror_move")] -public class MirrorMove : Script +public class MirrorMove : Script, IScriptChangeMove { /// - public override void ChangeMove(IMoveChoice choice, ref StringKey moveName) + public void ChangeMove(IMoveChoice choice, ref StringKey moveName) { var battleData = choice.User.BattleData; if (battleData == null) diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/MultiHitMove.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/MultiHitMove.cs index 130665f..b889a55 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/MultiHitMove.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/MultiHitMove.cs @@ -1,10 +1,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "2_5_hit_move")] -public class MultiHitMove : Script +public class MultiHitMove : Script, IScriptChangeNumberOfHits { /// - public override void ChangeNumberOfHits(IMoveChoice choice, ref byte numberOfHits) + public void ChangeNumberOfHits(IMoveChoice choice, ref byte numberOfHits) { var random = choice.User.BattleData?.Battle.Random; if (random == null) diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/NaturePower.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/NaturePower.cs index a1770ec..4a8fef8 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/NaturePower.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/NaturePower.cs @@ -4,10 +4,10 @@ using PkmnLib.Static.Moves; namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "nature_power")] -public class NaturePower : Script +public class NaturePower : Script, IScriptChangeMove { /// - public override void ChangeMove(IMoveChoice choice, ref StringKey moveName) + public void ChangeMove(IMoveChoice choice, ref StringKey moveName) { var battleData = choice.User.BattleData; if (battleData is null) diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/ParabolicCharge.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/ParabolicCharge.cs index af6118d..c5de30b 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/ParabolicCharge.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/ParabolicCharge.cs @@ -1,10 +1,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "parabolic_charge")] -public class ParabolicCharge : Script +public class ParabolicCharge : Script, IScriptOnAfterMove { /// - public override void OnAfterMove(IExecutingMove move) + public void OnAfterMove(IExecutingMove move) { if (move.User.IsFainted) return; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/PhantomForce.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/PhantomForce.cs index 0bd1f00..2d0b296 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/PhantomForce.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/PhantomForce.cs @@ -7,10 +7,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Moves; /// and attacks on the second turn. /// [Script(ScriptCategory.Move, "phantom_force")] -public class PhantomForce : Script +public class PhantomForce : Script, IScriptPreventMove { /// - public override void PreventMove(IExecutingMove move, ref bool prevent) + public void PreventMove(IExecutingMove move, ref bool prevent) { if (move.User.Volatile.Contains()) return; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Pursuit.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Pursuit.cs index 6f0cf1d..3b5b574 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Pursuit.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Pursuit.cs @@ -3,10 +3,10 @@ using PkmnLib.Plugin.Gen7.Scripts.Pokemon; namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "pursuit")] -public class Pursuit : Script +public class Pursuit : Script, IScriptOnBeforeTurnStart, IScriptOnAfterMove { /// - public override void OnBeforeTurnStart(ITurnChoice choice) + public void OnBeforeTurnStart(ITurnChoice choice) { if (choice is IMoveChoice moveChoice) choice.User.Volatile.Add(new PursuitEffect(moveChoice)); @@ -17,5 +17,5 @@ public class Pursuit : Script move.User.Volatile.Remove(); /// - public override void OnAfterMove(IExecutingMove move) => move.User.Volatile.Remove(); + public void OnAfterMove(IExecutingMove move) => move.User.Volatile.Remove(); } \ No newline at end of file diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/RazorWind.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/RazorWind.cs index cd55db5..13849ae 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/RazorWind.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/RazorWind.cs @@ -3,10 +3,10 @@ using PkmnLib.Plugin.Gen7.Scripts.Pokemon; namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "razor_wind")] -public class RazorWind : Script +public class RazorWind : Script, IScriptPreventMove { /// - public override void PreventMove(IExecutingMove move, ref bool prevent) + public void PreventMove(IExecutingMove move, ref bool prevent) { var chargeMoveEffect = move.User.Volatile.Get(); if (chargeMoveEffect != null && chargeMoveEffect.MoveName == move.UseMove.Name) diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Round.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Round.cs index df3fb90..8954af0 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Round.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Round.cs @@ -3,10 +3,10 @@ using PkmnLib.Plugin.Gen7.Scripts.MoveVolatile; namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "round")] -public class Round : Script +public class Round : Script, IScriptOnAfterMove { /// - public override void OnAfterMove(IExecutingMove move) + public void OnAfterMove(IExecutingMove move) { var choiceQueue = move.Battle.ChoiceQueue; if (choiceQueue is null) diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/SelfDestruct.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/SelfDestruct.cs index 40f54e8..c3d01de 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/SelfDestruct.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/SelfDestruct.cs @@ -1,10 +1,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "self_destruct")] -public class SelfDestruct : Script +public class SelfDestruct : Script, IScriptOnAfterMove { /// - public override void OnAfterMove(IExecutingMove move) + public void OnAfterMove(IExecutingMove move) { if (move.User.IsFainted) return; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/ShadowForce.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/ShadowForce.cs index 210a49c..15a203e 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/ShadowForce.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/ShadowForce.cs @@ -3,10 +3,10 @@ using PkmnLib.Plugin.Gen7.Scripts.Pokemon; namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "shadow_force")] -public class ShadowForce : Script +public class ShadowForce : Script, IScriptPreventMove { /// - public override void PreventMove(IExecutingMove move, ref bool prevent) + public void PreventMove(IExecutingMove move, ref bool prevent) { if (move.User.Volatile.Contains()) return; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/ShellTrap.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/ShellTrap.cs index 3373553..4a9bcf0 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/ShellTrap.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/ShellTrap.cs @@ -3,16 +3,16 @@ using PkmnLib.Plugin.Gen7.Scripts.Pokemon; namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "shell_trap")] -public class ShellTrap : Script +public class ShellTrap : Script, IScriptOnBeforeMove, IScriptFailMove { /// - public override void OnBeforeMove(IExecutingMove move) + public void OnBeforeMove(IExecutingMove move) { move.User.Volatile.Add(new ShellTrapHelper()); } /// - public override void FailMove(IExecutingMove move, ref bool fail) + public void FailMove(IExecutingMove move, ref bool fail) { var shellTrapHelper = move.User.Volatile.Get(); if (shellTrapHelper is not { HasHit: true }) diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/SkullBash.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/SkullBash.cs index 3c4684a..8d0f1b1 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/SkullBash.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/SkullBash.cs @@ -3,10 +3,10 @@ using PkmnLib.Plugin.Gen7.Scripts.Pokemon; namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "skull_bash")] -public class SkullBash : Script +public class SkullBash : Script, IScriptPreventMove { /// - public override void PreventMove(IExecutingMove move, ref bool prevent) + public void PreventMove(IExecutingMove move, ref bool prevent) { if (move.User.Volatile.Contains()) return; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/SkyAttack.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/SkyAttack.cs index 2225077..df858c7 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/SkyAttack.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/SkyAttack.cs @@ -3,10 +3,10 @@ using PkmnLib.Plugin.Gen7.Scripts.Pokemon; namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "sky_attack")] -public class SkyAttack : Script +public class SkyAttack : Script, IScriptPreventMove { /// - public override void PreventMove(IExecutingMove move, ref bool prevent) + public void PreventMove(IExecutingMove move, ref bool prevent) { if (move.User.Volatile.Contains()) return; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/SkyDrop.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/SkyDrop.cs index 3adc558..1fad7e2 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/SkyDrop.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/SkyDrop.cs @@ -3,10 +3,10 @@ using PkmnLib.Plugin.Gen7.Scripts.Pokemon; namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "sky_drop")] -public class SkyDrop : Script +public class SkyDrop : Script, IScriptPreventMove, IScriptOnBeforeMove { /// - public override void PreventMove(IExecutingMove move, ref bool prevent) + public void PreventMove(IExecutingMove move, ref bool prevent) { if (move.User.Volatile.Contains()) return; @@ -20,7 +20,7 @@ public class SkyDrop : Script } /// - public override void OnBeforeMove(IExecutingMove move) + public void OnBeforeMove(IExecutingMove move) { move.User.Volatile.Remove(ScriptUtils.ResolveName()); } diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/SleepTalk.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/SleepTalk.cs index 3e67025..4a9256a 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/SleepTalk.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/SleepTalk.cs @@ -4,10 +4,10 @@ using PkmnLib.Plugin.Gen7.Scripts.Utils; namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "sleep_talk")] -public class SleepTalk : Script +public class SleepTalk : Script, IScriptChangeMove { /// - public override void ChangeMove(IMoveChoice choice, ref StringKey moveName) + public void ChangeMove(IMoveChoice choice, ref StringKey moveName) { if (!choice.User.HasStatus(ScriptUtils.ResolveName())) { diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Snore.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Snore.cs index 15e6b56..a86967b 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Snore.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Snore.cs @@ -3,10 +3,10 @@ using PkmnLib.Plugin.Gen7.Scripts.Pokemon; namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "snore")] -public class Snore : Script +public class Snore : Script, IScriptFailMove { /// - public override void FailMove(IExecutingMove move, ref bool fail) + public void FailMove(IExecutingMove move, ref bool fail) { if (!move.User.HasStatus(ScriptUtils.ResolveName())) fail = true; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Struggle.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Struggle.cs index aa79493..f57a94a 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Struggle.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Struggle.cs @@ -1,10 +1,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "struggle")] -public class Struggle : Script +public class Struggle : Script, IScriptChangeNumberOfHits { /// - public override void ChangeNumberOfHits(IMoveChoice choice, ref byte numberOfHits) + public void ChangeNumberOfHits(IMoveChoice choice, ref byte numberOfHits) { numberOfHits = 1; } diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Synchronoise.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Synchronoise.cs index b296e97..c5d4c32 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Synchronoise.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Synchronoise.cs @@ -1,10 +1,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "synchronoise")] -public class Synchronoise : Script +public class Synchronoise : Script, IScriptChangeTargets { /// - public override void ChangeTargets(IMoveChoice moveChoice, ref IReadOnlyList targets) + public void ChangeTargets(IMoveChoice moveChoice, ref IReadOnlyList targets) { var battleData = moveChoice.User.BattleData; if (battleData == null) diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/TripleKick.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/TripleKick.cs index cb34a48..a00d130 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/TripleKick.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/TripleKick.cs @@ -1,10 +1,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "triple_kick")] -public class TripleKick : Script +public class TripleKick : Script, IScriptChangeNumberOfHits { /// - public override void ChangeNumberOfHits(IMoveChoice choice, ref byte numberOfHits) + public void ChangeNumberOfHits(IMoveChoice choice, ref byte numberOfHits) { numberOfHits = 3; } diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Twineedle.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Twineedle.cs index 0b33474..c94fba7 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Twineedle.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Twineedle.cs @@ -1,10 +1,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "twineedle")] -public class Twineedle : Script +public class Twineedle : Script, IScriptChangeNumberOfHits { /// - public override void ChangeNumberOfHits(IMoveChoice choice, ref byte numberOfHits) => numberOfHits = 2; + public void ChangeNumberOfHits(IMoveChoice choice, ref byte numberOfHits) => numberOfHits = 2; /// public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/WaterPledge.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/WaterPledge.cs index 5f86bef..eb465e7 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/WaterPledge.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/WaterPledge.cs @@ -3,10 +3,10 @@ using PkmnLib.Plugin.Gen7.Scripts.MoveVolatile; namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "water_pledge")] -public class WaterPledge : Script +public class WaterPledge : Script, IScriptStopBeforeMove { /// - public override void StopBeforeMove(IExecutingMove move, ref bool stop) + public void StopBeforeMove(IExecutingMove move, ref bool stop) { if (move.MoveChoice.Volatile.Contains() || move.MoveChoice.Volatile.Contains()) diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/BaseChargeEffect.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/BaseChargeEffect.cs index d11a063..965bc8d 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/BaseChargeEffect.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/BaseChargeEffect.cs @@ -2,7 +2,7 @@ using PkmnLib.Plugin.Gen7.Scripts.Utils; namespace PkmnLib.Plugin.Gen7.Scripts.Pokemon; -public abstract class BaseChargeEffect : Script +public abstract class BaseChargeEffect : Script, IScriptForceTurnSelection { private readonly IPokemon _owner; private readonly StringKey _moveName; @@ -14,7 +14,7 @@ public abstract class BaseChargeEffect : Script } /// - public override void ForceTurnSelection(IBattle battle, byte sideIndex, byte position, ref ITurnChoice? choice) + public void ForceTurnSelection(IBattle battle, byte sideIndex, byte position, ref ITurnChoice? choice) { var opposingSideIndex = (byte)(_owner.BattleData?.SideIndex == 0 ? 1 : 0); choice = TurnChoiceHelper.CreateMoveChoice(_owner, _moveName, opposingSideIndex, position); diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/BideEffect.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/BideEffect.cs index 42cbbe5..28cce8f 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/BideEffect.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/BideEffect.cs @@ -3,7 +3,7 @@ using PkmnLib.Plugin.Gen7.Scripts.Utils; namespace PkmnLib.Plugin.Gen7.Scripts.Pokemon; [Script(ScriptCategory.Pokemon, "bide")] -public class BideEffect : Script +public class BideEffect : Script, IScriptForceTurnSelection { private readonly IPokemon? _owner; public byte Turns; @@ -34,7 +34,7 @@ public class BideEffect : Script private ITurnChoice? _choice; /// - public override void ForceTurnSelection(IBattle battle, byte sideIndex, byte position, ref ITurnChoice? choice) + public void ForceTurnSelection(IBattle battle, byte sideIndex, byte position, ref ITurnChoice? choice) { if (_owner == null) return; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/ChargeBounceEffect.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/ChargeBounceEffect.cs index 1ea9271..d3a9ba7 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/ChargeBounceEffect.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/ChargeBounceEffect.cs @@ -3,7 +3,7 @@ using PkmnLib.Plugin.Gen7.Scripts.Utils; namespace PkmnLib.Plugin.Gen7.Scripts.Pokemon; [Script(ScriptCategory.Pokemon, "charge_bounce")] -public class ChargeBounceEffect : Script +public class ChargeBounceEffect : Script, IScriptForceTurnSelection { private readonly IPokemon _owner; @@ -13,7 +13,7 @@ public class ChargeBounceEffect : Script } /// - public override void ForceTurnSelection(IBattle battle, byte sideIndex, byte position, ref ITurnChoice? choice) + public void ForceTurnSelection(IBattle battle, byte sideIndex, byte position, ref ITurnChoice? choice) { var opposingSideIndex = (byte)(_owner.BattleData?.SideIndex == 0 ? 1 : 0); choice = TurnChoiceHelper.CreateMoveChoice(_owner, "bounce", opposingSideIndex, position); diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/ChargeFlyEffect.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/ChargeFlyEffect.cs index a3598be..b3a90ee 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/ChargeFlyEffect.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/ChargeFlyEffect.cs @@ -3,7 +3,7 @@ using PkmnLib.Plugin.Gen7.Scripts.Utils; namespace PkmnLib.Plugin.Gen7.Scripts.Pokemon; [Script(ScriptCategory.Pokemon, "charge_fly")] -public class ChargeFlyEffect : Script +public class ChargeFlyEffect : Script, IScriptForceTurnSelection { private readonly IPokemon _owner; @@ -13,7 +13,7 @@ public class ChargeFlyEffect : Script } /// - public override void ForceTurnSelection(IBattle battle, byte sideIndex, byte position, ref ITurnChoice? choice) + public void ForceTurnSelection(IBattle battle, byte sideIndex, byte position, ref ITurnChoice? choice) { var opposingSideIndex = (byte)(_owner.BattleData?.SideIndex == 0 ? 1 : 0); choice = TurnChoiceHelper.CreateMoveChoice(_owner, "fly", opposingSideIndex, position); diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/ChargeMoveEffect.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/ChargeMoveEffect.cs index d99e214..48b0ff3 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/ChargeMoveEffect.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/ChargeMoveEffect.cs @@ -3,7 +3,7 @@ using PkmnLib.Plugin.Gen7.Scripts.Utils; namespace PkmnLib.Plugin.Gen7.Scripts.Pokemon; [Script(ScriptCategory.Pokemon, "charge_move_effect")] -public class ChargeMoveEffect : Script +public class ChargeMoveEffect : Script, IScriptForceTurnSelection { public readonly StringKey MoveName; private readonly IPokemon _user; @@ -19,7 +19,7 @@ public class ChargeMoveEffect : Script } /// - public override void ForceTurnSelection(IBattle battle, byte sideIndex, byte position, ref ITurnChoice? choice) + public void ForceTurnSelection(IBattle battle, byte sideIndex, byte position, ref ITurnChoice? choice) { choice = TurnChoiceHelper.CreateMoveChoice(_user, MoveName, _targetSide, _targetPosition); } diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/ChargeSkyDropEffect.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/ChargeSkyDropEffect.cs index 83299dd..a79cba9 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/ChargeSkyDropEffect.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/ChargeSkyDropEffect.cs @@ -3,7 +3,7 @@ using PkmnLib.Plugin.Gen7.Scripts.Utils; namespace PkmnLib.Plugin.Gen7.Scripts.Pokemon; [Script(ScriptCategory.Pokemon, "charge_sky_drop")] -public class ChargeSkyDropEffect : Script +public class ChargeSkyDropEffect : Script, IScriptForceTurnSelection { private readonly IPokemon _owner; @@ -13,7 +13,7 @@ public class ChargeSkyDropEffect : Script } /// - public override void ForceTurnSelection(IBattle battle, byte sideIndex, byte position, ref ITurnChoice? choice) + public void ForceTurnSelection(IBattle battle, byte sideIndex, byte position, ref ITurnChoice? choice) { var opposingSideIndex = (byte)(_owner.BattleData?.SideIndex == 0 ? 1 : 0); choice = TurnChoiceHelper.CreateMoveChoice(_owner, "sky_drop", opposingSideIndex, position); diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/Confusion.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/Confusion.cs index d310416..09b6bd3 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/Confusion.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/Confusion.cs @@ -3,7 +3,7 @@ using PkmnLib.Static.Moves; namespace PkmnLib.Plugin.Gen7.Scripts.Pokemon; [Script(ScriptCategory.Pokemon, "confusion")] -public class Confusion : Script +public class Confusion : Script, IScriptStopBeforeMove { private int _turnsConfused; @@ -19,7 +19,7 @@ public class Confusion : Script } /// - public override void StopBeforeMove(IExecutingMove move, ref bool stop) + public void StopBeforeMove(IExecutingMove move, ref bool stop) { _turnsConfused--; move.Battle.EventHook.Invoke(new DialogEvent("pokemon_is_confused", new Dictionary diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/DestinyBondEffect.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/DestinyBondEffect.cs index 5e5b5c5..e1cb5ce 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/DestinyBondEffect.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/DestinyBondEffect.cs @@ -1,7 +1,7 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Pokemon; [Script(ScriptCategory.Pokemon, "destiny_bond")] -public class DestinyBondEffect : Script +public class DestinyBondEffect : Script, IScriptOnBeforeMove { /// public override void OnFaint(IPokemon pokemon, DamageSource source) @@ -15,7 +15,7 @@ public class DestinyBondEffect : Script } /// - public override void OnBeforeMove(IExecutingMove move) + public void OnBeforeMove(IExecutingMove move) { RemoveSelf(); } diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/DigEffect.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/DigEffect.cs index 0b97123..f847e96 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/DigEffect.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/DigEffect.cs @@ -3,7 +3,7 @@ using PkmnLib.Plugin.Gen7.Scripts.Utils; namespace PkmnLib.Plugin.Gen7.Scripts.Pokemon; [Script(ScriptCategory.Pokemon, "dig")] -public class DigEffect : Script +public class DigEffect : Script, IScriptForceTurnSelection { private readonly IPokemon _owner; @@ -13,7 +13,7 @@ public class DigEffect : Script } /// - public override void ForceTurnSelection(IBattle battle, byte sideIndex, byte position, ref ITurnChoice? choice) + public void ForceTurnSelection(IBattle battle, byte sideIndex, byte position, ref ITurnChoice? choice) { var opposingSideIndex = (byte)(_owner.BattleData?.SideIndex == 0 ? 1 : 0); choice = TurnChoiceHelper.CreateMoveChoice(_owner, "dig", opposingSideIndex, position); diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/DiveEffect.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/DiveEffect.cs index 7774b15..027f8c3 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/DiveEffect.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/DiveEffect.cs @@ -3,7 +3,7 @@ using PkmnLib.Plugin.Gen7.Scripts.Utils; namespace PkmnLib.Plugin.Gen7.Scripts.Pokemon; [Script(ScriptCategory.Pokemon, "dive")] -public class DiveEffect : Script +public class DiveEffect : Script, IScriptForceTurnSelection { private readonly IPokemon _owner; @@ -13,7 +13,7 @@ public class DiveEffect : Script } /// - public override void ForceTurnSelection(IBattle battle, byte sideIndex, byte position, ref ITurnChoice? choice) + public void ForceTurnSelection(IBattle battle, byte sideIndex, byte position, ref ITurnChoice? choice) { var opposingSideIndex = (byte)(_owner.BattleData?.SideIndex == 0 ? 1 : 0); choice = TurnChoiceHelper.CreateMoveChoice(_owner, "dive", opposingSideIndex, position); diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/EncoreEffect.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/EncoreEffect.cs index 44513bb..47fe73a 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/EncoreEffect.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/EncoreEffect.cs @@ -3,7 +3,7 @@ using PkmnLib.Plugin.Gen7.Scripts.Utils; namespace PkmnLib.Plugin.Gen7.Scripts.Pokemon; [Script(ScriptCategory.Pokemon, "encore")] -public class EncoreEffect : Script +public class EncoreEffect : Script, IScriptForceTurnSelection { private readonly IPokemon _owner; private readonly StringKey _move; @@ -17,7 +17,7 @@ public class EncoreEffect : Script } /// - public override void ForceTurnSelection(IBattle battle, byte sideIndex, byte position, ref ITurnChoice? choice) + public void ForceTurnSelection(IBattle battle, byte sideIndex, byte position, ref ITurnChoice? choice) { var opposingSideIndex = (byte)(_owner.BattleData?.SideIndex == 0 ? 1 : 0); choice = TurnChoiceHelper.CreateMoveChoice(_owner, _move, opposingSideIndex, position); diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/FlinchEffect.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/FlinchEffect.cs index 2e4f57c..11382a2 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/FlinchEffect.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/FlinchEffect.cs @@ -1,10 +1,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Pokemon; [Script(ScriptCategory.Pokemon, "flinch_effect")] -public class FlinchEffect : Script +public class FlinchEffect : Script, IScriptPreventMove { /// - public override void PreventMove(IExecutingMove move, ref bool prevent) + public void PreventMove(IExecutingMove move, ref bool prevent) { prevent = true; var args = new CustomTriggers.OnFlinchArgs(move); diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/FuryCutterEffect.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/FuryCutterEffect.cs index 98a745c..be9e449 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/FuryCutterEffect.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/FuryCutterEffect.cs @@ -1,12 +1,12 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Pokemon; [Script(ScriptCategory.Pokemon, "fury_cutter")] -public class FuryCutterEffect : Script +public class FuryCutterEffect : Script, IScriptOnBeforeMove { public int TurnCount { get; set; } /// - public override void OnBeforeMove(IExecutingMove move) + public void OnBeforeMove(IExecutingMove move) { if (move.UseMove.Name != "fury_cutter") RemoveSelf(); diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/HealBlockEffect.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/HealBlockEffect.cs index 2384afd..f6ae57b 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/HealBlockEffect.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/HealBlockEffect.cs @@ -1,7 +1,7 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Pokemon; [Script(ScriptCategory.Pokemon, "heal_block")] -public class HealBlockEffect : Script, IScriptPreventMoveSelection +public class HealBlockEffect : Script, IScriptPreventMoveSelection, IScriptPreventMove { private int _duration; @@ -26,7 +26,7 @@ public class HealBlockEffect : Script, IScriptPreventMoveSelection } /// - public override void PreventMove(IExecutingMove move, ref bool prevent) + public void PreventMove(IExecutingMove move, ref bool prevent) { if (move.ChosenMove.MoveData.HasFlag("heal")) prevent = true; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/IceBallEffect.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/IceBallEffect.cs index 937a8ad..7ab619a 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/IceBallEffect.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/IceBallEffect.cs @@ -3,7 +3,7 @@ using PkmnLib.Plugin.Gen7.Scripts.Utils; namespace PkmnLib.Plugin.Gen7.Scripts.Pokemon; [Script(ScriptCategory.Pokemon, "ice_ball")] -public class IceBallEffect : Script +public class IceBallEffect : Script, IScriptForceTurnSelection { private readonly IPokemon _owner; private readonly StringKey _moveName; @@ -17,7 +17,7 @@ public class IceBallEffect : Script } /// - public override void ForceTurnSelection(IBattle battle, byte sideIndex, byte position, ref ITurnChoice? choice) + public void ForceTurnSelection(IBattle battle, byte sideIndex, byte position, ref ITurnChoice? choice) { var opposingSideIndex = (byte)(_owner.BattleData?.SideIndex == 0 ? 1 : 0); choice = TurnChoiceHelper.CreateMoveChoice(_owner, _moveName, opposingSideIndex, position); diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/Infatuated.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/Infatuated.cs index edc6bcb..07361e3 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/Infatuated.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/Infatuated.cs @@ -10,10 +10,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Pokemon; /// gender that has Cute Charm as its Ability, and is caused to a Pokémon that infatuates a Pokémon holding a Destiny Knot. /// [Script(ScriptCategory.Pokemon, "infatuated")] -public class Infatuated : Script +public class Infatuated : Script, IScriptPreventMove { /// - public override void PreventMove(IExecutingMove move, ref bool prevent) + public void PreventMove(IExecutingMove move, ref bool prevent) { if (move.User.BattleData?.Battle.Random.GetBool() == true) prevent = true; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/OutrageLikeEffect.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/OutrageLikeEffect.cs index d752376..cabcbe3 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/OutrageLikeEffect.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/OutrageLikeEffect.cs @@ -2,7 +2,7 @@ using PkmnLib.Plugin.Gen7.Scripts.Utils; namespace PkmnLib.Plugin.Gen7.Scripts.Pokemon; -public abstract class OutrageLikeEffect : Script +public abstract class OutrageLikeEffect : Script, IScriptForceTurnSelection { private readonly IPokemon _owner; private int _turns; @@ -20,7 +20,7 @@ public abstract class OutrageLikeEffect : Script } /// - public override void ForceTurnSelection(IBattle battle, byte sideIndex, byte position, ref ITurnChoice? choice) + public void ForceTurnSelection(IBattle battle, byte sideIndex, byte position, ref ITurnChoice? choice) { choice = TurnChoiceHelper.CreateMoveChoice(_owner, _move, _targetSide, _targetPosition); } diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/PhantomForceCharge.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/PhantomForceCharge.cs index 3e8cec3..c1c0c09 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/PhantomForceCharge.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/PhantomForceCharge.cs @@ -3,7 +3,7 @@ using PkmnLib.Plugin.Gen7.Scripts.Utils; namespace PkmnLib.Plugin.Gen7.Scripts.Pokemon; [Script(ScriptCategory.Pokemon, "phantom_force")] -public class PhantomForceCharge : Script +public class PhantomForceCharge : Script, IScriptForceTurnSelection { private readonly IPokemon _owner; @@ -13,7 +13,7 @@ public class PhantomForceCharge : Script } /// - public override void ForceTurnSelection(IBattle battle, byte sideIndex, byte position, ref ITurnChoice? choice) + public void ForceTurnSelection(IBattle battle, byte sideIndex, byte position, ref ITurnChoice? choice) { var opposingSideIndex = (byte)(_owner.BattleData?.SideIndex == 0 ? 1 : 0); choice = TurnChoiceHelper.CreateMoveChoice(_owner, "phantom_force", opposingSideIndex, position); diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/ProtectionFailureScript.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/ProtectionFailureScript.cs index 10e20ee..8963b51 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/ProtectionFailureScript.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/ProtectionFailureScript.cs @@ -5,13 +5,13 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Pokemon; /// or protect-like moves. /// [Script(ScriptCategory.Pokemon, "protection_failure")] -public class ProtectionFailureScript : Script +public class ProtectionFailureScript : Script, IScriptOnBeforeTurnStart { public int ProtectTurns { get; set; } public bool UsedProtect { get; set; } /// - public override void OnBeforeTurnStart(ITurnChoice choice) + public void OnBeforeTurnStart(ITurnChoice choice) { UsedProtect = false; } diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/RequiresRechargeEffect.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/RequiresRechargeEffect.cs index 61636fb..1f9b40f 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/RequiresRechargeEffect.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/RequiresRechargeEffect.cs @@ -1,7 +1,7 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Pokemon; [Script(ScriptCategory.Pokemon, "requires_recharge")] -public class RequiresRechargeEffect : Script +public class RequiresRechargeEffect : Script, IScriptForceTurnSelection, IScriptOnBeforeTurnStart { private readonly IPokemon _owner; @@ -11,13 +11,13 @@ public class RequiresRechargeEffect : Script } /// - public override void ForceTurnSelection(IBattle battle, byte sideIndex, byte position, ref ITurnChoice? choice) + public void ForceTurnSelection(IBattle battle, byte sideIndex, byte position, ref ITurnChoice? choice) { choice = new PassChoice(_owner); } /// - public override void OnBeforeTurnStart(ITurnChoice choice) + public void OnBeforeTurnStart(ITurnChoice choice) { RemoveSelf(); _owner.BattleData?.Battle.EventHook.Invoke(new DialogEvent("pokemon_must_recharge", diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/ShadowForceCharge.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/ShadowForceCharge.cs index a164083..fdff1dd 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/ShadowForceCharge.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/ShadowForceCharge.cs @@ -3,7 +3,7 @@ using PkmnLib.Plugin.Gen7.Scripts.Utils; namespace PkmnLib.Plugin.Gen7.Scripts.Pokemon; [Script(ScriptCategory.Pokemon, "shadow_force")] -public class ShadowForceCharge : Script +public class ShadowForceCharge : Script, IScriptForceTurnSelection { private readonly IPokemon _owner; @@ -13,7 +13,7 @@ public class ShadowForceCharge : Script } /// - public override void ForceTurnSelection(IBattle battle, byte sideIndex, byte position, ref ITurnChoice? choice) + public void ForceTurnSelection(IBattle battle, byte sideIndex, byte position, ref ITurnChoice? choice) { var opposingSideIndex = (byte)(_owner.BattleData?.SideIndex == 0 ? 1 : 0); choice = TurnChoiceHelper.CreateMoveChoice(_owner, "shadow_force", opposingSideIndex, position); diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/SkullbashEffect.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/SkullbashEffect.cs index e03b3e9..93af2fd 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/SkullbashEffect.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/SkullbashEffect.cs @@ -3,7 +3,7 @@ using PkmnLib.Plugin.Gen7.Scripts.Utils; namespace PkmnLib.Plugin.Gen7.Scripts.Pokemon; [Script(ScriptCategory.Pokemon, "skull_bash")] -public class SkullBashEffect : Script +public class SkullBashEffect : Script, IScriptForceTurnSelection { private readonly IPokemon _owner; @@ -13,7 +13,7 @@ public class SkullBashEffect : Script } /// - public override void ForceTurnSelection(IBattle battle, byte sideIndex, byte position, ref ITurnChoice? choice) + public void ForceTurnSelection(IBattle battle, byte sideIndex, byte position, ref ITurnChoice? choice) { choice = TurnChoiceHelper.CreateMoveChoice(_owner, "skull_bash", sideIndex, position); } diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/SkyAttackEffect.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/SkyAttackEffect.cs index d259fe5..4e3aa42 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/SkyAttackEffect.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/SkyAttackEffect.cs @@ -3,7 +3,7 @@ using PkmnLib.Plugin.Gen7.Scripts.Utils; namespace PkmnLib.Plugin.Gen7.Scripts.Pokemon; [Script(ScriptCategory.Pokemon, "sky_attack")] -public class SkyAttackEffect : Script +public class SkyAttackEffect : Script, IScriptForceTurnSelection { private readonly IPokemon _owner; @@ -13,7 +13,7 @@ public class SkyAttackEffect : Script } /// - public override void ForceTurnSelection(IBattle battle, byte sideIndex, byte position, ref ITurnChoice? choice) + public void ForceTurnSelection(IBattle battle, byte sideIndex, byte position, ref ITurnChoice? choice) { choice = TurnChoiceHelper.CreateMoveChoice(_owner, "sky_attack", sideIndex, position); } diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/SlowStartEffect.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/SlowStartEffect.cs index 64c80ab..ed3e0fe 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/SlowStartEffect.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/SlowStartEffect.cs @@ -1,12 +1,12 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Pokemon; [Script(ScriptCategory.Pokemon, "slow_start")] -public class SlowStartEffect : Script +public class SlowStartEffect : Script, IScriptChangeSpeed { private int _turnsRemaining = 5; /// - public override void ChangeSpeed(ITurnChoice choice, ref uint speed) + public void ChangeSpeed(ITurnChoice choice, ref uint speed) { speed /= 2; } diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/TauntEffect.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/TauntEffect.cs index ce53894..0dab399 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/TauntEffect.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/TauntEffect.cs @@ -3,7 +3,7 @@ using PkmnLib.Static.Moves; namespace PkmnLib.Plugin.Gen7.Scripts.Pokemon; [Script(ScriptCategory.Pokemon, "taunt")] -public class TauntEffect(int turns) : Script, IScriptPreventMoveSelection +public class TauntEffect(int turns) : Script, IScriptPreventMoveSelection, IScriptFailMove { private int _turns = turns; @@ -17,7 +17,7 @@ public class TauntEffect(int turns) : Script, IScriptPreventMoveSelection } /// - public override void FailMove(IExecutingMove move, ref bool fail) + public void FailMove(IExecutingMove move, ref bool fail) { if (move.ChosenMove.MoveData.Category == MoveCategory.Status) { diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/ThroatChopEffect.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/ThroatChopEffect.cs index 81aa32a..45a484a 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/ThroatChopEffect.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/ThroatChopEffect.cs @@ -1,7 +1,7 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Pokemon; [Script(ScriptCategory.Pokemon, "throat_chop")] -public class ThroatChopEffect : Script, IScriptPreventMoveSelection +public class ThroatChopEffect : Script, IScriptPreventMoveSelection, IScriptFailMove { private int _turns = 3; @@ -13,7 +13,7 @@ public class ThroatChopEffect : Script, IScriptPreventMoveSelection } /// - public override void FailMove(IExecutingMove move, ref bool fail) + public void FailMove(IExecutingMove move, ref bool fail) { if (move.UseMove.HasFlag("sound")) fail = true; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/TormentEffect.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/TormentEffect.cs index bf23f49..3cbbff6 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/TormentEffect.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/TormentEffect.cs @@ -1,7 +1,7 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Pokemon; [Script(ScriptCategory.Pokemon, "torment")] -public class TormentEffect(IMoveChoice? moveChoice) : Script, IScriptPreventMoveSelection +public class TormentEffect(IMoveChoice? moveChoice) : Script, IScriptPreventMoveSelection, IScriptOnBeforeTurnStart { private IMoveChoice? _moveChoice = moveChoice; @@ -17,7 +17,7 @@ public class TormentEffect(IMoveChoice? moveChoice) : Script, IScriptPreventMove } /// - public override void OnBeforeTurnStart(ITurnChoice choice) + public void OnBeforeTurnStart(ITurnChoice choice) { if (choice is IMoveChoice moveChoice) _moveChoice = moveChoice; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/TruantEffect.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/TruantEffect.cs index ba95933..edd270c 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/TruantEffect.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/TruantEffect.cs @@ -1,9 +1,9 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Pokemon; -public class TruantEffect(IPokemon owner) : Script +public class TruantEffect(IPokemon owner) : Script, IScriptForceTurnSelection { /// - public override void ForceTurnSelection(IBattle battle, byte sideIndex, byte position, ref ITurnChoice? choice) + public void ForceTurnSelection(IBattle battle, byte sideIndex, byte position, ref ITurnChoice? choice) { choice = new PassChoice(owner); } diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Side/CraftyShieldEffect.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Side/CraftyShieldEffect.cs index 2a1b151..9db119f 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Side/CraftyShieldEffect.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Side/CraftyShieldEffect.cs @@ -3,10 +3,10 @@ using PkmnLib.Static.Moves; namespace PkmnLib.Plugin.Gen7.Scripts.Side; [Script(ScriptCategory.Side, "crafty_shield")] -public class CraftyShieldEffect : Script +public class CraftyShieldEffect : Script, IScriptStopBeforeMove { /// - public override void StopBeforeMove(IExecutingMove move, ref bool stop) + public void StopBeforeMove(IExecutingMove move, ref bool stop) { if (move.UseMove.Category == MoveCategory.Status) stop = true; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Side/RagePowderEffect.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Side/RagePowderEffect.cs index 9eafe2d..a927d34 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Side/RagePowderEffect.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Side/RagePowderEffect.cs @@ -1,7 +1,7 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Side; [Script(ScriptCategory.Side, "rage_powder")] -public class RagePowderEffect : Script +public class RagePowderEffect : Script, IScriptChangeIncomingTargets { public IPokemon User { get; set; } @@ -11,7 +11,7 @@ public class RagePowderEffect : Script } /// - public override void ChangeIncomingTargets(IMoveChoice moveChoice, ref IReadOnlyList targets) + public void ChangeIncomingTargets(IMoveChoice moveChoice, ref IReadOnlyList targets) { // Ignore multi-hit moves if (targets.Count != 1) diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Side/SpotlightEffect.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Side/SpotlightEffect.cs index 1b5cf5a..ce6d132 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Side/SpotlightEffect.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Side/SpotlightEffect.cs @@ -2,7 +2,7 @@ using PkmnLib.Dynamic.BattleFlow; namespace PkmnLib.Plugin.Gen7.Scripts.Side; -public class SpotlightEffect : Script +public class SpotlightEffect : Script, IScriptChangeIncomingTargets { private readonly byte _position; private readonly IBattleSide _side; @@ -14,7 +14,7 @@ public class SpotlightEffect : Script } /// - public override void ChangeIncomingTargets(IMoveChoice moveChoice, ref IReadOnlyList targets) + public void ChangeIncomingTargets(IMoveChoice moveChoice, ref IReadOnlyList targets) { if (!TargetResolver.IsValidTarget(_side.Index, _position, moveChoice.ChosenMove.MoveData.Target, moveChoice.User)) diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Side/SwampEffect.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Side/SwampEffect.cs index 4502c79..12835fe 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Side/SwampEffect.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Side/SwampEffect.cs @@ -1,12 +1,12 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Side; [Script(ScriptCategory.Side, "swamp_effect")] -public class SwampEffect : Script +public class SwampEffect : Script, IScriptChangeSpeed { private int _turns = 5; /// - public override void ChangeSpeed(ITurnChoice choice, ref uint speed) + public void ChangeSpeed(ITurnChoice choice, ref uint speed) { speed /= 4; } diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Side/TailwindEffect.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Side/TailwindEffect.cs index 23d9422..9da6aa4 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Side/TailwindEffect.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Side/TailwindEffect.cs @@ -1,12 +1,12 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Side; [Script(ScriptCategory.Side, "tailwind")] -public class TailwindEffect : Script +public class TailwindEffect : Script, IScriptChangeSpeed { private int _duration = 3; /// - public override void ChangeSpeed(ITurnChoice choice, ref uint speed) + public void ChangeSpeed(ITurnChoice choice, ref uint speed) { speed *= 2; } diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Side/WideGuardEffect.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Side/WideGuardEffect.cs index a3ed080..a1c01cc 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Side/WideGuardEffect.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Side/WideGuardEffect.cs @@ -1,7 +1,7 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Side; [Script(ScriptCategory.Side, "wide_guard")] -public class WideGuardEffect : Script +public class WideGuardEffect : Script, IScriptChangeTargets { private IBattleSide? _side; @@ -19,7 +19,7 @@ public class WideGuardEffect : Script } /// - public override void ChangeTargets(IMoveChoice moveChoice, ref IReadOnlyList targets) + public void ChangeTargets(IMoveChoice moveChoice, ref IReadOnlyList targets) { if (_side == null) return; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Status/Frozen.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Status/Frozen.cs index 659f4b7..dae139d 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Status/Frozen.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Status/Frozen.cs @@ -1,7 +1,7 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Status; [Script(ScriptCategory.Status, "frozen")] -public class Frozen : Script +public class Frozen : Script, IScriptPreventMove { private IPokemon? _pokemon; @@ -16,7 +16,7 @@ public class Frozen : Script } /// - public override void PreventMove(IExecutingMove move, ref bool prevent) + public void PreventMove(IExecutingMove move, ref bool prevent) { if (move.UseMove.MoveType.Name == "fire" || move.UseMove.HasFlag("defrost")) { diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Status/Paralyzed.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Status/Paralyzed.cs index 24afc50..6561257 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Status/Paralyzed.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Status/Paralyzed.cs @@ -1,16 +1,16 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Status; [Script(ScriptCategory.Status, "paralyzed")] -public class Paralyzed : Script +public class Paralyzed : Script, IScriptChangeSpeed, IScriptPreventMove { /// - public override void ChangeSpeed(ITurnChoice choice, ref uint speed) + public void ChangeSpeed(ITurnChoice choice, ref uint speed) { speed = (uint)(speed * 0.5f); } /// - public override void PreventMove(IExecutingMove move, ref bool prevent) + public void PreventMove(IExecutingMove move, ref bool prevent) { if (move.Battle.Random.GetInt(0, 100) >= 25) return; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Status/Sleep.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Status/Sleep.cs index f63a408..19ef1ca 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Status/Sleep.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Status/Sleep.cs @@ -1,7 +1,7 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Status; [Script(ScriptCategory.Status, "sleep")] -public class Sleep : Script +public class Sleep : Script, IScriptPreventMove { private IPokemon? _pokemon; public int Turns { get; set; } @@ -27,7 +27,7 @@ public class Sleep : Script } /// - public override void PreventMove(IExecutingMove move, ref bool prevent) + public void PreventMove(IExecutingMove move, ref bool prevent) { Turns--; if (Turns <= 0) diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Weather/DesolateLands.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Weather/DesolateLands.cs index 17bd53a..7dcc200 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Weather/DesolateLands.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Weather/DesolateLands.cs @@ -1,7 +1,7 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Weather; [Script(ScriptCategory.Weather, "desolate_lands")] -public class DesolateLands : HarshSunlight +public class DesolateLands : HarshSunlight, IScriptFailMove { private readonly HashSet _placers = []; @@ -28,7 +28,7 @@ public class DesolateLands : HarshSunlight } /// - public override void FailMove(IExecutingMove move, ref bool fail) + public void FailMove(IExecutingMove move, ref bool fail) { if (move.UseMove.MoveType.Name == "water") fail = true; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Weather/PrimordialSea.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Weather/PrimordialSea.cs index 31bbca4..c95d399 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Weather/PrimordialSea.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Weather/PrimordialSea.cs @@ -1,7 +1,7 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Weather; [Script(ScriptCategory.Weather, "primordial_sea")] -public class PrimordialSea : Rain +public class PrimordialSea : Rain, IScriptFailMove { private HashSet _placers = new(); @@ -27,7 +27,7 @@ public class PrimordialSea : Rain preventWeatherChange = true; } - public override void FailMove(IExecutingMove move, ref bool fail) + public void FailMove(IExecutingMove move, ref bool fail) { if (move.UseMove.MoveType.Name == "fire") fail = true;