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