shared abstract class ItemUseScript { void OnInitialize(const narray@){}; bool IsItemUsable(){ return false; }; bool IsPokemonUseItem(){ return false; }; bool IsUseValidForPokemon(Pokemon@){ return false; }; bool IsHoldable(){ return false; }; void OnUse(Battle@){}; void OnPokemonUse(Pokemon@, bool){}; }