diff --git a/.vs/Pokemon Go Rocket API/v14/.suo b/.vs/Pokemon Go Rocket API/v14/.suo
index e04100d..08885fe 100644
Binary files a/.vs/Pokemon Go Rocket API/v14/.suo and b/.vs/Pokemon Go Rocket API/v14/.suo differ
diff --git a/PokemonGo/RocketAPI/Client.cs b/PokemonGo/RocketAPI/Client.cs
index a3d3d51..01fc070 100644
--- a/PokemonGo/RocketAPI/Client.cs
+++ b/PokemonGo/RocketAPI/Client.cs
@@ -1,4 +1,4 @@
-#region
+#region
using System;
using System.Linq;
@@ -11,6 +11,8 @@ using PokemonGo.RocketAPI.Extensions;
using PokemonGo.RocketAPI.GeneratedCode;
using PokemonGo.RocketAPI.Helpers;
using PokemonGo.RocketAPI.Login;
+using AllEnum;
+using System.Collections.Generic;
#endregion
@@ -19,7 +21,7 @@ namespace PokemonGo.RocketAPI
public class Client
{
private readonly HttpClient _httpClient;
- private readonly ISettings _settings;
+ private ISettings _settings;
private string _accessToken;
private string _apiUrl;
private AuthType _authType = AuthType.Google;
@@ -27,6 +29,7 @@ namespace PokemonGo.RocketAPI
private double _currentLat;
private double _currentLng;
private Request.Types.UnknownAuth _unknownAuth;
+ static string accestoken = string.Empty;
public Client(ISettings settings)
{
@@ -77,15 +80,20 @@ namespace PokemonGo.RocketAPI
public async Task DoGoogleLogin()
{
- if (_settings.GoogleRefreshToken == string.Empty)
+ if (_settings.GoogleRefreshToken == string.Empty && accestoken == string.Empty)
{
var tokenResponse = await GoogleLogin.GetAccessToken();
_accessToken = tokenResponse.id_token;
Console.WriteLine($"Put RefreshToken in settings for direct login: {tokenResponse.access_token}");
+ accestoken = tokenResponse.access_token;
}
else
{
- var tokenResponse = await GoogleLogin.GetAccessToken(_settings.GoogleRefreshToken);
+ GoogleLogin.TokenResponseModel tokenResponse;
+ if (_settings.GoogleRefreshToken != string.Empty)
+ tokenResponse = await GoogleLogin.GetAccessToken(_settings.GoogleRefreshToken);
+ else
+ tokenResponse = await GoogleLogin.GetAccessToken(accestoken);
_accessToken = tokenResponse.id_token;
_authType = AuthType.Google;
}
@@ -392,5 +400,56 @@ namespace PokemonGo.RocketAPI
_httpClient.PostProtoPayload<Request, PlayerUpdateResponse>($"https://{_apiUrl}/rpc", updateRequest);
return updateResponse;
}
+
+
+
+
+ public async Task<IEnumerable<Item>> GetItemsToRecycle(ISettings settings, Client client)
+ {
+ var myItems = await GetItems(client);
+
+ return myItems
+ .Where(x => settings.ItemRecycleFilter.Any(f => f.Key == ((ItemId)x.Item_) && x.Count > f.Value))
+ .Select(x => new Item { Item_ = x.Item_, Count = x.Count - settings.ItemRecycleFilter.Single(f => f.Key == (AllEnum.ItemId)x.Item_).Value, Unseen = x.Unseen });
+ }
+
+ public async Task RecycleItems(Client client)
+ {
+ var items = await GetItemsToRecycle(_settings, client);
+
+ foreach (var item in items)
+ {
+ var transfer = await RecycleItem((AllEnum.ItemId)item.Item_, item.Count);
+ ColoredConsoleWrite(ConsoleColor.DarkCyan, $"[{DateTime.Now.ToString("HH:mm:ss")}] Recycled {item.Count}x {(AllEnum.ItemId)item.Item_}");
+ await Task.Delay(500);
+ }
+ await Task.Delay(_settings.RecycleItemsInterval * 1000);
+ RecycleItems(client);
+ }
+
+ public async Task<Response.Types.Unknown6> RecycleItem(AllEnum.ItemId itemId, int amount)
+ {
+ var customRequest = new InventoryItemData.RecycleInventoryItem
+ {
+ ItemId = (AllEnum.ItemId)Enum.Parse(typeof(AllEnum.ItemId), itemId.ToString()),
+ Count = amount
+ };
+
+ var releasePokemonRequest = RequestBuilder.GetRequest(_unknownAuth, _currentLat, _currentLng, 30,
+ new Request.Types.Requests()
+ {
+ Type = (int)RequestType.RECYCLE_INVENTORY_ITEM,
+ Message = customRequest.ToByteString()
+ });
+ return await _httpClient.PostProtoPayload<Request, Response.Types.Unknown6>($"https://{_apiUrl}/rpc", releasePokemonRequest);
+ }
+
+ public static async Task<IEnumerable<Item>> GetItems(Client client)
+ {
+ var inventory = await client.GetInventory();
+ return inventory.InventoryDelta.InventoryItems
+ .Select(i => i.InventoryItemData?.Item)
+ .Where(p => p != null);
+ }
}
}
diff --git a/PokemonGo/RocketAPI/Console/App.config b/PokemonGo/RocketAPI/Console/App.config
index d5900b4..54cda01 100644
--- a/PokemonGo/RocketAPI/Console/App.config
+++ b/PokemonGo/RocketAPI/Console/App.config
@@ -1,8 +1,8 @@
-<?xml version="1.0" encoding="utf-8"?>
+<?xml version="1.0" encoding="utf-8"?>
<configuration>
- <startup>
- <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
- </startup>
+ <startup>
+ <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
+ </startup>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
@@ -12,14 +12,38 @@
</assemblyBinding>
</runtime>
<appSettings>
- <add key="AuthType" value="Google"/><!--Google/Ptc-->
- <add key="PtcUsername" value="username"/>
- <add key="PtcPassword" value="pw"/>
- <add key="GoogleRefreshToken" value=""/>
- <add key="DefaultLatitude" value="52.379189"/><!--Default Amsterdam Central Station-->
- <add key="DefaultLongitude" value="4.899431"/><!--Default Amsterdam Central Station-->
- <add key="TransferType" value="none"/><!--none/cp/leaveStrongest/duplicate/all Whitelists/blackslists for each type is in Program.cs-->
- <add key="TransferCPThreshold" value="0"/><!--transfer pokemon with CP less than this value if cp transfer type is selected. Whitelist in Program.cs-->
- <add key="EvolveAllGivenPokemons" value="false"/>
+ <add key="AuthType" value="Google" />
+ <!--Google/Ptc-->
+ <add key="PtcUsername" value="username" />
+ <add key="PtcPassword" value="pw" />
+ <add key="GoogleRefreshToken" value="" />
+ <add key="DefaultLatitude" value="48.398358" />
+ <!--Default Amsterdam Central Station-->
+ <add key="DefaultLongitude" value="13.436663" />
+ <!--Default Amsterdam Central Station-->
+ <add key="LevelOutput" value="levelup" />
+ <!--2 Modes: "time": Every XXX seconds and "levelup" every levelup-->
+ <add key="LevelTimeInterval" value="1" />
+ <!--Pick 1 if levelup and time in seconds if "time"-->
+ <add key="RecycleItemsInterval" value="60" />
+ <!--Recycle Time in seconds-->
+ <add key="TransferType" value="none" />
+ <!--none/cp/leaveStrongest/duplicate/all Whitelists/blackslists for each type is in Program.cs-->
+ <add key="TransferCPThreshold" value="0" />
+ <!--transfer pokemon with CP less than this value if cp transfer type is selected. Whitelist in Program.cs-->
+ <add key="EvolveAllGivenPokemons" value="false" />
+ <add key="ClientSettingsProvider.ServiceUri" value="" />
</appSettings>
+ <system.web>
+ <membership defaultProvider="ClientAuthenticationMembershipProvider">
+ <providers>
+ <add name="ClientAuthenticationMembershipProvider" type="System.Web.ClientServices.Providers.ClientFormsAuthenticationMembershipProvider, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" serviceUri="" />
+ </providers>
+ </membership>
+ <roleManager defaultProvider="ClientRoleProvider" enabled="true">
+ <providers>
+ <add name="ClientRoleProvider" type="System.Web.ClientServices.Providers.ClientRoleProvider, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" serviceUri="" cacheTimeout="86400" />
+ </providers>
+ </roleManager>
+ </system.web>
</configuration>
\ No newline at end of file
diff --git a/PokemonGo/RocketAPI/Console/PokemonGo.RocketAPI.Console.csproj b/PokemonGo/RocketAPI/Console/PokemonGo.RocketAPI.Console.csproj
index fafb5f7..a8a785c 100644
--- a/PokemonGo/RocketAPI/Console/PokemonGo.RocketAPI.Console.csproj
+++ b/PokemonGo/RocketAPI/Console/PokemonGo.RocketAPI.Console.csproj
@@ -11,6 +11,21 @@
<AssemblyName>PokemonGo.RocketAPI.Console</AssemblyName>
<TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
+ <PublishUrl>publish\</PublishUrl>
+ <Install>true</Install>
+ <InstallFrom>Disk</InstallFrom>
+ <UpdateEnabled>false</UpdateEnabled>
+ <UpdateMode>Foreground</UpdateMode>
+ <UpdateInterval>7</UpdateInterval>
+ <UpdateIntervalUnits>Days</UpdateIntervalUnits>
+ <UpdatePeriodically>false</UpdatePeriodically>
+ <UpdateRequired>false</UpdateRequired>
+ <MapFileExtensions>true</MapFileExtensions>
+ <ApplicationRevision>0</ApplicationRevision>
+ <ApplicationVersion>1.0.0.%2a</ApplicationVersion>
+ <IsWebBootstrapper>false</IsWebBootstrapper>
+ <UseApplicationTrust>false</UseApplicationTrust>
+ <BootstrapperEnabled>true</BootstrapperEnabled>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
@@ -39,6 +54,7 @@
<Reference Include="System" />
<Reference Include="System.Configuration" />
<Reference Include="System.Core" />
+ <Reference Include="System.Web.Extensions" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
@@ -61,6 +77,18 @@
<Name>PokemonGo.RocketAPI</Name>
</ProjectReference>
</ItemGroup>
+ <ItemGroup>
+ <BootstrapperPackage Include=".NETFramework,Version=v4.5">
+ <Visible>False</Visible>
+ <ProductName>Microsoft .NET Framework 4.5 %28x86 and x64%29</ProductName>
+ <Install>true</Install>
+ </BootstrapperPackage>
+ <BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
+ <Visible>False</Visible>
+ <ProductName>.NET Framework 3.5 SP1</ProductName>
+ <Install>false</Install>
+ </BootstrapperPackage>
+ </ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
diff --git a/PokemonGo/RocketAPI/Console/Program.cs b/PokemonGo/RocketAPI/Console/Program.cs
index aeb7e17..60f087b 100644
--- a/PokemonGo/RocketAPI/Console/Program.cs
+++ b/PokemonGo/RocketAPI/Console/Program.cs
@@ -1,4 +1,4 @@
-#region
+#region
using System;
using System.Collections.Generic;
@@ -26,10 +26,10 @@ namespace PokemonGo.RocketAPI.Console
internal class Program
{
private static readonly ISettings ClientSettings = new Settings();
-
+ static int Currentlevel = -1;
public static void CheckVersion()
- {
+ {
try
{
var match =
@@ -55,7 +55,7 @@ namespace PokemonGo.RocketAPI.Console
ColoredConsoleWrite(ConsoleColor.White, "There is a new Version available: " + gitVersion + " downloading.. ");
Thread.Sleep(1000);
- Process.Start("https://github.com/NecronomiconCoding/Pokemon-Go-Rocket-API");
+ Process.Start("");
}
catch (Exception)
{
@@ -68,7 +68,7 @@ namespace PokemonGo.RocketAPI.Console
using (var wC = new WebClient())
return
wC.DownloadString(
- "https://raw.githubusercontent.com/NecronomiconCoding/Pokemon-Go-Rocket-API/master/PokemonGo/RocketAPI/Console/Properties/AssemblyInfo.cs");
+ "");
}
public static void ColoredConsoleWrite(ConsoleColor color, string text)
@@ -154,9 +154,10 @@ namespace PokemonGo.RocketAPI.Console
ColoredConsoleWrite(ConsoleColor.DarkGray, "Latitude: " + ClientSettings.DefaultLatitude);
ColoredConsoleWrite(ConsoleColor.DarkGray, "Longitude: " + ClientSettings.DefaultLongitude);
ColoredConsoleWrite(ConsoleColor.Yellow, "----------------------------");
- ColoredConsoleWrite(ConsoleColor.DarkGray, "Random Profile Data\n");
- ColoredConsoleWrite(ConsoleColor.DarkGray, profile.ToString());
-
+ ColoredConsoleWrite(ConsoleColor.DarkGray, "Your Account:\n");
+ ColoredConsoleWrite(ConsoleColor.DarkGray, "Name: " + profile.Profile.Username);
+ ColoredConsoleWrite(ConsoleColor.DarkGray, "Team: " + profile.Profile.Team);
+ ColoredConsoleWrite(ConsoleColor.DarkGray, "Stardust: " + profile.Profile.Currency.ToArray()[1].Amount);
try
@@ -176,7 +177,10 @@ namespace PokemonGo.RocketAPI.Console
if (ClientSettings.EvolveAllGivenPokemons)
await EvolveAllGivenPokemons(client, pokemons);
+ client.RecycleItems(client);
+
await Task.Delay(5000);
+ PrintLevel(client);
await ExecuteFarmingPokestopsAndPokemons(client);
ColoredConsoleWrite(ConsoleColor.Red, $"[{DateTime.Now.ToString("HH:mm:ss")}] Unexpected stop? Restarting in 20 seconds.");
await Task.Delay(20000);
@@ -186,6 +190,7 @@ namespace PokemonGo.RocketAPI.Console
catch (UriFormatException ufe) { ColoredConsoleWrite(ConsoleColor.White, "System URI Format Exception - Restarting"); Execute(); }
catch (ArgumentOutOfRangeException aore) { ColoredConsoleWrite(ConsoleColor.White, "ArgumentOutOfRangeException - Restarting"); Execute(); }
catch (NullReferenceException nre) { ColoredConsoleWrite(ConsoleColor.White, "Null Refference - Restarting"); Execute(); }
+ catch (ArgumentNullException ane) { ColoredConsoleWrite(ConsoleColor.White, "Argument Null Refference - Restarting"); Execute(); }
//await ExecuteCatchAllNearbyPokemons(client);
}
@@ -297,7 +302,7 @@ namespace PokemonGo.RocketAPI.Console
});
System.Console.ReadLine();
}
-
+
private static async Task TransferAllButStrongestUnwantedPokemon(Client client)
{
//ColoredConsoleWrite(ConsoleColor.White, $"[{DateTime.Now.ToString("HH:mm:ss")}] Firing up the meat grinder");
@@ -460,5 +465,24 @@ namespace PokemonGo.RocketAPI.Console
ColoredConsoleWrite(ConsoleColor.Gray, $"[{DateTime.Now.ToString("HH:mm:ss")}] Finished grinding all the meat");
}
+
+ public static async Task PrintLevel(Client client)
+ {
+ var inventory = await client.GetInventory();
+ var stats = inventory.InventoryDelta.InventoryItems.Select(i => i.InventoryItemData?.PlayerStats).ToArray();
+ foreach (var v in stats)
+ if (v != null)
+ if (ClientSettings.LevelOutput == "time")
+ ColoredConsoleWrite(ConsoleColor.Yellow, $"[{DateTime.Now.ToString("HH:mm:ss")}] Current Level: " + v.Level + " (" + v.Experience + "/" + v.NextLevelXp + ")");
+ else if (ClientSettings.LevelOutput == "levelup")
+ if (Currentlevel != v.Level)
+ {
+ Currentlevel = v.Level;
+ ColoredConsoleWrite(ConsoleColor.Magenta, $"[{DateTime.Now.ToString("HH:mm:ss")}] Current Level: " + v.Level + ". XP needed for next Level: " + (v.NextLevelXp - v.Experience));
+ }
+
+ await Task.Delay(ClientSettings.LevelTimeInterval * 1000);
+ PrintLevel(client);
+ }
}
}
diff --git a/PokemonGo/RocketAPI/Console/Settings.cs b/PokemonGo/RocketAPI/Console/Settings.cs
index b27fbb9..d9bb280 100644
--- a/PokemonGo/RocketAPI/Console/Settings.cs
+++ b/PokemonGo/RocketAPI/Console/Settings.cs
@@ -1,9 +1,12 @@
-#region
+#region
using System.Configuration;
using System.Globalization;
using System.Runtime.CompilerServices;
using PokemonGo.RocketAPI.Enums;
+using System.Collections.Generic;
+using AllEnum;
+using System;
#endregion
@@ -32,6 +35,35 @@ namespace PokemonGo.RocketAPI.Console
// LEAVE EVERYTHING ALONE
+ public string LevelOutput => GetSetting() != string.Empty ? GetSetting() : "time";
+
+ public int LevelTimeInterval => GetSetting() != string.Empty ? System.Convert.ToInt16(GetSetting()) : 600;
+
+ ICollection<KeyValuePair<ItemId, int>> ISettings.ItemRecycleFilter
+ {
+ get
+ {
+ //Type and amount to keep
+ return new[]
+ {
+ new KeyValuePair<ItemId, int>(ItemId.ItemPokeBall, 20),
+ new KeyValuePair<ItemId, int>(ItemId.ItemGreatBall, 50),
+ new KeyValuePair<ItemId, int>(ItemId.ItemUltraBall, 100),
+ new KeyValuePair<ItemId, int>(ItemId.ItemMasterBall, 200),
+ new KeyValuePair<ItemId, int>(ItemId.ItemRevive, 20),
+ new KeyValuePair<ItemId, int>(ItemId.ItemPotion, 0),
+ new KeyValuePair<ItemId, int>(ItemId.ItemSuperPotion, 0),
+ new KeyValuePair<ItemId, int>(ItemId.ItemHyperPotion, 50)
+ };
+ }
+
+ set
+ {
+ throw new NotImplementedException();
+ }
+ }
+
+ public int RecycleItemsInterval => GetSetting() != string.Empty ? Convert.ToInt16(GetSetting()) : 60;
public string GoogleRefreshToken
{
diff --git a/PokemonGo/RocketAPI/GeneratedCode/Payloads.cs b/PokemonGo/RocketAPI/GeneratedCode/Payloads.cs
index 091f87e..69892bf 100644
--- a/PokemonGo/RocketAPI/GeneratedCode/Payloads.cs
+++ b/PokemonGo/RocketAPI/GeneratedCode/Payloads.cs
@@ -3085,6 +3085,167 @@ namespace PokemonGo.RocketAPI.GeneratedCode
}
}
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ public sealed partial class RecycleInventoryItem : pb::IMessage<RecycleInventoryItem>
+ {
+ private static readonly pb::MessageParser<RecycleInventoryItem> _parser = new pb::MessageParser<RecycleInventoryItem>(() => new RecycleInventoryItem());
+ public static pb::MessageParser<RecycleInventoryItem> Parser { get { return _parser; } }
+
+ public static pbr::MessageDescriptor Descriptor
+ {
+ get { return global::PokemonGo.RocketAPI.GeneratedCode.PayloadsReflection.Descriptor.MessageTypes[10]; }
+ }
+
+ pbr::MessageDescriptor pb::IMessage.Descriptor
+ {
+ get { return Descriptor; }
+ }
+
+ public RecycleInventoryItem()
+ {
+ OnConstruction();
+ }
+
+ partial void OnConstruction();
+
+ public RecycleInventoryItem(RecycleInventoryItem other) : this()
+ {
+ itemId_ = other.itemId_;
+ count_ = other.count_;
+ }
+
+ public RecycleInventoryItem Clone()
+ {
+ return new RecycleInventoryItem(this);
+ }
+
+ /// <summary>Field number for the "item_id" field.</summary>
+ public const int ItemIdFieldNumber = 1;
+ private global::AllEnum.ItemId itemId_ = 0;
+ public global::AllEnum.ItemId ItemId
+ {
+ get { return itemId_; }
+ set
+ {
+ itemId_ = value;
+ }
+ }
+
+ /// <summary>Field number for the "count" field.</summary>
+ public const int CountFieldNumber = 2;
+ private int count_;
+ public int Count
+ {
+ get { return count_; }
+ set
+ {
+ count_ = value;
+ }
+ }
+
+ public override bool Equals(object other)
+ {
+ return Equals(other as RecycleInventoryItem);
+ }
+
+ public bool Equals(RecycleInventoryItem other)
+ {
+ if (ReferenceEquals(other, null))
+ {
+ return false;
+ }
+ if (ReferenceEquals(other, this))
+ {
+ return true;
+ }
+ if (ItemId != other.ItemId) return false;
+ if (Count != other.Count) return false;
+ return true;
+ }
+
+ public override int GetHashCode()
+ {
+ int hash = 1;
+ if (ItemId != 0) hash ^= ItemId.GetHashCode();
+ if (Count != 0) hash ^= Count.GetHashCode();
+ return hash;
+ }
+
+ public override string ToString()
+ {
+ return pb::JsonFormatter.ToDiagnosticString(this);
+ }
+
+ public void WriteTo(pb::CodedOutputStream output)
+ {
+ if (ItemId != 0)
+ {
+ output.WriteRawTag(8);
+ output.WriteEnum((int)ItemId);
+ }
+ if (Count != 0)
+ {
+ output.WriteRawTag(16);
+ output.WriteInt32(Count);
+ }
+ }
+
+ public int CalculateSize()
+ {
+ int size = 0;
+ if (ItemId != 0)
+ {
+ size += 1 + pb::CodedOutputStream.ComputeEnumSize((int)ItemId);
+ }
+ if (Count != 0)
+ {
+ size += 1 + pb::CodedOutputStream.ComputeInt32Size(Count);
+ }
+ return size;
+ }
+
+ public void MergeFrom(RecycleInventoryItem other)
+ {
+ if (other == null)
+ {
+ return;
+ }
+ if (other.ItemId != 0)
+ {
+ ItemId = other.ItemId;
+ }
+ if (other.Count != 0)
+ {
+ Count = other.Count;
+ }
+ }
+
+ public void MergeFrom(pb::CodedInputStream input)
+ {
+ uint tag;
+ while ((tag = input.ReadTag()) != 0)
+ {
+ switch (tag)
+ {
+ default:
+ input.SkipLastField();
+ break;
+ case 8:
+ {
+ itemId_ = (global::AllEnum.ItemId)input.ReadEnum();
+ break;
+ }
+ case 16:
+ {
+ Count = input.ReadInt32();
+ break;
+ }
+ }
+ }
+ }
+
+ }
+
public int CalculateSize()
{
var size = 0;
diff --git a/PokemonGo/RocketAPI/ISettings.cs b/PokemonGo/RocketAPI/ISettings.cs
index 12af47a..247ecad 100644
--- a/PokemonGo/RocketAPI/ISettings.cs
+++ b/PokemonGo/RocketAPI/ISettings.cs
@@ -1,6 +1,7 @@
-#region
+#region
using PokemonGo.RocketAPI.Enums;
+using System.Collections.Generic;
#endregion
@@ -11,11 +12,15 @@ namespace PokemonGo.RocketAPI
AuthType AuthType { get; }
double DefaultLatitude { get; }
double DefaultLongitude { get; }
+ string LevelOutput { get; }
+ int LevelTimeInterval { get; }
string GoogleRefreshToken { get; set; }
string PtcPassword { get; }
string PtcUsername { get; }
bool EvolveAllGivenPokemons { get; }
string TransferType { get; }
int TransferCPThreshold { get; }
+ ICollection<KeyValuePair<AllEnum.ItemId, int>> ItemRecycleFilter { get; set; }
+ int RecycleItemsInterval { get; }
}
-}
\ No newline at end of file
+}
diff --git a/README.md b/README.md
index 846c951..ca4f400 100644
--- a/README.md
+++ b/README.md
@@ -1,5 +1,5 @@
# Pokemon-Go-Rocket-API
-
+
A Pokemon Go bot in C#
@@ -11,7 +11,8 @@ A Pokemon Go bot in C#
* Farm all pokemons in neighbourhood
* Evolve pokemons
* Transfer pokemons
-* Auto Updates
+* Auto recycle not needed items
+* Output level and needed XP for levelup
## Getting Started
diff --git a/img.jpg b/img.jpg
new file mode 100644
index 0000000..b5d421f
Binary files /dev/null and b/img.jpg differ
diff --git a/img.png b/img.png
deleted file mode 100644
index c791baf..0000000
Binary files a/img.png and /dev/null differ
You may download the files in Public Git.