diff --git a/PkmnLib.Dynamic/Libraries/DamageCalculator.cs b/PkmnLib.Dynamic/Libraries/DamageCalculator.cs index 39fbcfa..c589e54 100644 --- a/PkmnLib.Dynamic/Libraries/DamageCalculator.cs +++ b/PkmnLib.Dynamic/Libraries/DamageCalculator.cs @@ -15,7 +15,7 @@ public interface IDamageCalculator /// /// Calculate the base power for a given hit on a Pokemon. /// - byte GetBasePower(IExecutingMove executingMove, IPokemon target, byte hitNumber, IHitData hitData); + ushort GetBasePower(IExecutingMove executingMove, IPokemon target, byte hitNumber, IHitData hitData); /// /// Returns whether a specified hit should be critical or not. diff --git a/PkmnLib.Dynamic/Models/BattleFlow/MoveTurnExecutor.cs b/PkmnLib.Dynamic/Models/BattleFlow/MoveTurnExecutor.cs index 8574696..48c3575 100644 --- a/PkmnLib.Dynamic/Models/BattleFlow/MoveTurnExecutor.cs +++ b/PkmnLib.Dynamic/Models/BattleFlow/MoveTurnExecutor.cs @@ -76,9 +76,16 @@ public static class MoveTurnExecutor if (failed) { // TODO: fail handling + executingMove.MoveChoice.Fail(); return; } ExecuteMove(executingMove); + + if (executingMove.Hits.All(x => x.HasFailed) || (executingMove.UseMove.Category != MoveCategory.Status && + executingMove.Hits.All(x => x.Damage == 0))) + { + executingMove.MoveChoice.Fail(); + } } public static void ExecuteMove(IExecutingMove executingMove) diff --git a/PkmnLib.Dynamic/Models/ExecutingMove.cs b/PkmnLib.Dynamic/Models/ExecutingMove.cs index 757bb03..dca6b79 100644 --- a/PkmnLib.Dynamic/Models/ExecutingMove.cs +++ b/PkmnLib.Dynamic/Models/ExecutingMove.cs @@ -20,7 +20,7 @@ public interface IHitData /// /// The base power of the hit. /// - byte BasePower { get; } + ushort BasePower { get; } /// /// The effectiveness of the hit. @@ -55,7 +55,7 @@ public record HitData : IHitData public bool IsCritical { get; internal set; } /// - public byte BasePower { get; internal set; } + public ushort BasePower { get; internal set; } /// public float Effectiveness { get; internal set; } diff --git a/PkmnLib.Dynamic/Models/LearnedMove.cs b/PkmnLib.Dynamic/Models/LearnedMove.cs index c84af85..76dbff2 100644 --- a/PkmnLib.Dynamic/Models/LearnedMove.cs +++ b/PkmnLib.Dynamic/Models/LearnedMove.cs @@ -76,6 +76,11 @@ public interface ILearnedMove : IDeepCloneable /// bool TryUse(byte amount = 1); + /// + /// Reduce the remaining PP by a certain amount. If the number of PP is already 0, return false. + /// + bool ReduceUses(byte amount = 1); + /// /// Set the remaining PP to the max amount of PP. /// @@ -139,6 +144,20 @@ public class LearnedMoveImpl : ILearnedMove return true; } + /// + public bool ReduceUses(byte amount = 1) + { + if (CurrentPp == 0) + return false; + + if (CurrentPp >= amount) + CurrentPp -= amount; + else + CurrentPp = 0; + + return true; + } + /// /// Restore the PP to the maximum amount of PP. /// diff --git a/PkmnLib.Dynamic/Models/Pokemon.cs b/PkmnLib.Dynamic/Models/Pokemon.cs index d158e9a..f80f596 100644 --- a/PkmnLib.Dynamic/Models/Pokemon.cs +++ b/PkmnLib.Dynamic/Models/Pokemon.cs @@ -403,6 +403,12 @@ public interface IPokemon : IScriptSource, IDeepCloneable /// void ChangeAbility(IAbility ability); + /// + /// Whether the Pokémon is levitating. This is used for moves like Magnet Rise, and abilities such as + /// Levitate. + /// + bool IsFloating { get; } + /// /// Converts the data structure to a serializable format. /// @@ -1206,6 +1212,17 @@ public class PokemonImpl : ScriptSource, IPokemon } } + /// + public bool IsFloating + { + get + { + var isFloating = Types.Any(x => x.Name == "flying"); + this.RunScriptHook(x => x.IsFloating(this, ref isFloating)); + return isFloating; + } + } + /// public SerializedPokemon Serialize() => new(this); diff --git a/PkmnLib.Dynamic/ScriptHandling/Script.cs b/PkmnLib.Dynamic/ScriptHandling/Script.cs index 43f9759..9f6f29c 100644 --- a/PkmnLib.Dynamic/ScriptHandling/Script.cs +++ b/PkmnLib.Dynamic/ScriptHandling/Script.cs @@ -307,7 +307,7 @@ public abstract class Script : IDeepCloneable /// /// This function allows a script to change the effective base power of a move hit. /// - public virtual void ChangeBasePower(IExecutingMove move, IPokemon target, byte hit, ref byte basePower) + public virtual void ChangeBasePower(IExecutingMove move, IPokemon target, byte hit, ref ushort basePower) { } @@ -697,4 +697,8 @@ public abstract class Script : IDeepCloneable public virtual void PreventVolatileAdd(Script script, ref bool preventVolatileAdd) { } + + public virtual void IsFloating(IPokemon pokemon, ref bool isFloating) + { + } } \ No newline at end of file diff --git a/PkmnLib.Static/Utils/NumericHelpers.cs b/PkmnLib.Static/Utils/NumericHelpers.cs index d6424cc..7729dc5 100644 --- a/PkmnLib.Static/Utils/NumericHelpers.cs +++ b/PkmnLib.Static/Utils/NumericHelpers.cs @@ -41,6 +41,15 @@ public static class NumericHelpers return result > ushort.MaxValue ? ushort.MaxValue : (ushort)result; } + /// + /// Multiplies two values. If this overflows, returns . + /// + public static ushort MultiplyOrMax(this ushort value, float multiplier) + { + var result = value * multiplier; + return result > ushort.MaxValue ? ushort.MaxValue : (ushort)result; + } + /// /// Multiplies two values. If this overflows, returns . /// diff --git a/PkmnLib.Tests/Data/Moves.jsonc b/PkmnLib.Tests/Data/Moves.jsonc index e46fc9f..21935fb 100755 --- a/PkmnLib.Tests/Data/Moves.jsonc +++ b/PkmnLib.Tests/Data/Moves.jsonc @@ -10608,7 +10608,10 @@ "flags": [ "reflectable", "nonskybattle" - ] + ], + "effect": { + "name": "spikes" + } }, { "name": "spiky_shield", @@ -10619,7 +10622,10 @@ "priority": 4, "target": "Self", "category": "status", - "flags": [] + "flags": [], + "effect": { + "name": "spiky_shield" + } }, { "name": "spirit_shackle", @@ -10633,7 +10639,10 @@ "flags": [ "protect", "mirror" - ] + ], + "effect": { + "name": "prevent_foes_exit" + } }, { "name": "spit_up", @@ -10646,7 +10655,10 @@ "category": "special", "flags": [ "protect" - ] + ], + "effect": { + "name": "spit_up" + } }, { "name": "spite", @@ -10662,7 +10674,10 @@ "reflectable", "mirror", "ignore-substitute" - ] + ], + "effect": { + "name": "spite" + } }, { "name": "splash", @@ -10676,6 +10691,7 @@ "flags": [ "gravity" ] + // No secondary effect }, { "name": "spore", @@ -10691,7 +10707,13 @@ "reflectable", "mirror", "powder" - ] + ], + "effect": { + "name": "set_status", + "parameters": { + "status": "sleep" + } + } }, { "name": "spotlight", @@ -10705,7 +10727,10 @@ "flags": [ "protect", "reflectable" - ] + ], + "effect": { + "name": "spotlight" + } }, { "name": "stealth_rock", @@ -10718,7 +10743,10 @@ "category": "status", "flags": [ "reflectable" - ] + ], + "effect": { + "name": "stealth_rock" + } }, { "name": "steam_eruption", @@ -10733,7 +10761,14 @@ "protect", "mirror", "defrost" - ] + ], + "effect": { + "name": "set_status", + "chance": 30, + "parameters": { + "status": "burned" + } + } }, { "name": "steamroller", @@ -10748,7 +10783,11 @@ "contact", "protect", "mirror" - ] + ], + "effect": { + "name": "flinch", + "chance": 30 + } }, { "name": "steel_wing", @@ -10763,7 +10802,13 @@ "contact", "protect", "mirror" - ] + ], + "effect": { + "name": "change_user_defense", + "parameters": { + "amount": 1 + } + } }, { "name": "sticky_web", @@ -10776,7 +10821,10 @@ "category": "status", "flags": [ "reflectable" - ] + ], + "effect": { + "name": "sticky_web" + } }, { "name": "stockpile", @@ -10789,7 +10837,10 @@ "category": "status", "flags": [ "snatch" - ] + ], + "effect": { + "name": "stockpile" + } }, { "name": "stoked_sparksurfer", @@ -10800,7 +10851,13 @@ "priority": 0, "target": "Any", "category": "special", - "flags": [] + "flags": [], + "effect": { + "name": "set_status", + "parameters": { + "status": "paralyzed" + } + } }, { "name": "stomp", @@ -10816,7 +10873,11 @@ "protect", "mirror", "nonskybattle" - ] + ], + "effect": { + "name": "flinch", + "chance": 30 + } }, { "name": "stomping_tantrum", @@ -10831,7 +10892,10 @@ "contact", "protect", "mirror" - ] + ], + "effect": { + "name": "stomping_tantrum" + } }, { "name": "stone_edge", @@ -10845,7 +10909,10 @@ "flags": [ "protect", "mirror" - ] + ], + "effect": { + "name": "increased_critical_stage" + } }, { "name": "stored_power", @@ -10859,7 +10926,10 @@ "flags": [ "protect", "mirror" - ] + ], + "effect": { + "name": "power_trip" + } }, { "name": "storm_throw", @@ -10874,7 +10944,10 @@ "contact", "protect", "mirror" - ] + ], + "effect": { + "name": "storm_throw" + } }, { "name": "strength", @@ -10890,6 +10963,7 @@ "protect", "mirror" ] + // No secondary effect }, { "name": "strength_sap", @@ -10905,7 +10979,10 @@ "reflectable", "mirror", "heal" - ] + ], + "effect": { + "name": "strength_sap" + } }, { "name": "string_shot", @@ -10920,7 +10997,13 @@ "protect", "reflectable", "mirror" - ] + ], + "effect": { + "name": "change_target_speed", + "parameters": { + "amount": -2 + } + } }, { "name": "struggle_bug", @@ -10934,7 +11017,13 @@ "flags": [ "protect", "mirror" - ] + ], + "effect": { + "name": "change_target_special_attack", + "parameters": { + "amount": -1 + } + } }, { "name": "stun_spore", @@ -10950,7 +11039,13 @@ "reflectable", "mirror", "powder" - ] + ], + "effect": { + "name": "set_status", + "parameters": { + "status": "paralyzed" + } + } }, { "name": "submission", @@ -10965,7 +11060,13 @@ "contact", "protect", "mirror" - ] + ], + "effect": { + "name": "recoil", + "parameters": { + "recoilPercent": 0.25 + } + } }, { "name": "substitute", diff --git a/PkmnLib.Tests/DataTests/MoveDataTests.cs b/PkmnLib.Tests/DataTests/MoveDataTests.cs index a8b1f05..a62cf8b 100644 --- a/PkmnLib.Tests/DataTests/MoveDataTests.cs +++ b/PkmnLib.Tests/DataTests/MoveDataTests.cs @@ -56,4 +56,35 @@ public class MoveDataTests e); } } + + public record SetStatusTestCaseData(IDynamicLibrary Library, IMoveData Move) + { + /// + public override string ToString() => Move.Name + " has valid status: " + + Move.SecondaryEffect?.Parameters.GetValueOrDefault("status"); + } + + public static IEnumerable> SetStatusMovesHaveValidStatusData() + { + var library = LibraryHelpers.LoadLibrary(); + var moveLibrary = library.StaticLibrary.Moves; + foreach (var move in moveLibrary) + { + if (move.SecondaryEffect?.Name != "set_status") + continue; + yield return () => new SetStatusTestCaseData(library, move); + } + } + + [Test, MethodDataSource(nameof(SetStatusMovesHaveValidStatusData))] + public async Task SetStatusMovesHaveValidStatus(SetStatusTestCaseData test) + { + if (test.Move.SecondaryEffect == null) + return; + var status = test.Move.SecondaryEffect.Parameters["status"]?.ToString(); + if (status == null) + throw new Exception("Missing required parameter 'status'"); + + await Assert.That(test.Library.ScriptResolver.TryResolve(ScriptCategory.Status, status, null, out _)).IsTrue(); + } } \ No newline at end of file diff --git a/Plugins/PkmnLib.Plugin.Gen7.Tests/Scripts/Moves/AcrobaticsTests.cs b/Plugins/PkmnLib.Plugin.Gen7.Tests/Scripts/Moves/AcrobaticsTests.cs index 2529729..66fe2aa 100644 --- a/Plugins/PkmnLib.Plugin.Gen7.Tests/Scripts/Moves/AcrobaticsTests.cs +++ b/Plugins/PkmnLib.Plugin.Gen7.Tests/Scripts/Moves/AcrobaticsTests.cs @@ -12,7 +12,7 @@ public class AcrobaticsTests // Arrange var move = Substitute.For(); var target = Substitute.For(); - byte basePower = 10; + ushort basePower = 10; var user = Substitute.For(); user.HeldItem.Returns((IItem?)null); move.User.Returns(user); @@ -31,7 +31,7 @@ public class AcrobaticsTests // Arrange var move = Substitute.For(); var target = Substitute.For(); - byte basePower = 10; + ushort basePower = 10; var user = Substitute.For(); user.HeldItem.Returns(Substitute.For()); move.User.Returns(user); @@ -50,7 +50,7 @@ public class AcrobaticsTests // Arrange var move = Substitute.For(); var target = Substitute.For(); - byte basePower = 200; + ushort basePower = ushort.MaxValue - 100; var user = Substitute.For(); move.User.Returns(user); user.HeldItem.Returns((IItem?)null); @@ -60,6 +60,6 @@ public class AcrobaticsTests acrobatics.ChangeBasePower(move, target, 0, ref basePower); // Assert - await Assert.That(basePower).IsEqualTo(byte.MaxValue); + await Assert.That(basePower).IsEqualTo(ushort.MaxValue); } } \ No newline at end of file diff --git a/Plugins/PkmnLib.Plugin.Gen7.Tests/Scripts/Moves/HiddenPowerTests.cs b/Plugins/PkmnLib.Plugin.Gen7.Tests/Scripts/Moves/HiddenPowerTests.cs index b9c9e51..05d11d4 100644 --- a/Plugins/PkmnLib.Plugin.Gen7.Tests/Scripts/Moves/HiddenPowerTests.cs +++ b/Plugins/PkmnLib.Plugin.Gen7.Tests/Scripts/Moves/HiddenPowerTests.cs @@ -82,7 +82,7 @@ public class HiddenPowerTests dynamicLibrary.StaticLibrary.Returns(staticLibrary); var hiddenPower = new HiddenPower(); - byte power = 0; + ushort power = 0; hiddenPower.ChangeBasePower(executingMove, target, 0, ref power); await Assert.That(power).IsEqualTo(test.ExpectedPower); diff --git a/Plugins/PkmnLib.Plugin.Gen7/GlobalUsings.cs b/Plugins/PkmnLib.Plugin.Gen7/GlobalUsings.cs index 99c8bc9..ab5c8e9 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/GlobalUsings.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/GlobalUsings.cs @@ -2,4 +2,5 @@ global using PkmnLib.Dynamic.ScriptHandling; global using PkmnLib.Dynamic.ScriptHandling.Registry; global using PkmnLib.Dynamic.Events; global using PkmnLib.Dynamic.Models; -global using PkmnLib.Dynamic.Models.Choices; \ No newline at end of file +global using PkmnLib.Dynamic.Models.Choices; +global using PkmnLib.Static; \ No newline at end of file diff --git a/Plugins/PkmnLib.Plugin.Gen7/Libraries/Gen7BattleStatCalculator.cs b/Plugins/PkmnLib.Plugin.Gen7/Libraries/Gen7BattleStatCalculator.cs index f013ab1..572111c 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Libraries/Gen7BattleStatCalculator.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Libraries/Gen7BattleStatCalculator.cs @@ -1,6 +1,5 @@ using System; using PkmnLib.Dynamic.Libraries; -using PkmnLib.Static; namespace PkmnLib.Plugin.Gen7.Libraries; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Libraries/Gen7CaptureLibrary.cs b/Plugins/PkmnLib.Plugin.Gen7/Libraries/Gen7CaptureLibrary.cs index de00e9c..135d72c 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Libraries/Gen7CaptureLibrary.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Libraries/Gen7CaptureLibrary.cs @@ -1,6 +1,5 @@ using System; using PkmnLib.Dynamic.Libraries; -using PkmnLib.Static; namespace PkmnLib.Plugin.Gen7.Libraries; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Libraries/Gen7DamageCalculator.cs b/Plugins/PkmnLib.Plugin.Gen7/Libraries/Gen7DamageCalculator.cs index bebd1f6..96628db 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Libraries/Gen7DamageCalculator.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Libraries/Gen7DamageCalculator.cs @@ -1,7 +1,6 @@ using System; using System.Linq; using PkmnLib.Dynamic.Libraries; -using PkmnLib.Static; using PkmnLib.Static.Moves; namespace PkmnLib.Plugin.Gen7.Libraries; @@ -69,11 +68,11 @@ public class Gen7DamageCalculator(bool hasRandomness) : IDamageCalculator } /// - public byte GetBasePower(IExecutingMove executingMove, IPokemon target, byte hitNumber, IHitData hitData) + public ushort GetBasePower(IExecutingMove executingMove, IPokemon target, byte hitNumber, IHitData hitData) { if (executingMove.UseMove.Category == MoveCategory.Status) return 0; - var basePower = executingMove.UseMove.BasePower; + var basePower = (ushort)executingMove.UseMove.BasePower; executingMove.RunScriptHook(script => script.ChangeBasePower(executingMove, target, hitNumber, ref basePower)); return basePower; } diff --git a/Plugins/PkmnLib.Plugin.Gen7/Libraries/Gen7MiscLibrary.cs b/Plugins/PkmnLib.Plugin.Gen7/Libraries/Gen7MiscLibrary.cs index 788d450..8108b40 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Libraries/Gen7MiscLibrary.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Libraries/Gen7MiscLibrary.cs @@ -2,7 +2,6 @@ using System.Collections.Generic; using System.Linq; using PkmnLib.Dynamic; using PkmnLib.Dynamic.Libraries; -using PkmnLib.Static; using PkmnLib.Static.Moves; using PkmnLib.Static.Utils; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Battle/Gravity.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Battle/Gravity.cs index b86ccb0..4b258ad 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Battle/Gravity.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Battle/Gravity.cs @@ -1,5 +1,4 @@ using System.Collections.Generic; -using PkmnLib.Static; using PkmnLib.Static.Utils; namespace PkmnLib.Plugin.Gen7.Scripts.Battle; @@ -7,6 +6,8 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Battle; [Script(ScriptCategory.Battle, "gravity")] public class Gravity : Script { + private int _turns = 5; + /// public override void ChangeTypesForIncomingMove(IExecutingMove executingMove, IPokemon target, byte hitIndex, IList types) @@ -25,4 +26,21 @@ public class Gravity : Script if (move.UseMove.HasFlag("gravity")) fail = true; } + + /// + public override void IsFloating(IPokemon pokemon, ref bool isFloating) + { + // Gravity makes all Pokémon susceptible to Ground-type moves + isFloating = false; + } + + /// + public override void OnEndTurn(IBattle battle) + { + _turns--; + if (_turns > 0) + return; + + RemoveSelf(); + } } \ No newline at end of file diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Battle/IonDelugeEffect.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Battle/IonDelugeEffect.cs index d10121b..a9b2d31 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Battle/IonDelugeEffect.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Battle/IonDelugeEffect.cs @@ -1,5 +1,3 @@ -using PkmnLib.Static; - namespace PkmnLib.Plugin.Gen7.Scripts.Battle; [Script(ScriptCategory.Move, "ion_deluge")] diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Battle/MagicRoomEffect.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Battle/MagicRoomEffect.cs index 59dfad8..cc17193 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Battle/MagicRoomEffect.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Battle/MagicRoomEffect.cs @@ -1,5 +1,4 @@ using System.Collections.Generic; -using PkmnLib.Static; namespace PkmnLib.Plugin.Gen7.Scripts.Battle; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Battle/MudSportEffect.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Battle/MudSportEffect.cs index cce1a04..4e4105d 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Battle/MudSportEffect.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Battle/MudSportEffect.cs @@ -8,7 +8,7 @@ public class MudSportEffect : Script private int _turnsLeft = 5; /// - public override void ChangeBasePower(IExecutingMove move, IPokemon target, byte hit, ref byte basePower) + public override void ChangeBasePower(IExecutingMove move, IPokemon target, byte hit, ref ushort basePower) { if (move.UseMove.MoveType.Name == "electric") { diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Items/HealingItem.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Items/HealingItem.cs index 6ebc9b9..96eaa36 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Items/HealingItem.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Items/HealingItem.cs @@ -1,5 +1,4 @@ using System.Collections.Generic; -using PkmnLib.Static; using PkmnLib.Static.Utils; namespace PkmnLib.Plugin.Gen7.Scripts.Items; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Items/StaticPokeball.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Items/StaticPokeball.cs index a20e42c..480de47 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Items/StaticPokeball.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Items/StaticPokeball.cs @@ -1,5 +1,4 @@ using System.Collections.Generic; -using PkmnLib.Static; using PkmnLib.Static.Utils; namespace PkmnLib.Plugin.Gen7.Scripts.Items; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/MoveVolatile/ElectrifyEffect.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/MoveVolatile/ElectrifyEffect.cs index aaa012d..a786558 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/MoveVolatile/ElectrifyEffect.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/MoveVolatile/ElectrifyEffect.cs @@ -1,5 +1,3 @@ -using PkmnLib.Static; - namespace PkmnLib.Plugin.Gen7.Scripts.MoveVolatile; [Script(ScriptCategory.MoveVolatile, "electrify")] diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/MoveVolatile/MeFirstPowerBoost.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/MoveVolatile/MeFirstPowerBoost.cs index f855d47..e7d23a6 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/MoveVolatile/MeFirstPowerBoost.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/MoveVolatile/MeFirstPowerBoost.cs @@ -6,6 +6,6 @@ namespace PkmnLib.Plugin.Gen7.Scripts.MoveVolatile; public class MeFirstPowerBoost : Script { /// - public override void ChangeBasePower(IExecutingMove move, IPokemon target, byte hit, ref byte basePower) => + public override void ChangeBasePower(IExecutingMove move, IPokemon target, byte hit, ref ushort basePower) => basePower = basePower.MultiplyOrMax(1.5f); } \ No newline at end of file diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/MoveVolatile/RoundPowerBoost.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/MoveVolatile/RoundPowerBoost.cs index 2983690..d6e5121 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/MoveVolatile/RoundPowerBoost.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/MoveVolatile/RoundPowerBoost.cs @@ -6,6 +6,6 @@ namespace PkmnLib.Plugin.Gen7.Scripts.MoveVolatile; public class RoundPowerBoost : Script { /// - public override void ChangeBasePower(IExecutingMove move, IPokemon target, byte hit, ref byte basePower) => + public override void ChangeBasePower(IExecutingMove move, IPokemon target, byte hit, ref ushort basePower) => basePower = basePower.MultiplyOrMax(2f); } \ No newline at end of file diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Acrobatics.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Acrobatics.cs index 7099e64..12769e4 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Acrobatics.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Acrobatics.cs @@ -12,7 +12,7 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Moves; public class Acrobatics : Script { /// - public override void ChangeBasePower(IExecutingMove move, IPokemon target, byte hit, ref byte basePower) + public override void ChangeBasePower(IExecutingMove move, IPokemon target, byte hit, ref ushort basePower) { if (move.User.HeldItem == null) basePower = basePower.MultiplyOrMax(2); diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Acupressure.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Acupressure.cs index c8235de..613a2a6 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Acupressure.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Acupressure.cs @@ -1,5 +1,4 @@ using System.Linq; -using PkmnLib.Static; namespace PkmnLib.Plugin.Gen7.Scripts.Moves; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Autotomize.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Autotomize.cs index e10965b..5379acd 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Autotomize.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Autotomize.cs @@ -1,5 +1,4 @@ using System.Collections.Generic; -using PkmnLib.Static; namespace PkmnLib.Plugin.Gen7.Scripts.Moves; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/BatonPass.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/BatonPass.cs index 0ee8683..2b223ae 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/BatonPass.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/BatonPass.cs @@ -1,6 +1,5 @@ using System; using System.Linq; -using PkmnLib.Static; using PkmnLib.Static.Utils; namespace PkmnLib.Plugin.Gen7.Scripts.Moves; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/BeatUp.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/BeatUp.cs index ba5cf1c..5d76b33 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/BeatUp.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/BeatUp.cs @@ -30,7 +30,7 @@ public class BeatUp : Script } /// - public override void ChangeBasePower(IExecutingMove move, IPokemon target, byte hit, ref byte basePower) + public override void ChangeBasePower(IExecutingMove move, IPokemon target, byte hit, ref ushort basePower) { var relevantPartyMembers = _relevantPartyMembers ??= GetRelevantPartyMembers(move.User).ToArray(); var hittingPokemon = relevantPartyMembers.ElementAtOrDefault(hit); diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Belch.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Belch.cs index 82e6103..de32fef 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Belch.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Belch.cs @@ -1,5 +1,4 @@ using System.Linq; -using PkmnLib.Static; namespace PkmnLib.Plugin.Gen7.Scripts.Moves; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/BellyDrum.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/BellyDrum.cs index 6f8715b..acb75e9 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/BellyDrum.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/BellyDrum.cs @@ -1,5 +1,3 @@ -using PkmnLib.Static; - namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "belly_drum")] diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Brine.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Brine.cs index 7b152b8..ee620ae 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Brine.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Brine.cs @@ -6,7 +6,7 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Moves; public class Brine : Script { /// - public override void ChangeBasePower(IExecutingMove move, IPokemon target, byte hit, ref byte basePower) + public override void ChangeBasePower(IExecutingMove move, IPokemon target, byte hit, ref ushort basePower) { if (target.CurrentHealth <= target.BoostedStats.Hp / 2) { diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/BugBite.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/BugBite.cs index d8139b0..86aeb66 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/BugBite.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/BugBite.cs @@ -1,5 +1,3 @@ -using PkmnLib.Static; - namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "bug_bite")] diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Captivate.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Captivate.cs index 8843f2c..bc23347 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Captivate.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Captivate.cs @@ -1,4 +1,3 @@ -using PkmnLib.Static; using PkmnLib.Static.Species; namespace PkmnLib.Plugin.Gen7.Scripts.Moves; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/ChangeAllTargetStats.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/ChangeAllTargetStats.cs index f69d287..cef0ec0 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/ChangeAllTargetStats.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/ChangeAllTargetStats.cs @@ -1,6 +1,5 @@ using System; using System.Collections.Generic; -using PkmnLib.Static; using PkmnLib.Static.Utils; namespace PkmnLib.Plugin.Gen7.Scripts.Moves; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/ChangeMultipleTargetStatBoosts.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/ChangeMultipleTargetStatBoosts.cs index 4d10db4..7771e65 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/ChangeMultipleTargetStatBoosts.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/ChangeMultipleTargetStatBoosts.cs @@ -1,6 +1,5 @@ using System; using System.Collections.Generic; -using PkmnLib.Static; using PkmnLib.Static.Utils; namespace PkmnLib.Plugin.Gen7.Scripts.Moves; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/ChangeMultipleUserStatBoosts.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/ChangeMultipleUserStatBoosts.cs index 9baee2d..d47bfdb 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/ChangeMultipleUserStatBoosts.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/ChangeMultipleUserStatBoosts.cs @@ -1,6 +1,5 @@ using System; using System.Collections.Generic; -using PkmnLib.Static; using PkmnLib.Static.Utils; namespace PkmnLib.Plugin.Gen7.Scripts.Moves; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/ChangeTargetStats.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/ChangeTargetStats.cs index aa66775..daea692 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/ChangeTargetStats.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/ChangeTargetStats.cs @@ -1,6 +1,5 @@ using System; using System.Collections.Generic; -using PkmnLib.Static; using PkmnLib.Static.Utils; namespace PkmnLib.Plugin.Gen7.Scripts.Moves; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/ChangeUserStats.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/ChangeUserStats.cs index a0f3953..cd83284 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/ChangeUserStats.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/ChangeUserStats.cs @@ -1,6 +1,5 @@ using System; using System.Collections.Generic; -using PkmnLib.Static; using PkmnLib.Static.Utils; namespace PkmnLib.Plugin.Gen7.Scripts.Moves; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Charge.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Charge.cs index 6ec9fce..6e5a69c 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Charge.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Charge.cs @@ -1,5 +1,4 @@ using PkmnLib.Plugin.Gen7.Scripts.Pokemon; -using PkmnLib.Static; namespace PkmnLib.Plugin.Gen7.Scripts.Moves; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/CrushGrip.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/CrushGrip.cs index b964bad..65a6e5d 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/CrushGrip.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/CrushGrip.cs @@ -6,7 +6,7 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Moves; public class CrushGrip : Script { /// - public override void ChangeBasePower(IExecutingMove move, IPokemon target, byte hit, ref byte basePower) + public override void ChangeBasePower(IExecutingMove move, IPokemon target, byte hit, ref ushort basePower) { basePower = Math.Max((byte)(120 * target.CurrentHealth / target.BoostedStats.Hp), (byte)1); } diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Curse.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Curse.cs index ff62696..a837f4b 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Curse.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Curse.cs @@ -1,6 +1,5 @@ using System.Linq; using PkmnLib.Plugin.Gen7.Scripts.Pokemon; -using PkmnLib.Static; namespace PkmnLib.Plugin.Gen7.Scripts.Moves; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Defog.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Defog.cs index d274a78..bd933b4 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Defog.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Defog.cs @@ -14,7 +14,8 @@ public class Defog : Script ScriptUtils.ResolveName(), ScriptUtils.ResolveName(), ScriptUtils.ResolveName(), - "spikes", + ScriptUtils.ResolveName(), + ScriptUtils.ResolveName(), "toxic_spikes", "stealth_rock", ]; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/DoublePowerIfTargetDamagedInTurn.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/DoublePowerIfTargetDamagedInTurn.cs index d4e7d4e..a306b1e 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/DoublePowerIfTargetDamagedInTurn.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/DoublePowerIfTargetDamagedInTurn.cs @@ -19,7 +19,7 @@ public class DoublePowerIfTargetDamagedInTurn : Script } /// - public override void ChangeBasePower(IExecutingMove move, IPokemon target, byte hit, ref byte basePower) + public override void ChangeBasePower(IExecutingMove move, IPokemon target, byte hit, ref ushort basePower) { var battle = move.User.BattleData?.Battle; if (battle == null) diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/DragonAscent.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/DragonAscent.cs index 053e84d..5c3abc8 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/DragonAscent.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/DragonAscent.cs @@ -1,5 +1,3 @@ -using PkmnLib.Static; - namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "dragon_ascent")] diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/ElectroBall.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/ElectroBall.cs index 1100bd9..d61b1a8 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/ElectroBall.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/ElectroBall.cs @@ -4,7 +4,7 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Moves; public class ElectroBall : Script { /// - public override void ChangeBasePower(IExecutingMove move, IPokemon target, byte hit, ref byte basePower) + public override void ChangeBasePower(IExecutingMove move, IPokemon target, byte hit, ref ushort basePower) { var user = move.User; var targetSpeed = target.BoostedStats.Speed; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Eruption.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Eruption.cs index da4e3cc..a57ae4f 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Eruption.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Eruption.cs @@ -5,7 +5,7 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "eruption")] public class Eruption : Script { - public override void ChangeBasePower(IExecutingMove move, IPokemon target, byte hit, ref byte basePower) + public override void ChangeBasePower(IExecutingMove move, IPokemon target, byte hit, ref ushort basePower) { basePower = Math.Max((byte)(150 * move.User.CurrentHealth / move.User.BoostedStats.Hp), (byte)1); } diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Facade.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Facade.cs index 33aeed1..60a64e7 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Facade.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Facade.cs @@ -6,7 +6,7 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Moves; public class Facade : Script { /// - public override void ChangeBasePower(IExecutingMove move, IPokemon target, byte hit, ref byte basePower) + public override void ChangeBasePower(IExecutingMove move, IPokemon target, byte hit, ref ushort basePower) { var status = move.User.StatusScript.Script?.Name; if (status == "paralyzed" || status == "burned" || status == "poisoned") diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/FellStinger.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/FellStinger.cs index 85ebc89..8808f1e 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/FellStinger.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/FellStinger.cs @@ -1,5 +1,3 @@ -using PkmnLib.Static; - namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "fell_stinger")] diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Flail.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Flail.cs index c7f36e1..73452ea 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Flail.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Flail.cs @@ -4,7 +4,7 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Moves; public class Flail : Script { /// - public override void ChangeBasePower(IExecutingMove move, IPokemon target, byte hit, ref byte basePower) + public override void ChangeBasePower(IExecutingMove move, IPokemon target, byte hit, ref ushort basePower) { var remainingHealth = move.User.CurrentHealth / move.User.BoostedStats.Hp; var fraction = remainingHealth * 48; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Flatter.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Flatter.cs index 2dd6e79..a40b50a 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Flatter.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Flatter.cs @@ -1,5 +1,4 @@ using PkmnLib.Plugin.Gen7.Scripts.Pokemon; -using PkmnLib.Static; namespace PkmnLib.Plugin.Gen7.Scripts.Moves; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Fling.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Fling.cs index b3f4d52..862f0d5 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Fling.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Fling.cs @@ -1,12 +1,10 @@ -using PkmnLib.Static; - namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "fling")] public class Fling : Script { /// - public override void ChangeBasePower(IExecutingMove move, IPokemon target, byte hit, ref byte basePower) + public override void ChangeBasePower(IExecutingMove move, IPokemon target, byte hit, ref ushort basePower) { var item = move.User.HeldItem; if (item == null) diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/FlowerShield.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/FlowerShield.cs index 3c4de61..7538481 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/FlowerShield.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/FlowerShield.cs @@ -1,5 +1,4 @@ using System.Linq; -using PkmnLib.Static; namespace PkmnLib.Plugin.Gen7.Scripts.Moves; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/FlyingPress.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/FlyingPress.cs index df9c279..39676c1 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/FlyingPress.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/FlyingPress.cs @@ -1,5 +1,4 @@ using System.Collections.Generic; -using PkmnLib.Static; namespace PkmnLib.Plugin.Gen7.Scripts.Moves; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Foresight.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Foresight.cs index e8c2a91..45086b6 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Foresight.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Foresight.cs @@ -1,5 +1,4 @@ using PkmnLib.Plugin.Gen7.Scripts.Pokemon; -using PkmnLib.Static; namespace PkmnLib.Plugin.Gen7.Scripts.Moves; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/FoulPlay.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/FoulPlay.cs index 4bf3df5..d4b0ffa 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/FoulPlay.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/FoulPlay.cs @@ -1,4 +1,3 @@ -using PkmnLib.Static; using PkmnLib.Static.Moves; namespace PkmnLib.Plugin.Gen7.Scripts.Moves; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Frustration.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Frustration.cs index d9c80ed..33392c3 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Frustration.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Frustration.cs @@ -6,7 +6,7 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Moves; public class Frustration : Script { /// - public override void ChangeBasePower(IExecutingMove move, IPokemon target, byte hit, ref byte basePower) + public override void ChangeBasePower(IExecutingMove move, IPokemon target, byte hit, ref ushort basePower) { var friendship = move.User.Happiness; basePower = Math.Max((byte)1, (byte)((255 - friendship) * 2 / 5)); diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/FuryCutter.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/FuryCutter.cs index dd88079..828aceb 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/FuryCutter.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/FuryCutter.cs @@ -8,7 +8,7 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Moves; public class FuryCutter : Script { /// - public override void ChangeBasePower(IExecutingMove move, IPokemon target, byte hit, ref byte basePower) + public override void ChangeBasePower(IExecutingMove move, IPokemon target, byte hit, ref ushort basePower) { var userEffect = move.User.Volatile.Get(); if (userEffect == null) diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/GearUp.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/GearUp.cs index f0f9e00..3b81930 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/GearUp.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/GearUp.cs @@ -1,4 +1,3 @@ -using PkmnLib.Static; using PkmnLib.Static.Utils; namespace PkmnLib.Plugin.Gen7.Scripts.Moves; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Geomancy.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Geomancy.cs index 3813fef..7b8d0df 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Geomancy.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Geomancy.cs @@ -1,5 +1,4 @@ using PkmnLib.Plugin.Gen7.Scripts.Pokemon; -using PkmnLib.Static; namespace PkmnLib.Plugin.Gen7.Scripts.Moves; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/GrassKnot.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/GrassKnot.cs index e4337b7..70983cc 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/GrassKnot.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/GrassKnot.cs @@ -4,7 +4,7 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Moves; public class GrassKnot : Script { /// - public override void ChangeBasePower(IExecutingMove move, IPokemon target, byte hit, ref byte basePower) + public override void ChangeBasePower(IExecutingMove move, IPokemon target, byte hit, ref ushort basePower) { var targetWeight = target.WeightInKg; basePower = targetWeight switch diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/GuardSplit.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/GuardSplit.cs index 0ebb9bc..36ba8ae 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/GuardSplit.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/GuardSplit.cs @@ -1,5 +1,3 @@ -using PkmnLib.Static; - namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "guard_split")] diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/GuardSwap.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/GuardSwap.cs index 74c2388..716702b 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/GuardSwap.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/GuardSwap.cs @@ -1,5 +1,3 @@ -using PkmnLib.Static; - namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "guard_swap")] diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/GyroBall.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/GyroBall.cs index 0cf24d1..427e69f 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/GyroBall.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/GyroBall.cs @@ -6,7 +6,7 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Moves; public class GyroBall : Script { /// - public override void ChangeBasePower(IExecutingMove move, IPokemon target, byte hit, ref byte basePower) + public override void ChangeBasePower(IExecutingMove move, IPokemon target, byte hit, ref ushort basePower) { basePower = Math.Min((byte)150, (byte)(25 * target.BoostedStats.Speed / move.User.BoostedStats.Speed + 1)); } diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/HeartSwap.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/HeartSwap.cs index 8fc2073..27f9470 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/HeartSwap.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/HeartSwap.cs @@ -1,5 +1,4 @@ using System; -using PkmnLib.Static; namespace PkmnLib.Plugin.Gen7.Scripts.Moves; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/HeatCrash.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/HeatCrash.cs index 2d0330d..3b49c99 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/HeatCrash.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/HeatCrash.cs @@ -4,7 +4,7 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Moves; public class HeatCrash : Script { /// - public override void ChangeBasePower(IExecutingMove move, IPokemon target, byte hit, ref byte basePower) + public override void ChangeBasePower(IExecutingMove move, IPokemon target, byte hit, ref ushort basePower) { var weightMultiplier = move.User.WeightInKg / target.WeightInKg; basePower = weightMultiplier switch diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Hex.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Hex.cs index 3cb2883..bd8fad4 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Hex.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Hex.cs @@ -6,7 +6,7 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Moves; public class Hex : Script { /// - public override void ChangeBasePower(IExecutingMove move, IPokemon target, byte hit, ref byte basePower) + public override void ChangeBasePower(IExecutingMove move, IPokemon target, byte hit, ref ushort basePower) { if (!target.StatusScript.IsEmpty) { diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/HiddenPower.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/HiddenPower.cs index 465b0b1..9f8ed28 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/HiddenPower.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/HiddenPower.cs @@ -1,5 +1,4 @@ using System; -using PkmnLib.Static; namespace PkmnLib.Plugin.Gen7.Scripts.Moves; @@ -18,7 +17,7 @@ public class HiddenPower : Script } /// - public override void ChangeBasePower(IExecutingMove move, IPokemon target, byte hit, ref byte basePower) + public override void ChangeBasePower(IExecutingMove move, IPokemon target, byte hit, ref ushort basePower) { var ivs = move.User.IndividualValues; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/IceBall.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/IceBall.cs index 5fdf1a3..f9b0932 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/IceBall.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/IceBall.cs @@ -8,7 +8,7 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Moves; public class IceBall : Script { /// - public override void ChangeBasePower(IExecutingMove move, IPokemon target, byte hit, ref byte basePower) + public override void ChangeBasePower(IExecutingMove move, IPokemon target, byte hit, ref ushort basePower) { var userEffect = move.User.Volatile.Get(); if (userEffect == null) diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Incinerate.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Incinerate.cs index 9ee4e26..937f037 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Incinerate.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Incinerate.cs @@ -1,5 +1,3 @@ -using PkmnLib.Static; - namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "incinerate")] diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Instruct.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Instruct.cs index 9761f0f..235cd1c 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Instruct.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Instruct.cs @@ -15,7 +15,7 @@ public class Instruct : Script if (battleData == null) return; - var lastMoveChoiceByTarget = battleData.Battle.PreviousTurnChoices.SelectMany(x => x) + var lastMoveChoiceByTarget = battleData.Battle.PreviousTurnChoices.SelectMany(x => x).Reverse() .SkipWhile(x => x != move.MoveChoice).OfType().FirstOrDefault(x => x.User == target); if (lastMoveChoiceByTarget == null || !battleData.Battle.CanUse(lastMoveChoiceByTarget)) diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Judgement.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Judgement.cs index f4158ff..fb54de4 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Judgement.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Judgement.cs @@ -1,5 +1,3 @@ -using PkmnLib.Static; - namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "judgement")] diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/LowKick.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/LowKick.cs index c9401e3..df96cc6 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/LowKick.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/LowKick.cs @@ -4,7 +4,7 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Moves; public class LowKick : Script { /// - public override void ChangeBasePower(IExecutingMove move, IPokemon target, byte hit, ref byte basePower) + public override void ChangeBasePower(IExecutingMove move, IPokemon target, byte hit, ref ushort basePower) { basePower = target.WeightInKg switch { diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Magnitude.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Magnitude.cs index 3ae761a..3d11dc1 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Magnitude.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Magnitude.cs @@ -6,7 +6,7 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Moves; public class Magnitude : Script { /// - public override void ChangeBasePower(IExecutingMove move, IPokemon target, byte hit, ref byte basePower) + public override void ChangeBasePower(IExecutingMove move, IPokemon target, byte hit, ref ushort basePower) { var battleData = move.User.BattleData; if (battleData == null) diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Memento.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Memento.cs index 6edcddf..17b02fe 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Memento.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Memento.cs @@ -1,5 +1,3 @@ -using PkmnLib.Static; - namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "memento")] diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/MiracleEye.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/MiracleEye.cs index 7b570e5..2e7e2fc 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/MiracleEye.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/MiracleEye.cs @@ -1,5 +1,4 @@ using PkmnLib.Plugin.Gen7.Scripts.Pokemon; -using PkmnLib.Static; namespace PkmnLib.Plugin.Gen7.Scripts.Moves; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/MultiAttack.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/MultiAttack.cs index 4de0b8a..f537e27 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/MultiAttack.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/MultiAttack.cs @@ -1,5 +1,3 @@ -using PkmnLib.Static; - namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "multi_attack")] diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/NaturalGift.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/NaturalGift.cs index b6fc112..308811a 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/NaturalGift.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/NaturalGift.cs @@ -1,5 +1,4 @@ using System.Collections.Generic; -using PkmnLib.Static; using PkmnLib.Static.Utils; namespace PkmnLib.Plugin.Gen7.Scripts.Moves; @@ -8,7 +7,7 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Moves; public class NaturalGift : Script { /// - public override void ChangeBasePower(IExecutingMove move, IPokemon target, byte hit, ref byte basePower) + public override void ChangeBasePower(IExecutingMove move, IPokemon target, byte hit, ref ushort basePower) { var naturalGiftData = GetNaturalGiftData(move.User.HeldItem); if (naturalGiftData == null) diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/PartingShot.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/PartingShot.cs index 2f4aed4..8719314 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/PartingShot.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/PartingShot.cs @@ -1,5 +1,3 @@ -using PkmnLib.Static; - namespace PkmnLib.Plugin.Gen7.Scripts.Moves; /// diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Payback.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Payback.cs index ba587f4..58cdd99 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Payback.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Payback.cs @@ -9,7 +9,7 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Moves; public class Payback : Script { /// - public override void ChangeBasePower(IExecutingMove move, IPokemon target, byte hit, ref byte basePower) + public override void ChangeBasePower(IExecutingMove move, IPokemon target, byte hit, ref ushort basePower) { var battleData = move.User.BattleData; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/PowerSplit.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/PowerSplit.cs index 9121939..0f8679b 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/PowerSplit.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/PowerSplit.cs @@ -1,5 +1,3 @@ -using PkmnLib.Static; - namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "power_split")] diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/PowerSwap.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/PowerSwap.cs index 12a232f..a62ff07 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/PowerSwap.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/PowerSwap.cs @@ -1,5 +1,3 @@ -using PkmnLib.Static; - namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "power_swap")] diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/PowerTrip.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/PowerTrip.cs index 740fa00..f23eeac 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/PowerTrip.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/PowerTrip.cs @@ -1,5 +1,4 @@ using System; -using PkmnLib.Static; using PkmnLib.Static.Utils; namespace PkmnLib.Plugin.Gen7.Scripts.Moves; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Present.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Present.cs index b9f77b9..2f02ef1 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Present.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Present.cs @@ -40,7 +40,7 @@ public class Present : Script } /// - public override void ChangeBasePower(IExecutingMove move, IPokemon target, byte hit, ref byte basePower) + public override void ChangeBasePower(IExecutingMove move, IPokemon target, byte hit, ref ushort basePower) { basePower = _basePower; } diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/PsychUp.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/PsychUp.cs index 39c98b7..1d8dd1d 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/PsychUp.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/PsychUp.cs @@ -1,5 +1,4 @@ using System; -using PkmnLib.Static; namespace PkmnLib.Plugin.Gen7.Scripts.Moves; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Psyshock.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Psyshock.cs index ad5bca3..f4719e9 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Psyshock.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Psyshock.cs @@ -1,5 +1,3 @@ -using PkmnLib.Static; - namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "psyshock")] diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Punishment.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Punishment.cs index 85fe709..77520a9 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Punishment.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Punishment.cs @@ -1,5 +1,4 @@ using System.Linq; -using PkmnLib.Static; namespace PkmnLib.Plugin.Gen7.Scripts.Moves; @@ -7,7 +6,7 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Moves; public class Punishment : Script { /// - public override void ChangeBasePower(IExecutingMove move, IPokemon target, byte hit, ref byte basePower) + public override void ChangeBasePower(IExecutingMove move, IPokemon target, byte hit, ref ushort basePower) { if (move.User.BattleData == null) return; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/RapidSpin.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/RapidSpin.cs index d3502eb..65b4c4a 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/RapidSpin.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/RapidSpin.cs @@ -1,4 +1,5 @@ using PkmnLib.Plugin.Gen7.Scripts.Pokemon; +using PkmnLib.Plugin.Gen7.Scripts.Side; namespace PkmnLib.Plugin.Gen7.Scripts.Moves; @@ -12,12 +13,16 @@ public class RapidSpin : Script move.User.Volatile.Remove(); move.User.Volatile.Remove(); move.User.Volatile.Remove(); - // TODO: Sand Tomb effect removal // TODO: Whirlpool effect removal // TODO: Wrap effect removal - // TODO: Remove Spikes - // TODO: Remove Toxic Spikes - // TODO: Remove Stealth Rock + var battleData = move.User.BattleData; + if (battleData != null) + { + battleData.BattleSide.VolatileScripts.Remove(); + battleData.BattleSide.VolatileScripts.Remove(); + // TODO: Remove Toxic Spikes + // TODO: Remove Stealth Rock + } } } \ No newline at end of file diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/ResetTargetStats.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/ResetTargetStats.cs index a0d6dc4..e88e1ba 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/ResetTargetStats.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/ResetTargetStats.cs @@ -1,5 +1,4 @@ using System; -using PkmnLib.Static; namespace PkmnLib.Plugin.Gen7.Scripts.Moves; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Retaliate.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Retaliate.cs index 0359410..4c6fbe7 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Retaliate.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Retaliate.cs @@ -6,7 +6,7 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Moves; public class Retaliate : Script { /// - public override void ChangeBasePower(IExecutingMove move, IPokemon target, byte hit, ref byte basePower) + public override void ChangeBasePower(IExecutingMove move, IPokemon target, byte hit, ref ushort basePower) { var battleData = move.User.BattleData; if (battleData is null) diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Return.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Return.cs index bcc1222..5e9fc2e 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Return.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Return.cs @@ -4,7 +4,7 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Moves; public class Return : Script { /// - public override void ChangeBasePower(IExecutingMove move, IPokemon target, byte hit, ref byte basePower) + public override void ChangeBasePower(IExecutingMove move, IPokemon target, byte hit, ref ushort basePower) { var friendship = move.User.Happiness; var power = friendship * 2 / 5; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/RevelationDance.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/RevelationDance.cs index b805a3c..0d4239c 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/RevelationDance.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/RevelationDance.cs @@ -1,5 +1,3 @@ -using PkmnLib.Static; - namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "revelation_dance")] diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Rototiller.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Rototiller.cs index 9c25d01..726ad2c 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Rototiller.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Rototiller.cs @@ -1,5 +1,4 @@ using System.Linq; -using PkmnLib.Static; using PkmnLib.Static.Utils; namespace PkmnLib.Plugin.Gen7.Scripts.Moves; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/ShellSmash.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/ShellSmash.cs index 0bd335a..1d1b92f 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/ShellSmash.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/ShellSmash.cs @@ -1,5 +1,3 @@ -using PkmnLib.Static; - namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "shell_smash")] diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/SkullBash.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/SkullBash.cs index db0070c..906d526 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/SkullBash.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/SkullBash.cs @@ -1,5 +1,4 @@ using PkmnLib.Plugin.Gen7.Scripts.Pokemon; -using PkmnLib.Static; namespace PkmnLib.Plugin.Gen7.Scripts.Moves; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/SkyAttack.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/SkyAttack.cs index a4b3c11..2225077 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/SkyAttack.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/SkyAttack.cs @@ -1,5 +1,4 @@ using PkmnLib.Plugin.Gen7.Scripts.Pokemon; -using PkmnLib.Static; namespace PkmnLib.Plugin.Gen7.Scripts.Moves; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/SleepTalk.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/SleepTalk.cs index 391d40b..5ba7b27 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/SleepTalk.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/SleepTalk.cs @@ -1,4 +1,3 @@ -using System; using System.Linq; using PkmnLib.Plugin.Gen7.Scripts.MoveVolatile; using PkmnLib.Plugin.Gen7.Scripts.Utils; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/SmackDown.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/SmackDown.cs index 228e073..ffb355e 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/SmackDown.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/SmackDown.cs @@ -1,7 +1,4 @@ -using System.Collections.Generic; -using System.Linq; using PkmnLib.Plugin.Gen7.Scripts.Pokemon; -using PkmnLib.Static.Utils; namespace PkmnLib.Plugin.Gen7.Scripts.Moves; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/SpeedSwap.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/SpeedSwap.cs index 52cca31..c7b015c 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/SpeedSwap.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/SpeedSwap.cs @@ -1,5 +1,3 @@ -using PkmnLib.Static; - namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "speed_swap")] diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Spikes.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Spikes.cs new file mode 100644 index 0000000..38ad885 --- /dev/null +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Spikes.cs @@ -0,0 +1,13 @@ +using PkmnLib.Plugin.Gen7.Scripts.Side; + +namespace PkmnLib.Plugin.Gen7.Scripts.Moves; + +[Script(ScriptCategory.Move, "spikes")] +public class Spikes : Script +{ + /// + public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + { + target.BattleData?.Battle.Volatile.Add(new SpikesEffect()); + } +} \ No newline at end of file diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/SpikyShield.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/SpikyShield.cs new file mode 100644 index 0000000..d3ab69d --- /dev/null +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/SpikyShield.cs @@ -0,0 +1,10 @@ +using PkmnLib.Plugin.Gen7.Scripts.Pokemon; + +namespace PkmnLib.Plugin.Gen7.Scripts.Moves; + +[Script(ScriptCategory.Move, "spiky_shield")] +public class SpikyShield : ProtectionScript +{ + /// + protected override Script GetEffectScript() => new SpikyShieldEffect(); +} \ No newline at end of file diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/SpitUp.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/SpitUp.cs new file mode 100644 index 0000000..9e8e58f --- /dev/null +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/SpitUp.cs @@ -0,0 +1,21 @@ +using PkmnLib.Plugin.Gen7.Scripts.Pokemon; +using PkmnLib.Static.Utils; + +namespace PkmnLib.Plugin.Gen7.Scripts.Moves; + +[Script(ScriptCategory.Move, "spit_up")] +public class SpitUp : Script +{ + /// + public override void ChangeBasePower(IExecutingMove move, IPokemon target, byte hit, ref ushort basePower) + { + var stockpileEffect = move.User.Volatile.Get(); + if (stockpileEffect == null || stockpileEffect.StockpileCount == 0) + { + move.GetHitData(target, hit).Fail(); + return; + } + var stockpileCount = stockpileEffect.StockpileCount; + basePower = basePower.MultiplyOrMax(stockpileCount); + } +} \ No newline at end of file diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Spite.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Spite.cs new file mode 100644 index 0000000..81ba5fd --- /dev/null +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Spite.cs @@ -0,0 +1,24 @@ +using System.Linq; + +namespace PkmnLib.Plugin.Gen7.Scripts.Moves; + +[Script(ScriptCategory.Move, "spite")] +public class Spite : Script +{ + /// + public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + { + var lastMoveChoiceByTarget = move.Battle.PreviousTurnChoices.SelectMany(x => x).Reverse() + .SkipWhile(x => x != move.MoveChoice).OfType().FirstOrDefault(x => x.User == target); + if (lastMoveChoiceByTarget == null || lastMoveChoiceByTarget.HasFailed) + { + move.GetHitData(target, hit).Fail(); + return; + } + if (!lastMoveChoiceByTarget.ChosenMove.ReduceUses(4)) + { + move.GetHitData(target, hit).Fail(); + return; + } + } +} \ No newline at end of file diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/SplinteredStormshards.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/SplinteredStormshards.cs new file mode 100644 index 0000000..1059b7a --- /dev/null +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/SplinteredStormshards.cs @@ -0,0 +1,11 @@ +namespace PkmnLib.Plugin.Gen7.Scripts.Moves; + +[Script(ScriptCategory.Move, "splintered_stormshards")] +public class SplinteredStormshards : Script +{ + /// + public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + { + move.Battle.SetTerrain(null); + } +} \ No newline at end of file diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Spotlight.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Spotlight.cs new file mode 100644 index 0000000..38385a8 --- /dev/null +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Spotlight.cs @@ -0,0 +1,14 @@ +using PkmnLib.Plugin.Gen7.Scripts.Side; + +namespace PkmnLib.Plugin.Gen7.Scripts.Moves; + +[Script(ScriptCategory.Move, "spotlight")] +public class Spotlight : Script +{ + /// + public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + { + var battleData = target.BattleData; + battleData?.BattleSide.VolatileScripts.Add(new SpotlightEffect(battleData.BattleSide, battleData.Position)); + } +} \ No newline at end of file diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/StealthRock.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/StealthRock.cs new file mode 100644 index 0000000..290279e --- /dev/null +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/StealthRock.cs @@ -0,0 +1,13 @@ +using PkmnLib.Plugin.Gen7.Scripts.Side; + +namespace PkmnLib.Plugin.Gen7.Scripts.Moves; + +[Script(ScriptCategory.Move, "stealth_rock")] +public class StealthRock : Script +{ + /// + public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + { + target.BattleData?.BattleSide.VolatileScripts.Add(new StealthRockEffect()); + } +} \ No newline at end of file diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/StickyWeb.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/StickyWeb.cs new file mode 100644 index 0000000..0a8ac18 --- /dev/null +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/StickyWeb.cs @@ -0,0 +1,13 @@ +using PkmnLib.Plugin.Gen7.Scripts.Side; + +namespace PkmnLib.Plugin.Gen7.Scripts.Moves; + +[Script(ScriptCategory.Move, "sticky_web")] +public class StickyWeb : Script +{ + /// + public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + { + target.BattleData?.BattleSide.VolatileScripts.Add(new StickyWebEffect()); + } +} \ No newline at end of file diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Stockpile.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Stockpile.cs new file mode 100644 index 0000000..31107be --- /dev/null +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Stockpile.cs @@ -0,0 +1,17 @@ +using PkmnLib.Plugin.Gen7.Scripts.Pokemon; + +namespace PkmnLib.Plugin.Gen7.Scripts.Moves; + +[Script(ScriptCategory.Move, "stockpile")] +public class Stockpile : Script +{ + /// + public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + { + EventBatchId batchId = new(); + move.User.ChangeStatBoost(Statistic.Defense, 1, true, batchId); + move.User.ChangeStatBoost(Statistic.SpecialDefense, 1, true, batchId); + + move.User.Volatile.StackOrAdd(ScriptUtils.ResolveName(), () => new StockpileEffect()); + } +} \ No newline at end of file diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/StompingTantrum.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/StompingTantrum.cs new file mode 100644 index 0000000..91c7103 --- /dev/null +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/StompingTantrum.cs @@ -0,0 +1,19 @@ +using System.Linq; +using PkmnLib.Static.Utils; + +namespace PkmnLib.Plugin.Gen7.Scripts.Moves; + +[Script(ScriptCategory.Move, "stomping_tantrum")] +public class StompingTantrum : Script +{ + /// + public override void ChangeBasePower(IExecutingMove move, IPokemon target, byte hit, ref ushort basePower) + { + var lastMoveChoice = move.Battle.PreviousTurnChoices.Reverse().Skip(1).SelectMany(x => x.Reverse()) + .OfType().FirstOrDefault(x => x.User == move.User); + if (lastMoveChoice is { HasFailed: true }) + { + basePower = basePower.MultiplyOrMax(2); + } + } +} \ No newline at end of file diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/StormThrow.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/StormThrow.cs new file mode 100644 index 0000000..9a770c3 --- /dev/null +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/StormThrow.cs @@ -0,0 +1,13 @@ +namespace PkmnLib.Plugin.Gen7.Scripts.Moves; + +[Script(ScriptCategory.Move, "storm_throw")] +public class StormThrow : Script +{ + /// + public override void ChangeCriticalStage(IExecutingMove move, IPokemon target, byte hit, ref byte stage) + { + // Storm Throw always results in a critical hit + // Setting to any value higher than 2 will always result in a critical hit. + stage = 100; + } +} \ No newline at end of file diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/StrengthSap.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/StrengthSap.cs new file mode 100644 index 0000000..32dacd5 --- /dev/null +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/StrengthSap.cs @@ -0,0 +1,17 @@ +namespace PkmnLib.Plugin.Gen7.Scripts.Moves; + +[Script(ScriptCategory.Move, "strength_sap")] +public class StrengthSap : Script +{ + /// + public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + { + var attack = target.BoostedStats.Attack; + if (!target.ChangeStatBoost(Statistic.Attack, -1, false)) + { + move.GetHitData(target, hit).Fail(); + return; + } + move.User.Heal(attack); + } +} \ No newline at end of file diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/EmbargoEffect.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/EmbargoEffect.cs index c9eb0ab..dd3d3fd 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/EmbargoEffect.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/EmbargoEffect.cs @@ -1,5 +1,3 @@ -using PkmnLib.Static; - namespace PkmnLib.Plugin.Gen7.Scripts.Pokemon; [Script(ScriptCategory.Pokemon, "embargo")] diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/ForesightEffect.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/ForesightEffect.cs index e1570cb..76978f8 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/ForesightEffect.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/ForesightEffect.cs @@ -1,5 +1,4 @@ using System.Collections.Generic; -using PkmnLib.Static; using PkmnLib.Static.Libraries; using PkmnLib.Static.Utils; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/HelpingHandEffect.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/HelpingHandEffect.cs index 18aa2a1..1bc7912 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/HelpingHandEffect.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/HelpingHandEffect.cs @@ -5,7 +5,7 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Pokemon; public class HelpingHandEffect : Script { /// - public override void ChangeBasePower(IExecutingMove move, IPokemon target, byte hit, ref byte basePower) => + public override void ChangeBasePower(IExecutingMove move, IPokemon target, byte hit, ref ushort basePower) => basePower = basePower.MultiplyOrMax(1.5f); /// diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/IngrainEffect.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/IngrainEffect.cs index 848b73a..9ba63bc 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/IngrainEffect.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/IngrainEffect.cs @@ -1,5 +1,4 @@ using System.Collections.Generic; -using PkmnLib.Static; using PkmnLib.Static.Utils; namespace PkmnLib.Plugin.Gen7.Scripts.Pokemon; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/KingsShield.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/KingsShield.cs index 52c33e6..1cd6cc9 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/KingsShield.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/KingsShield.cs @@ -1,4 +1,3 @@ -using PkmnLib.Static; using PkmnLib.Static.Moves; namespace PkmnLib.Plugin.Gen7.Scripts.Pokemon; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/MiracleEyeEffect.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/MiracleEyeEffect.cs index d765b6a..c907570 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/MiracleEyeEffect.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/MiracleEyeEffect.cs @@ -1,6 +1,5 @@ using System.Collections.Generic; using System.Linq; -using PkmnLib.Static; namespace PkmnLib.Plugin.Gen7.Scripts.Pokemon; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/PowerTrickEffect.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/PowerTrickEffect.cs index 3187079..7d006ea 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/PowerTrickEffect.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/PowerTrickEffect.cs @@ -1,5 +1,3 @@ -using PkmnLib.Static; - namespace PkmnLib.Plugin.Gen7.Scripts.Pokemon; [Script(ScriptCategory.Pokemon, "power_trick")] diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/PursuitEffect.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/PursuitEffect.cs index bcb6699..d68ef41 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/PursuitEffect.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/PursuitEffect.cs @@ -44,7 +44,7 @@ public class PursuitEffect : Script private class PursuitDoublePowerEffect : Script { /// - public override void ChangeBasePower(IExecutingMove move, IPokemon target, byte hit, ref byte basePower) + public override void ChangeBasePower(IExecutingMove move, IPokemon target, byte hit, ref ushort basePower) { basePower = basePower.MultiplyOrMax(2); } diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/RageEffect.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/RageEffect.cs index a57f565..4ca1c95 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/RageEffect.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/RageEffect.cs @@ -1,5 +1,3 @@ -using PkmnLib.Static; - namespace PkmnLib.Plugin.Gen7.Scripts.Pokemon; [Script(ScriptCategory.Pokemon, "rage")] diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/RoostEffect.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/RoostEffect.cs index 0a4fe5d..5b0e41c 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/RoostEffect.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/RoostEffect.cs @@ -1,5 +1,4 @@ using System.Collections.Generic; -using PkmnLib.Static; using PkmnLib.Static.Utils; namespace PkmnLib.Plugin.Gen7.Scripts.Pokemon; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/SmackDownEffect.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/SmackDownEffect.cs index 273d683..ef8657e 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/SmackDownEffect.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/SmackDownEffect.cs @@ -1,5 +1,4 @@ using System.Collections.Generic; -using PkmnLib.Static; using PkmnLib.Static.Utils; namespace PkmnLib.Plugin.Gen7.Scripts.Pokemon; @@ -18,4 +17,10 @@ public class SmackDownEffect : Script // Remove all types that are immune to ground moves types.RemoveAll(x => typeLibrary.GetSingleEffectiveness(executingMove.UseMove.MoveType, x) == 0); } + + /// + public override void IsFloating(IPokemon pokemon, ref bool isFloating) + { + isFloating = false; + } } \ No newline at end of file diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/SpiderWebEffect.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/SpiderWebEffect.cs index 748007e..6e853b2 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/SpiderWebEffect.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/SpiderWebEffect.cs @@ -1,4 +1,3 @@ -using System; using System.Collections.Generic; namespace PkmnLib.Plugin.Gen7.Scripts.Pokemon; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/SpikyShieldEffect.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/SpikyShieldEffect.cs new file mode 100644 index 0000000..a56b6f3 --- /dev/null +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/SpikyShieldEffect.cs @@ -0,0 +1,14 @@ +namespace PkmnLib.Plugin.Gen7.Scripts.Pokemon; + +public class SpikyShieldEffect : ProtectionEffectScript +{ + /// + public override void BlockIncomingHit(IExecutingMove executingMove, IPokemon target, byte hitIndex, ref bool block) + { + base.BlockIncomingHit(executingMove, target, hitIndex, ref block); + if (block) + { + executingMove.User.Damage(executingMove.User.MaxHealth / 8, DamageSource.Misc); + } + } +} \ No newline at end of file diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/StockpileEffect.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/StockpileEffect.cs new file mode 100644 index 0000000..4ce7a1a --- /dev/null +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/StockpileEffect.cs @@ -0,0 +1,16 @@ +namespace PkmnLib.Plugin.Gen7.Scripts.Pokemon; + +[Script(ScriptCategory.Pokemon, "stockpile_effect")] +public class StockpileEffect : Script +{ + public int StockpileCount { get; set; } = 1; + + /// + public override void Stack() + { + if (StockpileCount < 3) + { + StockpileCount++; + } + } +} \ No newline at end of file diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Side/MistEffect.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Side/MistEffect.cs index 620f26b..99cd1b5 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Side/MistEffect.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Side/MistEffect.cs @@ -1,5 +1,3 @@ -using PkmnLib.Static; - namespace PkmnLib.Plugin.Gen7.Scripts.Side; [Script(ScriptCategory.Side, "mist")] diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Side/SpikesEffect.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Side/SpikesEffect.cs new file mode 100644 index 0000000..7178ddb --- /dev/null +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Side/SpikesEffect.cs @@ -0,0 +1,44 @@ +using System; +using System.Collections.Generic; +using PkmnLib.Static.Utils; + +namespace PkmnLib.Plugin.Gen7.Scripts.Side; + +[Script(ScriptCategory.Side, "spikes")] +public class SpikesEffect : Script +{ + private int _layers = 1; + + /// + public override void Stack() + { + if (_layers < 3) + _layers++; + } + + /// + public override void OnSwitchIn(IPokemon pokemon, byte position) + { + if (pokemon.IsFloating) + return; + + var modifier = _layers switch + { + 1 => 1 / 16f, + 2 => 3 / 16f, + 3 => 1 / 4f, + _ => throw new ArgumentOutOfRangeException(), + }; + var damage = (uint)(pokemon.MaxHealth * modifier); + + EventBatchId eventBatch = new(); + pokemon.Damage(damage, DamageSource.Misc, eventBatch); + pokemon.BattleData?.Battle.EventHook.Invoke(new DialogEvent("spikes_damage", new Dictionary + { + { "pokemon", pokemon }, + }) + { + BatchId = eventBatch, + }); + } +} \ No newline at end of file diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Side/SpotlightEffect.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Side/SpotlightEffect.cs new file mode 100644 index 0000000..cf5c59a --- /dev/null +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Side/SpotlightEffect.cs @@ -0,0 +1,33 @@ +using System.Collections.Generic; +using PkmnLib.Dynamic.Models.BattleFlow; + +namespace PkmnLib.Plugin.Gen7.Scripts.Side; + +public class SpotlightEffect : Script +{ + private readonly byte _position; + private readonly IBattleSide _side; + + public SpotlightEffect(IBattleSide side, byte position) + { + _side = side; + _position = position; + } + + /// + public override void ChangeIncomingTargets(IMoveChoice moveChoice, ref IReadOnlyList targets) + { + if (!TargetResolver.IsValidTarget(_side.Index, _position, moveChoice.ChosenMove.MoveData.Target, + moveChoice.User)) + return; + if (_side.Pokemon[_position] == null) + return; + targets = [_side.Pokemon[_position]!]; + } + + /// + public override void OnEndTurn(IBattle battle) + { + RemoveSelf(); + } +} \ No newline at end of file diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Side/StealthRockEffect.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Side/StealthRockEffect.cs new file mode 100644 index 0000000..275adeb --- /dev/null +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Side/StealthRockEffect.cs @@ -0,0 +1,26 @@ +using System.Collections.Generic; + +namespace PkmnLib.Plugin.Gen7.Scripts.Side; + +[Script(ScriptCategory.Side, "stealth_rock")] +public class StealthRockEffect : Script +{ + /// + public override void OnSwitchIn(IPokemon pokemon, byte position) + { + var typeLibrary = pokemon.Library.StaticLibrary.Types; + var effectiveness = 1.0f; + if (typeLibrary.TryGetTypeIdentifier("rock", out var rockType)) + { + effectiveness = typeLibrary.GetEffectiveness(rockType, pokemon.Types); + } + var damage = (uint)(pokemon.MaxHealth / 8f * effectiveness); + EventBatchId batchId = new(); + pokemon.Damage(damage, DamageSource.Misc, batchId); + pokemon.BattleData?.Battle.EventHook.Invoke(new DialogEvent("stealth_rock_damage", + new Dictionary + { + { "pokemon", pokemon }, + })); + } +} \ No newline at end of file diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Side/StickyWebEffect.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Side/StickyWebEffect.cs new file mode 100644 index 0000000..e3d9792 --- /dev/null +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Side/StickyWebEffect.cs @@ -0,0 +1,13 @@ +namespace PkmnLib.Plugin.Gen7.Scripts.Side; + +[Script(ScriptCategory.Side, "sticky_web")] +public class StickyWebEffect : Script +{ + /// + public override void OnSwitchIn(IPokemon pokemon, byte position) + { + if (pokemon.IsFloating) + return; + pokemon.ChangeStatBoost(Statistic.Speed, -1, false); + } +} \ No newline at end of file diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Weather/Hail.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Weather/Hail.cs index ddd4b44..cde3a7a 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Weather/Hail.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Weather/Hail.cs @@ -1,6 +1,5 @@ using System.Collections.Generic; using System.Linq; -using PkmnLib.Static; using PkmnLib.Static.Utils; namespace PkmnLib.Plugin.Gen7.Scripts.Weather;