29 lines
882 B
C#

using PkmnLib.Plugin.Gen7.Scripts.Pokemon;
namespace PkmnLib.Plugin.Gen7.Scripts.Moves;
[Script(ScriptCategory.Move, "swallow")]
public class Swallow : Script, IScriptOnSecondaryEffect
{
/// <inheritdoc />
public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit)
{
var stockpileEffect = move.User.Volatile.Get<StockpileEffect>();
if (stockpileEffect == null || stockpileEffect.StockpileCount == 0)
{
move.GetHitData(target, hit).Fail();
return;
}
var stockpileCount = stockpileEffect.StockpileCount;
var modifier = stockpileCount switch
{
1 => 0.25f,
2 => 0.5f,
_ => 1f,
};
var heal = move.User.MaxHealth * modifier;
move.User.Heal((uint)heal);
move.User.Volatile.Remove<StockpileEffect>();
}
}