diff --git a/PkmnLib.Dynamic/ScriptHandling/ProxyScript.cs b/PkmnLib.Dynamic/ScriptHandling/ProxyScript.cs
index 77494e2..36c744e 100644
--- a/PkmnLib.Dynamic/ScriptHandling/ProxyScript.cs
+++ b/PkmnLib.Dynamic/ScriptHandling/ProxyScript.cs
@@ -23,7 +23,7 @@ public class ProxyScript : Script
///
public override void ChangeOffensiveStatValue(IExecutingMove move, IPokemon target, byte hit, uint defensiveStat,
- ImmutableStatisticSet targetStats, ref uint value)
+ ImmutableStatisticSet targetStats, Statistic stat, ref uint value)
{
foreach (var (script, handler) in _changeOffensiveStatValueEvents)
{
diff --git a/PkmnLib.Dynamic/ScriptHandling/Script.cs b/PkmnLib.Dynamic/ScriptHandling/Script.cs
index b2db0f0..6db2c4e 100644
--- a/PkmnLib.Dynamic/ScriptHandling/Script.cs
+++ b/PkmnLib.Dynamic/ScriptHandling/Script.cs
@@ -344,7 +344,7 @@ public abstract class Script : IDeepCloneable
/// This function allows a script to change the actual offensive stat values used when calculating damage
///
public virtual void ChangeOffensiveStatValue(IExecutingMove move, IPokemon target, byte hit, uint defensiveStat,
- ImmutableStatisticSet targetStats, ref uint value)
+ ImmutableStatisticSet targetStats, Statistic stat, ref uint value)
{
}
@@ -352,7 +352,7 @@ public abstract class Script : IDeepCloneable
/// This function allows a script to change the actual defensive stat values used when calculating damage.
///
public virtual void ChangeDefensiveStatValue(IExecutingMove move, IPokemon target, byte hit, uint offensiveStat,
- ImmutableStatisticSet targetStats, ref uint value)
+ ImmutableStatisticSet targetStats, Statistic stat, ref uint value)
{
}
diff --git a/Plugins/PkmnLib.Plugin.Gen7/Data/Abilities.jsonc b/Plugins/PkmnLib.Plugin.Gen7/Data/Abilities.jsonc
index 0098278..03d7e4e 100755
--- a/Plugins/PkmnLib.Plugin.Gen7/Data/Abilities.jsonc
+++ b/Plugins/PkmnLib.Plugin.Gen7/Data/Abilities.jsonc
@@ -210,16 +210,36 @@
"fur_coat": {
"effect": "fur_coat"
},
- "gale_wings": {},
- "galvanize": {},
- "gluttony": {},
- "gooey": {},
- "grass_pelt": {},
- "grassy_surge": {},
- "guts": {},
- "harvest": {},
- "healer": {},
- "heatproof": {},
+ "gale_wings": {
+ "effect": "gale_wings"
+ },
+ "galvanize": {
+ "effect": "galvanize"
+ },
+ "gluttony": {
+ "effect": "gluttony"
+ },
+ "gooey": {
+ "effect": "gooey"
+ },
+ "grass_pelt": {
+ "effect": "grass_pelt"
+ },
+ "grassy_surge": {
+ "effect": "grassy_surge"
+ },
+ "guts": {
+ "effect": "guts"
+ },
+ "harvest": {
+ "effect": "harvest"
+ },
+ "healer": {
+ "effect": "healer"
+ },
+ "heatproof": {
+ "effect": "heatproof"
+ },
"heavy_metal": {},
"honey_gather": {},
"huge_power": {},
diff --git a/Plugins/PkmnLib.Plugin.Gen7/Libraries/Battling/Gen7DamageCalculator.cs b/Plugins/PkmnLib.Plugin.Gen7/Libraries/Battling/Gen7DamageCalculator.cs
index 13bbd8a..57508e0 100644
--- a/Plugins/PkmnLib.Plugin.Gen7/Libraries/Battling/Gen7DamageCalculator.cs
+++ b/Plugins/PkmnLib.Plugin.Gen7/Libraries/Battling/Gen7DamageCalculator.cs
@@ -132,11 +132,10 @@ public class Gen7DamageCalculator(Gen7PluginConfiguration configuration) : IDama
var defensiveStat = targetStats.GetStatistic(defensive);
var origOffensiveStat = offensiveStat;
- executingMove.RunScriptHook(script =>
- script.ChangeOffensiveStatValue(executingMove, target, hitNumber, defensiveStat, targetStats,
- ref offensiveStat));
+ executingMove.RunScriptHook(script => script.ChangeOffensiveStatValue(executingMove, target, hitNumber,
+ defensiveStat, targetStats, offensive, ref offensiveStat));
executingMove.RunScriptHook(script => script.ChangeDefensiveStatValue(executingMove, target, hitNumber,
- origOffensiveStat, targetStats, ref defensiveStat));
+ origOffensiveStat, targetStats, defensive, ref defensiveStat));
var modifier = (float)offensiveStat / defensiveStat;
executingMove.RunScriptHook(script =>
diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Anticipation.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Anticipation.cs
index 6442d68..6a44259 100644
--- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Anticipation.cs
+++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Anticipation.cs
@@ -1,5 +1,3 @@
-using PkmnLib.Static.Utils;
-
namespace PkmnLib.Plugin.Gen7.Scripts.Abilities;
///
diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/AuraBreak.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/AuraBreak.cs
index a26c4bb..f19b45c 100644
--- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/AuraBreak.cs
+++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/AuraBreak.cs
@@ -1,5 +1,3 @@
-using PkmnLib.Static.Utils;
-
namespace PkmnLib.Plugin.Gen7.Scripts.Abilities;
///
diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/BadDreams.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/BadDreams.cs
index 13507ac..086f057 100644
--- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/BadDreams.cs
+++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/BadDreams.cs
@@ -1,5 +1,3 @@
-using PkmnLib.Static.Utils;
-
namespace PkmnLib.Plugin.Gen7.Scripts.Abilities;
///
diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/ChangeMoveTypeAbility.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/ChangeMoveTypeAbility.cs
index 5112fda..cd8f487 100644
--- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/ChangeMoveTypeAbility.cs
+++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/ChangeMoveTypeAbility.cs
@@ -1,5 +1,3 @@
-using PkmnLib.Static.Utils;
-
namespace PkmnLib.Plugin.Gen7.Scripts.Abilities;
///
diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Comatose.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Comatose.cs
index 9f7cce1..ad41dac 100644
--- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Comatose.cs
+++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Comatose.cs
@@ -1,5 +1,3 @@
-using PkmnLib.Static.Utils;
-
namespace PkmnLib.Plugin.Gen7.Scripts.Abilities;
///
diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/DarkAura.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/DarkAura.cs
index cba063c..2cd6d9f 100644
--- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/DarkAura.cs
+++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/DarkAura.cs
@@ -1,5 +1,3 @@
-using PkmnLib.Static.Utils;
-
namespace PkmnLib.Plugin.Gen7.Scripts.Abilities;
///
diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/ElectricSurge.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/ElectricSurge.cs
index 9d88485..4aaf37d 100644
--- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/ElectricSurge.cs
+++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/ElectricSurge.cs
@@ -1,5 +1,3 @@
-using PkmnLib.Static.Utils;
-
namespace PkmnLib.Plugin.Gen7.Scripts.Abilities;
///
diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/GaleWings.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/GaleWings.cs
new file mode 100644
index 0000000..bafe6b8
--- /dev/null
+++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/GaleWings.cs
@@ -0,0 +1,23 @@
+namespace PkmnLib.Plugin.Gen7.Scripts.Abilities;
+
+///
+/// Gale Wings is an ability that gives priority to Flying-type moves when the Pokémon's HP is full.
+/// This ability is commonly associated with Fletchling, Fletchinder, and Talonflame.
+///
+/// Bulbapedia - Gale Wings
+///
+[Script(ScriptCategory.Ability, "gale_wings")]
+public class GaleWings : Script
+{
+ ///
+ public override void ChangePriority(IMoveChoice choice, ref sbyte priority)
+ {
+ if (choice.User.CurrentHealth != choice.User.MaxHealth)
+ return;
+ // Defensive programming, should never happen
+ if (priority == sbyte.MaxValue)
+ return;
+
+ priority++;
+ }
+}
\ No newline at end of file
diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Galvanize.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Galvanize.cs
new file mode 100644
index 0000000..c612c1b
--- /dev/null
+++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Galvanize.cs
@@ -0,0 +1,29 @@
+namespace PkmnLib.Plugin.Gen7.Scripts.Abilities;
+
+///
+/// Galvanize is an ability that turns Normal-type moves into Electric-type moves and boosts their power.
+/// This ability is exclusive to Alolan Golem.
+///
+/// Bulbapedia - Galvanize
+///
+[Script(ScriptCategory.Ability, "galvanize")]
+public class Galvanize : Script
+{
+ ///
+ public override void ChangeMoveType(IExecutingMove move, IPokemon target, byte hit,
+ ref TypeIdentifier? typeIdentifier)
+ {
+ if (typeIdentifier?.Name == "normal" &&
+ move.Battle.Library.StaticLibrary.Types.TryGetTypeIdentifier("electric", out var electricType))
+ {
+ typeIdentifier = electricType;
+ }
+ }
+
+ ///
+ public override void ChangeDamageModifier(IExecutingMove move, IPokemon target, byte hit, ref float modifier)
+ {
+ if (move.GetHitData(target, hit).Type?.Name == "electric")
+ modifier *= 1.2f;
+ }
+}
\ No newline at end of file
diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Gluttony.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Gluttony.cs
new file mode 100644
index 0000000..e0d83cb
--- /dev/null
+++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Gluttony.cs
@@ -0,0 +1,26 @@
+namespace PkmnLib.Plugin.Gen7.Scripts.Abilities;
+
+///
+/// Gluttony is an ability that causes a Pokémon to eat a held Berry when its HP drops to half or less, rather than a third or less.
+///
+/// Bulbapedia - Gluttony
+///
+[Script(ScriptCategory.Ability, "gluttony")]
+public class Gluttony : Script
+{
+ ///
+ public override void OnDamage(IPokemon pokemon, DamageSource source, uint oldHealth, uint newHealth)
+ {
+ if (pokemon.BattleData is null)
+ return;
+ var oldHealthFraction = (float)oldHealth / pokemon.MaxHealth;
+ var newHealthFraction = (float)newHealth / pokemon.MaxHealth;
+ if (!(oldHealthFraction >= 0.5f) || !(newHealthFraction < 0.5f))
+ return;
+
+ if (pokemon.HeldItem?.Category != ItemCategory.Berry)
+ return;
+
+ // FIXME: Implement after Berry triggers are implemented
+ }
+}
\ No newline at end of file
diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Gooey.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Gooey.cs
new file mode 100644
index 0000000..788dfc9
--- /dev/null
+++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Gooey.cs
@@ -0,0 +1,18 @@
+namespace PkmnLib.Plugin.Gen7.Scripts.Abilities;
+
+///
+/// Gooey is an ability that lowers the Speed of attackers making contact with the Pokémon.
+///
+/// Bulbapedia - Gooey
+///
+[Script(ScriptCategory.Ability, "gooey")]
+public class Gooey : Script
+{
+ ///
+ public override void OnIncomingHit(IExecutingMove move, IPokemon target, byte hit)
+ {
+ if (!move.UseMove.HasFlag("contact"))
+ return;
+ move.User.ChangeStatBoost(Statistic.Speed, -1, false, false);
+ }
+}
\ No newline at end of file
diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/GrassPelt.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/GrassPelt.cs
new file mode 100644
index 0000000..1e3ecd0
--- /dev/null
+++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/GrassPelt.cs
@@ -0,0 +1,19 @@
+namespace PkmnLib.Plugin.Gen7.Scripts.Abilities;
+
+///
+/// Grass Pelt is an ability that boosts Defense in Grassy Terrain.
+/// This ability is exclusive to Gogoat.
+///
+/// Bulbapedia - Grass Pelt
+///
+[Script(ScriptCategory.Ability, "grass_pelt")]
+public class GrassPelt : Script
+{
+ ///
+ public override void ChangeDefensiveStatValue(IExecutingMove move, IPokemon target, byte hit, uint offensiveStat,
+ ImmutableStatisticSet targetStats, Statistic stat, ref uint value)
+ {
+ if (move.Battle.TerrainName == ScriptUtils.ResolveName() && stat == Statistic.Defense)
+ value = value.MultiplyOrMax(1.5f);
+ }
+}
\ No newline at end of file
diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/GrassySurge.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/GrassySurge.cs
new file mode 100644
index 0000000..eb620bc
--- /dev/null
+++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/GrassySurge.cs
@@ -0,0 +1,25 @@
+namespace PkmnLib.Plugin.Gen7.Scripts.Abilities;
+
+///
+/// Grassy Surge is an ability that creates Grassy Terrain when the Pokémon enters battle.
+///
+/// Bulbapedia - Grassy Surge
+///
+[Script(ScriptCategory.Ability, "grassy_surge")]
+public class GrassySurge : Script
+{
+ ///
+ public override void OnSwitchIn(IPokemon pokemon, byte position)
+ {
+ var battleData = pokemon.BattleData;
+ if (battleData == null)
+ return;
+
+ EventBatchId batchId = new();
+ battleData.Battle.EventHook.Invoke(new AbilityTriggerEvent(pokemon)
+ {
+ BatchId = batchId,
+ });
+ battleData.Battle.SetTerrain(ScriptUtils.ResolveName(), batchId);
+ }
+}
\ No newline at end of file
diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Guts.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Guts.cs
new file mode 100644
index 0000000..020dfed
--- /dev/null
+++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Guts.cs
@@ -0,0 +1,23 @@
+namespace PkmnLib.Plugin.Gen7.Scripts.Abilities;
+
+///
+/// Guts is an ability that boosts the Attack stat if the Pokémon has a status condition.
+///
+/// Bulbapedia - Guts
+///
+[Script(ScriptCategory.Ability, "guts")]
+public class Guts : Script
+{
+ ///
+ public override void ChangeOffensiveStatValue(IExecutingMove move, IPokemon target, byte hit, uint defensiveStat,
+ ImmutableStatisticSet targetStats, Statistic stat, ref uint value)
+ {
+ if (target.StatusScript.IsEmpty)
+ return;
+
+ if (stat != Statistic.Attack)
+ return;
+
+ value = value.MultiplyOrMax(1.5f);
+ }
+}
\ No newline at end of file
diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Harvest.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Harvest.cs
new file mode 100644
index 0000000..a20961e
--- /dev/null
+++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Harvest.cs
@@ -0,0 +1,39 @@
+namespace PkmnLib.Plugin.Gen7.Scripts.Abilities;
+
+///
+/// Harvest is an ability that may restore a consumed Berry at the end of each turn.
+///
+/// Bulbapedia - Harvest
+///
+[Script(ScriptCategory.Ability, "harvest")]
+public class Harvest : Script
+{
+ private IPokemon? _pokemon;
+
+ ///
+ public override void OnAddedToParent(IScriptSource source)
+ {
+ if (source is not IPokemon pokemon)
+ throw new InvalidOperationException("Harvest can only be added to a Pokemon script source.");
+ _pokemon = pokemon;
+ }
+
+ ///
+ public override void OnEndTurn(IBattle battle)
+ {
+ if (_pokemon?.BattleData is null)
+ return;
+ if (_pokemon.HeldItem is not null)
+ return;
+
+ var consumedBerry = _pokemon.BattleData.ConsumedItems.FirstOrDefault(x => x.Category == ItemCategory.Berry);
+ if (consumedBerry != null)
+ {
+ var rng = battle.Random;
+ if (battle.WeatherName != ScriptUtils.ResolveName() && rng.GetInt(1) != 0)
+ return;
+ battle.EventHook.Invoke(new AbilityTriggerEvent(_pokemon));
+ _ = _pokemon.SetHeldItem(consumedBerry);
+ }
+ }
+}
\ No newline at end of file
diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Healer.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Healer.cs
new file mode 100644
index 0000000..8a86920
--- /dev/null
+++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Healer.cs
@@ -0,0 +1,51 @@
+namespace PkmnLib.Plugin.Gen7.Scripts.Abilities;
+
+///
+/// Healer is an ability that may heal an ally's status condition at the end of each turn in a double battle.
+///
+/// Bulbapedia - Healer
+///
+[Script(ScriptCategory.Ability, "healer")]
+public class Healer : Script
+{
+ private IPokemon? _pokemon;
+
+ ///
+ public override void OnAddedToParent(IScriptSource source)
+ {
+ if (source is not IPokemon pokemon)
+ throw new InvalidOperationException("Harvest can only be added to a Pokemon script source.");
+ _pokemon = pokemon;
+ }
+
+ ///
+ public override void OnEndTurn(IBattle battle)
+ {
+ if (_pokemon?.BattleData is null)
+ return;
+
+ if (_pokemon.BattleData.Position > 0)
+ {
+ var leftAlly = _pokemon.BattleData.BattleSide.Pokemon[_pokemon.BattleData.Position - 1];
+ TryClearStatus(battle, leftAlly);
+ }
+ if (_pokemon.BattleData.Position < _pokemon.BattleData.BattleSide.Pokemon.Count - 1)
+ {
+ var rightAlly = _pokemon.BattleData.BattleSide.Pokemon[_pokemon.BattleData.Position + 1];
+ TryClearStatus(battle, rightAlly);
+ }
+ }
+
+ private static void TryClearStatus(IBattle battle, IPokemon? leftAlly)
+ {
+ if (leftAlly is null)
+ return;
+ if (leftAlly.StatusScript.IsEmpty)
+ return;
+ var rng = battle.Random;
+ if (rng.GetInt(3) != 0) // 1 in 3 chance to heal
+ return;
+ battle.EventHook.Invoke(new AbilityTriggerEvent(leftAlly));
+ leftAlly.ClearStatus();
+ }
+}
\ No newline at end of file
diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Heatproof.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Heatproof.cs
new file mode 100644
index 0000000..6d755a0
--- /dev/null
+++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/Heatproof.cs
@@ -0,0 +1,19 @@
+namespace PkmnLib.Plugin.Gen7.Scripts.Abilities;
+
+///
+/// Heatproof is an ability that halves the damage taken from Fire-type moves and burn.
+///
+/// Bulbapedia - Heatproof
+///
+[Script(ScriptCategory.Ability, "heatproof")]
+public class Heatproof : Script
+{
+ ///
+ public override void ChangeBasePower(IExecutingMove move, IPokemon target, byte hit, ref ushort basePower)
+ {
+ if (move.GetHitData(target, hit).Type?.Name == "fire")
+ {
+ basePower = (ushort)(basePower / 2);
+ }
+ }
+}
\ No newline at end of file
diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/IncreasedStabAbility.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/IncreasedStabAbility.cs
index 071713d..184b9f1 100644
--- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/IncreasedStabAbility.cs
+++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/IncreasedStabAbility.cs
@@ -1,5 +1,3 @@
-using PkmnLib.Static.Utils;
-
namespace PkmnLib.Plugin.Gen7.Scripts.Abilities;
///
@@ -15,10 +13,9 @@ public class IncreasedStab : Script
public override void ChangeStabModifier(IExecutingMove executingMove, IPokemon target, byte hitNumber,
ref float modifier)
{
- if (modifier.IsApproximatelyEqualTo(1.5f))
- {
- executingMove.Battle.EventHook.Invoke(new AbilityTriggerEvent(executingMove.User));
- modifier = 2.0f;
- }
+ if (!modifier.IsApproximatelyEqualTo(1.5f))
+ return;
+ executingMove.Battle.EventHook.Invoke(new AbilityTriggerEvent(executingMove.User));
+ modifier = 2.0f;
}
}
\ No newline at end of file
diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/PowerUpTypeAtLowHealth.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/PowerUpTypeAtLowHealth.cs
index 1a5789e..b3a7d14 100644
--- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/PowerUpTypeAtLowHealth.cs
+++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/PowerUpTypeAtLowHealth.cs
@@ -1,5 +1,3 @@
-using PkmnLib.Static.Utils;
-
namespace PkmnLib.Plugin.Gen7.Scripts.Abilities;
///
diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/PreventStatLowering.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/PreventStatLowering.cs
index 0a40116..545aea2 100644
--- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/PreventStatLowering.cs
+++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/PreventStatLowering.cs
@@ -1,5 +1,3 @@
-using PkmnLib.Static.Utils;
-
namespace PkmnLib.Plugin.Gen7.Scripts.Abilities;
///
diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/SpeedModifierInWeather.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/SpeedModifierInWeather.cs
index cfb56ea..cab8eab 100644
--- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/SpeedModifierInWeather.cs
+++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Abilities/SpeedModifierInWeather.cs
@@ -1,5 +1,3 @@
-using PkmnLib.Static.Utils;
-
namespace PkmnLib.Plugin.Gen7.Scripts.Abilities;
///
diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Battle/WonderRoomEffect.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Battle/WonderRoomEffect.cs
index 33a631c..5ec6f04 100644
--- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Battle/WonderRoomEffect.cs
+++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Battle/WonderRoomEffect.cs
@@ -8,7 +8,7 @@ public class WonderRoomEffect : Script
///
public override void ChangeDefensiveStatValue(IExecutingMove move, IPokemon target, byte hit, uint offensiveStat,
- ImmutableStatisticSet targetStats, ref uint value)
+ ImmutableStatisticSet targetStats, Statistic stat, ref uint value)
{
value = move.UseMove.Category switch
{
diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/FoulPlay.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/FoulPlay.cs
index d4b0ffa..cffb924 100644
--- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/FoulPlay.cs
+++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/FoulPlay.cs
@@ -7,7 +7,7 @@ public class FoulPlay : Script
{
///
public override void ChangeOffensiveStatValue(IExecutingMove move, IPokemon target, byte hit, uint _,
- ImmutableStatisticSet targetStats, ref uint value)
+ ImmutableStatisticSet targetStats, Statistic stat, ref uint value)
{
value = move.UseMove.Category == MoveCategory.Physical
? target.BoostedStats.Attack
diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Psyshock.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Psyshock.cs
index f4719e9..7990b85 100644
--- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Psyshock.cs
+++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Psyshock.cs
@@ -5,7 +5,7 @@ public class Psyshock : Script
{
///
public override void ChangeDefensiveStatValue(IExecutingMove move, IPokemon target, byte hit, uint offensiveStat,
- ImmutableStatisticSet targetStats, ref uint value)
+ ImmutableStatisticSet targetStats, Statistic stat, ref uint value)
{
value = targetStats.Defense;
}
diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/FlashFireEffect.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/FlashFireEffect.cs
index c67363f..0db5ee3 100644
--- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/FlashFireEffect.cs
+++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/FlashFireEffect.cs
@@ -5,7 +5,7 @@ public class FlashFireEffect : Script
{
///
public override void ChangeOffensiveStatValue(IExecutingMove move, IPokemon target, byte hit, uint defensiveStat,
- ImmutableStatisticSet targetStats, ref uint value)
+ ImmutableStatisticSet targetStats, Statistic stat, ref uint value)
{
if (move.GetHitData(target, hit).Type?.Name == "fire")
{
diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/PowerTrickEffect.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/PowerTrickEffect.cs
index 7d006ea..a369ba6 100644
--- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/PowerTrickEffect.cs
+++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Pokemon/PowerTrickEffect.cs
@@ -5,14 +5,14 @@ public class PowerTrickEffect : Script
{
///
public override void ChangeOffensiveStatValue(IExecutingMove move, IPokemon target, byte hit, uint defensiveStat,
- ImmutableStatisticSet targetStats, ref uint value)
+ ImmutableStatisticSet targetStats, Statistic stat, ref uint value)
{
value = defensiveStat;
}
///
public override void ChangeDefensiveStatValue(IExecutingMove move, IPokemon target, byte hit, uint offensiveStat,
- ImmutableStatisticSet targetStats, ref uint value)
+ ImmutableStatisticSet targetStats, Statistic stat, ref uint value)
{
value = offensiveStat;
}
diff --git a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Side/FlowerGiftEffect.cs b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Side/FlowerGiftEffect.cs
index d782992..3d38986 100644
--- a/Plugins/PkmnLib.Plugin.Gen7/Scripts/Side/FlowerGiftEffect.cs
+++ b/Plugins/PkmnLib.Plugin.Gen7/Scripts/Side/FlowerGiftEffect.cs
@@ -21,7 +21,7 @@ public class FlowerGiftEffect : Script
///
public override void ChangeOffensiveStatValue(IExecutingMove move, IPokemon target, byte hit, uint defensiveStat,
- ImmutableStatisticSet targetStats, ref uint value)
+ ImmutableStatisticSet targetStats, Statistic stat, ref uint value)
{
if (move.Battle.WeatherName != ScriptUtils.ResolveName())
return;