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(){}; void OnPokemonUse(Pokemon@){}; }