33 lines
992 B
C#
33 lines
992 B
C#
namespace PkmnLib.Plugin.Gen7.Scripts.Abilities;
|
|
|
|
[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);
|
|
}
|
|
} |