Skip to content

Commit da9b881

Browse files
committed
Release v2.3.1
2 parents 82b9a8c + fc26bc8 commit da9b881

File tree

15 files changed

+269
-212
lines changed

15 files changed

+269
-212
lines changed

Diff for: README.md

+8-7
Original file line numberDiff line numberDiff line change
@@ -8,14 +8,14 @@
88

99
**PokéNurse** is a desktop application for Windows and Mac that allows you to manage your pokémon from Pokémon Go without the need for a mobile device. You can now favorite, transfer, and evolve from the comfort of your own home!
1010

11-
## Downloads for v2.3.0
11+
## Downloads for v2.3.1
1212
You may view all the releases [here](https://github.com/vinnymac/PokeNurse/releases)
13-
* [macOS](https://github.com/vinnymac/PokeNurse/releases/download/v2.3.0/PokeNurse.dmg)
14-
* [Windows](https://github.com/vinnymac/PokeNurse/releases/download/v2.3.0/PokeNurse.exe)
15-
* [Debian 32 bit](https://github.com/vinnymac/PokeNurse/releases/download/v2.3.0/PokeNurse-ia32.deb)
16-
* [Debian 64 bit](https://github.com/vinnymac/PokeNurse/releases/download/v2.3.0/PokeNurse-x64.deb)
17-
* [AppImage 32 bit](https://github.com/vinnymac/PokeNurse/releases/download/v2.3.0/PokeNurse-ia32.AppImage)
18-
* [AppImage 64 bit](https://github.com/vinnymac/PokeNurse/releases/download/v2.3.0/PokeNurse-x64.AppImage)
13+
* [macOS](https://github.com/vinnymac/PokeNurse/releases/download/v2.3.1/PokeNurse.dmg)
14+
* [Windows](https://github.com/vinnymac/PokeNurse/releases/download/v2.3.1/PokeNurse.exe)
15+
* [Debian 32 bit](https://github.com/vinnymac/PokeNurse/releases/download/v2.3.1/PokeNurse-ia32.deb)
16+
* [Debian 64 bit](https://github.com/vinnymac/PokeNurse/releases/download/v2.3.1/PokeNurse-x64.deb)
17+
* [AppImage 32 bit](https://github.com/vinnymac/PokeNurse/releases/download/v2.3.1/PokeNurse-ia32.AppImage)
18+
* [AppImage 64 bit](https://github.com/vinnymac/PokeNurse/releases/download/v2.3.1/PokeNurse-x64.AppImage)
1919

2020
## Examples
2121
![Login Window](app/loginExample.png)
@@ -81,6 +81,7 @@ The API Hashing service is a paid service that allows third party Pokémon GO de
8181
## Credit
8282
* [cyraxx](https://github.com/cyraxx) for [pogobuf](https://github.com/cyraxx/pogobuf) and [node-pogo-protos](https://github.com/cyraxx/node-pogo-protos)
8383
* [AeonLucid](https://github.com/AeonLucid) for [POGOProtos](https://github.com/AeonLucid/POGOProtos)
84+
* [PkParaíso](https://www.pkparaiso.com) for the [animated sprites](https://www.pkparaiso.com/xy/sprites_pokemon.php), licensed under [CC BY-NC-ND 3.0](https://creativecommons.org/licenses/by-nc-nd/3.0/)
8485

8586
## Legal
8687
This Project is in no way affiliated with, authorized, maintained, sponsored or endorsed by Niantic, The Pokémon Company, Nintendo or any of its affiliates or subsidiaries. This is an independent and unofficial API for educational use ONLY. Using the Project might be against the TOS

Diff for: app/actions/authenticate.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ export default {
5050
}
5151

5252
// Use default API version
53-
if (hashingKey) options.version = apiVersion || 5704
53+
if (hashingKey) options.version = apiVersion || 6100
5454

5555
const client = new pogobuf.Client(options)
5656

Diff for: app/actions/trainer.js

+9-1
Original file line numberDiff line numberDiff line change
@@ -159,6 +159,10 @@ function parseInventory(inventory) {
159159
.map(utils.getName)
160160
.join('/')
161161

162+
const pokemonCostume = utils.getCostume(p.pokemon_display.costume)
163+
const pokemonGender = utils.getGender(p.pokemon_display.gender)
164+
const pokemonForm = utils.getForm(p.pokemon_display.form)
165+
162166
const quickMoves = pokemonSetting.quick_moves.map(m => getMove(type, moveSettings, m, true))
163167

164168
const cinematicMoves = pokemonSetting.cinematic_moves.map(m => getMove(type, moveSettings, m, false))
@@ -207,7 +211,11 @@ function parseInventory(inventory) {
207211
// Multiply by -1 for sorting
208212
favorite: p.favorite * -1,
209213
move_1: move1,
210-
move_2: move2
214+
move_2: move2,
215+
costume: pokemonCostume,
216+
gender: pokemonGender,
217+
shiny: p.pokemon_display.shiny,
218+
form: pokemonForm
211219
}
212220

213221
const speciesIndex = p.pokemon_id - 1

Diff for: app/imgs/3d/129-fs.webp

38.5 KB
Binary file not shown.

Diff for: app/imgs/3d/129-s.webp

38.8 KB
Binary file not shown.

Diff for: app/imgs/3d/130-fs.webp

202 KB
Binary file not shown.

Diff for: app/imgs/3d/130-s.webp

202 KB
Binary file not shown.

Diff for: app/package.json

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "PokeNurse",
33
"productName": "PokeNurse",
4-
"version": "2.3.0",
4+
"version": "2.3.1",
55
"description": "A tool for Pokémon Go to aid in transferring and evolving Pokémon",
66
"main": "./main.js",
77
"author": {
@@ -12,8 +12,8 @@
1212
"license": "MIT",
1313
"dependencies": {
1414
"async-file": "^2.0.2",
15-
"electron-localshortcut": "^1.0.0",
16-
"node-pogo-protos": "2.7.0",
15+
"electron-localshortcut": "1.1.1",
16+
"node-pogo-protos": "2.9.1",
1717
"pogobuf": "1.10.0"
1818
}
1919
}

Diff for: app/screens/Detail/components/ModalBody.js

+25-3
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import QuickMove from './QuickMove'
55
import CinematicMove from './CinematicMove'
66
import Nickname from './Nickname'
77
import Evolutions from './Evolutions'
8+
import utils from '../../../utils'
89

910
class ModalBody extends React.Component {
1011
static propTypes = {
@@ -31,7 +32,7 @@ class ModalBody extends React.Component {
3132
render() {
3233
const {
3334
transform,
34-
name,
35+
// name,
3536
hp,
3637
cp,
3738
pokemon,
@@ -75,7 +76,8 @@ class ModalBody extends React.Component {
7576
title="Listen to Cry"
7677
alt="Profile Sprite"
7778
id="pokemon_profile_sprite"
78-
src={`./imgs/3d/${pokemon.pokemon_id}.webp`}
79+
src={this.handleSprite(pokemon)}
80+
onError={() => { document.getElementById('pokemon_profile_sprite').src = `./imgs/3d/${pokemon.pokemon_id}.webp` }}
7981
/>
8082
<audio
8183
id="pokemonCry"
@@ -119,7 +121,7 @@ class ModalBody extends React.Component {
119121
</div>
120122
<div className="pokemon-info-item split-2-way">
121123
<div className="pokemon-info-item-text candy-count">{candies}</div>
122-
<div className="pokemon-info-item-title">{`${name} Candy`}</div>
124+
<div className="pokemon-info-item-title">{`${utils.getName(pokemon.family_id)} Candy`}</div>
123125
</div>
124126
</div>
125127
<div className="pokemon_info">
@@ -150,6 +152,26 @@ class ModalBody extends React.Component {
150152
handleCry = () => {
151153
this.cry.play()
152154
}
155+
156+
handleSprite = (pokemon) => {
157+
let imgPath
158+
if (pokemon.gender === 'Female') {
159+
if (pokemon.shiny) {
160+
// Is FEMALE and SHINY
161+
imgPath = `./imgs/3d/${pokemon.pokemon_id}-fs.webp`
162+
} else {
163+
// Is FEMALE
164+
imgPath = `./imgs/3d/${pokemon.pokemon_id}-f.webp`
165+
}
166+
} else if (pokemon.shiny) {
167+
// Is MALE or GENDERLESS and SHINY
168+
imgPath = `./imgs/3d/${pokemon.pokemon_id}-s.webp`
169+
} else {
170+
// Is MALE or GENDERLESS
171+
imgPath = `./imgs/3d/${pokemon.pokemon_id}.webp`
172+
}
173+
return imgPath
174+
}
153175
}
154176

155177
export default ModalBody

Diff for: app/screens/Login/components/LoginFormContainer.js

+3-3
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ const hashKeyTooltip = (
3636

3737
const apiVersionTooltip = (
3838
<Tooltip id="apiVersionTooltip">
39-
Use specific API Version, 0.53 is 5300, 0.57.4 is 5704, etc.
39+
Use specific API Version, 0.57.4 is 5704, 0.61.0 is 6100, etc.
4040
</Tooltip>
4141
)
4242

@@ -153,7 +153,7 @@ class LoginForm extends React.Component {
153153
</InputGroup.Addon>
154154
<FormControl
155155
type="text"
156-
placeholder="Token only required for safer API interactions"
156+
placeholder="Token required for API interactions"
157157
ref={(c) => { this.hashKey = c }}
158158
onKeyPress={this.handleEnterKey}
159159
defaultValue={credentials.hashingKey || ''}
@@ -166,7 +166,7 @@ class LoginForm extends React.Component {
166166
</InputGroup.Addon>
167167
<FormControl
168168
type="text"
169-
placeholder="5704"
169+
placeholder="6100"
170170
ref={(c) => { this.apiVersion = c }}
171171
onKeyPress={this.handleEnterKey}
172172
defaultValue={credentials.apiVersion || ''}

Diff for: app/screens/Table/index.js

+2
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,8 @@ const teams = [
6868
function getHeaderBackgroundStyles(teamIndex) {
6969
const team = teams[teamIndex]
7070

71+
if (team.name === 'default') team.name = 'bg'
72+
7173
return {
7274
backgroundColor: team.color,
7375
backgroundImage: `url('./imgs/${team.name}.jpg')`,

Diff for: app/utils.js

+24
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,18 @@ const NAMES = Object
3232
.replace('Male', '♂')
3333
)
3434

35+
const COSTUMES = Object
36+
.keys(POGOProtos.Enums.Costume)
37+
.map(c => c.split('_').map(word => capitalize(word)).join(' '))
38+
39+
const GENDERS = Object
40+
.keys(POGOProtos.Enums.Gender)
41+
.map(g => g.split('_').map(word => capitalize(word)).join(' '))
42+
43+
const FORMS = Object
44+
.keys(POGOProtos.Enums.Form)
45+
.map(f => f.split('_').map(word => capitalize(word)).join(' '))
46+
3547
const levelCpMultiplier = {
3648
1: 0.094,
3749
1.5: 0.135137432,
@@ -361,6 +373,18 @@ const utils = {
361373
return NAMES[id] || 'Unknown'
362374
},
363375

376+
getCostume(costume) {
377+
return COSTUMES[costume]
378+
},
379+
380+
getGender(gender) {
381+
return GENDERS[gender]
382+
},
383+
384+
getForm(form) {
385+
return FORMS[form]
386+
},
387+
364388
capitalize,
365389
}
366390

Diff for: app/yarn.lock

+19-7
Original file line numberDiff line numberDiff line change
@@ -162,9 +162,15 @@ ecc-jsbn@~0.1.1:
162162
dependencies:
163163
jsbn "~0.1.0"
164164

165-
electron-localshortcut@^1.0.0:
166-
version "1.0.0"
167-
resolved "https://registry.yarnpkg.com/electron-localshortcut/-/electron-localshortcut-1.0.0.tgz#e9c1ba267c75376e1b254af206b9ff856360a67a"
165+
electron-is-accelerator@^0.1.0:
166+
version "0.1.2"
167+
resolved "https://registry.yarnpkg.com/electron-is-accelerator/-/electron-is-accelerator-0.1.2.tgz#509e510c26a56b55e17f863a4b04e111846ab27b"
168+
169+
170+
version "1.1.1"
171+
resolved "https://registry.yarnpkg.com/electron-localshortcut/-/electron-localshortcut-1.1.1.tgz#2b7fbad4a279d1678011254bc4d3578f195e00d4"
172+
dependencies:
173+
electron-is-accelerator "^0.1.0"
168174

169175
escape-string-regexp@^1.0.2:
170176
version "1.0.5"
@@ -376,18 +382,24 @@ minimatch@^3.0.2, "minimatch@2 || 3":
376382
dependencies:
377383
brace-expansion "^1.0.0"
378384

379-
node-pogo-protos@^2.7.0, [email protected]:
385+
node-pogo-protos@^2.7.0:
380386
version "2.7.0"
381387
resolved "https://registry.yarnpkg.com/node-pogo-protos/-/node-pogo-protos-2.7.0.tgz#5ae53d851454405a1c76896cd35b48d0a4512daf"
382388
dependencies:
383389
protobufjs "^5.0.1"
384390

385-
"node-pogo-signature@github:starkevin/node-pogo-signature":
391+
392+
version "2.9.1"
393+
resolved "https://registry.yarnpkg.com/node-pogo-protos/-/node-pogo-protos-2.9.1.tgz#3f30234c7451c2910dbff3502b070292883c9437"
394+
dependencies:
395+
protobufjs "^5.0.1"
396+
397+
node-pogo-signature@starkevin/node-pogo-signature:
386398
version "4.0.0"
387-
resolved "https://codeload.github.com/starkevin/node-pogo-signature/tar.gz/c307d5b9260b735883ec1a209872a4feffcb214f"
399+
resolved "https://codeload.github.com/starkevin/node-pogo-signature/tar.gz/9ab52c922d598da41c101dc4b6f122d41d5c482d"
388400
dependencies:
389401
long "^3.2.0"
390-
pcrypt starkevin/pcrypt
402+
pcrypt laverdet/pcrypt
391403
protobufjs "^5.0.1"
392404

393405
number-is-nan@^1.0.0:

Diff for: package.json

+13-13
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "PokeNurse",
3-
"version": "2.3.0",
3+
"version": "2.3.1",
44
"description": "A tool for Pokémon Go to aid in transferring and evolving Pokémon",
55
"main": "main.js",
66
"scripts": {
@@ -79,27 +79,27 @@
7979
"homepage": "https://github.com/vinnymac/PokeNurse#readme",
8080
"devDependencies": {
8181
"asar": "0.13.0",
82-
"babel-core": "6.24.0",
83-
"babel-eslint": "7.2.0",
82+
"babel-core": "6.24.1",
83+
"babel-eslint": "7.2.1",
8484
"babel-loader": "6.4.1",
8585
"babel-plugin-add-module-exports": "^0.2.1",
8686
"babel-plugin-dev-expression": "^0.2.1",
8787
"babel-plugin-webpack-loaders": "0.9.0",
8888
"babel-polyfill": "6.23.0",
89-
"babel-preset-es2015": "6.24.0",
90-
"babel-preset-react": "6.23.0",
89+
"babel-preset-es2015": "6.24.1",
90+
"babel-preset-react": "6.24.1",
9191
"babel-preset-react-optimize": "^1.0.1",
92-
"babel-preset-stage-0": "6.22.0",
93-
"babel-register": "6.24.0",
92+
"babel-preset-stage-0": "6.24.1",
93+
"babel-register": "6.24.1",
9494
"babili-webpack-plugin": "0.0.11",
9595
"cross-env": "3.2.4",
9696
"css-loader": "0.27.3",
9797
"del": "^2.2.2",
9898
"devtron": "^1.3.0",
9999
"electron": "1.6.2",
100100
"electron-builder": "10.15.1",
101-
"electron-devtools-installer": "2.1.0",
102-
"eslint": "3.18.0",
101+
"electron-devtools-installer": "2.2.0",
102+
"eslint": "3.19.0",
103103
"eslint-config-airbnb": "10.0.1",
104104
"eslint-formatter-pretty": "^1.1.0",
105105
"eslint-import-resolver-webpack": "0.8.1",
@@ -115,7 +115,7 @@
115115
"json-loader": "^0.5.4",
116116
"lodash": "4.17.4",
117117
"minimist": "^1.2.0",
118-
"moment": "2.18.0",
118+
"moment": "2.18.1",
119119
"postcss": "5.2.16",
120120
"react-addons-perf": "^15.4.2",
121121
"react-bootstrap": "0.30.8",
@@ -129,17 +129,17 @@
129129
"webpack": "1.14.0",
130130
"webpack-dashboard": "0.3.0",
131131
"webpack-dev-middleware": "1.10.1",
132-
"webpack-hot-middleware": "2.17.1",
132+
"webpack-hot-middleware": "2.18.0",
133133
"webpack-merge": "2.6.0",
134134
"webpack-validator": "2.3.0"
135135
},
136136
"dependencies": {
137137
"async-file": "^2.0.2",
138138
"bootstrap": "^3.3.7",
139139
"electron-debug": "^1.1.0",
140-
"electron-localshortcut": "1.1.0",
140+
"electron-localshortcut": "1.1.1",
141141
"font-awesome": "^4.7.0",
142-
"node-pogo-protos": "2.7.0",
142+
"node-pogo-protos": "2.9.1",
143143
"pogobuf": "1.10.0",
144144
"react": "15.4.2",
145145
"react-dom": "15.4.2",

0 commit comments

Comments
 (0)