// i2_bot – Instinct PokememBro Bot // Copyright (c) 2017 Vladimir "fat0troll" Hodakov package getters // PossibilityRequiredPokeballs returns possibility of catching pokememe // It's based on location, grade of pokememe and current level of player func (g *Getters) PossibilityRequiredPokeballs(location int, grade int, lvl int) (float64, int) { var basePossibility float64 var requiredPokeballs int var percentile float64 if lvl > 3 { switch { case grade == (lvl + 1): basePossibility = 0.05 case grade == lvl: basePossibility = 0.5 case grade == (lvl - 1): basePossibility = 0.3 case grade == (lvl - 2): basePossibility = 0.1 case grade == (lvl - 3): basePossibility = 0.05 default: basePossibility = 0.00 } } else if lvl == 3 { switch grade { case 4: basePossibility = 0.05 case 3: basePossibility = 0.5 case 2: basePossibility = 0.3 case 1: basePossibility = 0.15 default: basePossibility = 0.00 } } else if lvl == 2 { switch grade { case 3: basePossibility = 0.05 case 2: basePossibility = 0.70 case 1: basePossibility = 0.25 default: basePossibility = 0.00 } } else if lvl == 1 { switch grade { case 2: basePossibility = 0.80 case 1: basePossibility = 0.20 default: basePossibility = 0.00 } } var pokememesCount int err := c.Db.Get(&pokememesCount, c.Db.Rebind("SELECT count(*) FROM pokememes p, pokememes_locations pl WHERE p.grade = ? AND pl.location_id = ? AND pl.pokememe_id = p.id;"), grade, location) if err != nil { c.Log.Error(err) } if basePossibility != 0 && pokememesCount != 0 { percentile = basePossibility * 100.0 / float64(pokememesCount) requiredPokeballs = int(100.0 / percentile) } return percentile, requiredPokeballs }