2017-10-13 03:05:26 +04:00
|
|
|
|
// i2_bot – Instinct PokememBro Bot
|
|
|
|
|
// Copyright (c) 2017 Vladimir "fat0troll" Hodakov
|
|
|
|
|
|
2017-11-21 06:06:32 +04:00
|
|
|
|
package pokedexer
|
2017-10-13 03:05:26 +04:00
|
|
|
|
|
|
|
|
|
import (
|
2018-01-21 23:28:53 +04:00
|
|
|
|
"git.wtfteam.pro/fat0troll/i2_bot/lib/dbmapping"
|
2018-02-07 14:05:08 +04:00
|
|
|
|
"sort"
|
2017-10-13 03:05:26 +04:00
|
|
|
|
)
|
|
|
|
|
|
2018-01-29 23:50:25 +04:00
|
|
|
|
// External functions
|
2017-10-13 03:52:04 +04:00
|
|
|
|
|
2018-02-07 14:05:08 +04:00
|
|
|
|
func (p *Pokedexer) getBestPokememes(playerID int) ([]*dbmapping.PokememeFull, bool) {
|
|
|
|
|
pokememesArray := make([]*dbmapping.PokememeFull, 0)
|
2018-01-29 23:50:25 +04:00
|
|
|
|
|
|
|
|
|
playerRaw, err := c.DataCache.GetPlayerByID(playerID)
|
2017-10-18 07:03:34 +04:00
|
|
|
|
if err != nil {
|
2018-01-29 23:50:25 +04:00
|
|
|
|
c.Log.Error(err.Error())
|
2017-10-18 09:39:50 +04:00
|
|
|
|
return pokememesArray, false
|
2017-10-18 07:03:34 +04:00
|
|
|
|
}
|
2018-01-29 23:50:25 +04:00
|
|
|
|
profileRaw, err := c.DataCache.GetProfileByPlayerID(playerRaw.ID)
|
2017-10-18 07:03:34 +04:00
|
|
|
|
if err != nil {
|
2018-01-29 23:50:25 +04:00
|
|
|
|
c.Log.Error(err.Error())
|
2017-10-18 09:39:50 +04:00
|
|
|
|
return pokememesArray, false
|
2017-10-18 07:03:34 +04:00
|
|
|
|
}
|
|
|
|
|
|
2017-10-18 09:39:50 +04:00
|
|
|
|
if playerRaw.LeagueID == 0 {
|
|
|
|
|
return pokememesArray, false
|
2017-10-18 07:03:34 +04:00
|
|
|
|
}
|
|
|
|
|
|
2018-01-29 23:50:25 +04:00
|
|
|
|
allPokememes := c.DataCache.GetAllPokememes()
|
2018-02-07 14:05:08 +04:00
|
|
|
|
|
|
|
|
|
pokememesArraySorted := make([]*dbmapping.PokememeFull, 0)
|
|
|
|
|
|
|
|
|
|
for i := range allPokememes {
|
|
|
|
|
pokememesArraySorted = append(pokememesArraySorted, allPokememes[i])
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
sort.Slice(pokememesArraySorted, func(i, j int) bool {
|
|
|
|
|
return pokememesArraySorted[i].Pokememe.Attack > pokememesArraySorted[j].Pokememe.Attack
|
|
|
|
|
})
|
|
|
|
|
|
2017-11-29 19:59:51 +04:00
|
|
|
|
if profileRaw.LevelID < 4 {
|
2018-02-07 14:05:08 +04:00
|
|
|
|
for i := range pokememesArraySorted {
|
|
|
|
|
if (pokememesArraySorted[i].Pokememe.Defence < profileRaw.Power) || (pokememesArraySorted[i].Pokememe.Purchaseable) {
|
|
|
|
|
if allPokememes[i].Pokememe.Grade == profileRaw.LevelID+1 {
|
|
|
|
|
pokememesArray = append(pokememesArray, pokememesArraySorted[i])
|
2018-02-07 13:39:34 +04:00
|
|
|
|
}
|
2018-01-29 23:50:25 +04:00
|
|
|
|
}
|
2017-11-29 19:59:51 +04:00
|
|
|
|
}
|
2018-01-30 00:55:14 +04:00
|
|
|
|
} else if profileRaw.LevelID > 8 {
|
|
|
|
|
// TODO: Remove it on 10th grade pokememes arrival
|
|
|
|
|
for i := range allPokememes {
|
2018-02-07 14:05:08 +04:00
|
|
|
|
if pokememesArraySorted[i].Pokememe.Grade == 9 {
|
2018-01-30 00:55:14 +04:00
|
|
|
|
matchLeague := false
|
2018-02-07 14:05:08 +04:00
|
|
|
|
for j := range pokememesArraySorted[i].Elements {
|
|
|
|
|
if pokememesArraySorted[i].Elements[j].LeagueID == playerRaw.LeagueID {
|
2018-01-30 00:55:14 +04:00
|
|
|
|
matchLeague = true
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if matchLeague {
|
2018-02-07 14:05:08 +04:00
|
|
|
|
if (pokememesArraySorted[i].Pokememe.Defence < profileRaw.Power) || (pokememesArraySorted[i].Pokememe.Purchaseable) {
|
|
|
|
|
pokememesArray = append(pokememesArray, pokememesArraySorted[i])
|
2018-02-07 13:39:34 +04:00
|
|
|
|
}
|
2018-01-30 00:55:14 +04:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
2017-11-29 19:59:51 +04:00
|
|
|
|
} else {
|
2018-01-29 23:50:25 +04:00
|
|
|
|
for i := range allPokememes {
|
2018-02-07 14:05:08 +04:00
|
|
|
|
if pokememesArraySorted[i].Pokememe.Grade == profileRaw.LevelID+1 {
|
2018-01-29 23:50:25 +04:00
|
|
|
|
matchLeague := false
|
2018-02-07 14:05:08 +04:00
|
|
|
|
for j := range pokememesArraySorted[i].Elements {
|
|
|
|
|
if pokememesArraySorted[i].Elements[j].LeagueID == playerRaw.LeagueID {
|
2018-01-29 23:50:25 +04:00
|
|
|
|
matchLeague = true
|
|
|
|
|
}
|
2017-10-18 07:03:34 +04:00
|
|
|
|
}
|
2018-01-29 23:50:25 +04:00
|
|
|
|
if matchLeague {
|
2018-02-07 14:05:08 +04:00
|
|
|
|
if (pokememesArraySorted[i].Pokememe.Defence < profileRaw.Power) || (pokememesArraySorted[i].Pokememe.Purchaseable) {
|
|
|
|
|
pokememesArray = append(pokememesArray, pokememesArraySorted[i])
|
2018-02-07 13:39:34 +04:00
|
|
|
|
}
|
2017-10-18 07:03:34 +04:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2018-01-29 23:50:25 +04:00
|
|
|
|
return pokememesArray, true
|
2017-10-13 03:05:26 +04:00
|
|
|
|
}
|