using PkmnLib.Static.Species;
namespace PkmnLib.Plugin.Gen7.Scripts.Items;
[ItemScript("evolution_use")]
public class EvolutionItem : ItemScript
{
///
public EvolutionItem(IItem item) : base(item)
{
}
///
public override bool IsItemUsable => true;
///
public override bool RequiresTarget => true;
///
public override bool IsTargetValid(IPokemon target)
{
foreach (var x in target.Species.EvolutionData)
{
switch (x)
{
case ItemUseEvolution itemUseEvolution when itemUseEvolution.Item == Item.Name:
return true;
case ItemGenderEvolution itemGenderEvolution when itemGenderEvolution.Item == Item.Name:
return itemGenderEvolution.Gender == target.Gender;
}
}
return false;
}
///
public override void OnUseWithTarget(IPokemon target, EventHook eventHook)
{
var evolutionData = target.Species.EvolutionData.FirstOrDefault(x =>
{
switch (x)
{
case ItemUseEvolution itemUseEvolution when itemUseEvolution.Item == Item.Name:
case ItemGenderEvolution itemGenderEvolution when itemGenderEvolution.Item == Item.Name:
return true;
default:
return false;
}
});
if (evolutionData == null)
return;
target.EvolveTo(evolutionData, eventHook);
}
}