Move all battle state from IPokemon to an ephemeral IBattlePokemon wrapper
This commit is contained in:
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user