public static bool IsAnimal(this CommandArg arg, out AnimalAsset value) { if (arg.IsUInt16(out ushort id)) { Asset asset = Assets.find(EAssetType.ANIMAL, id); if (asset == null) { value = null; return(false); } value = (AnimalAsset)asset; return(value != null); } else if (arg.IsGuid(out Guid guid)) { value = AssetUtil.GetAnimalAssets().FirstOrDefault(d => d.GUID == guid); return(value != null); } else { string search = arg.RawValue.StartsWith("@") ? arg.RawValue.Substring(1) : arg.RawValue; value = AssetUtil.GetAnimalAsset(search); return(value != null); } }