Skip to content
This repository has been archived by the owner on Jul 22, 2019. It is now read-only.

Commit

Permalink
New major version 1.0.0 (#1322)
Browse files Browse the repository at this point in the history
prevent trying to drop buddy pokemon
use new api (should prevent trying to encounter expired pokemon)
blacklist expired pokemon in case they still come through
  • Loading branch information
jabbink authored Nov 16, 2016
1 parent 567b3b4 commit 526a14d
Show file tree
Hide file tree
Showing 4 changed files with 34 additions and 27 deletions.
4 changes: 2 additions & 2 deletions build.gradle
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
group 'ink.abb'
version '0.8.2'
version '1.0.0'

buildscript {
ext {
Expand Down Expand Up @@ -64,7 +64,7 @@ configurations {
dependencies {
//compile files('../PokeGOAPI-Java/library/build/libs/PokeGOAPI-library-all-0.3.0.jar')

compile files('lib/api-0.0.6.jar')
compile files('lib/api-1.0.0.jar')

// TODO: Wait for jitpack to fix itself...
//compile 'com.github.Grover-c13:PokeGOAPI-Java:Development-SNAPSHOT'
Expand Down
Binary file renamed lib/api-0.0.6.jar → lib/api-1.0.0.jar
Binary file not shown.
Original file line number Diff line number Diff line change
Expand Up @@ -143,12 +143,18 @@ class CatchOneNearbyPokemon : Task {
} else {
if (encounterResult is DiskEncounterResponseOuterClass.DiskEncounterResponse) {
Log.red("Encounter failed with result: ${encounterResult.result}")
if (encounterResult.result == DiskEncounterResponseOuterClass.DiskEncounterResponse.Result.ENCOUNTER_ALREADY_FINISHED) {
ctx.blacklistedEncounters.add(catchablePokemon.encounterId)
}
} else if (encounterResult is EncounterResponseOuterClass.EncounterResponse) {
Log.red("Encounter failed with result: ${encounterResult.status}")
if (encounterResult.status == Status.ENCOUNTER_CLOSED) {
ctx.blacklistedEncounters.add(catchablePokemon.encounterId)
}
}
if ((encounterResult is DiskEncounterResponseOuterClass.DiskEncounterResponse && encounterResult.result == DiskEncounterResponseOuterClass.DiskEncounterResponse.Result.POKEMON_INVENTORY_FULL) ||
(encounterResult is EncounterResponseOuterClass.EncounterResponse && encounterResult.status == Status.POKEMON_INVENTORY_FULL)) {
Log.red("Inventory fillup, disabling catching of pokemon")
Log.red("Inventory is full, temporarily disabling catching of pokemon")

ctx.pokemonInventoryFullStatus.set(true)
}
Expand Down
49 changes: 25 additions & 24 deletions src/main/kotlin/ink/abb/pogo/scraper/util/pokemon/PokemonData.kt
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@

package ink.abb.pogo.scraper.util.pokemon

import POGOProtos.Data.PokemonDataOuterClass
import POGOProtos.Data.PokemonDataOuterClass.PokemonData
import POGOProtos.Enums.PokemonIdOuterClass
import ink.abb.pogo.api.PoGoApi
Expand All @@ -17,12 +18,12 @@ import ink.abb.pogo.api.util.PokemonMetaRegistry
import ink.abb.pogo.scraper.Settings
import java.util.concurrent.atomic.AtomicInteger

fun PokemonData.getIv(): Int {
fun PokemonDataOuterClass.PokemonDataOrBuilder.getIv(): Int {
val iv = individualAttack + individualDefense + individualStamina
return iv
}

fun PokemonData.getIvPercentage(): Int {
fun PokemonDataOuterClass.PokemonDataOrBuilder.getIvPercentage(): Int {
val iv = getIv()
val ivPercentage = (iv * 100) / 45
return ivPercentage
Expand All @@ -33,20 +34,20 @@ fun PokemonData.getIvPercentage(): Int {
// return -1
//}

fun PokemonData.getStatsFormatted(): String {
fun PokemonDataOuterClass.PokemonDataOrBuilder.getStatsFormatted(): String {
val details = "Stamina: $individualStamina | Attack: $individualAttack | Defense: $individualDefense"
return details + " | IV: ${getIv()} (${(getIvPercentage())}%)"
}

val PokemonData.maxCpForPlayer: Int
val PokemonDataOuterClass.PokemonDataOrBuilder.maxCpForPlayer: Int
// TODO!!!
get() = 0

fun PokemonData.getCpPercentageToPlayer(): Int {
fun PokemonDataOuterClass.PokemonDataOrBuilder.getCpPercentageToPlayer(): Int {
return (cp.toDouble() / maxCpForPlayer.toDouble() * 100).toInt()
}

fun PokemonData.shouldTransfer(settings: Settings, pokemonCounts: MutableMap<String, Int>, candies: AtomicInteger): Pair<Boolean, String> {
fun PokemonDataOuterClass.PokemonDataOrBuilder.shouldTransfer(settings: Settings, pokemonCounts: MutableMap<String, Int>, candies: AtomicInteger): Pair<Boolean, String> {
val obligatoryTransfer = settings.obligatoryTransfer
val ignoredPokemon = settings.ignoredPokemon
val ivPercentage = getIvPercentage()
Expand Down Expand Up @@ -105,7 +106,7 @@ fun PokemonData.shouldTransfer(settings: Settings, pokemonCounts: MutableMap<Str
return Pair(shouldRelease, reason)
}

fun PokemonData.eggKmWalked(poGoApi: PoGoApi): Double {
fun PokemonDataOuterClass.PokemonDataOrBuilder.eggKmWalked(poGoApi: PoGoApi): Double {
if (!incubated) {
return 0.0
}
Expand All @@ -121,25 +122,25 @@ fun PokemonData.eggKmWalked(poGoApi: PoGoApi): Double {
}
}

val PokemonData.incubated: Boolean
val PokemonDataOuterClass.PokemonDataOrBuilder.incubated: Boolean
get() {
return eggIncubatorId.isNotBlank()
}

val PokemonData.injured: Boolean
val PokemonDataOuterClass.PokemonDataOrBuilder.injured: Boolean
get() {
return !fainted && stamina < staminaMax
}

val PokemonData.fainted: Boolean
val PokemonDataOuterClass.PokemonDataOrBuilder.fainted: Boolean
get() {
return stamina == 0
}

val PokemonData.meta: PokemonMeta
val PokemonDataOuterClass.PokemonDataOrBuilder.meta: PokemonMeta
get() = PokemonMetaRegistry.getMeta(this.getPokemonId())

val PokemonData.maxCp: Int
val PokemonDataOuterClass.PokemonDataOrBuilder.maxCp: Int
get() {
val pokemonMeta = meta
val attack = getIndividualAttack() + pokemonMeta.baseAttack
Expand All @@ -148,7 +149,7 @@ val PokemonData.maxCp: Int
return PokemonCpUtils.getMaxCp(attack, defense, stamina)
}

fun PokemonData.getMaxCpForLevel(level: Int): Int {
fun PokemonDataOuterClass.PokemonDataOrBuilder.getMaxCpForLevel(level: Int): Int {
val pokemonMeta = meta
val attack = getIndividualAttack() + pokemonMeta.baseAttack
val defense = getIndividualDefense() + pokemonMeta.baseDefense
Expand All @@ -157,17 +158,17 @@ fun PokemonData.getMaxCpForLevel(level: Int): Int {
return PokemonCpUtils.getMaxCpForPlayer(attack, defense, stamina, playerLevel)
}

val PokemonData.absoluteMaxCp: Int
val PokemonDataOuterClass.PokemonDataOrBuilder.absoluteMaxCp: Int
get() = PokemonCpUtils.getAbsoluteMaxCp(pokemonId)

val PokemonData.cpFullEvolveAndPowerup: Int
val PokemonDataOuterClass.PokemonDataOrBuilder.cpFullEvolveAndPowerup: Int
get() = getMaxCpFullEvolveAndPowerup(40)

fun PokemonData.getMaxCpFullEvolveAndPowerupForLevel(level: Int): Int {
fun PokemonDataOuterClass.PokemonDataOrBuilder.getMaxCpFullEvolveAndPowerupForLevel(level: Int): Int {
return getMaxCpFullEvolveAndPowerup(level)
}

private fun PokemonData.getMaxCpFullEvolveAndPowerup(playerLevel: Int): Int {
private fun PokemonDataOuterClass.PokemonDataOrBuilder.getMaxCpFullEvolveAndPowerup(playerLevel: Int): Int {
val highestUpgradedFamily: PokemonIdOuterClass.PokemonId
if (arrayListOf(PokemonIdOuterClass.PokemonId.VAPOREON, PokemonIdOuterClass.PokemonId.JOLTEON, PokemonIdOuterClass.PokemonId.FLAREON).contains(pokemonId)) {
highestUpgradedFamily = pokemonId
Expand All @@ -183,10 +184,10 @@ private fun PokemonData.getMaxCpFullEvolveAndPowerup(playerLevel: Int): Int {
return PokemonCpUtils.getMaxCpForPlayer(attack, defense, stamina, playerLevel)
}

val PokemonData.combinedCpMultiplier: Float
val PokemonDataOuterClass.PokemonDataOrBuilder.combinedCpMultiplier: Float
get() = cpMultiplier + additionalCpMultiplier

val PokemonData.cpAfterEvolve: Int
val PokemonDataOuterClass.PokemonDataOrBuilder.cpAfterEvolve: Int
get() {
if (arrayListOf(PokemonIdOuterClass.PokemonId.VAPOREON, PokemonIdOuterClass.PokemonId.JOLTEON, PokemonIdOuterClass.PokemonId.FLAREON).contains(pokemonId)) {
return cp
Expand All @@ -210,7 +211,7 @@ val PokemonData.cpAfterEvolve: Int
return PokemonCpUtils.getCp(attack, defense, stamina, combinedCpMultiplier)
}

val PokemonData.cpAfterFullEvolve: Int
val PokemonDataOuterClass.PokemonDataOrBuilder.cpAfterFullEvolve: Int
get() {
if (arrayListOf(PokemonIdOuterClass.PokemonId.VAPOREON, PokemonIdOuterClass.PokemonId.JOLTEON, PokemonIdOuterClass.PokemonId.FLAREON).contains(pokemonId)) {
return cp
Expand All @@ -227,14 +228,14 @@ val PokemonData.cpAfterFullEvolve: Int
return PokemonCpUtils.getCp(attack, defense, stamina, combinedCpMultiplier)
}

val PokemonData.cpAfterPowerup: Int
val PokemonDataOuterClass.PokemonDataOrBuilder.cpAfterPowerup: Int
get() = PokemonCpUtils.getCpAfterPowerup(cp, combinedCpMultiplier)

val PokemonData.candyCostsForPowerup: Int
val PokemonDataOuterClass.PokemonDataOrBuilder.candyCostsForPowerup: Int
get() = PokemonCpUtils.getCandyCostsForPowerup(combinedCpMultiplier, numUpgrades)

val PokemonData.stardustCostsForPowerup: Int
val PokemonDataOuterClass.PokemonDataOrBuilder.stardustCostsForPowerup: Int
get() = PokemonCpUtils.getStartdustCostsForPowerup(combinedCpMultiplier, numUpgrades)

val PokemonData.level: Float
val PokemonDataOuterClass.PokemonDataOrBuilder.level: Float
get() = PokemonCpUtils.getLevelFromCpMultiplier(combinedCpMultiplier)

0 comments on commit 526a14d

Please sign in to comment.