namespace PkmnLib.Plugin.Gen7.Scripts.Abilities; /// /// Bad Dreams is an ability that causes sleeping opposing Pokémon to lose 1/8 of their maximum HP at the end of each turn. /// This effect only applies to sleeping Pokémon on the opposing side of the field. /// /// Bulbapedia - Bad Dreams /// [Script(ScriptCategory.Ability, "bad_dreams")] public class BadDreams : Script { private IPokemon? _owner; /// 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; } /// public override void OnEndTurn(IScriptSource owner, 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())) continue; EventBatchId batchId = new(); battle.EventHook.Invoke(new AbilityTriggerEvent(_owner)); opponent.Damage(opponent.MaxHealth / 8, DamageSource.Misc, batchId); } } }