namespace PkmnLib.Plugin.Gen7.Scripts.Moves;
[Script(ScriptCategory.Move, "fling")]
public class Fling : Script, IScriptOnSecondaryEffect, IScriptChangeBasePower
{
///
public void ChangeBasePower(IExecutingMove move, IPokemon target, byte hit, ref ushort basePower)
{
var item = move.User.HeldItem;
if (item == null)
{
move.GetHitData(target, hit).Fail();
return;
}
if (item.Category is ItemCategory.FormChanger or ItemCategory.Pokeball or ItemCategory.Mail
or ItemCategory.KeyItem or ItemCategory.TmHm)
{
move.GetHitData(target, hit).Fail();
return;
}
if (!item.TryGetAdditionalData("fling_power", out var flingPower))
{
move.GetHitData(target, hit).Fail();
return;
}
basePower = flingPower;
}
///
public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) =>
move.User.RemoveHeldItemForBattle();
}