Move all battle state from IPokemon to an ephemeral IBattlePokemon wrapper

This commit is contained in:
2026-08-28 15:20:26 +02:00
parent 942be8eaeb
commit 8a2733a0a9
859 changed files with 4408 additions and 5331 deletions

View File

@@ -6,25 +6,25 @@ public class WhirlpoolEffect : Script, IScriptOnEndTurn, IScriptPreventOpponentR
{
public record PokemonTurn
{
public PokemonTurn(IPokemon pokemon, int turns, float damagePercent)
public PokemonTurn(IBattlePokemon pokemon, int turns, float damagePercent)
{
Pokemon = pokemon;
Turns = turns;
DamagePercent = damagePercent;
}
public IPokemon Pokemon { get; }
public IBattlePokemon Pokemon { get; }
public int Turns { get; set; }
public float DamagePercent { get; }
}
private IPokemon? _user;
private IBattlePokemon? _user;
private readonly IList<PokemonTurn> _targetedPokemon = [];
/// <inheritdoc />
public override void OnAddedToParent(IScriptSource source)
{
if (source is IPokemon pokemon)
if (source is IBattlePokemon pokemon)
{
_user = pokemon;
}
@@ -34,7 +34,7 @@ public class WhirlpoolEffect : Script, IScriptOnEndTurn, IScriptPreventOpponentR
}
}
public void AddTargetedPokemon(IPokemon pokemon, int turns, float damagePercent)
public void AddTargetedPokemon(IBattlePokemon pokemon, int turns, float damagePercent)
{
if (_targetedPokemon.All(x => x.Pokemon != pokemon))
{
@@ -63,7 +63,7 @@ public class WhirlpoolEffect : Script, IScriptOnEndTurn, IScriptPreventOpponentR
return;
List<PokemonTurn>? pokemonToRemove = null;
foreach (var pokemonTurn in _targetedPokemon.Where(x => x.Pokemon.BattleData?.IsOnBattlefield == true))
foreach (var pokemonTurn in _targetedPokemon.Where(x => x.Pokemon.IsOnBattlefield == true))
{
var pokemon = pokemonTurn.Pokemon;
pokemon.Damage((uint)(pokemon.MaxHealth * pokemonTurn.DamagePercent), DamageSource.Misc);
@@ -83,7 +83,7 @@ public class WhirlpoolEffect : Script, IScriptOnEndTurn, IScriptPreventOpponentR
}
/// <inheritdoc />
public void ExpectedEndOfTurnDamage(IPokemon pokemon, ref int damage)
public void ExpectedEndOfTurnDamage(IBattlePokemon pokemon, ref int damage)
{
var turn = _targetedPokemon.FirstOrDefault(x => x.Pokemon == pokemon);
if (turn != null)