using PkmnLib.Static.Moves; using PkmnLib.Static.Utils; namespace PkmnLib.Plugin.Gen7.Scripts.Status; [Script(ScriptCategory.Status, "burned")] public class Burned : Script { private IPokemon? _target; /// public override void OnAddedToParent(IScriptSource source) { if (source is not IPokemon pokemon) throw new ArgumentException("Burned script can only be added to a Pokemon"); _target = pokemon; } /// public override void ChangeMoveDamage(IExecutingMove move, IPokemon target, byte hit, ref uint damage) { if (move.UseMove.Category == MoveCategory.Physical) { damage = (uint)(damage / 2f); } } /// public override void OnEndTurn(IBattle battle) { if (_target == null) return; var damage = (uint)(_target.MaxHealth / 16f); var eventBatch = new EventBatchId(); battle.EventHook.Invoke(new DialogEvent("hurt_by_burn", new Dictionary { { "pokemon", _target }, { "damage", damage }, }) { BatchId = eventBatch, }); _target.Damage(damage, DamageSource.Status, eventBatch); } }