From a6c73a9c046bc2ae7a5202e25c5c9668e120987b Mon Sep 17 00:00:00 2001 From: Deukhoofd Date: Fri, 7 Mar 2025 16:16:22 +0100 Subject: [PATCH] Implements more move effects --- PkmnLib.Dynamic/Models/LearnedMove.cs | 12 +++++ PkmnLib.Dynamic/Models/Pokemon.cs | 1 + PkmnLib.Dynamic/ScriptHandling/ScriptSet.cs | 2 +- PkmnLib.NET.sln.DotSettings | 2 + PkmnLib.Tests/Data/Moves.json | 48 +++++++++++++++---- .../Scripts/Battle/Gravity.cs | 35 ++++++++++++++ .../Moves/ChangeMultipleUserStatBoosts.cs | 2 +- .../Scripts/Moves/Frustration.cs | 2 +- .../Scripts/Moves/Gravity.cs | 36 ++++++++++++++ .../Scripts/Moves/Grudge.cs | 19 ++++++++ .../Scripts/Moves/GuardSplit.cs | 27 +++++++++++ .../Scripts/Moves/GuardSwap.cs | 29 +++++++++++ .../Scripts/Moves/GuardianOfAlola.cs | 12 +++++ .../Scripts/Moves/GyroBall.cs | 13 +++++ .../Scripts/Pokemon/GrudgeEffect.cs | 22 +++++++++ 15 files changed, 251 insertions(+), 11 deletions(-) create mode 100644 PkmnLib.NET.sln.DotSettings create mode 100644 Plugins/PkmnLib.Plugin.Gen7/Scripts/Battle/Gravity.cs create mode 100644 Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Gravity.cs create mode 100644 Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Grudge.cs create mode 100644 Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/GuardSplit.cs create mode 100644 Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/GuardSwap.cs create mode 100644 Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/GuardianOfAlola.cs create mode 100644 Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/GyroBall.cs create mode 100644 Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/GrudgeEffect.cs diff --git a/PkmnLib.Dynamic/Models/LearnedMove.cs b/PkmnLib.Dynamic/Models/LearnedMove.cs index 0bc7269..74637cb 100644 --- a/PkmnLib.Dynamic/Models/LearnedMove.cs +++ b/PkmnLib.Dynamic/Models/LearnedMove.cs @@ -80,6 +80,12 @@ public interface ILearnedMove : IDeepCloneable /// Restore the remaining PP by a certain amount. Will prevent it from going above max PP. /// void RestoreUses(byte amount); + + /// + /// Forcibly set the remaining PP to a certain amount. + /// + /// + void SetCurrentPP(byte uses); } /// @@ -136,4 +142,10 @@ public class LearnedMoveImpl : ILearnedMove /// Restore the PP by a certain amount. This will prevent the PP from going above the maximum PP. /// public void RestoreUses(byte amount) => CurrentPp = (byte)Math.Min(CurrentPp + amount, MaxPp); + + /// + public void SetCurrentPP(byte uses) + { + CurrentPp = Math.Min(uses, MaxPp); + } } \ No newline at end of file diff --git a/PkmnLib.Dynamic/Models/Pokemon.cs b/PkmnLib.Dynamic/Models/Pokemon.cs index 575643d..320082e 100644 --- a/PkmnLib.Dynamic/Models/Pokemon.cs +++ b/PkmnLib.Dynamic/Models/Pokemon.cs @@ -1091,6 +1091,7 @@ public class PokemonImpl : ScriptSource, IPokemon Types = Form.Types; OverrideAbility = null; AbilitySuppressed = false; + RecalculateFlatStats(); } } } diff --git a/PkmnLib.Dynamic/ScriptHandling/ScriptSet.cs b/PkmnLib.Dynamic/ScriptHandling/ScriptSet.cs index 8b6952d..bf1207b 100644 --- a/PkmnLib.Dynamic/ScriptHandling/ScriptSet.cs +++ b/PkmnLib.Dynamic/ScriptHandling/ScriptSet.cs @@ -21,7 +21,7 @@ public interface IScriptSet : IEnumerable /// Adds a script with a name to the set. If the script with that name already exists in this /// set, this makes that script stack instead. The return value here is that script. /// - ScriptContainer? StackOrAdd(StringKey scriptKey, Func