35 lines
1.1 KiB
C#
35 lines
1.1 KiB
C#
using PkmnLib.Static.Utils;
|
|
|
|
namespace PkmnLib.Plugin.Gen7.Scripts.Abilities;
|
|
|
|
[Script(ScriptCategory.Ability, "bad_dreams")]
|
|
public class BadDreams : Script
|
|
{
|
|
private IPokemon? _owner;
|
|
|
|
/// <inheritdoc />
|
|
public override void OnAddedToParent(IScriptSource source)
|
|
{
|
|
if (source is not IPokemon pokemon)
|
|
throw new InvalidOperationException("Bad Dreams ability can only be added to a Pokemon.");
|
|
_owner = pokemon;
|
|
}
|
|
|
|
/// <inheritdoc />
|
|
public override void OnEndTurn(IBattle battle)
|
|
{
|
|
if (_owner is null)
|
|
return;
|
|
var opponents = battle.Sides.Where(x => x != _owner?.BattleData?.BattleSide).SelectMany(x => x.Pokemon)
|
|
.WhereNotNull();
|
|
|
|
foreach (var opponent in opponents)
|
|
{
|
|
if (!opponent.HasStatus(ScriptUtils.ResolveName<Status.Sleep>()))
|
|
continue;
|
|
EventBatchId batchId = new();
|
|
battle.EventHook.Invoke(new AbilityTriggerEvent(_owner));
|
|
opponent.Damage(opponent.MaxHealth / 8, DamageSource.Misc, batchId);
|
|
}
|
|
}
|
|
} |