using PkmnLib.Static.Moves; namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "metal_burst")] public class MetalBurst : Script, IScriptOnBeforeTurnStart, IScriptChangeMoveDamage { /// public void OnBeforeTurnStart(ITurnChoice choice) { choice.User.Volatile.Add(new MetalBurstHelper()); } /// public void ChangeMoveDamage(IExecutingMove move, IPokemon target, byte hit, ref uint damage) { var helper = target.Volatile.Get(); if (helper?.LastAttacker == null || helper.LastAttacker != move.User) { move.GetHitData(target, hit).Fail(); return; } damage = helper.LastDamage.MultiplyOrMax(1.5f); target.Volatile.Remove(); } [Script(ScriptCategory.Pokemon, "metal_burst_helper")] private class MetalBurstHelper : Script, IScriptOnIncomingHit, IScriptOnEndTurn { public IPokemon? LastAttacker { get; set; } public uint LastDamage { get; set; } /// public void OnIncomingHit(IExecutingMove move, IPokemon target, byte hit) { if (move.UseMove.Category == MoveCategory.Status) return; LastAttacker = move.User; LastDamage = move.GetHitData(target, hit).Damage; } /// public void OnEndTurn(IScriptSource owner, IBattle battle) { RemoveSelf(); } } }