private async Task UseBerry(ulong encounterId, string spawnId) { ItemData berryData = Items.Where(x => x.ItemId == ItemId.ItemRazzBerry).FirstOrDefault(); if (berryData == null || berryData.Count <= 0) { return; } try { UseItemCaptureResponse response = await _client.Encounter.UseCaptureItem(encounterId, ItemId.ItemRazzBerry, spawnId); int remaining = berryData.Count - 1; if (response.Success) { berryData.Count = remaining; LogCaller(new LoggerEventArgs(String.Format("Successfully used berry. Remaining: {0}", remaining), LoggerTypes.Info)); } else { LogCaller(new LoggerEventArgs(String.Format("Failed to use berry. Remaining: {0}", remaining), LoggerTypes.Warning)); } } catch (Exception ex) { LogCaller(new LoggerEventArgs("Use Berry request failed", LoggerTypes.Exception, ex)); } await Task.Delay(500); }
private async Task UseBerry(ulong encounterId, string spawnId) { ItemData berryData = Items.Where(x => x.ItemId == ItemId.ItemRazzBerry || x.ItemId == ItemId.ItemBlukBerry || x.ItemId == ItemId.ItemNanabBerry || x.ItemId == ItemId.ItemPinapBerry).FirstOrDefault(); if (berryData == null || berryData.Count <= 0) { return; } try { var response = await ClientSession.RpcClient.SendRemoteProcedureCallAsync(new Request { RequestType = RequestType.UseItemCapture, RequestMessage = new UseItemCaptureMessage { EncounterId = encounterId, ItemId = berryData.ItemId, SpawnPointId = spawnId }.ToByteString() }); UseItemCaptureResponse useItemCaptureResponse = null; useItemCaptureResponse = UseItemCaptureResponse.Parser.ParseFrom(response); int remaining = berryData.Count - 1; berryData.Count = remaining; LogCaller(new LoggerEventArgs(String.Format("Successfully used berry. Remaining: {0}", remaining), LoggerTypes.Info)); await Task.Delay(CalculateDelay(UserSettings.DelayBetweenPlayerActions, UserSettings.PlayerActionDelayRandom)); } catch (Exception) { LogCaller(new LoggerEventArgs(String.Format("Failed to use berry. Remaining: {0}", berryData.Count), LoggerTypes.Warning)); } }
/// <summary> /// Provides a safe way to invoke the <see cref="UseItemCaptureReceived" /> event. /// </summary> /// <param name="value"></param> public void RaiseUseItemCaptureReceived(UseItemCaptureResponse value) => UseItemCaptureReceived?.Invoke(this, value);