Arduino Not Responding During Program
The primary reason that this isn't working is that you are using more RAM than the ATmega328 has (2Kbytes). 

The array nameArray is huge. Each one of those characters is 1 byte, it's ~1.1k in itself. Add in Serial, TrueRandom and String, and you are over the limit. It could be you are right on the bounds and calling a single function pushes the stack over it's limit.

To save size, you can place the strings in flash. There is functionality to do this in Arduino, namely PROGMEM directive from underlying AVR-GCC and F() from Arduino. Making arrays of string is quite painful though, and using the Flash library helps here.

Personally I would avoid String for anything like this. The insides of String use dynamic memory allocation and when you are near the limits of RAM, it really isn't helpful. You lose a lot of ease of use by moving to arrays of char though.

You are also using assignment instead of comparison in your code:

if (currentID = i){
   pokemonName = nameArray[i];
   Serial.print(pokemonName);
   break;
}


This needs to be currentID == i.

I'm not confident what you are doing here though. If you want to get the i th element from the array, then just do

pokemonName = nameArray[currentID]


You also have an odd conditional at the beginning where you check for an EEPROM value being non zero, and then the else reads out the EEPROM value which by definition must be zero.

Also, you have a define for numPokemon but you aren't using it for the bounds on your for loops.