39 lines
1.3 KiB
C#
39 lines
1.3 KiB
C#
namespace PkmnLib.Plugin.Gen7.Scripts.Abilities;
|
|
|
|
/// <summary>
|
|
/// Aftermath is an ability that causes the attacker to lose 1/4 of its maximum HP if it knocks out the user with a contact move.
|
|
/// This effect only triggers if the move that caused the faint was a contact move.
|
|
///
|
|
/// <see href="https://bulbapedia.bulbagarden.net/wiki/Aftermath_(Ability)">Bulbapedia - Aftermath</see>
|
|
/// </summary>
|
|
[Script(ScriptCategory.Ability, "aftermath")]
|
|
public class Aftermath : Script
|
|
{
|
|
private IExecutingMove? _lastAttack;
|
|
|
|
/// <inheritdoc />
|
|
public override void OnIncomingHit(IExecutingMove move, IPokemon target, byte hit)
|
|
{
|
|
_lastAttack = move;
|
|
}
|
|
|
|
/// <inheritdoc />
|
|
public override void OnFaint(IPokemon pokemon, DamageSource source)
|
|
{
|
|
if (source != DamageSource.MoveDamage)
|
|
return;
|
|
if (_lastAttack is null || !_lastAttack.UseMove.HasFlag("contact"))
|
|
return;
|
|
var user = _lastAttack.User;
|
|
if (!user.IsUsable)
|
|
return;
|
|
if (user.BattleData is null)
|
|
return;
|
|
EventBatchId eventBatchId = new();
|
|
user.BattleData.Battle.EventHook.Invoke(new AbilityTriggerEvent(pokemon)
|
|
{
|
|
BatchId = eventBatchId,
|
|
});
|
|
user.Damage(user.MaxHealth / 4, DamageSource.Misc, eventBatchId);
|
|
}
|
|
} |