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

@@ -12,13 +12,13 @@ public class Aftermath : Script, IScriptOnIncomingHit, IScriptOnFaint
private IExecutingMove? _lastAttack;
/// <inheritdoc />
public void OnIncomingHit(IExecutingMove move, IPokemon target, byte hit)
public void OnIncomingHit(IExecutingMove move, IBattlePokemon target, byte hit)
{
_lastAttack = move.GetHitData(target, hit).IsContact ? move : null;
}
/// <inheritdoc />
public void OnFaint(IPokemon pokemon, DamageSource source)
public void OnFaint(IBattlePokemon pokemon, DamageSource source)
{
if (source != DamageSource.MoveDamage)
return;
@@ -27,11 +27,9 @@ public class Aftermath : Script, IScriptOnIncomingHit, IScriptOnFaint
var user = _lastAttack.User;
if (!user.IsUsable)
return;
if (user.BattleData is null)
return;
// Aftermath does not trigger if a Pokémon with Damp is on the field
var battle = user.BattleData.Battle;
var battle = user.Battle;
var hasDamp = battle.Sides.SelectMany(side => side.Pokemon).WhereNotNull()
.Any(p => p.ActiveAbility?.Name == AbilityNames.Damp);
if (hasDamp)