2020
2121import java .util .EnumMap ;
2222
23- public class PokemonFamilyMap {
23+ public class PokemonMetaRegistry {
2424
2525 private static EnumMap <PokemonId , PokemonFamilyId > familys = new EnumMap <>(PokemonId .class );
2626 private static EnumMap <PokemonFamilyId , PokemonId > highestForFamily = new EnumMap <>(PokemonFamilyId .class );
27+ private static EnumMap <PokemonId , PokemonMeta > meta = new EnumMap <>(PokemonId .class );
2728
2829 static {
2930 familys .put (PokemonId .BULBASAUR , PokemonFamilyId .FAMILY_BULBASAUR );
@@ -257,6 +258,153 @@ public class PokemonFamilyMap {
257258 highestForFamily .put (PokemonFamilyId .FAMILY_MEWTWO , PokemonId .MEWTWO );
258259 familys .put (PokemonId .MEW , PokemonFamilyId .FAMILY_MEW );
259260 highestForFamily .put (PokemonFamilyId .FAMILY_MEW , PokemonId .MEW );
261+
262+ meta .put (PokemonId .BULBASAUR , new PokemonMeta (90 ,0.16 ,25 ,0.1 ,0.7 ,null ));
263+ meta .put (PokemonId .IVYSAUR , new PokemonMeta (120 ,0.08 ,100 ,0.07 ,1 ,PokemonId .BULBASAUR ));
264+ meta .put (PokemonId .VENUSAUR , new PokemonMeta (160 ,0.04 ,0 ,0.05 ,2 ,PokemonId .IVYSAUR ));
265+ meta .put (PokemonId .CHARMANDER , new PokemonMeta (78 ,0.16 ,25 ,0.1 ,0.6 ,null ));
266+ meta .put (PokemonId .CHARMELEON , new PokemonMeta (116 ,0.08 ,100 ,0.07 ,1.1 ,PokemonId .CHARMANDER ));
267+ meta .put (PokemonId .CHARIZARD , new PokemonMeta (156 ,0.04 ,0 ,0.05 ,1.7 ,PokemonId .CHARMELEON ));
268+ meta .put (PokemonId .SQUIRTLE , new PokemonMeta (88 ,0.16 ,25 ,0.1 ,0.5 ,null ));
269+ meta .put (PokemonId .WARTORTLE , new PokemonMeta (118 ,0.08 ,100 ,0.07 ,1 ,PokemonId .SQUIRTLE ));
270+ meta .put (PokemonId .BLASTOISE , new PokemonMeta (158 ,0.04 ,0 ,0.05 ,1.6 ,PokemonId .WARTORTLE ));
271+ meta .put (PokemonId .CATERPIE , new PokemonMeta (90 ,0.4 ,12 ,0.2 ,0.3 ,null ));
272+ meta .put (PokemonId .METAPOD , new PokemonMeta (100 ,0.2 ,50 ,0.09 ,0.7 ,PokemonId .CATERPIE ));
273+ meta .put (PokemonId .BUTTERFREE , new PokemonMeta (120 ,0.1 ,0 ,0.06 ,1.1 ,PokemonId .METAPOD ));
274+ meta .put (PokemonId .WEEDLE , new PokemonMeta (80 ,0.4 ,12 ,0.2 ,0.3 ,null ));
275+ meta .put (PokemonId .KAKUNA , new PokemonMeta (90 ,0.2 ,50 ,0.09 ,0.6 ,PokemonId .WEEDLE ));
276+ meta .put (PokemonId .BEEDRILL , new PokemonMeta (130 ,0.1 ,0 ,0.06 ,1 ,PokemonId .KAKUNA ));
277+ meta .put (PokemonId .PIDGEY , new PokemonMeta (80 ,0.4 ,12 ,0.2 ,0.3 ,null ));
278+ meta .put (PokemonId .PIDGEOTTO , new PokemonMeta (126 ,0.2 ,50 ,0.09 ,1.1 ,PokemonId .PIDGEY ));
279+ meta .put (PokemonId .PIDGEOT , new PokemonMeta (166 ,0.1 ,0 ,0.06 ,1.5 ,PokemonId .PIDGEOTTO ));
280+ meta .put (PokemonId .RATTATA , new PokemonMeta (60 ,0.4 ,25 ,0.2 ,0.3 ,null ));
281+ meta .put (PokemonId .RATICATE , new PokemonMeta (110 ,0.16 ,0 ,0.07 ,0.7 ,PokemonId .RATTATA ));
282+ meta .put (PokemonId .SPEAROW , new PokemonMeta (80 ,0.4 ,50 ,0.15 ,0.3 ,null ));
283+ meta .put (PokemonId .FEAROW , new PokemonMeta (130 ,0.16 ,0 ,0.07 ,1.2 ,PokemonId .SPEAROW ));
284+ meta .put (PokemonId .EKANS , new PokemonMeta (70 ,0.4 ,50 ,0.15 ,2 ,null ));
285+ meta .put (PokemonId .ARBOK , new PokemonMeta (120 ,0.16 ,0 ,0.07 ,3.5 ,PokemonId .EKANS ));
286+ meta .put (PokemonId .PIKACHU , new PokemonMeta (70 ,0.16 ,50 ,0.1 ,0.4 ,null ));
287+ meta .put (PokemonId .SANDSHREW , new PokemonMeta (100 ,0.4 ,50 ,0.1 ,0.6 ,null ));
288+ meta .put (PokemonId .SANDSLASH , new PokemonMeta (150 ,0.16 ,0 ,0.06 ,1 ,PokemonId .SANDSHREW ));
289+ meta .put (PokemonId .NIDORAN_FEMALE , new PokemonMeta (110 ,0.4 ,25 ,0.15 ,0.4 ,null ));
290+ meta .put (PokemonId .NIDORINA , new PokemonMeta (140 ,0.2 ,100 ,0.07 ,0.8 ,PokemonId .NIDORAN_FEMALE ));
291+ meta .put (PokemonId .NIDOQUEEN , new PokemonMeta (180 ,0.1 ,0 ,0.05 ,1.3 ,PokemonId .NIDORINA ));
292+ meta .put (PokemonId .NIDORAN_MALE , new PokemonMeta (92 ,0.4 ,25 ,0.15 ,0.5 ,null ));
293+ meta .put (PokemonId .NIDORINO , new PokemonMeta (122 ,0.2 ,100 ,0.07 ,0.9 ,PokemonId .NIDORAN_MALE ));
294+ meta .put (PokemonId .NIDOKING , new PokemonMeta (162 ,0.1 ,0 ,0.05 ,1.4 ,PokemonId .NIDORINO ));
295+ meta .put (PokemonId .CLEFAIRY , new PokemonMeta (140 ,0.24 ,50 ,0.1 ,0.6 ,null ));
296+ meta .put (PokemonId .CLEFABLE , new PokemonMeta (190 ,0.08 ,0 ,0.06 ,1.3 ,PokemonId .CLEFAIRY ));
297+ meta .put (PokemonId .VULPIX , new PokemonMeta (76 ,0.24 ,50 ,0.1 ,0.6 ,null ));
298+ meta .put (PokemonId .NINETALES , new PokemonMeta (146 ,0.08 ,0 ,0.06 ,1.1 ,PokemonId .VULPIX ));
299+ meta .put (PokemonId .JIGGLYPUFF , new PokemonMeta (230 ,0.4 ,50 ,0.1 ,0.5 ,null ));
300+ meta .put (PokemonId .WIGGLYTUFF , new PokemonMeta (280 ,0.16 ,0 ,0.06 ,1 ,PokemonId .JIGGLYPUFF ));
301+ meta .put (PokemonId .ZUBAT , new PokemonMeta (80 ,0.4 ,50 ,0.2 ,0.8 ,null ));
302+ meta .put (PokemonId .GOLBAT , new PokemonMeta (150 ,0.16 ,0 ,0.07 ,1.6 ,PokemonId .ZUBAT ));
303+ meta .put (PokemonId .GLOOM , new PokemonMeta (120 ,0.24 ,100 ,0.07 ,0.8 ,PokemonId .ODDISH ));
304+ meta .put (PokemonId .VILEPLUME , new PokemonMeta (150 ,0.12 ,0 ,0.05 ,1.2 ,PokemonId .GLOOM ));
305+ meta .put (PokemonId .PARAS , new PokemonMeta (70 ,0.32 ,50 ,0.15 ,0.3 ,null ));
306+ meta .put (PokemonId .PARASECT , new PokemonMeta (120 ,0.16 ,0 ,0.07 ,1 ,PokemonId .PARAS ));
307+ meta .put (PokemonId .VENONAT , new PokemonMeta (120 ,0.4 ,50 ,0.15 ,1 ,null ));
308+ meta .put (PokemonId .VENOMOTH , new PokemonMeta (140 ,0.16 ,0 ,0.07 ,1.5 ,PokemonId .VENONAT ));
309+ meta .put (PokemonId .DIGLETT , new PokemonMeta (20 ,0.4 ,50 ,0.1 ,0.2 ,null ));
310+ meta .put (PokemonId .DUGTRIO , new PokemonMeta (70 ,0.16 ,0 ,0.06 ,0.7 ,PokemonId .DIGLETT ));
311+ meta .put (PokemonId .MEOWTH , new PokemonMeta (80 ,0.4 ,50 ,0.15 ,0.4 ,null ));
312+ meta .put (PokemonId .PERSIAN , new PokemonMeta (130 ,0.16 ,0 ,0.07 ,1 ,PokemonId .MEOWTH ));
313+ meta .put (PokemonId .PSYDUCK , new PokemonMeta (100 ,0.4 ,50 ,0.1 ,0.8 ,null ));
314+ meta .put (PokemonId .GOLDUCK , new PokemonMeta (160 ,0.16 ,0 ,0.06 ,1.7 ,PokemonId .PSYDUCK ));
315+ meta .put (PokemonId .PRIMEAPE , new PokemonMeta (130 ,0.16 ,0 ,0.06 ,1 ,null ));
316+ meta .put (PokemonId .GROWLITHE , new PokemonMeta (110 ,0.24 ,50 ,0.1 ,0.7 ,null ));
317+ meta .put (PokemonId .ARCANINE , new PokemonMeta (180 ,0.08 ,0 ,0.06 ,1.9 ,PokemonId .GROWLITHE ));
318+ meta .put (PokemonId .POLIWAG , new PokemonMeta (80 ,0.4 ,25 ,0.15 ,0.6 ,null ));
319+ meta .put (PokemonId .POLIWHIRL , new PokemonMeta (130 ,0.2 ,100 ,0.07 ,1 ,PokemonId .POLIWAG ));
320+ meta .put (PokemonId .POLIWRATH , new PokemonMeta (180 ,0.1 ,0 ,0.05 ,1.3 ,PokemonId .POLIWHIRL ));
321+ meta .put (PokemonId .ABRA , new PokemonMeta (50 ,0.4 ,25 ,0.99 ,0.9 ,null ));
322+ meta .put (PokemonId .KADABRA , new PokemonMeta (80 ,0.2 ,100 ,0.07 ,1.3 ,PokemonId .ABRA ));
323+ meta .put (PokemonId .ALAKAZAM , new PokemonMeta (110 ,0.1 ,0 ,0.05 ,1.5 ,PokemonId .KADABRA ));
324+ meta .put (PokemonId .MACHAMP , new PokemonMeta (180 ,0.1 ,0 ,0.05 ,1.6 ,PokemonId .MACHOKE ));
325+ meta .put (PokemonId .BELLSPROUT , new PokemonMeta (100 ,0.4 ,25 ,0.15 ,0.7 ,null ));
326+ meta .put (PokemonId .WEEPINBELL , new PokemonMeta (130 ,0.2 ,100 ,0.07 ,1 ,PokemonId .BELLSPROUT ));
327+ meta .put (PokemonId .VICTREEBEL , new PokemonMeta (160 ,0.1 ,0 ,0.05 ,1.7 ,PokemonId .WEEPINBELL ));
328+ meta .put (PokemonId .TENTACOOL , new PokemonMeta (80 ,0.4 ,50 ,0.15 ,0.9 ,null ));
329+ meta .put (PokemonId .TENTACRUEL , new PokemonMeta (160 ,0.16 ,0 ,0.07 ,1.6 ,PokemonId .TENTACOOL ));
330+ meta .put (PokemonId .GEODUDE , new PokemonMeta (80 ,0.4 ,25 ,0.1 ,0.4 ,null ));
331+ meta .put (PokemonId .GRAVELER , new PokemonMeta (110 ,0.2 ,100 ,0.07 ,1 ,PokemonId .GEODUDE ));
332+ meta .put (PokemonId .GOLEM , new PokemonMeta (160 ,0.1 ,0 ,0.05 ,1.4 ,PokemonId .GRAVELER ));
333+ meta .put (PokemonId .PONYTA , new PokemonMeta (100 ,0.32 ,50 ,0.1 ,1 ,null ));
334+ meta .put (PokemonId .RAPIDASH , new PokemonMeta (130 ,0.12 ,0 ,0.06 ,1.7 ,PokemonId .PONYTA ));
335+ meta .put (PokemonId .SLOWPOKE , new PokemonMeta (180 ,0.4 ,50 ,0.1 ,1.2 ,null ));
336+ meta .put (PokemonId .SLOWBRO , new PokemonMeta (190 ,0.16 ,0 ,0.06 ,1.6 ,PokemonId .SLOWPOKE ));
337+ meta .put (PokemonId .MAGNEMITE , new PokemonMeta (50 ,0.4 ,50 ,0.1 ,0.3 ,null ));
338+ meta .put (PokemonId .MAGNETON , new PokemonMeta (100 ,0.16 ,0 ,0.06 ,1 ,PokemonId .MAGNEMITE ));
339+ meta .put (PokemonId .FARFETCHD , new PokemonMeta (104 ,0.24 ,0 ,0.09 ,0.8 ,null ));
340+ meta .put (PokemonId .DODUO , new PokemonMeta (70 ,0.4 ,50 ,0.1 ,1.4 ,null ));
341+ meta .put (PokemonId .DODRIO , new PokemonMeta (120 ,0.16 ,0 ,0.06 ,1.8 ,PokemonId .DODUO ));
342+ meta .put (PokemonId .SEEL , new PokemonMeta (130 ,0.4 ,50 ,0.09 ,1.1 ,null ));
343+ meta .put (PokemonId .DEWGONG , new PokemonMeta (180 ,0.16 ,0 ,0.06 ,1.7 ,PokemonId .SEEL ));
344+ meta .put (PokemonId .GRIMER , new PokemonMeta (160 ,0.4 ,50 ,0.1 ,0.9 ,null ));
345+ meta .put (PokemonId .MUK , new PokemonMeta (210 ,0.16 ,0 ,0.06 ,1.2 ,PokemonId .GRIMER ));
346+ meta .put (PokemonId .SHELLDER , new PokemonMeta (60 ,0.4 ,50 ,0.1 ,0.3 ,null ));
347+ meta .put (PokemonId .CLOYSTER , new PokemonMeta (100 ,0.16 ,0 ,0.06 ,1.5 ,PokemonId .SHELLDER ));
348+ meta .put (PokemonId .GASTLY , new PokemonMeta (60 ,0.32 ,25 ,0.1 ,1.3 ,null ));
349+ meta .put (PokemonId .HAUNTER , new PokemonMeta (90 ,0.16 ,100 ,0.07 ,1.6 ,PokemonId .GASTLY ));
350+ meta .put (PokemonId .GENGAR , new PokemonMeta (120 ,0.08 ,0 ,0.05 ,1.5 ,PokemonId .HAUNTER ));
351+ meta .put (PokemonId .ONIX , new PokemonMeta (70 ,0.16 ,0 ,0.09 ,8.8 ,null ));
352+ meta .put (PokemonId .DROWZEE , new PokemonMeta (120 ,0.4 ,50 ,0.1 ,1 ,null ));
353+ meta .put (PokemonId .HYPNO , new PokemonMeta (170 ,0.16 ,0 ,0.06 ,1.6 ,PokemonId .DROWZEE ));
354+ meta .put (PokemonId .KRABBY , new PokemonMeta (60 ,0.4 ,50 ,0.15 ,0.4 ,null ));
355+ meta .put (PokemonId .KINGLER , new PokemonMeta (110 ,0.16 ,0 ,0.07 ,1.3 ,PokemonId .KRABBY ));
356+ meta .put (PokemonId .VOLTORB , new PokemonMeta (80 ,0.4 ,50 ,0.1 ,0.5 ,null ));
357+ meta .put (PokemonId .ELECTRODE , new PokemonMeta (120 ,0.16 ,0 ,0.06 ,1.2 ,PokemonId .VOLTORB ));
358+ meta .put (PokemonId .EXEGGCUTE , new PokemonMeta (120 ,0.4 ,50 ,0.1 ,0.4 ,null ));
359+ meta .put (PokemonId .EXEGGUTOR , new PokemonMeta (190 ,0.16 ,0 ,0.06 ,2 ,PokemonId .EXEGGCUTE ));
360+ meta .put (PokemonId .CUBONE , new PokemonMeta (100 ,0.32 ,50 ,0.1 ,0.4 ,null ));
361+ meta .put (PokemonId .MAROWAK , new PokemonMeta (120 ,0.12 ,0 ,0.06 ,1 ,PokemonId .CUBONE ));
362+ meta .put (PokemonId .HITMONLEE , new PokemonMeta (100 ,0.16 ,0 ,0.09 ,1.5 ,null ));
363+ meta .put (PokemonId .LICKITUNG , new PokemonMeta (180 ,0.16 ,0 ,0.09 ,1.2 ,null ));
364+ meta .put (PokemonId .KOFFING , new PokemonMeta (80 ,0.4 ,50 ,0.1 ,0.6 ,null ));
365+ meta .put (PokemonId .WEEZING , new PokemonMeta (130 ,0.16 ,0 ,0.06 ,1.2 ,PokemonId .KOFFING ));
366+ meta .put (PokemonId .RHYHORN , new PokemonMeta (160 ,0.4 ,50 ,0.1 ,1 ,null ));
367+ meta .put (PokemonId .RHYDON , new PokemonMeta (210 ,0.16 ,0 ,0.06 ,1.9 ,PokemonId .RHYHORN ));
368+ meta .put (PokemonId .CHANSEY , new PokemonMeta (500 ,0.16 ,0 ,0.09 ,1.1 ,null ));
369+ meta .put (PokemonId .TANGELA , new PokemonMeta (130 ,0.32 ,0 ,0.09 ,1 ,null ));
370+ meta .put (PokemonId .HORSEA , new PokemonMeta (60 ,0.4 ,50 ,0.1 ,0.4 ,null ));
371+ meta .put (PokemonId .SEADRA , new PokemonMeta (110 ,0.16 ,0 ,0.06 ,1.2 ,PokemonId .HORSEA ));
372+ meta .put (PokemonId .GOLDEEN , new PokemonMeta (90 ,0.4 ,50 ,0.15 ,0.6 ,null ));
373+ meta .put (PokemonId .SEAKING , new PokemonMeta (160 ,0.16 ,0 ,0.07 ,1.3 ,PokemonId .GOLDEEN ));
374+ meta .put (PokemonId .STARYU , new PokemonMeta (60 ,0.4 ,50 ,0.15 ,0.8 ,null ));
375+ meta .put (PokemonId .STARMIE , new PokemonMeta (120 ,0.16 ,0 ,0.06 ,1.1 ,PokemonId .STARYU ));
376+ meta .put (PokemonId .MR_MIME , new PokemonMeta (80 ,0.24 ,0 ,0.09 ,1.3 ,null ));
377+ meta .put (PokemonId .SCYTHER , new PokemonMeta (140 ,0.24 ,0 ,0.09 ,1.5 ,null ));
378+ meta .put (PokemonId .JYNX , new PokemonMeta (130 ,0.24 ,0 ,0.09 ,1.4 ,null ));
379+ meta .put (PokemonId .ELECTABUZZ , new PokemonMeta (130 ,0.24 ,0 ,0.09 ,1.1 ,null ));
380+ meta .put (PokemonId .MAGMAR , new PokemonMeta (130 ,0.24 ,0 ,0.09 ,1.3 ,null ));
381+ meta .put (PokemonId .PINSIR , new PokemonMeta (130 ,0.24 ,0 ,0.09 ,1.5 ,null ));
382+ meta .put (PokemonId .TAUROS , new PokemonMeta (150 ,0.24 ,0 ,0.09 ,1.4 ,null ));
383+ meta .put (PokemonId .MAGIKARP , new PokemonMeta (40 ,0.56 ,400 ,0.15 ,0.9 ,null ));
384+ meta .put (PokemonId .GYARADOS , new PokemonMeta (190 ,0.08 ,0 ,0.07 ,6.5 ,PokemonId .MAGIKARP ));
385+ meta .put (PokemonId .LAPRAS , new PokemonMeta (260 ,0.16 ,0 ,0.09 ,2.5 ,null ));
386+ meta .put (PokemonId .DITTO , new PokemonMeta (96 ,0.16 ,0 ,0.1 ,0.3 ,null ));
387+ meta .put (PokemonId .EEVEE , new PokemonMeta (110 ,0.32 ,25 ,0.1 ,0.3 ,null ));
388+ meta .put (PokemonId .VAPOREON , new PokemonMeta (260 ,0.12 ,0 ,0.06 ,1 ,PokemonId .EEVEE ));
389+ meta .put (PokemonId .JOLTEON , new PokemonMeta (130 ,0.12 ,0 ,0.06 ,0.8 ,PokemonId .EEVEE ));
390+ meta .put (PokemonId .FLAREON , new PokemonMeta (130 ,0.12 ,0 ,0.06 ,0.9 ,PokemonId .EEVEE ));
391+ meta .put (PokemonId .PORYGON , new PokemonMeta (130 ,0.32 ,0 ,0.09 ,0.8 ,null ));
392+ meta .put (PokemonId .OMANYTE , new PokemonMeta (70 ,0.32 ,50 ,0.09 ,0.4 ,null ));
393+ meta .put (PokemonId .OMASTAR , new PokemonMeta (140 ,0.12 ,0 ,0.05 ,1 ,PokemonId .OMANYTE ));
394+ meta .put (PokemonId .KABUTO , new PokemonMeta (60 ,0.32 ,50 ,0.09 ,0.5 ,null ));
395+ meta .put (PokemonId .KABUTOPS , new PokemonMeta (120 ,0.12 ,0 ,0.05 ,1.3 ,PokemonId .KABUTO ));
396+ meta .put (PokemonId .AERODACTYL , new PokemonMeta (160 ,0.16 ,0 ,0.09 ,1.8 ,null ));
397+ meta .put (PokemonId .SNORLAX , new PokemonMeta (320 ,0.16 ,0 ,0.09 ,2.1 ,null ));
398+ meta .put (PokemonId .ARTICUNO , new PokemonMeta (180 ,0 ,0 ,0.1 ,1.7 ,null ));
399+ meta .put (PokemonId .ZAPDOS , new PokemonMeta (180 ,0 ,0 ,0.1 ,1.6 ,null ));
400+ meta .put (PokemonId .MOLTRES , new PokemonMeta (180 ,0 ,0 ,0.1 ,2 ,null ));
401+ meta .put (PokemonId .DRATINI , new PokemonMeta (82 ,0.32 ,25 ,0.09 ,1.8 ,null ));
402+ meta .put (PokemonId .DRAGONAIR , new PokemonMeta (122 ,0.08 ,100 ,0.06 ,4 ,PokemonId .DRATINI ));
403+ meta .put (PokemonId .DRAGONITE , new PokemonMeta (182 ,0.04 ,0 ,0.05 ,2.2 ,PokemonId .DRAGONAIR ));
404+ meta .put (PokemonId .MEWTWO , new PokemonMeta (212 ,0 ,0 ,0.1 ,2 ,null ));
405+ meta .put (PokemonId .MEW , new PokemonMeta (200 ,0 ,0 ,0.1 ,0.4 ,null ));
406+
407+
260408 }
261409
262410 /**
@@ -269,6 +417,16 @@ public static PokemonFamilyId getFamily(PokemonId id) {
269417 return familys .get (id );
270418 }
271419
420+ /**
421+ * Return PokemonMeta object containing meta info about a pokemon.
422+ *
423+ * @param id the id of the pokemon
424+ * @return PokemonMeta
425+ */
426+ public static PokemonMeta getMeta (PokemonId id ) {
427+ return meta .get (id );
428+ }
429+
272430 /**
273431 * Return the highest evolution for given family ID.
274432 * !!! CARE TO EVEE THAT DOESNT HAVE BETTER EVOLUTION !!!
0 commit comments