using PkmnLib.Plugin.Gen7.Scripts.MoveVolatile; namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "me_first")] public class MeFirst : Script, IScriptChangeMove { /// public void ChangeMove(IMoveChoice choice, ref StringKey moveName) { var battleData = choice.User.BattleData; if (battleData == null) return; var target = battleData.Battle.Sides[choice.TargetSide].Pokemon[choice.TargetPosition]; if (target == null) { choice.Fail(); return; } if (battleData.Battle.ChoiceQueue?.FirstOrDefault(x => x.User == target) is not IMoveChoice targetMove) { choice.Fail(); return; } if (battleData.Battle.Library.MiscLibrary.IsReplacementChoice(targetMove)) { choice.Fail(); return; } var targetMoveData = targetMove.ChosenMove.MoveData; moveName = targetMoveData.Name; choice.Volatile.Add(new MeFirstPowerBoost()); } }