using PkmnLib.Plugin.Gen7.Scripts.MoveVolatile;
namespace PkmnLib.Plugin.Gen7.Scripts.Moves;
[Script(ScriptCategory.Move, "fire_pledge")]
public class FirePledge : Script
{
///
public override 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.BattleData?.SideIndex == move.User.BattleData?.SideIndex &&
(mc.ChosenMove.MoveData.Name == "water_pledge" || mc.ChosenMove.MoveData.Name == "grass_pledge"));
if (pledgeMove is null)
return;
// If a pledge move is already queued, we stop the current move.
stop = true;
if (pledgeMove.ChosenMove.MoveData.Name == "water_pledge")
{
pledgeMove.Volatile.Add(new FireWaterPledgeMove());
}
else if (pledgeMove.ChosenMove.MoveData.Name == "grass_pledge")
{
pledgeMove.Volatile.Add(new FireGrassPledgeMove());
}
}
}