Subject: Here's my proto-gym!
Author:
Posted on: 2016-07-13 20:32:00 UTC
NSMBNRI@EML@DLN@O<NBK?N@Granz. Let's rumble!
Subject: Here's my proto-gym!
Author:
Posted on: 2016-07-13 20:32:00 UTC
NSMBNRI@EML@DLN@O<NBK?N@Granz. Let's rumble!
As you may know, the release of Pokemon Go has been delayed in... anywhere that isn't Australia, New Zealand, or the USA. Even where it is out, it's apparently suffering from constant server issues.
On Sunday night, I decided that I was fed up with waiting. Sure, it took Nintendo/Niantic years to make their game, and it would probably only be a week or two before they rolled it out everywhere, but I'm impatient! And I know JavaScript! How hard can it be?
Uh... not that hard, actually, provided you take a few shortcuts.
So I am pleased to introduce:
Pokemon Gone
The result of three whole days of work. I admit, it lacks a few things compared to Pokemon Go, such as... y'know... the GPS stuff... but other than that, it's a fair substitute!
The observant among you may have noticed that there are no actual Pokemon behind that link. The really observant among you may have noticed that there's something slightly off about the text of this post. These two facts are connected. Instead of venturing outside to catch Pokemon for Gone!, you can stay right here on the Board!
Scattered across this pst, and across others of my posts on the front page, are tiny Pokeball symbols. If you click on one, you catch the Pokemon behind it! Take the four-letter code below the Pokemon's image across to the Collection Page, put it in an empty sl
t, and hit the 'Go(ne)!' button. Voila!
When you've put tgether a team, head over to the Gym Page to battle. You'll need your Save Code, and someone else's Gym Code (don't mix these up! They won't work, and giving out your Save Code will let other pe
ple copy your Pokemon). Put them in, choose your monster, and... fight!
If you win a battle, you get to level up your Pokemon, increasing its stats. If it's experienced enough, it may be able to evlve! Whatever prize you choose, make sure you copy your updated Save Code - that's the only way to keep your data.
And if you spot any bugs (other than Bug Types) along the way, please let me know and I'll do my best to fix them. (Bugs includes Pokeballs which don't link to proper pages - I'm sure they exist! Also, the pages have been tested in Chrome and IE, but I don't have access to anything else.)
Training up the teams I'm going to put in my Ground/Rock gym, and encountered something rather weird, if both pokemon faint in the same turn (say due to poisoning) then the game gets stuck, you have to replace your pokemon as if you lost the battle but the AI doesn't replace their pokemon acting as if it still has HP despite the fact it has fainted. You can't select a move for your replacement pokemon to use or anything, the game gets stuck.
I'm not asking out of a desire for attention (for once); I'm asking because if no-ne's currently playing, I'll stop making posts filled with Pokemon. I can keep updating in silence, until I've got:
a) The whole Henn 'dex done.
b) A welcome message from Prof. Mallorn.
c) A full set of gym leaders.
and d) A permanent hme (ie, Pokemon strewn across my website).
Then do a re-release on the whle thing.
Or, I can keep making these posts to showcase the new Pokemon that I've put in. But I dn't want to take time from upgrading to do that, unless pe
ple are using them.
hS
Although I'm also waiting for enough ground types to be released so that I can do some kind of Ground (or Ground/Rock) type gym. With Numel now out that makes it more likely, but I'd prefer to have the Trapinch line before I put it on the board.
(That's the second time I've used that title.)
So Trapinch and c. are now out (along with some tedious non-Ground-type rubbish). That brings the number of Ground lines up to four:
-Marshtmp and Swampert
-Nincada
-Numel and Camerupt
-Trapinch, Vibrava, and Flygn
The Rock types are:
-Nosepass and Probpass
-Aron, Lairon, and Aggron
But if you wait... not too long, I think Barbach and Whiscash, Baltoy and Claydol aren't too far off, giving you six Ground lines.
Which is... all there are, unless you count Grudon.
I wonder what the worst-represented type is in Gen III? That's a question for anther day (and another post to dump Pokeballs in).
hS
With only four new Pokemon introduced, followed by Fairy and Poison each of which only has five 'new' Pokemon (I say 'new' because obviously Fairy didn't exist in Gen III). This also doesn't include Mega evolutions in which case Electric and Poison would be tied with five.
Getting fewer new Pokemn than the Ghost-type? Or the Ice-type? That takes a special kind of apathy. Plus, of c
urse, two of the Electric newbies are... well, let's be polite and say '
ptimised for double-battles'. Because calling them 'useless' would be mean, and I don't want t
make Minun cry.
My least favourite Pokemon are turning ut to be the singletons - the ones with no evolutions. That's because the least entertaining part of the inclusi
n process is making the little pages for catching the things. If I'm coding an evolutionary pair, I only have to make three pages, for the baby
f the family - but if I'm coding (say) Lunatone and Solrock, I have to make six. It's very tedi
us.
I guess the sensible thing to do would've been to work ut a way to use a single page, but with a variable URL to pull up different Pokemon. Is... is that a thing? Can you treat a URL as a c
mmand-line for Javascript?
It looks like you can. HMM. I think I might switch over, then, before adding any more Pkemon.
But that doesn't affect the nes I've already added. I'll keep the hunt pages intact until I roll out the permanent home for all this.
Is that enugh words?
hS
Specifically the 'o' of optimised and the first 'o' of the last Pokemon.
Yeah, that first one is trying t send you to a page for Crawdaunt. There are no pages for Crawdaunt. Oops.
Not sure about the last one - it seems to work for me? Should point here, I think.
hS
The link on this post works for me, on the last post it still doesn't.
It turned out that making a Pkeball Page that loads your Pokemon when it starts up is kind of alarmingly simple. So I've d
ne that. Now I can add whatever Pokemon I like without facing the looming spectre of To
Many Webpages.
Obviously I'd appreciate it if you could check it for me, see if it works. I hope it does - I can't exactly give you any more MissingN!
hS
'I can add whatever Pokemn I want'. Well, sure I can. But there was something I'd forgotten: a nifty little monstrosity named Castf
rm.
So yeah, all four variants of Castfrm are now programmed in. There are actually only two Castf
rm entries on the list - and then a bunch of code later on to switch the alternate movesets to also be alternate f
rms. This is only the second Pokem
n I had to hard-code something to accommodate (the first being Shedinja, which, yes, appears when Nincada ev
lves).
But! I didn't have to make 15 tiny webpages to accommdate this update. So that's a major plus.
hS
PS: Feebas. Just... Feebas.
Behold the new Gym page. This version takes your savecode and a Gym Code and pits you against yur opponent in a battle to the
death fainting! Until and unless you can defeat all of their Pokemn, you can't have your savecode back. That's right - no 'kill one, lose, and come back later' here. Unless you win, it's all for naught.
I fully expect this one to be stuffed full of bugs. Anyone who pints some out... well, you can probably figure out what you get.
h
On 1visible's advice, I've gne ahead and implemented status effects. They're quite difficult to fully test, so if you n
tice anything weird going on, let me know. You might even get something for your tr
uble.
And yes, the number of Pkemon is still increasing (slowly). Another four added today. I can't guarantee I'll ever make it to the end
f the 'dex, but I will at least try.
hS
PS: Yes, the subject line is a jke. Oh, how ve are laffink.
Well, I'm glad you asked me that, hypothetical barder. The reason is that I've spent today taking (some of) Tomash's advice, rejigging the code (to make it better) and the pages (to make them prettier). A b
nus of this is that the game is now at least theoretically mobile-friendly: it should automatically stack the boxes into a single c
lumn on a narrow screen. ("Should" being the operative word.)
Along the way I've discvered that Internet Explorer doesn't do anything the way you'd expect it to, but prefers to bounce portions of a website all around the screen. I'unn
. Fixed it in the end.
hS
At the moment, the last pokeball in your post goes to a 'page not found', which unless this is a reference to Missingno. I assume is not meant to happen.
I wonder what that was meant to be?
So, thanks for the bug report. Which is your favourite MissingNo. sprite? Asking... for a friend. [Looks sketchy]
hS
I think it's called Red and Blue normal on Bulbapedia
I thin
+++ERROR ERROR+++
+++SYSTEM REBOOTING+++
+++<GXK<GDK<=NK000+++
+++REINSTALLING CUCUMBER++
th a melon.
hS
Yes, as f today, Pokemon Go has been released in the UK, meaning Pokemon Gone!'s unchallenged reign lasted... ab
ut a day. Still, could be worse! I'm sure I've got projects that became redundant bef
re they were even released.
Does this mean I'm going to stp? No, I don't think so. Go doesn't have Gen III, so I'm still doing s
mething new. Plus, well, it's kind of fun. ^_^
I hope people are enjying playing with this as much as I'm enjoying making it.
hS
This is lovely, thank you! I haven't got a chance to play yet, but I will!
But can't load the actual gameplay part of Go. I like the picture of the Gyarados on the loading screen, though.
—doctorlit is sad he can't assist his fellow zookeepers in maintaining the three gyms on zoo grounds. :(
Since you did sort of dare me to look at your code, and I was a TA for a computer architecture class last semester, I felt the urge to give you concrit on your thing.
- Your JS
1) Powers That Be in a bucket, indent your code! (Unless you were deliberately going for the unreadable look, of course). If I didn't know better, I'd accuse you of coding in Notepad. (Note: if you are actually coding in Notepad, I've heard good things about Notepad++ on Windows, or you can pick up Emacs (or maybe Vim, if you like second-best) if you want to jump in the deep end of coding editors, but Google around for a good config in those cases)
2) Several variable should probably be dictionaries/Objects, not arrays. The main reason for this is that arrays use memory proportional to the largest valid index (that is, if you do var a = []; a[200000] = 5, you'll also use memory space for all of the undefineds that go in slots 0 through 199999.
2b) Which brings me to my next point, indexOf(), which is, as the theorists say, O(n). That is, the more Pokemon you add, the slower it will get, especially for errors. This can be avoided by dropping pokindex entirely and making pokedex an Object (var pokedex = {}).
This will allow you to check membership by simply doing numMon in pokedex. Also, you get the Magic that is JavaScript auto-coersion (most such things are terrible ideas but it's presence is not your fault). That is, if you do foo = {1: 2}, then foo["1"] == foo[1].
3) If you ever find yourself copy-pasting the same code several times and making minor changes (especially if there are variable suffixes such as thingA, thingB, ... involved), you might want to find another way to express what you're going for.
For example, here's a very functional-programming way to go from uppercase txt to digits
var digits = txt.split("").map(function (char) { return char.charCodeAt(0).toString(); }).join("")
function setLike()
{
var ret = {};
var numArguments = arguments.length;
for (var i = 0; i ret[arguments[i]] = true
}
return ret;
}
<style type="text/css">
.blockimg {
width:50px;
height:50px;
position:absolute;
left: 200px;
top: 95px;
}
</style>
1) Now this genuinely is an artefact of the rush to get the game 'dne'. Most of my CSS around the site is in separate CSS files, but Webs doesn't let me edit them too easily (I have to pull them
ffline and do it in - again - Notepad), so when I'm working fast it's easier to shove it all in on the fly. Doing an on-page stylesheet is a good idea, and one I'll definitely look into when I'm in a coding mood again. (Other than just c
ding in new Pokemon - that's easy to do as it is.)
2) Heh. Yeah, fair point. As above, this was thrwn together on the fly, but I'd probably have done it this way anyway. I like the l
ok of the grid system, and am perfectly willing to rejig the HTML to accomodate it (it's hardly complex HTML anyway!). I don't think I'll do it today, necessarily, but soon... s
on.
hS
They tend to be full of hacks. We've all done such horrible things, so no harm.
For future projects: do you want to not think too much about stylesheets? Do you want your site to look pretty much like very many other sites? Try Bootstrap (aka, I'm using this on T-Board with a tweak or 2 so that I don't have to care about such things)
1) And when I'm not, I'm cding in Webs.com's native HTML editor. And the reason I'm doing that is that I'm doing most of this on the computer at work, so I don't have my choice of coding editors. Also: laziness. ;)
2) and all points after: my coding knowledge is a bit haphazard. I've done curses in C++, Java, and C#, but most of the actual work I've done is cludging things together in VBA (for work) or Javascript (for fun). It's very much been a 'how do I do this thing I need to' process, so there's a lot of stuff I'm not at all familiar with.
Example: I understand the problem you're describing with the pokedex, but I don't understand your solution. I guess I need to read up on dictionaries? This is probably the change I'm most likely to make, since a) memory overhead, and b) I've had at least one incorrect entry in pokindex.
3) Wow, I don't understand at all what your functional-prgramming did there. ^^ One reason my code is so spaced out, particularly around 'digits', is that I was working out what it needed to do as I went. Which letter went where was changing frequently, so I needed to get into it easily. Note that with the Gym Code, I use the same technique but switch the order of the digits - I have no idea how I'd do that with your example.
3 repeated) ... yes, it should, and that should've occured to me.
4) Aha! I didn't knw that. Thanks!
5) The reason for at least some of my concats is that Chrome was treating + perators between numeral strings as addition. Which I didn't want in the least.
6) I... what did you just return? I have no idea what you did there. You're right that 'allowed' should be up in the top section; no reason to keep redefining it. (As to the style issue of the capital letter - yeah, I've no idea what correct styling is for Javascript or anything else; someday perhaps I'll learn.)
7) No, I'm a chemist. ^^ And most of the 1-based indexes happened by accident, where for-lops got a bit tangled up. I just didn't try to weed them out.
8) I've had problems with 'i' seeming to carry over from function to function, so tried to make all my loops use different letters; there's a loop in 'p' somewhere. 'n' showed up purely because I knew I hadn't used it yet.
9) And this comes about because I need to be able to see what a given piece is ding, I was tweaking it so much! (Technically for this I should probably have named every variable and function a random string of ten digits, to make it impossible to puzzle out what it was doing... but haha, no.)
10) ... ooh. I shall look into this immediately. Though on the flip-side, it means I'll need a 'clear team' button to make it easier to wipe clean... but I should have that anyway.
I'll reply to the HTML section later (because it means another pst to put Pokemon into), but thank you very much for this concrit! I can't promise I'll do all of it, but I'll certainly keep it in mind.
hS
1) Called it :). One thing I might recommend is using tabs to indent (despite the viewer-dependent length issue) since that's one key per level not {2,4,8} spaces.
2) Dictionaries. Also knows as maps, associative arrays, hashes, and maybe several other things. These are surprisingly useful things. They're sort of generalizations of arrays. Arrays let you quickly do Integer → stuff (especially if the integers are small). Dictionaries let you quickly do stuff → stuff (in stronger-typed languages, it's Key type → Value type). The usual way to make one is a hash table (look those up if you want to learn something).
To make an empty dictionary, use {}. Dictionaries with values in them are {key: value, key: value, ...} in JavaScript (some languages will use => instead). To look something up in a dictionary, use dict[key], basically like arrays.
JavaScript is also a bit finicky, because objects are (as far as I can tell) dictionaries. That is, instead of doing "".concat("foo", "bar"), you can do """concat".
This also creates the "feature" that in JavaScript dictionaries, all the keys are automatically converted to strings. (I'm aiming for, roughly, program correctness research, so I'm not a JS fan)
3) Ok, so I'm going to want to go through that.
- We start with the uppercase string txt
- Then, we .split("") it. split(sep) splits the string at places where sep occurs and returns a list of the parts, with the separators removed. In this case, this method creates an array of strings, where each string is one character from the original text
- Now, we come to a function that's well known in functional programming circles, that is array.map(function). Map conceptually replaces each element x of the array by function(x) (it actually creates a new array with those results, but yeah). In our case, the function takes each one-character string in the array, takes the char code of the 0th (and only) character, and then converts that to a string. So ["1", "2"].map(Number) gives [1, 2] and ["A", "B"].map(function (char) { return char.charCodeAt(0).toString(); }) gives ["65", "66"]
- The final .join("") flattens the array of strings into one long string, which gives you the 8-character digits ("AaBbCcDd", as you put it) you were constructing earlier
4) It's not particularly obvious that that's a thing you can do. Thank you Stack Overflow!
5) That is a JavaScript "feature" sigh
6) So, javascript (until last year's standard) is missing some form of set datatype. So, that function fakes one. Instead of having a set of things, you have a dictionary with the things as keys, but their value is always something meaningless and small, like true. Then, you have what you wanted out of a set data structure (fast membership testing, fast add, and fast remove) (ignoring pathological cases that shouldn't ever come up)
6b) So, several general guidelines for most C-like languages (check some variant of "$lang style guide" for specifics and minor cultural things.
- Types (and type-like things, such as constructors for types), start with a capital letter
- Functions and variables start lowercase.
- snakecase vs. camelCase vs.depends-on-what-you're-naming is a social thing per-project, and, in open source code, roughly per language. JavaScript uses camelCase everywhere.
- Constants like PI are ALLCAPS
- Pick a style for brace placement and stick with it, stay away from the flamewars.
- In general, foo(1) and bar[1] but while (1)
- Extra line breaks to make things fit roughly in 80ish characters helps avoid really long lines, which cause(d) problems
7) Fun. My mother's also a chemist. She did/does sort of polymer-related industrial research, IIRC, but then she went over to the dark side (aka management)
I figure this means you've been around enough physicists (who've hung around with certain groups of mathematicians) to pick up the [1, N] method of numbering N things, instead of the CS people's [0, N). I'm still somewhat salty that a perfectly reasonable uniform floor numbering system made it so the basement of the CS building is floor 1, not floor 0 :).
8) You've run into another JavaScript "feature". If, when you create a variable, you do i = 0; instead of var i = 0;, i become a global variable, and isn't isolated to your functions. This also applies to your for loops. So, use for (var i = 0; i < limit; i++) and your problem goes away.
9) Well, that's one good reason to be using functions, along with the whole code reuse thing. It sometimes takes people a while to pick up on this.
10) Are you feeling lazy? Tell us there's a 6 or so character erase code, like "000000", to allow dismissing a Pokémon. Then, just add that in. Saves you making a button.
1) Called it :). One thing I might recommend is using tabs to indent (despite the viewer-dependent length issue) since that's one key per level not {2,4,8} spaces.
2) Dictionaries. Also knows as maps, associative arrays, hashes, and maybe several other things. These are surprisingly useful things. They're sort of generalizations of arrays. Arrays let you quickly do Integer → stuff (especially if the integers are small). Dictionaries let you quickly do stuff → stuff (in stronger-typed languages, it's Key type → Value type). The usual way to make one is a hash table (look those up if you want to learn something).
To make an empty dictionary, use {}. Dictionaries with values in them are {key: value, key: value, ...} in JavaScript (some languages will use => instead). To look something up in a dictionary, use dict[key], basically like arrays.
JavaScript is also a bit finicky, because objects are (as far as I can tell) dictionaries. That is, instead of doing "".concat("foo", "bar"), you can do """concat".
This also creates the "feature" that in JavaScript dictionaries, all the keys are automatically converted to strings. (I'm aiming for, roughly, program correctness research, so I'm not a JS fan)
3) Ok, so I'm going to want to go through that.
- We start with the uppercase string txt
- Then, we .split("") it. split(sep) splits the string at places where sep occurs and returns a list of the parts, with the separators removed. In this case, this method creates an array of strings, where each string is one character from the original text
- Now, we come to a function that's well known in functional programming circles, that is array.map(function). Map conceptually replaces each element x of the array by function(x) (it actually creates a new array with those results, but yeah). In our case, the function takes each one-character string in the array, takes the char code of the 0th (and only) character, and then converts that to a string. So ["1", "2"].map(Number) gives [1, 2] and ["A", "B"].map(function (char) { return char.charCodeAt(0).toString(); }) gives ["65", "66"]
- The final .join("") flattens the array of strings into one long string, which gives you the 8-character digits ("AaBbCcDd", as you put it) you were constructing earlier
4) It's not particularly obvious that that's a thing you can do. Thank you Stack Overflow!
5) That is a JavaScript "feature" sigh
6) So, javascript (until last year's standard) is missing some form of set datatype. So, that function fakes one. Instead of having a set of things, you have a dictionary with the things as keys, but their value is always something meaningless and small, like true. Then, you have what you wanted out of a set data structure (fast membership testing, fast add, and fast remove) (ignoring pathological cases that shouldn't ever come up)
6b) So, several general guidelines for most C-like languages (check some variant of "$lang style guide" for specifics and minor cultural things.
- Types (and type-like things, such as constructors for types), start with a capital letter
- Functions and variables start lowercase.
- snakecase vs. camelCase vs.depends-on-what-you're-naming is a social thing per-project, and, in open source code, roughly per language. JavaScript uses camelCase everywhere.
- Constants like PI are ALLCAPS
- Pick a style for brace placement and stick with it, stay away from the flamewars.
- In general, foo(1) and bar[1] but while (1)
- Extra line breaks to make things fit roughly in 80ish characters helps avoid really long lines, which cause(d) problems
7) Fun. My mother's also a chemist. She did/does sort of polymer-related industrial research, IIRC, but then she went over to the dark side (aka management)
I figure this means you've been around enough physicists (who've hung around with certain groups of mathematicians) to pick up the [1, N] method of numbering N things, instead of the CS people's [0, N). I'm still somewhat salty that a perfectly reasonable uniform floor numbering system made it so the basement of the CS building is floor 1, not floor 0 :).
8) You've run into another JavaScript "feature". If, when you create a variable, you do i = 0; instead of var i = 0;, i become a global variable, and isn't isolated to your functions. This also applies to your for loops. So, use for (var i = 0; i and your problem goes away.
9) Well, that's one good reason to be using functions, along with the whole code reuse thing. It sometimes takes people a while to pick up on this.
10) Are you feeling lazy? Tell us there's a 6 or so character erase code, like "000000", to allow dismissing a Pokémon. Then, just add that in. Saves you making a button.
Since you did sort of dare me to look at your code, and I was a TA for a computer architecture class last semester, I felt the urge to give you concrit on your thing.
- Your JS
1) Powers That Be in a bucket, indent your code! (Unless you were deliberately going for the unreadable look, of course). If I didn't know better, I'd accuse you of coding in Notepad. (Note: if you are actually coding in Notepad, I've heard good things about Notepad++ on Windows, or you can pick up Emacs (or maybe Vim, if you like second-best) if you want to jump in the deep end of coding editors, but Google around for a good config in those cases)
2) Several variable should probably be dictionaries/Objects, not arrays. The main reason for this is that arrays use memory proportional to the largest valid index (that is, if you do var a = []; a[200000] = 5, you'll also use memory space for all of the undefineds that go in slots 0 through 199999.
2b) Which brings me to my next point, indexOf(), which is, as the theorists say, O(n). That is, the more Pokemon you add, the slower it will get, especially for errors. This can be avoided by dropping pokindex entirely and making pokedex an Object (var pokedex = {}).
This will allow you to check membership by simply doing numMon in pokedex. Also, you get the Magic that is JavaScript auto-coersion (most such things are terrible ideas but it's presence is not your fault). That is, if you do foo = {1: 2}, then foo["1"] == foo[1].
3) If you ever find yourself copy-pasting the same code several times and making minor changes (especially if there are variable suffixes such as thingA, thingB, ... involved), you might want to find another way to express what you're going for.
For example, here's a very functional-programming way to go from uppercase txt to digits
var digits = txt.split("").map(function (char) { return char.charCodeAt(0).toString(); }).join("")
function setLike()
{
var ret = {};
var numArguments = arguments.length;
for (var i = 0; i < numArguments; i++) {
ret[arguments[i]] = true
}
return ret;
}
<style type="text/css">
.blockimg {
width:50px;
height:50px;
position:absolute;
left: 200px;
top: 95px;
}
</style>
... do you have a favourite MissingNo sprite?
hS
but I like "Yellow normal" (the really glitchy red/orange/yellow one). Seems like the right image for a bug-induced Pokemon
That's just abo
+++OUT OF CHEESE ERROR+++
+++PLEASE MIND THE GAP+++
+++?OQH?O=H?EGH000Tomash+++
+++REDO FROM CABBAGE+++
side-down, can you believe it?
hS
but it looks like I was wrong! This game is pure awesomeness. One question, though, do our Pokégone retain their levels when they evolve, or does it start over? Simply curious because I've been keeping records.
They can only have five levels, and they have t be at level 4 to evolve, so it seemed the best way.
As to why they only have five, it's because the level is encded in two digits, which are limited to 6, 7, and 8. So it's very restricted.
Similarly, there are nly six variants of each Pokemon (and three of those are reserved for the shiny variants, not yet available); that means that for each Pokemon, there are three different movesets. No differences in the stats, th
ugh, unless you level them up.
(As to games made in three days: have you ever encuntered Ludum Dare, the 48-hour game competition? There's been some great stuff through there.)
hS
You have amazed me yet again.
*hint hint hint*
I'm working through the Hoenn 'dex in order, and it turns out they're loosely grouped by type. I stopped yesterday at Medicham - the next on the list was Electrike. So gd news!
But Hoenn is pretty rotten for Electrics in general. There were nly three in this cluster: Electrike-Manectric, Plusle, and Minum. Other than that, there are a handful of P
kemon in so far who can have electric moves: Exploud, Nosepass, Probopass, and... n
pe, that's it. (Medicham could have, but I gave it Fire and Ice as
ptions instead.)
I'm sure there will be mre as we head on through the 'dex, but I don't know what they are yet.
(Sidenote: 'Henn 'dex' isn't quite right. I'm putting in the Pokemon first seen in Hoenn, not the Gen I/II Pokemon who made the transiti
n.)
hS
you're doing the Hoenn Pokemon for this?
Other than, of course, to get me to constantly sit back and point at my screen and say 'Hey! I remember that!'
Whismurs still weird me out.
My reason for using the Henn set is threefold:
1/ I barely remember them. That means it's a lad of fun finding out what they are.
2/ I have memories of being delighted to find my first Wingull (a Water-type, so early! Delight!), and f hunting for Ralts in the grass.
3/ RSE was the first game to really look good. Gen I and II were kind f funky looking, but Emerald was amazing. So it deserves another showing, I think.
hS
You magician!
You wizard!
You sorcerer!
This is cool as hell, and I will partake in it posthaste.
It would be a little bit weird if it doesn't meet the standards I'm setting, now.
Can't wait to destroy you nerds tomorrow.
First up, here's the trainers who've shared their cdes on the Board:
dctorlit: GCHTGQMCOPKEAGJQHDNLHXNBdoctorlit
Strme Hawk: =HWIK=RMIQO=MRUIEIYJH@VNStorme
Granz: NSMBNRI@EML@DLN@O<NBK?N@Granz
And finally:
Fighting-Type Gym Leader Maitenamma: NDIQOUHLDGGKK=HWG>GCAJG@Maitenamma
So... do people want me to keep psting random trainers to fight, as well as the gym leaders? I don't know whether they're any fun or n
t, given that you only get to fight one Pokemon at a time.
And if there was ne thing you could see added to Pokemon Gone!, what would it be?
hS
Give moves their special effects, if they didn't have them already. Right now, gameplay is a bit shallow after a while.
=HWIK=RMIQO=MRUIEIYJH@VNStorme
Now if only I could find the Taillow code...
In my collection, I have but a number of Bug-types that will eventually become flying types, and a Wingull.
NSMBNRI@EML@DLN@O<NBK?N@Granz. Let's rumble!
Because I've got one right here! It's a Normal-type Gym, but don't forget that even Normal types can have tricks up their sleeves!
School Kid Max - FRNCCOK>0000School Kid Max
Lass Elaine - KRF@O>FEMXKB000Lass Elaine
Ace Trainer Isabell - K>PJJ@PJJAN=MDUL00Ace Trainer Isabell
Gym Leader Granz - CNULJ@PJK>PJJAXGM>UI>OWLGym Leader Granz
Okay, so I'm going to be doing this as a sort of pseudo-Nuzlocke:
-I get to click on one Pokemon per post with them in, and put it in my roster. That means right now I have 12 Pokemon (you do remember there's two other posts down the Board, right?).
-I can't look at a Pokemon's moves unless I'm adding it to my team. I also can't replace a Pokemon in the roster unless it faints.
-If a Pokemon levels up or evlves, I can no longer use its old code.
-If a Pokemon faints, I can't use it any more.
-I can only beat each Pokemon once. If I knock it out, I can rechallenge it's trainer, but have to reload them until another 'mon comes round.
Okay! Here we go.
Starting Team:
Ralts (Level 1)
Aron (Level 1)
Wingull (Level 1)
Torchic (Level 1)
Nosepass (Level 1)
Shroomish (Level 1)
School Kid Max
Fight 1: Nosepass v. Taillow
-Over in a single blw: Nosepass used Spark and knocked Taillow straight out.
-Nosepass is now Level 2.
Fight 2: Torchic v. Skitty
-2 Flame Bursts take Skitty down.
-Torchic is now Level 2. Max is out of Pokemon.
Lass Elaine
Fight 3: Wingull v. Linoone
-Wingull faints in three rounds! My fault - I got tangled up thinking of Linone as a Bug-type (I know, I know...), because it had a Bug-type move.
-Replacement Pokemon: Whismur (Level 1)
Fight 4: Whismur v. Loudred
-Lost in a single hit. This Loudred had Astonish, so I took a gamble on the Normal-type immunity to Ghost. But it used Uproar, doing 69 damage.
-Replacement Pokemon: Poochyena (Level 1)
At this point I realised that I had no chance of taking down evolved Pokemn with my team of babies. So I amended the rules and went back to beat up on Max some more.
School Kid Max (Round 2)
Fight 5: Torchic v. Skitty
-Same result as before.
-Torchic is now Level 3.
Fight 6: Torchic v. Taillow
-Fire cleanses.
-Torchic is now Level 4.
School Kid Max (Round 3)
Fight 7: Torchic v. Skitty
-Let everything burn.
-Torchic has evolved into Cmbusken (Level 1). And yes, it has a Fighting-type move.
Fight 8: Nosepass v. Taillow
-Zzzzap.
-Nosepass is now Level 3. 2 more battles and it'll evolve (though it has to survive them first...)
Lass Elaine (Rematch)
Fight 9: Combusken v. Loudred
-Now this is more like it! Double Kick does 28 damage, while Astonish only does 9 in return. Uproar is still dangerous, but with luck...
-... I did not get luck. Combusken went down, leaving Loudred at 8/84 HP. Back to punching Max, then.
-Replacement Pokemon: Lotad (Level 1)
Back to Punching Max
Fight 10: Nsepass v. Skitty
-Rock Slide smash!
-Nosepass is now level 4.
Fight 11: Nosepass v. Taillow
-Zzzzap.
-Nosepass evolves into Probopass.
Fight 12: Ralts v. Taillow
-Ralts faints. :(
-Replacement Pokemon: Zigzagon (Level 1)
Fight 13: Shroomish v. Skitty
-A long brawl, but I win.
-Shroomish is now Level 2.
Fights 14-16
-Ditto.
-Shroomish evolves into Breloom. Breloom has an 85-strength Fighting move. Let's see if we can do something about Elaine now.
Lass Elaine (This Time For Sure)
Fight 17: Prbopass v. Linoone
-Heh heh heh... Zap Cannon does 34 damage to Linoone. Pin Missile does 2 back. Tackle only does 1.
-Probopass is now Level 2.
Fight 18: Breloom v. Loudred
-Victory in a single hit! Sky Uppercut does a whopping 102 damage.
-Breloom is now Level 2.
Fight 19: Probopass v. Swellow
-Zap Cannon does 88 damage. Zzzzap.
-Probopass is now Level 3.
And with that I'm finally, finally past the second trainer. I think I'll take a break here; I'll finish up (I hpe...) later.
hS
You've beaten my second obstacle, and only had what, three deaths? But we'll see how you do against Ace Trainer Isabell! She's the one I eventually gave up recording while I was training, because it took longer to record than it did to actually fight. Oh, by the way, did I mention that the Gym Leader has a little surprise up his sleeve? Since there were only five normal types when I made the gym, not counting Azurill, I had to fill in the spot with something, so let's see how you do against that something... if you get that far. Mwa ha ha.
Everything from the last post still applies, so let's head straight in.
Ace Trainer Isabell
Fight 20: Probpass v. Exploud
-In three rounds, Zap Cannon brings it down.
-Probopass is now Level 4.
Fight 21: Probopass v. Swellow
-Zzzzzap.
-Probopass is fully levelled.
Fight 22: Breloom v. Delcatty
-Both Pokemon have super effective moves - but Breloom's is stronger.
-Breloom is now Level 3.
Fight 23: Brelom v. Linoone
-Sky Uppercut does 66 damage. Linoone goes down in two rounds.
-Breloom is now level 4.
And so, finally, we move onto the Gym Leader...
... or not.
Let's Punch Max
Fights 24-27: Aron murders small animals.
-Aron evolves into Lairn.
Now we can move on.
Fight 28: Probopass v. Exploud
-It takes five rounds, but Exploud goes down. Probopass, at this point, has 225 defence.
-No prize.
Fight 29:??? v. Gardevir
-Hey! That's not a Normal-type! Um um um... both Fairy and Psychic are weak against Steel, so I guess... Probopass again? I should've levelled Lairon up.
-Neither Pokemon can do much damage (though I get to see the Psychic image for the first time in ages - it's cool!), but Probopass does more. Victory!
Fight 30: Lairon v. Swellow
-Victory! Gotta love Steel/Rck types.
-Lairon is now Level 2. And can only use Headbutt offensively. Sigh.
Fight 31: Lairon v. Linoone
-It's a gamble... that doesn't pay off. Linoone only uses its Normal attack once, so that type-armour is useless. Lairon faints.
-Replaced with Minun, because why not?
Fight 32: Breloom v. Delcatty
-Breloom punches a cat into blivion.
-Breloom is now fully levelled.
Fight 33: ??? v. Slaking.
-Uh. That. That's a lot of HP. 225, in fact. I, uh. I'm going to have to think about this.
hS
Plus, I ran through everything and realized, "Whoops! I've already done all this work and I've only got five normal types! ... Well, why not throw something random into the mix? It'll give them a 'nice' surprise!" And, well, I get the feeling this is going to come down to Hammer Arm. Who's with me? Also, dang, that was fast. I'm gonna go cry in a corner now and curse your stupid Probopass into oblivion. Meh. I'm taking everyone to the Pokémon center now.
Okay, picking up where we left off: I need a strategy to take down Granz's Slaking. It has 225 HP, 197 ATK, 127 DEF, with Fury Swipes (90, Normal) and Hammer Arm (100, Fighting). My two levelled Pokemon are Probopass (90 HP, 97 ATK, 225 DEF) and Breloom (90 HP, 142 ATK, 105 DEF).
Fury Swipes is Normal-type, meaning it's weak against Rck and Steel, and can't hit Ghost at all. Hammer Arm is Fighting, which has strengths and weaknesses all over the place, but crucially is strong against Rock and Steel, and unable to hit Ghost.
Hmm. On thinking about this, I see two strategies:
1/ Send in Probopass. It can completely ignre Fury Swipes (being Rock/Steel), but will be utterly destroyed by Hammer Arm. So this is a gamble. It's also got very high-powered attacks, so can actually do a good job of cutting through that HP.
2/ Send in Breloom. As Grass/Fighting, it takes normal damage from both moves, but has Sky Uppercut, which gets doubled damage against Slaking. It's got higher attack than Probopass, so it can do more damage - but its defence is lower.
3/ Look for a ghost. Shedinja or Sableye, at this point. Trouble is, my rules nly allow me to take one Pokemon from each post, and I only have a handful of posts I haven't already claimed from. So this is a gamble. But if I find one, it's a no-trouble win.
Okay. I'm going to try option 2 first. If that fails, it's on to Option 3.
Fight 34: Breloom v. Slaking
-Round 1: Breloom actually does more damage than Slaking! Sky Uppercut does 47, while Slaking des 43. But, uh, I only have 47 HP left now, while Slaking has 178.
-Round 2 is even better: 55 versus 34. But I'm down to 13 HP, and...
-Yep, out on Round 3. I got Slaking down to 76 HP.
Time to go hunting.
-Pokemon found: Ralts. No. Though if it evolves into Gallade, it could give it a try.
-Pokemon found: Nosepass. No.
-Pokemon found: Whismur. Don't think so.
-Pokemon found: Wingull. N.
-Pokemon found: Surskit. Bother.
-Pokemon found: Plusle. Nnnnhg.
Okay, let's level up a Ralts.
Fight 35: Ralts v. Max's Taillow
-... and Ralts goes down in the second round.
Fine. Whismur?
Fight 36: Whismur v. Taillow
-Whismur levels up.
Fight 37: Whismur v. Skitty
-Whismur cllapses in tears.
Ugugug. My remaining Pokemon:
Plusle + Minun: No chance, no evolution, nothing.
Taillow: Hammer Arm is weak against Flying, so there's that.
Zigzagoon: Not likely.
Poochyena: Ditto, though its attack is better.
Wingull: Pelipper isn't exactly a big name.
Surskit: Yes, my moth will destroy your beast. Sure.
Nosepass + Probopass: Tough, but tough enough? I don't know.
Lotad: ... hmm.
Lotad can evolve twice, which means it'll end up stronger than most of my other beasts. I don't know what attacks it'll have, but they might be strong. And at least it's not weak to Normal r Fighting...
Okay. One last try.
Fight 38: Lotad v. Skitty
-... Lotad faints.
Okay. Fine. Let's throw the dice.
Fight 39: Probopass v. Slaking
I will only be using Zap Cannon in this match. With 120 STR, it's the more powerful attack, and Electric and Rock are both normal-damage against Slaking.
-Round 1: It uses Fury Swipes. I take 6 damage. It takes 29. 84 v. 196
-Rund 2: 80 v. 178. Fury Swipes again.
-Round 3: ... Hammer Arm takes me straight out of the game. 114 damage; I only had 90 HP to start with.
And that's where this challenge ends. I could train up my other Nosepass and hope for a fluke, but is winning based on a mucked-up RNG really winning? I could also cook up a post full of Nincadas and Sableyes and breeze through, but again, that's cheating. So instead, I will gracefully admit defeat.
First, sme trainers:
Collectr Lucas: N?MBLYIAH@LDMDKB00Lucas
Lass Charlene: >JLDHVN>LEIABOIA00Charlene
Burglar Ricard: NWIAEFNBFYK?K?F@00Ricardo
And finally:
Bug-Type Gym Leader Wilwarindestë: JVMB@IJBH=KKHBNHH@LXAINTWilwarindestë
The Pokemon actually get easier t add as time passes: the bit that takes the most time is the m
ve images, which I'm making myself. But the more moves I have on file (I'm up t
80 now), the quicker it is.
hS
Haven't had time to do any battles yet, but the searching is fun! And the comparing stats to find the best options. :)
—doctorlit's phone is Motorola, and cannot run Go
[img]https://s32.postimg.org/hx9h4632p/PokemonGonevsDoctorlit1.png[/img]
My Gym Code: DHIJK=HCIQO=>NNLEIYJH@LDStorme
https://s31.postimg.org/ateg5csxn/PokemonGonevsDoctorlit1.png
Whilst I go and remember how to actually put pictures on the Board.
Fight! Fight!
^_^ What, you didn't expect me t fight fair, did you?
So yeah, nw Ralts is in the game, along with all its ev
lutions. I've settled on 'Gen III+' for the 'dex: Gen III's Pokem
n, plus all their evolutions, but with their current typing. So Ralts is Psychic/Fairy and can evolve int
Gallade, for instance.
hS is the Raltsiest