diff --git a/PkmnLib.Dynamic/BattleFlow/MoveTurnExecutor.cs b/PkmnLib.Dynamic/BattleFlow/MoveTurnExecutor.cs index 572b5f6..aa96aa8 100644 --- a/PkmnLib.Dynamic/BattleFlow/MoveTurnExecutor.cs +++ b/PkmnLib.Dynamic/BattleFlow/MoveTurnExecutor.cs @@ -126,7 +126,8 @@ public static class MoveTurnExecutor private static void ExecuteMoveChoiceForTarget(IBattle battle, IExecutingMove executingMove, IPokemon target) { var failed = false; - target.RunScriptHook(x => x.FailIncomingMove(executingMove, target, ref failed)); + target.RunScriptHookInterface(x => + x.FailIncomingMove(executingMove, target, ref failed)); if (failed) { // TODO: fail handling @@ -134,7 +135,8 @@ public static class MoveTurnExecutor } var isInvulnerable = false; - target.RunScriptHook(x => x.IsInvulnerableToMove(executingMove, target, ref isInvulnerable)); + target.RunScriptHookInterface(x => + x.IsInvulnerableToMove(executingMove, target, ref isInvulnerable)); if (isInvulnerable) { battle.EventHook.Invoke(new MoveInvulnerableEvent(executingMove, target)); @@ -166,7 +168,8 @@ public static class MoveTurnExecutor hitData.IsContact = isContact; var hitType = (TypeIdentifier?)useMove.MoveType; - executingMove.RunScriptHook(x => x.ChangeMoveType(executingMove, target, hitIndex, ref hitType)); + executingMove.RunScriptHookInterface(x => + x.ChangeMoveType(executingMove, target, hitIndex, ref hitType)); hitData.Type = hitType; @@ -177,14 +180,17 @@ public static class MoveTurnExecutor var effectiveness = hitType == null ? 1 : battle.Library.StaticLibrary.Types.GetEffectiveness(hitType.Value, types); - executingMove.RunScriptHook(x => x.ChangeEffectiveness(executingMove, target, hitIndex, ref effectiveness)); - target.RunScriptHook(x => + executingMove.RunScriptHookInterface(x => + x.ChangeEffectiveness(executingMove, target, hitIndex, ref effectiveness)); + target.RunScriptHookInterface(x => x.ChangeIncomingEffectiveness(executingMove, target, hitIndex, ref effectiveness)); hitData.Effectiveness = effectiveness; var blockCritical = false; - executingMove.RunScriptHook(x => x.BlockCriticalHit(executingMove, target, hitIndex, ref blockCritical)); - target.RunScriptHook(x => x.BlockIncomingCriticalHit(executingMove, target, hitIndex, ref blockCritical)); + executingMove.RunScriptHookInterface(x => + x.BlockCriticalHit(executingMove, target, hitIndex, ref blockCritical)); + target.RunScriptHookInterface(x => + x.BlockIncomingCriticalHit(executingMove, target, hitIndex, ref blockCritical)); if (!blockCritical) { var critical = battle.Library.DamageCalculator.IsCritical(battle, executingMove, target, hitIndex); @@ -208,7 +214,7 @@ public static class MoveTurnExecutor if (accuracy < 100 && battle.Random.GetInt(100) >= accuracy) { - executingMove.RunScriptHook(x => x.OnMoveMiss(executingMove, target)); + executingMove.RunScriptHookInterface(x => x.OnMoveMiss(executingMove, target)); battle.EventHook.Invoke(new MoveMissEvent(executingMove)); break; } @@ -230,7 +236,8 @@ public static class MoveTurnExecutor var chance = secondaryEffect.Chance; if (chance < 0 || battle.Random.EffectChance(chance, executingMove, target, hitIndex)) { - executingMove.RunScriptHook(x => x.OnSecondaryEffect(executingMove, target, hitIndex)); + executingMove.RunScriptHookInterface(x => + x.OnSecondaryEffect(executingMove, target, hitIndex)); } } } @@ -252,9 +259,11 @@ public static class MoveTurnExecutor }); target.Damage(damage, DamageSource.MoveDamage, hitEventBatch); if (!target.IsFainted) - target.RunScriptHook(x => x.OnIncomingHit(executingMove, target, hitIndex)); + target.RunScriptHookInterface(x => + x.OnIncomingHit(executingMove, target, hitIndex)); else - executingMove.RunScriptHook(x => x.OnOpponentFaints(executingMove, target, hitIndex)); + executingMove.RunScriptHookInterface(x => + x.OnOpponentFaints(executingMove, target, hitIndex)); if (!target.IsFainted) { @@ -273,13 +282,14 @@ public static class MoveTurnExecutor var chance = secondaryEffect.Chance; if (chance < 0 || battle.Random.EffectChance(chance, executingMove, target, hitIndex)) { - executingMove.RunScriptHook(x => + executingMove.RunScriptHookInterface(x => x.OnSecondaryEffect(executingMove, target, hitIndex)); } } } if (target.IsFainted) - executingMove.RunScriptHook(x => x.OnOpponentFaints(executingMove, target, hitIndex)); + executingMove.RunScriptHookInterface(x => + x.OnOpponentFaints(executingMove, target, hitIndex)); } } } @@ -287,7 +297,7 @@ public static class MoveTurnExecutor if (numberOfHits == 0) { - target.RunScriptHook(x => x.OnMoveMiss(executingMove, target)); + target.RunScriptHookInterface(x => x.OnMoveMiss(executingMove, target)); battle.EventHook.Invoke(new MoveMissEvent(executingMove)); } diff --git a/PkmnLib.Dynamic/ScriptHandling/Script.cs b/PkmnLib.Dynamic/ScriptHandling/Script.cs index 8c088a4..0cec19f 100644 --- a/PkmnLib.Dynamic/ScriptHandling/Script.cs +++ b/PkmnLib.Dynamic/ScriptHandling/Script.cs @@ -61,106 +61,6 @@ public abstract class Script : IDeepCloneable { } - /// - /// 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. - /// - public virtual void FailIncomingMove(IExecutingMove move, IPokemon target, ref bool fail) - { - } - - /// - /// This function allows a script to make its owner invulnerable to an incoming move. - /// - public virtual void IsInvulnerableToMove(IExecutingMove move, IPokemon target, ref bool invulnerable) - { - } - - /// - /// This function occurs when a move gets missed. This runs on the scripts belonging to the executing - /// move, which include the scripts that are attached to the owner of the script. - /// - public virtual void OnMoveMiss(IExecutingMove move, IPokemon target) - { - } - - /// - /// This function allows the script to change the actual type that is used for the move on a target. - /// If this is set to null, the move will be treated as a typeless move. - /// - public virtual void ChangeMoveType(IExecutingMove move, IPokemon target, byte hit, - ref TypeIdentifier? typeIdentifier) - { - } - - /// - /// This function allows the script to change how effective a move is on a target. - /// - public virtual void ChangeEffectiveness(IExecutingMove move, IPokemon target, byte hit, ref float effectiveness) - { - } - - /// - /// This function allows the script to override how effective a move is on a target. - /// - public virtual void ChangeIncomingEffectiveness(IExecutingMove executingMove, IPokemon target, byte hitIndex, - ref float effectiveness) - { - } - - /// - /// This function allows a script to block an outgoing move from being critical. - /// - public virtual void BlockCriticalHit(IExecutingMove move, IPokemon target, byte hit, ref bool block) - { - } - - /// - /// This function allows a script to block an incoming move from being critical. - /// - public virtual void BlockIncomingCriticalHit(IExecutingMove move, IPokemon target, byte hit, ref bool block) - { - } - - /// - /// This function allows a script to modify the accuracy of a move used. This value represents - /// the percentage accuracy, so anything above 100% will make it always hit. - /// - public virtual void ChangeAccuracyModifier(IExecutingMove move, IPokemon target, byte hit, ref float modifier) - { - } - - /// - /// This function allows a script to change the critical stage of the move used. - /// - public virtual void ChangeCriticalStage(IExecutingMove move, IPokemon target, byte hit, ref byte stage) - { - } - - /// - /// This function allows a script to change the damage modifier of a critical hit. This will only - /// run when a hit is critical. - /// - public virtual void ChangeCriticalModifier(IExecutingMove move, IPokemon target, byte hit, ref float modifier) - { - } - - /// - /// This function allows a script to change the damage modifier of a Same Type Attack Bonus, which - /// occurs when the user has the move type as one of its own types. - /// - public virtual void ChangeStabModifier(IExecutingMove executingMove, IPokemon target, byte hitNumber, bool isStab, - ref float modifier) - { - } - - /// - /// This function allows a script to change the effective base power of a move hit. - /// - public virtual void ChangeBasePower(IExecutingMove move, IPokemon target, byte hit, ref ushort basePower) - { - } - /// /// This function allows a script to bypass defensive stat boosts for a move hit. /// If this is true, the damage will be calculated as if the target has no positive stat boosts. Negative @@ -257,21 +157,6 @@ public abstract class Script : IDeepCloneable { } - /// - /// This function triggers when an incoming hit happens. This triggers after the damage is done, - /// but before the secondary effect of the move happens. - /// - public virtual void OnIncomingHit(IExecutingMove move, IPokemon target, byte hit) - { - } - - /// - /// This function triggers when an opponent on the field faints due to the move that is being executed. - /// - public virtual void OnOpponentFaints(IExecutingMove move, IPokemon target, byte hit) - { - } - /// /// This function allows a script attached to a Pokemon or its parents to prevent stat boost /// changes on that Pokemon. @@ -335,15 +220,6 @@ public abstract class Script : IDeepCloneable { } - /// - /// This function triggers when the move uses its secondary effect. Moves should implement their - /// secondary effects here. Status moves should implement their actual functionality in this - /// function as well, as status moves effects are defined as secondary effects for simplicity. - /// - public virtual void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) - { - } - /// /// This function triggers on a move or its parents when all hits on a target are finished. /// @@ -910,4 +786,191 @@ public interface IScriptOnAfterMove /// This function runs immediately after all targets have had their hits executed. /// void OnAfterMove(IExecutingMove move); +} + +/// +/// This interface allows scripts to change the type of a move that is used on a target. +/// +public interface IScriptChangeMoveType +{ + /// + /// This function allows the script to change the actual type that is used for the move on a target. + /// If this is set to null, the move will be treated as a typeless move. + /// + void ChangeMoveType(IExecutingMove move, IPokemon target, byte hit, ref TypeIdentifier? typeIdentifier); +} + +/// +/// This interface allows scripts to change the effectiveness of a move on a target. +/// +public interface IScriptChangeEffectiveness +{ + /// + /// This function allows the script to change how effective a move is on a target. + /// + void ChangeEffectiveness(IExecutingMove move, IPokemon target, byte hit, ref float effectiveness); +} + +/// +/// This interface allows scripts to change the effectiveness of a move on a target. +/// +public interface IScriptChangeIncomingEffectiveness +{ + /// + /// This function allows the script to override how effective a move is on a target. + /// + void ChangeIncomingEffectiveness(IExecutingMove executingMove, IPokemon target, byte hitIndex, + ref float effectiveness); +} + +/// +/// This interface allows scripts to block a critical hit from being applied to a move. +/// +public interface IScriptBlockCriticalHit +{ + /// + /// This function allows a script to block an outgoing move from being critical. + /// + void BlockCriticalHit(IExecutingMove move, IPokemon target, byte hit, ref bool block); +} + +/// +/// This interface allows scripts to block an incoming critical hit from being applied to a move. +/// +public interface IScriptBlockIncomingCriticalHit +{ + /// + /// This function allows a script to block an incoming move from being critical. + /// + void BlockIncomingCriticalHit(IExecutingMove move, IPokemon target, byte hit, ref bool block); +} + +/// +/// This interface allows scripts to run when an incoming hit happens. +/// +public interface IScriptOnIncomingHit +{ + /// + /// This function triggers when an incoming hit happens. This triggers after the damage is done, + /// but before the secondary effect of the move happens. + /// + void OnIncomingHit(IExecutingMove move, IPokemon target, byte hit); +} + +/// +/// This interface allows scripts to run when an opponent faints due to the move that is being executed. +/// +public interface IScriptOnOpponentFaints +{ + /// + /// This function triggers when an opponent on the f ield faints due to the move that is being executed. + /// + void OnOpponentFaints(IExecutingMove move, IPokemon target, byte hit); +} + +/// +/// This interface allows scripts to run when the move uses its secondary effect. +/// +public interface IScriptOnSecondaryEffect +{ + /// + /// This function triggers when the move uses its secondary effect. Moves should implement their + /// secondary effects here. Status moves should implement their actual functionality in this + /// function as well, as status moves effects are defined as secondary effects for simplicity. + /// + void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit); +} + +/// +/// This interface allows scripts to run when a move fails to hit its target. +/// +public interface IScriptFailIncomingMove +{ + /// + /// 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. + /// + void FailIncomingMove(IExecutingMove move, IPokemon target, ref bool fail); +} + +/// +/// This interface allows scripts to run making the owner invulnerable to an incoming move. +/// +public interface IScriptIsInvulnerableToMove +{ + /// + /// This function allows a script to make its owner invulnerable to an incoming move. + /// + void IsInvulnerableToMove(IExecutingMove move, IPokemon target, ref bool invulnerable); +} + +/// +/// This interface allows scripts to run when a move misses its target. +/// +public interface IScriptOnMoveMiss +{ + /// + /// This function allows a script to run when a move misses its target. This is used for moves + /// that have a secondary effect that should run even if the move misses, such as Spore. + /// + void OnMoveMiss(IExecutingMove move, IPokemon target); +} + +/// +/// This interface allows scripts to modify the accuracy modifier of a move. +/// +public interface IScriptChangeAccuracyModifier +{ + /// + /// This function allows a script to modify the accuracy of a move used. This value represents + /// the percentage accuracy, so anything above 100% will make it always hit. + /// + void ChangeAccuracyModifier(IExecutingMove move, IPokemon target, byte hit, ref float modifier); +} + +/// +/// This interface allows scripts to change the critical stage of a move. +/// +public interface IScriptChangeCriticalStage +{ + /// + /// This function allows a script to change the critical stage of the move used. + /// + void ChangeCriticalStage(IExecutingMove move, IPokemon target, byte hit, ref byte stage); +} + +/// +/// This interface allows scripts to change the damage modifier of a critical hit. +/// +public interface IScriptChangeCriticalModifier +{ + /// + /// This function allows a script to change the damage modifier of a critical hit. This will only + /// run when a hit is critical. + /// + void ChangeCriticalModifier(IExecutingMove move, IPokemon target, byte hit, ref float modifier); +} + +/// +/// This interface allows scripts to change the STAB (Same Type Attack Bonus) modifier. +/// +public interface IScriptChangeStabModifier +{ + /// + /// This function allows a script to change the damage modifier of a Same Type Attack Bonus, which + /// occurs when the user has the move type as one of its own types. + /// + void ChangeStabModifier(IExecutingMove executingMove, IPokemon target, byte hitNumber, bool isStab, + ref float modifier); +} + +/// +/// This interface allows scripts to change the effective base power of a move. +/// +public interface IScriptChangeBasePower +{ + /// + /// This function allows a script to change the effective base power of a move hit. + /// + void ChangeBasePower(IExecutingMove move, IPokemon target, byte hit, ref ushort basePower); } \ No newline at end of file diff --git a/Plugins/PkmnLib.Plugin.Gen7/Libraries/Battling/Gen7BattleStatCalculator.cs b/Plugins/PkmnLib.Plugin.Gen7/Libraries/Battling/Gen7BattleStatCalculator.cs index 70ec807..7cac8fa 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Libraries/Battling/Gen7BattleStatCalculator.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Libraries/Battling/Gen7BattleStatCalculator.cs @@ -52,7 +52,7 @@ public class Gen7BattleStatCalculator : IBattleStatCalculator byte moveAccuracy) { var accuracyModifier = 1.0f; - executingMove.RunScriptHook(x => + executingMove.RunScriptHookInterface(x => x.ChangeAccuracyModifier(executingMove, target, hitIndex, ref accuracyModifier)); var modifiedAccuracy = (int)(moveAccuracy * accuracyModifier); // ReSharper disable once AccessToModifiedClosure diff --git a/Plugins/PkmnLib.Plugin.Gen7/Libraries/Battling/Gen7DamageCalculator.cs b/Plugins/PkmnLib.Plugin.Gen7/Libraries/Battling/Gen7DamageCalculator.cs index 8b663c5..1c470b6 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Libraries/Battling/Gen7DamageCalculator.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Libraries/Battling/Gen7DamageCalculator.cs @@ -29,7 +29,7 @@ public class Gen7DamageCalculator(Gen7PluginConfiguration configuration) : IDama if (hitData.IsCritical) { var critModifier = 1.5f; - executingMove?.RunScriptHook(script => + executingMove?.RunScriptHookInterface(script => script.ChangeCriticalModifier(executingMove, target, hitNumber, ref critModifier)); floatDamage = MathF.Floor(floatDamage * critModifier); } @@ -51,7 +51,7 @@ public class Gen7DamageCalculator(Gen7PluginConfiguration configuration) : IDama stabModifier = 1.5f; isStab = true; } - executingMove?.RunScriptHook(script => + executingMove?.RunScriptHookInterface(script => script.ChangeStabModifier(executingMove, target, hitNumber, isStab, ref stabModifier)); floatDamage = MathF.Floor(floatDamage * stabModifier); @@ -80,7 +80,8 @@ public class Gen7DamageCalculator(Gen7PluginConfiguration configuration) : IDama if (executingMove.UseMove.Category == MoveCategory.Status) return 0; var basePower = (ushort)executingMove.UseMove.BasePower; - executingMove.RunScriptHook(script => script.ChangeBasePower(executingMove, target, hitNumber, ref basePower)); + executingMove.RunScriptHookInterface(script => + script.ChangeBasePower(executingMove, target, hitNumber, ref basePower)); return basePower; } @@ -90,7 +91,7 @@ public class Gen7DamageCalculator(Gen7PluginConfiguration configuration) : IDama if (executingMove.UseMove.Category == MoveCategory.Status) return false; byte critStage = 0; - executingMove.RunScriptHook(script => + executingMove.RunScriptHookInterface(script => script.ChangeCriticalStage(executingMove, target, hitNumber, ref critStage)); var random = battle.Random; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Aftermath.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Aftermath.cs index ea515a9..bc33297 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Aftermath.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Aftermath.cs @@ -7,12 +7,12 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Abilities; /// Bulbapedia - Aftermath /// [Script(ScriptCategory.Ability, "aftermath")] -public class Aftermath : Script +public class Aftermath : Script, IScriptOnIncomingHit { private IExecutingMove? _lastAttack; /// - public override void OnIncomingHit(IExecutingMove move, IPokemon target, byte hit) + public void OnIncomingHit(IExecutingMove move, IPokemon target, byte hit) { _lastAttack = !move.GetHitData(target, hit).IsContact ? move : null; } diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/AngerPoint.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/AngerPoint.cs index 3b82572..58938cc 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/AngerPoint.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/AngerPoint.cs @@ -7,10 +7,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Abilities; /// Bulbapedia - Anger Point /// [Script(ScriptCategory.Ability, "anger_point")] -public class AngerPoint : Script +public class AngerPoint : Script, IScriptOnIncomingHit { /// - public override void OnIncomingHit(IExecutingMove move, IPokemon target, byte hit) + public void OnIncomingHit(IExecutingMove move, IPokemon target, byte hit) { if (move.GetHitData(target, hit).IsCritical) { diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/BattleBond.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/BattleBond.cs index 2c031c2..29445d0 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/BattleBond.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/BattleBond.cs @@ -7,10 +7,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Abilities; /// Bulbapedia - Battle Bond /// [Script(ScriptCategory.Ability, "battle_bond")] -public class BattleBond : Script, IScriptChangeNumberOfHits +public class BattleBond : Script, IScriptChangeNumberOfHits, IScriptOnOpponentFaints, IScriptChangeBasePower { /// - public override void OnOpponentFaints(IExecutingMove move, IPokemon target, byte hit) + public void OnOpponentFaints(IExecutingMove move, IPokemon target, byte hit) { if (move.User.Species.Name == "greninja" && move.User.Form.Name != "ash" && move.User.Species.TryGetForm("ash", out var ashForm)) @@ -21,7 +21,7 @@ public class BattleBond : Script, IScriptChangeNumberOfHits } /// - public override void ChangeBasePower(IExecutingMove move, IPokemon target, byte hit, ref ushort basePower) + public void ChangeBasePower(IExecutingMove move, IPokemon target, byte hit, ref ushort basePower) { if (move.UseMove.Name == "water_shuriken" && move.User.Form.Name == "ash") basePower = 20; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/BeastBoost.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/BeastBoost.cs index 2053105..90c87f4 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/BeastBoost.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/BeastBoost.cs @@ -7,10 +7,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Abilities; /// Bulbapedia - Beast Boost /// [Script(ScriptCategory.Ability, "beast_boost")] -public class BeastBoost : Script +public class BeastBoost : Script, IScriptOnOpponentFaints { /// - public override void OnOpponentFaints(IExecutingMove move, IPokemon target, byte hit) + public void OnOpponentFaints(IExecutingMove move, IPokemon target, byte hit) { var highestStat = move.User.BoostedStats.OrderByDescending(x => x.value).First().statistic; EventBatchId batchId = new(); diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Bulletproof.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Bulletproof.cs index 60b0dfc..cbe3b00 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Bulletproof.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Bulletproof.cs @@ -7,10 +7,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Abilities; /// Bulbapedia - Bulletproof /// [Script(ScriptCategory.Ability, "bulletproof")] -public class Bulletproof : Script +public class Bulletproof : Script, IScriptFailIncomingMove { /// - public override void FailIncomingMove(IExecutingMove move, IPokemon target, ref bool fail) + public void FailIncomingMove(IExecutingMove move, IPokemon target, ref bool fail) { if (move.UseMove.HasFlag("ballistics")) fail = true; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/ChangeMoveTypeAbility.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/ChangeMoveTypeAbility.cs index 27e9e13..dd5715d 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/ChangeMoveTypeAbility.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/ChangeMoveTypeAbility.cs @@ -9,7 +9,7 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Abilities; /// Bulbapedia - Refrigerate /// [Script(ScriptCategory.Ability, "change_move_type")] -public class ChangeMoveTypeAbility : Script, IScriptOnInitialize +public class ChangeMoveTypeAbility : Script, IScriptOnInitialize, IScriptChangeMoveType, IScriptChangeBasePower { private StringKey _fromType; private StringKey _toType; @@ -29,8 +29,7 @@ public class ChangeMoveTypeAbility : Script, IScriptOnInitialize } /// - public override void ChangeMoveType(IExecutingMove move, IPokemon target, byte hit, - ref TypeIdentifier? typeIdentifier) + public void ChangeMoveType(IExecutingMove move, IPokemon target, byte hit, ref TypeIdentifier? typeIdentifier) { var typeLibrary = target.Library.StaticLibrary.Types; // Both types must be valid and the current type must match the from type @@ -45,7 +44,7 @@ public class ChangeMoveTypeAbility : Script, IScriptOnInitialize } /// - public override void ChangeBasePower(IExecutingMove move, IPokemon target, byte hit, ref ushort basePower) + public void ChangeBasePower(IExecutingMove move, IPokemon target, byte hit, ref ushort basePower) { if (move.GetHitData(target, hit).HasFlag("change_move_type_ability")) basePower = basePower.MultiplyOrMax(1.3f); diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/ColorChange.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/ColorChange.cs index 1586a81..433d4b2 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/ColorChange.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/ColorChange.cs @@ -7,10 +7,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Abilities; /// Bulbapedia - Color Change /// [Script(ScriptCategory.Ability, "color_change")] -public class ColorChange : Script +public class ColorChange : Script, IScriptOnIncomingHit { /// - public override void OnIncomingHit(IExecutingMove move, IPokemon target, byte hit) + public void OnIncomingHit(IExecutingMove move, IPokemon target, byte hit) { var hitData = move.GetHitData(target, hit); if (hitData.Type != null && (hitData.Type != target.Types.FirstOrDefault() || target.Types.Count > 1)) diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/CursedBody.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/CursedBody.cs index fd564a2..91ce198 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/CursedBody.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/CursedBody.cs @@ -10,10 +10,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Abilities; /// Bulbapedia - Cursed Body /// [Script(ScriptCategory.Ability, "cursed_body")] -public class CursedBody : Script +public class CursedBody : Script, IScriptOnIncomingHit { /// - public override void OnIncomingHit(IExecutingMove move, IPokemon target, byte hit) + public void OnIncomingHit(IExecutingMove move, IPokemon target, byte hit) { // 30% chance to disable the move if (move.Battle.Random.GetFloat() > 0.3f) diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/CuteCharm.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/CuteCharm.cs index 31988c2..18de615 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/CuteCharm.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/CuteCharm.cs @@ -11,10 +11,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Abilities; /// Bulbapedia - Cute Charm /// [Script(ScriptCategory.Ability, "cute_charm")] -public class CuteCharm : Script +public class CuteCharm : Script, IScriptOnIncomingHit { /// - public override void OnIncomingHit(IExecutingMove move, IPokemon target, byte hit) + public void OnIncomingHit(IExecutingMove move, IPokemon target, byte hit) { // Only trigger on contact moves if (!move.GetHitData(target, hit).IsContact) diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Damp.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Damp.cs index 876a12b..cb3c546 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Damp.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Damp.cs @@ -8,10 +8,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Abilities; /// Bulbapedia - Damp /// [Script(ScriptCategory.Ability, "damp")] -public class Damp : Script +public class Damp : Script, IScriptFailIncomingMove { /// - public override void FailIncomingMove(IExecutingMove move, IPokemon target, ref bool fail) + public void FailIncomingMove(IExecutingMove move, IPokemon target, ref bool fail) { if (move.UseMove.Name == "self_destruct" || move.UseMove.Name == "explosion") { diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Dazzling.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Dazzling.cs index 05f569e..ed7a22a 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Dazzling.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Dazzling.cs @@ -7,10 +7,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Abilities; /// Bulbapedia - Dazzling /// [Script(ScriptCategory.Ability, "dazzling")] -public class Dazzling : Script +public class Dazzling : Script, IScriptFailIncomingMove { /// - public override void FailIncomingMove(IExecutingMove move, IPokemon target, ref bool fail) + public void FailIncomingMove(IExecutingMove move, IPokemon target, ref bool fail) { if (move.UseMove.Priority > 0) { diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/EffectSpore.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/EffectSpore.cs index 4fe7076..afe75b2 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/EffectSpore.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/EffectSpore.cs @@ -8,10 +8,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Abilities; /// Bulbapedia - Effect Spore /// [Script(ScriptCategory.Ability, "effect_spore")] -public class EffectSpore : Script +public class EffectSpore : Script, IScriptOnIncomingHit { /// - public override void OnIncomingHit(IExecutingMove move, IPokemon target, byte hit) + public void OnIncomingHit(IExecutingMove move, IPokemon target, byte hit) { if (move.User.Types.Any(x => x.Name == "grass")) return; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/FlameBody.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/FlameBody.cs index 5ad2b39..db1d711 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/FlameBody.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/FlameBody.cs @@ -7,10 +7,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Abilities; /// Bulbapedia - Flame Body /// [Script(ScriptCategory.Ability, "flame_body")] -public class FlameBody : Script +public class FlameBody : Script, IScriptOnIncomingHit { /// - public override void OnIncomingHit(IExecutingMove move, IPokemon target, byte hit) + public void OnIncomingHit(IExecutingMove move, IPokemon target, byte hit) { if (!move.GetHitData(target, hit).IsContact) return; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/FlashFire.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/FlashFire.cs index 8395ca5..00ae2de 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/FlashFire.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/FlashFire.cs @@ -10,10 +10,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Abilities; /// Bulbapedia - Flash Fire /// [Script(ScriptCategory.Ability, "flash_fire")] -public class FlashFire : Script +public class FlashFire : Script, IScriptChangeIncomingEffectiveness { /// - public override void ChangeIncomingEffectiveness(IExecutingMove executingMove, IPokemon target, byte hitIndex, + public void ChangeIncomingEffectiveness(IExecutingMove executingMove, IPokemon target, byte hitIndex, ref float effectiveness) { if (executingMove.GetHitData(target, hitIndex).Type?.Name != "fire") diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Galvanize.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Galvanize.cs index c612c1b..cad1b54 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Galvanize.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Galvanize.cs @@ -7,11 +7,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Abilities; /// Bulbapedia - Galvanize /// [Script(ScriptCategory.Ability, "galvanize")] -public class Galvanize : Script +public class Galvanize : Script, IScriptChangeMoveType { /// - public override void ChangeMoveType(IExecutingMove move, IPokemon target, byte hit, - ref TypeIdentifier? typeIdentifier) + public void ChangeMoveType(IExecutingMove move, IPokemon target, byte hit, ref TypeIdentifier? typeIdentifier) { if (typeIdentifier?.Name == "normal" && move.Battle.Library.StaticLibrary.Types.TryGetTypeIdentifier("electric", out var electricType)) diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Gooey.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Gooey.cs index 2de0126..e21a39f 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Gooey.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Gooey.cs @@ -6,10 +6,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Abilities; /// Bulbapedia - Gooey /// [Script(ScriptCategory.Ability, "gooey")] -public class Gooey : Script +public class Gooey : Script, IScriptOnIncomingHit { /// - public override void OnIncomingHit(IExecutingMove move, IPokemon target, byte hit) + public void OnIncomingHit(IExecutingMove move, IPokemon target, byte hit) { if (!move.GetHitData(target, hit).IsContact) return; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Heatproof.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Heatproof.cs index 6d755a0..1fcaeca 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Heatproof.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Heatproof.cs @@ -6,10 +6,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Abilities; /// Bulbapedia - Heatproof /// [Script(ScriptCategory.Ability, "heatproof")] -public class Heatproof : Script +public class Heatproof : Script, IScriptChangeBasePower { /// - public override void ChangeBasePower(IExecutingMove move, IPokemon target, byte hit, ref ushort basePower) + public void ChangeBasePower(IExecutingMove move, IPokemon target, byte hit, ref ushort basePower) { if (move.GetHitData(target, hit).Type?.Name == "fire") { diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Illusion.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Illusion.cs index 2685511..71cf65b 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Illusion.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Illusion.cs @@ -6,7 +6,7 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Abilities; /// Bulbapedia - Illusion /// [Script(ScriptCategory.Ability, "illusion")] -public class Illusion : Script +public class Illusion : Script, IScriptOnIncomingHit { private IPokemon? _pokemon; @@ -43,7 +43,7 @@ public class Illusion : Script } /// - public override void OnIncomingHit(IExecutingMove move, IPokemon target, byte hit) + public void OnIncomingHit(IExecutingMove move, IPokemon target, byte hit) { if (_pokemon?.BattleData?.Battle is null) return; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/IncreasedStabAbility.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/IncreasedStabAbility.cs index be304fb..d5b8330 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/IncreasedStabAbility.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/IncreasedStabAbility.cs @@ -7,10 +7,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Abilities; /// Bulbapedia - Adaptability /// [Script(ScriptCategory.Ability, "increased_stab")] -public class IncreasedStab : Script +public class IncreasedStab : Script, IScriptChangeStabModifier { /// - public override void ChangeStabModifier(IExecutingMove executingMove, IPokemon target, byte hitNumber, bool isStab, + public void ChangeStabModifier(IExecutingMove executingMove, IPokemon target, byte hitNumber, bool isStab, ref float modifier) { if (!isStab || !modifier.IsApproximatelyEqualTo(1.5f)) diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/InnardsOut.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/InnardsOut.cs index 5d52206..721bf5f 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/InnardsOut.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/InnardsOut.cs @@ -6,12 +6,12 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Abilities; /// Bulbapedia - Innards Out /// [Script(ScriptCategory.Ability, "innards_out")] -public class InnardsOut : Script +public class InnardsOut : Script, IScriptOnIncomingHit { private IPokemon? _lastPokemonToHit; /// - public override void OnIncomingHit(IExecutingMove move, IPokemon target, byte hit) + public void OnIncomingHit(IExecutingMove move, IPokemon target, byte hit) { _lastPokemonToHit = move.User; } diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/IronBarbs.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/IronBarbs.cs index efd5629..07ef241 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/IronBarbs.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/IronBarbs.cs @@ -6,10 +6,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Abilities; /// Bulbapedia - Iron Barbs /// [Script(ScriptCategory.Ability, "iron_barbs")] -public class IronBarbs : Script +public class IronBarbs : Script, IScriptOnIncomingHit { /// - public override void OnIncomingHit(IExecutingMove move, IPokemon target, byte hit) + public void OnIncomingHit(IExecutingMove move, IPokemon target, byte hit) { if (move.GetHitData(target, hit).IsContact) { diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/IronFist.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/IronFist.cs index 1af61aa..25240cf 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/IronFist.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/IronFist.cs @@ -6,10 +6,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Abilities; /// Bulbapedia - Iron Fist /// [Script(ScriptCategory.Ability, "iron_fist")] -public class IronFist : Script +public class IronFist : Script, IScriptChangeBasePower { /// - public override void ChangeBasePower(IExecutingMove move, IPokemon target, byte hit, ref ushort basePower) + public void ChangeBasePower(IExecutingMove move, IPokemon target, byte hit, ref ushort basePower) { if (move.UseMove.HasFlag("punch")) basePower = basePower.MultiplyOrMax(1.2f); diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Justified.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Justified.cs index 2b7add1..57c2e9f 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Justified.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Justified.cs @@ -6,10 +6,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Abilities; /// Bulbapedia - Justified /// [Script(ScriptCategory.Ability, "justified")] -public class Justified : Script +public class Justified : Script, IScriptOnIncomingHit { /// - public override void OnIncomingHit(IExecutingMove move, IPokemon target, byte hit) + public void OnIncomingHit(IExecutingMove move, IPokemon target, byte hit) { if (move.GetHitData(target, hit).Type?.Name != "dark") return; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/LightningRod.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/LightningRod.cs index d6dc8b3..11dde85 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/LightningRod.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/LightningRod.cs @@ -6,7 +6,7 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Abilities; /// Bulbapedia - Lightning Rod /// [Script(ScriptCategory.Ability, "lightning_rod")] -public class LightningRod : Script, IScriptChangeIncomingTargets +public class LightningRod : Script, IScriptChangeIncomingTargets, IScriptChangeEffectiveness { /// public void ChangeIncomingTargets(IMoveChoice moveChoice, ref IReadOnlyList targets) @@ -18,7 +18,7 @@ public class LightningRod : Script, IScriptChangeIncomingTargets } /// - public override void ChangeEffectiveness(IExecutingMove move, IPokemon target, byte hit, ref float effectiveness) + public void ChangeEffectiveness(IExecutingMove move, IPokemon target, byte hit, ref float effectiveness) { if (move.GetHitData(target, hit).Type?.Name != "electric") return; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/LiquidVoice.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/LiquidVoice.cs index 571fee0..9ae3d41 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/LiquidVoice.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/LiquidVoice.cs @@ -6,11 +6,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Abilities; /// Bulbapedia - Liquid Voice /// [Script(ScriptCategory.Ability, "liquid_voice")] -public class LiquidVoice : Script +public class LiquidVoice : Script, IScriptChangeMoveType { /// - public override void ChangeMoveType(IExecutingMove move, IPokemon target, byte hit, - ref TypeIdentifier? typeIdentifier) + public void ChangeMoveType(IExecutingMove move, IPokemon target, byte hit, ref TypeIdentifier? typeIdentifier) { if (move.UseMove.HasFlag("sound") && move.Battle.Library.StaticLibrary.Types.TryGetTypeIdentifier("water", out var waterType)) diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Magician.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Magician.cs index ee987bf..df8e9d7 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Magician.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Magician.cs @@ -8,10 +8,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Abilities; /// Bulbapedia - Magician /// [Script(ScriptCategory.Ability, "magician")] -public class Magician : Script +public class Magician : Script, IScriptOnSecondaryEffect { /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { if (move.UseMove.Category is MoveCategory.Status) return; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/MegaLauncher.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/MegaLauncher.cs index c28879d..4704afb 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/MegaLauncher.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/MegaLauncher.cs @@ -6,10 +6,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Abilities; /// Bulbapedia - Mega Launcher /// [Script(ScriptCategory.Ability, "mega_launcher")] -public class MegaLauncher : Script +public class MegaLauncher : Script, IScriptChangeBasePower { /// - public override void ChangeBasePower(IExecutingMove move, IPokemon target, byte hit, ref ushort basePower) + public void ChangeBasePower(IExecutingMove move, IPokemon target, byte hit, ref ushort basePower) { if (move.UseMove.HasFlag("pulse")) { diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Merciless.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Merciless.cs index 7dc6f50..9b2ec14 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Merciless.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Merciless.cs @@ -8,10 +8,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Abilities; /// Bulbapedia - Merciless /// [Script(ScriptCategory.Ability, "merciless")] -public class Merciless : Script +public class Merciless : Script, IScriptChangeCriticalStage { /// - public override void ChangeCriticalStage(IExecutingMove move, IPokemon target, byte hit, ref byte stage) + public void ChangeCriticalStage(IExecutingMove move, IPokemon target, byte hit, ref byte stage) { if (target.StatusScript.Script?.Name == ScriptUtils.ResolveName() || target.StatusScript.Script?.Name == ScriptUtils.ResolveName()) diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/MotorDrive.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/MotorDrive.cs index d43d333..7802ff2 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/MotorDrive.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/MotorDrive.cs @@ -6,10 +6,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Abilities; /// Bulbapedia - Motor Drive /// [Script(ScriptCategory.Ability, "motor_drive")] -public class MotorDrive : Script +public class MotorDrive : Script, IScriptIsInvulnerableToMove { /// - public override void IsInvulnerableToMove(IExecutingMove move, IPokemon target, ref bool invulnerable) + public void IsInvulnerableToMove(IExecutingMove move, IPokemon target, ref bool invulnerable) { if (move.UseMove.MoveType.Name != "electric") return; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Moxie.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Moxie.cs index f5bd48a..f82f7e6 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Moxie.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Moxie.cs @@ -6,10 +6,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Abilities; /// Bulbapedia - Moxie /// [Script(ScriptCategory.Ability, "moxie")] -public class Moxie : Script +public class Moxie : Script, IScriptOnOpponentFaints { /// - public override void OnOpponentFaints(IExecutingMove move, IPokemon target, byte hit) + public void OnOpponentFaints(IExecutingMove move, IPokemon target, byte hit) { move.User.ChangeStatBoost(Statistic.Attack, 1, true, false); } diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Mummy.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Mummy.cs index 83ad8ae..b85501c 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Mummy.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Mummy.cs @@ -6,10 +6,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Abilities; /// Bulbapedia - Mummy /// [Script(ScriptCategory.Ability, "mummy")] -public class Mummy : Script +public class Mummy : Script, IScriptOnIncomingHit { /// - public override void OnIncomingHit(IExecutingMove move, IPokemon target, byte hit) + public void OnIncomingHit(IExecutingMove move, IPokemon target, byte hit) { if (!move.GetHitData(target, hit).IsContact || move.User.ActiveAbility?.Name == "mummy" || !move.Battle.Library.StaticLibrary.Abilities.TryGet("mummy", out var mummyAbility)) diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Normalize.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Normalize.cs index 30970d1..3320f33 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Normalize.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Normalize.cs @@ -6,18 +6,17 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Abilities; /// Bulbapedia - Normalize /// [Script(ScriptCategory.Ability, "normalize")] -public class Normalize : Script +public class Normalize : Script, IScriptChangeMoveType, IScriptChangeBasePower { /// - public override void ChangeMoveType(IExecutingMove move, IPokemon target, byte hit, - ref TypeIdentifier? typeIdentifier) + public void ChangeMoveType(IExecutingMove move, IPokemon target, byte hit, ref TypeIdentifier? typeIdentifier) { if (move.Battle.Library.StaticLibrary.Types.TryGetTypeIdentifier("normal", out var normalType)) typeIdentifier = normalType; } /// - public override void ChangeBasePower(IExecutingMove move, IPokemon target, byte hit, ref ushort basePower) + public void ChangeBasePower(IExecutingMove move, IPokemon target, byte hit, ref ushort basePower) { if (move.GetHitData(target, hit).Type?.Name == "normal") basePower = (ushort)(basePower * 1.2f); // Boost Normal-type moves by 30% diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Overcoat.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Overcoat.cs index 01f6162..3d58c65 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Overcoat.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Overcoat.cs @@ -6,7 +6,7 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Abilities; /// Bulbapedia - Overcoat /// [Script(ScriptCategory.Ability, "overcoat")] -public class Overcoat : Script +public class Overcoat : Script, IScriptIsInvulnerableToMove { /// public override void CustomTrigger(StringKey eventName, ICustomTriggerArgs args) @@ -23,7 +23,7 @@ public class Overcoat : Script } /// - public override void IsInvulnerableToMove(IExecutingMove move, IPokemon target, ref bool invulnerable) + public void IsInvulnerableToMove(IExecutingMove move, IPokemon target, ref bool invulnerable) { if (move.UseMove.HasFlag("powder")) { diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/ParentalBond.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/ParentalBond.cs index 66be13b..72a862f 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/ParentalBond.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/ParentalBond.cs @@ -6,7 +6,7 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Abilities; /// Bulbapedia - Parental Bond /// [Script(ScriptCategory.Ability, "parental_bond")] -public class ParentalBond : Script, IScriptChangeNumberOfHits +public class ParentalBond : Script, IScriptChangeNumberOfHits, IScriptChangeBasePower { /// public void ChangeNumberOfHits(IMoveChoice choice, ref byte numberOfHits) @@ -16,7 +16,7 @@ public class ParentalBond : Script, IScriptChangeNumberOfHits } /// - public override void ChangeBasePower(IExecutingMove move, IPokemon target, byte hit, ref ushort basePower) + public void ChangeBasePower(IExecutingMove move, IPokemon target, byte hit, ref ushort basePower) { if (hit == 1) basePower = (ushort)(basePower / 4); diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Pickpocket.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Pickpocket.cs index 2aa764b..456331c 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Pickpocket.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Pickpocket.cs @@ -6,10 +6,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Abilities; /// Bulbapedia - Pickpocket /// [Script(ScriptCategory.Ability, "pickpocket")] -public class Pickpocket : Script +public class Pickpocket : Script, IScriptOnIncomingHit { /// - public override void OnIncomingHit(IExecutingMove move, IPokemon target, byte hit) + public void OnIncomingHit(IExecutingMove move, IPokemon target, byte hit) { if (!move.GetHitData(target, hit).IsContact || target.HeldItem is not null || !move.User.TryStealHeldItem(out var item)) diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Pixilate.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Pixilate.cs index 33b0f1e..2311a60 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Pixilate.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Pixilate.cs @@ -6,11 +6,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Abilities; /// Bulbapedia - Pixilate /// [Script(ScriptCategory.Ability, "pixilate")] -public class Pixilate : Script +public class Pixilate : Script, IScriptChangeMoveType, IScriptChangeBasePower { /// - public override void ChangeMoveType(IExecutingMove move, IPokemon target, byte hit, - ref TypeIdentifier? typeIdentifier) + public void ChangeMoveType(IExecutingMove move, IPokemon target, byte hit, ref TypeIdentifier? typeIdentifier) { if (typeIdentifier?.Name == "normal" && move.Battle.Library.StaticLibrary.Types.TryGetTypeIdentifier("fairy", out var fairyType)) @@ -18,7 +17,7 @@ public class Pixilate : Script } /// - public override void ChangeBasePower(IExecutingMove move, IPokemon target, byte hit, ref ushort basePower) + public void ChangeBasePower(IExecutingMove move, IPokemon target, byte hit, ref ushort basePower) { if (move.GetHitData(target, hit).Type?.Name == "fairy") basePower = (ushort)(basePower * 1.2f); // Boost Normal-type moves by 30% diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/PoisonPoint.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/PoisonPoint.cs index fb951cb..6606448 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/PoisonPoint.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/PoisonPoint.cs @@ -6,10 +6,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Abilities; /// Bulbapedia - Poison Point /// [Script(ScriptCategory.Ability, "poison_point")] -public class PoisonPoint : Script +public class PoisonPoint : Script, IScriptOnIncomingHit { /// - public override void OnIncomingHit(IExecutingMove move, IPokemon target, byte hit) + public void OnIncomingHit(IExecutingMove move, IPokemon target, byte hit) { if (move.GetHitData(target, hit).IsContact) move.User.SetStatus(ScriptUtils.ResolveName(), move.User); diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/PoisonTouch.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/PoisonTouch.cs index de624f5..3053f11 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/PoisonTouch.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/PoisonTouch.cs @@ -6,12 +6,12 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Abilities; /// Bulbapedia - Poison Touch /// [Script(ScriptCategory.Ability, "poison_touch")] -public class PoisonTouch : Script +public class PoisonTouch : Script, IScriptOnIncomingHit { private const int PoisonChance = 30; /// - public override void OnIncomingHit(IExecutingMove move, IPokemon target, byte hit) + public void OnIncomingHit(IExecutingMove move, IPokemon target, byte hit) { if (move.GetHitData(target, hit).IsContact && move.Battle.Random.GetInt(0, 100) < PoisonChance) move.User.SetStatus(ScriptUtils.ResolveName(), target); diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/PreventCritical.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/PreventCritical.cs index 78e2f0f..2c92827 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/PreventCritical.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/PreventCritical.cs @@ -9,9 +9,9 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Abilities; /// Bulbapedia - Shell Armor /// [Script(ScriptCategory.Ability, "prevent_critical")] -public class PreventCritical : Script +public class PreventCritical : Script, IScriptBlockIncomingCriticalHit { /// - public override void BlockIncomingCriticalHit(IExecutingMove move, IPokemon target, byte hit, ref bool block) => + public void BlockIncomingCriticalHit(IExecutingMove move, IPokemon target, byte hit, ref bool block) => block = true; } \ No newline at end of file diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/QueenlyMajesty.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/QueenlyMajesty.cs index 2acbdfa..913b2b5 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/QueenlyMajesty.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/QueenlyMajesty.cs @@ -6,10 +6,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Abilities; /// Bulbapedia - Queenly Majesty /// [Script(ScriptCategory.Ability, "queenly_majesty")] -public class QueenlyMajesty : Script +public class QueenlyMajesty : Script, IScriptFailIncomingMove { /// - public override void FailIncomingMove(IExecutingMove move, IPokemon target, ref bool fail) + public void FailIncomingMove(IExecutingMove move, IPokemon target, ref bool fail) { if (move.Targets.Count != 1) return; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Rattled.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Rattled.cs index 7fcc0d5..4c15b2e 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Rattled.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Rattled.cs @@ -6,10 +6,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Abilities; /// Bulbapedia - Rattled /// [Script(ScriptCategory.Ability, "rattled")] -public class Rattled : Script +public class Rattled : Script, IScriptOnIncomingHit { /// - public override void OnIncomingHit(IExecutingMove move, IPokemon target, byte hit) + public void OnIncomingHit(IExecutingMove move, IPokemon target, byte hit) { var type = move.GetHitData(target, hit).Type; if (type is null) diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Reckless.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Reckless.cs index a321a4b..7d87583 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Reckless.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Reckless.cs @@ -6,10 +6,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Abilities; /// Bulbapedia - Reckless /// [Script(ScriptCategory.Ability, "reckless")] -public class Reckless : Script +public class Reckless : Script, IScriptChangeBasePower { /// - public override void ChangeBasePower(IExecutingMove move, IPokemon target, byte hit, ref ushort basePower) + public void ChangeBasePower(IExecutingMove move, IPokemon target, byte hit, ref ushort basePower) { if (move.UseMove.HasFlag("recoil")) { diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Refrigerate.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Refrigerate.cs index 05a2d28..e3e22dd 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Refrigerate.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Refrigerate.cs @@ -6,11 +6,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Abilities; /// Bulbapedia - Refrigerate /// [Script(ScriptCategory.Ability, "refrigerate")] -public class Refrigerate : Script +public class Refrigerate : Script, IScriptChangeMoveType, IScriptChangeBasePower { /// - public override void ChangeMoveType(IExecutingMove move, IPokemon target, byte hit, - ref TypeIdentifier? typeIdentifier) + public void ChangeMoveType(IExecutingMove move, IPokemon target, byte hit, ref TypeIdentifier? typeIdentifier) { if (typeIdentifier?.Name == "normal" && move.Battle.Library.StaticLibrary.Types.TryGetTypeIdentifier("ice", out var iceType)) @@ -18,7 +17,7 @@ public class Refrigerate : Script } /// - public override void ChangeBasePower(IExecutingMove move, IPokemon target, byte hit, ref ushort basePower) + public void ChangeBasePower(IExecutingMove move, IPokemon target, byte hit, ref ushort basePower) { if (move.GetHitData(target, hit).Type?.Name == "ice") basePower = (ushort)(basePower * 1.2f); // Boost Normal-type moves by 30% diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Rivalry.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Rivalry.cs index a38119c..abbc946 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Rivalry.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Rivalry.cs @@ -8,10 +8,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Abilities; /// Bulbapedia - Rivalry /// [Script(ScriptCategory.Ability, "rivalry")] -public class Rivalry : Script +public class Rivalry : Script, IScriptChangeBasePower { /// - public override void ChangeBasePower(IExecutingMove move, IPokemon target, byte hit, ref ushort basePower) + public void ChangeBasePower(IExecutingMove move, IPokemon target, byte hit, ref ushort basePower) { if (move.User.Gender == Gender.Genderless || target.Gender == Gender.Genderless) return; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/RoughSkin.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/RoughSkin.cs index 95855fe..b688adf 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/RoughSkin.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/RoughSkin.cs @@ -6,10 +6,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Abilities; /// Bulbapedia - Rough Skin /// [Script(ScriptCategory.Ability, "rough_skin")] -public class RoughSkin : Script +public class RoughSkin : Script, IScriptOnIncomingHit { /// - public override void OnIncomingHit(IExecutingMove move, IPokemon target, byte hit) + public void OnIncomingHit(IExecutingMove move, IPokemon target, byte hit) { if (move.GetHitData(target, hit).IsContact) { diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/SandForce.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/SandForce.cs index 36aa525..2d001c2 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/SandForce.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/SandForce.cs @@ -6,10 +6,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Abilities; /// Bulbapedia - Sand Force /// [Script(ScriptCategory.Ability, "sand_force")] -public class SandForce : Script +public class SandForce : Script, IScriptChangeBasePower { /// - public override void ChangeBasePower(IExecutingMove move, IPokemon target, byte hit, ref ushort basePower) + public void ChangeBasePower(IExecutingMove move, IPokemon target, byte hit, ref ushort basePower) { if (move.Battle.WeatherName == ScriptUtils.ResolveName()) { diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/SapSipper.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/SapSipper.cs index 2cc4b3b..60f2964 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/SapSipper.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/SapSipper.cs @@ -6,10 +6,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Abilities; /// Bulbapedia - Sap Sipper /// [Script(ScriptCategory.Ability, "sap_sipper")] -public class SapSipper : Script +public class SapSipper : Script, IScriptIsInvulnerableToMove { /// - public override void IsInvulnerableToMove(IExecutingMove move, IPokemon target, ref bool invulnerable) + public void IsInvulnerableToMove(IExecutingMove move, IPokemon target, ref bool invulnerable) { if (move.GetHitData(target, 0).Type?.Name == "grass") { diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/SheerForce.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/SheerForce.cs index 25ef79b..accfc93 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/SheerForce.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/SheerForce.cs @@ -6,10 +6,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Abilities; /// Bulbapedia - Sheer Force /// [Script(ScriptCategory.Ability, "sheer_force")] -public class SheerForce : Script +public class SheerForce : Script, IScriptChangeBasePower { /// - public override void ChangeBasePower(IExecutingMove move, IPokemon target, byte hit, ref ushort basePower) + public void ChangeBasePower(IExecutingMove move, IPokemon target, byte hit, ref ushort basePower) { basePower = basePower.MultiplyOrMax(5325f / 4096f); } diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/ShellArmor.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/ShellArmor.cs index ccab711..8655531 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/ShellArmor.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/ShellArmor.cs @@ -6,10 +6,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Abilities; /// Bulbapedia - Shell Armor /// [Script(ScriptCategory.Ability, "shell_armor")] -public class ShellArmor : Script +public class ShellArmor : Script, IScriptBlockIncomingCriticalHit { /// - public override void BlockIncomingCriticalHit(IExecutingMove move, IPokemon target, byte hit, ref bool block) + public void BlockIncomingCriticalHit(IExecutingMove move, IPokemon target, byte hit, ref bool block) { block = true; } diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Sniper.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Sniper.cs index 1149b90..1d0423d 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Sniper.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Sniper.cs @@ -6,10 +6,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Abilities; /// Bulbapedia - Sniper /// [Script(ScriptCategory.Ability, "sniper")] -public class Sniper : Script +public class Sniper : Script, IScriptChangeCriticalModifier { /// - public override void ChangeCriticalModifier(IExecutingMove move, IPokemon target, byte hit, ref float modifier) + public void ChangeCriticalModifier(IExecutingMove move, IPokemon target, byte hit, ref float modifier) { modifier *= 1.5f; } diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/SoulHeart.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/SoulHeart.cs index 88e6510..2f4ed05 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/SoulHeart.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/SoulHeart.cs @@ -6,7 +6,7 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Abilities; /// Bulbapedia - Soul-Heart /// [Script(ScriptCategory.Ability, "soul_heart")] -public class SoulHeart : Script +public class SoulHeart : Script, IScriptOnOpponentFaints { /// public override void OnAllyFaint(IPokemon ally, IPokemon faintedPokemon) @@ -15,7 +15,7 @@ public class SoulHeart : Script } /// - public override void OnOpponentFaints(IExecutingMove move, IPokemon target, byte hit) + public void OnOpponentFaints(IExecutingMove move, IPokemon target, byte hit) { move.User.ChangeStatBoost(Statistic.SpecialAttack, 1, true, false); } diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Soundproof.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Soundproof.cs index ae4eca4..680d806 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Soundproof.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Soundproof.cs @@ -6,10 +6,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Abilities; /// Bulbapedia - Soundproof /// [Script(ScriptCategory.Ability, "soundproof")] -public class Soundproof : Script +public class Soundproof : Script, IScriptIsInvulnerableToMove { /// - public override void IsInvulnerableToMove(IExecutingMove move, IPokemon target, ref bool invulnerable) + public void IsInvulnerableToMove(IExecutingMove move, IPokemon target, ref bool invulnerable) { if (move.UseMove.HasFlag("sound")) invulnerable = true; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Stakeout.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Stakeout.cs index 0ba9295..2987ae5 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Stakeout.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Stakeout.cs @@ -6,10 +6,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Abilities; /// Bulbapedia - Stakeout /// [Script(ScriptCategory.Ability, "stakeout")] -public class Stakeout : Script +public class Stakeout : Script, IScriptChangeBasePower { /// - public override void ChangeBasePower(IExecutingMove move, IPokemon target, byte hit, ref ushort basePower) + public void ChangeBasePower(IExecutingMove move, IPokemon target, byte hit, ref ushort basePower) { if (target.BattleData?.SwitchInTurn == move.Battle.CurrentTurnNumber) basePower = basePower.MultiplyOrMax(2); diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Stamina.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Stamina.cs index 6db07e2..4166e5f 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Stamina.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Stamina.cs @@ -6,10 +6,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Abilities; /// Bulbapedia - Stamina /// [Script(ScriptCategory.Ability, "stamina")] -public class Stamina : Script +public class Stamina : Script, IScriptOnIncomingHit { /// - public override void OnIncomingHit(IExecutingMove move, IPokemon target, byte hit) + public void OnIncomingHit(IExecutingMove move, IPokemon target, byte hit) { EventBatchId batchId = new(); if (target.ChangeStatBoost(Statistic.Defense, 1, true, false, batchId)) diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Static.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Static.cs index b43f9a9..267e089 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Static.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Static.cs @@ -6,12 +6,12 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Abilities; /// Bulbapedia - Static /// [Script(ScriptCategory.Ability, "static")] -public class Static : Script +public class Static : Script, IScriptOnIncomingHit { private const int ChanceToParalyze = 30; /// - public override void OnIncomingHit(IExecutingMove move, IPokemon target, byte hit) + public void OnIncomingHit(IExecutingMove move, IPokemon target, byte hit) { if (!move.GetHitData(target, hit).IsContact) return; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Stench.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Stench.cs index 81d6c1b..2d85b9b 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Stench.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Stench.cs @@ -8,10 +8,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Abilities; /// Bulbapedia - Stench /// [Script(ScriptCategory.Ability, "stench")] -public class Stench : Script +public class Stench : Script, IScriptOnSecondaryEffect { /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { if (move.Battle.Random.GetInt(100) >= 10) return; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/StormDrain.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/StormDrain.cs index d0bd8b1..a25b0b1 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/StormDrain.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/StormDrain.cs @@ -6,7 +6,7 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Abilities; /// Bulbapedia - Storm Drain /// [Script(ScriptCategory.Ability, "storm_drain")] -public class StormDrain : Script, IScriptChangeIncomingTargets +public class StormDrain : Script, IScriptChangeIncomingTargets, IScriptChangeEffectiveness { /// public void ChangeIncomingTargets(IMoveChoice moveChoice, ref IReadOnlyList targets) @@ -18,7 +18,7 @@ public class StormDrain : Script, IScriptChangeIncomingTargets } /// - public override void ChangeEffectiveness(IExecutingMove move, IPokemon target, byte hit, ref float effectiveness) + public void ChangeEffectiveness(IExecutingMove move, IPokemon target, byte hit, ref float effectiveness) { if (move.GetHitData(target, hit).Type?.Name != "water") return; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/StrongJaw.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/StrongJaw.cs index b46398a..96df122 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/StrongJaw.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/StrongJaw.cs @@ -6,10 +6,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Abilities; /// Bulbapedia - Strong Jaw /// [Script(ScriptCategory.Ability, "strong_jaw")] -public class StrongJaw : Script +public class StrongJaw : Script, IScriptChangeBasePower { /// - public override void ChangeBasePower(IExecutingMove move, IPokemon target, byte hit, ref ushort basePower) + public void ChangeBasePower(IExecutingMove move, IPokemon target, byte hit, ref ushort basePower) { if (move.UseMove.HasFlag("bite")) { diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/SuperLuck.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/SuperLuck.cs index 10e69ca..e00f877 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/SuperLuck.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/SuperLuck.cs @@ -6,10 +6,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Abilities; /// Bulbapedia - Super Luck /// [Script(ScriptCategory.Ability, "super_luck")] -public class SuperLuck : Script +public class SuperLuck : Script, IScriptChangeCriticalStage { /// - public override void ChangeCriticalStage(IExecutingMove move, IPokemon target, byte hit, ref byte stage) + public void ChangeCriticalStage(IExecutingMove move, IPokemon target, byte hit, ref byte stage) { if (stage == byte.MaxValue) return; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/TanglingHair.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/TanglingHair.cs index e07e077..b7136d6 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/TanglingHair.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/TanglingHair.cs @@ -6,10 +6,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Abilities; /// Bulbapedia - Tangling Hair /// [Script(ScriptCategory.Ability, "tangling_hair")] -public class TanglingHair : Script +public class TanglingHair : Script, IScriptOnIncomingHit { /// - public override void OnIncomingHit(IExecutingMove move, IPokemon target, byte hit) + public void OnIncomingHit(IExecutingMove move, IPokemon target, byte hit) { if (!move.GetHitData(target, hit).IsContact) return; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Technician.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Technician.cs index 515a71e..32e130b 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Technician.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Technician.cs @@ -6,10 +6,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Abilities; /// Bulbapedia - Technician /// [Script(ScriptCategory.Ability, "technician")] -public class Technician : Script +public class Technician : Script, IScriptChangeBasePower { /// - public override void ChangeBasePower(IExecutingMove move, IPokemon target, byte hit, ref ushort basePower) + public void ChangeBasePower(IExecutingMove move, IPokemon target, byte hit, ref ushort basePower) { if (move.UseMove.BasePower <= 60) { diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Telepathy.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Telepathy.cs index a5d59e8..a34e8e1 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Telepathy.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Telepathy.cs @@ -6,10 +6,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Abilities; /// Bulbapedia - Telepathy /// [Script(ScriptCategory.Ability, "telepathy")] -public class Telepathy : Script +public class Telepathy : Script, IScriptIsInvulnerableToMove { /// - public override void IsInvulnerableToMove(IExecutingMove move, IPokemon target, ref bool invulnerable) + public void IsInvulnerableToMove(IExecutingMove move, IPokemon target, ref bool invulnerable) { if (move.User.BattleData?.BattleSide == target.BattleData?.BattleSide) invulnerable = true; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/VoltAbsorb.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/VoltAbsorb.cs index 4b68e79..9caaf2c 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/VoltAbsorb.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/VoltAbsorb.cs @@ -6,10 +6,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Abilities; /// Bulbapedia - Volt Absorb /// [Script(ScriptCategory.Ability, "volt_absorb")] -public class VoltAbsorb : Script +public class VoltAbsorb : Script, IScriptIsInvulnerableToMove { /// - public override void IsInvulnerableToMove(IExecutingMove move, IPokemon target, ref bool invulnerable) + public void IsInvulnerableToMove(IExecutingMove move, IPokemon target, ref bool invulnerable) { if (move.GetHitData(target, 0).Type?.Name != "electric") return; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/WaterAbsorb.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/WaterAbsorb.cs index d041bb5..f9efaec 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/WaterAbsorb.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/WaterAbsorb.cs @@ -6,10 +6,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Abilities; /// Bulbapedia - Water Absorb /// [Script(ScriptCategory.Ability, "water_absorb")] -public class WaterAbsorb : Script +public class WaterAbsorb : Script, IScriptIsInvulnerableToMove { /// - public override void IsInvulnerableToMove(IExecutingMove move, IPokemon target, ref bool invulnerable) + public void IsInvulnerableToMove(IExecutingMove move, IPokemon target, ref bool invulnerable) { if (move.GetHitData(target, 0).Type?.Name != "water") return; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/WaterCompaction.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/WaterCompaction.cs index 09b302b..ab87149 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/WaterCompaction.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/WaterCompaction.cs @@ -6,10 +6,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Abilities; /// Bulbapedia - Water Compaction /// [Script(ScriptCategory.Ability, "water_compaction")] -public class WaterCompaction : Script +public class WaterCompaction : Script, IScriptOnIncomingHit { /// - public override void OnIncomingHit(IExecutingMove move, IPokemon target, byte hit) + public void OnIncomingHit(IExecutingMove move, IPokemon target, byte hit) { if (move.GetHitData(target, hit).Type?.Name != "water") return; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/WeakArmor.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/WeakArmor.cs index 347954e..6de8475 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/WeakArmor.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/WeakArmor.cs @@ -8,10 +8,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Abilities; /// Bulbapedia - Weak Armor /// [Script(ScriptCategory.Ability, "weak_armor")] -public class WeakArmor : Script +public class WeakArmor : Script, IScriptOnIncomingHit { /// - public override void OnIncomingHit(IExecutingMove move, IPokemon target, byte hit) + public void OnIncomingHit(IExecutingMove move, IPokemon target, byte hit) { if (move.UseMove.Category != MoveCategory.Physical) return; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Battle/Gravity.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Battle/Gravity.cs index 9167339..f94dcd8 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Battle/Gravity.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Battle/Gravity.cs @@ -1,7 +1,7 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Battle; [Script(ScriptCategory.Battle, "gravity")] -public class Gravity : Script +public class Gravity : Script, IScriptFailIncomingMove { private int _turns = 5; @@ -18,7 +18,7 @@ public class Gravity : Script } /// - public override void FailIncomingMove(IExecutingMove move, IPokemon target, ref bool fail) + public void FailIncomingMove(IExecutingMove move, IPokemon target, ref bool fail) { if (move.UseMove.HasFlag("gravity")) fail = true; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Battle/IonDelugeEffect.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Battle/IonDelugeEffect.cs index a9b2d31..662aea6 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Battle/IonDelugeEffect.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Battle/IonDelugeEffect.cs @@ -1,10 +1,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Battle; [Script(ScriptCategory.Move, "ion_deluge")] -public class IonDelugeEffect : Script +public class IonDelugeEffect : Script, IScriptChangeMoveType { /// - public override void ChangeMoveType(IExecutingMove move, IPokemon target, byte hit, ref TypeIdentifier? moveType) + public void ChangeMoveType(IExecutingMove move, IPokemon target, byte hit, ref TypeIdentifier? moveType) { if (moveType?.Name == "normal" && target.Library.StaticLibrary.Types.TryGetTypeIdentifier("electric", out var electricType)) diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Battle/MudSportEffect.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Battle/MudSportEffect.cs index ee5b0a0..a6c1f6b 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Battle/MudSportEffect.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Battle/MudSportEffect.cs @@ -1,12 +1,12 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Battle; [Script(ScriptCategory.Battle, "mud_sport")] -public class MudSportEffect : Script +public class MudSportEffect : Script, IScriptChangeBasePower { private int _turnsLeft = 5; /// - public override void ChangeBasePower(IExecutingMove move, IPokemon target, byte hit, ref ushort basePower) + public void ChangeBasePower(IExecutingMove move, IPokemon target, byte hit, ref ushort basePower) { if (move.UseMove.MoveType.Name == "electric") { diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Battle/UproarEffect.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Battle/UproarEffect.cs index d909811..fec7438 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, IScriptOnBeforeTurnStart +public class UproarEffect : Script, IScriptOnBeforeTurnStart, IScriptOnSecondaryEffect { private IPokemon? _placer; private bool _hasUsedUproar; @@ -30,7 +30,7 @@ public class UproarEffect : Script, IScriptOnBeforeTurnStart } /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { if (move.User == _placer && move.UseMove.Name == "uproar") _hasUsedUproar = true; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/MoveVolatile/ElectrifyEffect.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/MoveVolatile/ElectrifyEffect.cs index a786558..485e529 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/MoveVolatile/ElectrifyEffect.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/MoveVolatile/ElectrifyEffect.cs @@ -1,10 +1,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.MoveVolatile; [Script(ScriptCategory.MoveVolatile, "electrify")] -public class ElectrifyEffect : Script +public class ElectrifyEffect : Script, IScriptChangeMoveType { /// - public override void ChangeMoveType(IExecutingMove move, IPokemon target, byte hit, ref TypeIdentifier? moveType) + public void ChangeMoveType(IExecutingMove move, IPokemon target, byte hit, ref TypeIdentifier? moveType) { var battleData = target.BattleData; if (battleData == null) diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/MoveVolatile/FireGrassPledgeMove.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/MoveVolatile/FireGrassPledgeMove.cs index 93afa91..8200ac9 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/MoveVolatile/FireGrassPledgeMove.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/MoveVolatile/FireGrassPledgeMove.cs @@ -3,7 +3,7 @@ using PkmnLib.Plugin.Gen7.Scripts.Side; namespace PkmnLib.Plugin.Gen7.Scripts.MoveVolatile; [Script(ScriptCategory.MoveVolatile, "fire_grass_pledge")] -public class FireGrassPledgeMove : Script, IScriptChangeMove +public class FireGrassPledgeMove : Script, IScriptChangeMove, IScriptOnSecondaryEffect, IScriptChangeBasePower { /// public void ChangeMove(IMoveChoice choice, ref StringKey moveName) @@ -12,13 +12,13 @@ public class FireGrassPledgeMove : Script, IScriptChangeMove } /// - public override void ChangeBasePower(IExecutingMove move, IPokemon target, byte hit, ref ushort basePower) + public void ChangeBasePower(IExecutingMove move, IPokemon target, byte hit, ref ushort basePower) { basePower = 150; } /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { target.BattleData?.BattleSide.VolatileScripts.Add(new SeaOfFireEffect()); } diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/MoveVolatile/FireWaterPledgeMove.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/MoveVolatile/FireWaterPledgeMove.cs index 67646a8..bd1043c 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/MoveVolatile/FireWaterPledgeMove.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/MoveVolatile/FireWaterPledgeMove.cs @@ -3,7 +3,7 @@ using PkmnLib.Plugin.Gen7.Scripts.Side; namespace PkmnLib.Plugin.Gen7.Scripts.MoveVolatile; [Script(ScriptCategory.MoveVolatile, "fire_water_pledge")] -public class FireWaterPledgeMove : Script, IScriptChangeMove +public class FireWaterPledgeMove : Script, IScriptChangeMove, IScriptOnSecondaryEffect, IScriptChangeBasePower { /// public void ChangeMove(IMoveChoice choice, ref StringKey moveName) @@ -12,13 +12,13 @@ public class FireWaterPledgeMove : Script, IScriptChangeMove } /// - public override void ChangeBasePower(IExecutingMove move, IPokemon target, byte hit, ref ushort basePower) + public void ChangeBasePower(IExecutingMove move, IPokemon target, byte hit, ref ushort basePower) { basePower = 150; } /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { move.User.BattleData?.BattleSide.VolatileScripts.Add(new RainbowEffect()); } diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/MoveVolatile/GrassWaterPledgeMove.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/MoveVolatile/GrassWaterPledgeMove.cs index 69f1735..f700f8d 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/MoveVolatile/GrassWaterPledgeMove.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/MoveVolatile/GrassWaterPledgeMove.cs @@ -3,7 +3,7 @@ using PkmnLib.Plugin.Gen7.Scripts.Side; namespace PkmnLib.Plugin.Gen7.Scripts.MoveVolatile; [Script(ScriptCategory.MoveVolatile, "grass_water_pledge")] -public class GrassWaterPledgeMove : Script, IScriptChangeMove +public class GrassWaterPledgeMove : Script, IScriptChangeMove, IScriptOnSecondaryEffect, IScriptChangeBasePower { /// public void ChangeMove(IMoveChoice choice, ref StringKey moveName) @@ -12,13 +12,13 @@ public class GrassWaterPledgeMove : Script, IScriptChangeMove } /// - public override void ChangeBasePower(IExecutingMove move, IPokemon target, byte hit, ref ushort basePower) + public void ChangeBasePower(IExecutingMove move, IPokemon target, byte hit, ref ushort basePower) { basePower = 150; } /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { move.User.BattleData?.BattleSide.VolatileScripts.Add(new SwampEffect()); } diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/MoveVolatile/MeFirstPowerBoost.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/MoveVolatile/MeFirstPowerBoost.cs index 0bdf673..3615a0d 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/MoveVolatile/MeFirstPowerBoost.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/MoveVolatile/MeFirstPowerBoost.cs @@ -1,9 +1,9 @@ namespace PkmnLib.Plugin.Gen7.Scripts.MoveVolatile; [Script(ScriptCategory.MoveVolatile, "me_first")] -public class MeFirstPowerBoost : Script +public class MeFirstPowerBoost : Script, IScriptChangeBasePower { /// - public override void ChangeBasePower(IExecutingMove move, IPokemon target, byte hit, ref ushort basePower) => + public void ChangeBasePower(IExecutingMove move, IPokemon target, byte hit, ref ushort basePower) => basePower = basePower.MultiplyOrMax(1.5f); } \ No newline at end of file diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/MoveVolatile/RoundPowerBoost.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/MoveVolatile/RoundPowerBoost.cs index 00f4a84..abf1b38 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/MoveVolatile/RoundPowerBoost.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/MoveVolatile/RoundPowerBoost.cs @@ -1,9 +1,9 @@ namespace PkmnLib.Plugin.Gen7.Scripts.MoveVolatile; [Script(ScriptCategory.MoveVolatile, "round")] -public class RoundPowerBoost : Script +public class RoundPowerBoost : Script, IScriptChangeBasePower { /// - public override void ChangeBasePower(IExecutingMove move, IPokemon target, byte hit, ref ushort basePower) => + public void ChangeBasePower(IExecutingMove move, IPokemon target, byte hit, ref ushort basePower) => basePower = basePower.MultiplyOrMax(2f); } \ No newline at end of file diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Acrobatics.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Acrobatics.cs index b065534..5a319f5 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Acrobatics.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Acrobatics.cs @@ -7,10 +7,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Moves; /// Does double base power if the user is not holding an item. /// [Script(ScriptCategory.Move, "acrobatics")] -public class Acrobatics : Script +public class Acrobatics : Script, IScriptChangeBasePower { /// - public override void ChangeBasePower(IExecutingMove move, IPokemon target, byte hit, ref ushort basePower) + public void ChangeBasePower(IExecutingMove move, IPokemon target, byte hit, ref ushort basePower) { if (move.User.HeldItem == null) basePower = basePower.MultiplyOrMax(2); diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Acupressure.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Acupressure.cs index 7684b08..c547662 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Acupressure.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Acupressure.cs @@ -9,10 +9,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Moves; /// to raise a stat that is already maximized, meaning that the move will fail if all stats are maximized /// [Script(ScriptCategory.Move, "acupressure")] -public class Acupressure : Script +public class Acupressure : Script, IScriptOnSecondaryEffect { /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { // If the target has no stats to raise, the move fails if (target.StatBoost.All(s => s.value == 6)) diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/AfterYou.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/AfterYou.cs index c712ab8..e3377f1 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/AfterYou.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/AfterYou.cs @@ -10,10 +10,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Moves; /// After You fails if the order remains the same after using After You. /// [Script(ScriptCategory.Move, "after_you")] -public class AfterYou : Script +public class AfterYou : Script, IScriptOnSecondaryEffect { /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { var queue = move.User.BattleData!.Battle.ChoiceQueue; if (queue == null) diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Attract.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Attract.cs index 35fa737..d2620aa 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Attract.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Attract.cs @@ -18,10 +18,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Moves; /// target. /// [Script(ScriptCategory.Move, "attract")] -public class Attract : Script +public class Attract : Script, IScriptOnSecondaryEffect { /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { if (target.Gender == move.User.Gender) { diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/AuroraVeil.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/AuroraVeil.cs index 6fbc4df..d62bb5b 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/AuroraVeil.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/AuroraVeil.cs @@ -22,10 +22,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Moves; /// If a Light Clay is held when Aurora Veil is used, it will extend the duration of Aurora Veil from 5 to 8 turns. /// [Script(ScriptCategory.Move, "aurora_veil")] -public class AuroraVeil : Script +public class AuroraVeil : Script, IScriptOnSecondaryEffect { /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { var battle = move.User.BattleData?.Battle; if (battle == null) diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Autotomize.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Autotomize.cs index f8e3034..dfd2849 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Autotomize.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Autotomize.cs @@ -17,10 +17,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Moves; /// (from Generation VI onward), switches out or faints, or the battle ends. /// [Script(ScriptCategory.Move, "autotomize")] -public class Autotomize : Script +public class Autotomize : Script, IScriptOnSecondaryEffect { /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { var user = move.User; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/BaseChargeMove.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/BaseChargeMove.cs index 6908b71..d008f41 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/BaseChargeMove.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/BaseChargeMove.cs @@ -2,8 +2,8 @@ using PkmnLib.Plugin.Gen7.Scripts.Pokemon; namespace PkmnLib.Plugin.Gen7.Scripts.Moves; -public abstract class BaseChargeMove : Script, IScriptPreventMove, IScriptOnBeforeMove - where TVolatile : RequireChargeEffect +public abstract class BaseChargeMove : Script, IScriptPreventMove, IScriptOnBeforeMove, + IScriptOnSecondaryEffect where TVolatile : RequireChargeEffect { public abstract TVolatile CreateVolatile(IPokemon user); @@ -25,4 +25,9 @@ public abstract class BaseChargeMove : Script, IScriptPreventMove, IS { move.User.Volatile.Remove(ScriptUtils.ResolveName()); } + + /// + public virtual void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + { + } } \ No newline at end of file diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/BatonPass.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/BatonPass.cs index aafc590..d6fa819 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/BatonPass.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/BatonPass.cs @@ -3,10 +3,10 @@ using PkmnLib.Plugin.Gen7.Scripts.Utils; namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "baton_pass")] -public class BatonPass : Script +public class BatonPass : Script, IScriptOnSecondaryEffect { /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { var user = move.User; var additionalData = move.MoveChoice.AdditionalData; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/BeakBlast.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/BeakBlast.cs index 3837a74..6207ea0 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/BeakBlast.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/BeakBlast.cs @@ -3,7 +3,7 @@ using PkmnLib.Plugin.Gen7.Scripts.Pokemon; namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "beak_blast")] -public class BeakBlast : Script, IScriptOnBeforeTurnStart +public class BeakBlast : Script, IScriptOnBeforeTurnStart, IScriptOnSecondaryEffect { /// public void OnBeforeTurnStart(ITurnChoice choice) @@ -19,7 +19,7 @@ public class BeakBlast : Script, IScriptOnBeforeTurnStart } /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { move.User.Volatile.Remove(ScriptUtils.ResolveName()); } diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/BeatUp.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/BeatUp.cs index 24e28ba..9ce36db 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, IScriptChangeNumberOfHits +public class BeatUp : Script, IScriptChangeNumberOfHits, IScriptChangeBasePower { private IPokemon[]? _relevantPartyMembers; @@ -26,7 +26,7 @@ public class BeatUp : Script, IScriptChangeNumberOfHits } /// - public override void ChangeBasePower(IExecutingMove move, IPokemon target, byte hit, ref ushort basePower) + public void ChangeBasePower(IExecutingMove move, IPokemon target, byte hit, ref ushort basePower) { var relevantPartyMembers = _relevantPartyMembers ??= GetRelevantPartyMembers(move.User).ToArray(); var hittingPokemon = relevantPartyMembers.ElementAtOrDefault(hit); diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/BellyDrum.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/BellyDrum.cs index 3fbaa5b..642b47c 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/BellyDrum.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/BellyDrum.cs @@ -1,10 +1,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "belly_drum")] -public class BellyDrum : Script +public class BellyDrum : Script, IScriptOnSecondaryEffect { /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { var maxHealthHalved = target.BoostedStats.Hp / 2; if (target.CurrentHealth <= maxHealthHalved) diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Bestow.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Bestow.cs index a31e4f4..da19d16 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Bestow.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Bestow.cs @@ -1,10 +1,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "bestow")] -public class Bestow : Script +public class Bestow : Script, IScriptOnSecondaryEffect { /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { var user = move.User; var userHeldItem = user.RemoveHeldItemForBattle(); diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Bide.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Bide.cs index 7daa955..1c357a4 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Bide.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Bide.cs @@ -3,10 +3,10 @@ using PkmnLib.Plugin.Gen7.Scripts.Pokemon; namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "bide")] -public class Bide : Script +public class Bide : Script, IScriptOnSecondaryEffect { /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { var bideEffect = move.User.Volatile.Get(); if (bideEffect == null) diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Bind.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Bind.cs index a1267e9..959a5ab 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Bind.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Bind.cs @@ -3,10 +3,10 @@ using PkmnLib.Plugin.Gen7.Scripts.Pokemon; namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "bind")] -public class Bind : Script +public class Bind : Script, IScriptOnSecondaryEffect { /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { var args = new CustomTriggers.ModifyBindArgs(move); move.User.RunScriptHook(x => x.CustomTrigger(CustomTriggers.ModifyBind, args)); diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Block.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Block.cs index 20ca3e3..59f68f6 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Block.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Block.cs @@ -3,10 +3,10 @@ using PkmnLib.Plugin.Gen7.Scripts.Pokemon; namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "block")] -public class Block : Script +public class Block : Script, IScriptOnSecondaryEffect { /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { target.Volatile.Add(new BlockEffect()); } diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Bounce.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Bounce.cs index 908943e..63a9b52 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Bounce.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Bounce.cs @@ -3,7 +3,7 @@ using PkmnLib.Plugin.Gen7.Scripts.Pokemon; namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "bounce")] -public class Bounce : Script, IScriptPreventMove, IScriptOnBeforeMove +public class Bounce : Script, IScriptPreventMove, IScriptOnBeforeMove, IScriptOnSecondaryEffect { /// public void PreventMove(IExecutingMove move, ref bool prevent) @@ -26,7 +26,7 @@ public class Bounce : Script, IScriptPreventMove, IScriptOnBeforeMove } /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { var battle = move.User.BattleData?.Battle; if (battle == null) diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Brine.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Brine.cs index 94d1017..8f27ebe 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Brine.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Brine.cs @@ -1,10 +1,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "brine")] -public class Brine : Script +public class Brine : Script, IScriptChangeBasePower { /// - public override void ChangeBasePower(IExecutingMove move, IPokemon target, byte hit, ref ushort basePower) + public void ChangeBasePower(IExecutingMove move, IPokemon target, byte hit, ref ushort basePower) { if (target.CurrentHealth <= target.BoostedStats.Hp / 2) { diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/BugBite.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/BugBite.cs index e617e7f..26b9e28 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/BugBite.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/BugBite.cs @@ -1,10 +1,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "bug_bite")] -public class BugBite : Script +public class BugBite : Script, IScriptOnSecondaryEffect { /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { var user = move.User; var battleData = user.BattleData; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/BurnUp.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/BurnUp.cs index 31322b8..e1a8189 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/BurnUp.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/BurnUp.cs @@ -1,10 +1,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "burn_up")] -public class BurnUp : Script +public class BurnUp : Script, IScriptOnSecondaryEffect { /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { var battleData = move.User.BattleData; if (battleData == null) diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Camouflage.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Camouflage.cs index fa9d738..93dfd62 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Camouflage.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Camouflage.cs @@ -3,10 +3,10 @@ using PkmnLib.Plugin.Gen7.Scripts.Utils; namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "camouflage")] -public class Camouflage : Script +public class Camouflage : Script, IScriptOnSecondaryEffect { /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { var type = GetTypeIdentifier(move.Battle); if (type == null) diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Captivate.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Captivate.cs index ffa1e20..162c037 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Captivate.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Captivate.cs @@ -3,10 +3,10 @@ using PkmnLib.Static.Species; namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "captivate")] -public class Captivate : Script +public class Captivate : Script, IScriptOnSecondaryEffect { /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { var user = move.User; if (target.Gender == Gender.Genderless || target.Gender == user.Gender) diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/ChangeAllTargetStats.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/ChangeAllTargetStats.cs index f2c7b44..35ca767 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/ChangeAllTargetStats.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/ChangeAllTargetStats.cs @@ -1,7 +1,7 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "change_all_target_stats")] -public class ChangeAllTargetStats : Script, IScriptOnInitialize +public class ChangeAllTargetStats : Script, IScriptOnInitialize, IScriptOnSecondaryEffect { private sbyte _amount; @@ -20,7 +20,7 @@ public class ChangeAllTargetStats : Script, IScriptOnInitialize } /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { target.ChangeStatBoost(Statistic.Attack, _amount, target == move.User, false); target.ChangeStatBoost(Statistic.Defense, _amount, target == move.User, false); diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/ChangeMultipleTargetStatBoosts.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/ChangeMultipleTargetStatBoosts.cs index 929ee65..8e8c557 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/ChangeMultipleTargetStatBoosts.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/ChangeMultipleTargetStatBoosts.cs @@ -1,7 +1,7 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "change_multiple_target_stat_boosts")] -public class ChangeMultipleTargetStatBoosts : Script, IScriptOnInitialize +public class ChangeMultipleTargetStatBoosts : Script, IScriptOnInitialize, IScriptOnSecondaryEffect { private Dictionary _statBoosts = new(); @@ -25,7 +25,7 @@ public class ChangeMultipleTargetStatBoosts : Script, IScriptOnInitialize } /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { EventBatchId batchId = new(); foreach (var stat in _statBoosts) diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/ChangeMultipleUserStatBoosts.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/ChangeMultipleUserStatBoosts.cs index da5f77b..df7c02b 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/ChangeMultipleUserStatBoosts.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/ChangeMultipleUserStatBoosts.cs @@ -1,7 +1,7 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "change_multiple_user_stat_boosts")] -public class ChangeMultipleUserStatBoosts : Script, IScriptOnInitialize +public class ChangeMultipleUserStatBoosts : Script, IScriptOnInitialize, IScriptOnSecondaryEffect { private Dictionary _statBoosts = new(); @@ -25,7 +25,7 @@ public class ChangeMultipleUserStatBoosts : Script, IScriptOnInitialize } /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { EventBatchId batchId = new(); foreach (var stat in _statBoosts) diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/ChangeTargetStats.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/ChangeTargetStats.cs index 1488be9..f972ee4 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/ChangeTargetStats.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/ChangeTargetStats.cs @@ -1,6 +1,6 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Moves; -public abstract class ChangeTargetStats : Script, IScriptOnInitialize +public abstract class ChangeTargetStats : Script, IScriptOnInitialize, IScriptOnSecondaryEffect { private readonly Statistic _stat; private sbyte _amount; @@ -27,7 +27,7 @@ public abstract class ChangeTargetStats : Script, IScriptOnInitialize } /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { target.ChangeStatBoost(_stat, _amount, target == move.User, false); } diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/ChangeUserStats.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/ChangeUserStats.cs index 86ca6f9..f241ec0 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/ChangeUserStats.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/ChangeUserStats.cs @@ -1,6 +1,6 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Moves; -public abstract class ChangeUserStats : Script, IScriptOnInitialize +public abstract class ChangeUserStats : Script, IScriptOnInitialize, IScriptOnSecondaryEffect { private readonly Statistic _stat; private sbyte _amount; @@ -27,7 +27,7 @@ public abstract class ChangeUserStats : Script, IScriptOnInitialize } /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { move.User.ChangeStatBoost(_stat, _amount, true, false); } diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Charge.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Charge.cs index 61c062f..1643b70 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Charge.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Charge.cs @@ -3,10 +3,10 @@ using PkmnLib.Plugin.Gen7.Scripts.Pokemon; namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "charge")] -public class Charge : Script +public class Charge : Script, IScriptOnSecondaryEffect { /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { move.User.ChangeStatBoost(Statistic.SpecialDefense, 1, true, false); move.User.Volatile.Add(new ChargeEffect()); diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Confuse.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Confuse.cs index 47a259b..baa4a74 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Confuse.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Confuse.cs @@ -3,10 +3,10 @@ using PkmnLib.Plugin.Gen7.Scripts.Pokemon; namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "confuse")] -public class Confuse : Script +public class Confuse : Script, IScriptOnSecondaryEffect { /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { target.Volatile.Add(new Confusion()); } diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Conversion.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Conversion.cs index bdeb000..a29caa2 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Conversion.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Conversion.cs @@ -1,10 +1,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "conversion")] -public class Conversion : Script +public class Conversion : Script, IScriptOnSecondaryEffect { /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { var moveType = move.User.Moves.WhereNotNull().FirstOrDefault()?.MoveData.MoveType; if (moveType == null) diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Conversion2.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Conversion2.cs index 5b169d1..47df89f 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Conversion2.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Conversion2.cs @@ -1,10 +1,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "conversion_2")] -public class Conversion2 : Script +public class Conversion2 : Script, IScriptOnSecondaryEffect { /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { var previousTurnChoices = target.BattleData?.Battle.PreviousTurnChoices; var nextExecutingChoice = target.BattleData?.Battle.ChoiceQueue?.Peek(); diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/CoreEnforcer.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/CoreEnforcer.cs index 7fd47bb..f34a4aa 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/CoreEnforcer.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/CoreEnforcer.cs @@ -1,10 +1,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "core_enforcer")] -public class CoreEnforcer : Script +public class CoreEnforcer : Script, IScriptOnSecondaryEffect { /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { var battleData = target.BattleData; if (battleData == null) diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Covet.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Covet.cs index 4df7f5d..d085ebd 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Covet.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Covet.cs @@ -1,10 +1,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "covet")] -public class Covet : Script +public class Covet : Script, IScriptOnSecondaryEffect { /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { if (target.HeldItem == null) return; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/CraftyShield.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/CraftyShield.cs index 6f3670b..7c947b0 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/CraftyShield.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/CraftyShield.cs @@ -3,10 +3,10 @@ using PkmnLib.Plugin.Gen7.Scripts.Side; namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "crafty_shield")] -public class CraftyShield : Script +public class CraftyShield : Script, IScriptOnSecondaryEffect { /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { var battleData = move.User.BattleData; if (battleData == null) diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/CrushGrip.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/CrushGrip.cs index bba41fd..7f769a4 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/CrushGrip.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/CrushGrip.cs @@ -1,10 +1,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "crush_grip")] -public class CrushGrip : Script +public class CrushGrip : Script, IScriptChangeBasePower { /// - public override void ChangeBasePower(IExecutingMove move, IPokemon target, byte hit, ref ushort basePower) + public void ChangeBasePower(IExecutingMove move, IPokemon target, byte hit, ref ushort basePower) { basePower = Math.Max((byte)(120 * target.CurrentHealth / target.BoostedStats.Hp), (byte)1); } diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/CurePartyStatus.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/CurePartyStatus.cs index ee5dcdd..c8ed3f1 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/CurePartyStatus.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/CurePartyStatus.cs @@ -1,10 +1,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "cure_party_status")] -public class CurePartyStatus : Script +public class CurePartyStatus : Script, IScriptOnSecondaryEffect { /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { var user = move.User; var battle = user.BattleData?.Battle; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Curse.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Curse.cs index 3478291..6889e8e 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Curse.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Curse.cs @@ -3,10 +3,10 @@ using PkmnLib.Plugin.Gen7.Scripts.Pokemon; namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "curse")] -public class Curse : Script +public class Curse : Script, IScriptOnSecondaryEffect { /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { var battleData = move.User.BattleData; if (battleData == null) diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Defog.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Defog.cs index a413eb3..bf2970c 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Defog.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Defog.cs @@ -4,7 +4,7 @@ using PkmnLib.Plugin.Gen7.Scripts.Side; namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "defog")] -public class Defog : Script +public class Defog : Script, IScriptOnSecondaryEffect { [PublicAPI] public static HashSet DefoggedEffects = [ @@ -19,7 +19,7 @@ public class Defog : Script ]; /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { if (target.BattleData == null) return; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/DestinyBond.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/DestinyBond.cs index 03463ff..412a953 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/DestinyBond.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/DestinyBond.cs @@ -3,10 +3,10 @@ using PkmnLib.Plugin.Gen7.Scripts.Pokemon; namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "destiny_bond")] -public class DestinyBond : Script +public class DestinyBond : Script, IScriptOnSecondaryEffect { /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { move.User.Volatile.Add(new DestinyBondEffect()); } diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Disable.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Disable.cs index 6d396cd..5451ea8 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Disable.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Disable.cs @@ -3,10 +3,10 @@ using PkmnLib.Plugin.Gen7.Scripts.Pokemon; namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "disable")] -public class Disable : Script +public class Disable : Script, IScriptOnSecondaryEffect { /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { var battleData = move.User.BattleData; if (battleData == null) diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Dive.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Dive.cs index 278a968..e8de4da 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Dive.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Dive.cs @@ -3,7 +3,7 @@ using PkmnLib.Plugin.Gen7.Scripts.Pokemon; namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "dive")] -public class Dive : Script, IScriptPreventMove +public class Dive : Script, IScriptPreventMove, IScriptOnSecondaryEffect { /// public void PreventMove(IExecutingMove move, ref bool prevent) @@ -20,7 +20,7 @@ public class Dive : Script, IScriptPreventMove } /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { move.User.Volatile.Remove(ScriptUtils.ResolveName()); } diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/DoublePowerIfTargetDamagedInTurn.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/DoublePowerIfTargetDamagedInTurn.cs index 6734e48..d640abe 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/DoublePowerIfTargetDamagedInTurn.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/DoublePowerIfTargetDamagedInTurn.cs @@ -3,7 +3,7 @@ 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, IScriptOnBeforeTurnStart +public class DoublePowerIfTargetDamagedInTurn : Script, IScriptOnBeforeTurnStart, IScriptChangeBasePower { /// public void OnBeforeTurnStart(ITurnChoice choice) @@ -19,7 +19,7 @@ public class DoublePowerIfTargetDamagedInTurn : Script, IScriptOnBeforeTurnStart } /// - public override void ChangeBasePower(IExecutingMove move, IPokemon target, byte hit, ref ushort basePower) + public void ChangeBasePower(IExecutingMove move, IPokemon target, byte hit, ref ushort basePower) { var battle = move.User.BattleData?.Battle; if (battle == null) diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/DragonAscent.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/DragonAscent.cs index 5e28ec9..e419d76 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/DragonAscent.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/DragonAscent.cs @@ -1,10 +1,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "dragon_ascent")] -public class DragonAscent : Script +public class DragonAscent : Script, IScriptOnSecondaryEffect { /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { EventBatchId batchId = new(); move.User.ChangeStatBoost(Statistic.Defense, -1, true, false, batchId); diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Drain.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Drain.cs index f6864a9..5a50c09 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Drain.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Drain.cs @@ -1,7 +1,7 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "drain")] -public class Drain : Script, IScriptOnInitialize +public class Drain : Script, IScriptOnInitialize, IScriptOnSecondaryEffect { public float DrainModifier { get; set; } = 0.5f; @@ -14,7 +14,7 @@ public class Drain : Script, IScriptOnInitialize } /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { var user = move.User; var damage = move.GetHitData(target, hit).Damage; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/DreamEater.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/DreamEater.cs index 721bd11..d662fdc 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/DreamEater.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/DreamEater.cs @@ -1,7 +1,7 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "dream_eater")] -public class DreamEater : Script +public class DreamEater : Script, IScriptOnSecondaryEffect { /// public override void BlockOutgoingHit(IExecutingMove executingMove, IPokemon target, byte hitIndex, ref bool block) @@ -11,7 +11,7 @@ public class DreamEater : Script } /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { var user = move.User; var damage = move.GetHitData(target, hit).Damage; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/EchoedVoice.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/EchoedVoice.cs index 7e2cc9a..4b417d5 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/EchoedVoice.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/EchoedVoice.cs @@ -3,7 +3,7 @@ using PkmnLib.Plugin.Gen7.Scripts.Side; namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "echoed_voice")] -public class EchoedVoice : Script +public class EchoedVoice : Script, IScriptOnSecondaryEffect { /// public override void ChangeDamageModifier(IExecutingMove move, IPokemon target, byte hit, ref float modifier) @@ -20,7 +20,7 @@ public class EchoedVoice : Script } /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { var battleData = move.User.BattleData; if (battleData == null) diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/ElectricTerrain.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/ElectricTerrain.cs index c61fcc8..8fe38af 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/ElectricTerrain.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/ElectricTerrain.cs @@ -1,10 +1,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "electric_terrain")] -public class ElectricTerrain : Script +public class ElectricTerrain : Script, IScriptOnSecondaryEffect { /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { var battleData = move.User.BattleData; battleData?.Battle.SetTerrain(ScriptUtils.ResolveName()); diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Electrify.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Electrify.cs index a907daa..1abacd2 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Electrify.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Electrify.cs @@ -3,10 +3,10 @@ using PkmnLib.Plugin.Gen7.Scripts.MoveVolatile; namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "electrify")] -public class Electrify : Script +public class Electrify : Script, IScriptOnSecondaryEffect { /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { var choiceQueue = target.BattleData?.Battle.ChoiceQueue; if (choiceQueue == null) diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/ElectroBall.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/ElectroBall.cs index d61b1a8..050e5a8 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/ElectroBall.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/ElectroBall.cs @@ -1,10 +1,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "electro_ball")] -public class ElectroBall : Script +public class ElectroBall : Script, IScriptChangeBasePower { /// - public override void ChangeBasePower(IExecutingMove move, IPokemon target, byte hit, ref ushort basePower) + public void ChangeBasePower(IExecutingMove move, IPokemon target, byte hit, ref ushort basePower) { var user = move.User; var targetSpeed = target.BoostedStats.Speed; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Embargo.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Embargo.cs index 5c71e04..675ad97 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Embargo.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Embargo.cs @@ -3,10 +3,10 @@ using PkmnLib.Plugin.Gen7.Scripts.Pokemon; namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "embargo")] -public class Embargo : Script +public class Embargo : Script, IScriptOnSecondaryEffect { /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { target.Volatile.Add(new EmbargoEffect()); } diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Encore.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Encore.cs index b6bd2ca..761bb49 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Encore.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Encore.cs @@ -3,10 +3,10 @@ using PkmnLib.Plugin.Gen7.Scripts.Pokemon; namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "encore")] -public class Encore : Script +public class Encore : Script, IScriptOnSecondaryEffect { /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { var battle = target.BattleData?.Battle; if (battle == null) diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Entrainment.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Entrainment.cs index 0a4bf64..739578c 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Entrainment.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Entrainment.cs @@ -1,10 +1,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "entrainment")] -public class Entrainment : Script +public class Entrainment : Script, IScriptOnSecondaryEffect { /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { var userAbility = move.User.ActiveAbility; var targetAbility = target.ActiveAbility; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Eruption.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Eruption.cs index 4f4c837..31dc245 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Eruption.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Eruption.cs @@ -1,9 +1,9 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "eruption")] -public class Eruption : Script +public class Eruption : Script, IScriptChangeBasePower { - public override void ChangeBasePower(IExecutingMove move, IPokemon target, byte hit, ref ushort basePower) + public void ChangeBasePower(IExecutingMove move, IPokemon target, byte hit, ref ushort basePower) { basePower = Math.Max((byte)(150 * move.User.CurrentHealth / move.User.BoostedStats.Hp), (byte)1); } diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Facade.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Facade.cs index 1a6b33e..b618a3f 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Facade.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Facade.cs @@ -1,15 +1,15 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "facade")] -public class Facade : Script +public class Facade : Script, IScriptChangeBasePower { /// - public override void ChangeBasePower(IExecutingMove move, IPokemon target, byte hit, ref ushort basePower) + public void ChangeBasePower(IExecutingMove move, IPokemon target, byte hit, ref ushort basePower) { var status = move.User.StatusScript.Script?.Name; if (status == "paralyzed" || status == "burned" || status == "poisoned") { - basePower.MultiplyOrMax(2); + basePower = basePower.MultiplyOrMax(2); } } } \ No newline at end of file diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/FairyLock.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/FairyLock.cs index 9fa5a41..0295ffd 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/FairyLock.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/FairyLock.cs @@ -3,10 +3,10 @@ using PkmnLib.Plugin.Gen7.Scripts.Battle; namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "fairy_lock")] -public class FairyLock : Script +public class FairyLock : Script, IScriptOnSecondaryEffect { /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { var battle = target.BattleData?.Battle; battle?.Volatile.Add(new FairyLockEffect()); diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/FakeOut.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/FakeOut.cs index 3a32118..94052d0 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/FakeOut.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/FakeOut.cs @@ -3,7 +3,7 @@ using PkmnLib.Plugin.Gen7.Scripts.Pokemon; namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "fake_out")] -public class FakeOut : Script, IScriptStopBeforeMove +public class FakeOut : Script, IScriptStopBeforeMove, IScriptOnSecondaryEffect { /// public void StopBeforeMove(IExecutingMove move, ref bool stop) @@ -16,7 +16,7 @@ public class FakeOut : Script, IScriptStopBeforeMove } /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { target.Volatile.Add(new FlinchEffect()); } diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/FinalGambit.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/FinalGambit.cs index 5c18156..94d5a15 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/FinalGambit.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/FinalGambit.cs @@ -1,7 +1,7 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "final_gambit")] -public class FinalGambit : Script +public class FinalGambit : Script, IScriptOnSecondaryEffect { /// public override void ChangeMoveDamage(IExecutingMove move, IPokemon target, byte hit, ref uint damage) @@ -10,7 +10,7 @@ public class FinalGambit : Script } /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { move.User.Damage(move.User.CurrentHealth * 10, DamageSource.Misc); } diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/FireFang.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/FireFang.cs index b16251f..2ae5c5e 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/FireFang.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/FireFang.cs @@ -3,10 +3,10 @@ using PkmnLib.Plugin.Gen7.Scripts.Pokemon; namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "fire_fang")] -public class FireFang : Script +public class FireFang : Script, IScriptOnSecondaryEffect { /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { var battleData = target.BattleData; if (battleData == null) diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/FireSpin.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/FireSpin.cs index a6f5048..22cfe86 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/FireSpin.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/FireSpin.cs @@ -3,10 +3,10 @@ using PkmnLib.Plugin.Gen7.Scripts.Pokemon; namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "fire_spin")] -public class FireSpin : MultiHitMove +public class FireSpin : MultiHitMove, IScriptOnSecondaryEffect { /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { target.Volatile.StackOrAdd("fire_spin", () => new FireSpinEffect(target)); } diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Flail.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Flail.cs index 73452ea..d87c4bb 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Flail.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Flail.cs @@ -1,10 +1,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "flail")] -public class Flail : Script +public class Flail : Script, IScriptChangeBasePower { /// - public override void ChangeBasePower(IExecutingMove move, IPokemon target, byte hit, ref ushort basePower) + public void ChangeBasePower(IExecutingMove move, IPokemon target, byte hit, ref ushort basePower) { var remainingHealth = move.User.CurrentHealth / move.User.BoostedStats.Hp; var fraction = remainingHealth * 48; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/FlameBurst.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/FlameBurst.cs index 626fdb5..0f36c93 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/FlameBurst.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/FlameBurst.cs @@ -1,10 +1,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "flame_burst")] -public class FlameBurst : Script +public class FlameBurst : Script, IScriptOnSecondaryEffect { /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { var adjacentFoes = GetAdjacentFoes(move.User).WhereNotNull(); EventBatchId batchId = new(); diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/FlameWheel.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/FlameWheel.cs index 29fc742..db92c35 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/FlameWheel.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/FlameWheel.cs @@ -1,7 +1,7 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "flame_wheel")] -public class FlameWheel : Script, IScriptOnInitialize +public class FlameWheel : Script, IScriptOnInitialize, IScriptOnSecondaryEffect { private float _burnChance; @@ -17,7 +17,7 @@ public class FlameWheel : Script, IScriptOnInitialize } /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { if (move.User.HasStatus("frozen")) { diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/FlareBlitz.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/FlareBlitz.cs index d466631..e531ca0 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/FlareBlitz.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/FlareBlitz.cs @@ -1,10 +1,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "flare_blitz")] -public class FlareBlitz : Script +public class FlareBlitz : Script, IScriptOnSecondaryEffect { /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { var battleData = target.BattleData; if (battleData == null) diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Flatter.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Flatter.cs index 6df8165..e4f5dc0 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Flatter.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Flatter.cs @@ -3,10 +3,10 @@ using PkmnLib.Plugin.Gen7.Scripts.Pokemon; namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "flatter")] -public class Flatter : Script +public class Flatter : Script, IScriptOnSecondaryEffect { /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { target.ChangeStatBoost(Statistic.SpecialAttack, 1, false, false); target.Volatile.StackOrAdd("confusion", () => new Confusion()); diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Flinch.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Flinch.cs index 651c3d0..4ab7eec 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Flinch.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Flinch.cs @@ -3,10 +3,10 @@ using PkmnLib.Plugin.Gen7.Scripts.Pokemon; namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "flinch")] -public class Flinch : Script +public class Flinch : Script, IScriptOnSecondaryEffect { /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { target.Volatile.Add(new FlinchEffect()); } diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Fling.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Fling.cs index 862f0d5..d390d4f 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Fling.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Fling.cs @@ -1,10 +1,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "fling")] -public class Fling : Script +public class Fling : Script, IScriptOnSecondaryEffect, IScriptChangeBasePower { /// - public override void ChangeBasePower(IExecutingMove move, IPokemon target, byte hit, ref ushort basePower) + public void ChangeBasePower(IExecutingMove move, IPokemon target, byte hit, ref ushort basePower) { var item = move.User.HeldItem; if (item == null) @@ -29,6 +29,6 @@ public class Fling : Script } /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) => + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) => move.User.RemoveHeldItemForBattle(); } \ No newline at end of file diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/FloralHealing.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/FloralHealing.cs index 5c10601..9bc6b7f 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/FloralHealing.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/FloralHealing.cs @@ -1,10 +1,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "floral_healing")] -public class FloralHealing : Script +public class FloralHealing : Script, IScriptOnSecondaryEffect { /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { if (target.IsFainted) return; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/FlowerShield.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/FlowerShield.cs index cbed1ee..65a63d7 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/FlowerShield.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/FlowerShield.cs @@ -1,10 +1,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "flower_shield")] -public class FlowerShield : Script +public class FlowerShield : Script, IScriptOnSecondaryEffect { /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { var battleData = target.BattleData; if (battleData == null) diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/FocusEnergy.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/FocusEnergy.cs index 7f28b65..2427f34 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/FocusEnergy.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/FocusEnergy.cs @@ -1,10 +1,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "focus_energy")] -public class FocusEnergy : Script +public class FocusEnergy : Script, IScriptOnSecondaryEffect { /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { target.Volatile.Add(new Pokemon.IncreasedCriticalStage()); } diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/ForceCritical.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/ForceCritical.cs index e75f9be..43f660d 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/ForceCritical.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/ForceCritical.cs @@ -1,10 +1,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "force_critical")] -public class ForceCritical : Script +public class ForceCritical : Script, IScriptChangeCriticalStage { /// - public override void ChangeCriticalStage(IExecutingMove move, IPokemon target, byte hit, ref byte stage) + public void ChangeCriticalStage(IExecutingMove move, IPokemon target, byte hit, ref byte stage) { stage = 100; } diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Foresight.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Foresight.cs index 94d2f4a..77afd91 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Foresight.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Foresight.cs @@ -3,10 +3,10 @@ using PkmnLib.Plugin.Gen7.Scripts.Pokemon; namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "foresight")] -public class Foresight : Script +public class Foresight : Script, IScriptOnSecondaryEffect { /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { var battleData = target.BattleData; if (battleData == null) diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/ForestsCurse.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/ForestsCurse.cs index 8405f72..01eab06 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/ForestsCurse.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/ForestsCurse.cs @@ -1,10 +1,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "forests_curse")] -public class ForestsCurse : Script +public class ForestsCurse : Script, IScriptOnSecondaryEffect { /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { var battleData = target.BattleData; if (battleData == null) diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/FreezeDry.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/FreezeDry.cs index ce3c235..582ecba 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/FreezeDry.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/FreezeDry.cs @@ -1,10 +1,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "freeze_dry")] -public class FreezeDry : Script +public class FreezeDry : Script, IScriptChangeEffectiveness, IScriptOnSecondaryEffect { /// - public override void ChangeEffectiveness(IExecutingMove move, IPokemon target, byte hit, ref float effectiveness) + public void ChangeEffectiveness(IExecutingMove move, IPokemon target, byte hit, ref float effectiveness) { var battleData = target.BattleData; if (battleData == null) @@ -23,7 +23,7 @@ public class FreezeDry : Script } /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { var battleData = target.BattleData; if (battleData == null) diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Frustration.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Frustration.cs index 615fdce..c1a77d0 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Frustration.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Frustration.cs @@ -1,10 +1,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "frustration")] -public class Frustration : Script +public class Frustration : Script, IScriptChangeBasePower { /// - public override void ChangeBasePower(IExecutingMove move, IPokemon target, byte hit, ref ushort basePower) + public void ChangeBasePower(IExecutingMove move, IPokemon target, byte hit, ref ushort basePower) { var friendship = move.User.Happiness; basePower = Math.Max((byte)1, (byte)((255 - friendship) * 2 / 5)); diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/FuryCutter.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/FuryCutter.cs index 6365510..9a4171b 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/FuryCutter.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/FuryCutter.cs @@ -3,10 +3,10 @@ using PkmnLib.Plugin.Gen7.Scripts.Pokemon; namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "fury_cutter")] -public class FuryCutter : Script +public class FuryCutter : Script, IScriptChangeBasePower { /// - public override void ChangeBasePower(IExecutingMove move, IPokemon target, byte hit, ref ushort basePower) + public void ChangeBasePower(IExecutingMove move, IPokemon target, byte hit, ref ushort basePower) { var userEffect = move.User.Volatile.Get(); if (userEffect == null) diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/GastroAcid.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/GastroAcid.cs index 4655746..9f756a9 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/GastroAcid.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/GastroAcid.cs @@ -1,10 +1,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "gastro_acid")] -public class GastroAcid : Script +public class GastroAcid : Script, IScriptOnSecondaryEffect { /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { target.SuppressAbility(); } diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/GearUp.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/GearUp.cs index 90fab6e..dcc6ddb 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/GearUp.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/GearUp.cs @@ -1,10 +1,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "gear_up")] -public class GearUp : Script +public class GearUp : Script, IScriptOnSecondaryEffect { /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { var battleData = move.User.BattleData; if (battleData == null) diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/GenesisSupernova.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/GenesisSupernova.cs index 23792ca..fdb6e40 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/GenesisSupernova.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/GenesisSupernova.cs @@ -1,10 +1,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "genesis_supernova")] -public class GenesisSupernova : Script +public class GenesisSupernova : Script, IScriptOnSecondaryEffect { /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { var battleData = move.User.BattleData; if (battleData == null) diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/GrassKnot.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/GrassKnot.cs index 70983cc..09268cb 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/GrassKnot.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/GrassKnot.cs @@ -1,10 +1,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "grass_knot")] -public class GrassKnot : Script +public class GrassKnot : Script, IScriptChangeBasePower { /// - public override void ChangeBasePower(IExecutingMove move, IPokemon target, byte hit, ref ushort basePower) + public void ChangeBasePower(IExecutingMove move, IPokemon target, byte hit, ref ushort basePower) { var targetWeight = target.WeightInKg; basePower = targetWeight switch diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/GrassTerrain.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/GrassTerrain.cs index a53bef2..bd9c4f2 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/GrassTerrain.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/GrassTerrain.cs @@ -1,10 +1,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "grassy_terrain")] -public class GrassyTerrain : Script +public class GrassyTerrain : Script, IScriptOnSecondaryEffect { /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { var battleData = move.User.BattleData; battleData?.Battle.SetTerrain(ScriptUtils.ResolveName()); diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Gravity.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Gravity.cs index f09fc99..acbd9a4 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Gravity.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Gravity.cs @@ -3,10 +3,10 @@ using PkmnLib.Plugin.Gen7.Scripts.Pokemon; namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "gravity")] -public class Gravity : Script +public class Gravity : Script, IScriptOnSecondaryEffect { /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { var battleData = target.BattleData; if (battleData == null) diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Growth.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Growth.cs index 8169f3c..76273bb 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Growth.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Growth.cs @@ -3,10 +3,10 @@ using PkmnLib.Plugin.Gen7.Scripts.Weather; namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "growth")] -public class Growth : Script +public class Growth : Script, IScriptOnSecondaryEffect { /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { EventBatchId batchId = new(); sbyte amount = 1; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Grudge.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Grudge.cs index c5e1960..91cb659 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Grudge.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Grudge.cs @@ -1,10 +1,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "grudge")] -public class Grudge : Script +public class Grudge : Script, IScriptOnSecondaryEffect { /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { move.User.Volatile.StackOrAdd("grudge", () => { diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/GuardSplit.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/GuardSplit.cs index 36ba8ae..35e8be5 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/GuardSplit.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/GuardSplit.cs @@ -1,10 +1,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "guard_split")] -public class GuardSplit : Script +public class GuardSplit : Script, IScriptOnSecondaryEffect { /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { var user = move.User; var userStats = user.FlatStats; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/GuardSwap.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/GuardSwap.cs index 204534e..df3a06d 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/GuardSwap.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/GuardSwap.cs @@ -1,10 +1,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "guard_swap")] -public class GuardSwap : Script +public class GuardSwap : Script, IScriptOnSecondaryEffect { /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { EventBatchId eventBatchId = new(); diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/GyroBall.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/GyroBall.cs index 202d874..5bcd848 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/GyroBall.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/GyroBall.cs @@ -1,10 +1,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "gyro_ball")] -public class GyroBall : Script +public class GyroBall : Script, IScriptChangeBasePower { /// - public override void ChangeBasePower(IExecutingMove move, IPokemon target, byte hit, ref ushort basePower) + public void ChangeBasePower(IExecutingMove move, IPokemon target, byte hit, ref ushort basePower) { basePower = Math.Min((byte)150, (byte)(25 * target.BoostedStats.Speed / move.User.BoostedStats.Speed + 1)); } diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/HealBell.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/HealBell.cs index bf3fbe4..a710a9b 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/HealBell.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/HealBell.cs @@ -3,10 +3,10 @@ using PkmnLib.Plugin.Gen7.Scripts.Pokemon; namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "heal_bell")] -public class HealBell : Script +public class HealBell : Script, IScriptOnSecondaryEffect { /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { var party = move.User.BattleData?.Battle.Parties.FirstOrDefault(p => p.Party.Contains(target)); if (party == null) diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/HealBlock.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/HealBlock.cs index f2a5f29..98aa302 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/HealBlock.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/HealBlock.cs @@ -3,10 +3,10 @@ using PkmnLib.Plugin.Gen7.Scripts.Pokemon; namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "heal_block")] -public class HealBlock : Script +public class HealBlock : Script, IScriptOnSecondaryEffect { /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { target.Volatile.Add(new HealBlockEffect()); } diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/HealEachEndOfTurn.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/HealEachEndOfTurn.cs index 992661f..89c9c46 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/HealEachEndOfTurn.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/HealEachEndOfTurn.cs @@ -3,7 +3,7 @@ using PkmnLib.Plugin.Gen7.Scripts.Pokemon; namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "heal_each_end_of_turn")] -public class HealEachEndOfTurn : Script, IScriptOnInitialize +public class HealEachEndOfTurn : Script, IScriptOnInitialize, IScriptOnSecondaryEffect { private float _healPercentage; @@ -22,7 +22,7 @@ public class HealEachEndOfTurn : Script, IScriptOnInitialize } /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { var effectName = ScriptUtils.ResolveName(); if (target.Volatile.Contains(effectName)) diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/HealPercent.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/HealPercent.cs index 9d5db68..9004224 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/HealPercent.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/HealPercent.cs @@ -1,7 +1,7 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "heal_percent")] -public class HealPercent : Script, IScriptOnInitialize +public class HealPercent : Script, IScriptOnInitialize, IScriptOnSecondaryEffect { private float _healPercent = 0.5f; @@ -15,7 +15,7 @@ public class HealPercent : Script, IScriptOnInitialize } /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { var args = new CustomTriggers.ModifyHealPercentArgs(move, target, hit, _healPercent); move.RunScriptHook(x => x.CustomTrigger(CustomTriggers.ModifyHealPercent, args)); diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/HealingWish.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/HealingWish.cs index 44da194..120da71 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/HealingWish.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/HealingWish.cs @@ -3,10 +3,10 @@ using PkmnLib.Plugin.Gen7.Scripts.Side; namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "healing_wish")] -public class HealingWish : Script +public class HealingWish : Script, IScriptOnSecondaryEffect { /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { var battleData = move.User.BattleData; if (battleData == null) diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/HeartSwap.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/HeartSwap.cs index 0133236..ea6af6e 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/HeartSwap.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/HeartSwap.cs @@ -1,10 +1,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "heart_swap")] -public class HeartSwap : Script +public class HeartSwap : Script, IScriptOnSecondaryEffect { /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { EventBatchId eventBatchId = new(); var userStats = move.User.StatBoost; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/HeatCrash.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/HeatCrash.cs index 3b49c99..66ade19 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/HeatCrash.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/HeatCrash.cs @@ -1,10 +1,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "heat_crash")] -public class HeatCrash : Script +public class HeatCrash : Script, IScriptChangeBasePower { /// - public override void ChangeBasePower(IExecutingMove move, IPokemon target, byte hit, ref ushort basePower) + public void ChangeBasePower(IExecutingMove move, IPokemon target, byte hit, ref ushort basePower) { var weightMultiplier = move.User.WeightInKg / target.WeightInKg; basePower = weightMultiplier switch diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/HelpingHand.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/HelpingHand.cs index 32dbe7f..5585bf9 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/HelpingHand.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/HelpingHand.cs @@ -3,9 +3,9 @@ using PkmnLib.Plugin.Gen7.Scripts.Pokemon; namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "helping_hand")] -public class HelpingHand : Script +public class HelpingHand : Script, IScriptOnSecondaryEffect { /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) => + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) => target.Volatile.Add(new HelpingHandEffect()); } \ No newline at end of file diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Hex.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Hex.cs index aab7cc3..58fc9fa 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Hex.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Hex.cs @@ -1,10 +1,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "hex")] -public class Hex : Script +public class Hex : Script, IScriptChangeBasePower { /// - public override void ChangeBasePower(IExecutingMove move, IPokemon target, byte hit, ref ushort basePower) + public void ChangeBasePower(IExecutingMove move, IPokemon target, byte hit, ref ushort basePower) { if (!target.StatusScript.IsEmpty) { diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/HiddenPower.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/HiddenPower.cs index 4f330f1..546e4d8 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/HiddenPower.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/HiddenPower.cs @@ -1,10 +1,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "hidden_power")] -public class HiddenPower : Script +public class HiddenPower : Script, IScriptChangeMoveType, IScriptChangeBasePower { /// - public override void ChangeMoveType(IExecutingMove move, IPokemon target, byte hit, ref TypeIdentifier? moveType) + public void ChangeMoveType(IExecutingMove move, IPokemon target, byte hit, ref TypeIdentifier? moveType) { var ivs = move.User.IndividualValues; @@ -15,7 +15,7 @@ public class HiddenPower : Script } /// - public override void ChangeBasePower(IExecutingMove move, IPokemon target, byte hit, ref ushort basePower) + public void ChangeBasePower(IExecutingMove move, IPokemon target, byte hit, ref ushort basePower) { var ivs = move.User.IndividualValues; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/HighJumpKick.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/HighJumpKick.cs index 947b138..bc5e7cc 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/HighJumpKick.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/HighJumpKick.cs @@ -1,10 +1,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "high_jump_kick")] -public class HighJumpKick : Script +public class HighJumpKick : Script, IScriptOnMoveMiss { /// - public override void OnMoveMiss(IExecutingMove move, IPokemon target) + public void OnMoveMiss(IExecutingMove move, IPokemon target) { var damage = move.GetHitData(target, 0).Damage; var recoil = damage / 2; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/HyperspaceFury.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/HyperspaceFury.cs index 9e061f5..312b518 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/HyperspaceFury.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/HyperspaceFury.cs @@ -3,10 +3,10 @@ using PkmnLib.Plugin.Gen7.Scripts.Pokemon; namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "hyperspace_fury")] -public class HyperspaceFury : Script +public class HyperspaceFury : Script, IScriptOnSecondaryEffect { /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { var protectionScripts = target.Volatile.Select(x => x.Script).OfType(); foreach (var protectionScript in protectionScripts.ToList()) diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/IceBall.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/IceBall.cs index c10cd36..91379f9 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/IceBall.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/IceBall.cs @@ -3,10 +3,10 @@ using PkmnLib.Plugin.Gen7.Scripts.Pokemon; namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "ice_ball")] -public class IceBall : Script +public class IceBall : Script, IScriptOnSecondaryEffect, IScriptChangeBasePower { /// - public override void ChangeBasePower(IExecutingMove move, IPokemon target, byte hit, ref ushort basePower) + public void ChangeBasePower(IExecutingMove move, IPokemon target, byte hit, ref ushort basePower) { var userEffect = move.User.Volatile.Get(); if (userEffect == null) @@ -16,7 +16,7 @@ public class IceBall : Script } /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { var userEffect = move.User.Volatile.Get(); if (userEffect == null) diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/IceFang.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/IceFang.cs index fa45ae1..b57e6cb 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/IceFang.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/IceFang.cs @@ -3,10 +3,10 @@ using PkmnLib.Plugin.Gen7.Scripts.Pokemon; namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "ice_fang")] -public class IceFang : Script +public class IceFang : Script, IScriptOnSecondaryEffect { /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { var battleData = move.User.BattleData; if (battleData == null) diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Imprison.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Imprison.cs index 8ba81a7..157f72c 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Imprison.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Imprison.cs @@ -3,10 +3,10 @@ using PkmnLib.Plugin.Gen7.Scripts.Pokemon; namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "imprison")] -public class Imprison : Script +public class Imprison : Script, IScriptOnSecondaryEffect { /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { target.Volatile.Add(new ImprisonEffect(move.User)); } diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Incinerate.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Incinerate.cs index c811600..6de666c 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Incinerate.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Incinerate.cs @@ -1,10 +1,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "incinerate")] -public class Incinerate : Script +public class Incinerate : Script, IScriptOnSecondaryEffect { /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { if (target.HeldItem is not { Category: ItemCategory.Berry } || !target.TryStealHeldItem(out _)) { diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/IncreasedCriticalStage.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/IncreasedCriticalStage.cs index f5f675b..139d1d8 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/IncreasedCriticalStage.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/IncreasedCriticalStage.cs @@ -1,10 +1,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "increased_critical_stage")] -public class IncreasedCriticalStage : Script +public class IncreasedCriticalStage : Script, IScriptChangeCriticalStage { /// - public override void ChangeCriticalStage(IExecutingMove move, IPokemon target, byte hit, ref byte stage) + public void ChangeCriticalStage(IExecutingMove move, IPokemon target, byte hit, ref byte stage) { // Extreme edge case, should never happen if (stage == byte.MaxValue) diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Infestation.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Infestation.cs index 88425f5..4720b95 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Infestation.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Infestation.cs @@ -3,10 +3,10 @@ using PkmnLib.Plugin.Gen7.Scripts.Pokemon; namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "infestation")] -public class Infestation : Script +public class Infestation : Script, IScriptOnSecondaryEffect { /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { var infestationEffect = ScriptUtils.ResolveName(); if (target.Volatile.Contains(infestationEffect)) diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Ingrain.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Ingrain.cs index 528a011..7bc2e9d 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Ingrain.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Ingrain.cs @@ -3,10 +3,10 @@ using PkmnLib.Plugin.Gen7.Scripts.Pokemon; namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "ingrain")] -public class Ingrain : Script +public class Ingrain : Script, IScriptOnSecondaryEffect { /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { move.User.Volatile.Add(new IngrainEffect(move.User)); } diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Instruct.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Instruct.cs index dbe55b1..ffbcda7 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Instruct.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Instruct.cs @@ -3,10 +3,10 @@ using PkmnLib.Dynamic.BattleFlow; namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "instruct")] -public class Instruct : Script +public class Instruct : Script, IScriptOnSecondaryEffect { /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { if (!target.IsUsable) return; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/IonDeluge.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/IonDeluge.cs index 8d6f26b..490121e 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/IonDeluge.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/IonDeluge.cs @@ -3,10 +3,10 @@ using PkmnLib.Plugin.Gen7.Scripts.Battle; namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "ion_deluge")] -public class IonDeluge : Script +public class IonDeluge : Script, IScriptOnSecondaryEffect { /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { move.User.BattleData?.Battle.Volatile.Add(new IonDelugeEffect()); } diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Judgement.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Judgement.cs index fb54de4..7409346 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Judgement.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Judgement.cs @@ -1,10 +1,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "judgement")] -public class Judgement : Script +public class Judgement : Script, IScriptChangeMoveType { /// - public override void ChangeMoveType(IExecutingMove move, IPokemon target, byte hit, ref TypeIdentifier? moveType) + public void ChangeMoveType(IExecutingMove move, IPokemon target, byte hit, ref TypeIdentifier? moveType) { var heldItem = move.User.HeldItem; if (heldItem == null) diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/KingsShield.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/KingsShield.cs index 3e6a254..27d56fb 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/KingsShield.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/KingsShield.cs @@ -4,7 +4,7 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Moves; public class KingsShield : ProtectionScript { /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { base.OnSecondaryEffect(move, target, hit); // Default form is shield form diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/KnockOff.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/KnockOff.cs index 01e52c7..30645ba 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/KnockOff.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/KnockOff.cs @@ -1,10 +1,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "knock_off")] -public class KnockOff : Script +public class KnockOff : Script, IScriptOnSecondaryEffect { /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { if (!target.TryStealHeldItem(out var item)) { diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/LaserFocus.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/LaserFocus.cs index 2de3d10..5d34a58 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/LaserFocus.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/LaserFocus.cs @@ -3,10 +3,10 @@ using PkmnLib.Plugin.Gen7.Scripts.Pokemon; namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "laser_focus")] -public class LaserFocus : Script +public class LaserFocus : Script, IScriptOnSecondaryEffect { /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { target.Volatile.Add(new LaserFocusEffect()); } diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/LeechSeed.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/LeechSeed.cs index 7c90ef2..5745689 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/LeechSeed.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/LeechSeed.cs @@ -3,10 +3,10 @@ using PkmnLib.Plugin.Gen7.Scripts.Pokemon; namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "leech_seed")] -public class LeechSeed : Script +public class LeechSeed : Script, IScriptOnSecondaryEffect { /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { if (target.Types.Any(x => x.Name == "grass")) { diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/LightScreen.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/LightScreen.cs index dc61e72..e06528f 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/LightScreen.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/LightScreen.cs @@ -3,10 +3,10 @@ using PkmnLib.Plugin.Gen7.Scripts.Side; namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "light_screen")] -public class LightScreen : Script +public class LightScreen : Script, IScriptOnSecondaryEffect { /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { var battleData = move.User.BattleData; if (battleData == null) diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/LockOn.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/LockOn.cs index 011b540..0dd2d1d 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/LockOn.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/LockOn.cs @@ -3,10 +3,10 @@ using PkmnLib.Plugin.Gen7.Scripts.Pokemon; namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "lock_on")] -public class LockOn : Script +public class LockOn : Script, IScriptOnSecondaryEffect { /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { target.Volatile.Add(new LockOnEffect(target)); } diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/LowKick.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/LowKick.cs index df96cc6..12c5036 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/LowKick.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/LowKick.cs @@ -1,10 +1,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "low_kick")] -public class LowKick : Script +public class LowKick : Script, IScriptChangeBasePower { /// - public override void ChangeBasePower(IExecutingMove move, IPokemon target, byte hit, ref ushort basePower) + public void ChangeBasePower(IExecutingMove move, IPokemon target, byte hit, ref ushort basePower) { basePower = target.WeightInKg switch { diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/LuckyChant.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/LuckyChant.cs index ad9b0c5..83e5dc0 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/LuckyChant.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/LuckyChant.cs @@ -3,10 +3,10 @@ using PkmnLib.Plugin.Gen7.Scripts.Pokemon; namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "lucky_chant")] -public class LuckyChant : Script +public class LuckyChant : Script, IScriptOnSecondaryEffect { /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { target.Volatile.Add(new LuckyChantEffect()); } diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/LunarDance.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/LunarDance.cs index 39874e8..bb00b4f 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/LunarDance.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/LunarDance.cs @@ -3,10 +3,10 @@ using PkmnLib.Plugin.Gen7.Scripts.Side; namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "lunar_dance")] -public class LunarDance : Script +public class LunarDance : Script, IScriptOnSecondaryEffect { /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { var battleData = move.User.BattleData; battleData?.BattleSide.VolatileScripts.Add(new LunarDanceEffect(battleData.Position)); diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/MagicRoom.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/MagicRoom.cs index f80ca04..5eebdfd 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/MagicRoom.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/MagicRoom.cs @@ -3,10 +3,10 @@ using PkmnLib.Plugin.Gen7.Scripts.Battle; namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "magic_room")] -public class MagicRoom : Script +public class MagicRoom : Script, IScriptOnSecondaryEffect { /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { var battleData = move.User.BattleData; if (battleData == null) diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/MagmaStorm.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/MagmaStorm.cs index 0982184..b82b48a 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/MagmaStorm.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/MagmaStorm.cs @@ -6,7 +6,7 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Moves; public class MagmaStorm : MultiHitMove { /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { target.Volatile.StackOrAdd("magma_storm", () => new MagmaStormEffect(target)); } diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/MagnetRise.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/MagnetRise.cs index cdcaeeb..f3f3fa5 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/MagnetRise.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/MagnetRise.cs @@ -3,10 +3,10 @@ using PkmnLib.Plugin.Gen7.Scripts.Pokemon; namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "magnet_rise")] -public class MagnetRise : Script +public class MagnetRise : Script, IScriptOnSecondaryEffect { /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { if (move.User.Volatile.Contains(ScriptUtils.ResolveName()) || move.User.ActiveAbility?.Name == "levitate") diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/MagneticFlux.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/MagneticFlux.cs index 762398b..fdbd0f9 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/MagneticFlux.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/MagneticFlux.cs @@ -1,10 +1,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "magnetic_flux")] -public class MagneticFlux : Script +public class MagneticFlux : Script, IScriptOnSecondaryEffect { /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { var battleData = move.User.BattleData; if (battleData is null) diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Magnitude.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Magnitude.cs index 22e4bda..b56a5b7 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Magnitude.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Magnitude.cs @@ -1,10 +1,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "magnitude")] -public class Magnitude : Script +public class Magnitude : Script, IScriptChangeBasePower { /// - public override void ChangeBasePower(IExecutingMove move, IPokemon target, byte hit, ref ushort basePower) + public void ChangeBasePower(IExecutingMove move, IPokemon target, byte hit, ref ushort basePower) { var battleData = move.User.BattleData; if (battleData == null) diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/MatBlock.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/MatBlock.cs index 848a34d..a509f00 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/MatBlock.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/MatBlock.cs @@ -3,10 +3,10 @@ using PkmnLib.Plugin.Gen7.Scripts.Side; namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "mat_block")] -public class MatBlock : Script +public class MatBlock : Script, IScriptOnSecondaryEffect { /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { var battleData = move.User.BattleData; if (battleData == null) diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/MeanLook.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/MeanLook.cs index a82b63b..4288ef8 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/MeanLook.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/MeanLook.cs @@ -3,10 +3,10 @@ using PkmnLib.Plugin.Gen7.Scripts.Pokemon; namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "mean_look")] -public class MeanLook : Script +public class MeanLook : Script, IScriptOnSecondaryEffect { /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { var targetEffect = target.Volatile.Add(new MeanLookEffectTarget()); if (targetEffect == null) diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Memento.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Memento.cs index c5fc20d..f2d1118 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Memento.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Memento.cs @@ -1,10 +1,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "memento")] -public class Memento : Script +public class Memento : Script, IScriptOnSecondaryEffect { /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { var evtBatch = new EventBatchId(); target.ChangeStatBoost(Statistic.Attack, -2, false, false, evtBatch); diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/MetalBurst.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/MetalBurst.cs index f2957f1..1f2e75a 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/MetalBurst.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/MetalBurst.cs @@ -27,13 +27,13 @@ public class MetalBurst : Script, IScriptOnBeforeTurnStart } [Script(ScriptCategory.Pokemon, "metal_burst_helper")] - private class MetalBurstHelper : Script + private class MetalBurstHelper : Script, IScriptOnIncomingHit { public IPokemon? LastAttacker { get; set; } public uint LastDamage { get; set; } /// - public override void OnIncomingHit(IExecutingMove move, IPokemon target, byte hit) + public void OnIncomingHit(IExecutingMove move, IPokemon target, byte hit) { if (move.UseMove.Category == MoveCategory.Status) return; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/MiracleEye.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/MiracleEye.cs index 6074edc..ec63815 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/MiracleEye.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/MiracleEye.cs @@ -3,10 +3,10 @@ using PkmnLib.Plugin.Gen7.Scripts.Pokemon; namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "miracle_eye")] -public class MiracleEye : Script +public class MiracleEye : Script, IScriptOnSecondaryEffect { /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { if (target.StatBoost.Evasion > 0) { diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/MirrorCoat.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/MirrorCoat.cs index 7f96768..33004ee 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/MirrorCoat.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/MirrorCoat.cs @@ -27,13 +27,13 @@ public class MirrorCoat : Script, IScriptOnBeforeTurnStart } [Script(ScriptCategory.Pokemon, "mirror_coat_helper")] - private class MirrorCoatHelper : Script + private class MirrorCoatHelper : Script, IScriptOnIncomingHit { public IPokemon? LastAttacker { get; set; } public uint LastDamage { get; set; } /// - public override void OnIncomingHit(IExecutingMove move, IPokemon target, byte hit) + public void OnIncomingHit(IExecutingMove move, IPokemon target, byte hit) { if (move.UseMove.Category != MoveCategory.Special) return; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Mist.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Mist.cs index c607628..80afbbf 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Mist.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Mist.cs @@ -3,10 +3,10 @@ using PkmnLib.Plugin.Gen7.Scripts.Side; namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "mist")] -public class Mist : Script +public class Mist : Script, IScriptOnSecondaryEffect { /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { var battleData = move.User.BattleData; if (battleData == null) diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/MistyTerrain.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/MistyTerrain.cs index 7050472..c5dd97d 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/MistyTerrain.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/MistyTerrain.cs @@ -1,10 +1,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "misty_terrain")] -public class MistyTerrain : Script +public class MistyTerrain : Script, IScriptOnSecondaryEffect { /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { var battle = move.User.BattleData?.Battle; if (battle is null) diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Moonlight.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Moonlight.cs index 562a532..1903eaa 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Moonlight.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Moonlight.cs @@ -3,10 +3,10 @@ using PkmnLib.Plugin.Gen7.Scripts.Weather; namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "moonlight")] -public class Moonlight : Script +public class Moonlight : Script, IScriptOnSecondaryEffect { /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { var battleData = move.User.BattleData; if (battleData == null) diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/MudSport.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/MudSport.cs index eff5941..20d95cf 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/MudSport.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/MudSport.cs @@ -3,10 +3,10 @@ using PkmnLib.Plugin.Gen7.Scripts.Battle; namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "mud_sport")] -public class MudSport : Script +public class MudSport : Script, IScriptOnSecondaryEffect { /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { var battle = move.User.BattleData?.Battle; if (battle == null) diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/MultiAttack.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/MultiAttack.cs index f537e27..546342e 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/MultiAttack.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/MultiAttack.cs @@ -1,10 +1,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "multi_attack")] -public class MultiAttack : Script +public class MultiAttack : Script, IScriptChangeMoveType { /// - public override void ChangeMoveType(IExecutingMove move, IPokemon target, byte hit, ref TypeIdentifier? moveType) + public void ChangeMoveType(IExecutingMove move, IPokemon target, byte hit, ref TypeIdentifier? moveType) { var item = move.User.HeldItem?.Name.ToString(); var typeLibrary = move.User.Library.StaticLibrary.Types; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/NaturalGift.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/NaturalGift.cs index 8d03beb..1c68780 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/NaturalGift.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/NaturalGift.cs @@ -1,10 +1,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "natural_gift")] -public class NaturalGift : Script +public class NaturalGift : Script, IScriptChangeMoveType, IScriptOnSecondaryEffect, IScriptChangeBasePower { /// - public override void ChangeBasePower(IExecutingMove move, IPokemon target, byte hit, ref ushort basePower) + public void ChangeBasePower(IExecutingMove move, IPokemon target, byte hit, ref ushort basePower) { var naturalGiftData = GetNaturalGiftData(move.User.HeldItem); if (naturalGiftData == null) @@ -16,7 +16,7 @@ public class NaturalGift : Script } /// - public override void ChangeMoveType(IExecutingMove move, IPokemon target, byte hit, ref TypeIdentifier? moveType) + public void ChangeMoveType(IExecutingMove move, IPokemon target, byte hit, ref TypeIdentifier? moveType) { var naturalGiftData = GetNaturalGiftData(move.User.HeldItem); if (naturalGiftData == null) @@ -34,7 +34,7 @@ public class NaturalGift : Script } /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { _ = move.User.RemoveHeldItem(); } diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Nightmare.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Nightmare.cs index 4006222..dedce94 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Nightmare.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Nightmare.cs @@ -4,10 +4,10 @@ using PkmnLib.Plugin.Gen7.Scripts.Status; namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "nightmare")] -public class Nightmare : Script +public class Nightmare : Script, IScriptOnSecondaryEffect { /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { if (!target.HasStatus(ScriptUtils.ResolveName())) { diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Outrage.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Outrage.cs index 0287f4c..df4c96c 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Outrage.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Outrage.cs @@ -3,10 +3,10 @@ using PkmnLib.Plugin.Gen7.Scripts.Pokemon; namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "outrage")] -public class Outrage : Script +public class Outrage : Script, IScriptOnSecondaryEffect { /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { if (move.User.Volatile.Contains()) return; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/PainSplit.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/PainSplit.cs index 5a94133..754fba5 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/PainSplit.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/PainSplit.cs @@ -1,10 +1,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "pain_split")] -public class PainSplit : Script +public class PainSplit : Script, IScriptOnSecondaryEffect { /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { var userHp = move.User.CurrentHealth; var targetHp = target.CurrentHealth; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/PartingShot.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/PartingShot.cs index dbc2bcf..ef5645c 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/PartingShot.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/PartingShot.cs @@ -5,10 +5,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Moves; /// then forces the user to switch out if at least one stat change was successful. /// [Script(ScriptCategory.Move, "parting_shot")] -public class PartingShot : Script +public class PartingShot : Script, IScriptOnSecondaryEffect { /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { var battleData = move.User.BattleData; if (battleData == null) diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Payback.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Payback.cs index 76eed68..850dbaa 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Payback.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Payback.cs @@ -4,10 +4,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Moves; /// Implements the secondary effect of Payback, which doubles the move's power if the user moves after the target. /// [Script(ScriptCategory.Move, "payback")] -public class Payback : Script +public class Payback : Script, IScriptChangeBasePower { /// - public override void ChangeBasePower(IExecutingMove move, IPokemon target, byte hit, ref ushort basePower) + public void ChangeBasePower(IExecutingMove move, IPokemon target, byte hit, ref ushort basePower) { var battleData = move.User.BattleData; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/PerishSong.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/PerishSong.cs index 2ba20a8..9d15423 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/PerishSong.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/PerishSong.cs @@ -6,10 +6,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Moves; /// Implements the secondary effect of Perish Song, which causes all Pokemon on the field to faint in 3 turns. /// [Script(ScriptCategory.Move, "perish_song")] -public class PerishSong : Script +public class PerishSong : Script, IScriptOnSecondaryEffect { /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { if (move.User.Volatile.Contains()) return; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/PetalDance.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/PetalDance.cs index 40661b8..b7168a0 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/PetalDance.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/PetalDance.cs @@ -7,10 +7,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Moves; /// then confuses the user. /// [Script(ScriptCategory.Move, "petal_dance")] -public class PetalDance : Script +public class PetalDance : Script, IScriptOnSecondaryEffect { /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { if (move.User.Volatile.Contains()) return; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/PhantomForce.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/PhantomForce.cs index 2d0b296..a36170a 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/PhantomForce.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/PhantomForce.cs @@ -7,7 +7,7 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Moves; /// and attacks on the second turn. /// [Script(ScriptCategory.Move, "phantom_force")] -public class PhantomForce : Script, IScriptPreventMove +public class PhantomForce : Script, IScriptPreventMove, IScriptOnSecondaryEffect { /// public void PreventMove(IExecutingMove move, ref bool prevent) @@ -25,7 +25,7 @@ public class PhantomForce : Script, IScriptPreventMove } /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { if (move.User.Volatile.Contains()) return; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/PoisonTail.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/PoisonTail.cs index fba3cea..486cb8c 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/PoisonTail.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/PoisonTail.cs @@ -3,10 +3,10 @@ using PkmnLib.Plugin.Gen7.Scripts.Status; namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "poison_tail")] -public class PoisonTail : Script +public class PoisonTail : Script, IScriptOnSecondaryEffect, IScriptChangeCriticalStage { /// - public override void ChangeCriticalStage(IExecutingMove move, IPokemon target, byte hit, ref byte stage) + public void ChangeCriticalStage(IExecutingMove move, IPokemon target, byte hit, ref byte stage) { if (stage == 255) return; @@ -14,7 +14,7 @@ public class PoisonTail : Script } /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { var battleData = move.User.BattleData; if (battleData == null) diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/PollenPuff.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/PollenPuff.cs index f9985fd..a5a24f3 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/PollenPuff.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/PollenPuff.cs @@ -3,7 +3,7 @@ using PkmnLib.Static.Moves; namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "pollen_puff")] -public class PollenPuff : Script +public class PollenPuff : Script, IScriptOnSecondaryEffect { /// /// @@ -22,7 +22,7 @@ public class PollenPuff : Script } /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { var battleData = move.User.BattleData; var targetBattleData = target.BattleData; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Powder.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Powder.cs index 8b34de1..0a2227e 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Powder.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Powder.cs @@ -3,10 +3,10 @@ using PkmnLib.Plugin.Gen7.Scripts.Pokemon; namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "powder")] -public class Powder : Script +public class Powder : Script, IScriptOnSecondaryEffect { /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { target.Volatile.Add(new PowderEffect()); } diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/PowerSplit.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/PowerSplit.cs index 0f8679b..629f3dd 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/PowerSplit.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/PowerSplit.cs @@ -1,10 +1,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "power_split")] -public class PowerSplit : Script +public class PowerSplit : Script, IScriptOnSecondaryEffect { /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { var user = move.User; var userStats = user.FlatStats; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/PowerSwap.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/PowerSwap.cs index a982f34..052ef05 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/PowerSwap.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/PowerSwap.cs @@ -1,10 +1,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "power_swap")] -public class PowerSwap : Script +public class PowerSwap : Script, IScriptOnSecondaryEffect { /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { var user = move.User; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/PowerTrick.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/PowerTrick.cs index 93904ea..e3132e9 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/PowerTrick.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/PowerTrick.cs @@ -3,10 +3,10 @@ using PkmnLib.Plugin.Gen7.Scripts.Pokemon; namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "power_trick")] -public class PowerTrick : Script +public class PowerTrick : Script, IScriptOnSecondaryEffect { /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { move.User.Volatile.Add(new PowerTrickEffect()); } diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Present.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Present.cs index 2f02ef1..2754ef5 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Present.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Present.cs @@ -3,7 +3,7 @@ using PkmnLib.Static.Moves; namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "present")] -public class Present : Script +public class Present : Script, IScriptOnSecondaryEffect, IScriptChangeBasePower { private bool _isHealing; private byte _basePower; @@ -40,13 +40,13 @@ public class Present : Script } /// - public override void ChangeBasePower(IExecutingMove move, IPokemon target, byte hit, ref ushort basePower) + public void ChangeBasePower(IExecutingMove move, IPokemon target, byte hit, ref ushort basePower) { basePower = _basePower; } /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { if (!_isHealing) return; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/PreventFoesExit.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/PreventFoesExit.cs index 1cbbeeb..8fbc944 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/PreventFoesExit.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/PreventFoesExit.cs @@ -3,10 +3,10 @@ using PkmnLib.Plugin.Gen7.Scripts.Pokemon; namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "prevent_foes_exit")] -public class PreventFoesExit : Script +public class PreventFoesExit : Script, IScriptOnSecondaryEffect { /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { move.User.Volatile.Add(new PreventFoesExitEffect()); } diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/ProtectionScript.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/ProtectionScript.cs index 9517551..50b2dfb 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/ProtectionScript.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/ProtectionScript.cs @@ -3,12 +3,12 @@ using PkmnLib.Plugin.Gen7.Scripts.Pokemon; namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "protect")] -public class ProtectionScript : Script +public class ProtectionScript : Script, IScriptOnSecondaryEffect { protected virtual Script GetEffectScript() => new ProtectionEffectScript(); /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { var battleData = target.BattleData; if (battleData == null) diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/PsychUp.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/PsychUp.cs index 26c6b77..91058b8 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/PsychUp.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/PsychUp.cs @@ -1,10 +1,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "psych_up")] -public class PsychUp : Script +public class PsychUp : Script, IScriptOnSecondaryEffect { /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { var targetStats = target.StatBoost; var userStats = move.User.StatBoost; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/PsychicTerrain.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/PsychicTerrain.cs index 9f05acf..b8a1ff7 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/PsychicTerrain.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/PsychicTerrain.cs @@ -1,10 +1,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "psychic_terrain")] -public class PsychicTerrain : Script +public class PsychicTerrain : Script, IScriptOnSecondaryEffect { /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { var battleData = move.User.BattleData; battleData?.Battle.SetTerrain(ScriptUtils.ResolveName()); diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/PsychoShift.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/PsychoShift.cs index 6de20d3..06b6366 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/PsychoShift.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/PsychoShift.cs @@ -1,10 +1,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "psycho_shift")] -public class PsychoShift : Script +public class PsychoShift : Script, IScriptOnSecondaryEffect { /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { var statusScript = move.User.StatusScript; var targetStatusScript = target.StatusScript; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Punishment.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Punishment.cs index a2a1db3..b105cbc 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Punishment.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Punishment.cs @@ -1,10 +1,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "punishment")] -public class Punishment : Script +public class Punishment : Script, IScriptChangeBasePower { /// - public override void ChangeBasePower(IExecutingMove move, IPokemon target, byte hit, ref ushort basePower) + public void ChangeBasePower(IExecutingMove move, IPokemon target, byte hit, ref ushort basePower) { if (move.User.BattleData == null) return; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Purify.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Purify.cs index 60f0c80..5362afe 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Purify.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Purify.cs @@ -1,10 +1,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "purify")] -public class Purify : Script +public class Purify : Script, IScriptOnSecondaryEffect { /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { if (target.StatusScript.IsEmpty) { diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Pursuit.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Pursuit.cs index 3b5b574..cba775a 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Pursuit.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Pursuit.cs @@ -3,7 +3,7 @@ using PkmnLib.Plugin.Gen7.Scripts.Pokemon; namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "pursuit")] -public class Pursuit : Script, IScriptOnBeforeTurnStart, IScriptOnAfterMove +public class Pursuit : Script, IScriptOnBeforeTurnStart, IScriptOnAfterMove, IScriptOnSecondaryEffect { /// public void OnBeforeTurnStart(ITurnChoice choice) @@ -13,7 +13,7 @@ public class Pursuit : Script, IScriptOnBeforeTurnStart, IScriptOnAfterMove } /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) => + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) => move.User.Volatile.Remove(); /// diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Quash.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Quash.cs index 92d581e..5f04bef 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Quash.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Quash.cs @@ -1,10 +1,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "quash")] -public class Quash : Script +public class Quash : Script, IScriptOnSecondaryEffect { /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { var battleData = move.User.BattleData; if (battleData == null) diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/QuickGuard.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/QuickGuard.cs index 5e7ae31..c5bb104 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/QuickGuard.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/QuickGuard.cs @@ -3,10 +3,10 @@ using PkmnLib.Plugin.Gen7.Scripts.Side; namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "quick_guard")] -public class QuickGuard : Script +public class QuickGuard : Script, IScriptOnSecondaryEffect { /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { move.User.BattleData?.BattleSide.VolatileScripts.Add(new QuickGuardEffect()); } diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Rage.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Rage.cs index 87c070a..32918a5 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Rage.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Rage.cs @@ -3,10 +3,10 @@ using PkmnLib.Plugin.Gen7.Scripts.Pokemon; namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "rage")] -public class Rage : Script +public class Rage : Script, IScriptOnSecondaryEffect { /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { move.User.Volatile.Add(new RageEffect()); } diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/RagePowder.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/RagePowder.cs index 8c1c120..85233b5 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/RagePowder.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/RagePowder.cs @@ -3,10 +3,10 @@ using PkmnLib.Plugin.Gen7.Scripts.Side; namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "rage_powder")] -public class RagePowder : Script +public class RagePowder : Script, IScriptOnSecondaryEffect { /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { var battleData = move.User.BattleData; if (battleData == null) diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/RainDance.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/RainDance.cs index 3ee2fa5..8acb1f5 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/RainDance.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/RainDance.cs @@ -3,10 +3,10 @@ using PkmnLib.Plugin.Gen7.Scripts.Weather; namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "rain_dance")] -public class RainDance : Script +public class RainDance : Script, IScriptOnSecondaryEffect { /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { var battleData = move.User.BattleData; if (battleData == null) diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/RapidSpin.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/RapidSpin.cs index 70b1dbe..63e1cbd 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/RapidSpin.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/RapidSpin.cs @@ -4,10 +4,10 @@ using PkmnLib.Plugin.Gen7.Scripts.Side; namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "rapid_spin")] -public class RapidSpin : Script +public class RapidSpin : Script, IScriptOnSecondaryEffect { /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { move.User.Volatile.Remove(); move.User.Volatile.Remove(); diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/RazorWind.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/RazorWind.cs index 13849ae..427a2b2 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/RazorWind.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/RazorWind.cs @@ -3,7 +3,7 @@ using PkmnLib.Plugin.Gen7.Scripts.Pokemon; namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "razor_wind")] -public class RazorWind : Script, IScriptPreventMove +public class RazorWind : Script, IScriptPreventMove, IScriptChangeCriticalStage { /// public void PreventMove(IExecutingMove move, ref bool prevent) @@ -17,7 +17,7 @@ public class RazorWind : Script, IScriptPreventMove } /// - public override void ChangeCriticalStage(IExecutingMove move, IPokemon target, byte hit, ref byte stage) + public void ChangeCriticalStage(IExecutingMove move, IPokemon target, byte hit, ref byte stage) { stage += 1; } diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Recoil.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Recoil.cs index bc5c291..28f7fc1 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Recoil.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Recoil.cs @@ -1,7 +1,7 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "recoil")] -public class Recoil : Script, IScriptOnInitialize +public class Recoil : Script, IScriptOnInitialize, IScriptOnSecondaryEffect { private float _recoilPercentage; @@ -15,7 +15,7 @@ public class Recoil : Script, IScriptOnInitialize } /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { if (_recoilPercentage <= 0) return; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Recycle.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Recycle.cs index 16b3b27..c45f8b7 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Recycle.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Recycle.cs @@ -1,10 +1,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "recycle")] -public class Recycle : Script +public class Recycle : Script, IScriptOnSecondaryEffect { /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { if (move.User.HeldItem is not null) { diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Reflect.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Reflect.cs index 6db2b6e..a3e8fe7 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Reflect.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Reflect.cs @@ -1,10 +1,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "reflect")] -public class Reflect : Script +public class Reflect : Script, IScriptOnSecondaryEffect { /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { var battleData = move.User.BattleData; if (battleData is null) diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/ReflectType.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/ReflectType.cs index d83527e..a42b411 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/ReflectType.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/ReflectType.cs @@ -1,10 +1,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "reflect_type")] -public class ReflectType : Script +public class ReflectType : Script, IScriptOnSecondaryEffect { /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { var targetTypes = target.Types; move.User.SetTypes(targetTypes); diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Refresh.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Refresh.cs index ce55400..1c9847e 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Refresh.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Refresh.cs @@ -1,10 +1,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "refresh")] -public class Refresh : Script +public class Refresh : Script, IScriptOnSecondaryEffect { /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { var userStatus = move.User.StatusScript; switch (userStatus.Script?.Name) diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/RequiresRecharge.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/RequiresRecharge.cs index 3c65a80..0425b28 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/RequiresRecharge.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/RequiresRecharge.cs @@ -3,10 +3,10 @@ using PkmnLib.Plugin.Gen7.Scripts.Pokemon; namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "requires_recharge")] -public class RequiresRecharge : Script +public class RequiresRecharge : Script, IScriptOnSecondaryEffect { /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { move.User.Volatile.Add(new RequiresRechargeEffect(move.User)); } diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/ResetTargetStats.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/ResetTargetStats.cs index 3a8f1b2..04b06f7 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/ResetTargetStats.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/ResetTargetStats.cs @@ -1,10 +1,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "reset_target_stats")] -public class ResetTargetStats : Script +public class ResetTargetStats : Script, IScriptOnSecondaryEffect { /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { EventBatchId eventBatchId = new(); foreach (Statistic stat in Enum.GetValues(typeof(Statistic))) diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Rest.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Rest.cs index 00da375..15938bc 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Rest.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Rest.cs @@ -3,10 +3,10 @@ using PkmnLib.Plugin.Gen7.Scripts.Status; namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "rest")] -public class Rest : Script +public class Rest : Script, IScriptOnSecondaryEffect { /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { if (move.User.HasStatus(ScriptUtils.ResolveName())) { diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Retaliate.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Retaliate.cs index 76df525..44ee978 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Retaliate.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Retaliate.cs @@ -1,10 +1,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "retaliate")] -public class Retaliate : Script +public class Retaliate : Script, IScriptChangeBasePower { /// - public override void ChangeBasePower(IExecutingMove move, IPokemon target, byte hit, ref ushort basePower) + public void ChangeBasePower(IExecutingMove move, IPokemon target, byte hit, ref ushort basePower) { var battleData = move.User.BattleData; if (battleData is null) diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Return.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Return.cs index 5e9fc2e..a859aef 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Return.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Return.cs @@ -1,10 +1,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "return")] -public class Return : Script +public class Return : Script, IScriptChangeBasePower { /// - public override void ChangeBasePower(IExecutingMove move, IPokemon target, byte hit, ref ushort basePower) + public void ChangeBasePower(IExecutingMove move, IPokemon target, byte hit, ref ushort basePower) { var friendship = move.User.Happiness; var power = friendship * 2 / 5; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/RevelationDance.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/RevelationDance.cs index 0d4239c..5c4ce73 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/RevelationDance.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/RevelationDance.cs @@ -1,10 +1,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "revelation_dance")] -public class RevelationDance : Script +public class RevelationDance : Script, IScriptChangeMoveType { /// - public override void ChangeMoveType(IExecutingMove move, IPokemon target, byte hit, ref TypeIdentifier? moveType) + public void ChangeMoveType(IExecutingMove move, IPokemon target, byte hit, ref TypeIdentifier? moveType) { // The type of the move is the same as the user's first type. var user = move.User; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/RolePlay.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/RolePlay.cs index 1e612fb..599fd0e 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/RolePlay.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/RolePlay.cs @@ -1,10 +1,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "role_play")] -public class RolePlay : Script +public class RolePlay : Script, IScriptOnSecondaryEffect { /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { var ability = target.ActiveAbility; if (ability is null || ability.HasFlag("cant_be_copied")) diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Roost.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Roost.cs index 42d3184..0e39095 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Roost.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Roost.cs @@ -3,10 +3,10 @@ using PkmnLib.Plugin.Gen7.Scripts.Pokemon; namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "roost")] -public class Roost : Script +public class Roost : Script, IScriptOnSecondaryEffect { /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { target.Heal(target.MaxHealth / 2); target.Volatile.Add(new RoostEffect()); diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Rototiller.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Rototiller.cs index bc0f514..f08a55c 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Rototiller.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Rototiller.cs @@ -1,10 +1,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "rototiller")] -public class Rototiller : Script +public class Rototiller : Script, IScriptOnSecondaryEffect { /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { var pokemon = move.Battle.Sides.SelectMany(x => x.Pokemon).WhereNotNull() .Where(x => x.Types.Any(y => y.Name == "grass")); diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Safeguard.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Safeguard.cs index b2229fc..4434602 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Safeguard.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Safeguard.cs @@ -1,10 +1,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "safeguard")] -public class Safeguard : Script +public class Safeguard : Script, IScriptOnSecondaryEffect { /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { target.BattleData?.BattleSide.VolatileScripts.Add(new Side.SafeguardEffect()); } diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/SecretPower.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/SecretPower.cs index 3dd7b62..b9e5f6d 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/SecretPower.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/SecretPower.cs @@ -4,10 +4,10 @@ using PkmnLib.Plugin.Gen7.Scripts.Utils; namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "secret_power")] -public class SecretPower : Script +public class SecretPower : Script, IScriptOnSecondaryEffect { /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { var environmentCategory = move.Battle.GetEnvironmentCategory(); switch (environmentCategory) diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/SetStatus.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/SetStatus.cs index 9c3dedb..fbd5a73 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/SetStatus.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/SetStatus.cs @@ -1,7 +1,7 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "set_status")] -public class SetStatus : Script, IScriptOnInitialize +public class SetStatus : Script, IScriptOnInitialize, IScriptOnSecondaryEffect { private string? _status; @@ -14,7 +14,7 @@ public class SetStatus : Script, IScriptOnInitialize } /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { if (_status == null) throw new Exception("Missing required parameter 'status'"); diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/SetWeather.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/SetWeather.cs index 66a5780..e2e56fc 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/SetWeather.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/SetWeather.cs @@ -1,7 +1,7 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "set_weather")] -public class SetWeather : Script, IScriptOnInitialize +public class SetWeather : Script, IScriptOnInitialize, IScriptOnSecondaryEffect { private string _weather = null!; private int _defaultTurns = 5; @@ -21,7 +21,7 @@ public class SetWeather : Script, IScriptOnInitialize } /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { target.BattleData?.Battle.SetWeather(_weather, _defaultTurns); } diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/ShadowForce.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/ShadowForce.cs index 15a203e..279233c 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/ShadowForce.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/ShadowForce.cs @@ -3,7 +3,7 @@ using PkmnLib.Plugin.Gen7.Scripts.Pokemon; namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "shadow_force")] -public class ShadowForce : Script, IScriptPreventMove +public class ShadowForce : Script, IScriptPreventMove, IScriptOnSecondaryEffect { /// public void PreventMove(IExecutingMove move, ref bool prevent) @@ -21,7 +21,7 @@ public class ShadowForce : Script, IScriptPreventMove } /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { if (move.User.Volatile.Contains()) return; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/ShellSmash.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/ShellSmash.cs index 1bac9e3..ac2f873 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/ShellSmash.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/ShellSmash.cs @@ -1,10 +1,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "shell_smash")] -public class ShellSmash : Script +public class ShellSmash : Script, IScriptOnSecondaryEffect { /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { EventBatchId eventBatchId = new(); move.User.ChangeStatBoost(Statistic.Attack, 2, true, false, eventBatchId); diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/ShoreUp.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/ShoreUp.cs index eccf3f1..493d3e8 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/ShoreUp.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/ShoreUp.cs @@ -3,10 +3,10 @@ using PkmnLib.Plugin.Gen7.Scripts.Weather; namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "shore_up")] -public class ShoreUp : Script +public class ShoreUp : Script, IScriptOnSecondaryEffect { /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { var healMod = 0.5f; if (move.Battle.WeatherName == ScriptUtils.ResolveName()) diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/SimpleBeam.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/SimpleBeam.cs index 4b367c8..12626b1 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/SimpleBeam.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/SimpleBeam.cs @@ -1,10 +1,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "simple_beam")] -public class SimpleBeam : Script +public class SimpleBeam : Script, IScriptOnSecondaryEffect { /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { if (!move.Battle.Library.StaticLibrary.Abilities.TryGet("simple", out var simpleAbility)) { diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Sketch.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Sketch.cs index a97cf67..2feb0f6 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Sketch.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Sketch.cs @@ -1,10 +1,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "sketch")] -public class Sketch : Script +public class Sketch : Script, IScriptOnSecondaryEffect { /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { // Defensive programming; If the move we're using is not the same as the one picked, something changed // our move to sketch. This should never happen, as moves are not allowed to change to sketch, but in the diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/SkillSwap.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/SkillSwap.cs index c800283..2f048a1 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/SkillSwap.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/SkillSwap.cs @@ -1,10 +1,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "skill_swap")] -public class SkillSwap : Script +public class SkillSwap : Script, IScriptOnSecondaryEffect { /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { var targetAbility = target.ActiveAbility; var userAbility = move.User.ActiveAbility; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/SkullBash.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/SkullBash.cs index 8d0f1b1..070e4f0 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/SkullBash.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/SkullBash.cs @@ -3,7 +3,7 @@ using PkmnLib.Plugin.Gen7.Scripts.Pokemon; namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "skull_bash")] -public class SkullBash : Script, IScriptPreventMove +public class SkullBash : Script, IScriptPreventMove, IScriptOnSecondaryEffect { /// public void PreventMove(IExecutingMove move, ref bool prevent) @@ -16,7 +16,7 @@ public class SkullBash : Script, IScriptPreventMove } /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { move.User.Volatile.Remove(); } diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/SkyAttack.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/SkyAttack.cs index df858c7..21a0f3a 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/SkyAttack.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/SkyAttack.cs @@ -3,7 +3,7 @@ using PkmnLib.Plugin.Gen7.Scripts.Pokemon; namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "sky_attack")] -public class SkyAttack : Script, IScriptPreventMove +public class SkyAttack : Script, IScriptPreventMove, IScriptOnSecondaryEffect { /// public void PreventMove(IExecutingMove move, ref bool prevent) @@ -15,7 +15,7 @@ public class SkyAttack : Script, IScriptPreventMove } /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { move.User.Volatile.Remove(); if (move.Battle.Random.EffectChance(30, move, target, hit)) diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/SmackDown.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/SmackDown.cs index ffb355e..0fe485d 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/SmackDown.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/SmackDown.cs @@ -3,10 +3,10 @@ using PkmnLib.Plugin.Gen7.Scripts.Pokemon; namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "smack_down")] -public class SmackDown : Script +public class SmackDown : Script, IScriptOnSecondaryEffect { /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { var battleData = target.BattleData; if (battleData == null) diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/SmellingSalts.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/SmellingSalts.cs index 8308ef7..52e0bb0 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/SmellingSalts.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/SmellingSalts.cs @@ -1,7 +1,7 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "smelling_salts")] -public class SmellingSalts : Script +public class SmellingSalts : Script, IScriptOnSecondaryEffect { /// public override void ChangeMoveDamage(IExecutingMove move, IPokemon target, byte hit, ref uint damage) @@ -14,7 +14,7 @@ public class SmellingSalts : Script } /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { // If the target is paralyzed, remove the paralysis if (target.HasStatus(ScriptUtils.ResolveName())) diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Snatch.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Snatch.cs index 307101d..13873f7 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Snatch.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Snatch.cs @@ -3,10 +3,10 @@ using PkmnLib.Plugin.Gen7.Scripts.Battle; namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "snatch")] -public class Snatch : Script +public class Snatch : Script, IScriptOnSecondaryEffect { /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { move.Battle.Volatile.Add(new SnatchEffect()); var snatchEffect = move.Battle.Volatile.Get(); diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Snore.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Snore.cs index a86967b..001f01e 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Snore.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Snore.cs @@ -3,7 +3,7 @@ using PkmnLib.Plugin.Gen7.Scripts.Pokemon; namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "snore")] -public class Snore : Script, IScriptFailMove +public class Snore : Script, IScriptFailMove, IScriptOnSecondaryEffect { /// public void FailMove(IExecutingMove move, ref bool fail) @@ -13,7 +13,7 @@ public class Snore : Script, IScriptFailMove } /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { target.Volatile.Add(new FlinchEffect()); } diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Soak.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Soak.cs index 349db9e..770250e 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Soak.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Soak.cs @@ -1,10 +1,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "soak")] -public class Soak : Script +public class Soak : Script, IScriptOnSecondaryEffect { /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { if (target.ActiveAbility?.Name == "multitype") { diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/SparklingAria.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/SparklingAria.cs index 76f70d6..8c3ff1b 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/SparklingAria.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/SparklingAria.cs @@ -1,10 +1,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "sparkling_aria")] -public class SparklingAria : Script +public class SparklingAria : Script, IScriptOnSecondaryEffect { /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { if (target.HasStatus(ScriptUtils.ResolveName())) target.ClearStatus(); diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/SpeedSwap.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/SpeedSwap.cs index c7b015c..9eb057c 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/SpeedSwap.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/SpeedSwap.cs @@ -1,10 +1,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "speed_swap")] -public class SpeedSwap : Script +public class SpeedSwap : Script, IScriptOnSecondaryEffect { /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { var userSpeed = move.User.FlatStats.Speed; var targetSpeed = target.FlatStats.Speed; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/SpiderWeb.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/SpiderWeb.cs index 74debda..bcd8b24 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/SpiderWeb.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/SpiderWeb.cs @@ -3,10 +3,10 @@ using PkmnLib.Plugin.Gen7.Scripts.Pokemon; namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "spider_web")] -public class SpiderWeb : Script +public class SpiderWeb : Script, IScriptOnSecondaryEffect { /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { move.User.Volatile.Add(new SpiderWebEffect()); var effect = move.User.Volatile.Get(); diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Spikes.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Spikes.cs index 38ad885..fed7478 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Spikes.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Spikes.cs @@ -3,10 +3,10 @@ using PkmnLib.Plugin.Gen7.Scripts.Side; namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "spikes")] -public class Spikes : Script +public class Spikes : Script, IScriptOnSecondaryEffect { /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { target.BattleData?.Battle.Volatile.Add(new SpikesEffect()); } diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/SpitUp.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/SpitUp.cs index cc6eed4..d9993f1 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/SpitUp.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/SpitUp.cs @@ -3,10 +3,10 @@ using PkmnLib.Plugin.Gen7.Scripts.Pokemon; namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "spit_up")] -public class SpitUp : Script +public class SpitUp : Script, IScriptChangeBasePower { /// - public override void ChangeBasePower(IExecutingMove move, IPokemon target, byte hit, ref ushort basePower) + public void ChangeBasePower(IExecutingMove move, IPokemon target, byte hit, ref ushort basePower) { var stockpileEffect = move.User.Volatile.Get(); if (stockpileEffect == null || stockpileEffect.StockpileCount == 0) diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Spite.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Spite.cs index 32e0e22..b66978f 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Spite.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Spite.cs @@ -1,10 +1,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "spite")] -public class Spite : Script +public class Spite : Script, IScriptOnSecondaryEffect { /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { var lastMoveChoiceByTarget = move.Battle.PreviousTurnChoices.SelectMany(x => x).Reverse() .SkipWhile(x => x != move.MoveChoice).OfType().FirstOrDefault(x => x.User == target); diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/SplinteredStormshards.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/SplinteredStormshards.cs index 1059b7a..11f6c00 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/SplinteredStormshards.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/SplinteredStormshards.cs @@ -1,10 +1,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "splintered_stormshards")] -public class SplinteredStormshards : Script +public class SplinteredStormshards : Script, IScriptOnSecondaryEffect { /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { move.Battle.SetTerrain(null); } diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Spotlight.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Spotlight.cs index 38385a8..b269d6a 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Spotlight.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Spotlight.cs @@ -3,10 +3,10 @@ using PkmnLib.Plugin.Gen7.Scripts.Side; namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "spotlight")] -public class Spotlight : Script +public class Spotlight : Script, IScriptOnSecondaryEffect { /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { var battleData = target.BattleData; battleData?.BattleSide.VolatileScripts.Add(new SpotlightEffect(battleData.BattleSide, battleData.Position)); diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/StealthRock.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/StealthRock.cs index 290279e..e70a6a7 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/StealthRock.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/StealthRock.cs @@ -3,10 +3,10 @@ using PkmnLib.Plugin.Gen7.Scripts.Side; namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "stealth_rock")] -public class StealthRock : Script +public class StealthRock : Script, IScriptOnSecondaryEffect { /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { target.BattleData?.BattleSide.VolatileScripts.Add(new StealthRockEffect()); } diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/StickyWeb.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/StickyWeb.cs index 0a8ac18..cebae80 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/StickyWeb.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/StickyWeb.cs @@ -3,10 +3,10 @@ using PkmnLib.Plugin.Gen7.Scripts.Side; namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "sticky_web")] -public class StickyWeb : Script +public class StickyWeb : Script, IScriptOnSecondaryEffect { /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { target.BattleData?.BattleSide.VolatileScripts.Add(new StickyWebEffect()); } diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Stockpile.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Stockpile.cs index 4563c20..cf655e5 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Stockpile.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Stockpile.cs @@ -3,10 +3,10 @@ using PkmnLib.Plugin.Gen7.Scripts.Pokemon; namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "stockpile")] -public class Stockpile : Script +public class Stockpile : Script, IScriptOnSecondaryEffect { /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { move.User.Volatile.StackOrAdd(ScriptUtils.ResolveName(), () => new StockpileEffect()); } diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/StompingTantrum.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/StompingTantrum.cs index 5c7805d..3a8183b 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/StompingTantrum.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/StompingTantrum.cs @@ -1,10 +1,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "stomping_tantrum")] -public class StompingTantrum : Script +public class StompingTantrum : Script, IScriptChangeBasePower { /// - public override void ChangeBasePower(IExecutingMove move, IPokemon target, byte hit, ref ushort basePower) + public void ChangeBasePower(IExecutingMove move, IPokemon target, byte hit, ref ushort basePower) { var lastMoveChoice = move.Battle.PreviousTurnChoices.Reverse().Skip(1).SelectMany(x => x.Reverse()) .OfType().FirstOrDefault(x => x.User == move.User); diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/StormThrow.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/StormThrow.cs index 9a770c3..83103e1 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/StormThrow.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/StormThrow.cs @@ -1,10 +1,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "storm_throw")] -public class StormThrow : Script +public class StormThrow : Script, IScriptChangeCriticalStage { /// - public override void ChangeCriticalStage(IExecutingMove move, IPokemon target, byte hit, ref byte stage) + public void ChangeCriticalStage(IExecutingMove move, IPokemon target, byte hit, ref byte stage) { // Storm Throw always results in a critical hit // Setting to any value higher than 2 will always result in a critical hit. diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/StrengthSap.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/StrengthSap.cs index a3393b8..0f94949 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/StrengthSap.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/StrengthSap.cs @@ -1,10 +1,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "strength_sap")] -public class StrengthSap : Script +public class StrengthSap : Script, IScriptOnSecondaryEffect { /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { var attack = target.BoostedStats.Attack; if (!target.ChangeStatBoost(Statistic.Attack, -1, false, false)) diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Struggle.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Struggle.cs index f57a94a..140819b 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Struggle.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Struggle.cs @@ -1,7 +1,8 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "struggle")] -public class Struggle : Script, IScriptChangeNumberOfHits +public class Struggle : Script, IScriptChangeNumberOfHits, IScriptIsInvulnerableToMove, IScriptChangeEffectiveness, + IScriptOnSecondaryEffect { /// public void ChangeNumberOfHits(IMoveChoice choice, ref byte numberOfHits) @@ -10,19 +11,19 @@ public class Struggle : Script, IScriptChangeNumberOfHits } /// - public override void IsInvulnerableToMove(IExecutingMove move, IPokemon target, ref bool invulnerable) + public void IsInvulnerableToMove(IExecutingMove move, IPokemon target, ref bool invulnerable) { invulnerable = false; } /// - public override void ChangeEffectiveness(IExecutingMove move, IPokemon target, byte hit, ref float effectiveness) + public void ChangeEffectiveness(IExecutingMove move, IPokemon target, byte hit, ref float effectiveness) { effectiveness = 1; } /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { var damage = move.User.MaxHealth / 4; if (damage == 0) diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/SubstituteMove.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/SubstituteMove.cs index 2f8816c..5010de2 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/SubstituteMove.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/SubstituteMove.cs @@ -4,10 +4,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Moves; /// Named 'SubstituteMove' to avoid namespace conflicts with NSubstitute. /// [Script(ScriptCategory.Move, "substitute")] -public class SubstituteMove : Script +public class SubstituteMove : Script, IScriptOnSecondaryEffect { /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { var hp = move.User.MaxHealth / 4; if (move.User.CurrentHealth > hp) diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Superpower.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Superpower.cs index 93ae7ca..a73f75b 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Superpower.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Superpower.cs @@ -1,10 +1,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "superpower")] -public class Superpower : Script +public class Superpower : Script, IScriptOnSecondaryEffect { /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { EventBatchId eventBatch = new(); move.User.ChangeStatBoost(Statistic.Attack, -1, true, false, eventBatch); diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Swagger.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Swagger.cs index f9cc2ad..1b4b3c6 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Swagger.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Swagger.cs @@ -1,10 +1,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "swagger")] -public class Swagger : Script +public class Swagger : Script, IScriptOnSecondaryEffect { /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { target.ChangeStatBoost(Statistic.Attack, 2, false, false); target.Volatile.Add(new Pokemon.Confusion()); diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Swallow.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Swallow.cs index c92c6a3..e599b7f 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Swallow.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Swallow.cs @@ -3,10 +3,10 @@ using PkmnLib.Plugin.Gen7.Scripts.Pokemon; namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "swallow")] -public class Swallow : Script +public class Swallow : Script, IScriptOnSecondaryEffect { /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { var stockpileEffect = move.User.Volatile.Get(); if (stockpileEffect == null || stockpileEffect.StockpileCount == 0) diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Switcheroo.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Switcheroo.cs index ec22ef1..0a9a8fc 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Switcheroo.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Switcheroo.cs @@ -1,10 +1,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "switcheroo")] -public class Switcheroo : Script +public class Switcheroo : Script, IScriptOnSecondaryEffect { /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { var targetHeldItem = target.HeldItem; var userHeldItem = move.User.HeldItem; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Synthesis.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Synthesis.cs index 7a90e2f..f405fcf 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Synthesis.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Synthesis.cs @@ -1,10 +1,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "synthesis")] -public class Synthesis : Script +public class Synthesis : Script, IScriptOnSecondaryEffect { /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { var healModifier = 0.5f; var weatherName = target.BattleData?.Battle.WeatherName; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Tailwind.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Tailwind.cs index 14265c6..16454b4 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Tailwind.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Tailwind.cs @@ -1,10 +1,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "tailwind")] -public class Tailwind : Script +public class Tailwind : Script, IScriptOnSecondaryEffect { /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { move.User.BattleData?.BattleSide.VolatileScripts.Add(new Side.TailwindEffect()); } diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Taunt.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Taunt.cs index 07de5ab..331c00f 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Taunt.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Taunt.cs @@ -3,10 +3,10 @@ using PkmnLib.Plugin.Gen7.Scripts.Pokemon; namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "taunt")] -public class Taunt : Script +public class Taunt : Script, IScriptOnSecondaryEffect { /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { target.Volatile.Add(new TauntEffect(4)); } diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/TechnoBlast.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/TechnoBlast.cs index 5d51b57..8a33066 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/TechnoBlast.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/TechnoBlast.cs @@ -1,10 +1,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "techno_blast")] -public class TechnoBlast : Script +public class TechnoBlast : Script, IScriptChangeMoveType { /// - public override void ChangeMoveType(IExecutingMove move, IPokemon target, byte hit, ref TypeIdentifier? moveType) + public void ChangeMoveType(IExecutingMove move, IPokemon target, byte hit, ref TypeIdentifier? moveType) { var heldItem = move.User.HeldItem; if (heldItem == null) diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Telekinesis.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Telekinesis.cs index 48fdde5..2831e50 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Telekinesis.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Telekinesis.cs @@ -3,10 +3,10 @@ using PkmnLib.Plugin.Gen7.Scripts.Pokemon; namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "telekinesis")] -public class Telekinesis : Script +public class Telekinesis : Script, IScriptOnSecondaryEffect { /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { if (move.Battle.Volatile.Contains()) { diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/ThousandArrows.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/ThousandArrows.cs index 197af4c..79d439c 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/ThousandArrows.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/ThousandArrows.cs @@ -3,17 +3,17 @@ using PkmnLib.Plugin.Gen7.Scripts.Pokemon; namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "thousand_arrows")] -public class ThousandArrows : Script +public class ThousandArrows : Script, IScriptChangeEffectiveness, IScriptOnSecondaryEffect { /// - public override void ChangeEffectiveness(IExecutingMove move, IPokemon target, byte hit, ref float effectiveness) + public void ChangeEffectiveness(IExecutingMove move, IPokemon target, byte hit, ref float effectiveness) { if (effectiveness == 0) effectiveness = 1; } /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { target.Volatile.Add(new ThousandArrowsEffect()); target.Volatile.Remove(); diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/ThousandWaves.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/ThousandWaves.cs index 8d3324d..31cb79b 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/ThousandWaves.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/ThousandWaves.cs @@ -3,10 +3,10 @@ using PkmnLib.Plugin.Gen7.Scripts.Pokemon; namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "thousand_waves")] -public class ThousandWaves : Script +public class ThousandWaves : Script, IScriptOnSecondaryEffect { /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { target.Volatile.Add(new ThousandWavesEffect()); } diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Thrash.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Thrash.cs index 629bcb8..db45729 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Thrash.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Thrash.cs @@ -7,10 +7,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Moves; /// then confuses the user. /// [Script(ScriptCategory.Move, "thrash")] -public class Thrash : Script +public class Thrash : Script, IScriptOnSecondaryEffect { /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { if (move.User.Volatile.Contains()) return; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/ThroatChop.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/ThroatChop.cs index 6666f7a..a6dc476 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/ThroatChop.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/ThroatChop.cs @@ -3,10 +3,10 @@ using PkmnLib.Plugin.Gen7.Scripts.Pokemon; namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "throat_chop")] -public class ThroatChop : Script +public class ThroatChop : Script, IScriptOnSecondaryEffect { /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { target.Volatile.Add(new ThroatChopEffect()); } diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/ThunderFang.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/ThunderFang.cs index 4b77fe1..217ff54 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/ThunderFang.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/ThunderFang.cs @@ -4,10 +4,10 @@ using PkmnLib.Plugin.Gen7.Scripts.Status; namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "thunder_fang")] -public class ThunderFang : Script +public class ThunderFang : Script, IScriptOnSecondaryEffect { /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { var random = move.Battle.Random; if (random.EffectChance(10, move, target, hit)) diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/TopsyTurvy.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/TopsyTurvy.cs index ddc0403..17b2845 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/TopsyTurvy.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/TopsyTurvy.cs @@ -1,10 +1,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "topsy_turvy")] -public class TopsyTurvy : Script +public class TopsyTurvy : Script, IScriptOnSecondaryEffect { /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { EventBatchId batchId = new(); var hasChanged = false; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Torment.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Torment.cs index b2195b5..39be51d 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Torment.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Torment.cs @@ -1,10 +1,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "torment")] -public class Torment : Script +public class Torment : Script, IScriptOnSecondaryEffect { /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { var lastTargetChoice = move.Battle.PreviousTurnChoices.SelectMany(x => x).Reverse().OfType() .FirstOrDefault(x => x.User == target); diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/ToxicSpikes.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/ToxicSpikes.cs index c300b7b..89d1685 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/ToxicSpikes.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/ToxicSpikes.cs @@ -3,10 +3,10 @@ using PkmnLib.Plugin.Gen7.Scripts.Side; namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "toxic_spikes")] -public class ToxicSpikes : Script +public class ToxicSpikes : Script, IScriptOnSecondaryEffect { /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { target.BattleData?.Battle.Volatile.Add(new ToxicSpikesEffect()); } diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/ToxicThread.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/ToxicThread.cs index 4ebb695..76b9e5d 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/ToxicThread.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/ToxicThread.cs @@ -1,10 +1,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "toxic_thread")] -public class ToxicThread : Script +public class ToxicThread : Script, IScriptOnSecondaryEffect { /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { target.SetStatus(ScriptUtils.ResolveName(), move.User); target.ChangeStatBoost(Statistic.Speed, -1, false, false); diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/TriAttack.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/TriAttack.cs index 02ea6cb..5ce926e 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/TriAttack.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/TriAttack.cs @@ -1,10 +1,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "tri_attack")] -public class TriAttack : Script +public class TriAttack : Script, IScriptOnSecondaryEffect { /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { var random = move.Battle.Random; if (!random.EffectChance(20, move, target, hit)) diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/TrickOrTreat.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/TrickOrTreat.cs index 354fc87..2b5e4b2 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/TrickOrTreat.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/TrickOrTreat.cs @@ -1,10 +1,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "trick_or_treat")] -public class TrickOrTreat : Script +public class TrickOrTreat : Script, IScriptOnSecondaryEffect { /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { var library = move.Battle.Library.StaticLibrary.Types; if (!library.TryGetTypeIdentifier("ghost", out var ghostType)) diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/TrickRoom.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/TrickRoom.cs index 7a2d011..d60a229 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/TrickRoom.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/TrickRoom.cs @@ -3,10 +3,10 @@ using PkmnLib.Plugin.Gen7.Scripts.Battle; namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "trick_room")] -public class TrickRoom : Script +public class TrickRoom : Script, IScriptOnSecondaryEffect { /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { move.Battle.Volatile.Add(new TrickRoomEffect()); } diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/TripleKick.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/TripleKick.cs index a00d130..8636924 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/TripleKick.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/TripleKick.cs @@ -1,7 +1,7 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "triple_kick")] -public class TripleKick : Script, IScriptChangeNumberOfHits +public class TripleKick : Script, IScriptChangeNumberOfHits, IScriptChangeBasePower { /// public void ChangeNumberOfHits(IMoveChoice choice, ref byte numberOfHits) @@ -10,7 +10,7 @@ public class TripleKick : Script, IScriptChangeNumberOfHits } /// - public override void ChangeBasePower(IExecutingMove move, IPokemon target, byte hit, ref ushort basePower) + public void ChangeBasePower(IExecutingMove move, IPokemon target, byte hit, ref ushort basePower) { basePower *= (ushort)(hit + 1); } diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/TrumpCard.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/TrumpCard.cs index 454bc19..e7b7904 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/TrumpCard.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/TrumpCard.cs @@ -1,10 +1,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "trump_card")] -public class TrumpCard : Script +public class TrumpCard : Script, IScriptChangeBasePower { /// - public override void ChangeBasePower(IExecutingMove move, IPokemon target, byte hit, ref ushort basePower) + public void ChangeBasePower(IExecutingMove move, IPokemon target, byte hit, ref ushort basePower) { var remainingPp = move.ChosenMove.CurrentPp; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Twineedle.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Twineedle.cs index c94fba7..bc5ec72 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Twineedle.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Twineedle.cs @@ -1,13 +1,13 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "twineedle")] -public class Twineedle : Script, IScriptChangeNumberOfHits +public class Twineedle : Script, IScriptChangeNumberOfHits, IScriptOnSecondaryEffect { /// public void ChangeNumberOfHits(IMoveChoice choice, ref byte numberOfHits) => numberOfHits = 2; /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { if (move.Battle.Random.EffectChance(20, move, target, hit)) { diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/UTurn.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/UTurn.cs index eb64e12..62ab3ba 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/UTurn.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/UTurn.cs @@ -1,10 +1,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "u_turn")] -public class UTurn : Script +public class UTurn : Script, IScriptOnSecondaryEffect { /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { var battleData = move.User.BattleData; battleData?.BattleSide.SwapPokemon(battleData.Position, null); diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Uproar.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Uproar.cs index 2ac6757..13750c8 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Uproar.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Uproar.cs @@ -3,10 +3,10 @@ using PkmnLib.Plugin.Gen7.Scripts.Battle; namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "uproar")] -public class Uproar : Script +public class Uproar : Script, IScriptOnSecondaryEffect { /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { var battle = move.Battle; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/VenomDrench.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/VenomDrench.cs index b0e0e99..b9661a0 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/VenomDrench.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/VenomDrench.cs @@ -1,10 +1,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "venom_drench")] -public class VenomDrench : Script +public class VenomDrench : Script, IScriptOnSecondaryEffect { /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { if (!target.HasStatus(ScriptUtils.ResolveName()) && !target.HasStatus(ScriptUtils.ResolveName())) diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/VoltTackle.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/VoltTackle.cs index bdd3bf9..6b394fa 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/VoltTackle.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/VoltTackle.cs @@ -1,10 +1,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "volt_tackle")] -public class VoltTackle : Script +public class VoltTackle : Script, IScriptOnSecondaryEffect { /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { var hitData = move.GetHitData(target, hit); var recoilDamage = (uint)(hitData.Damage * (1f / 3f)); diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/WakeUpSlap.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/WakeUpSlap.cs index 2abef9f..067d6dd 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/WakeUpSlap.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/WakeUpSlap.cs @@ -1,10 +1,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "wake_up_slap")] -public class WakeUpSlap : Script +public class WakeUpSlap : Script, IScriptOnSecondaryEffect, IScriptChangeBasePower { /// - public override void ChangeBasePower(IExecutingMove move, IPokemon target, byte hit, ref ushort basePower) + public void ChangeBasePower(IExecutingMove move, IPokemon target, byte hit, ref ushort basePower) { if (target.HasStatus(ScriptUtils.ResolveName())) { @@ -13,7 +13,7 @@ public class WakeUpSlap : Script } /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { // Wake up the target if it is asleep if (target.HasStatus(ScriptUtils.ResolveName())) diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/WaterSport.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/WaterSport.cs index d20d64d..67472a4 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/WaterSport.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/WaterSport.cs @@ -3,10 +3,10 @@ using PkmnLib.Plugin.Gen7.Scripts.Battle; namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "water_sport")] -public class WaterSport : Script +public class WaterSport : Script, IScriptOnSecondaryEffect { /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { var effect = move.Battle.Volatile.Add(new WaterSportEffect()); if (effect?.Script is WaterSportEffect waterSportEffect) diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/WeatherBall.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/WeatherBall.cs index 17ef486..8be8ccc 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/WeatherBall.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/WeatherBall.cs @@ -1,10 +1,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "weather_ball")] -public class WeatherBall : Script +public class WeatherBall : Script, IScriptChangeMoveType, IScriptChangeBasePower { /// - public override void ChangeBasePower(IExecutingMove move, IPokemon target, byte hit, ref ushort basePower) + public void ChangeBasePower(IExecutingMove move, IPokemon target, byte hit, ref ushort basePower) { if (move.Battle.WeatherName is not null) { @@ -13,8 +13,7 @@ public class WeatherBall : Script } /// - public override void ChangeMoveType(IExecutingMove move, IPokemon target, byte hit, - ref TypeIdentifier? typeIdentifier) + public void ChangeMoveType(IExecutingMove move, IPokemon target, byte hit, ref TypeIdentifier? typeIdentifier) { var weather = move.Battle.WeatherName; var typeLibrary = move.Battle.Library.StaticLibrary.Types; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Whirlpool.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Whirlpool.cs index a6cc9b7..0bff1cc 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Whirlpool.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Whirlpool.cs @@ -3,10 +3,10 @@ using PkmnLib.Plugin.Gen7.Scripts.Pokemon; namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "whirlpool")] -public class Whirlpool : Script +public class Whirlpool : Script, IScriptOnSecondaryEffect { /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { var userVolatile = move.User.Volatile.Add(new WhirlpoolEffect()); if (userVolatile?.Script is WhirlpoolEffect whirlpoolEffect) diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/WideGuard.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/WideGuard.cs index ff75e0f..b3a4948 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/WideGuard.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/WideGuard.cs @@ -3,10 +3,10 @@ using PkmnLib.Plugin.Gen7.Scripts.Side; namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "wide_guard")] -public class WideGuard : Script +public class WideGuard : Script, IScriptOnSecondaryEffect { /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { if (move.Battle.ChoiceQueue?.HasNext() != true) { diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Wish.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Wish.cs index 9a0793e..bcea5c5 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Wish.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Wish.cs @@ -1,10 +1,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "wish")] -public class Wish : Script +public class Wish : Script, IScriptOnSecondaryEffect { /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { move.User.Volatile.Add(new Pokemon.WishEffect()); } diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/WonderRoom.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/WonderRoom.cs index ce41679..c729fc3 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/WonderRoom.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/WonderRoom.cs @@ -3,10 +3,10 @@ using PkmnLib.Plugin.Gen7.Scripts.Battle; namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "wonder_room")] -public class WonderRoom : Script +public class WonderRoom : Script, IScriptOnSecondaryEffect { /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { move.Battle.Volatile.Add(new WonderRoomEffect()); } diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/WorrySeed.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/WorrySeed.cs index 39095d7..1fe4ebd 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/WorrySeed.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/WorrySeed.cs @@ -1,10 +1,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "worry_seed")] -public class WorrySeed : Script +public class WorrySeed : Script, IScriptOnSecondaryEffect { /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { var abilityLibrary = move.Battle.Library.StaticLibrary.Abilities; if (!abilityLibrary.TryGet("insomnia", out var ability)) diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Yawn.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Yawn.cs index d01c56c..5bbf03f 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Yawn.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Yawn.cs @@ -3,10 +3,10 @@ using PkmnLib.Plugin.Gen7.Scripts.Pokemon; namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "yawn")] -public class Yawn : Script +public class Yawn : Script, IScriptOnSecondaryEffect { /// - public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { target.Volatile.Add(new YawnEffect()); } diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/BeakBlastEffect.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/BeakBlastEffect.cs index 5088504..c0389d0 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/BeakBlastEffect.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/BeakBlastEffect.cs @@ -1,10 +1,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Pokemon; [Script(ScriptCategory.Pokemon, "beak_blast_effect")] -public class BeakBlastEffect : Script +public class BeakBlastEffect : Script, IScriptOnIncomingHit { /// - public override void OnIncomingHit(IExecutingMove move, IPokemon target, byte hit) + public void OnIncomingHit(IExecutingMove move, IPokemon target, byte hit) { if (move.GetHitData(target, hit).IsContact) { diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/BideEffect.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/BideEffect.cs index 28cce8f..4c71ce1 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, IScriptForceTurnSelection +public class BideEffect : Script, IScriptForceTurnSelection, IScriptOnIncomingHit { private readonly IPokemon? _owner; public byte Turns; @@ -20,7 +20,7 @@ public class BideEffect : Script, IScriptForceTurnSelection } /// - public override void OnIncomingHit(IExecutingMove move, IPokemon target, byte hit) + public void OnIncomingHit(IExecutingMove move, IPokemon target, byte hit) { HitBy.Add(move.User); } diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/CounterHelperEffect.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/CounterHelperEffect.cs index d1491a5..5e6af27 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/CounterHelperEffect.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/CounterHelperEffect.cs @@ -3,13 +3,13 @@ using PkmnLib.Static.Moves; namespace PkmnLib.Plugin.Gen7.Scripts.Pokemon; [Script(ScriptCategory.Pokemon, "counterhelper")] -public class CounterHelperEffect : Script +public class CounterHelperEffect : Script, IScriptOnIncomingHit { public IPokemon? LastHitBy { get; private set; } public uint LastDamage { get; private set; } /// - public override void OnIncomingHit(IExecutingMove move, IPokemon target, byte hit) + public void OnIncomingHit(IExecutingMove move, IPokemon target, byte hit) { if (move.UseMove.Category == MoveCategory.Physical) { diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/FocusPunchEffect.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/FocusPunchEffect.cs index 0eccd0b..90c34ea 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/FocusPunchEffect.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/FocusPunchEffect.cs @@ -1,12 +1,12 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Pokemon; [Script(ScriptCategory.Pokemon, "focus_punch")] -public class FocusPunchEffect : Script +public class FocusPunchEffect : Script, IScriptOnIncomingHit { public bool WasHit { get; private set; } /// - public override void OnIncomingHit(IExecutingMove move, IPokemon target, byte hit) + public void OnIncomingHit(IExecutingMove move, IPokemon target, byte hit) { WasHit = true; target.BattleData?.Battle.EventHook.Invoke(new DialogEvent("focus_punch_lost_focus", diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/GrudgeEffect.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/GrudgeEffect.cs index b263d8e..e1be0cd 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/GrudgeEffect.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/GrudgeEffect.cs @@ -1,12 +1,12 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Pokemon; [Script(ScriptCategory.Pokemon, "grudge")] -public class GrudgeEffect : Script +public class GrudgeEffect : Script, IScriptOnIncomingHit { private ILearnedMove? _lastMove; /// - public override void OnIncomingHit(IExecutingMove move, IPokemon target, byte hit) + public void OnIncomingHit(IExecutingMove move, IPokemon target, byte hit) { _lastMove = move.ChosenMove; } diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/HelpingHandEffect.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/HelpingHandEffect.cs index 7e8ff5f..6e0394a 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/HelpingHandEffect.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/HelpingHandEffect.cs @@ -1,9 +1,9 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Pokemon; -public class HelpingHandEffect : Script +public class HelpingHandEffect : Script, IScriptChangeBasePower { /// - public override void ChangeBasePower(IExecutingMove move, IPokemon target, byte hit, ref ushort basePower) => + public void ChangeBasePower(IExecutingMove move, IPokemon target, byte hit, ref ushort basePower) => basePower = basePower.MultiplyOrMax(1.5f); /// diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/IceBallEffect.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/IceBallEffect.cs index 7ab619a..73490e2 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, IScriptForceTurnSelection +public class IceBallEffect : Script, IScriptForceTurnSelection, IScriptOnMoveMiss { private readonly IPokemon _owner; private readonly StringKey _moveName; @@ -24,7 +24,7 @@ public class IceBallEffect : Script, IScriptForceTurnSelection } /// - public override void OnMoveMiss(IExecutingMove move, IPokemon target) + public void OnMoveMiss(IExecutingMove move, IPokemon target) { RemoveSelf(); } diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/IncreasedCriticalStage.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/IncreasedCriticalStage.cs index 60517a4..969e148 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/IncreasedCriticalStage.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/IncreasedCriticalStage.cs @@ -1,10 +1,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Pokemon; [Script(ScriptCategory.Pokemon, "increased_critical_stage")] -public class IncreasedCriticalStage : Script +public class IncreasedCriticalStage : Script, IScriptChangeCriticalStage { /// - public override void ChangeCriticalStage(IExecutingMove move, IPokemon target, byte hit, ref byte stage) + public void ChangeCriticalStage(IExecutingMove move, IPokemon target, byte hit, ref byte stage) { // Extreme edge case, should never happen if (stage == byte.MaxValue) diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/IngrainEffect.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/IngrainEffect.cs index bc4345a..7585dc9 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/IngrainEffect.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/IngrainEffect.cs @@ -1,7 +1,7 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Pokemon; [Script(ScriptCategory.Pokemon, "ingrain")] -public class IngrainEffect : Script +public class IngrainEffect : Script, IScriptFailIncomingMove { private readonly IPokemon _owner; @@ -24,7 +24,7 @@ public class IngrainEffect : Script } /// - public override void FailIncomingMove(IExecutingMove move, IPokemon target, ref bool fail) + public void FailIncomingMove(IExecutingMove move, IPokemon target, ref bool fail) { if (move.UseMove.Name == "roar" || move.UseMove.Name == "whirlwind") { diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/LaserFocusEffect.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/LaserFocusEffect.cs index 6e69b85..021a3b5 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/LaserFocusEffect.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/LaserFocusEffect.cs @@ -1,10 +1,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Pokemon; [Script(ScriptCategory.Pokemon, "laser_focus")] -public class LaserFocusEffect : Script +public class LaserFocusEffect : Script, IScriptChangeCriticalStage { /// - public override void ChangeCriticalStage(IExecutingMove move, IPokemon target, byte hit, ref byte stage) + public void ChangeCriticalStage(IExecutingMove move, IPokemon target, byte hit, ref byte stage) { stage = 100; RemoveSelf(); diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/LuckyChantEffect.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/LuckyChantEffect.cs index 40f7656..4a87325 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/LuckyChantEffect.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/LuckyChantEffect.cs @@ -1,11 +1,11 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Pokemon; -public class LuckyChantEffect : Script +public class LuckyChantEffect : Script, IScriptBlockCriticalHit { private int _turnsLeft = 5; /// - public override void BlockCriticalHit(IExecutingMove move, IPokemon target, byte hit, ref bool block) + public void BlockCriticalHit(IExecutingMove move, IPokemon target, byte hit, ref bool block) { block = true; } diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/MagnetRiseEffect.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/MagnetRiseEffect.cs index bb09407..15109f0 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/MagnetRiseEffect.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/MagnetRiseEffect.cs @@ -1,12 +1,12 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Pokemon; [Script(ScriptCategory.Pokemon, "magnet_rise")] -public class MagnetRiseEffect : Script +public class MagnetRiseEffect : Script, IScriptChangeEffectiveness { private int _turnsRemaining = 5; /// - public override void ChangeEffectiveness(IExecutingMove move, IPokemon target, byte hit, ref float effectiveness) + public void ChangeEffectiveness(IExecutingMove move, IPokemon target, byte hit, ref float effectiveness) { if (move.UseMove.MoveType.Name == "ground") { diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/PursuitEffect.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/PursuitEffect.cs index d4b3405..4f467f0 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/PursuitEffect.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/PursuitEffect.cs @@ -40,10 +40,10 @@ public class PursuitEffect : Script } [Script(ScriptCategory.Pokemon, "pursuit_double_power")] - private class PursuitDoublePowerEffect : Script + private class PursuitDoublePowerEffect : Script, IScriptChangeBasePower { /// - public override void ChangeBasePower(IExecutingMove move, IPokemon target, byte hit, ref ushort basePower) + public void ChangeBasePower(IExecutingMove move, IPokemon target, byte hit, ref ushort basePower) { basePower = basePower.MultiplyOrMax(2); } diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/RageEffect.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/RageEffect.cs index fe28a19..6e5b44d 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/RageEffect.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/RageEffect.cs @@ -1,10 +1,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Pokemon; [Script(ScriptCategory.Pokemon, "rage")] -public class RageEffect : Script +public class RageEffect : Script, IScriptOnIncomingHit { /// - public override void OnIncomingHit(IExecutingMove move, IPokemon target, byte hit) + public void OnIncomingHit(IExecutingMove move, IPokemon target, byte hit) { move.User.ChangeStatBoost(Statistic.Attack, 1, true, false); } diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/ShellTrapHelper.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/ShellTrapHelper.cs index 3f4c9a4..a1d301d 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/ShellTrapHelper.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/ShellTrapHelper.cs @@ -3,12 +3,12 @@ using PkmnLib.Static.Moves; namespace PkmnLib.Plugin.Gen7.Scripts.Pokemon; [Script(ScriptCategory.Pokemon, "shell_trap")] -public class ShellTrapHelper : Script +public class ShellTrapHelper : Script, IScriptOnIncomingHit { public bool HasHit { get; private set; } /// - public override void OnIncomingHit(IExecutingMove move, IPokemon target, byte hit) + public void OnIncomingHit(IExecutingMove move, IPokemon target, byte hit) { if (move.UseMove.Category == MoveCategory.Physical) HasHit = true; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/TelekinesisEffect.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/TelekinesisEffect.cs index 80e3140..11dbc2e 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/TelekinesisEffect.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/TelekinesisEffect.cs @@ -1,7 +1,7 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Pokemon; [Script(ScriptCategory.Pokemon, "telekinesis")] -public class TelekinesisEffect : Script +public class TelekinesisEffect : Script, IScriptChangeIncomingEffectiveness { /// public override void ChangeIncomingAccuracy(IExecutingMove executingMove, IPokemon target, byte hitIndex, @@ -17,7 +17,7 @@ public class TelekinesisEffect : Script } /// - public override void ChangeIncomingEffectiveness(IExecutingMove executingMove, IPokemon target, byte hitIndex, + public void ChangeIncomingEffectiveness(IExecutingMove executingMove, IPokemon target, byte hitIndex, ref float effectiveness) { if (executingMove.UseMove.MoveType.Name == "ground") diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Side/AromaVeilEffect.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Side/AromaVeilEffect.cs index 3a57889..f2733c4 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Side/AromaVeilEffect.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Side/AromaVeilEffect.cs @@ -3,7 +3,7 @@ using PkmnLib.Static.Moves; namespace PkmnLib.Plugin.Gen7.Scripts.Side; [Script(ScriptCategory.Side, "aroma_veil")] -public class AromaVeilEffect : Script +public class AromaVeilEffect : Script, IScriptFailIncomingMove { private HashSet _placers = new(); @@ -17,7 +17,7 @@ public class AromaVeilEffect : Script } /// - public override void FailIncomingMove(IExecutingMove move, IPokemon target, ref bool fail) + public void FailIncomingMove(IExecutingMove move, IPokemon target, ref bool fail) { if (move.UseMove.HasFlag("mental") && move.UseMove.Category == MoveCategory.Status) fail = true; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Side/QuickGuardEffect.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Side/QuickGuardEffect.cs index 9710e85..07cf0df 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Side/QuickGuardEffect.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Side/QuickGuardEffect.cs @@ -1,10 +1,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Side; -public class QuickGuardEffect : Script +public class QuickGuardEffect : Script, IScriptIsInvulnerableToMove { /// /// - public override void IsInvulnerableToMove(IExecutingMove move, IPokemon target, ref bool invulnerable) + public void IsInvulnerableToMove(IExecutingMove move, IPokemon target, ref bool invulnerable) { if (move.UseMove.Priority > 0) invulnerable = true; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Terrain/ElectricTerrain.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Terrain/ElectricTerrain.cs index 2c2d6f8..3c16760 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Terrain/ElectricTerrain.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Terrain/ElectricTerrain.cs @@ -1,13 +1,13 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Terrain; [Script(ScriptCategory.Terrain, "electric_terrain")] -public class ElectricTerrain : Script +public class ElectricTerrain : Script, IScriptChangeBasePower { private static bool IsAffectedByTerrain(IPokemon pokemon) => !pokemon.IsFloating; /// - public override void ChangeBasePower(IExecutingMove move, IPokemon target, byte hit, ref ushort basePower) + public void ChangeBasePower(IExecutingMove move, IPokemon target, byte hit, ref ushort basePower) { if (!IsAffectedByTerrain(move.User)) return; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Terrain/GrassyTerrain.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Terrain/GrassyTerrain.cs index 1174d52..d0013d6 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Terrain/GrassyTerrain.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Terrain/GrassyTerrain.cs @@ -1,13 +1,13 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Terrain; [Script(ScriptCategory.Terrain, "grassy_terrain")] -public class GrassyTerrain : Script +public class GrassyTerrain : Script, IScriptChangeBasePower { private static bool IsAffectedByTerrain(IPokemon pokemon) => !pokemon.IsFloating; /// - public override void ChangeBasePower(IExecutingMove move, IPokemon target, byte hit, ref ushort basePower) + public void ChangeBasePower(IExecutingMove move, IPokemon target, byte hit, ref ushort basePower) { // It boosts the power of Grass-type moves used by affected Pokémon by 50% (regardless of whether the target of // the move is affected by Grassy Terrain). diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Terrain/MistyTerrain.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Terrain/MistyTerrain.cs index 86ee828..042d22e 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Terrain/MistyTerrain.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Terrain/MistyTerrain.cs @@ -1,13 +1,13 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Terrain; [Script(ScriptCategory.Terrain, "misty_terrain")] -public class MistyTerrain : Script +public class MistyTerrain : Script, IScriptChangeBasePower { private static bool IsAffectedByTerrain(IPokemon pokemon) => !pokemon.IsFloating; /// - public override void ChangeBasePower(IExecutingMove move, IPokemon target, byte hit, ref ushort basePower) + public void ChangeBasePower(IExecutingMove move, IPokemon target, byte hit, ref ushort basePower) { if (!IsAffectedByTerrain(target)) return; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Terrain/PsychicTerrain.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Terrain/PsychicTerrain.cs index 62cb6f9..62bad21 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Terrain/PsychicTerrain.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Terrain/PsychicTerrain.cs @@ -1,13 +1,13 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Terrain; [Script(ScriptCategory.Terrain, "psychic_terrain")] -public class PsychicTerrain : Script +public class PsychicTerrain : Script, IScriptIsInvulnerableToMove, IScriptChangeBasePower { private static bool IsAffectedByTerrain(IPokemon pokemon) => !pokemon.IsFloating; /// - public override void ChangeBasePower(IExecutingMove move, IPokemon target, byte hit, ref ushort basePower) + public void ChangeBasePower(IExecutingMove move, IPokemon target, byte hit, ref ushort basePower) { if (!IsAffectedByTerrain(move.User)) return; @@ -22,7 +22,7 @@ public class PsychicTerrain : Script } /// - public override void IsInvulnerableToMove(IExecutingMove move, IPokemon target, ref bool invulnerable) + public void IsInvulnerableToMove(IExecutingMove move, IPokemon target, ref bool invulnerable) { if (!IsAffectedByTerrain(target)) return; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Weather/HarshSunlight.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Weather/HarshSunlight.cs index 06a1f8c..7e894e8 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Weather/HarshSunlight.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Weather/HarshSunlight.cs @@ -6,7 +6,7 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Weather; /// Bulbapedia - Harsh Sunlight /// [Script(ScriptCategory.Weather, "harsh_sunlight")] -public class HarshSunlight : Script, ILimitedTurnsScript +public class HarshSunlight : Script, ILimitedTurnsScript, IScriptChangeBasePower { private int? _duration; @@ -30,7 +30,7 @@ public class HarshSunlight : Script, ILimitedTurnsScript } /// - public override void ChangeBasePower(IExecutingMove move, IPokemon target, byte hit, ref ushort basePower) + public void ChangeBasePower(IExecutingMove move, IPokemon target, byte hit, ref ushort basePower) { var hitType = move.GetHitData(target, hit).Type; if (hitType?.Name == "fire" || move.UseMove.Name == "hydro_steam") diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Weather/Rain.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Weather/Rain.cs index 3d1d479..2fd57c2 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Weather/Rain.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Weather/Rain.cs @@ -1,7 +1,7 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Weather; [Script(ScriptCategory.Weather, "rain")] -public class Rain : Script, ILimitedTurnsScript +public class Rain : Script, ILimitedTurnsScript, IScriptChangeBasePower { private int? _duration; @@ -25,7 +25,7 @@ public class Rain : Script, ILimitedTurnsScript } /// - public override void ChangeBasePower(IExecutingMove move, IPokemon target, byte hit, ref ushort basePower) + public void ChangeBasePower(IExecutingMove move, IPokemon target, byte hit, ref ushort basePower) { var hitType = move.GetHitData(target, hit).Type; if (hitType?.Name == "water") diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Weather/Sandstorm.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Weather/Sandstorm.cs index 214ad74..0a2d52a 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Weather/Sandstorm.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Weather/Sandstorm.cs @@ -1,7 +1,7 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Weather; [Script(ScriptCategory.Weather, "sandstorm")] -public class Sandstorm : Script +public class Sandstorm : Script, IScriptChangeBasePower { /// public override void OnEndTurn(IScriptSource owner, IBattle battle) @@ -33,7 +33,7 @@ public class Sandstorm : Script } /// - public override void ChangeBasePower(IExecutingMove move, IPokemon target, byte hit, ref ushort basePower) + public void ChangeBasePower(IExecutingMove move, IPokemon target, byte hit, ref ushort basePower) { if (move.UseMove.Name == "solar_beam") basePower /= 2;