diff --git a/PkmnLib.Dynamic/AI/PokemonAI.cs b/PkmnLib.Dynamic/AI/PokemonAI.cs index fcf6805..b63775a 100644 --- a/PkmnLib.Dynamic/AI/PokemonAI.cs +++ b/PkmnLib.Dynamic/AI/PokemonAI.cs @@ -1,4 +1,3 @@ -using JetBrains.Annotations; using PkmnLib.Dynamic.Models; using PkmnLib.Dynamic.Models.Choices; using PkmnLib.Static.Moves; diff --git a/PkmnLib.Dynamic/BattleFlow/MoveTurnExecutor.cs b/PkmnLib.Dynamic/BattleFlow/MoveTurnExecutor.cs index 03c2b2b..9e88cb2 100644 --- a/PkmnLib.Dynamic/BattleFlow/MoveTurnExecutor.cs +++ b/PkmnLib.Dynamic/BattleFlow/MoveTurnExecutor.cs @@ -132,7 +132,7 @@ public static class MoveTurnExecutor target.RunScriptHook(x => x.IsInvulnerableToMove(executingMove, target, ref isInvulnerable)); if (isInvulnerable) { - // TODO: event? + battle.EventHook.Invoke(new MoveInvulnerableEvent(executingMove, target)); return; } diff --git a/PkmnLib.Dynamic/Events/Handling/EventData.cs b/PkmnLib.Dynamic/Events/Handling/EventData.cs index 4062393..c637313 100644 --- a/PkmnLib.Dynamic/Events/Handling/EventData.cs +++ b/PkmnLib.Dynamic/Events/Handling/EventData.cs @@ -1,5 +1,3 @@ -using JetBrains.Annotations; - namespace PkmnLib.Dynamic.Events; /// diff --git a/PkmnLib.Dynamic/Events/MoveInvulnerableEvent.cs b/PkmnLib.Dynamic/Events/MoveInvulnerableEvent.cs new file mode 100644 index 0000000..d8a7bf1 --- /dev/null +++ b/PkmnLib.Dynamic/Events/MoveInvulnerableEvent.cs @@ -0,0 +1,18 @@ +using PkmnLib.Dynamic.Models; + +namespace PkmnLib.Dynamic.Events; + +public class MoveInvulnerableEvent : IEventData +{ + public IExecutingMove ExecutingMove { get; } + public IPokemon Target { get; } + + public MoveInvulnerableEvent(IExecutingMove executingMove, IPokemon target) + { + ExecutingMove = executingMove; + Target = target; + } + + /// + public EventBatchId BatchId { get; init; } +} \ No newline at end of file diff --git a/PkmnLib.Dynamic/GlobalUsings.cs b/PkmnLib.Dynamic/GlobalUsings.cs index dc69b25..87fb77a 100644 --- a/PkmnLib.Dynamic/GlobalUsings.cs +++ b/PkmnLib.Dynamic/GlobalUsings.cs @@ -1,4 +1,5 @@ global using LevelInt = byte; +global using JetBrains.Annotations; namespace PkmnLib.Dynamic; diff --git a/PkmnLib.Dynamic/Libraries/DataLoaders/ItemDataLoader.cs b/PkmnLib.Dynamic/Libraries/DataLoaders/ItemDataLoader.cs index 4a86f65..9be36b2 100644 --- a/PkmnLib.Dynamic/Libraries/DataLoaders/ItemDataLoader.cs +++ b/PkmnLib.Dynamic/Libraries/DataLoaders/ItemDataLoader.cs @@ -1,6 +1,5 @@ using System.Collections.Immutable; using System.Text.Json; -using JetBrains.Annotations; using PkmnLib.Dynamic.Libraries.DataLoaders.Models; using PkmnLib.Static; using PkmnLib.Static.Libraries; diff --git a/PkmnLib.Dynamic/Libraries/DataLoaders/MoveDataLoader.cs b/PkmnLib.Dynamic/Libraries/DataLoaders/MoveDataLoader.cs index 7f382ca..636d59c 100644 --- a/PkmnLib.Dynamic/Libraries/DataLoaders/MoveDataLoader.cs +++ b/PkmnLib.Dynamic/Libraries/DataLoaders/MoveDataLoader.cs @@ -1,6 +1,5 @@ using System.Collections.Immutable; using System.Text.Json; -using JetBrains.Annotations; using PkmnLib.Dynamic.Libraries.DataLoaders.Models; using PkmnLib.Static; using PkmnLib.Static.Libraries; diff --git a/PkmnLib.Dynamic/Libraries/DataLoaders/SpeciesDataLoader.cs b/PkmnLib.Dynamic/Libraries/DataLoaders/SpeciesDataLoader.cs index e75107f..facddf6 100644 --- a/PkmnLib.Dynamic/Libraries/DataLoaders/SpeciesDataLoader.cs +++ b/PkmnLib.Dynamic/Libraries/DataLoaders/SpeciesDataLoader.cs @@ -1,7 +1,6 @@ using System.Collections.Immutable; using System.Text.Json; using System.Text.Json.Nodes; -using JetBrains.Annotations; using PkmnLib.Dynamic.Libraries.DataLoaders.Models; using PkmnLib.Static; using PkmnLib.Static.Libraries; diff --git a/PkmnLib.Dynamic/Models/Battle.cs b/PkmnLib.Dynamic/Models/Battle.cs index 335d254..fa245b2 100644 --- a/PkmnLib.Dynamic/Models/Battle.cs +++ b/PkmnLib.Dynamic/Models/Battle.cs @@ -40,6 +40,13 @@ public interface IBattle : IScriptSource, IDeepCloneable, IDisposable /// byte PositionsPerSide { get; } + /// + /// The name of the environment the battle is taking place in, such as "grass", "cave", etc. + /// This is sometimes referred to as the "terrain" in the games, but is not the same as the + /// which is a battle condition that can be set by scripts. + /// + StringKey EnvironmentName { get; } + /// /// Whether this battle is a wild battle. In a wild battle, the player can catch the opposing Pokemon, /// and moves like roar will end the battle instead of switching out the Pokemon. @@ -173,9 +180,12 @@ public class BattleImpl : ScriptSource, IBattle /// Whether Pokémon are allowed to flee from the battle. /// The number of sides in the battle. Generally 2. /// The number of spots there are on each side for Pokémon. 1 for singles, 2 for doubles, etc. + /// Whether this battle is a wild battle. In a wild battle, the player can catch the opposing Pokémon, + /// and moves like roar will end the battle instead of switching out the Pokémon. + /// The name of the environment the battle is taking place in, such as "grass", "cave", etc. /// The seed for the RNG. If null, this uses a time-dependent seed. public BattleImpl(IDynamicLibrary library, IReadOnlyList parties, bool canFlee, byte numberOfSides, - byte positionsPerSide, bool isWildBattle, int? randomSeed = null) + byte positionsPerSide, bool isWildBattle, StringKey environmentName, int? randomSeed = null) { Library = library; Parties = parties; @@ -183,6 +193,7 @@ public class BattleImpl : ScriptSource, IBattle NumberOfSides = numberOfSides; PositionsPerSide = positionsPerSide; IsWildBattle = isWildBattle; + EnvironmentName = environmentName; Volatile = new ScriptSet(this); var sides = new IBattleSide[numberOfSides]; for (byte i = 0; i < numberOfSides; i++) @@ -207,6 +218,9 @@ public class BattleImpl : ScriptSource, IBattle /// public byte PositionsPerSide { get; } + /// + public StringKey EnvironmentName { get; } + /// public bool IsWildBattle { get; } diff --git a/PkmnLib.Dynamic/Models/Choices/MoveChoice.cs b/PkmnLib.Dynamic/Models/Choices/MoveChoice.cs index f82c724..28aba15 100644 --- a/PkmnLib.Dynamic/Models/Choices/MoveChoice.cs +++ b/PkmnLib.Dynamic/Models/Choices/MoveChoice.cs @@ -1,4 +1,3 @@ -using JetBrains.Annotations; using PkmnLib.Dynamic.ScriptHandling; using PkmnLib.Static.Utils; diff --git a/PkmnLib.Dynamic/Models/Pokemon.cs b/PkmnLib.Dynamic/Models/Pokemon.cs index 78b0112..7978925 100644 --- a/PkmnLib.Dynamic/Models/Pokemon.cs +++ b/PkmnLib.Dynamic/Models/Pokemon.cs @@ -1,5 +1,4 @@ using System.Diagnostics.CodeAnalysis; -using JetBrains.Annotations; using PkmnLib.Dynamic.Events; using PkmnLib.Dynamic.Libraries; using PkmnLib.Dynamic.Models.Serialized; diff --git a/PkmnLib.Dynamic/ScriptHandling/Registry/ItemScriptAttribute.cs b/PkmnLib.Dynamic/ScriptHandling/Registry/ItemScriptAttribute.cs index a8f3519..47b15f5 100644 --- a/PkmnLib.Dynamic/ScriptHandling/Registry/ItemScriptAttribute.cs +++ b/PkmnLib.Dynamic/ScriptHandling/Registry/ItemScriptAttribute.cs @@ -1,4 +1,3 @@ -using JetBrains.Annotations; using PkmnLib.Static.Utils; namespace PkmnLib.Dynamic.ScriptHandling.Registry; diff --git a/PkmnLib.Dynamic/ScriptHandling/Registry/Plugin.cs b/PkmnLib.Dynamic/ScriptHandling/Registry/Plugin.cs index f003b72..2a9c42d 100644 --- a/PkmnLib.Dynamic/ScriptHandling/Registry/Plugin.cs +++ b/PkmnLib.Dynamic/ScriptHandling/Registry/Plugin.cs @@ -1,5 +1,3 @@ -using JetBrains.Annotations; - namespace PkmnLib.Dynamic.ScriptHandling.Registry; /// diff --git a/PkmnLib.Dynamic/ScriptHandling/Registry/ScriptAttribute.cs b/PkmnLib.Dynamic/ScriptHandling/Registry/ScriptAttribute.cs index b2cc6a8..37ae68a 100644 --- a/PkmnLib.Dynamic/ScriptHandling/Registry/ScriptAttribute.cs +++ b/PkmnLib.Dynamic/ScriptHandling/Registry/ScriptAttribute.cs @@ -1,4 +1,3 @@ -using JetBrains.Annotations; using PkmnLib.Static.Utils; namespace PkmnLib.Dynamic.ScriptHandling.Registry; diff --git a/PkmnLib.Dynamic/ScriptHandling/Registry/ScriptRegistry.cs b/PkmnLib.Dynamic/ScriptHandling/Registry/ScriptRegistry.cs index c1d17a3..0b7d9bf 100644 --- a/PkmnLib.Dynamic/ScriptHandling/Registry/ScriptRegistry.cs +++ b/PkmnLib.Dynamic/ScriptHandling/Registry/ScriptRegistry.cs @@ -1,6 +1,5 @@ using System.Linq.Expressions; using System.Reflection; -using JetBrains.Annotations; using PkmnLib.Dynamic.Libraries; using PkmnLib.Static; using PkmnLib.Static.Utils; diff --git a/PkmnLib.Dynamic/StaticHelpers.cs b/PkmnLib.Dynamic/StaticHelpers.cs index 319dd3d..b1a2abf 100644 --- a/PkmnLib.Dynamic/StaticHelpers.cs +++ b/PkmnLib.Dynamic/StaticHelpers.cs @@ -5,11 +5,17 @@ namespace PkmnLib.Dynamic; /// public static class StaticHelpers { + /// + /// A delegate that provides the current date and time. + /// + public delegate DateTimeOffset DateTimeProviderDelegate(); + /// /// A function to get the current date and time. This can be replaced in cases where the date and time /// may not be the same as the system time. /// - public static Func DateTimeProvider { get; set; } = () => DateTimeOffset.Now; + [PublicAPI] + public static DateTimeProviderDelegate DateTimeProvider { get; set; } = () => DateTimeOffset.Now; /// /// Get the current date and time. diff --git a/PkmnLib.Static/Utils/StringKey.cs b/PkmnLib.Static/Utils/StringKey.cs index ea30cd4..334fee8 100644 --- a/PkmnLib.Static/Utils/StringKey.cs +++ b/PkmnLib.Static/Utils/StringKey.cs @@ -71,4 +71,6 @@ public readonly record struct StringKey /// public static bool operator !=(StringKey? left, StringKey right) => !(left == right); + + public bool Contains(StringKey other) => _key.IndexOf(other._key, StringComparison.InvariantCultureIgnoreCase) >= 0; } \ No newline at end of file diff --git a/PkmnLib.Tests/Integration/IntegrationTestRunner.cs b/PkmnLib.Tests/Integration/IntegrationTestRunner.cs index 2cc21c8..dccd86e 100644 --- a/PkmnLib.Tests/Integration/IntegrationTestRunner.cs +++ b/PkmnLib.Tests/Integration/IntegrationTestRunner.cs @@ -87,7 +87,8 @@ public class IntegrationTestRunner return new BattlePartyImpl(party, x.Indices.Select(y => new ResponsibleIndex(y[0], y[1])).ToArray()); }).ProcessOneAtATime().GetResultsAsync(); using var battle = new BattleImpl(library, parties, test.BattleSetup.CanFlee, test.BattleSetup.NumberOfSides, - test.BattleSetup.PositionsPerSide, false, test.BattleSetup.Seed); + test.BattleSetup.PositionsPerSide, false, test.BattleSetup.EnvironmentName ?? "grass", + test.BattleSetup.Seed); foreach (var action in test.Actions) { diff --git a/PkmnLib.Tests/Integration/Models/IntegrationTestModel.cs b/PkmnLib.Tests/Integration/Models/IntegrationTestModel.cs index a1d896f..42819b3 100644 --- a/PkmnLib.Tests/Integration/Models/IntegrationTestModel.cs +++ b/PkmnLib.Tests/Integration/Models/IntegrationTestModel.cs @@ -19,6 +19,7 @@ public class IntegrationTestBattleSetup public byte NumberOfSides { get; set; } public byte PositionsPerSide { get; set; } public bool HasDamageRandomness { get; set; } + public string? EnvironmentName { get; set; } public IntegrationTestParty[] Parties { get; set; } = null!; } diff --git a/PkmnLib.Tests/Static/DeepCloneTests.cs b/PkmnLib.Tests/Static/DeepCloneTests.cs index 9895562..a357468 100644 --- a/PkmnLib.Tests/Static/DeepCloneTests.cs +++ b/PkmnLib.Tests/Static/DeepCloneTests.cs @@ -108,7 +108,7 @@ public class DeepCloneTests new BattlePartyImpl(party1, [new ResponsibleIndex(0, 0)]), new BattlePartyImpl(party2, [new ResponsibleIndex(1, 0)]), }; - using var battle = new BattleImpl(library, parties, false, 2, 3, false, 0); + using var battle = new BattleImpl(library, parties, false, 2, 3, false, "grass", 0); battle.Sides[0].SwapPokemon(0, party1[0]); battle.Sides[1].SwapPokemon(0, party2[0]); party1[0]!.ChangeStatBoost(Statistic.Defense, 2, true, false); diff --git a/Plugins/PkmnLib.Plugin.Gen7/Libraries/Battling/Gen7MiscLibrary.cs b/Plugins/PkmnLib.Plugin.Gen7/Libraries/Battling/Gen7MiscLibrary.cs index 6ddf241..cb5dc5f 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Libraries/Battling/Gen7MiscLibrary.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Libraries/Battling/Gen7MiscLibrary.cs @@ -1,7 +1,6 @@ using PkmnLib.Dynamic; using PkmnLib.Dynamic.Libraries; using PkmnLib.Static.Moves; -using PkmnLib.Static.Utils; namespace PkmnLib.Plugin.Gen7.Libraries.Battling; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Teravolt.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Teravolt.cs index 2710738..76e6ab2 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Teravolt.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Teravolt.cs @@ -1,4 +1,3 @@ -using PkmnLib.Plugin.Gen7.Scripts.Pokemon; using PkmnLib.Plugin.Gen7.Scripts.Side; namespace PkmnLib.Plugin.Gen7.Scripts.Abilities; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Battle/Gravity.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Battle/Gravity.cs index c079888..9167339 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Battle/Gravity.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Battle/Gravity.cs @@ -1,5 +1,3 @@ -using PkmnLib.Static.Utils; - namespace PkmnLib.Plugin.Gen7.Scripts.Battle; [Script(ScriptCategory.Battle, "gravity")] diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Battle/MudSportEffect.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Battle/MudSportEffect.cs index 4dd52d9..ee5b0a0 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Battle/MudSportEffect.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Battle/MudSportEffect.cs @@ -1,5 +1,3 @@ -using PkmnLib.Static.Utils; - namespace PkmnLib.Plugin.Gen7.Scripts.Battle; [Script(ScriptCategory.Battle, "mud_sport")] diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Battle/UproarEffect.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Battle/UproarEffect.cs index fdc4d83..819c7be 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Battle/UproarEffect.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Battle/UproarEffect.cs @@ -1,5 +1,3 @@ -using PkmnLib.Static.Utils; - namespace PkmnLib.Plugin.Gen7.Scripts.Battle; [Script(ScriptCategory.Battle, "uproar_effect")] diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Items/HealingItem.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Items/HealingItem.cs index dc9cea7..6379167 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Items/HealingItem.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Items/HealingItem.cs @@ -1,5 +1,3 @@ -using PkmnLib.Static.Utils; - namespace PkmnLib.Plugin.Gen7.Scripts.Items; [ItemScript("healing_item")] diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Items/StaticPokeball.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Items/StaticPokeball.cs index a168f22..d3fa250 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Items/StaticPokeball.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Items/StaticPokeball.cs @@ -1,5 +1,3 @@ -using PkmnLib.Static.Utils; - namespace PkmnLib.Plugin.Gen7.Scripts.Items; /// diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/MoveVolatile/BypassSleepVolatile.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/MoveVolatile/BypassSleepVolatile.cs index 9c4ac2a..0566327 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/MoveVolatile/BypassSleepVolatile.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/MoveVolatile/BypassSleepVolatile.cs @@ -1,5 +1,3 @@ -using PkmnLib.Static.Utils; - namespace PkmnLib.Plugin.Gen7.Scripts.MoveVolatile; [Script(ScriptCategory.MoveVolatile, "bypass_sleep")] diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/MoveVolatile/MeFirstPowerBoost.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/MoveVolatile/MeFirstPowerBoost.cs index e7d23a6..0bdf673 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/MoveVolatile/MeFirstPowerBoost.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/MoveVolatile/MeFirstPowerBoost.cs @@ -1,5 +1,3 @@ -using PkmnLib.Static.Utils; - namespace PkmnLib.Plugin.Gen7.Scripts.MoveVolatile; [Script(ScriptCategory.MoveVolatile, "me_first")] diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/MoveVolatile/RoundPowerBoost.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/MoveVolatile/RoundPowerBoost.cs index d6e5121..00f4a84 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/MoveVolatile/RoundPowerBoost.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/MoveVolatile/RoundPowerBoost.cs @@ -1,5 +1,3 @@ -using PkmnLib.Static.Utils; - namespace PkmnLib.Plugin.Gen7.Scripts.MoveVolatile; [Script(ScriptCategory.MoveVolatile, "round")] diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Acrobatics.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Acrobatics.cs index 12769e4..b065534 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Acrobatics.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Acrobatics.cs @@ -1,5 +1,3 @@ -using PkmnLib.Static.Utils; - namespace PkmnLib.Plugin.Gen7.Scripts.Moves; /// diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Assist.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Assist.cs index 0a1ae34..5c8bc65 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Assist.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Assist.cs @@ -1,6 +1,5 @@ using PkmnLib.Plugin.Gen7.Scripts.Utils; using PkmnLib.Static.Moves; -using PkmnLib.Static.Utils; namespace PkmnLib.Plugin.Gen7.Scripts.Moves; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/AuroraVeil.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/AuroraVeil.cs index 0e8c381..6fbc4df 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/AuroraVeil.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/AuroraVeil.cs @@ -1,6 +1,5 @@ using PkmnLib.Plugin.Gen7.Scripts.Side; using PkmnLib.Plugin.Gen7.Scripts.Weather; -using PkmnLib.Static.Utils; 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 7a2d51d..aafc590 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/BatonPass.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/BatonPass.cs @@ -1,5 +1,4 @@ using PkmnLib.Plugin.Gen7.Scripts.Utils; -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 271bfc6..5c7af57 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/BeatUp.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/BeatUp.cs @@ -1,5 +1,3 @@ -using PkmnLib.Static.Utils; - namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "beat_up")] diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Bind.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Bind.cs index 492bb47..a1267e9 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Bind.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Bind.cs @@ -1,5 +1,4 @@ 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/Brine.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Brine.cs index ee620ae..94d1017 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Brine.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Brine.cs @@ -1,5 +1,3 @@ -using PkmnLib.Static.Utils; - namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "brine")] diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Camouflage.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Camouflage.cs index 112759d..fa9d738 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Camouflage.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Camouflage.cs @@ -1,7 +1,44 @@ +using PkmnLib.Plugin.Gen7.Scripts.Utils; + namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "camouflage")] public class Camouflage : Script { - // FIXME: Implement this. How to get the terrain in a sane manner? See also SecretPower.cs + /// + public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + { + var type = GetTypeIdentifier(move.Battle); + if (type == null) + return; + move.User.SetTypes([type.Value]); + } + + private static TypeIdentifier? GetTypeIdentifier(IBattle battle) + { + var typesLibrary = battle.Library.StaticLibrary.Types; + var environmentCategory = battle.GetEnvironmentCategory(); + return environmentCategory switch + { + EnvironmentHelper.EnvironmentCategory.Electric when typesLibrary.TryGetTypeIdentifier("electric", + out var electricType) => electricType, + EnvironmentHelper.EnvironmentCategory.Fairy when typesLibrary.TryGetTypeIdentifier("fairy", + out var fairyType) => fairyType, + EnvironmentHelper.EnvironmentCategory.Grass when typesLibrary.TryGetTypeIdentifier("grass", + out var grassType) => grassType, + EnvironmentHelper.EnvironmentCategory.Psychic when typesLibrary.TryGetTypeIdentifier("psychic", + out var psychicType) => psychicType, + EnvironmentHelper.EnvironmentCategory.Rock when typesLibrary.TryGetTypeIdentifier("rock", out var rockType) + => rockType, + EnvironmentHelper.EnvironmentCategory.Ground when typesLibrary.TryGetTypeIdentifier("ground", + out var groundType) => groundType, + EnvironmentHelper.EnvironmentCategory.Ice when typesLibrary.TryGetTypeIdentifier("ice", out var iceType) => + iceType, + EnvironmentHelper.EnvironmentCategory.Water when typesLibrary.TryGetTypeIdentifier("water", + out var waterType) => waterType, + EnvironmentHelper.EnvironmentCategory.Normal when typesLibrary.TryGetTypeIdentifier("normal", + out var normalType) => normalType, + _ => null, + }; + } } \ No newline at end of file diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/ChangeAllTargetStats.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/ChangeAllTargetStats.cs index 5091fde..a11111f 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/ChangeAllTargetStats.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/ChangeAllTargetStats.cs @@ -1,5 +1,3 @@ -using PkmnLib.Static.Utils; - namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "change_all_target_stats")] diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/ChangeMultipleTargetStatBoosts.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/ChangeMultipleTargetStatBoosts.cs index b897247..0b43dbd 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/ChangeMultipleTargetStatBoosts.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/ChangeMultipleTargetStatBoosts.cs @@ -1,5 +1,3 @@ -using PkmnLib.Static.Utils; - namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "change_multiple_target_stat_boosts")] diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/ChangeMultipleUserStatBoosts.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/ChangeMultipleUserStatBoosts.cs index 06dd718..66ac7ca 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/ChangeMultipleUserStatBoosts.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/ChangeMultipleUserStatBoosts.cs @@ -1,5 +1,3 @@ -using PkmnLib.Static.Utils; - namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "change_multiple_user_stat_boosts")] diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/ChangeTargetStats.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/ChangeTargetStats.cs index fda2959..4bd0960 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/ChangeTargetStats.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/ChangeTargetStats.cs @@ -1,5 +1,3 @@ -using PkmnLib.Static.Utils; - namespace PkmnLib.Plugin.Gen7.Scripts.Moves; public abstract class ChangeTargetStats : Script diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/ChangeUserStats.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/ChangeUserStats.cs index 1ca91ca..f96553f 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/ChangeUserStats.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/ChangeUserStats.cs @@ -1,5 +1,3 @@ -using PkmnLib.Static.Utils; - namespace PkmnLib.Plugin.Gen7.Scripts.Moves; public abstract class ChangeUserStats : Script diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Conversion.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Conversion.cs index 10c9ad3..bdeb000 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Conversion.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Conversion.cs @@ -1,5 +1,3 @@ -using PkmnLib.Static.Utils; - namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "conversion")] diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Conversion2.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Conversion2.cs index 65bdc19..5b169d1 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Conversion2.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Conversion2.cs @@ -1,5 +1,3 @@ -using PkmnLib.Static.Utils; - namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "conversion_2")] diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Copycat.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Copycat.cs index 3877407..79c55bd 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Copycat.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Copycat.cs @@ -1,5 +1,4 @@ using PkmnLib.Plugin.Gen7.Scripts.Utils; -using PkmnLib.Static.Utils; namespace PkmnLib.Plugin.Gen7.Scripts.Moves; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/CoreEnforcer.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/CoreEnforcer.cs index 6fabcd5..7fd47bb 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/CoreEnforcer.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/CoreEnforcer.cs @@ -1,5 +1,3 @@ -using PkmnLib.Static.Utils; - namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "core_enforcer")] diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Counter.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Counter.cs index fc61eb4..3df0caa 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Counter.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Counter.cs @@ -1,5 +1,4 @@ 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/CurePartyStatus.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/CurePartyStatus.cs index 5a2c520..ee5dcdd 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/CurePartyStatus.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/CurePartyStatus.cs @@ -1,5 +1,3 @@ -using PkmnLib.Static.Utils; - namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "cure_party_status")] diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Defog.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Defog.cs index 40385a8..a413eb3 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Defog.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Defog.cs @@ -1,6 +1,5 @@ using JetBrains.Annotations; using PkmnLib.Plugin.Gen7.Scripts.Side; -using PkmnLib.Static.Utils; namespace PkmnLib.Plugin.Gen7.Scripts.Moves; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Facade.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Facade.cs index 60a64e7..1a6b33e 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Facade.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Facade.cs @@ -1,5 +1,3 @@ -using PkmnLib.Static.Utils; - namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "facade")] diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/FlameBurst.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/FlameBurst.cs index 3ece355..626fdb5 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/FlameBurst.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/FlameBurst.cs @@ -1,5 +1,3 @@ -using PkmnLib.Static.Utils; - namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "flame_burst")] diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/FlameWheel.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/FlameWheel.cs index ac307da..149fd12 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/FlameWheel.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/FlameWheel.cs @@ -1,5 +1,3 @@ -using PkmnLib.Static.Utils; - namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "flame_wheel")] diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/FuryCutter.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/FuryCutter.cs index 74f1504..6365510 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/FuryCutter.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/FuryCutter.cs @@ -1,5 +1,4 @@ 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/GearUp.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/GearUp.cs index ef85cb1..90fab6e 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/GearUp.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/GearUp.cs @@ -1,5 +1,3 @@ -using PkmnLib.Static.Utils; - namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "gear_up")] diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Gravity.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Gravity.cs index 323db05..f09fc99 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Gravity.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Gravity.cs @@ -1,5 +1,4 @@ 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/Grudge.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Grudge.cs index 2be3fcc..c5e1960 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Grudge.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Grudge.cs @@ -1,5 +1,3 @@ -using PkmnLib.Static.Utils; - namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "grudge")] diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/HealBell.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/HealBell.cs index 9bab50e..bf3fbe4 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/HealBell.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/HealBell.cs @@ -1,5 +1,4 @@ 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/HealEachEndOfTurn.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/HealEachEndOfTurn.cs index f2e5bee..8994cfb 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/HealEachEndOfTurn.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/HealEachEndOfTurn.cs @@ -1,5 +1,4 @@ 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/HealPercent.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/HealPercent.cs index 8230286..26fc991 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/HealPercent.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/HealPercent.cs @@ -1,5 +1,3 @@ -using PkmnLib.Static.Utils; - namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "heal_percent")] diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Hex.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Hex.cs index bd8fad4..aab7cc3 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Hex.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Hex.cs @@ -1,5 +1,3 @@ -using PkmnLib.Static.Utils; - namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "hex")] diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/IceBall.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/IceBall.cs index 35c0195..c10cd36 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/IceBall.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/IceBall.cs @@ -1,5 +1,4 @@ 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/LastResort.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/LastResort.cs index 95f2b39..0a20186 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/LastResort.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/LastResort.cs @@ -1,5 +1,3 @@ -using PkmnLib.Static.Utils; - namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "last_resort")] diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/LightScreen.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/LightScreen.cs index 16fa1cb..dc61e72 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/LightScreen.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/LightScreen.cs @@ -1,5 +1,4 @@ using PkmnLib.Plugin.Gen7.Scripts.Side; -using PkmnLib.Static.Utils; namespace PkmnLib.Plugin.Gen7.Scripts.Moves; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/MagneticFlux.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/MagneticFlux.cs index 940bade..762398b 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/MagneticFlux.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/MagneticFlux.cs @@ -1,5 +1,3 @@ -using PkmnLib.Static.Utils; - namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "magnetic_flux")] diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/MeFirst.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/MeFirst.cs index a71d503..d348a85 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/MeFirst.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/MeFirst.cs @@ -1,5 +1,4 @@ using PkmnLib.Plugin.Gen7.Scripts.MoveVolatile; -using PkmnLib.Static.Utils; namespace PkmnLib.Plugin.Gen7.Scripts.Moves; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/MetalBurst.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/MetalBurst.cs index 3704c8d..f1b2539 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/MetalBurst.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/MetalBurst.cs @@ -1,5 +1,4 @@ using PkmnLib.Static.Moves; -using PkmnLib.Static.Utils; namespace PkmnLib.Plugin.Gen7.Scripts.Moves; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Metronome.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Metronome.cs index ba1ea40..20d070f 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Metronome.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Metronome.cs @@ -1,5 +1,4 @@ using PkmnLib.Plugin.Gen7.Scripts.Utils; -using PkmnLib.Static.Utils; namespace PkmnLib.Plugin.Gen7.Scripts.Moves; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/MirrorCoat.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/MirrorCoat.cs index ea196fa..8da449c 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/MirrorCoat.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/MirrorCoat.cs @@ -1,5 +1,4 @@ using PkmnLib.Static.Moves; -using PkmnLib.Static.Utils; namespace PkmnLib.Plugin.Gen7.Scripts.Moves; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/MirrorMove.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/MirrorMove.cs index 6e415dd..8a588a6 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/MirrorMove.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/MirrorMove.cs @@ -1,5 +1,4 @@ using PkmnLib.Plugin.Gen7.Scripts.Utils; -using PkmnLib.Static.Utils; namespace PkmnLib.Plugin.Gen7.Scripts.Moves; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Moonlight.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Moonlight.cs index a0e502c..562a532 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Moonlight.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Moonlight.cs @@ -1,5 +1,4 @@ using PkmnLib.Plugin.Gen7.Scripts.Weather; -using PkmnLib.Static.Utils; namespace PkmnLib.Plugin.Gen7.Scripts.Moves; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/NaturalGift.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/NaturalGift.cs index fbbc788..8d03beb 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/NaturalGift.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/NaturalGift.cs @@ -1,5 +1,3 @@ -using PkmnLib.Static.Utils; - namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "natural_gift")] diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/NaturePower.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/NaturePower.cs index 8da4beb..a1770ec 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/NaturePower.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/NaturePower.cs @@ -1,7 +1,52 @@ +using PkmnLib.Plugin.Gen7.Scripts.Utils; +using PkmnLib.Static.Moves; + namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "nature_power")] public class NaturePower : Script { - // FIXME: Implement this. How to get the terrain in a sane manner? + /// + public override void ChangeMove(IMoveChoice choice, ref StringKey moveName) + { + var battleData = choice.User.BattleData; + if (battleData is null) + return; + var newMoveName = GetMoveName(battleData.Battle); + if (newMoveName is null) + { + choice.Fail(); + return; + } + moveName = newMoveName.Value; + } + + private static StringKey? GetMoveName(IBattle battle) + { + var movesLibrary = battle.Library.StaticLibrary.Moves; + var environmentCategory = battle.GetEnvironmentCategory(); + var moveName = environmentCategory switch + { + EnvironmentHelper.EnvironmentCategory.Electric when movesLibrary.TryGet("thunderbolt", + out var thunderboltMove) => (StringKey?)thunderboltMove.Name, + EnvironmentHelper.EnvironmentCategory.Fairy when movesLibrary.TryGet("moonblast", out var moonblastMove) => + moonblastMove.Name, + EnvironmentHelper.EnvironmentCategory.Grass when movesLibrary.TryGet("energy_ball", out var energyballMove) + => energyballMove.Name, + EnvironmentHelper.EnvironmentCategory.Psychic when movesLibrary.TryGet("psychic", out var psychicMove) => + psychicMove.Name, + EnvironmentHelper.EnvironmentCategory.Rock when movesLibrary.TryGet("power_gem", out var rockMove) => + rockMove.Name, + EnvironmentHelper.EnvironmentCategory.Ground when movesLibrary.TryGet("earth_power", out var groundMove) => + groundMove.Name, + EnvironmentHelper.EnvironmentCategory.Ice when movesLibrary.TryGet("ice_beam", out var iceMove) => iceMove + .Name, + EnvironmentHelper.EnvironmentCategory.Water when movesLibrary.TryGet("hydro_pump", out var waterMove) => + waterMove.Name, + EnvironmentHelper.EnvironmentCategory.Normal when movesLibrary.TryGet("tri_attack", out var normalMove) => + normalMove.Name, + _ => null, + }; + return moveName; + } } \ No newline at end of file diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/OneHitKo.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/OneHitKo.cs index f7e8752..9a17ff2 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/OneHitKo.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/OneHitKo.cs @@ -1,5 +1,3 @@ -using PkmnLib.Static.Utils; - namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "one_hit_ko")] diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Payback.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Payback.cs index 58cdd99..76eed68 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Payback.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Payback.cs @@ -1,5 +1,3 @@ -using PkmnLib.Static.Utils; - namespace PkmnLib.Plugin.Gen7.Scripts.Moves; /// diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/PerishSong.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/PerishSong.cs index 11f9566..2ba20a8 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/PerishSong.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/PerishSong.cs @@ -1,5 +1,4 @@ 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/PowerTrip.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/PowerTrip.cs index 8ce88f4..2eca981 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/PowerTrip.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/PowerTrip.cs @@ -1,5 +1,3 @@ -using PkmnLib.Static.Utils; - namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "power_trip")] diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Psywave.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Psywave.cs index b35f974..1194bac 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Psywave.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Psywave.cs @@ -1,5 +1,3 @@ -using PkmnLib.Static.Utils; - namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "psywave")] diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/RapidSpin.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/RapidSpin.cs index 65b4c4a..70b1dbe 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/RapidSpin.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/RapidSpin.cs @@ -13,16 +13,15 @@ public class RapidSpin : Script move.User.Volatile.Remove(); move.User.Volatile.Remove(); move.User.Volatile.Remove(); - // TODO: Whirlpool effect removal - // TODO: Wrap effect removal + move.User.Volatile.Remove(); var battleData = move.User.BattleData; if (battleData != null) { battleData.BattleSide.VolatileScripts.Remove(); battleData.BattleSide.VolatileScripts.Remove(); - // TODO: Remove Toxic Spikes - // TODO: Remove Stealth Rock + battleData.BattleSide.VolatileScripts.Remove(); + battleData.BattleSide.VolatileScripts.Remove(); } } } \ No newline at end of file diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Reflect.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Reflect.cs index 5058b75..6db2b6e 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Reflect.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Reflect.cs @@ -1,5 +1,3 @@ -using PkmnLib.Static.Utils; - namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "reflect")] diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Retaliate.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Retaliate.cs index 4c6fbe7..76df525 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Retaliate.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Retaliate.cs @@ -1,5 +1,3 @@ -using PkmnLib.Static.Utils; - namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "retaliate")] diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Rototiller.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Rototiller.cs index fae83e7..bc0f514 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Rototiller.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Rototiller.cs @@ -1,5 +1,3 @@ -using PkmnLib.Static.Utils; - namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "rototiller")] diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/SecretPower.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/SecretPower.cs index 9941700..3dd7b62 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/SecretPower.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/SecretPower.cs @@ -1,7 +1,46 @@ +using PkmnLib.Plugin.Gen7.Scripts.Pokemon; +using PkmnLib.Plugin.Gen7.Scripts.Utils; + namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "secret_power")] public class SecretPower : Script { - // FIXME: Implement this. How to get the terrain in a sane manner? See also Camouflage.cs + /// + public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) + { + var environmentCategory = move.Battle.GetEnvironmentCategory(); + switch (environmentCategory) + { + case EnvironmentHelper.EnvironmentCategory.Electric: + case EnvironmentHelper.EnvironmentCategory.Normal: + target.SetStatus(ScriptUtils.ResolveName(), move.User); + break; + case EnvironmentHelper.EnvironmentCategory.Rock: + target.Volatile.Add(new FlinchEffect()); + break; + case EnvironmentHelper.EnvironmentCategory.Ground: + target.ChangeStatBoost(Statistic.Accuracy, -1, false, false); + break; + case EnvironmentHelper.EnvironmentCategory.Water: + target.ChangeStatBoost(Statistic.Attack, -1, false, false); + break; + case EnvironmentHelper.EnvironmentCategory.Ice: + target.SetStatus(ScriptUtils.ResolveName(), move.User); + break; + case EnvironmentHelper.EnvironmentCategory.Grass: + target.SetStatus(ScriptUtils.ResolveName(), move.User); + break; + case EnvironmentHelper.EnvironmentCategory.Fairy: + target.ChangeStatBoost(Statistic.SpecialAttack, -1, false, false); + break; + case EnvironmentHelper.EnvironmentCategory.Psychic: + target.ChangeStatBoost(Statistic.Speed, -1, false, false); + break; + // ReSharper disable once RedundantEmptySwitchSection + default: + // No effect for unrecognized environments + break; + } + } } \ No newline at end of file diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/SetStatus.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/SetStatus.cs index 1ea07c9..7e7ae32 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/SetStatus.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/SetStatus.cs @@ -1,5 +1,3 @@ -using PkmnLib.Static.Utils; - namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "set_status")] diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/SetWeather.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/SetWeather.cs index ec9af58..3710300 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/SetWeather.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/SetWeather.cs @@ -1,5 +1,3 @@ -using PkmnLib.Static.Utils; - namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "set_weather")] diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Sketch.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Sketch.cs index 530f46c..a97cf67 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Sketch.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Sketch.cs @@ -1,5 +1,3 @@ -using PkmnLib.Static.Utils; - namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "sketch")] diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/SleepTalk.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/SleepTalk.cs index 86f06da..3e67025 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/SleepTalk.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/SleepTalk.cs @@ -1,6 +1,5 @@ using PkmnLib.Plugin.Gen7.Scripts.MoveVolatile; using PkmnLib.Plugin.Gen7.Scripts.Utils; -using PkmnLib.Static.Utils; namespace PkmnLib.Plugin.Gen7.Scripts.Moves; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/SpitUp.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/SpitUp.cs index d06f5e5..cc6eed4 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/SpitUp.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/SpitUp.cs @@ -1,5 +1,4 @@ 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/StaticDamage.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/StaticDamage.cs index 36d8b52..7b48cf6 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/StaticDamage.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/StaticDamage.cs @@ -1,5 +1,3 @@ -using PkmnLib.Static.Utils; - namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "static_damage")] diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/StompingTantrum.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/StompingTantrum.cs index 4dd314b..5c7805d 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/StompingTantrum.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/StompingTantrum.cs @@ -1,5 +1,3 @@ -using PkmnLib.Static.Utils; - namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "stomping_tantrum")] diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Synchronoise.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Synchronoise.cs index 5680571..b296e97 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Synchronoise.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Synchronoise.cs @@ -1,5 +1,3 @@ -using PkmnLib.Static.Utils; - namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "synchronoise")] diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Uproar.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Uproar.cs index 694bbb6..2ac6757 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Uproar.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Uproar.cs @@ -1,5 +1,4 @@ using PkmnLib.Plugin.Gen7.Scripts.Battle; -using PkmnLib.Static.Utils; namespace PkmnLib.Plugin.Gen7.Scripts.Moves; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/WakeUpSlap.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/WakeUpSlap.cs index 1973626..2abef9f 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/WakeUpSlap.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/WakeUpSlap.cs @@ -1,5 +1,3 @@ -using PkmnLib.Static.Utils; - namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "wake_up_slap")] diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/WeatherBall.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/WeatherBall.cs index b806f0f..17ef486 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/WeatherBall.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/WeatherBall.cs @@ -1,5 +1,3 @@ -using PkmnLib.Static.Utils; - namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "weather_ball")] diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Whirlpool.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Whirlpool.cs index af9b84b..a6cc9b7 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Whirlpool.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Whirlpool.cs @@ -1,5 +1,4 @@ using PkmnLib.Plugin.Gen7.Scripts.Pokemon; -using PkmnLib.Static.Utils; namespace PkmnLib.Plugin.Gen7.Scripts.Moves; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/BaseChargeEffect.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/BaseChargeEffect.cs index 77dc003..d11a063 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/BaseChargeEffect.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/BaseChargeEffect.cs @@ -1,5 +1,4 @@ using PkmnLib.Plugin.Gen7.Scripts.Utils; -using PkmnLib.Static.Utils; namespace PkmnLib.Plugin.Gen7.Scripts.Pokemon; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/ChargeMoveEffect.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/ChargeMoveEffect.cs index ba380a1..d99e214 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/ChargeMoveEffect.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/ChargeMoveEffect.cs @@ -1,5 +1,4 @@ using PkmnLib.Plugin.Gen7.Scripts.Utils; -using PkmnLib.Static.Utils; namespace PkmnLib.Plugin.Gen7.Scripts.Pokemon; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/DisableEffect.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/DisableEffect.cs index c110f7b..b5959df 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/DisableEffect.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/DisableEffect.cs @@ -1,5 +1,3 @@ -using PkmnLib.Static.Utils; - namespace PkmnLib.Plugin.Gen7.Scripts.Pokemon; [Script(ScriptCategory.Pokemon, "disable")] diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/EncoreEffect.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/EncoreEffect.cs index 6f79ba4..44513bb 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/EncoreEffect.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/EncoreEffect.cs @@ -1,5 +1,4 @@ using PkmnLib.Plugin.Gen7.Scripts.Utils; -using PkmnLib.Static.Utils; namespace PkmnLib.Plugin.Gen7.Scripts.Pokemon; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/ForesightEffect.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/ForesightEffect.cs index 119f393..afd5b19 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/ForesightEffect.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/ForesightEffect.cs @@ -1,5 +1,4 @@ using PkmnLib.Static.Libraries; -using PkmnLib.Static.Utils; namespace PkmnLib.Plugin.Gen7.Scripts.Pokemon; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/FreezeShockEffect.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/FreezeShockEffect.cs index bbf9298..3dbf6f4 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/FreezeShockEffect.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/FreezeShockEffect.cs @@ -1,5 +1,3 @@ -using PkmnLib.Static.Utils; - namespace PkmnLib.Plugin.Gen7.Scripts.Pokemon; public class RequireChargeEffect(IPokemon owner, StringKey moveName) : BaseChargeEffect(owner, moveName); \ No newline at end of file diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/HelpingHandEffect.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/HelpingHandEffect.cs index a0b7cf9..7e8ff5f 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/HelpingHandEffect.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/HelpingHandEffect.cs @@ -1,5 +1,3 @@ -using PkmnLib.Static.Utils; - namespace PkmnLib.Plugin.Gen7.Scripts.Pokemon; public class HelpingHandEffect : Script diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/IceBallEffect.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/IceBallEffect.cs index 892b92b..937a8ad 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/IceBallEffect.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/IceBallEffect.cs @@ -1,5 +1,4 @@ using PkmnLib.Plugin.Gen7.Scripts.Utils; -using PkmnLib.Static.Utils; namespace PkmnLib.Plugin.Gen7.Scripts.Pokemon; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/ImprisonEffect.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/ImprisonEffect.cs index 536a111..8015568 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/ImprisonEffect.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/ImprisonEffect.cs @@ -1,5 +1,3 @@ -using PkmnLib.Static.Utils; - namespace PkmnLib.Plugin.Gen7.Scripts.Pokemon; [Script(ScriptCategory.Pokemon, "imprison")] diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/IngrainEffect.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/IngrainEffect.cs index 2b3c450..bc4345a 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/IngrainEffect.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/IngrainEffect.cs @@ -1,5 +1,3 @@ -using PkmnLib.Static.Utils; - namespace PkmnLib.Plugin.Gen7.Scripts.Pokemon; [Script(ScriptCategory.Pokemon, "ingrain")] diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/OutrageLikeEffect.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/OutrageLikeEffect.cs index d4a2f1a..d752376 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/OutrageLikeEffect.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/OutrageLikeEffect.cs @@ -1,5 +1,4 @@ using PkmnLib.Plugin.Gen7.Scripts.Utils; -using PkmnLib.Static.Utils; namespace PkmnLib.Plugin.Gen7.Scripts.Pokemon; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/PursuitEffect.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/PursuitEffect.cs index d7ca0df..d4b3405 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/PursuitEffect.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/PursuitEffect.cs @@ -1,5 +1,4 @@ using PkmnLib.Dynamic.BattleFlow; -using PkmnLib.Static.Utils; namespace PkmnLib.Plugin.Gen7.Scripts.Pokemon; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/RoostEffect.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/RoostEffect.cs index 9ac0bd6..54df028 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/RoostEffect.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/RoostEffect.cs @@ -1,5 +1,3 @@ -using PkmnLib.Static.Utils; - namespace PkmnLib.Plugin.Gen7.Scripts.Pokemon; [Script(ScriptCategory.Pokemon, "roost_effect")] diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/SmackDownEffect.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/SmackDownEffect.cs index b6985d1..b7737d3 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/SmackDownEffect.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/SmackDownEffect.cs @@ -1,5 +1,3 @@ -using PkmnLib.Static.Utils; - namespace PkmnLib.Plugin.Gen7.Scripts.Pokemon; [Script(ScriptCategory.Pokemon, "smack_down")] diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/ThousandArrowsEffect.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/ThousandArrowsEffect.cs index 5a35530..302e7b5 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/ThousandArrowsEffect.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/ThousandArrowsEffect.cs @@ -1,5 +1,3 @@ -using PkmnLib.Static.Utils; - namespace PkmnLib.Plugin.Gen7.Scripts.Pokemon; [Script(ScriptCategory.Move, "thousand_arrows")] diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Side/SafeguardEffect.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Side/SafeguardEffect.cs index 71ff07f..590d3b5 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Side/SafeguardEffect.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Side/SafeguardEffect.cs @@ -1,5 +1,4 @@ using PkmnLib.Plugin.Gen7.Scripts.Pokemon; -using PkmnLib.Static.Utils; namespace PkmnLib.Plugin.Gen7.Scripts.Side; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Status/Sleep.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Status/Sleep.cs index eeb8376..f63a408 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Status/Sleep.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Status/Sleep.cs @@ -1,5 +1,3 @@ -using PkmnLib.Static.Utils; - namespace PkmnLib.Plugin.Gen7.Scripts.Status; [Script(ScriptCategory.Status, "sleep")] diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Utils/CopyableMoves.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Utils/CopyableMoves.cs index 6e0e395..01d20ce 100644 --- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Utils/CopyableMoves.cs +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Utils/CopyableMoves.cs @@ -1,5 +1,4 @@ using PkmnLib.Static.Moves; -using PkmnLib.Static.Utils; namespace PkmnLib.Plugin.Gen7.Scripts.Utils; diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Utils/EnvironmentHelper.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Utils/EnvironmentHelper.cs new file mode 100644 index 0000000..d752c20 --- /dev/null +++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Utils/EnvironmentHelper.cs @@ -0,0 +1,43 @@ +namespace PkmnLib.Plugin.Gen7.Scripts.Utils; + +public static class EnvironmentHelper +{ + public enum EnvironmentCategory + { + Electric, + Fairy, + Grass, + Psychic, + Rock, + Ground, + Ice, + Water, + Normal, + } + + public static EnvironmentCategory GetEnvironmentCategory(this IBattle battle) + { + var terrainName = battle.TerrainName; + if (terrainName == ScriptUtils.ResolveName()) + return EnvironmentCategory.Electric; + if (terrainName == ScriptUtils.ResolveName()) + return EnvironmentCategory.Fairy; + if (terrainName == ScriptUtils.ResolveName()) + return EnvironmentCategory.Grass; + if (terrainName == ScriptUtils.ResolveName()) + return EnvironmentCategory.Psychic; + + var environment = battle.EnvironmentName; + if (environment.Contains("cave")) + return EnvironmentCategory.Rock; + if (environment.Contains("mountain") || environment.Contains("beach")) + return EnvironmentCategory.Ground; + if (environment.Contains("snow")) + return EnvironmentCategory.Ice; + if (environment.Contains("sea") || environment.Contains("lake") || environment.Contains("river")) + return EnvironmentCategory.Water; + if (environment.Contains("forest") || environment.Contains("field")) + return EnvironmentCategory.Normal; + return EnvironmentCategory.Normal; // Default case if no specific environment is matched + } +} \ No newline at end of file