From 4499927551a0a60a77b1f329e7388451bd9a7242 Mon Sep 17 00:00:00 2001 From: Deukhoofd Date: Sat, 5 Jul 2025 11:30:18 +0200 Subject: [PATCH] Further work on the script interface rework --- .../BattleFlow/MoveTurnExecutor.cs | 6 +- PkmnLib.Dynamic/BattleFlow/TurnRunner.cs | 12 +- PkmnLib.Dynamic/Models/BattleSide.cs | 10 +- PkmnLib.Dynamic/Models/Pokemon.cs | 15 +- PkmnLib.Dynamic/ScriptHandling/Script.cs | 311 ++++++++++-------- PkmnLib.Dynamic/ScriptHandling/ScriptSet.cs | 6 +- .../Scripts/Abilities/Aftermath.cs | 4 +- .../Scripts/Abilities/Anticipation.cs | 4 +- .../Scripts/Abilities/ArenaTrap.cs | 6 +- .../Scripts/Abilities/AromaVeil.cs | 6 +- .../Scripts/Abilities/Battery.cs | 6 +- .../Scripts/Abilities/Berserk.cs | 4 +- .../Scripts/Abilities/CheekPouch.cs | 4 +- .../Scripts/Abilities/DeltaStreamAbility.cs | 4 +- .../Scripts/Abilities/DesolateLandAbility.cs | 4 +- .../Scripts/Abilities/Disguise.cs | 4 +- .../Scripts/Abilities/Download.cs | 4 +- .../Scripts/Abilities/Drizzle.cs | 4 +- .../Scripts/Abilities/Drought.cs | 4 +- .../Scripts/Abilities/ElectricSurge.cs | 4 +- .../Scripts/Abilities/EmergencyExit.cs | 4 +- .../Scripts/Abilities/Forecast.cs | 4 +- .../Scripts/Abilities/Forewarn.cs | 4 +- .../Scripts/Abilities/Frisk.cs | 4 +- .../Scripts/Abilities/Gluttony.cs | 4 +- .../Scripts/Abilities/GrassySurge.cs | 4 +- .../Scripts/Abilities/Illusion.cs | 4 +- .../Scripts/Abilities/InnardsOut.cs | 4 +- .../Scripts/Abilities/Intimidate.cs | 4 +- .../Scripts/Abilities/Klutz.cs | 4 +- .../Scripts/Abilities/MagicGuard.cs | 4 +- .../Scripts/Abilities/MagmaArmor.cs | 4 +- .../Scripts/Abilities/MagnetPull.cs | 6 +- .../Scripts/Abilities/MistySurge.cs | 4 +- .../Scripts/Abilities/NaturalCure.cs | 4 +- .../Scripts/Abilities/PowerOfAlchemy.cs | 4 +- .../Scripts/Abilities/PrimordialSeaAbility.cs | 4 +- .../Scripts/Abilities/PsychicSurge.cs | 4 +- .../Scripts/Abilities/Regenerator.cs | 4 +- .../Scripts/Abilities/SandStream.cs | 4 +- .../Scripts/Abilities/Schooling.cs | 4 +- .../Scripts/Abilities/ShadowTag.cs | 6 +- .../Scripts/Abilities/ShieldsDown.cs | 4 +- .../Scripts/Abilities/SlowStart.cs | 4 +- .../Scripts/Abilities/SnowWarning.cs | 4 +- .../Scripts/Abilities/SoulHeart.cs | 4 +- .../Abilities/SuppressWeatherAbility.cs | 4 +- .../Scripts/Abilities/WonderGuard.cs | 4 +- .../Scripts/Abilities/ZenMode.cs | 4 +- .../Scripts/Battle/FairyLockEffect.cs | 6 +- .../Scripts/Battle/MagicRoomEffect.cs | 4 +- .../Scripts/Battle/WaterSportEffect.cs | 4 +- .../Scripts/Moves/DoomDesire.cs | 4 +- .../Scripts/Moves/DreamEater.cs | 4 +- .../Scripts/Moves/KingsShield.cs | 2 +- .../Scripts/Moves/ProtectionScript.cs | 2 +- .../Scripts/Pokemon/AutotomizeEffect.cs | 4 +- .../Scripts/Pokemon/BideEffect.cs | 4 +- .../Scripts/Pokemon/BindEffect.cs | 6 +- .../Scripts/Pokemon/BlockEffect.cs | 6 +- .../Scripts/Pokemon/ChargeBounceEffect.cs | 5 +- .../Scripts/Pokemon/ChargeFlyEffect.cs | 5 +- .../Scripts/Pokemon/ChargeSkyDropEffect.cs | 5 +- .../Scripts/Pokemon/DestinyBondEffect.cs | 4 +- .../Scripts/Pokemon/DigEffect.cs | 4 +- .../Scripts/Pokemon/DiveEffect.cs | 4 +- .../Scripts/Pokemon/EmbargoEffect.cs | 6 +- .../Scripts/Pokemon/EndureEffect.cs | 4 +- .../Scripts/Pokemon/FireSpinEffect.cs | 6 +- .../Scripts/Pokemon/GrudgeEffect.cs | 4 +- .../Scripts/Pokemon/InfestationEffect.cs | 6 +- .../Scripts/Pokemon/IngrainEffect.cs | 7 +- .../Scripts/Pokemon/MagmaStormEffect.cs | 6 +- .../Scripts/Pokemon/MeanLookEffect.cs | 6 +- .../Scripts/Pokemon/PhantomForceCharge.cs | 4 +- .../Scripts/Pokemon/PowderEffect.cs | 4 +- .../Scripts/Pokemon/PreventFoesExitEffect.cs | 6 +- .../Scripts/Pokemon/ProtectionEffectScript.cs | 4 +- .../Scripts/Pokemon/PursuitEffect.cs | 4 +- .../Scripts/Pokemon/ShadowForceCharge.cs | 4 +- .../Scripts/Pokemon/SpiderWebEffect.cs | 6 +- .../Scripts/Pokemon/StockpileEffect.cs | 4 +- .../Scripts/Pokemon/SubstituteEffect.cs | 4 +- .../Scripts/Pokemon/ThousandWavesEffect.cs | 6 +- .../Scripts/Pokemon/WhirlpoolEffect.cs | 6 +- .../DoublePowerIfTargetDamagedInTurnData.cs | 4 +- .../Scripts/Side/HealingWishEffect.cs | 4 +- .../Scripts/Side/LunarDanceEffect.cs | 4 +- .../Scripts/Side/MatBlockEffect.cs | 4 +- .../Scripts/Side/SpikesEffect.cs | 6 +- .../Scripts/Side/StealthRockEffect.cs | 4 +- .../Scripts/Side/StickyWebEffect.cs | 4 +- .../Scripts/Side/ToxicSpikesEffect.cs | 4 +- .../Scripts/Status/BadlyPoisoned.cs | 2 +- .../Scripts/Status/Poisoned.cs | 2 +- .../Scripts/Weather/DesolateLands.cs | 6 +- .../Scripts/Weather/HarshSunlight.cs | 2 +- .../Scripts/Weather/PrimordialSea.cs | 6 +- .../Scripts/Weather/Rain.cs | 2 +- .../Scripts/Weather/StrongWinds.cs | 4 +- 100 files changed, 418 insertions(+), 352 deletions(-) diff --git a/PkmnLib.Dynamic/BattleFlow/MoveTurnExecutor.cs b/PkmnLib.Dynamic/BattleFlow/MoveTurnExecutor.cs index 24e82cc..5538989 100644 --- a/PkmnLib.Dynamic/BattleFlow/MoveTurnExecutor.cs +++ b/PkmnLib.Dynamic/BattleFlow/MoveTurnExecutor.cs @@ -220,8 +220,10 @@ public static class MoveTurnExecutor } var blockIncomingHit = false; - target.RunScriptHook(x => x.BlockIncomingHit(executingMove, target, hitIndex, ref blockIncomingHit)); - executingMove.RunScriptHook(x => x.BlockOutgoingHit(executingMove, target, hitIndex, ref blockIncomingHit)); + target.RunScriptHookInterface(x => + x.BlockIncomingHit(executingMove, target, hitIndex, ref blockIncomingHit)); + executingMove.RunScriptHookInterface(x => + x.BlockOutgoingHit(executingMove, target, hitIndex, ref blockIncomingHit)); if (blockIncomingHit) break; if (executingMove.GetHitData(target, hitIndex).HasFailed) diff --git a/PkmnLib.Dynamic/BattleFlow/TurnRunner.cs b/PkmnLib.Dynamic/BattleFlow/TurnRunner.cs index 0791750..4ded1e0 100644 --- a/PkmnLib.Dynamic/BattleFlow/TurnRunner.cs +++ b/PkmnLib.Dynamic/BattleFlow/TurnRunner.cs @@ -111,7 +111,8 @@ public static class TurnRunner if (battleData == null) return; var preventSwitch = false; - fleeChoice.RunScriptHook(script => script.PreventSelfSwitch(fleeChoice, ref preventSwitch)); + fleeChoice.RunScriptHookInterface(script => + script.PreventSelfSwitch(fleeChoice, ref preventSwitch)); if (preventSwitch) return; foreach (var side in battle.Sides) @@ -120,7 +121,8 @@ public static class TurnRunner continue; foreach (var pokemon in side.Pokemon.WhereNotNull()) { - pokemon.RunScriptHook(script => script.PreventOpponentSwitch(fleeChoice, ref preventSwitch)); + pokemon.RunScriptHookInterface(script => + script.PreventOpponentSwitch(fleeChoice, ref preventSwitch)); if (preventSwitch) return; } @@ -140,7 +142,8 @@ public static class TurnRunner return; var preventFlee = false; - fleeChoice.RunScriptHook(script => script.PreventSelfRunAway(fleeChoice, ref preventFlee)); + fleeChoice.RunScriptHookInterface(script => + script.PreventSelfRunAway(fleeChoice, ref preventFlee)); if (preventFlee) return; @@ -150,7 +153,8 @@ public static class TurnRunner continue; foreach (var pokemon in side.Pokemon.WhereNotNull()) { - pokemon.RunScriptHook(script => script.PreventOpponentRunAway(fleeChoice, ref preventFlee)); + pokemon.RunScriptHookInterface(script => + script.PreventOpponentRunAway(fleeChoice, ref preventFlee)); if (preventFlee) return; } diff --git a/PkmnLib.Dynamic/Models/BattleSide.cs b/PkmnLib.Dynamic/Models/BattleSide.cs index a5f1071..092f803 100644 --- a/PkmnLib.Dynamic/Models/BattleSide.cs +++ b/PkmnLib.Dynamic/Models/BattleSide.cs @@ -261,7 +261,7 @@ public class BattleSideImpl : ScriptSource, IBattleSide var oldPokemon = _pokemon[position]; if (oldPokemon is not null) { - oldPokemon.RunScriptHook(script => script.OnSwitchOut(oldPokemon, position)); + oldPokemon.RunScriptHookInterface(script => script.OnSwitchOut(oldPokemon, position)); oldPokemon.RunScriptHook(script => script.OnRemove()); oldPokemon.SetOnBattlefield(false); } @@ -272,7 +272,7 @@ public class BattleSideImpl : ScriptSource, IBattleSide pokemon.SetOnBattlefield(true); pokemon.SetBattleSidePosition(position); Battle.EventHook.Invoke(new SwitchEvent(Index, position, pokemon)); - pokemon.RunScriptHook(script => script.OnSwitchIn(pokemon, position)); + pokemon.RunScriptHookInterface(script => script.OnSwitchIn(pokemon, position)); foreach (var side in Battle.Sides) { @@ -286,9 +286,11 @@ public class BattleSideImpl : ScriptSource, IBattleSide scripts.Clear(); opponent.GetOwnScripts(scripts); - opponent.RunScriptHook(script => script.OnOpponentSwitchIn(pokemon, position)); + opponent.RunScriptHookInterface(script => + script.OnOpponentSwitchIn(pokemon, position)); } - side.RunScriptHook(script => script.OnOpponentSwitchIn(pokemon, position)); + side.RunScriptHookInterface(script => + script.OnOpponentSwitchIn(pokemon, position)); } } else diff --git a/PkmnLib.Dynamic/Models/Pokemon.cs b/PkmnLib.Dynamic/Models/Pokemon.cs index 4f4d4c3..6a3c19c 100644 --- a/PkmnLib.Dynamic/Models/Pokemon.cs +++ b/PkmnLib.Dynamic/Models/Pokemon.cs @@ -861,7 +861,8 @@ public class PokemonImpl : ScriptSource, IPokemon if (BattleData != null) { var prevented = false; - this.RunScriptHook(script => script.PreventHeldItemConsume(this, HeldItem, ref prevented)); + this.RunScriptHookInterface(script => + script.PreventHeldItemConsume(this, HeldItem, ref prevented)); if (prevented) return false; BattleData.MarkItemAsConsumed(HeldItem); @@ -879,7 +880,7 @@ public class PokemonImpl : ScriptSource, IPokemon { // TODO: actually consume the item - this.RunScriptHook(x => x.OnAfterItemConsume(this, item)); + this.RunScriptHookInterface(x => x.OnAfterItemConsume(this, item)); } /// @@ -1055,7 +1056,8 @@ public class PokemonImpl : ScriptSource, IPokemon if (BattleData is not null && !forceDamage) { var dmg = damage; - this.RunScriptHook(script => script.ChangeIncomingDamage(this, source, ref dmg)); + this.RunScriptHookInterface(script => + script.ChangeIncomingDamage(this, source, ref dmg)); damage = dmg; } if (damage == 0) @@ -1075,7 +1077,8 @@ public class PokemonImpl : ScriptSource, IPokemon BatchId = batchId, }); // And allow scripts to execute. - this.RunScriptHook(script => script.OnDamage(this, source, CurrentHealth, newHealth)); + this.RunScriptHookInterface(script => + script.OnDamage(this, source, CurrentHealth, newHealth)); } CurrentHealth = newHealth; @@ -1104,10 +1107,10 @@ public class PokemonImpl : ScriptSource, IPokemon BattleData.Battle.EventHook.Invoke(new FaintEvent(this)); // Allow scripts to trigger based on the faint. - this.RunScriptHook(script => script.OnFaint(this, source)); + this.RunScriptHookInterface(script => script.OnFaint(this, source)); foreach (var ally in BattleData.BattleSide.Pokemon.WhereNotNull().Where(x => x != this)) { - ally.RunScriptHook(script => script.OnAllyFaint(ally, this)); + ally.RunScriptHookInterface(script => script.OnAllyFaint(ally, this)); } // Make sure the OnRemove script is run. diff --git a/PkmnLib.Dynamic/ScriptHandling/Script.cs b/PkmnLib.Dynamic/ScriptHandling/Script.cs index 6ba74f6..2e4caa9 100644 --- a/PkmnLib.Dynamic/ScriptHandling/Script.cs +++ b/PkmnLib.Dynamic/ScriptHandling/Script.cs @@ -39,14 +39,6 @@ public abstract class Script : IDeepCloneable /// public virtual ScriptCategory Category => this.ResolveCategory(); - /// - /// This function is ran when a volatile effect is added while that volatile effect already is - /// in place. Instead of adding the volatile effect twice, it will execute this function instead. - /// - public virtual void Stack() - { - } - /// /// This function is ran when this script stops being in effect, and is removed from its owner. /// @@ -61,101 +53,6 @@ public abstract class Script : IDeepCloneable { } - /// - /// This function prevents the Pokemon it is attached to from being able to switch out. - /// - public virtual void PreventSelfSwitch(ISwitchChoice choice, ref bool prevent) - { - } - - /// - /// This function allows the prevention of switching for any opponent. - /// - public virtual void PreventOpponentSwitch(ISwitchChoice choice, ref bool prevent) - { - } - - /// - /// This function is called on a move and its parents when the move fails. - /// - public virtual void OnFail(IPokemon pokemon) - { - } - - /// - /// This function is called on a script when an opponent fails. - /// - /// - public virtual void OnOpponentFail(IPokemon pokemon) - { - } - - /// - /// This function allows preventing the running away of the Pokemon its attached to - /// - public virtual void PreventSelfRunAway(IFleeChoice choice, ref bool prevent) - { - } - - /// - /// This function prevents a Pokemon on another side than where its attached to from running away. - /// - public virtual void PreventOpponentRunAway(IFleeChoice choice, ref bool prevent) - { - } - - /// - /// This function is triggered on a Pokemon and its parents when the given Pokemon takes damage. - /// - public virtual void OnDamage(IPokemon pokemon, DamageSource source, uint oldHealth, uint newHealth) - { - } - - /// - /// This function is triggered on a Pokemon and its parents when the given Pokemon faints. - /// - public virtual void OnFaint(IPokemon pokemon, DamageSource source) - { - } - - /// - /// This function is triggered on a Pokemon when an ally Pokemon faints. - /// - public virtual void OnAllyFaint(IPokemon ally, IPokemon faintedPokemon) - { - } - - /// - /// This function is triggered on a Pokemon and its parents when the given Pokemon switches out - /// of the battlefield. - /// - public virtual void OnSwitchOut(IPokemon oldPokemon, byte position) - { - } - - /// - /// This function is triggered on a Pokemon and its parents when the given Pokemon is switched into - /// the battlefield. - /// - public virtual void OnSwitchIn(IPokemon pokemon, byte position) - { - } - - /// - /// This function is triggered on a Pokemon and its parents when an opponent switches in. - /// - public virtual void OnOpponentSwitchIn(IPokemon pokemon, byte position) - { - } - - /// - /// This function is triggered on a Pokemon and its parents when the given Pokemon consumes the - /// held item it had. - /// - public virtual void OnAfterItemConsume(IPokemon pokemon, IItem item) - { - } - /// /// This function is triggered on a Pokemon and its parents when the given Pokemon gains experience, /// and allows for changing this amount of experience. @@ -191,20 +88,6 @@ public abstract class Script : IDeepCloneable { } - /// - /// This function allows a script to block an incoming hit. - /// - public virtual void BlockIncomingHit(IExecutingMove executingMove, IPokemon target, byte hitIndex, ref bool block) - { - } - - /// - /// This function allows a script to block an outgoing hit. - /// - public virtual void BlockOutgoingHit(IExecutingMove executingMove, IPokemon target, byte hitIndex, ref bool block) - { - } - /// /// Custom triggers for scripts. This allows scripts to run custom events that are not part of the /// standard battle flow. @@ -220,20 +103,6 @@ public abstract class Script : IDeepCloneable { } - /// - /// This function allows a script to prevent a held item from being consumed. - /// - public virtual void PreventHeldItemConsume(IPokemon pokemon, IItem heldItem, ref bool prevented) - { - } - - /// - /// This function allows a script to change any kind of damage that is incoming. - /// - public virtual void ChangeIncomingDamage(IPokemon pokemon, DamageSource source, ref uint damage) - { - } - /// /// This function allows a script to change the accuracy of a move used. The value for accuracy is in percentage. /// A custom case goes when 255 is returned, in which case the entire accuracy check is skipped, and the move @@ -1053,4 +922,184 @@ public interface IScriptOnEndTurn /// function. /// void OnEndTurn(IScriptSource owner, IBattle battle); +} + +/// +/// This interface allows scripts to prevent the Pokemon it is attached to from being able to switch out. +/// +public interface IScriptPreventSelfSwitch +{ + /// + /// This function prevents the Pokemon it is attached to from being able to switch out. + /// + void PreventSelfSwitch(ISwitchChoice choice, ref bool prevent); +} + +/// +/// This interface allows scripts to prevent switching for any opponent. +/// +public interface IScriptPreventOpponentSwitch +{ + /// + /// This function allows the prevention of switching for any opponent. + /// + void PreventOpponentSwitch(ISwitchChoice choice, ref bool prevent); +} + +/// +/// This interface allows scripts to prevent the Pokemon its attached to from running away. +/// +public interface IScriptPreventSelfRunAway +{ + /// + /// This function allows preventing the running away of the Pokemon its attached to + /// + void PreventSelfRunAway(IFleeChoice choice, ref bool prevent); +} + +/// +/// This interface allows scripts to prevent a Pokemon on another side from running away. +/// +public interface IScriptPreventOpponentRunAway +{ + /// + /// This function prevents a Pokemon on another side than where its attached to from running away. + /// + void PreventOpponentRunAway(IFleeChoice choice, ref bool prevent); +} + +/// +/// This interface allows scripts to trigger when a Pokemon takes damage. +/// +public interface IScriptOnDamage +{ + /// + /// This function is triggered on a Pokemon and its parents when the given Pokemon takes damage. + /// + void OnDamage(IPokemon pokemon, DamageSource source, uint oldHealth, uint newHealth); +} + +/// +/// This interface allows scripts to trigger when a Pokemon faints. +/// +public interface IScriptOnFaint +{ + /// + /// This function is triggered on a Pokemon and its parents when the given Pokemon faints. + /// + void OnFaint(IPokemon pokemon, DamageSource source); +} + +/// +/// This interface allows scripts to trigger when an ally Pokemon faints. +/// +public interface IScriptOnAllyFaint +{ + /// + /// This function is triggered on a Pokemon when an ally Pokemon faints. + /// + void OnAllyFaint(IPokemon ally, IPokemon faintedPokemon); +} + +/// +/// This interface allows scripts to trigger when a Pokemon switches out of the battlefield. +/// +public interface IScriptOnSwitchOut +{ + /// + /// This function is triggered on a Pokemon and its parents when the given Pokemon switches out + /// of the battlefield. + /// + void OnSwitchOut(IPokemon oldPokemon, byte position); +} + +/// +/// This interface allows scripts to trigger when a Pokemon is switched into the battlefield. +/// +public interface IScriptOnSwitchIn +{ + /// + /// This function is triggered on a Pokemon and its parents when the given Pokemon is switched into + /// the battlefield. + /// + void OnSwitchIn(IPokemon pokemon, byte position); +} + +/// +/// This interface allows scripts to trigger when an opponent Pokemon switches in. +/// +public interface IScriptOnOpponentSwitchIn +{ + /// + /// This function is triggered on a Pokemon and its parents when an opponent switches in. + /// + void OnOpponentSwitchIn(IPokemon pokemon, byte position); +} + +/// +/// This interface allows scripts to stack when a volatile effect is added while already in place. +/// +public interface IScriptStack +{ + /// + /// This function is ran when a volatile effect is added while that volatile effect already is + /// in place. Instead of adding the volatile effect twice, it will execute this function instead. + /// + void Stack(); +} + +/// +/// This interface allows scripts to trigger after a Pokemon consumes an item. +/// +public interface IScriptOnAfterItemConsume +{ + /// + /// This function is triggered on a Pokemon and its parents when the given Pokemon consumes the + /// held item it had. + /// + void OnAfterItemConsume(IPokemon pokemon, IItem item); +} + +/// +/// This interface allows scripts to block incoming hits on a target. +/// +public interface IScriptBlockIncomingHit +{ + /// + /// This function allows a script to block an incoming hit. + /// + void BlockIncomingHit(IExecutingMove executingMove, IPokemon target, byte hitIndex, ref bool block); +} + +/// +/// This interface allows scripts to block outgoing hits from a move. +/// +public interface IScriptBlockOutgoingHit +{ + /// + /// This function allows a script to block an outgoing hit. + /// + void BlockOutgoingHit(IExecutingMove executingMove, IPokemon target, byte hitIndex, ref bool block); +} + +/// +/// This interface allows scripts to prevent held item consumption. +/// +public interface IScriptPreventHeldItemConsume +{ + /// + /// This function allows a script to prevent a held item from being consumed. + /// + void PreventHeldItemConsume(IPokemon pokemon, IItem heldItem, ref bool prevented); +} + +/// +/// This interface allows scripts to change incoming damage to a Pokemon. +/// +public interface IScriptChangeIncomingDamage +{ + /// + /// This function allows a script to change any kind of damage that is incoming. + /// + void ChangeIncomingDamage(IPokemon pokemon, DamageSource source, ref uint damage); } \ No newline at end of file diff --git a/PkmnLib.Dynamic/ScriptHandling/ScriptSet.cs b/PkmnLib.Dynamic/ScriptHandling/ScriptSet.cs index 5ab6681..d88a46a 100644 --- a/PkmnLib.Dynamic/ScriptHandling/ScriptSet.cs +++ b/PkmnLib.Dynamic/ScriptHandling/ScriptSet.cs @@ -116,7 +116,8 @@ public class ScriptSet : IScriptSet var existing = _scripts.FirstOrDefault(s => s.Script?.Name == script.Name); if (existing != null) { - existing.Script!.Stack(); + if (existing.Script is IScriptStack stackable) + stackable.Stack(); return existing; } @@ -133,7 +134,8 @@ public class ScriptSet : IScriptSet var existing = _scripts.FirstOrDefault(s => s.Script?.Name == scriptKey); if (existing != null) { - existing.Script!.Stack(); + if (existing.Script is IScriptStack stackable) + stackable.Stack(); return existing; } diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Aftermath.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Aftermath.cs index bc33297..07b0c8e 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Aftermath.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Aftermath.cs @@ -7,7 +7,7 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Abilities; /// Bulbapedia - Aftermath /// [Script(ScriptCategory.Ability, "aftermath")] -public class Aftermath : Script, IScriptOnIncomingHit +public class Aftermath : Script, IScriptOnIncomingHit, IScriptOnFaint { private IExecutingMove? _lastAttack; @@ -18,7 +18,7 @@ public class Aftermath : Script, IScriptOnIncomingHit } /// - public override void OnFaint(IPokemon pokemon, DamageSource source) + public void OnFaint(IPokemon pokemon, DamageSource source) { if (source != DamageSource.MoveDamage) return; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Anticipation.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Anticipation.cs index 6a44259..bf7ba26 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Anticipation.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Anticipation.cs @@ -7,7 +7,7 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Abilities; /// Bulbapedia - Anticipation /// [Script(ScriptCategory.Ability, "anticipation")] -public class Anticipation : Script +public class Anticipation : Script, IScriptOnOpponentSwitchIn { private IPokemon? _owner; @@ -20,7 +20,7 @@ public class Anticipation : Script } /// - public override void OnOpponentSwitchIn(IPokemon pokemon, byte position) + public void OnOpponentSwitchIn(IPokemon pokemon, byte position) { if (_owner is null) return; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/ArenaTrap.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/ArenaTrap.cs index f0c13b2..c14be66 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/ArenaTrap.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/ArenaTrap.cs @@ -7,7 +7,7 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Abilities; /// Bulbapedia - Arena Trap /// [Script(ScriptCategory.Ability, "arena_trap")] -public class ArenaTrap : Script +public class ArenaTrap : Script, IScriptPreventOpponentRunAway, IScriptPreventOpponentSwitch { private IPokemon? _owner; @@ -20,7 +20,7 @@ public class ArenaTrap : Script } /// - public override void PreventOpponentRunAway(IFleeChoice choice, ref bool prevent) + public void PreventOpponentRunAway(IFleeChoice choice, ref bool prevent) { if (choice.User.IsFloating) return; @@ -30,7 +30,7 @@ public class ArenaTrap : Script } /// - public override void PreventOpponentSwitch(ISwitchChoice choice, ref bool prevent) + public void PreventOpponentSwitch(ISwitchChoice choice, ref bool prevent) { if (choice.User.IsFloating) return; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/AromaVeil.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/AromaVeil.cs index de4042e..e01a8de 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/AromaVeil.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/AromaVeil.cs @@ -7,10 +7,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Abilities; /// Bulbapedia - Aroma Veil /// [Script(ScriptCategory.Ability, "aroma_veil")] -public class AromaVeil : Script +public class AromaVeil : Script, IScriptOnSwitchIn, IScriptOnSwitchOut { /// - public override void OnSwitchIn(IPokemon pokemon, byte position) + public void OnSwitchIn(IPokemon pokemon, byte position) { var side = pokemon.BattleData?.BattleSide; var effect = side?.VolatileScripts.Add(new Side.AromaVeilEffect())?.Script as Side.AromaVeilEffect; @@ -18,7 +18,7 @@ public class AromaVeil : Script } /// - public override void OnSwitchOut(IPokemon oldPokemon, byte position) + public void OnSwitchOut(IPokemon oldPokemon, byte position) { var side = oldPokemon.BattleData?.BattleSide; var effect = side?.VolatileScripts.Get(); diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Battery.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Battery.cs index 6abc07e..4d6a86a 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Battery.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Battery.cs @@ -7,10 +7,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Abilities; /// Bulbapedia - Battery /// [Script(ScriptCategory.Ability, "battery")] -public class Battery : Script +public class Battery : Script, IScriptOnSwitchIn, IScriptOnSwitchOut { /// - public override void OnSwitchIn(IPokemon pokemon, byte position) + public void OnSwitchIn(IPokemon pokemon, byte position) { var side = pokemon.BattleData?.BattleSide; var effect = side?.VolatileScripts.Add(new Side.BatteryAbilityEffect())?.Script as Side.BatteryAbilityEffect; @@ -18,7 +18,7 @@ public class Battery : Script } /// - public override void OnSwitchOut(IPokemon oldPokemon, byte position) + public void OnSwitchOut(IPokemon oldPokemon, byte position) { var side = oldPokemon.BattleData?.BattleSide; var effect = side?.VolatileScripts.Get(); diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Berserk.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Berserk.cs index fdf4473..5b3aa16 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Berserk.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Berserk.cs @@ -7,10 +7,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Abilities; /// Bulbapedia - Berserk /// [Script(ScriptCategory.Ability, "berserk")] -public class Berserk : Script +public class Berserk : Script, IScriptOnDamage { /// - public override void OnDamage(IPokemon pokemon, DamageSource source, uint oldHealth, uint newHealth) + public void OnDamage(IPokemon pokemon, DamageSource source, uint oldHealth, uint newHealth) { if (source is not DamageSource.MoveDamage) return; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/CheekPouch.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/CheekPouch.cs index 2642885..50e202b 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/CheekPouch.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/CheekPouch.cs @@ -7,10 +7,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Abilities; /// Bulbapedia - Cheek Pouch /// [Script(ScriptCategory.Ability, "cheek_pouch")] -public class CheekPouch : Script +public class CheekPouch : Script, IScriptOnAfterItemConsume { /// - public override void OnAfterItemConsume(IPokemon pokemon, IItem item) + public void OnAfterItemConsume(IPokemon pokemon, IItem item) { if (item.Category == ItemCategory.Berry) { diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/DeltaStreamAbility.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/DeltaStreamAbility.cs index 7d9ad82..84dcfd4 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/DeltaStreamAbility.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/DeltaStreamAbility.cs @@ -8,10 +8,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Abilities; /// Bulbapedia - Delta Stream /// [Script(ScriptCategory.Ability, "delta_stream")] -public class DeltaStreamAbility : Script +public class DeltaStreamAbility : Script, IScriptOnSwitchIn { /// - public override void OnSwitchIn(IPokemon pokemon, byte position) + public void OnSwitchIn(IPokemon pokemon, byte position) { var battle = pokemon.BattleData?.Battle; if (battle == null) diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/DesolateLandAbility.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/DesolateLandAbility.cs index 546fcaf..bc5a66c 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/DesolateLandAbility.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/DesolateLandAbility.cs @@ -8,10 +8,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Abilities; /// Bulbapedia - Desolate Land /// [Script(ScriptCategory.Ability, "desolate_land")] -public class DesolateLandAbility : Script +public class DesolateLandAbility : Script, IScriptOnSwitchIn { /// - public override void OnSwitchIn(IPokemon pokemon, byte position) + public void OnSwitchIn(IPokemon pokemon, byte position) { var battle = pokemon.BattleData?.Battle; if (battle == null) diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Disguise.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Disguise.cs index ed73881..0bd9c26 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Disguise.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Disguise.cs @@ -10,10 +10,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Abilities; /// Bulbapedia - Disguise /// [Script(ScriptCategory.Ability, "disguise")] -public class Disguise : Script +public class Disguise : Script, IScriptChangeIncomingDamage { /// - public override void ChangeIncomingDamage(IPokemon pokemon, DamageSource source, ref uint damage) + public void ChangeIncomingDamage(IPokemon pokemon, DamageSource source, ref uint damage) { if (pokemon.BattleData == null) return; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Download.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Download.cs index 4b4c0b6..5a6645b 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Download.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Download.cs @@ -8,10 +8,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Abilities; /// Bulbapedia - Download /// [Script(ScriptCategory.Ability, "download")] -public class Download : Script +public class Download : Script, IScriptOnSwitchIn { /// - public override void OnSwitchIn(IPokemon pokemon, byte position) + public void OnSwitchIn(IPokemon pokemon, byte position) { var battleData = pokemon.BattleData; if (battleData == null) diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Drizzle.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Drizzle.cs index e1311e3..ede83c5 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Drizzle.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Drizzle.cs @@ -8,10 +8,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Abilities; /// Bulbapedia - Drizzle /// [Script(ScriptCategory.Ability, "drizzle")] -public class Drizzle : Script +public class Drizzle : Script, IScriptOnSwitchIn { /// - public override void OnSwitchIn(IPokemon pokemon, byte position) + public void OnSwitchIn(IPokemon pokemon, byte position) { var battleData = pokemon.BattleData; if (battleData == null) diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Drought.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Drought.cs index 52e008c..8021d2b 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Drought.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Drought.cs @@ -8,10 +8,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Abilities; /// Bulbapedia - Drought /// [Script(ScriptCategory.Ability, "drought")] -public class Drought : Script +public class Drought : Script, IScriptOnSwitchIn { /// - public override void OnSwitchIn(IPokemon pokemon, byte position) + public void OnSwitchIn(IPokemon pokemon, byte position) { var battleData = pokemon.BattleData; if (battleData == null) diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/ElectricSurge.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/ElectricSurge.cs index 4aaf37d..03e7d8a 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/ElectricSurge.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/ElectricSurge.cs @@ -8,10 +8,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Abilities; /// Bulbapedia - Electric Surge /// [Script(ScriptCategory.Ability, "electric_surge")] -public class ElectricSurge : Script +public class ElectricSurge : Script, IScriptOnSwitchIn { /// - public override void OnSwitchIn(IPokemon pokemon, byte position) + public void OnSwitchIn(IPokemon pokemon, byte position) { var battleData = pokemon.BattleData; if (battleData == null) diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/EmergencyExit.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/EmergencyExit.cs index 33a2fab..0004d84 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/EmergencyExit.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/EmergencyExit.cs @@ -7,10 +7,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Abilities; /// Bulbapedia - Emergency Exit /// [Script(ScriptCategory.Ability, "emergency_exit")] -public class EmergencyExit : Script +public class EmergencyExit : Script, IScriptOnDamage { /// - public override void OnDamage(IPokemon pokemon, DamageSource source, uint oldHealth, uint newHealth) + public void OnDamage(IPokemon pokemon, DamageSource source, uint oldHealth, uint newHealth) { if (pokemon.BattleData is null) return; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Forecast.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Forecast.cs index afdfa26..105cf72 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Forecast.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Forecast.cs @@ -7,7 +7,7 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Abilities; /// Bulbapedia - Forecast /// [Script(ScriptCategory.Ability, "forecast")] -public class Forecast : Script +public class Forecast : Script, IScriptOnSwitchIn { private IPokemon? _pokemon; @@ -20,7 +20,7 @@ public class Forecast : Script } /// - public override void OnSwitchIn(IPokemon pokemon, byte position) + public void OnSwitchIn(IPokemon pokemon, byte position) { ChangeForm(pokemon, pokemon.BattleData?.Battle.WeatherName); } diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Forewarn.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Forewarn.cs index 652f5eb..c244584 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Forewarn.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Forewarn.cs @@ -9,10 +9,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Abilities; /// Bulbapedia - Forewarn /// [Script(ScriptCategory.Ability, "forewarn")] -public class Forewarn : Script +public class Forewarn : Script, IScriptOnSwitchIn { /// - public override void OnSwitchIn(IPokemon pokemon, byte position) + public void OnSwitchIn(IPokemon pokemon, byte position) { var battleData = pokemon.BattleData; if (battleData == null) diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Frisk.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Frisk.cs index a1dd691..99f530b 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Frisk.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Frisk.cs @@ -7,10 +7,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Abilities; /// Bulbapedia - Frisk /// [Script(ScriptCategory.Ability, "frisk")] -public class Frisk : Script +public class Frisk : Script, IScriptOnSwitchIn { /// - public override void OnSwitchIn(IPokemon pokemon, byte position) + public void OnSwitchIn(IPokemon pokemon, byte position) { if (pokemon.BattleData?.BattleSide is null) return; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Gluttony.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Gluttony.cs index e0d83cb..334ca31 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Gluttony.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Gluttony.cs @@ -6,10 +6,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Abilities; /// Bulbapedia - Gluttony /// [Script(ScriptCategory.Ability, "gluttony")] -public class Gluttony : Script +public class Gluttony : Script, IScriptOnDamage { /// - public override void OnDamage(IPokemon pokemon, DamageSource source, uint oldHealth, uint newHealth) + public void OnDamage(IPokemon pokemon, DamageSource source, uint oldHealth, uint newHealth) { if (pokemon.BattleData is null) return; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/GrassySurge.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/GrassySurge.cs index eb620bc..3e06e4f 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/GrassySurge.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/GrassySurge.cs @@ -6,10 +6,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Abilities; /// Bulbapedia - Grassy Surge /// [Script(ScriptCategory.Ability, "grassy_surge")] -public class GrassySurge : Script +public class GrassySurge : Script, IScriptOnSwitchIn { /// - public override void OnSwitchIn(IPokemon pokemon, byte position) + public void OnSwitchIn(IPokemon pokemon, byte position) { var battleData = pokemon.BattleData; if (battleData == null) diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Illusion.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Illusion.cs index 71cf65b..9481053 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, IScriptOnIncomingHit +public class Illusion : Script, IScriptOnIncomingHit, IScriptOnSwitchIn { private IPokemon? _pokemon; @@ -19,7 +19,7 @@ public class Illusion : Script, IScriptOnIncomingHit } /// - public override void OnSwitchIn(IPokemon pokemon, byte position) + public void OnSwitchIn(IPokemon pokemon, byte position) { var battleData = pokemon.BattleData; if (battleData is null) diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/InnardsOut.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/InnardsOut.cs index 721bf5f..042a3c0 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/InnardsOut.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/InnardsOut.cs @@ -6,7 +6,7 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Abilities; /// Bulbapedia - Innards Out /// [Script(ScriptCategory.Ability, "innards_out")] -public class InnardsOut : Script, IScriptOnIncomingHit +public class InnardsOut : Script, IScriptOnIncomingHit, IScriptOnDamage { private IPokemon? _lastPokemonToHit; @@ -17,7 +17,7 @@ public class InnardsOut : Script, IScriptOnIncomingHit } /// - public override void OnDamage(IPokemon pokemon, DamageSource source, uint oldHealth, uint newHealth) + public void OnDamage(IPokemon pokemon, DamageSource source, uint oldHealth, uint newHealth) { if (newHealth != 0 || source is not DamageSource.MoveDamage) return; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Intimidate.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Intimidate.cs index fff2199..561ab2f 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Intimidate.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Intimidate.cs @@ -6,10 +6,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Abilities; /// Bulbapedia - Intimidate /// [Script(ScriptCategory.Ability, "intimidate")] -public class Intimidate : Script +public class Intimidate : Script, IScriptOnSwitchIn { /// - public override void OnSwitchIn(IPokemon pokemon, byte position) + public void OnSwitchIn(IPokemon pokemon, byte position) { var battle = pokemon.BattleData?.Battle; if (battle is null) diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Klutz.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Klutz.cs index f23dc0c..90ab8d0 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Klutz.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Klutz.cs @@ -6,7 +6,7 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Abilities; /// Bulbapedia - Klutz /// [Script(ScriptCategory.Ability, "klutz")] -public class Klutz : Script, IScriptOnBeforeAnyHookInvoked +public class Klutz : Script, IScriptOnBeforeAnyHookInvoked, IScriptPreventHeldItemConsume { /// public void OnBeforeAnyHookInvoked(ref List? suppressedCategories) @@ -16,7 +16,7 @@ public class Klutz : Script, IScriptOnBeforeAnyHookInvoked } /// - public override void PreventHeldItemConsume(IPokemon pokemon, IItem heldItem, ref bool prevented) + public void PreventHeldItemConsume(IPokemon pokemon, IItem heldItem, ref bool prevented) { prevented = true; } diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/MagicGuard.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/MagicGuard.cs index 5a150e8..e81f0e6 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/MagicGuard.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/MagicGuard.cs @@ -6,10 +6,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Abilities; /// Bulbapedia - Magic Guard /// [Script(ScriptCategory.Ability, "magic_guard")] -public class MagicGuard : Script +public class MagicGuard : Script, IScriptChangeIncomingDamage { /// - public override void ChangeIncomingDamage(IPokemon pokemon, DamageSource source, ref uint damage) + public void ChangeIncomingDamage(IPokemon pokemon, DamageSource source, ref uint damage) { // Magic Guard doesn't work if the Pokémon is not in battle. if (pokemon.BattleData is null) diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/MagmaArmor.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/MagmaArmor.cs index 949865a..acdfd42 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/MagmaArmor.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/MagmaArmor.cs @@ -6,7 +6,7 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Abilities; /// Bulbapedia - Magma Armor /// [Script(ScriptCategory.Ability, "magma_armor")] -public class MagmaArmor : Script +public class MagmaArmor : Script, IScriptOnSwitchIn { /// public override void PreventStatusChange(IPokemon pokemon, StringKey status, bool selfInflicted, @@ -20,7 +20,7 @@ public class MagmaArmor : Script } /// - public override void OnSwitchIn(IPokemon pokemon, byte position) + public void OnSwitchIn(IPokemon pokemon, byte position) { if (pokemon.HasStatus(ScriptUtils.ResolveName())) { diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/MagnetPull.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/MagnetPull.cs index 38c31c4..4e68279 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/MagnetPull.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/MagnetPull.cs @@ -6,17 +6,17 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Abilities; /// Bulbapedia - Magnet Pull /// [Script(ScriptCategory.Ability, "magnet_pull")] -public class MagnetPull : Script +public class MagnetPull : Script, IScriptPreventOpponentRunAway, IScriptPreventOpponentSwitch { /// - public override void PreventOpponentRunAway(IFleeChoice choice, ref bool prevent) + public void PreventOpponentRunAway(IFleeChoice choice, ref bool prevent) { if (choice.User.Types.Any(x => x.Name == "steel")) prevent = true; } /// - public override void PreventOpponentSwitch(ISwitchChoice choice, ref bool prevent) + public void PreventOpponentSwitch(ISwitchChoice choice, ref bool prevent) { if (choice.User.Types.Any(x => x.Name == "steel")) prevent = true; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/MistySurge.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/MistySurge.cs index 8fab36f..08c21d0 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/MistySurge.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/MistySurge.cs @@ -6,10 +6,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Abilities; /// Bulbapedia - Misty Surge /// [Script(ScriptCategory.Ability, "misty_surge")] -public class MistySurge : Script +public class MistySurge : Script, IScriptOnSwitchIn { /// - public override void OnSwitchIn(IPokemon pokemon, byte position) + public void OnSwitchIn(IPokemon pokemon, byte position) { if (pokemon.BattleData?.Battle is null) return; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/NaturalCure.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/NaturalCure.cs index 29b9665..24dfc68 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/NaturalCure.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/NaturalCure.cs @@ -6,10 +6,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Abilities; /// Bulbapedia - Natural Cure /// [Script(ScriptCategory.Ability, "natural_cure")] -public class NaturalCure : Script +public class NaturalCure : Script, IScriptOnSwitchOut { /// - public override void OnSwitchOut(IPokemon oldPokemon, byte position) + public void OnSwitchOut(IPokemon oldPokemon, byte position) { if (!oldPokemon.StatusScript.IsEmpty) { diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/PowerOfAlchemy.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/PowerOfAlchemy.cs index 3614b5c..f18ed12 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/PowerOfAlchemy.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/PowerOfAlchemy.cs @@ -6,10 +6,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Abilities; /// Bulbapedia - Power of Alchemy /// [Script(ScriptCategory.Ability, "power_of_alchemy")] -public class PowerOfAlchemy : Script +public class PowerOfAlchemy : Script, IScriptOnAllyFaint { /// - public override void OnAllyFaint(IPokemon ally, IPokemon faintedPokemon) + public void OnAllyFaint(IPokemon ally, IPokemon faintedPokemon) { if (faintedPokemon.ActiveAbility?.HasFlag("cant_be_copied") != true) return; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/PrimordialSeaAbility.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/PrimordialSeaAbility.cs index e3a3b5f..3cd78dc 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/PrimordialSeaAbility.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/PrimordialSeaAbility.cs @@ -6,10 +6,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Abilities; /// Bulbapedia - Primordial Sea /// [Script(ScriptCategory.Ability, "primordial_sea")] -public class PrimordialSeaAbility : Script +public class PrimordialSeaAbility : Script, IScriptOnSwitchIn { /// - public override void OnSwitchIn(IPokemon pokemon, byte position) + public void OnSwitchIn(IPokemon pokemon, byte position) { var battle = pokemon.BattleData?.Battle; if (battle == null) diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/PsychicSurge.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/PsychicSurge.cs index 75ea46d..6b36c07 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/PsychicSurge.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/PsychicSurge.cs @@ -6,10 +6,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Abilities; /// Bulbapedia - Psychic Surge /// [Script(ScriptCategory.Ability, "psychic_surge")] -public class PsychicSurge : Script +public class PsychicSurge : Script, IScriptOnSwitchIn { /// - public override void OnSwitchIn(IPokemon pokemon, byte position) + public void OnSwitchIn(IPokemon pokemon, byte position) { if (pokemon.BattleData?.Battle is null) return; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Regenerator.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Regenerator.cs index ff4c131..b6e23c5 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Regenerator.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Regenerator.cs @@ -6,10 +6,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Abilities; /// Bulbapedia - Regenerator /// [Script(ScriptCategory.Ability, "regenerator")] -public class Regenerator : Script +public class Regenerator : Script, IScriptOnSwitchOut { /// - public override void OnSwitchOut(IPokemon oldPokemon, byte position) + public void OnSwitchOut(IPokemon oldPokemon, byte position) { if (!oldPokemon.IsUsable) return; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/SandStream.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/SandStream.cs index 2eaeb3f..4375d74 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/SandStream.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/SandStream.cs @@ -6,10 +6,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Abilities; /// Bulbapedia - Sand Stream /// [Script(ScriptCategory.Ability, "sand_stream")] -public class SandStream : Script +public class SandStream : Script, IScriptOnSwitchIn { /// - public override void OnSwitchIn(IPokemon pokemon, byte position) + public void OnSwitchIn(IPokemon pokemon, byte position) { var battleData = pokemon.BattleData; if (battleData == null) diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Schooling.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Schooling.cs index b47db02..70fc250 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Schooling.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Schooling.cs @@ -6,7 +6,7 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Abilities; /// Bulbapedia - Schooling /// [Script(ScriptCategory.Ability, "schooling")] -public class Schooling : Script, IScriptOnEndTurn +public class Schooling : Script, IScriptOnEndTurn, IScriptOnSwitchIn { private IPokemon? _owningPokemon; @@ -19,7 +19,7 @@ public class Schooling : Script, IScriptOnEndTurn } /// - public override void OnSwitchIn(IPokemon pokemon, byte position) => ChangeFormIfNeeded(pokemon); + public void OnSwitchIn(IPokemon pokemon, byte position) => ChangeFormIfNeeded(pokemon); /// public void OnEndTurn(IScriptSource owner, IBattle battle) => ChangeFormIfNeeded(_owningPokemon); diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/ShadowTag.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/ShadowTag.cs index db60113..5f351b0 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/ShadowTag.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/ShadowTag.cs @@ -6,11 +6,11 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Abilities; /// Bulbapedia - Shadow Tag /// [Script(ScriptCategory.Ability, "shadow_tag")] -public class ShadowTag : Script +public class ShadowTag : Script, IScriptPreventOpponentRunAway, IScriptPreventOpponentSwitch { /// - public override void PreventOpponentRunAway(IFleeChoice choice, ref bool prevent) => prevent = true; + public void PreventOpponentRunAway(IFleeChoice choice, ref bool prevent) => prevent = true; /// - public override void PreventOpponentSwitch(ISwitchChoice choice, ref bool prevent) => prevent = true; + public void PreventOpponentSwitch(ISwitchChoice choice, ref bool prevent) => prevent = true; } \ No newline at end of file diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/ShieldsDown.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/ShieldsDown.cs index 5e47999..30304dc 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/ShieldsDown.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/ShieldsDown.cs @@ -6,10 +6,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Abilities; /// Bulbapedia - Shields Down /// [Script(ScriptCategory.Ability, "shields_down")] -public class ShieldsDown : Script, IScriptOnEndTurn +public class ShieldsDown : Script, IScriptOnEndTurn, IScriptOnSwitchIn { /// - public override void OnSwitchIn(IPokemon pokemon, byte position) => ChangeFormIfNeeded(pokemon); + public void OnSwitchIn(IPokemon pokemon, byte position) => ChangeFormIfNeeded(pokemon); /// public void OnEndTurn(IScriptSource owner, IBattle battle) => ChangeFormIfNeeded(owner as IPokemon); diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/SlowStart.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/SlowStart.cs index 8532a5b..a8b0a25 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/SlowStart.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/SlowStart.cs @@ -8,12 +8,12 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Abilities; /// Bulbapedia - Slow Start /// [Script(ScriptCategory.Ability, "slow_start")] -public class SlowStart : Script +public class SlowStart : Script, IScriptOnSwitchIn { private IPokemon? _pokemon; /// - public override void OnSwitchIn(IPokemon pokemon, byte position) + public void OnSwitchIn(IPokemon pokemon, byte position) { _pokemon = pokemon; pokemon.Volatile.Add(new SlowStartEffect()); diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/SnowWarning.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/SnowWarning.cs index 1de8be9..892c7e9 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/SnowWarning.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/SnowWarning.cs @@ -6,10 +6,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Abilities; /// Bulbapedia - Snow Warning /// [Script(ScriptCategory.Ability, "snow_warning")] -public class SnowWarning : Script +public class SnowWarning : Script, IScriptOnSwitchIn { /// - public override void OnSwitchIn(IPokemon pokemon, byte position) + public void OnSwitchIn(IPokemon pokemon, byte position) { var battleData = pokemon.BattleData; if (battleData == null) diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/SoulHeart.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/SoulHeart.cs index 2f4ed05..8ff7e62 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/SoulHeart.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/SoulHeart.cs @@ -6,10 +6,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Abilities; /// Bulbapedia - Soul-Heart /// [Script(ScriptCategory.Ability, "soul_heart")] -public class SoulHeart : Script, IScriptOnOpponentFaints +public class SoulHeart : Script, IScriptOnOpponentFaints, IScriptOnAllyFaint { /// - public override void OnAllyFaint(IPokemon ally, IPokemon faintedPokemon) + public void OnAllyFaint(IPokemon ally, IPokemon faintedPokemon) { ally.ChangeStatBoost(Statistic.SpecialAttack, 1, true, false); } diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/SuppressWeatherAbility.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/SuppressWeatherAbility.cs index 11600df..2cb76b5 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/SuppressWeatherAbility.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/SuppressWeatherAbility.cs @@ -9,7 +9,7 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Abilities; /// Bulbapedia - Air Lock /// [Script(ScriptCategory.Ability, "suppress_weather")] -public class SuppressWeatherAbility : Script, IScriptOnBeforeAnyHookInvoked +public class SuppressWeatherAbility : Script, IScriptOnBeforeAnyHookInvoked, IScriptOnSwitchIn { /// public void OnBeforeAnyHookInvoked(ref List? suppressedCategories) @@ -19,7 +19,7 @@ public class SuppressWeatherAbility : Script, IScriptOnBeforeAnyHookInvoked } /// - public override void OnSwitchIn(IPokemon pokemon, byte position) + public void OnSwitchIn(IPokemon pokemon, byte position) { pokemon.BattleData?.Battle.EventHook.Invoke(new AbilityTriggerEvent(pokemon)); } diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/WonderGuard.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/WonderGuard.cs index 1f3fe8f..65a7e9d 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/WonderGuard.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/WonderGuard.cs @@ -6,10 +6,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Abilities; /// Bulbapedia - Wonder Guard /// [Script(ScriptCategory.Ability, "wonder_guard")] -public class WonderGuard : Script +public class WonderGuard : Script, IScriptBlockIncomingHit { /// - public override void BlockIncomingHit(IExecutingMove executingMove, IPokemon target, byte hitIndex, ref bool block) + public void BlockIncomingHit(IExecutingMove executingMove, IPokemon target, byte hitIndex, ref bool block) { var effectiveness = executingMove.GetHitData(target, hitIndex).Effectiveness; if (!(effectiveness <= 1.0)) diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/ZenMode.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/ZenMode.cs index 0d42eca..31c7ce2 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/ZenMode.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/ZenMode.cs @@ -6,10 +6,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Abilities; /// Bulbapedia - Zen Mode /// [Script(ScriptCategory.Ability, "zen_mode")] -public class ZenMode : Script, IScriptOnEndTurn +public class ZenMode : Script, IScriptOnEndTurn, IScriptOnSwitchIn { /// - public override void OnSwitchIn(IPokemon pokemon, byte position) => ChangeFormIfNeeded(pokemon); + public void OnSwitchIn(IPokemon pokemon, byte position) => ChangeFormIfNeeded(pokemon); /// public void OnEndTurn(IScriptSource owner, IBattle battle) => ChangeFormIfNeeded(owner as IPokemon); diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Battle/FairyLockEffect.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Battle/FairyLockEffect.cs index 605a189..108ec4b 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Battle/FairyLockEffect.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Battle/FairyLockEffect.cs @@ -1,18 +1,18 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Battle; [Script(ScriptCategory.Battle, "fairy_lock")] -public class FairyLockEffect : Script, IScriptOnEndTurn +public class FairyLockEffect : Script, IScriptOnEndTurn, IScriptPreventSelfRunAway, IScriptPreventSelfSwitch { private int _turns = 1; /// - public override void PreventSelfRunAway(IFleeChoice choice, ref bool prevent) + public void PreventSelfRunAway(IFleeChoice choice, ref bool prevent) { prevent = true; } /// - public override void PreventSelfSwitch(ISwitchChoice choice, ref bool prevent) + public void PreventSelfSwitch(ISwitchChoice choice, ref bool prevent) { prevent = true; } diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Battle/MagicRoomEffect.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Battle/MagicRoomEffect.cs index c510bac..3ad9811 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Battle/MagicRoomEffect.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Battle/MagicRoomEffect.cs @@ -1,12 +1,12 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Battle; [Script(ScriptCategory.Battle, "magic_room")] -public class MagicRoomEffect : Script, IScriptOnBeforeAnyHookInvoked, IScriptOnEndTurn +public class MagicRoomEffect : Script, IScriptOnBeforeAnyHookInvoked, IScriptOnEndTurn, IScriptPreventHeldItemConsume { private int _turnsLeft = 5; /// - public override void PreventHeldItemConsume(IPokemon pokemon, IItem heldItem, ref bool prevented) + public void PreventHeldItemConsume(IPokemon pokemon, IItem heldItem, ref bool prevented) { prevented = true; } diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Battle/WaterSportEffect.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Battle/WaterSportEffect.cs index d29b653..7f25037 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Battle/WaterSportEffect.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Battle/WaterSportEffect.cs @@ -1,7 +1,7 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Battle; [Script(ScriptCategory.Battle, "water_sport")] -public class WaterSportEffect : Script, IScriptChangeMoveDamage +public class WaterSportEffect : Script, IScriptChangeMoveDamage, IScriptOnSwitchOut { public readonly HashSet Placers = new(); @@ -15,7 +15,7 @@ public class WaterSportEffect : Script, IScriptChangeMoveDamage } /// - public override void OnSwitchOut(IPokemon oldPokemon, byte position) + public void OnSwitchOut(IPokemon oldPokemon, byte position) { if (!Placers.Contains(oldPokemon)) return; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/DoomDesire.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/DoomDesire.cs index 166dcd3..dbbfd84 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/DoomDesire.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/DoomDesire.cs @@ -3,10 +3,10 @@ using PkmnLib.Plugin.Gen7.Scripts.Side; namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "doom_desire")] -public class DoomDesire : Script +public class DoomDesire : Script, IScriptBlockOutgoingHit { /// - public override void BlockOutgoingHit(IExecutingMove executingMove, IPokemon target, byte hitIndex, ref bool block) + public void BlockOutgoingHit(IExecutingMove executingMove, IPokemon target, byte hitIndex, ref bool block) { var battleData = target.BattleData; if (battleData == null) diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/DreamEater.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/DreamEater.cs index d662fdc..32b54c4 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/DreamEater.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/DreamEater.cs @@ -1,10 +1,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "dream_eater")] -public class DreamEater : Script, IScriptOnSecondaryEffect +public class DreamEater : Script, IScriptOnSecondaryEffect, IScriptBlockOutgoingHit { /// - public override void BlockOutgoingHit(IExecutingMove executingMove, IPokemon target, byte hitIndex, ref bool block) + public void BlockOutgoingHit(IExecutingMove executingMove, IPokemon target, byte hitIndex, ref bool block) { if (!target.HasStatus("asleep")) block = true; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/KingsShield.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/KingsShield.cs index 27d56fb..3e6a254 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 void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public override 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/ProtectionScript.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/ProtectionScript.cs index 50b2dfb..c63da40 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/ProtectionScript.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/ProtectionScript.cs @@ -8,7 +8,7 @@ public class ProtectionScript : Script, IScriptOnSecondaryEffect protected virtual Script GetEffectScript() => new ProtectionEffectScript(); /// - public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + public virtual void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { var battleData = target.BattleData; if (battleData == null) diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/AutotomizeEffect.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/AutotomizeEffect.cs index 396b9e7..5f4884d 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/AutotomizeEffect.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/AutotomizeEffect.cs @@ -3,12 +3,12 @@ using PkmnLib.Plugin.Gen7.Scripts.Utils; namespace PkmnLib.Plugin.Gen7.Scripts.Pokemon; [Script(ScriptCategory.Pokemon, "autotomize")] -public class AutotomizeEffect : Script, IBatonPassException +public class AutotomizeEffect : Script, IBatonPassException, IScriptStack { public int Stacks { get; private set; } = 1; /// - public override void Stack() + public void Stack() { Stacks++; } diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/BideEffect.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/BideEffect.cs index 4c71ce1..5c400a1 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, IScriptOnIncomingHit +public class BideEffect : Script, IScriptForceTurnSelection, IScriptOnIncomingHit, IScriptOnDamage { private readonly IPokemon? _owner; public byte Turns; @@ -26,7 +26,7 @@ public class BideEffect : Script, IScriptForceTurnSelection, IScriptOnIncomingHi } /// - public override void OnDamage(IPokemon pokemon, DamageSource source, uint oldHealth, uint newHealth) + public void OnDamage(IPokemon pokemon, DamageSource source, uint oldHealth, uint newHealth) { DamageTaken += oldHealth - newHealth; } diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/BindEffect.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/BindEffect.cs index 9be2667..50f5f03 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/BindEffect.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/BindEffect.cs @@ -1,7 +1,7 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Pokemon; [Script(ScriptCategory.Pokemon, "bind")] -public class BindEffect : Script, IScriptOnEndTurn +public class BindEffect : Script, IScriptOnEndTurn, IScriptPreventSelfSwitch, IScriptPreventSelfRunAway { private readonly IPokemon? _owner; private int _turns; @@ -29,8 +29,8 @@ public class BindEffect : Script, IScriptOnEndTurn } /// - public override void PreventSelfSwitch(ISwitchChoice choice, ref bool prevent) => prevent = _turns > 0; + public void PreventSelfSwitch(ISwitchChoice choice, ref bool prevent) => prevent = _turns > 0; /// - public override void PreventSelfRunAway(IFleeChoice choice, ref bool prevent) => prevent = _turns > 0; + public void PreventSelfRunAway(IFleeChoice choice, ref bool prevent) => prevent = _turns > 0; } \ No newline at end of file diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/BlockEffect.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/BlockEffect.cs index 342ef82..f71b7d0 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/BlockEffect.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/BlockEffect.cs @@ -1,11 +1,11 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Pokemon; [Script(ScriptCategory.Pokemon, "block")] -public class BlockEffect : Script +public class BlockEffect : Script, IScriptPreventSelfRunAway, IScriptPreventSelfSwitch { /// - public override void PreventSelfRunAway(IFleeChoice choice, ref bool prevent) => prevent = true; + public void PreventSelfRunAway(IFleeChoice choice, ref bool prevent) => prevent = true; /// - public override void PreventSelfSwitch(ISwitchChoice choice, ref bool prevent) => prevent = true; + public void PreventSelfSwitch(ISwitchChoice choice, ref bool prevent) => prevent = true; } \ No newline at end of file diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/ChargeBounceEffect.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/ChargeBounceEffect.cs index 02d9bb9..a91a673 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/ChargeBounceEffect.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/ChargeBounceEffect.cs @@ -3,7 +3,8 @@ using PkmnLib.Plugin.Gen7.Scripts.Utils; namespace PkmnLib.Plugin.Gen7.Scripts.Pokemon; [Script(ScriptCategory.Pokemon, "charge_bounce")] -public class ChargeBounceEffect : Script, IScriptForceTurnSelection, IScriptChangeIncomingMoveDamage +public class ChargeBounceEffect : Script, IScriptForceTurnSelection, IScriptChangeIncomingMoveDamage, + IScriptBlockIncomingHit { private readonly IPokemon _owner; @@ -20,7 +21,7 @@ public class ChargeBounceEffect : Script, IScriptForceTurnSelection, IScriptChan } /// - public override void BlockIncomingHit(IExecutingMove executingMove, IPokemon target, byte hitIndex, ref bool block) + public void BlockIncomingHit(IExecutingMove executingMove, IPokemon target, byte hitIndex, ref bool block) { if (!executingMove.UseMove.HasFlag("hit_flying")) block = true; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/ChargeFlyEffect.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/ChargeFlyEffect.cs index 75f2992..9915dc2 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/ChargeFlyEffect.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/ChargeFlyEffect.cs @@ -3,7 +3,8 @@ using PkmnLib.Plugin.Gen7.Scripts.Utils; namespace PkmnLib.Plugin.Gen7.Scripts.Pokemon; [Script(ScriptCategory.Pokemon, "charge_fly")] -public class ChargeFlyEffect : Script, IScriptForceTurnSelection, IScriptChangeIncomingMoveDamage +public class ChargeFlyEffect : Script, IScriptForceTurnSelection, IScriptChangeIncomingMoveDamage, + IScriptBlockIncomingHit { private readonly IPokemon _owner; @@ -20,7 +21,7 @@ public class ChargeFlyEffect : Script, IScriptForceTurnSelection, IScriptChangeI } /// - public override void BlockIncomingHit(IExecutingMove executingMove, IPokemon target, byte hitIndex, ref bool block) + public void BlockIncomingHit(IExecutingMove executingMove, IPokemon target, byte hitIndex, ref bool block) { if (!executingMove.UseMove.HasFlag("hit_flying")) block = true; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/ChargeSkyDropEffect.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/ChargeSkyDropEffect.cs index 25200fd..63d5dc6 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/ChargeSkyDropEffect.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/ChargeSkyDropEffect.cs @@ -3,7 +3,8 @@ using PkmnLib.Plugin.Gen7.Scripts.Utils; namespace PkmnLib.Plugin.Gen7.Scripts.Pokemon; [Script(ScriptCategory.Pokemon, "charge_sky_drop")] -public class ChargeSkyDropEffect : Script, IScriptForceTurnSelection, IScriptChangeIncomingMoveDamage +public class ChargeSkyDropEffect : Script, IScriptForceTurnSelection, IScriptChangeIncomingMoveDamage, + IScriptBlockIncomingHit { private readonly IPokemon _owner; @@ -20,7 +21,7 @@ public class ChargeSkyDropEffect : Script, IScriptForceTurnSelection, IScriptCha } /// - public override void BlockIncomingHit(IExecutingMove executingMove, IPokemon target, byte hitIndex, ref bool block) + public void BlockIncomingHit(IExecutingMove executingMove, IPokemon target, byte hitIndex, ref bool block) { if (!executingMove.UseMove.HasFlag("hit_flying")) block = true; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/DestinyBondEffect.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/DestinyBondEffect.cs index e1cb5ce..de4e26d 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/DestinyBondEffect.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/DestinyBondEffect.cs @@ -1,10 +1,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Pokemon; [Script(ScriptCategory.Pokemon, "destiny_bond")] -public class DestinyBondEffect : Script, IScriptOnBeforeMove +public class DestinyBondEffect : Script, IScriptOnBeforeMove, IScriptOnFaint { /// - public override void OnFaint(IPokemon pokemon, DamageSource source) + public void OnFaint(IPokemon pokemon, DamageSource source) { if (source == DamageSource.MoveDamage) { diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/DigEffect.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/DigEffect.cs index ca58831..bbd8681 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/DigEffect.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/DigEffect.cs @@ -3,7 +3,7 @@ using PkmnLib.Plugin.Gen7.Scripts.Utils; namespace PkmnLib.Plugin.Gen7.Scripts.Pokemon; [Script(ScriptCategory.Pokemon, "dig")] -public class DigEffect : Script, IScriptForceTurnSelection, IScriptChangeIncomingMoveDamage +public class DigEffect : Script, IScriptForceTurnSelection, IScriptChangeIncomingMoveDamage, IScriptBlockIncomingHit { private readonly IPokemon _owner; @@ -20,7 +20,7 @@ public class DigEffect : Script, IScriptForceTurnSelection, IScriptChangeIncomin } /// - public override void BlockIncomingHit(IExecutingMove executingMove, IPokemon target, byte hitIndex, ref bool block) + public void BlockIncomingHit(IExecutingMove executingMove, IPokemon target, byte hitIndex, ref bool block) { if (!executingMove.UseMove.HasFlag("hit_underground")) block = true; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/DiveEffect.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/DiveEffect.cs index 55cc851..59d0f37 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/DiveEffect.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/DiveEffect.cs @@ -3,7 +3,7 @@ using PkmnLib.Plugin.Gen7.Scripts.Utils; namespace PkmnLib.Plugin.Gen7.Scripts.Pokemon; [Script(ScriptCategory.Pokemon, "dive")] -public class DiveEffect : Script, IScriptForceTurnSelection, IScriptChangeIncomingMoveDamage +public class DiveEffect : Script, IScriptForceTurnSelection, IScriptChangeIncomingMoveDamage, IScriptBlockIncomingHit { private readonly IPokemon _owner; @@ -20,7 +20,7 @@ public class DiveEffect : Script, IScriptForceTurnSelection, IScriptChangeIncomi } /// - public override void BlockIncomingHit(IExecutingMove executingMove, IPokemon target, byte hitIndex, ref bool block) + public void BlockIncomingHit(IExecutingMove executingMove, IPokemon target, byte hitIndex, ref bool block) { if (!executingMove.UseMove.HasFlag("hit_underwater")) block = true; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/EmbargoEffect.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/EmbargoEffect.cs index 98ab0a0..dbaef96 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/EmbargoEffect.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/EmbargoEffect.cs @@ -1,18 +1,18 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Pokemon; [Script(ScriptCategory.Pokemon, "embargo")] -public class EmbargoEffect : Script, IScriptOnEndTurn +public class EmbargoEffect : Script, IScriptOnEndTurn, IScriptStack, IScriptPreventHeldItemConsume { private int _turns = 5; /// - public override void PreventHeldItemConsume(IPokemon pokemon, IItem heldItem, ref bool prevented) + public void PreventHeldItemConsume(IPokemon pokemon, IItem heldItem, ref bool prevented) { prevented = true; } /// - public override void Stack() + public void Stack() { _turns = 5; } diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/EndureEffect.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/EndureEffect.cs index 44a3deb..c73e849 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/EndureEffect.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/EndureEffect.cs @@ -1,10 +1,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Pokemon; [Script(ScriptCategory.Pokemon, "endure")] -public class EndureEffect : Script, IScriptOnEndTurn +public class EndureEffect : Script, IScriptOnEndTurn, IScriptChangeIncomingDamage { /// - public override void ChangeIncomingDamage(IPokemon pokemon, DamageSource source, ref uint damage) + public void ChangeIncomingDamage(IPokemon pokemon, DamageSource source, ref uint damage) { if (damage > pokemon.CurrentHealth) damage = pokemon.CurrentHealth - 1; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/FireSpinEffect.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/FireSpinEffect.cs index a854629..56896ed 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/FireSpinEffect.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/FireSpinEffect.cs @@ -1,7 +1,7 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Pokemon; [Script(ScriptCategory.Pokemon, "fire_spin")] -public class FireSpinEffect : Script, IScriptOnEndTurn +public class FireSpinEffect : Script, IScriptOnEndTurn, IScriptPreventSelfRunAway, IScriptPreventSelfSwitch { private readonly IPokemon _owner; @@ -17,8 +17,8 @@ public class FireSpinEffect : Script, IScriptOnEndTurn } /// - public override void PreventSelfRunAway(IFleeChoice choice, ref bool prevent) => prevent = true; + public void PreventSelfRunAway(IFleeChoice choice, ref bool prevent) => prevent = true; /// - public override void PreventSelfSwitch(ISwitchChoice choice, ref bool prevent) => prevent = true; + public void PreventSelfSwitch(ISwitchChoice choice, ref bool prevent) => prevent = true; } \ No newline at end of file diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/GrudgeEffect.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/GrudgeEffect.cs index e1be0cd..e0352d0 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/GrudgeEffect.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/GrudgeEffect.cs @@ -1,7 +1,7 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Pokemon; [Script(ScriptCategory.Pokemon, "grudge")] -public class GrudgeEffect : Script, IScriptOnIncomingHit +public class GrudgeEffect : Script, IScriptOnIncomingHit, IScriptOnFaint { private ILearnedMove? _lastMove; @@ -12,7 +12,7 @@ public class GrudgeEffect : Script, IScriptOnIncomingHit } /// - public override void OnFaint(IPokemon pokemon, DamageSource source) + public void OnFaint(IPokemon pokemon, DamageSource source) { if (_lastMove != null && source == DamageSource.MoveDamage) { diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/InfestationEffect.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/InfestationEffect.cs index 1dbd322..4198c8e 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/InfestationEffect.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/InfestationEffect.cs @@ -1,7 +1,7 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Pokemon; [Script(ScriptCategory.Pokemon, "infestation")] -public class InfestationEffect : Script, IScriptOnEndTurn +public class InfestationEffect : Script, IScriptOnEndTurn, IScriptPreventSelfSwitch, IScriptPreventSelfRunAway { private readonly IPokemon _owner; private int _turns; @@ -13,10 +13,10 @@ public class InfestationEffect : Script, IScriptOnEndTurn } /// - public override void PreventSelfSwitch(ISwitchChoice choice, ref bool prevent) => prevent = true; + public void PreventSelfSwitch(ISwitchChoice choice, ref bool prevent) => prevent = true; /// - public override void PreventSelfRunAway(IFleeChoice choice, ref bool prevent) => prevent = true; + public void PreventSelfRunAway(IFleeChoice choice, ref bool prevent) => prevent = true; /// public void OnEndTurn(IScriptSource owner, IBattle battle) diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/IngrainEffect.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/IngrainEffect.cs index 68b3da4..2308ab4 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/IngrainEffect.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/IngrainEffect.cs @@ -1,7 +1,8 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Pokemon; [Script(ScriptCategory.Pokemon, "ingrain")] -public class IngrainEffect : Script, IScriptFailIncomingMove, IScriptOnEndTurn +public class IngrainEffect : Script, IScriptFailIncomingMove, IScriptOnEndTurn, IScriptPreventSelfSwitch, + IScriptPreventSelfRunAway { private readonly IPokemon _owner; @@ -11,10 +12,10 @@ public class IngrainEffect : Script, IScriptFailIncomingMove, IScriptOnEndTurn } /// - public override void PreventSelfSwitch(ISwitchChoice choice, ref bool prevent) => prevent = true; + public void PreventSelfSwitch(ISwitchChoice choice, ref bool prevent) => prevent = true; /// - public override void PreventSelfRunAway(IFleeChoice choice, ref bool prevent) => prevent = true; + public void PreventSelfRunAway(IFleeChoice choice, ref bool prevent) => prevent = true; /// public void OnEndTurn(IScriptSource owner, IBattle battle) diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/MagmaStormEffect.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/MagmaStormEffect.cs index 7442446..9cac62f 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/MagmaStormEffect.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/MagmaStormEffect.cs @@ -1,7 +1,7 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Pokemon; [Script(ScriptCategory.Pokemon, "magma_storm")] -public class MagmaStormEffect : Script, IScriptOnEndTurn +public class MagmaStormEffect : Script, IScriptOnEndTurn, IScriptPreventSelfRunAway, IScriptPreventSelfSwitch { private readonly IPokemon _owner; @@ -17,8 +17,8 @@ public class MagmaStormEffect : Script, IScriptOnEndTurn } /// - public override void PreventSelfRunAway(IFleeChoice choice, ref bool prevent) => prevent = true; + public void PreventSelfRunAway(IFleeChoice choice, ref bool prevent) => prevent = true; /// - public override void PreventSelfSwitch(ISwitchChoice choice, ref bool prevent) => prevent = true; + public void PreventSelfSwitch(ISwitchChoice choice, ref bool prevent) => prevent = true; } \ No newline at end of file diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/MeanLookEffect.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/MeanLookEffect.cs index 4d80fe3..c98d85a 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/MeanLookEffect.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/MeanLookEffect.cs @@ -19,11 +19,11 @@ public class MeanLookEffectUser : Script } [Script(ScriptCategory.Pokemon, "mean_look_target")] -public class MeanLookEffectTarget : Script +public class MeanLookEffectTarget : Script, IScriptPreventSelfSwitch, IScriptPreventSelfRunAway { /// - public override void PreventSelfSwitch(ISwitchChoice choice, ref bool prevent) => prevent = true; + public void PreventSelfSwitch(ISwitchChoice choice, ref bool prevent) => prevent = true; /// - public override void PreventSelfRunAway(IFleeChoice choice, ref bool prevent) => prevent = true; + public void PreventSelfRunAway(IFleeChoice choice, ref bool prevent) => prevent = true; } \ No newline at end of file diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/PhantomForceCharge.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/PhantomForceCharge.cs index c1c0c09..f2436f0 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/PhantomForceCharge.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/PhantomForceCharge.cs @@ -3,7 +3,7 @@ using PkmnLib.Plugin.Gen7.Scripts.Utils; namespace PkmnLib.Plugin.Gen7.Scripts.Pokemon; [Script(ScriptCategory.Pokemon, "phantom_force")] -public class PhantomForceCharge : Script, IScriptForceTurnSelection +public class PhantomForceCharge : Script, IScriptForceTurnSelection, IScriptBlockIncomingHit { private readonly IPokemon _owner; @@ -20,7 +20,7 @@ public class PhantomForceCharge : Script, IScriptForceTurnSelection } /// - public override void BlockIncomingHit(IExecutingMove executingMove, IPokemon target, byte hitIndex, ref bool block) + public void BlockIncomingHit(IExecutingMove executingMove, IPokemon target, byte hitIndex, ref bool block) { block = true; } diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/PowderEffect.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/PowderEffect.cs index ba8f20c..5a35ee3 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/PowderEffect.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/PowderEffect.cs @@ -1,11 +1,11 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Pokemon; [Script(ScriptCategory.Pokemon, "powder")] -public class PowderEffect : Script +public class PowderEffect : Script, IScriptBlockOutgoingHit { /// /// - public override void BlockOutgoingHit(IExecutingMove executingMove, IPokemon target, byte hitIndex, ref bool block) + public void BlockOutgoingHit(IExecutingMove executingMove, IPokemon target, byte hitIndex, ref bool block) { var hit = executingMove.GetHitData(target, hitIndex); if (hit.Type?.Name == "fire") diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/PreventFoesExitEffect.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/PreventFoesExitEffect.cs index 2c8a31c..872695b 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/PreventFoesExitEffect.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/PreventFoesExitEffect.cs @@ -1,16 +1,16 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Pokemon; [Script(ScriptCategory.Pokemon, "prevent_foes_exit_effect")] -public class PreventFoesExitEffect : Script +public class PreventFoesExitEffect : Script, IScriptPreventOpponentSwitch, IScriptPreventOpponentRunAway { /// - public override void PreventOpponentSwitch(ISwitchChoice choice, ref bool prevent) + public void PreventOpponentSwitch(ISwitchChoice choice, ref bool prevent) { prevent = true; } /// - public override void PreventOpponentRunAway(IFleeChoice choice, ref bool prevent) + public void PreventOpponentRunAway(IFleeChoice choice, ref bool prevent) { prevent = true; } diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/ProtectionEffectScript.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/ProtectionEffectScript.cs index d8d7a89..cfae584 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/ProtectionEffectScript.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/ProtectionEffectScript.cs @@ -1,10 +1,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Pokemon; [Script(ScriptCategory.Pokemon, "protect")] -public class ProtectionEffectScript : Script +public class ProtectionEffectScript : Script, IScriptBlockIncomingHit { /// - public override void BlockIncomingHit(IExecutingMove executingMove, IPokemon target, byte hitIndex, ref bool block) + public virtual void BlockIncomingHit(IExecutingMove executingMove, IPokemon target, byte hitIndex, ref bool block) { if (target.BattleData == null) return; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/PursuitEffect.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/PursuitEffect.cs index 4f467f0..5469f13 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/PursuitEffect.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/PursuitEffect.cs @@ -3,7 +3,7 @@ using PkmnLib.Dynamic.BattleFlow; namespace PkmnLib.Plugin.Gen7.Scripts.Pokemon; [Script(ScriptCategory.Pokemon, "pursuit")] -public class PursuitEffect : Script +public class PursuitEffect : Script, IScriptOnSwitchOut { private readonly IMoveChoice _choice; @@ -13,7 +13,7 @@ public class PursuitEffect : Script } /// - public override void OnSwitchOut(IPokemon oldPokemon, byte position) + public void OnSwitchOut(IPokemon oldPokemon, byte position) { var battleData = oldPokemon.BattleData; if (battleData == null) diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/ShadowForceCharge.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/ShadowForceCharge.cs index fdff1dd..4bab54b 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/ShadowForceCharge.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/ShadowForceCharge.cs @@ -3,7 +3,7 @@ using PkmnLib.Plugin.Gen7.Scripts.Utils; namespace PkmnLib.Plugin.Gen7.Scripts.Pokemon; [Script(ScriptCategory.Pokemon, "shadow_force")] -public class ShadowForceCharge : Script, IScriptForceTurnSelection +public class ShadowForceCharge : Script, IScriptForceTurnSelection, IScriptBlockIncomingHit { private readonly IPokemon _owner; @@ -20,7 +20,7 @@ public class ShadowForceCharge : Script, IScriptForceTurnSelection } /// - public override void BlockIncomingHit(IExecutingMove executingMove, IPokemon target, byte hitIndex, ref bool block) + public void BlockIncomingHit(IExecutingMove executingMove, IPokemon target, byte hitIndex, ref bool block) { block = true; } diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/SpiderWebEffect.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/SpiderWebEffect.cs index 90ecc67..c1b6f00 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/SpiderWebEffect.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/SpiderWebEffect.cs @@ -1,19 +1,19 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Pokemon; [Script(ScriptCategory.Pokemon, "spider_web_effect")] -public class SpiderWebEffect : Script +public class SpiderWebEffect : Script, IScriptPreventOpponentRunAway, IScriptPreventOpponentSwitch { private HashSet _targets = new(); /// - public override void PreventOpponentRunAway(IFleeChoice choice, ref bool prevent) + public void PreventOpponentRunAway(IFleeChoice choice, ref bool prevent) { if (_targets.Contains(choice.User)) prevent = true; } /// - public override void PreventOpponentSwitch(ISwitchChoice choice, ref bool prevent) + public void PreventOpponentSwitch(ISwitchChoice choice, ref bool prevent) { if (_targets.Contains(choice.User)) prevent = true; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/StockpileEffect.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/StockpileEffect.cs index 27d0d0b..b381bce 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/StockpileEffect.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/StockpileEffect.cs @@ -1,7 +1,7 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Pokemon; [Script(ScriptCategory.Pokemon, "stockpile_effect")] -public class StockpileEffect : Script +public class StockpileEffect : Script, IScriptStack { private IPokemon? _pokemon; public int StockpileCount { get; set; } = 1; @@ -21,7 +21,7 @@ public class StockpileEffect : Script } /// - public override void Stack() + public void Stack() { if (StockpileCount < 3) { diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/SubstituteEffect.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/SubstituteEffect.cs index e5de7fc..c09011a 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/SubstituteEffect.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/SubstituteEffect.cs @@ -1,12 +1,12 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Pokemon; [Script(ScriptCategory.Pokemon, "substitute")] -public class SubstituteEffect(uint health) : Script +public class SubstituteEffect(uint health) : Script, IScriptBlockIncomingHit { private uint _health = health; /// - public override void BlockIncomingHit(IExecutingMove executingMove, IPokemon target, byte hitIndex, ref bool block) + public void BlockIncomingHit(IExecutingMove executingMove, IPokemon target, byte hitIndex, ref bool block) { if (executingMove.UseMove.HasFlag("ignore-substitute")) return; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/ThousandWavesEffect.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/ThousandWavesEffect.cs index 6073698..e975c3e 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/ThousandWavesEffect.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/ThousandWavesEffect.cs @@ -1,11 +1,11 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Pokemon; [Script(ScriptCategory.Pokemon, "thousand_waves")] -public class ThousandWavesEffect : Script +public class ThousandWavesEffect : Script, IScriptPreventSelfSwitch, IScriptPreventSelfRunAway { /// - public override void PreventSelfSwitch(ISwitchChoice choice, ref bool prevent) => prevent = true; + public void PreventSelfSwitch(ISwitchChoice choice, ref bool prevent) => prevent = true; /// - public override void PreventSelfRunAway(IFleeChoice choice, ref bool prevent) => prevent = true; + public void PreventSelfRunAway(IFleeChoice choice, ref bool prevent) => prevent = true; } \ No newline at end of file diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/WhirlpoolEffect.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/WhirlpoolEffect.cs index 18e42d2..4a48c84 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/WhirlpoolEffect.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/WhirlpoolEffect.cs @@ -1,7 +1,7 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Pokemon; [Script(ScriptCategory.Pokemon, "whirlpool")] -public class WhirlpoolEffect : Script, IScriptOnEndTurn +public class WhirlpoolEffect : Script, IScriptOnEndTurn, IScriptPreventOpponentRunAway, IScriptPreventOpponentSwitch { public record PokemonTurn { @@ -42,14 +42,14 @@ public class WhirlpoolEffect : Script, IScriptOnEndTurn } /// - public override void PreventOpponentRunAway(IFleeChoice choice, ref bool prevent) + public void PreventOpponentRunAway(IFleeChoice choice, ref bool prevent) { if (_targetedPokemon.Any(x => x.Pokemon == choice.User)) prevent = true; } /// - public override void PreventOpponentSwitch(ISwitchChoice choice, ref bool prevent) + public void PreventOpponentSwitch(ISwitchChoice choice, ref bool prevent) { if (_targetedPokemon.Any(x => x.Pokemon == choice.User)) prevent = true; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Side/DoublePowerIfTargetDamagedInTurnData.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Side/DoublePowerIfTargetDamagedInTurnData.cs index bd7e46d..2b8222e 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Side/DoublePowerIfTargetDamagedInTurnData.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Side/DoublePowerIfTargetDamagedInTurnData.cs @@ -1,7 +1,7 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Side; [Script(ScriptCategory.Side, "double_power_if_target_damaged_in_turn_data")] -public class DoublePowerIfTargetDamagedInTurnData : Script, IScriptOnEndTurn +public class DoublePowerIfTargetDamagedInTurnData : Script, IScriptOnEndTurn, IScriptOnDamage { public readonly HashSet HitPokemon = []; @@ -14,7 +14,7 @@ public class DoublePowerIfTargetDamagedInTurnData : Script, IScriptOnEndTurn } /// - public override void OnDamage(IPokemon pokemon, DamageSource source, uint oldHealth, uint newHealth) + public void OnDamage(IPokemon pokemon, DamageSource source, uint oldHealth, uint newHealth) { HitPokemon.Add(pokemon); } diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Side/HealingWishEffect.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Side/HealingWishEffect.cs index cf6e04a..814c63b 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Side/HealingWishEffect.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Side/HealingWishEffect.cs @@ -1,7 +1,7 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Side; [Script(ScriptCategory.Side, "healing_wish")] -public class HealingWishEffect : Script +public class HealingWishEffect : Script, IScriptOnSwitchIn { private readonly byte _position; @@ -11,7 +11,7 @@ public class HealingWishEffect : Script } /// - public override void OnSwitchIn(IPokemon pokemon, byte position) + public void OnSwitchIn(IPokemon pokemon, byte position) { if (position == _position) { diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Side/LunarDanceEffect.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Side/LunarDanceEffect.cs index 8432121..9f885d2 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Side/LunarDanceEffect.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Side/LunarDanceEffect.cs @@ -1,10 +1,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Side; [Script(ScriptCategory.Side, "lunar_dance")] -public class LunarDanceEffect(byte position) : Script +public class LunarDanceEffect(byte position) : Script, IScriptOnSwitchIn { /// - public override void OnSwitchIn(IPokemon pokemon, byte position1) + public void OnSwitchIn(IPokemon pokemon, byte position1) { if (position != position1) return; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Side/MatBlockEffect.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Side/MatBlockEffect.cs index ba5022f..8924bc4 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Side/MatBlockEffect.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Side/MatBlockEffect.cs @@ -2,10 +2,10 @@ using PkmnLib.Static.Moves; namespace PkmnLib.Plugin.Gen7.Scripts.Side; -public class MatBlockEffect : Script, IScriptOnEndTurn +public class MatBlockEffect : Script, IScriptOnEndTurn, IScriptBlockIncomingHit { /// - public override void BlockIncomingHit(IExecutingMove executingMove, IPokemon target, byte hitIndex, ref bool block) + public void BlockIncomingHit(IExecutingMove executingMove, IPokemon target, byte hitIndex, ref bool block) { if (executingMove.UseMove.Category != MoveCategory.Status) block = true; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Side/SpikesEffect.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Side/SpikesEffect.cs index d30a192..ceb853d 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Side/SpikesEffect.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Side/SpikesEffect.cs @@ -1,19 +1,19 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Side; [Script(ScriptCategory.Side, "spikes")] -public class SpikesEffect : Script +public class SpikesEffect : Script, IScriptOnSwitchIn, IScriptStack { private int _layers = 1; /// - public override void Stack() + public void Stack() { if (_layers < 3) _layers++; } /// - public override void OnSwitchIn(IPokemon pokemon, byte position) + public void OnSwitchIn(IPokemon pokemon, byte position) { if (pokemon.IsFloating) return; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Side/StealthRockEffect.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Side/StealthRockEffect.cs index 44386a5..dbcdbcf 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Side/StealthRockEffect.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Side/StealthRockEffect.cs @@ -1,10 +1,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Side; [Script(ScriptCategory.Side, "stealth_rock")] -public class StealthRockEffect : Script +public class StealthRockEffect : Script, IScriptOnSwitchIn { /// - public override void OnSwitchIn(IPokemon pokemon, byte position) + public void OnSwitchIn(IPokemon pokemon, byte position) { var typeLibrary = pokemon.Library.StaticLibrary.Types; var effectiveness = 1.0f; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Side/StickyWebEffect.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Side/StickyWebEffect.cs index dc5a1b2..b86c340 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Side/StickyWebEffect.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Side/StickyWebEffect.cs @@ -1,10 +1,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Side; [Script(ScriptCategory.Side, "sticky_web")] -public class StickyWebEffect : Script +public class StickyWebEffect : Script, IScriptOnSwitchIn { /// - public override void OnSwitchIn(IPokemon pokemon, byte position) + public void OnSwitchIn(IPokemon pokemon, byte position) { if (pokemon.IsFloating) return; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Side/ToxicSpikesEffect.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Side/ToxicSpikesEffect.cs index 19e03dd..53681de 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Side/ToxicSpikesEffect.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Side/ToxicSpikesEffect.cs @@ -1,10 +1,10 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Side; [Script(ScriptCategory.Side, "toxic_spikes")] -public class ToxicSpikesEffect : Script +public class ToxicSpikesEffect : Script, IScriptOnSwitchIn { /// - public override void OnSwitchIn(IPokemon pokemon, byte position) + public void OnSwitchIn(IPokemon pokemon, byte position) { if (pokemon.IsFloating) return; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Status/BadlyPoisoned.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Status/BadlyPoisoned.cs index f89688d..3d88e50 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Status/BadlyPoisoned.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Status/BadlyPoisoned.cs @@ -9,7 +9,7 @@ public class BadlyPoisoned : Poisoned, IScriptOnEndTurn public override float GetPoisonMultiplier() => 1f / (16f * _turns); /// - public void OnEndTurn(IScriptSource owner, IBattle battle) + public override void OnEndTurn(IScriptSource owner, IBattle battle) { base.OnEndTurn(owner, battle); _turns = Math.Min(_turns + 1, 15); diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Status/Poisoned.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Status/Poisoned.cs index b19c919..962df26 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Status/Poisoned.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Status/Poisoned.cs @@ -16,7 +16,7 @@ public class Poisoned : Script, IScriptOnEndTurn public virtual float GetPoisonMultiplier() => 1f / 8f; /// - public void OnEndTurn(IScriptSource owner, IBattle battle) + public virtual void OnEndTurn(IScriptSource owner, IBattle battle) { if (_pokemon == null) return; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Weather/DesolateLands.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Weather/DesolateLands.cs index 7ece495..bb57c80 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Weather/DesolateLands.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Weather/DesolateLands.cs @@ -1,7 +1,7 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Weather; [Script(ScriptCategory.Weather, "desolate_lands")] -public class DesolateLands : HarshSunlight, IScriptFailMove, IScriptOnEndTurn +public class DesolateLands : HarshSunlight, IScriptFailMove, IScriptOnEndTurn, IScriptOnSwitchOut { private readonly HashSet _placers = []; @@ -11,7 +11,7 @@ public class DesolateLands : HarshSunlight, IScriptFailMove, IScriptOnEndTurn } /// - public override void OnSwitchOut(IPokemon oldPokemon, byte position) + public void OnSwitchOut(IPokemon oldPokemon, byte position) { _placers.Remove(oldPokemon); if (_placers.Count == 0) @@ -35,7 +35,7 @@ public class DesolateLands : HarshSunlight, IScriptFailMove, IScriptOnEndTurn } /// - public void OnEndTurn(IScriptSource owner, IBattle battle) + public override void OnEndTurn(IScriptSource owner, IBattle battle) { // We don't want to call base.OnEndTurn here, as we want to prevent the weather from ending } diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Weather/HarshSunlight.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Weather/HarshSunlight.cs index dbb2766..d7659af 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Weather/HarshSunlight.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Weather/HarshSunlight.cs @@ -20,7 +20,7 @@ public class HarshSunlight : Script, ILimitedTurnsScript, IScriptChangeBasePower } /// - public void OnEndTurn(IScriptSource owner, IBattle battle) + public virtual void OnEndTurn(IScriptSource owner, IBattle battle) { _duration--; if (_duration <= 0) diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Weather/PrimordialSea.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Weather/PrimordialSea.cs index 0f07eb5..9d32b67 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Weather/PrimordialSea.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Weather/PrimordialSea.cs @@ -1,7 +1,7 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Weather; [Script(ScriptCategory.Weather, "primordial_sea")] -public class PrimordialSea : Rain, IScriptFailMove, IScriptOnEndTurn +public class PrimordialSea : Rain, IScriptFailMove, IScriptOnEndTurn, IScriptOnSwitchOut { private HashSet _placers = new(); @@ -11,7 +11,7 @@ public class PrimordialSea : Rain, IScriptFailMove, IScriptOnEndTurn } /// - public override void OnSwitchOut(IPokemon oldPokemon, byte position) + public void OnSwitchOut(IPokemon oldPokemon, byte position) { _placers.Remove(oldPokemon); if (_placers.Count == 0) @@ -34,7 +34,7 @@ public class PrimordialSea : Rain, IScriptFailMove, IScriptOnEndTurn } /// - public void OnEndTurn(IScriptSource owner, IBattle battle) + public override void OnEndTurn(IScriptSource owner, IBattle battle) { // We don't want to call base.OnEndTurn here, as we want to prevent the weather from ending } diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Weather/Rain.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Weather/Rain.cs index a8ff06c..c785386 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Weather/Rain.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Weather/Rain.cs @@ -15,7 +15,7 @@ public class Rain : Script, ILimitedTurnsScript, IScriptChangeBasePower, IScript } /// - public void OnEndTurn(IScriptSource owner, IBattle battle) + public virtual void OnEndTurn(IScriptSource owner, IBattle battle) { _duration--; if (_duration <= 0) diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Weather/StrongWinds.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Weather/StrongWinds.cs index 6f4a4c9..4854ac2 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Weather/StrongWinds.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Weather/StrongWinds.cs @@ -6,7 +6,7 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Weather; /// Bulbapedia - Strong Winds /// [Script(ScriptCategory.Weather, "strong_winds")] -public class StrongWinds : Script +public class StrongWinds : Script, IScriptOnSwitchOut { private HashSet _placers = new(); @@ -16,7 +16,7 @@ public class StrongWinds : Script } /// - public override void OnSwitchOut(IPokemon oldPokemon, byte position) + public void OnSwitchOut(IPokemon oldPokemon, byte position) { _placers.Remove(oldPokemon); if (_placers.Count == 0)