using PkmnLib.Plugin.Gen7.Scripts.MoveVolatile; namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "fire_pledge")] public class FirePledge : Script, IScriptStopBeforeMove { /// public void StopBeforeMove(IExecutingMove move, ref bool stop) { if (move.MoveChoice.Volatile.Contains() || move.MoveChoice.Volatile.Contains()) { return; } var pledgeMove = (IMoveChoice?)move.Battle.ChoiceQueue?.FirstOrDefault(x => x is IMoveChoice mc && mc.User.SideIndex == move.User.SideIndex && (mc.ChosenMove.MoveData.Name == MoveNames.WaterPledge || mc.ChosenMove.MoveData.Name == MoveNames.GrassPledge)); if (pledgeMove is null) return; // If a pledge move is already queued, we stop the current move. stop = true; if (pledgeMove.ChosenMove.MoveData.Name == MoveNames.WaterPledge) { pledgeMove.Volatile.Add(new FireWaterPledgeMove()); } else if (pledgeMove.ChosenMove.MoveData.Name == MoveNames.GrassPledge) { pledgeMove.Volatile.Add(new FireGrassPledgeMove()); } } }