using PkmnLib.Plugin.Gen7.Scripts.MoveVolatile;
namespace PkmnLib.Plugin.Gen7.Scripts.Moves;
[Script(ScriptCategory.Move, "water_pledge")]
public class WaterPledge : 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.GrassPledge ||
mc.ChosenMove.MoveData.Name == MoveNames.FirePledge));
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.GrassPledge)
{
pledgeMove.Volatile.Add(new GrassWaterPledgeMove());
}
else if (pledgeMove.ChosenMove.MoveData.Name == MoveNames.FirePledge)
{
pledgeMove.Volatile.Add(new FireWaterPledgeMove());
}
}
}