pokeemerald/src/wild_encounter.c

5486 lines
149 KiB
C
Raw Normal View History

2017-11-16 20:38:10 +01:00
#include "global.h"
#include "wild_encounter.h"
#include "pokemon.h"
2017-12-11 19:27:51 +01:00
#include "constants/species.h"
2017-11-16 20:38:10 +01:00
#include "metatile_behavior.h"
#include "fieldmap.h"
#include "random.h"
2017-12-05 18:55:48 +01:00
#include "constants/maps.h"
2017-11-16 20:38:10 +01:00
#include "field_player_avatar.h"
2017-12-05 18:55:48 +01:00
#include "constants/abilities.h"
2017-11-16 20:38:10 +01:00
#include "event_data.h"
#include "safari_zone.h"
2017-12-05 18:55:48 +01:00
#include "overworld.h"
2017-11-16 20:38:10 +01:00
#include "pokeblock.h"
2017-11-17 17:50:07 +01:00
#include "battle_setup.h"
#include "roamer.h"
2017-12-05 18:55:48 +01:00
#include "constants/game_stat.h"
2017-11-17 22:28:55 +01:00
#include "tv.h"
#include "link.h"
#include "script.h"
2017-12-05 18:55:48 +01:00
#include "constants/items.h"
2018-02-05 22:27:29 +01:00
#include "constants/maps.h"
2017-11-16 20:38:10 +01:00
2017-11-17 22:28:55 +01:00
extern const u8 EventScript_RepelWoreOff[];
2017-11-16 20:38:10 +01:00
2017-11-17 22:28:55 +01:00
#define NUM_FEEBAS_SPOTS 6
2017-11-17 17:50:07 +01:00
extern u8 GetBattlePikeWildMonHeaderId(void);
extern bool32 TryGenerateBattlePikeWildMon(bool8 checkKeenEyeIntimidate);
extern void GenerateBattlePyramidWildMon(void);
2017-11-17 22:28:55 +01:00
extern bool8 InBattlePike(void);
extern bool8 InBattlePyramid(void);
2017-11-16 20:38:10 +01:00
// this file's functions
2017-11-17 22:28:55 +01:00
static u16 FeebasRandom(void);
static void FeebasSeedRng(u16 seed);
static bool8 IsWildLevelAllowedByRepel(u8 level);
static void ApplyFluteEncounterRateMod(u32 *encRate);
static void ApplyCleanseTagEncounterRateMod(u32 *encRate);
static bool8 TryGetAbilityInfluencedWildMonIndex(const struct WildPokemon *wildMon, u8 type, u8 ability, u8 *monIndex);
static bool8 IsAbilityAllowingEncounter(u8 level);
2018-02-05 22:27:29 +01:00
// EWRAM vars
EWRAM_DATA static u8 sWildEncountersDisabled = 0;
EWRAM_DATA static u32 sFeebasRngValue = 0;
// const rom data
const struct WildPokemon gRoute101_LandMons[] =
{
{2, 2, SPECIES_WURMPLE},
{2, 2, SPECIES_POOCHYENA},
{2, 2, SPECIES_WURMPLE},
{3, 3, SPECIES_WURMPLE},
{3, 3, SPECIES_POOCHYENA},
{3, 3, SPECIES_POOCHYENA},
{3, 3, SPECIES_WURMPLE},
{3, 3, SPECIES_POOCHYENA},
{2, 2, SPECIES_ZIGZAGOON},
{2, 2, SPECIES_ZIGZAGOON},
{3, 3, SPECIES_ZIGZAGOON},
{3, 3, SPECIES_ZIGZAGOON},
};
const struct WildPokemonInfo gRoute101_LandMonsInfo = {20, gRoute101_LandMons};
const struct WildPokemon gRoute102_LandMons[] =
{
{3, 3, SPECIES_POOCHYENA},
{3, 3, SPECIES_WURMPLE},
{4, 4, SPECIES_POOCHYENA},
{4, 4, SPECIES_WURMPLE},
{3, 3, SPECIES_LOTAD},
{4, 4, SPECIES_LOTAD},
{3, 3, SPECIES_ZIGZAGOON},
{3, 3, SPECIES_ZIGZAGOON},
{4, 4, SPECIES_ZIGZAGOON},
{4, 4, SPECIES_RALTS},
{4, 4, SPECIES_ZIGZAGOON},
{3, 3, SPECIES_SEEDOT},
};
const struct WildPokemonInfo gRoute102_LandMonsInfo = {20, gRoute102_LandMons};
const struct WildPokemon gRoute102_WaterMons[] =
{
{20, 30, SPECIES_MARILL},
{10, 20, SPECIES_MARILL},
{30, 35, SPECIES_MARILL},
{5, 10, SPECIES_MARILL},
{20, 30, SPECIES_GOLDEEN},
};
const struct WildPokemonInfo gRoute102_WaterMonsInfo = {4, gRoute102_WaterMons};
const struct WildPokemon gRoute102_FishingMons[] =
{
{5, 10, SPECIES_MAGIKARP},
{5, 10, SPECIES_GOLDEEN},
{10, 30, SPECIES_MAGIKARP},
{10, 30, SPECIES_GOLDEEN},
{10, 30, SPECIES_CORPHISH},
{25, 30, SPECIES_CORPHISH},
{30, 35, SPECIES_CORPHISH},
{20, 25, SPECIES_CORPHISH},
{35, 40, SPECIES_CORPHISH},
{40, 45, SPECIES_CORPHISH},
};
const struct WildPokemonInfo gRoute102_FishingMonsInfo = {30, gRoute102_FishingMons};
const struct WildPokemon gRoute103_LandMons[] =
{
{2, 2, SPECIES_POOCHYENA},
{3, 3, SPECIES_POOCHYENA},
{3, 3, SPECIES_POOCHYENA},
{4, 4, SPECIES_POOCHYENA},
{2, 2, SPECIES_WINGULL},
{3, 3, SPECIES_ZIGZAGOON},
{3, 3, SPECIES_ZIGZAGOON},
{4, 4, SPECIES_ZIGZAGOON},
{3, 3, SPECIES_WINGULL},
{3, 3, SPECIES_WINGULL},
{2, 2, SPECIES_WINGULL},
{4, 4, SPECIES_WINGULL},
};
const struct WildPokemonInfo gRoute103_LandMonsInfo = {20, gRoute103_LandMons};
const struct WildPokemon gRoute103_WaterMons[] =
{
{5, 35, SPECIES_TENTACOOL},
{10, 30, SPECIES_WINGULL},
{15, 25, SPECIES_WINGULL},
{25, 30, SPECIES_PELIPPER},
{25, 30, SPECIES_PELIPPER},
};
const struct WildPokemonInfo gRoute103_WaterMonsInfo = {4, gRoute103_WaterMons};
const struct WildPokemon gRoute103_FishingMons[] =
{
{5, 10, SPECIES_MAGIKARP},
{5, 10, SPECIES_TENTACOOL},
{10, 30, SPECIES_MAGIKARP},
{10, 30, SPECIES_TENTACOOL},
{10, 30, SPECIES_WAILMER},
{30, 35, SPECIES_SHARPEDO},
{30, 35, SPECIES_WAILMER},
{25, 30, SPECIES_WAILMER},
{35, 40, SPECIES_WAILMER},
{40, 45, SPECIES_WAILMER},
};
const struct WildPokemonInfo gRoute103_FishingMonsInfo = {30, gRoute103_FishingMons};
const struct WildPokemon gRoute104_LandMons[] =
{
{4, 4, SPECIES_POOCHYENA},
{4, 4, SPECIES_WURMPLE},
{5, 5, SPECIES_POOCHYENA},
{5, 5, SPECIES_MARILL},
{4, 4, SPECIES_MARILL},
{5, 5, SPECIES_POOCHYENA},
{4, 4, SPECIES_TAILLOW},
{5, 5, SPECIES_TAILLOW},
{4, 4, SPECIES_WINGULL},
{4, 4, SPECIES_WINGULL},
{3, 3, SPECIES_WINGULL},
{5, 5, SPECIES_WINGULL},
};
const struct WildPokemonInfo gRoute104_LandMonsInfo = {20, gRoute104_LandMons};
const struct WildPokemon gRoute104_WaterMons[] =
{
{10, 30, SPECIES_WINGULL},
{15, 25, SPECIES_WINGULL},
{15, 25, SPECIES_WINGULL},
{25, 30, SPECIES_PELIPPER},
{25, 30, SPECIES_PELIPPER},
};
const struct WildPokemonInfo gRoute104_WaterMonsInfo = {4, gRoute104_WaterMons};
const struct WildPokemon gRoute104_FishingMons[] =
{
{5, 10, SPECIES_MAGIKARP},
{5, 10, SPECIES_MAGIKARP},
{10, 30, SPECIES_MAGIKARP},
{10, 30, SPECIES_MAGIKARP},
{10, 30, SPECIES_MAGIKARP},
{25, 30, SPECIES_MAGIKARP},
{30, 35, SPECIES_MAGIKARP},
{20, 25, SPECIES_MAGIKARP},
{35, 40, SPECIES_MAGIKARP},
{40, 45, SPECIES_MAGIKARP},
};
const struct WildPokemonInfo gRoute104_FishingMonsInfo = {30, gRoute104_FishingMons};
const struct WildPokemon gRoute105_WaterMons[] =
{
{5, 35, SPECIES_TENTACOOL},
{10, 30, SPECIES_WINGULL},
{15, 25, SPECIES_WINGULL},
{25, 30, SPECIES_PELIPPER},
{25, 30, SPECIES_PELIPPER},
};
const struct WildPokemonInfo gRoute105_WaterMonsInfo = {4, gRoute105_WaterMons};
const struct WildPokemon gRoute105_FishingMons[] =
{
{5, 10, SPECIES_MAGIKARP},
{5, 10, SPECIES_TENTACOOL},
{10, 30, SPECIES_MAGIKARP},
{10, 30, SPECIES_TENTACOOL},
{10, 30, SPECIES_WAILMER},
{25, 30, SPECIES_WAILMER},
{30, 35, SPECIES_WAILMER},
{20, 25, SPECIES_WAILMER},
{35, 40, SPECIES_WAILMER},
{40, 45, SPECIES_WAILMER},
};
const struct WildPokemonInfo gRoute105_FishingMonsInfo = {30, gRoute105_FishingMons};
const struct WildPokemon gRoute110_LandMons[] =
{
{12, 12, SPECIES_POOCHYENA},
{12, 12, SPECIES_ELECTRIKE},
{12, 12, SPECIES_GULPIN},
{13, 13, SPECIES_ELECTRIKE},
{13, 13, SPECIES_MINUN},
{13, 13, SPECIES_ODDISH},
{13, 13, SPECIES_MINUN},
{13, 13, SPECIES_GULPIN},
{12, 12, SPECIES_WINGULL},
{12, 12, SPECIES_WINGULL},
{12, 12, SPECIES_PLUSLE},
{13, 13, SPECIES_PLUSLE},
};
const struct WildPokemonInfo gRoute110_LandMonsInfo = {20, gRoute110_LandMons};
const struct WildPokemon gRoute110_WaterMons[] =
{
{5, 35, SPECIES_TENTACOOL},
{10, 30, SPECIES_WINGULL},
{15, 25, SPECIES_WINGULL},
{25, 30, SPECIES_PELIPPER},
{25, 30, SPECIES_PELIPPER},
};
const struct WildPokemonInfo gRoute110_WaterMonsInfo = {4, gRoute110_WaterMons};
const struct WildPokemon gRoute110_FishingMons[] =
{
{5, 10, SPECIES_MAGIKARP},
{5, 10, SPECIES_TENTACOOL},
{10, 30, SPECIES_MAGIKARP},
{10, 30, SPECIES_TENTACOOL},
{10, 30, SPECIES_WAILMER},
{25, 30, SPECIES_WAILMER},
{30, 35, SPECIES_WAILMER},
{20, 25, SPECIES_WAILMER},
{35, 40, SPECIES_WAILMER},
{40, 45, SPECIES_WAILMER},
};
const struct WildPokemonInfo gRoute110_FishingMonsInfo = {30, gRoute110_FishingMons};
const struct WildPokemon gRoute111_LandMons[] =
{
{20, 20, SPECIES_SANDSHREW},
{20, 20, SPECIES_TRAPINCH},
{21, 21, SPECIES_SANDSHREW},
{21, 21, SPECIES_TRAPINCH},
{19, 19, SPECIES_BALTOY},
{21, 21, SPECIES_BALTOY},
{19, 19, SPECIES_SANDSHREW},
{19, 19, SPECIES_TRAPINCH},
{20, 20, SPECIES_BALTOY},
{20, 20, SPECIES_CACNEA},
{22, 22, SPECIES_CACNEA},
{22, 22, SPECIES_CACNEA},
};
const struct WildPokemonInfo gRoute111_LandMonsInfo = {10, gRoute111_LandMons};
const struct WildPokemon gRoute111_WaterMons[] =
{
{20, 30, SPECIES_MARILL},
{10, 20, SPECIES_MARILL},
{30, 35, SPECIES_MARILL},
{5, 10, SPECIES_MARILL},
{20, 30, SPECIES_GOLDEEN},
};
const struct WildPokemonInfo gRoute111_WaterMonsInfo = {4, gRoute111_WaterMons};
const struct WildPokemon gRoute111_RockSmashMons[] =
{
{10, 15, SPECIES_GEODUDE},
{5, 10, SPECIES_GEODUDE},
{15, 20, SPECIES_GEODUDE},
{15, 20, SPECIES_GEODUDE},
{15, 20, SPECIES_GEODUDE},
};
const struct WildPokemonInfo gRoute111_RockSmashMonsInfo = {20, gRoute111_RockSmashMons};
const struct WildPokemon gRoute111_FishingMons[] =
{
{5, 10, SPECIES_MAGIKARP},
{5, 10, SPECIES_GOLDEEN},
{10, 30, SPECIES_MAGIKARP},
{10, 30, SPECIES_GOLDEEN},
{10, 30, SPECIES_BARBOACH},
{25, 30, SPECIES_BARBOACH},
{30, 35, SPECIES_BARBOACH},
{20, 25, SPECIES_BARBOACH},
{35, 40, SPECIES_BARBOACH},
{40, 45, SPECIES_BARBOACH},
};
const struct WildPokemonInfo gRoute111_FishingMonsInfo = {30, gRoute111_FishingMons};
const struct WildPokemon gRoute112_LandMons[] =
{
{15, 15, SPECIES_NUMEL},
{15, 15, SPECIES_NUMEL},
{15, 15, SPECIES_MARILL},
{14, 14, SPECIES_NUMEL},
{14, 14, SPECIES_NUMEL},
{14, 14, SPECIES_MARILL},
{16, 16, SPECIES_NUMEL},
{16, 16, SPECIES_MARILL},
{16, 16, SPECIES_NUMEL},
{16, 16, SPECIES_NUMEL},
{16, 16, SPECIES_NUMEL},
{16, 16, SPECIES_NUMEL},
};
const struct WildPokemonInfo gRoute112_LandMonsInfo = {20, gRoute112_LandMons};
const struct WildPokemon gRoute113_LandMons[] =
{
{15, 15, SPECIES_SPINDA},
{15, 15, SPECIES_SPINDA},
{15, 15, SPECIES_SLUGMA},
{14, 14, SPECIES_SPINDA},
{14, 14, SPECIES_SPINDA},
{14, 14, SPECIES_SLUGMA},
{16, 16, SPECIES_SPINDA},
{16, 16, SPECIES_SLUGMA},
{16, 16, SPECIES_SPINDA},
{16, 16, SPECIES_SKARMORY},
{16, 16, SPECIES_SPINDA},
{16, 16, SPECIES_SKARMORY},
};
const struct WildPokemonInfo gRoute113_LandMonsInfo = {20, gRoute113_LandMons};
const struct WildPokemon gRoute114_LandMons[] =
{
{16, 16, SPECIES_SWABLU},
{16, 16, SPECIES_LOTAD},
{17, 17, SPECIES_SWABLU},
{15, 15, SPECIES_SWABLU},
{15, 15, SPECIES_LOTAD},
{16, 16, SPECIES_LOMBRE},
{16, 16, SPECIES_LOMBRE},
{18, 18, SPECIES_LOMBRE},
{17, 17, SPECIES_SEVIPER},
{15, 15, SPECIES_SEVIPER},
{17, 17, SPECIES_SEVIPER},
{15, 15, SPECIES_NUZLEAF},
};
const struct WildPokemonInfo gRoute114_LandMonsInfo = {20, gRoute114_LandMons};
const struct WildPokemon gRoute114_WaterMons[] =
{
{20, 30, SPECIES_MARILL},
{10, 20, SPECIES_MARILL},
{30, 35, SPECIES_MARILL},
{5, 10, SPECIES_MARILL},
{20, 30, SPECIES_GOLDEEN},
};
const struct WildPokemonInfo gRoute114_WaterMonsInfo = {4, gRoute114_WaterMons};
const struct WildPokemon gRoute114_RockSmashMons[] =
{
{10, 15, SPECIES_GEODUDE},
{5, 10, SPECIES_GEODUDE},
{15, 20, SPECIES_GEODUDE},
{15, 20, SPECIES_GEODUDE},
{15, 20, SPECIES_GEODUDE},
};
const struct WildPokemonInfo gRoute114_RockSmashMonsInfo = {20, gRoute114_RockSmashMons};
const struct WildPokemon gRoute114_FishingMons[] =
{
{5, 10, SPECIES_MAGIKARP},
{5, 10, SPECIES_GOLDEEN},
{10, 30, SPECIES_MAGIKARP},
{10, 30, SPECIES_GOLDEEN},
{10, 30, SPECIES_BARBOACH},
{25, 30, SPECIES_BARBOACH},
{30, 35, SPECIES_BARBOACH},
{20, 25, SPECIES_BARBOACH},
{35, 40, SPECIES_BARBOACH},
{40, 45, SPECIES_BARBOACH},
};
const struct WildPokemonInfo gRoute114_FishingMonsInfo = {30, gRoute114_FishingMons};
const struct WildPokemon gRoute116_LandMons[] =
{
{6, 6, SPECIES_POOCHYENA},
{6, 6, SPECIES_WHISMUR},
{6, 6, SPECIES_NINCADA},
{7, 7, SPECIES_ABRA},
{7, 7, SPECIES_NINCADA},
{6, 6, SPECIES_TAILLOW},
{7, 7, SPECIES_TAILLOW},
{8, 8, SPECIES_TAILLOW},
{7, 7, SPECIES_POOCHYENA},
{8, 8, SPECIES_POOCHYENA},
{7, 7, SPECIES_SKITTY},
{8, 8, SPECIES_SKITTY},
};
const struct WildPokemonInfo gRoute116_LandMonsInfo = {20, gRoute116_LandMons};
const struct WildPokemon gRoute117_LandMons[] =
{
{13, 13, SPECIES_POOCHYENA},
{13, 13, SPECIES_ODDISH},
{14, 14, SPECIES_POOCHYENA},
{14, 14, SPECIES_ODDISH},
{13, 13, SPECIES_MARILL},
{13, 13, SPECIES_ODDISH},
{13, 13, SPECIES_ILLUMISE},
{13, 13, SPECIES_ILLUMISE},
{14, 14, SPECIES_ILLUMISE},
{14, 14, SPECIES_ILLUMISE},
{13, 13, SPECIES_VOLBEAT},
{13, 13, SPECIES_SEEDOT},
};
const struct WildPokemonInfo gRoute117_LandMonsInfo = {20, gRoute117_LandMons};
const struct WildPokemon gRoute117_WaterMons[] =
{
{20, 30, SPECIES_MARILL},
{10, 20, SPECIES_MARILL},
{30, 35, SPECIES_MARILL},
{5, 10, SPECIES_MARILL},
{20, 30, SPECIES_GOLDEEN},
};
const struct WildPokemonInfo gRoute117_WaterMonsInfo = {4, gRoute117_WaterMons};
const struct WildPokemon gRoute117_FishingMons[] =
{
{5, 10, SPECIES_MAGIKARP},
{5, 10, SPECIES_GOLDEEN},
{10, 30, SPECIES_MAGIKARP},
{10, 30, SPECIES_GOLDEEN},
{10, 30, SPECIES_CORPHISH},
{25, 30, SPECIES_CORPHISH},
{30, 35, SPECIES_CORPHISH},
{20, 25, SPECIES_CORPHISH},
{35, 40, SPECIES_CORPHISH},
{40, 45, SPECIES_CORPHISH},
};
const struct WildPokemonInfo gRoute117_FishingMonsInfo = {30, gRoute117_FishingMons};
const struct WildPokemon gRoute118_LandMons[] =
{
{24, 24, SPECIES_ZIGZAGOON},
{24, 24, SPECIES_ELECTRIKE},
{26, 26, SPECIES_ZIGZAGOON},
{26, 26, SPECIES_ELECTRIKE},
{26, 26, SPECIES_LINOONE},
{26, 26, SPECIES_MANECTRIC},
{25, 25, SPECIES_WINGULL},
{25, 25, SPECIES_WINGULL},
{26, 26, SPECIES_WINGULL},
{26, 26, SPECIES_WINGULL},
{27, 27, SPECIES_WINGULL},
{25, 25, SPECIES_KECLEON},
};
const struct WildPokemonInfo gRoute118_LandMonsInfo = {20, gRoute118_LandMons};
const struct WildPokemon gRoute118_WaterMons[] =
{
{5, 35, SPECIES_TENTACOOL},
{10, 30, SPECIES_WINGULL},
{15, 25, SPECIES_WINGULL},
{25, 30, SPECIES_PELIPPER},
{25, 30, SPECIES_PELIPPER},
};
const struct WildPokemonInfo gRoute118_WaterMonsInfo = {4, gRoute118_WaterMons};
const struct WildPokemon gRoute118_FishingMons[] =
{
{5, 10, SPECIES_MAGIKARP},
{5, 10, SPECIES_TENTACOOL},
{10, 30, SPECIES_MAGIKARP},
{10, 30, SPECIES_TENTACOOL},
{10, 30, SPECIES_CARVANHA},
{30, 35, SPECIES_SHARPEDO},
{30, 35, SPECIES_CARVANHA},
{20, 25, SPECIES_CARVANHA},
{35, 40, SPECIES_CARVANHA},
{40, 45, SPECIES_CARVANHA},
};
const struct WildPokemonInfo gRoute118_FishingMonsInfo = {30, gRoute118_FishingMons};
const struct WildPokemon gRoute124_WaterMons[] =
{
{5, 35, SPECIES_TENTACOOL},
{10, 30, SPECIES_WINGULL},
{15, 25, SPECIES_WINGULL},
{25, 30, SPECIES_PELIPPER},
{25, 30, SPECIES_PELIPPER},
};
const struct WildPokemonInfo gRoute124_WaterMonsInfo = {4, gRoute124_WaterMons};
const struct WildPokemon gRoute124_FishingMons[] =
{
{5, 10, SPECIES_MAGIKARP},
{5, 10, SPECIES_TENTACOOL},
{10, 30, SPECIES_MAGIKARP},
{10, 30, SPECIES_TENTACOOL},
{10, 30, SPECIES_WAILMER},
{30, 35, SPECIES_SHARPEDO},
{30, 35, SPECIES_WAILMER},
{25, 30, SPECIES_WAILMER},
{35, 40, SPECIES_WAILMER},
{40, 45, SPECIES_WAILMER},
};
const struct WildPokemonInfo gRoute124_FishingMonsInfo = {30, gRoute124_FishingMons};
const struct WildPokemon gPetalburgWoods_LandMons[] =
{
{5, 5, SPECIES_POOCHYENA},
{5, 5, SPECIES_WURMPLE},
{5, 5, SPECIES_SHROOMISH},
{6, 6, SPECIES_POOCHYENA},
{5, 5, SPECIES_SILCOON},
{5, 5, SPECIES_CASCOON},
{6, 6, SPECIES_WURMPLE},
{6, 6, SPECIES_SHROOMISH},
{5, 5, SPECIES_TAILLOW},
{5, 5, SPECIES_SLAKOTH},
{6, 6, SPECIES_TAILLOW},
{6, 6, SPECIES_SLAKOTH},
};
const struct WildPokemonInfo gPetalburgWoods_LandMonsInfo = {20, gPetalburgWoods_LandMons};
const struct WildPokemon gRusturfTunnel_LandMons[] =
{
{6, 6, SPECIES_WHISMUR},
{7, 7, SPECIES_WHISMUR},
{6, 6, SPECIES_WHISMUR},
{6, 6, SPECIES_WHISMUR},
{7, 7, SPECIES_WHISMUR},
{7, 7, SPECIES_WHISMUR},
{5, 5, SPECIES_WHISMUR},
{8, 8, SPECIES_WHISMUR},
{5, 5, SPECIES_WHISMUR},
{8, 8, SPECIES_WHISMUR},
{5, 5, SPECIES_WHISMUR},
{8, 8, SPECIES_WHISMUR},
};
const struct WildPokemonInfo gRusturfTunnel_LandMonsInfo = {10, gRusturfTunnel_LandMons};
const struct WildPokemon gGraniteCave_1F_LandMons[] =
{
{7, 7, SPECIES_ZUBAT},
{8, 8, SPECIES_MAKUHITA},
{7, 7, SPECIES_MAKUHITA},
{8, 8, SPECIES_ZUBAT},
{9, 9, SPECIES_MAKUHITA},
{8, 8, SPECIES_ABRA},
{10, 10, SPECIES_MAKUHITA},
{6, 6, SPECIES_MAKUHITA},
{7, 7, SPECIES_GEODUDE},
{8, 8, SPECIES_GEODUDE},
{6, 6, SPECIES_GEODUDE},
{9, 9, SPECIES_GEODUDE},
};
const struct WildPokemonInfo gGraniteCave_1F_LandMonsInfo = {10, gGraniteCave_1F_LandMons};
const struct WildPokemon gGraniteCave_B1F_LandMons[] =
{
{9, 9, SPECIES_ZUBAT},
{10, 10, SPECIES_ARON},
{9, 9, SPECIES_ARON},
{11, 11, SPECIES_ARON},
{10, 10, SPECIES_ZUBAT},
{9, 9, SPECIES_ABRA},
{10, 10, SPECIES_MAKUHITA},
{11, 11, SPECIES_MAKUHITA},
{10, 10, SPECIES_SABLEYE},
{10, 10, SPECIES_SABLEYE},
{9, 9, SPECIES_SABLEYE},
{11, 11, SPECIES_SABLEYE},
};
const struct WildPokemonInfo gGraniteCave_B1F_LandMonsInfo = {10, gGraniteCave_B1F_LandMons};
const struct WildPokemon gMtPyre_1F_LandMons[] =
{
{27, 27, SPECIES_SHUPPET},
{28, 28, SPECIES_SHUPPET},
{26, 26, SPECIES_SHUPPET},
{25, 25, SPECIES_SHUPPET},
{29, 29, SPECIES_SHUPPET},
{24, 24, SPECIES_SHUPPET},
{23, 23, SPECIES_SHUPPET},
{22, 22, SPECIES_SHUPPET},
{29, 29, SPECIES_SHUPPET},
{24, 24, SPECIES_SHUPPET},
{29, 29, SPECIES_SHUPPET},
{24, 24, SPECIES_SHUPPET},
};
const struct WildPokemonInfo gMtPyre_1F_LandMonsInfo = {10, gMtPyre_1F_LandMons};
const struct WildPokemon gVictoryRoad_1F_LandMons[] =
{
{40, 40, SPECIES_GOLBAT},
{40, 40, SPECIES_HARIYAMA},
{40, 40, SPECIES_LAIRON},
{40, 40, SPECIES_LOUDRED},
{36, 36, SPECIES_ZUBAT},
{36, 36, SPECIES_MAKUHITA},
{38, 38, SPECIES_GOLBAT},
{38, 38, SPECIES_HARIYAMA},
{36, 36, SPECIES_ARON},
{36, 36, SPECIES_WHISMUR},
{36, 36, SPECIES_ARON},
{36, 36, SPECIES_WHISMUR},
};
const struct WildPokemonInfo gVictoryRoad_1F_LandMonsInfo = {10, gVictoryRoad_1F_LandMons};
const struct WildPokemon gSafariZone_South_LandMons[] =
{
{25, 25, SPECIES_ODDISH},
{27, 27, SPECIES_ODDISH},
{25, 25, SPECIES_GIRAFARIG},
{27, 27, SPECIES_GIRAFARIG},
{25, 25, SPECIES_NATU},
{25, 25, SPECIES_DODUO},
{25, 25, SPECIES_GLOOM},
{27, 27, SPECIES_WOBBUFFET},
{25, 25, SPECIES_PIKACHU},
{27, 27, SPECIES_WOBBUFFET},
{27, 27, SPECIES_PIKACHU},
{29, 29, SPECIES_WOBBUFFET},
};
const struct WildPokemonInfo gSafariZone_South_LandMonsInfo = {25, gSafariZone_South_LandMons};
const struct WildPokemon gUnderwater2_WaterMons[] =
{
{20, 30, SPECIES_CLAMPERL},
{20, 30, SPECIES_CHINCHOU},
{30, 35, SPECIES_CLAMPERL},
{30, 35, SPECIES_RELICANTH},
{30, 35, SPECIES_RELICANTH},
};
const struct WildPokemonInfo gUnderwater2_WaterMonsInfo = {4, gUnderwater2_WaterMons};
const struct WildPokemon gAbandonedShip_Rooms_B1F_WaterMons[] =
{
{5, 35, SPECIES_TENTACOOL},
{5, 35, SPECIES_TENTACOOL},
{5, 35, SPECIES_TENTACOOL},
{5, 35, SPECIES_TENTACOOL},
{30, 35, SPECIES_TENTACRUEL},
};
const struct WildPokemonInfo gAbandonedShip_Rooms_B1F_WaterMonsInfo = {4, gAbandonedShip_Rooms_B1F_WaterMons};
const struct WildPokemon gAbandonedShip_Rooms_B1F_FishingMons[] =
{
{5, 10, SPECIES_MAGIKARP},
{5, 10, SPECIES_TENTACOOL},
{10, 30, SPECIES_MAGIKARP},
{10, 30, SPECIES_TENTACOOL},
{10, 30, SPECIES_TENTACOOL},
{25, 30, SPECIES_TENTACOOL},
{30, 35, SPECIES_TENTACOOL},
{30, 35, SPECIES_TENTACRUEL},
{25, 30, SPECIES_TENTACRUEL},
{20, 25, SPECIES_TENTACRUEL},
};
const struct WildPokemonInfo gAbandonedShip_Rooms_B1F_FishingMonsInfo = {20, gAbandonedShip_Rooms_B1F_FishingMons};
const struct WildPokemon gGraniteCave_B2F_LandMons[] =
{
{10, 10, SPECIES_ZUBAT},
{11, 11, SPECIES_ARON},
{10, 10, SPECIES_ARON},
{11, 11, SPECIES_ZUBAT},
{12, 12, SPECIES_ARON},
{10, 10, SPECIES_ABRA},
{10, 10, SPECIES_SABLEYE},
{11, 11, SPECIES_SABLEYE},
{12, 12, SPECIES_SABLEYE},
{10, 10, SPECIES_SABLEYE},
{12, 12, SPECIES_SABLEYE},
{10, 10, SPECIES_SABLEYE},
};
const struct WildPokemonInfo gGraniteCave_B2F_LandMonsInfo = {10, gGraniteCave_B2F_LandMons};
const struct WildPokemon gGraniteCave_B2F_RockSmashMons[] =
{
{10, 15, SPECIES_GEODUDE},
{10, 20, SPECIES_NOSEPASS},
{5, 10, SPECIES_GEODUDE},
{15, 20, SPECIES_GEODUDE},
{15, 20, SPECIES_GEODUDE},
};
const struct WildPokemonInfo gGraniteCave_B2F_RockSmashMonsInfo = {20, gGraniteCave_B2F_RockSmashMons};
const struct WildPokemon gFieryPath_LandMons[] =
{
{15, 15, SPECIES_NUMEL},
{15, 15, SPECIES_KOFFING},
{16, 16, SPECIES_NUMEL},
{15, 15, SPECIES_MACHOP},
{15, 15, SPECIES_TORKOAL},
{15, 15, SPECIES_SLUGMA},
{16, 16, SPECIES_KOFFING},
{16, 16, SPECIES_MACHOP},
{14, 14, SPECIES_TORKOAL},
{16, 16, SPECIES_TORKOAL},
{14, 14, SPECIES_GRIMER},
{14, 14, SPECIES_GRIMER},
};
const struct WildPokemonInfo gFieryPath_LandMonsInfo = {10, gFieryPath_LandMons};
const struct WildPokemon gMeteorFalls_B1F_2R_LandMons[] =
{
{33, 33, SPECIES_GOLBAT},
{35, 35, SPECIES_GOLBAT},
{30, 30, SPECIES_BAGON},
{35, 35, SPECIES_SOLROCK},
{35, 35, SPECIES_BAGON},
{37, 37, SPECIES_SOLROCK},
{25, 25, SPECIES_BAGON},
{39, 39, SPECIES_SOLROCK},
{38, 38, SPECIES_GOLBAT},
{40, 40, SPECIES_GOLBAT},
{38, 38, SPECIES_GOLBAT},
{40, 40, SPECIES_GOLBAT},
};
const struct WildPokemonInfo gMeteorFalls_B1F_2R_LandMonsInfo = {10, gMeteorFalls_B1F_2R_LandMons};
const struct WildPokemon gMeteorFalls_B1F_2R_WaterMons[] =
{
{30, 35, SPECIES_GOLBAT},
{30, 35, SPECIES_GOLBAT},
{25, 35, SPECIES_SOLROCK},
{15, 25, SPECIES_SOLROCK},
{5, 15, SPECIES_SOLROCK},
};
const struct WildPokemonInfo gMeteorFalls_B1F_2R_WaterMonsInfo = {4, gMeteorFalls_B1F_2R_WaterMons};
const struct WildPokemon gMeteorFalls_B1F_2R_FishingMons[] =
{
{5, 10, SPECIES_MAGIKARP},
{5, 10, SPECIES_GOLDEEN},
{10, 30, SPECIES_MAGIKARP},
{10, 30, SPECIES_GOLDEEN},
{10, 30, SPECIES_BARBOACH},
{25, 30, SPECIES_BARBOACH},
{30, 35, SPECIES_BARBOACH},
{30, 35, SPECIES_WHISCASH},
{35, 40, SPECIES_WHISCASH},
{40, 45, SPECIES_WHISCASH},
};
const struct WildPokemonInfo gMeteorFalls_B1F_2R_FishingMonsInfo = {30, gMeteorFalls_B1F_2R_FishingMons};
const struct WildPokemon gJaggedPass_LandMons[] =
{
{21, 21, SPECIES_NUMEL},
{21, 21, SPECIES_NUMEL},
{21, 21, SPECIES_MACHOP},
{20, 20, SPECIES_NUMEL},
{20, 20, SPECIES_SPOINK},
{20, 20, SPECIES_MACHOP},
{21, 21, SPECIES_SPOINK},
{22, 22, SPECIES_MACHOP},
{22, 22, SPECIES_NUMEL},
{22, 22, SPECIES_SPOINK},
{22, 22, SPECIES_NUMEL},
{22, 22, SPECIES_SPOINK},
};
const struct WildPokemonInfo gJaggedPass_LandMonsInfo = {20, gJaggedPass_LandMons};
const struct WildPokemon gRoute106_WaterMons[] =
{
{5, 35, SPECIES_TENTACOOL},
{10, 30, SPECIES_WINGULL},
{15, 25, SPECIES_WINGULL},
{25, 30, SPECIES_PELIPPER},
{25, 30, SPECIES_PELIPPER},
};
const struct WildPokemonInfo gRoute106_WaterMonsInfo = {4, gRoute106_WaterMons};
const struct WildPokemon gRoute106_FishingMons[] =
{
{5, 10, SPECIES_MAGIKARP},
{5, 10, SPECIES_TENTACOOL},
{10, 30, SPECIES_MAGIKARP},
{10, 30, SPECIES_TENTACOOL},
{10, 30, SPECIES_WAILMER},
{25, 30, SPECIES_WAILMER},
{30, 35, SPECIES_WAILMER},
{20, 25, SPECIES_WAILMER},
{35, 40, SPECIES_WAILMER},
{40, 45, SPECIES_WAILMER},
};
const struct WildPokemonInfo gRoute106_FishingMonsInfo = {30, gRoute106_FishingMons};
const struct WildPokemon gRoute107_WaterMons[] =
{
{5, 35, SPECIES_TENTACOOL},
{10, 30, SPECIES_WINGULL},
{15, 25, SPECIES_WINGULL},
{25, 30, SPECIES_PELIPPER},
{25, 30, SPECIES_PELIPPER},
};
const struct WildPokemonInfo gRoute107_WaterMonsInfo = {4, gRoute107_WaterMons};
const struct WildPokemon gRoute107_FishingMons[] =
{
{5, 10, SPECIES_MAGIKARP},
{5, 10, SPECIES_TENTACOOL},
{10, 30, SPECIES_MAGIKARP},
{10, 30, SPECIES_TENTACOOL},
{10, 30, SPECIES_WAILMER},
{25, 30, SPECIES_WAILMER},
{30, 35, SPECIES_WAILMER},
{20, 25, SPECIES_WAILMER},
{35, 40, SPECIES_WAILMER},
{40, 45, SPECIES_WAILMER},
};
const struct WildPokemonInfo gRoute107_FishingMonsInfo = {30, gRoute107_FishingMons};
const struct WildPokemon gRoute108_WaterMons[] =
{
{5, 35, SPECIES_TENTACOOL},
{10, 30, SPECIES_WINGULL},
{15, 25, SPECIES_WINGULL},
{25, 30, SPECIES_PELIPPER},
{25, 30, SPECIES_PELIPPER},
};
const struct WildPokemonInfo gRoute108_WaterMonsInfo = {4, gRoute108_WaterMons};
const struct WildPokemon gRoute108_FishingMons[] =
{
{5, 10, SPECIES_MAGIKARP},
{5, 10, SPECIES_TENTACOOL},
{10, 30, SPECIES_MAGIKARP},
{10, 30, SPECIES_TENTACOOL},
{10, 30, SPECIES_WAILMER},
{25, 30, SPECIES_WAILMER},
{30, 35, SPECIES_WAILMER},
{20, 25, SPECIES_WAILMER},
{35, 40, SPECIES_WAILMER},
{40, 45, SPECIES_WAILMER},
};
const struct WildPokemonInfo gRoute108_FishingMonsInfo = {30, gRoute108_FishingMons};
const struct WildPokemon gRoute109_WaterMons[] =
{
{5, 35, SPECIES_TENTACOOL},
{10, 30, SPECIES_WINGULL},
{15, 25, SPECIES_WINGULL},
{25, 30, SPECIES_PELIPPER},
{25, 30, SPECIES_PELIPPER},
};
const struct WildPokemonInfo gRoute109_WaterMonsInfo = {4, gRoute109_WaterMons};
const struct WildPokemon gRoute109_FishingMons[] =
{
{5, 10, SPECIES_MAGIKARP},
{5, 10, SPECIES_TENTACOOL},
{10, 30, SPECIES_MAGIKARP},
{10, 30, SPECIES_TENTACOOL},
{10, 30, SPECIES_WAILMER},
{25, 30, SPECIES_WAILMER},
{30, 35, SPECIES_WAILMER},
{20, 25, SPECIES_WAILMER},
{35, 40, SPECIES_WAILMER},
{40, 45, SPECIES_WAILMER},
};
const struct WildPokemonInfo gRoute109_FishingMonsInfo = {30, gRoute109_FishingMons};
const struct WildPokemon gRoute115_LandMons[] =
{
{23, 23, SPECIES_SWABLU},
{23, 23, SPECIES_TAILLOW},
{25, 25, SPECIES_SWABLU},
{24, 24, SPECIES_TAILLOW},
{25, 25, SPECIES_TAILLOW},
{25, 25, SPECIES_SWELLOW},
{24, 24, SPECIES_JIGGLYPUFF},
{25, 25, SPECIES_JIGGLYPUFF},
{24, 24, SPECIES_WINGULL},
{24, 24, SPECIES_WINGULL},
{26, 26, SPECIES_WINGULL},
{25, 25, SPECIES_WINGULL},
};
const struct WildPokemonInfo gRoute115_LandMonsInfo = {20, gRoute115_LandMons};
const struct WildPokemon gRoute115_WaterMons[] =
{
{5, 35, SPECIES_TENTACOOL},
{10, 30, SPECIES_WINGULL},
{15, 25, SPECIES_WINGULL},
{25, 30, SPECIES_PELIPPER},
{25, 30, SPECIES_PELIPPER},
};
const struct WildPokemonInfo gRoute115_WaterMonsInfo = {4, gRoute115_WaterMons};
const struct WildPokemon gRoute115_FishingMons[] =
{
{5, 10, SPECIES_MAGIKARP},
{5, 10, SPECIES_TENTACOOL},
{10, 30, SPECIES_MAGIKARP},
{10, 30, SPECIES_TENTACOOL},
{10, 30, SPECIES_WAILMER},
{25, 30, SPECIES_WAILMER},
{30, 35, SPECIES_WAILMER},
{20, 25, SPECIES_WAILMER},
{35, 40, SPECIES_WAILMER},
{40, 45, SPECIES_WAILMER},
};
const struct WildPokemonInfo gRoute115_FishingMonsInfo = {30, gRoute115_FishingMons};
const struct WildPokemon gNewMauville_Inside_LandMons[] =
{
{24, 24, SPECIES_VOLTORB},
{24, 24, SPECIES_MAGNEMITE},
{25, 25, SPECIES_VOLTORB},
{25, 25, SPECIES_MAGNEMITE},
{23, 23, SPECIES_VOLTORB},
{23, 23, SPECIES_MAGNEMITE},
{26, 26, SPECIES_VOLTORB},
{26, 26, SPECIES_MAGNEMITE},
{22, 22, SPECIES_VOLTORB},
{22, 22, SPECIES_MAGNEMITE},
{26, 26, SPECIES_ELECTRODE},
{26, 26, SPECIES_MAGNETON},
};
const struct WildPokemonInfo gNewMauville_Inside_LandMonsInfo = {10, gNewMauville_Inside_LandMons};
const struct WildPokemon gRoute119_LandMons[] =
{
{25, 25, SPECIES_ZIGZAGOON},
{25, 25, SPECIES_LINOONE},
{27, 27, SPECIES_ZIGZAGOON},
{25, 25, SPECIES_ODDISH},
{27, 27, SPECIES_LINOONE},
{26, 26, SPECIES_ODDISH},
{27, 27, SPECIES_ODDISH},
{24, 24, SPECIES_ODDISH},
{25, 25, SPECIES_TROPIUS},
{26, 26, SPECIES_TROPIUS},
{27, 27, SPECIES_TROPIUS},
{25, 25, SPECIES_KECLEON},
};
const struct WildPokemonInfo gRoute119_LandMonsInfo = {15, gRoute119_LandMons};
const struct WildPokemon gRoute119_WaterMons[] =
{
{5, 35, SPECIES_TENTACOOL},
{10, 30, SPECIES_WINGULL},
{15, 25, SPECIES_WINGULL},
{25, 30, SPECIES_PELIPPER},
{25, 30, SPECIES_PELIPPER},
};
const struct WildPokemonInfo gRoute119_WaterMonsInfo = {4, gRoute119_WaterMons};
const struct WildPokemon gRoute119_FishingMons[] =
{
{5, 10, SPECIES_MAGIKARP},
{5, 10, SPECIES_TENTACOOL},
{10, 30, SPECIES_MAGIKARP},
{10, 30, SPECIES_TENTACOOL},
{10, 30, SPECIES_CARVANHA},
{25, 30, SPECIES_CARVANHA},
{30, 35, SPECIES_CARVANHA},
{20, 25, SPECIES_CARVANHA},
{35, 40, SPECIES_CARVANHA},
{40, 45, SPECIES_CARVANHA},
};
const struct WildPokemonInfo gRoute119_FishingMonsInfo = {30, gRoute119_FishingMons};
const struct WildPokemon gRoute120_LandMons[] =
{
{25, 25, SPECIES_POOCHYENA},
{25, 25, SPECIES_MIGHTYENA},
{27, 27, SPECIES_MIGHTYENA},
{25, 25, SPECIES_ODDISH},
{25, 25, SPECIES_MARILL},
{26, 26, SPECIES_ODDISH},
{27, 27, SPECIES_ODDISH},
{27, 27, SPECIES_MARILL},
{25, 25, SPECIES_ABSOL},
{27, 27, SPECIES_ABSOL},
{25, 25, SPECIES_KECLEON},
{25, 25, SPECIES_SEEDOT},
};
const struct WildPokemonInfo gRoute120_LandMonsInfo = {20, gRoute120_LandMons};
const struct WildPokemon gRoute120_WaterMons[] =
{
{20, 30, SPECIES_MARILL},
{10, 20, SPECIES_MARILL},
{30, 35, SPECIES_MARILL},
{5, 10, SPECIES_MARILL},
{20, 30, SPECIES_GOLDEEN},
};
const struct WildPokemonInfo gRoute120_WaterMonsInfo = {4, gRoute120_WaterMons};
const struct WildPokemon gRoute120_FishingMons[] =
{
{5, 10, SPECIES_MAGIKARP},
{5, 10, SPECIES_GOLDEEN},
{10, 30, SPECIES_MAGIKARP},
{10, 30, SPECIES_GOLDEEN},
{10, 30, SPECIES_BARBOACH},
{25, 30, SPECIES_BARBOACH},
{30, 35, SPECIES_BARBOACH},
{20, 25, SPECIES_BARBOACH},
{35, 40, SPECIES_BARBOACH},
{40, 45, SPECIES_BARBOACH},
};
const struct WildPokemonInfo gRoute120_FishingMonsInfo = {30, gRoute120_FishingMons};
const struct WildPokemon gRoute121_LandMons[] =
{
{26, 26, SPECIES_POOCHYENA},
{26, 26, SPECIES_SHUPPET},
{26, 26, SPECIES_MIGHTYENA},
{28, 28, SPECIES_SHUPPET},
{28, 28, SPECIES_MIGHTYENA},
{26, 26, SPECIES_ODDISH},
{28, 28, SPECIES_ODDISH},
{28, 28, SPECIES_GLOOM},
{26, 26, SPECIES_WINGULL},
{27, 27, SPECIES_WINGULL},
{28, 28, SPECIES_WINGULL},
{25, 25, SPECIES_KECLEON},
};
const struct WildPokemonInfo gRoute121_LandMonsInfo = {20, gRoute121_LandMons};
const struct WildPokemon gRoute121_WaterMons[] =
{
{5, 35, SPECIES_TENTACOOL},
{10, 30, SPECIES_WINGULL},
{15, 25, SPECIES_WINGULL},
{25, 30, SPECIES_PELIPPER},
{25, 30, SPECIES_PELIPPER},
};
const struct WildPokemonInfo gRoute121_WaterMonsInfo = {4, gRoute121_WaterMons};
const struct WildPokemon gRoute121_FishingMons[] =
{
{5, 10, SPECIES_MAGIKARP},
{5, 10, SPECIES_TENTACOOL},
{10, 30, SPECIES_MAGIKARP},
{10, 30, SPECIES_TENTACOOL},
{10, 30, SPECIES_WAILMER},
{25, 30, SPECIES_WAILMER},
{30, 35, SPECIES_WAILMER},
{20, 25, SPECIES_WAILMER},
{35, 40, SPECIES_WAILMER},
{40, 45, SPECIES_WAILMER},
};
const struct WildPokemonInfo gRoute121_FishingMonsInfo = {30, gRoute121_FishingMons};
const struct WildPokemon gRoute122_WaterMons[] =
{
{5, 35, SPECIES_TENTACOOL},
{10, 30, SPECIES_WINGULL},
{15, 25, SPECIES_WINGULL},
{25, 30, SPECIES_PELIPPER},
{25, 30, SPECIES_PELIPPER},
};
const struct WildPokemonInfo gRoute122_WaterMonsInfo = {4, gRoute122_WaterMons};
const struct WildPokemon gRoute122_FishingMons[] =
{
{5, 10, SPECIES_MAGIKARP},
{5, 10, SPECIES_TENTACOOL},
{10, 30, SPECIES_MAGIKARP},
{10, 30, SPECIES_TENTACOOL},
{10, 30, SPECIES_WAILMER},
{30, 35, SPECIES_SHARPEDO},
{30, 35, SPECIES_WAILMER},
{25, 30, SPECIES_WAILMER},
{35, 40, SPECIES_WAILMER},
{40, 45, SPECIES_WAILMER},
};
const struct WildPokemonInfo gRoute122_FishingMonsInfo = {30, gRoute122_FishingMons};
const struct WildPokemon gRoute123_LandMons[] =
{
{26, 26, SPECIES_POOCHYENA},
{26, 26, SPECIES_SHUPPET},
{26, 26, SPECIES_MIGHTYENA},
{28, 28, SPECIES_SHUPPET},
{28, 28, SPECIES_MIGHTYENA},
{26, 26, SPECIES_ODDISH},
{28, 28, SPECIES_ODDISH},
{28, 28, SPECIES_GLOOM},
{26, 26, SPECIES_WINGULL},
{27, 27, SPECIES_WINGULL},
{28, 28, SPECIES_WINGULL},
{25, 25, SPECIES_KECLEON},
};
const struct WildPokemonInfo gRoute123_LandMonsInfo = {20, gRoute123_LandMons};
const struct WildPokemon gRoute123_WaterMons[] =
{
{5, 35, SPECIES_TENTACOOL},
{10, 30, SPECIES_WINGULL},
{15, 25, SPECIES_WINGULL},
{25, 30, SPECIES_PELIPPER},
{25, 30, SPECIES_PELIPPER},
};
const struct WildPokemonInfo gRoute123_WaterMonsInfo = {4, gRoute123_WaterMons};
const struct WildPokemon gRoute123_FishingMons[] =
{
{5, 10, SPECIES_MAGIKARP},
{5, 10, SPECIES_TENTACOOL},
{10, 30, SPECIES_MAGIKARP},
{10, 30, SPECIES_TENTACOOL},
{10, 30, SPECIES_WAILMER},
{25, 30, SPECIES_WAILMER},
{30, 35, SPECIES_WAILMER},
{20, 25, SPECIES_WAILMER},
{35, 40, SPECIES_WAILMER},
{40, 45, SPECIES_WAILMER},
};
const struct WildPokemonInfo gRoute123_FishingMonsInfo = {30, gRoute123_FishingMons};
const struct WildPokemon gMtPyre_2F_LandMons[] =
{
{27, 27, SPECIES_SHUPPET},
{28, 28, SPECIES_SHUPPET},
{26, 26, SPECIES_SHUPPET},
{25, 25, SPECIES_SHUPPET},
{29, 29, SPECIES_SHUPPET},
{24, 24, SPECIES_SHUPPET},
{23, 23, SPECIES_SHUPPET},
{22, 22, SPECIES_SHUPPET},
{29, 29, SPECIES_SHUPPET},
{24, 24, SPECIES_SHUPPET},
{29, 29, SPECIES_SHUPPET},
{24, 24, SPECIES_SHUPPET},
};
const struct WildPokemonInfo gMtPyre_2F_LandMonsInfo = {10, gMtPyre_2F_LandMons};
const struct WildPokemon gMtPyre_3F_LandMons[] =
{
{27, 27, SPECIES_SHUPPET},
{28, 28, SPECIES_SHUPPET},
{26, 26, SPECIES_SHUPPET},
{25, 25, SPECIES_SHUPPET},
{29, 29, SPECIES_SHUPPET},
{24, 24, SPECIES_SHUPPET},
{23, 23, SPECIES_SHUPPET},
{22, 22, SPECIES_SHUPPET},
{29, 29, SPECIES_SHUPPET},
{24, 24, SPECIES_SHUPPET},
{29, 29, SPECIES_SHUPPET},
{24, 24, SPECIES_SHUPPET},
};
const struct WildPokemonInfo gMtPyre_3F_LandMonsInfo = {10, gMtPyre_3F_LandMons};
const struct WildPokemon gMtPyre_4F_LandMons[] =
{
{27, 27, SPECIES_SHUPPET},
{28, 28, SPECIES_SHUPPET},
{26, 26, SPECIES_SHUPPET},
{25, 25, SPECIES_SHUPPET},
{29, 29, SPECIES_SHUPPET},
{24, 24, SPECIES_SHUPPET},
{23, 23, SPECIES_SHUPPET},
{22, 22, SPECIES_SHUPPET},
{27, 27, SPECIES_DUSKULL},
{27, 27, SPECIES_DUSKULL},
{25, 25, SPECIES_DUSKULL},
{29, 29, SPECIES_DUSKULL},
};
const struct WildPokemonInfo gMtPyre_4F_LandMonsInfo = {10, gMtPyre_4F_LandMons};
const struct WildPokemon gMtPyre_5F_LandMons[] =
{
{27, 27, SPECIES_SHUPPET},
{28, 28, SPECIES_SHUPPET},
{26, 26, SPECIES_SHUPPET},
{25, 25, SPECIES_SHUPPET},
{29, 29, SPECIES_SHUPPET},
{24, 24, SPECIES_SHUPPET},
{23, 23, SPECIES_SHUPPET},
{22, 22, SPECIES_SHUPPET},
{27, 27, SPECIES_DUSKULL},
{27, 27, SPECIES_DUSKULL},
{25, 25, SPECIES_DUSKULL},
{29, 29, SPECIES_DUSKULL},
};
const struct WildPokemonInfo gMtPyre_5F_LandMonsInfo = {10, gMtPyre_5F_LandMons};
const struct WildPokemon gMtPyre_6F_LandMons[] =
{
{27, 27, SPECIES_SHUPPET},
{28, 28, SPECIES_SHUPPET},
{26, 26, SPECIES_SHUPPET},
{25, 25, SPECIES_SHUPPET},
{29, 29, SPECIES_SHUPPET},
{24, 24, SPECIES_SHUPPET},
{23, 23, SPECIES_SHUPPET},
{22, 22, SPECIES_SHUPPET},
{27, 27, SPECIES_DUSKULL},
{27, 27, SPECIES_DUSKULL},
{25, 25, SPECIES_DUSKULL},
{29, 29, SPECIES_DUSKULL},
};
const struct WildPokemonInfo gMtPyre_6F_LandMonsInfo = {10, gMtPyre_6F_LandMons};
const struct WildPokemon gMtPyre_Exterior_LandMons[] =
{
{27, 27, SPECIES_SHUPPET},
{27, 27, SPECIES_SHUPPET},
{28, 28, SPECIES_SHUPPET},
{29, 29, SPECIES_SHUPPET},
{29, 29, SPECIES_VULPIX},
{27, 27, SPECIES_VULPIX},
{29, 29, SPECIES_VULPIX},
{25, 25, SPECIES_VULPIX},
{27, 27, SPECIES_WINGULL},
{27, 27, SPECIES_WINGULL},
{26, 26, SPECIES_WINGULL},
{28, 28, SPECIES_WINGULL},
};
const struct WildPokemonInfo gMtPyre_Exterior_LandMonsInfo = {10, gMtPyre_Exterior_LandMons};
const struct WildPokemon gMtPyre_Summit_LandMons[] =
{
{28, 28, SPECIES_SHUPPET},
{29, 29, SPECIES_SHUPPET},
{27, 27, SPECIES_SHUPPET},
{26, 26, SPECIES_SHUPPET},
{30, 30, SPECIES_SHUPPET},
{25, 25, SPECIES_SHUPPET},
{24, 24, SPECIES_SHUPPET},
{28, 28, SPECIES_DUSKULL},
{26, 26, SPECIES_DUSKULL},
{30, 30, SPECIES_DUSKULL},
{28, 28, SPECIES_CHIMECHO},
{28, 28, SPECIES_CHIMECHO},
};
const struct WildPokemonInfo gMtPyre_Summit_LandMonsInfo = {10, gMtPyre_Summit_LandMons};
const struct WildPokemon gGraniteCave_StevensRoom_LandMons[] =
{
{7, 7, SPECIES_ZUBAT},
{8, 8, SPECIES_MAKUHITA},
{7, 7, SPECIES_MAKUHITA},
{8, 8, SPECIES_ZUBAT},
{9, 9, SPECIES_MAKUHITA},
{8, 8, SPECIES_ABRA},
{10, 10, SPECIES_MAKUHITA},
{6, 6, SPECIES_MAKUHITA},
{7, 7, SPECIES_ARON},
{8, 8, SPECIES_ARON},
{7, 7, SPECIES_ARON},
{8, 8, SPECIES_ARON},
};
const struct WildPokemonInfo gGraniteCave_StevensRoom_LandMonsInfo = {10, gGraniteCave_StevensRoom_LandMons};
const struct WildPokemon gRoute125_WaterMons[] =
{
{5, 35, SPECIES_TENTACOOL},
{10, 30, SPECIES_WINGULL},
{15, 25, SPECIES_WINGULL},
{25, 30, SPECIES_PELIPPER},
{25, 30, SPECIES_PELIPPER},
};
const struct WildPokemonInfo gRoute125_WaterMonsInfo = {4, gRoute125_WaterMons};
const struct WildPokemon gRoute125_FishingMons[] =
{
{5, 10, SPECIES_MAGIKARP},
{5, 10, SPECIES_TENTACOOL},
{10, 30, SPECIES_MAGIKARP},
{10, 30, SPECIES_TENTACOOL},
{10, 30, SPECIES_WAILMER},
{30, 35, SPECIES_SHARPEDO},
{30, 35, SPECIES_WAILMER},
{25, 30, SPECIES_WAILMER},
{35, 40, SPECIES_WAILMER},
{40, 45, SPECIES_WAILMER},
};
const struct WildPokemonInfo gRoute125_FishingMonsInfo = {30, gRoute125_FishingMons};
const struct WildPokemon gRoute126_WaterMons[] =
{
{5, 35, SPECIES_TENTACOOL},
{10, 30, SPECIES_WINGULL},
{15, 25, SPECIES_WINGULL},
{25, 30, SPECIES_PELIPPER},
{25, 30, SPECIES_PELIPPER},
};
const struct WildPokemonInfo gRoute126_WaterMonsInfo = {4, gRoute126_WaterMons};
const struct WildPokemon gRoute126_FishingMons[] =
{
{5, 10, SPECIES_MAGIKARP},
{5, 10, SPECIES_TENTACOOL},
{10, 30, SPECIES_MAGIKARP},
{10, 30, SPECIES_TENTACOOL},
{10, 30, SPECIES_WAILMER},
{30, 35, SPECIES_SHARPEDO},
{30, 35, SPECIES_WAILMER},
{25, 30, SPECIES_WAILMER},
{35, 40, SPECIES_WAILMER},
{40, 45, SPECIES_WAILMER},
};
const struct WildPokemonInfo gRoute126_FishingMonsInfo = {30, gRoute126_FishingMons};
const struct WildPokemon gRoute127_WaterMons[] =
{
{5, 35, SPECIES_TENTACOOL},
{10, 30, SPECIES_WINGULL},
{15, 25, SPECIES_WINGULL},
{25, 30, SPECIES_PELIPPER},
{25, 30, SPECIES_PELIPPER},
};
const struct WildPokemonInfo gRoute127_WaterMonsInfo = {4, gRoute127_WaterMons};
const struct WildPokemon gRoute127_FishingMons[] =
{
{5, 10, SPECIES_MAGIKARP},
{5, 10, SPECIES_TENTACOOL},
{10, 30, SPECIES_MAGIKARP},
{10, 30, SPECIES_TENTACOOL},
{10, 30, SPECIES_WAILMER},
{30, 35, SPECIES_SHARPEDO},
{30, 35, SPECIES_WAILMER},
{25, 30, SPECIES_WAILMER},
{35, 40, SPECIES_WAILMER},
{40, 45, SPECIES_WAILMER},
};
const struct WildPokemonInfo gRoute127_FishingMonsInfo = {30, gRoute127_FishingMons};
const struct WildPokemon gRoute128_WaterMons[] =
{
{5, 35, SPECIES_TENTACOOL},
{10, 30, SPECIES_WINGULL},
{15, 25, SPECIES_WINGULL},
{25, 30, SPECIES_PELIPPER},
{25, 30, SPECIES_PELIPPER},
};
const struct WildPokemonInfo gRoute128_WaterMonsInfo = {4, gRoute128_WaterMons};
const struct WildPokemon gRoute128_FishingMons[] =
{
{5, 10, SPECIES_MAGIKARP},
{5, 10, SPECIES_TENTACOOL},
{10, 30, SPECIES_MAGIKARP},
{10, 30, SPECIES_LUVDISC},
{10, 30, SPECIES_WAILMER},
{30, 35, SPECIES_LUVDISC},
{30, 35, SPECIES_WAILMER},
{30, 35, SPECIES_CORSOLA},
{35, 40, SPECIES_WAILMER},
{40, 45, SPECIES_WAILMER},
};
const struct WildPokemonInfo gRoute128_FishingMonsInfo = {30, gRoute128_FishingMons};
const struct WildPokemon gRoute129_WaterMons[] =
{
{5, 35, SPECIES_TENTACOOL},
{10, 30, SPECIES_WINGULL},
{15, 25, SPECIES_WINGULL},
{25, 30, SPECIES_PELIPPER},
{25, 30, SPECIES_WAILORD},
};
const struct WildPokemonInfo gRoute129_WaterMonsInfo = {4, gRoute129_WaterMons};
const struct WildPokemon gRoute129_FishingMons[] =
{
{5, 10, SPECIES_MAGIKARP},
{5, 10, SPECIES_TENTACOOL},
{10, 30, SPECIES_MAGIKARP},
{10, 30, SPECIES_TENTACOOL},
{10, 30, SPECIES_WAILMER},
{30, 35, SPECIES_SHARPEDO},
{30, 35, SPECIES_WAILMER},
{25, 30, SPECIES_WAILMER},
{35, 40, SPECIES_WAILMER},
{40, 45, SPECIES_WAILMER},
};
const struct WildPokemonInfo gRoute129_FishingMonsInfo = {30, gRoute129_FishingMons};
const struct WildPokemon gRoute130_LandMons[] =
{
{30, 30, SPECIES_WYNAUT},
{35, 35, SPECIES_WYNAUT},
{25, 25, SPECIES_WYNAUT},
{40, 40, SPECIES_WYNAUT},
{20, 20, SPECIES_WYNAUT},
{45, 45, SPECIES_WYNAUT},
{15, 15, SPECIES_WYNAUT},
{50, 50, SPECIES_WYNAUT},
{10, 10, SPECIES_WYNAUT},
{5, 5, SPECIES_WYNAUT},
{10, 10, SPECIES_WYNAUT},
{5, 5, SPECIES_WYNAUT},
};
const struct WildPokemonInfo gRoute130_LandMonsInfo = {20, gRoute130_LandMons};
const struct WildPokemon gRoute130_WaterMons[] =
{
{5, 35, SPECIES_TENTACOOL},
{10, 30, SPECIES_WINGULL},
{15, 25, SPECIES_WINGULL},
{25, 30, SPECIES_PELIPPER},
{25, 30, SPECIES_PELIPPER},
};
const struct WildPokemonInfo gRoute130_WaterMonsInfo = {4, gRoute130_WaterMons};
const struct WildPokemon gRoute130_FishingMons[] =
{
{5, 10, SPECIES_MAGIKARP},
{5, 10, SPECIES_TENTACOOL},
{10, 30, SPECIES_MAGIKARP},
{10, 30, SPECIES_TENTACOOL},
{10, 30, SPECIES_WAILMER},
{30, 35, SPECIES_SHARPEDO},
{30, 35, SPECIES_WAILMER},
{25, 30, SPECIES_WAILMER},
{35, 40, SPECIES_WAILMER},
{40, 45, SPECIES_WAILMER},
};
const struct WildPokemonInfo gRoute130_FishingMonsInfo = {30, gRoute130_FishingMons};
const struct WildPokemon gRoute131_WaterMons[] =
{
{5, 35, SPECIES_TENTACOOL},
{10, 30, SPECIES_WINGULL},
{15, 25, SPECIES_WINGULL},
{25, 30, SPECIES_PELIPPER},
{25, 30, SPECIES_PELIPPER},
};
const struct WildPokemonInfo gRoute131_WaterMonsInfo = {4, gRoute131_WaterMons};
const struct WildPokemon gRoute131_FishingMons[] =
{
{5, 10, SPECIES_MAGIKARP},
{5, 10, SPECIES_TENTACOOL},
{10, 30, SPECIES_MAGIKARP},
{10, 30, SPECIES_TENTACOOL},
{10, 30, SPECIES_WAILMER},
{30, 35, SPECIES_SHARPEDO},
{30, 35, SPECIES_WAILMER},
{25, 30, SPECIES_WAILMER},
{35, 40, SPECIES_WAILMER},
{40, 45, SPECIES_WAILMER},
};
const struct WildPokemonInfo gRoute131_FishingMonsInfo = {30, gRoute131_FishingMons};
const struct WildPokemon gRoute132_WaterMons[] =
{
{5, 35, SPECIES_TENTACOOL},
{10, 30, SPECIES_WINGULL},
{15, 25, SPECIES_WINGULL},
{25, 30, SPECIES_PELIPPER},
{25, 30, SPECIES_PELIPPER},
};
const struct WildPokemonInfo gRoute132_WaterMonsInfo = {4, gRoute132_WaterMons};
const struct WildPokemon gRoute132_FishingMons[] =
{
{5, 10, SPECIES_MAGIKARP},
{5, 10, SPECIES_TENTACOOL},
{10, 30, SPECIES_MAGIKARP},
{10, 30, SPECIES_TENTACOOL},
{10, 30, SPECIES_WAILMER},
{30, 35, SPECIES_SHARPEDO},
{30, 35, SPECIES_WAILMER},
{25, 30, SPECIES_HORSEA},
{35, 40, SPECIES_WAILMER},
{40, 45, SPECIES_WAILMER},
};
const struct WildPokemonInfo gRoute132_FishingMonsInfo = {30, gRoute132_FishingMons};
const struct WildPokemon gRoute133_WaterMons[] =
{
{5, 35, SPECIES_TENTACOOL},
{10, 30, SPECIES_WINGULL},
{15, 25, SPECIES_WINGULL},
{25, 30, SPECIES_PELIPPER},
{25, 30, SPECIES_PELIPPER},
};
const struct WildPokemonInfo gRoute133_WaterMonsInfo = {4, gRoute133_WaterMons};
const struct WildPokemon gRoute133_FishingMons[] =
{
{5, 10, SPECIES_MAGIKARP},
{5, 10, SPECIES_TENTACOOL},
{10, 30, SPECIES_MAGIKARP},
{10, 30, SPECIES_TENTACOOL},
{10, 30, SPECIES_WAILMER},
{30, 35, SPECIES_SHARPEDO},
{30, 35, SPECIES_WAILMER},
{25, 30, SPECIES_HORSEA},
{35, 40, SPECIES_WAILMER},
{40, 45, SPECIES_WAILMER},
};
const struct WildPokemonInfo gRoute133_FishingMonsInfo = {30, gRoute133_FishingMons};
const struct WildPokemon gRoute134_WaterMons[] =
{
{5, 35, SPECIES_TENTACOOL},
{10, 30, SPECIES_WINGULL},
{15, 25, SPECIES_WINGULL},
{25, 30, SPECIES_PELIPPER},
{25, 30, SPECIES_PELIPPER},
};
const struct WildPokemonInfo gRoute134_WaterMonsInfo = {4, gRoute134_WaterMons};
const struct WildPokemon gRoute134_FishingMons[] =
{
{5, 10, SPECIES_MAGIKARP},
{5, 10, SPECIES_TENTACOOL},
{10, 30, SPECIES_MAGIKARP},
{10, 30, SPECIES_TENTACOOL},
{10, 30, SPECIES_WAILMER},
{30, 35, SPECIES_SHARPEDO},
{30, 35, SPECIES_WAILMER},
{25, 30, SPECIES_HORSEA},
{35, 40, SPECIES_WAILMER},
{40, 45, SPECIES_WAILMER},
};
const struct WildPokemonInfo gRoute134_FishingMonsInfo = {30, gRoute134_FishingMons};
const struct WildPokemon gAbandonedShip_HiddenFloorCorridors_WaterMons[] =
{
{5, 35, SPECIES_TENTACOOL},
{5, 35, SPECIES_TENTACOOL},
{5, 35, SPECIES_TENTACOOL},
{5, 35, SPECIES_TENTACOOL},
{30, 35, SPECIES_TENTACRUEL},
};
const struct WildPokemonInfo gAbandonedShip_HiddenFloorCorridors_WaterMonsInfo = {4, gAbandonedShip_HiddenFloorCorridors_WaterMons};
const struct WildPokemon gAbandonedShip_HiddenFloorCorridors_FishingMons[] =
{
{5, 10, SPECIES_MAGIKARP},
{5, 10, SPECIES_TENTACOOL},
{10, 30, SPECIES_MAGIKARP},
{10, 30, SPECIES_TENTACOOL},
{10, 30, SPECIES_TENTACOOL},
{25, 30, SPECIES_TENTACOOL},
{30, 35, SPECIES_TENTACOOL},
{30, 35, SPECIES_TENTACRUEL},
{25, 30, SPECIES_TENTACRUEL},
{20, 25, SPECIES_TENTACRUEL},
};
const struct WildPokemonInfo gAbandonedShip_HiddenFloorCorridors_FishingMonsInfo = {20, gAbandonedShip_HiddenFloorCorridors_FishingMons};
const struct WildPokemon gSeafloorCavern_Room1_LandMons[] =
{
{30, 30, SPECIES_ZUBAT},
{31, 31, SPECIES_ZUBAT},
{32, 32, SPECIES_ZUBAT},
{33, 33, SPECIES_ZUBAT},
{28, 28, SPECIES_ZUBAT},
{29, 29, SPECIES_ZUBAT},
{34, 34, SPECIES_ZUBAT},
{35, 35, SPECIES_ZUBAT},
{34, 34, SPECIES_GOLBAT},
{35, 35, SPECIES_GOLBAT},
{33, 33, SPECIES_GOLBAT},
{36, 36, SPECIES_GOLBAT},
};
const struct WildPokemonInfo gSeafloorCavern_Room1_LandMonsInfo = {4, gSeafloorCavern_Room1_LandMons};
const struct WildPokemon gSeafloorCavern_Room2_LandMons[] =
{
{30, 30, SPECIES_ZUBAT},
{31, 31, SPECIES_ZUBAT},
{32, 32, SPECIES_ZUBAT},
{33, 33, SPECIES_ZUBAT},
{28, 28, SPECIES_ZUBAT},
{29, 29, SPECIES_ZUBAT},
{34, 34, SPECIES_ZUBAT},
{35, 35, SPECIES_ZUBAT},
{34, 34, SPECIES_GOLBAT},
{35, 35, SPECIES_GOLBAT},
{33, 33, SPECIES_GOLBAT},
{36, 36, SPECIES_GOLBAT},
};
const struct WildPokemonInfo gSeafloorCavern_Room2_LandMonsInfo = {4, gSeafloorCavern_Room2_LandMons};
const struct WildPokemon gSeafloorCavern_Room3_LandMons[] =
{
{30, 30, SPECIES_ZUBAT},
{31, 31, SPECIES_ZUBAT},
{32, 32, SPECIES_ZUBAT},
{33, 33, SPECIES_ZUBAT},
{28, 28, SPECIES_ZUBAT},
{29, 29, SPECIES_ZUBAT},
{34, 34, SPECIES_ZUBAT},
{35, 35, SPECIES_ZUBAT},
{34, 34, SPECIES_GOLBAT},
{35, 35, SPECIES_GOLBAT},
{33, 33, SPECIES_GOLBAT},
{36, 36, SPECIES_GOLBAT},
};
const struct WildPokemonInfo gSeafloorCavern_Room3_LandMonsInfo = {4, gSeafloorCavern_Room3_LandMons};
const struct WildPokemon gSeafloorCavern_Room4_LandMons[] =
{
{30, 30, SPECIES_ZUBAT},
{31, 31, SPECIES_ZUBAT},
{32, 32, SPECIES_ZUBAT},
{33, 33, SPECIES_ZUBAT},
{28, 28, SPECIES_ZUBAT},
{29, 29, SPECIES_ZUBAT},
{34, 34, SPECIES_ZUBAT},
{35, 35, SPECIES_ZUBAT},
{34, 34, SPECIES_GOLBAT},
{35, 35, SPECIES_GOLBAT},
{33, 33, SPECIES_GOLBAT},
{36, 36, SPECIES_GOLBAT},
};
const struct WildPokemonInfo gSeafloorCavern_Room4_LandMonsInfo = {4, gSeafloorCavern_Room4_LandMons};
const struct WildPokemon gSeafloorCavern_Room5_LandMons[] =
{
{30, 30, SPECIES_ZUBAT},
{31, 31, SPECIES_ZUBAT},
{32, 32, SPECIES_ZUBAT},
{33, 33, SPECIES_ZUBAT},
{28, 28, SPECIES_ZUBAT},
{29, 29, SPECIES_ZUBAT},
{34, 34, SPECIES_ZUBAT},
{35, 35, SPECIES_ZUBAT},
{34, 34, SPECIES_GOLBAT},
{35, 35, SPECIES_GOLBAT},
{33, 33, SPECIES_GOLBAT},
{36, 36, SPECIES_GOLBAT},
};
const struct WildPokemonInfo gSeafloorCavern_Room5_LandMonsInfo = {4, gSeafloorCavern_Room5_LandMons};
const struct WildPokemon gSeafloorCavern_Room6_LandMons[] =
{
{30, 30, SPECIES_ZUBAT},
{31, 31, SPECIES_ZUBAT},
{32, 32, SPECIES_ZUBAT},
{33, 33, SPECIES_ZUBAT},
{28, 28, SPECIES_ZUBAT},
{29, 29, SPECIES_ZUBAT},
{34, 34, SPECIES_ZUBAT},
{35, 35, SPECIES_ZUBAT},
{34, 34, SPECIES_GOLBAT},
{35, 35, SPECIES_GOLBAT},
{33, 33, SPECIES_GOLBAT},
{36, 36, SPECIES_GOLBAT},
};
const struct WildPokemonInfo gSeafloorCavern_Room6_LandMonsInfo = {4, gSeafloorCavern_Room6_LandMons};
const struct WildPokemon gSeafloorCavern_Room6_WaterMons[] =
{
{5, 35, SPECIES_TENTACOOL},
{5, 35, SPECIES_ZUBAT},
{30, 35, SPECIES_ZUBAT},
{30, 35, SPECIES_GOLBAT},
{30, 35, SPECIES_GOLBAT},
};
const struct WildPokemonInfo gSeafloorCavern_Room6_WaterMonsInfo = {4, gSeafloorCavern_Room6_WaterMons};
const struct WildPokemon gSeafloorCavern_Room6_FishingMons[] =
{
{5, 10, SPECIES_MAGIKARP},
{5, 10, SPECIES_TENTACOOL},
{10, 30, SPECIES_MAGIKARP},
{10, 30, SPECIES_TENTACOOL},
{10, 30, SPECIES_WAILMER},
{25, 30, SPECIES_WAILMER},
{30, 35, SPECIES_WAILMER},
{20, 25, SPECIES_WAILMER},
{35, 40, SPECIES_WAILMER},
{40, 45, SPECIES_WAILMER},
};
const struct WildPokemonInfo gSeafloorCavern_Room6_FishingMonsInfo = {10, gSeafloorCavern_Room6_FishingMons};
const struct WildPokemon gSeafloorCavern_Room7_LandMons[] =
{
{30, 30, SPECIES_ZUBAT},
{31, 31, SPECIES_ZUBAT},
{32, 32, SPECIES_ZUBAT},
{33, 33, SPECIES_ZUBAT},
{28, 28, SPECIES_ZUBAT},
{29, 29, SPECIES_ZUBAT},
{34, 34, SPECIES_ZUBAT},
{35, 35, SPECIES_ZUBAT},
{34, 34, SPECIES_GOLBAT},
{35, 35, SPECIES_GOLBAT},
{33, 33, SPECIES_GOLBAT},
{36, 36, SPECIES_GOLBAT},
};
const struct WildPokemonInfo gSeafloorCavern_Room7_LandMonsInfo = {4, gSeafloorCavern_Room7_LandMons};
const struct WildPokemon gSeafloorCavern_Room7_WaterMons[] =
{
{5, 35, SPECIES_TENTACOOL},
{5, 35, SPECIES_ZUBAT},
{30, 35, SPECIES_ZUBAT},
{30, 35, SPECIES_GOLBAT},
{30, 35, SPECIES_GOLBAT},
};
const struct WildPokemonInfo gSeafloorCavern_Room7_WaterMonsInfo = {4, gSeafloorCavern_Room7_WaterMons};
const struct WildPokemon gSeafloorCavern_Room7_FishingMons[] =
{
{5, 10, SPECIES_MAGIKARP},
{5, 10, SPECIES_TENTACOOL},
{10, 30, SPECIES_MAGIKARP},
{10, 30, SPECIES_TENTACOOL},
{10, 30, SPECIES_WAILMER},
{25, 30, SPECIES_WAILMER},
{30, 35, SPECIES_WAILMER},
{20, 25, SPECIES_WAILMER},
{35, 40, SPECIES_WAILMER},
{40, 45, SPECIES_WAILMER},
};
const struct WildPokemonInfo gSeafloorCavern_Room7_FishingMonsInfo = {10, gSeafloorCavern_Room7_FishingMons};
const struct WildPokemon gSeafloorCavern_Room8_LandMons[] =
{
{30, 30, SPECIES_ZUBAT},
{31, 31, SPECIES_ZUBAT},
{32, 32, SPECIES_ZUBAT},
{33, 33, SPECIES_ZUBAT},
{28, 28, SPECIES_ZUBAT},
{29, 29, SPECIES_ZUBAT},
{34, 34, SPECIES_ZUBAT},
{35, 35, SPECIES_ZUBAT},
{34, 34, SPECIES_GOLBAT},
{35, 35, SPECIES_GOLBAT},
{33, 33, SPECIES_GOLBAT},
{36, 36, SPECIES_GOLBAT},
};
const struct WildPokemonInfo gSeafloorCavern_Room8_LandMonsInfo = {4, gSeafloorCavern_Room8_LandMons};
const struct WildPokemon gSeafloorCavern_Entrance_WaterMons[] =
{
{5, 35, SPECIES_TENTACOOL},
{5, 35, SPECIES_ZUBAT},
{30, 35, SPECIES_ZUBAT},
{30, 35, SPECIES_GOLBAT},
{30, 35, SPECIES_GOLBAT},
};
const struct WildPokemonInfo gSeafloorCavern_Entrance_WaterMonsInfo = {4, gSeafloorCavern_Entrance_WaterMons};
const struct WildPokemon gSeafloorCavern_Entrance_FishingMons[] =
{
{5, 10, SPECIES_MAGIKARP},
{5, 10, SPECIES_TENTACOOL},
{10, 30, SPECIES_MAGIKARP},
{10, 30, SPECIES_TENTACOOL},
{10, 30, SPECIES_WAILMER},
{25, 30, SPECIES_WAILMER},
{30, 35, SPECIES_WAILMER},
{20, 25, SPECIES_WAILMER},
{35, 40, SPECIES_WAILMER},
{40, 45, SPECIES_WAILMER},
};
const struct WildPokemonInfo gSeafloorCavern_Entrance_FishingMonsInfo = {10, gSeafloorCavern_Entrance_FishingMons};
const struct WildPokemon gCaveOfOrigin_Entrance_LandMons[] =
{
{30, 30, SPECIES_ZUBAT},
{31, 31, SPECIES_ZUBAT},
{32, 32, SPECIES_ZUBAT},
{33, 33, SPECIES_ZUBAT},
{28, 28, SPECIES_ZUBAT},
{29, 29, SPECIES_ZUBAT},
{34, 34, SPECIES_ZUBAT},
{35, 35, SPECIES_ZUBAT},
{34, 34, SPECIES_GOLBAT},
{35, 35, SPECIES_GOLBAT},
{33, 33, SPECIES_GOLBAT},
{36, 36, SPECIES_GOLBAT},
};
const struct WildPokemonInfo gCaveOfOrigin_Entrance_LandMonsInfo = {4, gCaveOfOrigin_Entrance_LandMons};
const struct WildPokemon gCaveOfOrigin_1F_LandMons[] =
{
{30, 30, SPECIES_ZUBAT},
{31, 31, SPECIES_ZUBAT},
{32, 32, SPECIES_ZUBAT},
{30, 30, SPECIES_SABLEYE},
{32, 32, SPECIES_SABLEYE},
{34, 34, SPECIES_SABLEYE},
{33, 33, SPECIES_ZUBAT},
{34, 34, SPECIES_ZUBAT},
{34, 34, SPECIES_GOLBAT},
{35, 35, SPECIES_GOLBAT},
{33, 33, SPECIES_GOLBAT},
{36, 36, SPECIES_GOLBAT},
};
const struct WildPokemonInfo gCaveOfOrigin_1F_LandMonsInfo = {4, gCaveOfOrigin_1F_LandMons};
const struct WildPokemon gCaveOfOrigin_UnusedRubySapphireMap1_LandMons[] =
{
{30, 30, SPECIES_ZUBAT},
{31, 31, SPECIES_ZUBAT},
{32, 32, SPECIES_ZUBAT},
{30, 30, SPECIES_SABLEYE},
{32, 32, SPECIES_SABLEYE},
{34, 34, SPECIES_SABLEYE},
{33, 33, SPECIES_ZUBAT},
{34, 34, SPECIES_ZUBAT},
{34, 34, SPECIES_GOLBAT},
{35, 35, SPECIES_GOLBAT},
{33, 33, SPECIES_GOLBAT},
{36, 36, SPECIES_GOLBAT},
};
const struct WildPokemonInfo gCaveOfOrigin_UnusedRubySapphireMap1_LandMonsInfo = {4, gCaveOfOrigin_UnusedRubySapphireMap1_LandMons};
const struct WildPokemon gCaveOfOrigin_UnusedRubySapphireMap2_LandMons[] =
{
{30, 30, SPECIES_ZUBAT},
{31, 31, SPECIES_ZUBAT},
{32, 32, SPECIES_ZUBAT},
{30, 30, SPECIES_SABLEYE},
{32, 32, SPECIES_SABLEYE},
{34, 34, SPECIES_SABLEYE},
{33, 33, SPECIES_ZUBAT},
{34, 34, SPECIES_ZUBAT},
{34, 34, SPECIES_GOLBAT},
{35, 35, SPECIES_GOLBAT},
{33, 33, SPECIES_GOLBAT},
{36, 36, SPECIES_GOLBAT},
};
const struct WildPokemonInfo gCaveOfOrigin_UnusedRubySapphireMap2_LandMonsInfo = {4, gCaveOfOrigin_UnusedRubySapphireMap2_LandMons};
const struct WildPokemon gCaveOfOrigin_UnusedRubySapphireMap3_LandMons[] =
{
{30, 30, SPECIES_ZUBAT},
{31, 31, SPECIES_ZUBAT},
{32, 32, SPECIES_ZUBAT},
{30, 30, SPECIES_SABLEYE},
{32, 32, SPECIES_SABLEYE},
{34, 34, SPECIES_SABLEYE},
{33, 33, SPECIES_ZUBAT},
{34, 34, SPECIES_ZUBAT},
{34, 34, SPECIES_GOLBAT},
{35, 35, SPECIES_GOLBAT},
{33, 33, SPECIES_GOLBAT},
{36, 36, SPECIES_GOLBAT},
};
const struct WildPokemonInfo gCaveOfOrigin_UnusedRubySapphireMap3_LandMonsInfo = {4, gCaveOfOrigin_UnusedRubySapphireMap3_LandMons};
const struct WildPokemon gNewMauville_Entrance_LandMons[] =
{
{24, 24, SPECIES_VOLTORB},
{24, 24, SPECIES_MAGNEMITE},
{25, 25, SPECIES_VOLTORB},
{25, 25, SPECIES_MAGNEMITE},
{23, 23, SPECIES_VOLTORB},
{23, 23, SPECIES_MAGNEMITE},
{26, 26, SPECIES_VOLTORB},
{26, 26, SPECIES_MAGNEMITE},
{22, 22, SPECIES_VOLTORB},
{22, 22, SPECIES_MAGNEMITE},
{22, 22, SPECIES_VOLTORB},
{22, 22, SPECIES_MAGNEMITE},
};
const struct WildPokemonInfo gNewMauville_Entrance_LandMonsInfo = {10, gNewMauville_Entrance_LandMons};
const struct WildPokemon gSafariZone_Southwest_LandMons[] =
{
{25, 25, SPECIES_ODDISH},
{27, 27, SPECIES_ODDISH},
{25, 25, SPECIES_GIRAFARIG},
{27, 27, SPECIES_GIRAFARIG},
{25, 25, SPECIES_NATU},
{27, 27, SPECIES_DODUO},
{25, 25, SPECIES_GLOOM},
{27, 27, SPECIES_WOBBUFFET},
{25, 25, SPECIES_PIKACHU},
{27, 27, SPECIES_WOBBUFFET},
{27, 27, SPECIES_PIKACHU},
{29, 29, SPECIES_WOBBUFFET},
};
const struct WildPokemonInfo gSafariZone_Southwest_LandMonsInfo = {25, gSafariZone_Southwest_LandMons};
const struct WildPokemon gSafariZone_Southwest_WaterMons[] =
{
{20, 30, SPECIES_PSYDUCK},
{20, 30, SPECIES_PSYDUCK},
{30, 35, SPECIES_PSYDUCK},
{30, 35, SPECIES_PSYDUCK},
{30, 35, SPECIES_PSYDUCK},
};
const struct WildPokemonInfo gSafariZone_Southwest_WaterMonsInfo = {9, gSafariZone_Southwest_WaterMons};
const struct WildPokemon gSafariZone_Southwest_FishingMons[] =
{
{5, 10, SPECIES_MAGIKARP},
{5, 10, SPECIES_GOLDEEN},
{10, 30, SPECIES_MAGIKARP},
{10, 25, SPECIES_GOLDEEN},
{10, 30, SPECIES_GOLDEEN},
{25, 30, SPECIES_GOLDEEN},
{30, 35, SPECIES_GOLDEEN},
{30, 35, SPECIES_SEAKING},
{35, 40, SPECIES_SEAKING},
{25, 30, SPECIES_SEAKING},
};
const struct WildPokemonInfo gSafariZone_Southwest_FishingMonsInfo = {35, gSafariZone_Southwest_FishingMons};
const struct WildPokemon gSafariZone_North_LandMons[] =
{
{27, 27, SPECIES_PHANPY},
{27, 27, SPECIES_ODDISH},
{29, 29, SPECIES_PHANPY},
{29, 29, SPECIES_ODDISH},
{27, 27, SPECIES_NATU},
{29, 29, SPECIES_GLOOM},
{31, 31, SPECIES_GLOOM},
{29, 29, SPECIES_NATU},
{29, 29, SPECIES_XATU},
{27, 27, SPECIES_HERACROSS},
{31, 31, SPECIES_XATU},
{29, 29, SPECIES_HERACROSS},
};
const struct WildPokemonInfo gSafariZone_North_LandMonsInfo = {25, gSafariZone_North_LandMons};
const struct WildPokemon gSafariZone_North_RockSmashMons[] =
{
{10, 15, SPECIES_GEODUDE},
{5, 10, SPECIES_GEODUDE},
{15, 20, SPECIES_GEODUDE},
{20, 25, SPECIES_GEODUDE},
{25, 30, SPECIES_GEODUDE},
};
const struct WildPokemonInfo gSafariZone_North_RockSmashMonsInfo = {25, gSafariZone_North_RockSmashMons};
const struct WildPokemon gSafariZone_Northwest_LandMons[] =
{
{27, 27, SPECIES_RHYHORN},
{27, 27, SPECIES_ODDISH},
{29, 29, SPECIES_RHYHORN},
{29, 29, SPECIES_ODDISH},
{27, 27, SPECIES_DODUO},
{29, 29, SPECIES_GLOOM},
{31, 31, SPECIES_GLOOM},
{29, 29, SPECIES_DODUO},
{29, 29, SPECIES_DODRIO},
{27, 27, SPECIES_PINSIR},
{31, 31, SPECIES_DODRIO},
{29, 29, SPECIES_PINSIR},
};
const struct WildPokemonInfo gSafariZone_Northwest_LandMonsInfo = {25, gSafariZone_Northwest_LandMons};
const struct WildPokemon gSafariZone_Northwest_WaterMons[] =
{
{20, 30, SPECIES_PSYDUCK},
{20, 30, SPECIES_PSYDUCK},
{30, 35, SPECIES_PSYDUCK},
{30, 35, SPECIES_GOLDUCK},
{25, 40, SPECIES_GOLDUCK},
};
const struct WildPokemonInfo gSafariZone_Northwest_WaterMonsInfo = {9, gSafariZone_Northwest_WaterMons};
const struct WildPokemon gSafariZone_Northwest_FishingMons[] =
{
{5, 10, SPECIES_MAGIKARP},
{5, 10, SPECIES_GOLDEEN},
{10, 30, SPECIES_MAGIKARP},
{10, 25, SPECIES_GOLDEEN},
{10, 30, SPECIES_GOLDEEN},
{25, 30, SPECIES_GOLDEEN},
{30, 35, SPECIES_GOLDEEN},
{30, 35, SPECIES_SEAKING},
{35, 40, SPECIES_SEAKING},
{25, 30, SPECIES_SEAKING},
};
const struct WildPokemonInfo gSafariZone_Northwest_FishingMonsInfo = {35, gSafariZone_Northwest_FishingMons};
const struct WildPokemon gVictoryRoad_B1F_LandMons[] =
{
{40, 40, SPECIES_GOLBAT},
{40, 40, SPECIES_HARIYAMA},
{40, 40, SPECIES_LAIRON},
{40, 40, SPECIES_LAIRON},
{38, 38, SPECIES_GOLBAT},
{38, 38, SPECIES_HARIYAMA},
{42, 42, SPECIES_GOLBAT},
{42, 42, SPECIES_HARIYAMA},
{42, 42, SPECIES_LAIRON},
{38, 38, SPECIES_MAWILE},
{42, 42, SPECIES_LAIRON},
{38, 38, SPECIES_MAWILE},
};
const struct WildPokemonInfo gVictoryRoad_B1F_LandMonsInfo = {10, gVictoryRoad_B1F_LandMons};
const struct WildPokemon gVictoryRoad_B1F_RockSmashMons[] =
{
{30, 40, SPECIES_GRAVELER},
{30, 40, SPECIES_GEODUDE},
{35, 40, SPECIES_GRAVELER},
{35, 40, SPECIES_GRAVELER},
{35, 40, SPECIES_GRAVELER},
};
const struct WildPokemonInfo gVictoryRoad_B1F_RockSmashMonsInfo = {20, gVictoryRoad_B1F_RockSmashMons};
const struct WildPokemon gVictoryRoad_B2F_LandMons[] =
{
{40, 40, SPECIES_GOLBAT},
{40, 40, SPECIES_SABLEYE},
{40, 40, SPECIES_LAIRON},
{40, 40, SPECIES_LAIRON},
{42, 42, SPECIES_GOLBAT},
{42, 42, SPECIES_SABLEYE},
{44, 44, SPECIES_GOLBAT},
{44, 44, SPECIES_SABLEYE},
{42, 42, SPECIES_LAIRON},
{42, 42, SPECIES_MAWILE},
{44, 44, SPECIES_LAIRON},
{44, 44, SPECIES_MAWILE},
};
const struct WildPokemonInfo gVictoryRoad_B2F_LandMonsInfo = {10, gVictoryRoad_B2F_LandMons};
const struct WildPokemon gVictoryRoad_B2F_WaterMons[] =
{
{30, 35, SPECIES_GOLBAT},
{25, 30, SPECIES_GOLBAT},
{35, 40, SPECIES_GOLBAT},
{35, 40, SPECIES_GOLBAT},
{35, 40, SPECIES_GOLBAT},
};
const struct WildPokemonInfo gVictoryRoad_B2F_WaterMonsInfo = {4, gVictoryRoad_B2F_WaterMons};
const struct WildPokemon gVictoryRoad_B2F_FishingMons[] =
{
{5, 10, SPECIES_MAGIKARP},
{5, 10, SPECIES_GOLDEEN},
{10, 30, SPECIES_MAGIKARP},
{10, 30, SPECIES_GOLDEEN},
{10, 30, SPECIES_BARBOACH},
{25, 30, SPECIES_BARBOACH},
{30, 35, SPECIES_BARBOACH},
{30, 35, SPECIES_WHISCASH},
{35, 40, SPECIES_WHISCASH},
{40, 45, SPECIES_WHISCASH},
};
const struct WildPokemonInfo gVictoryRoad_B2F_FishingMonsInfo = {30, gVictoryRoad_B2F_FishingMons};
const struct WildPokemon gMeteorFalls_1F_1R_LandMons[] =
{
{16, 16, SPECIES_ZUBAT},
{17, 17, SPECIES_ZUBAT},
{18, 18, SPECIES_ZUBAT},
{15, 15, SPECIES_ZUBAT},
{14, 14, SPECIES_ZUBAT},
{16, 16, SPECIES_SOLROCK},
{18, 18, SPECIES_SOLROCK},
{14, 14, SPECIES_SOLROCK},
{19, 19, SPECIES_ZUBAT},
{20, 20, SPECIES_ZUBAT},
{19, 19, SPECIES_ZUBAT},
{20, 20, SPECIES_ZUBAT},
};
const struct WildPokemonInfo gMeteorFalls_1F_1R_LandMonsInfo = {10, gMeteorFalls_1F_1R_LandMons};
const struct WildPokemon gMeteorFalls_1F_1R_WaterMons[] =
{
{5, 35, SPECIES_ZUBAT},
{30, 35, SPECIES_ZUBAT},
{25, 35, SPECIES_SOLROCK},
{15, 25, SPECIES_SOLROCK},
{5, 15, SPECIES_SOLROCK},
};
const struct WildPokemonInfo gMeteorFalls_1F_1R_WaterMonsInfo = {4, gMeteorFalls_1F_1R_WaterMons};
const struct WildPokemon gMeteorFalls_1F_1R_FishingMons[] =
{
{5, 10, SPECIES_MAGIKARP},
{5, 10, SPECIES_GOLDEEN},
{10, 30, SPECIES_MAGIKARP},
{10, 30, SPECIES_GOLDEEN},
{10, 30, SPECIES_BARBOACH},
{25, 30, SPECIES_BARBOACH},
{30, 35, SPECIES_BARBOACH},
{20, 25, SPECIES_BARBOACH},
{35, 40, SPECIES_BARBOACH},
{40, 45, SPECIES_BARBOACH},
};
const struct WildPokemonInfo gMeteorFalls_1F_1R_FishingMonsInfo = {30, gMeteorFalls_1F_1R_FishingMons};
const struct WildPokemon gMeteorFalls_1F_2R_LandMons[] =
{
{33, 33, SPECIES_GOLBAT},
{35, 35, SPECIES_GOLBAT},
{33, 33, SPECIES_GOLBAT},
{35, 35, SPECIES_SOLROCK},
{33, 33, SPECIES_SOLROCK},
{37, 37, SPECIES_SOLROCK},
{35, 35, SPECIES_GOLBAT},
{39, 39, SPECIES_SOLROCK},
{38, 38, SPECIES_GOLBAT},
{40, 40, SPECIES_GOLBAT},
{38, 38, SPECIES_GOLBAT},
{40, 40, SPECIES_GOLBAT},
};
const struct WildPokemonInfo gMeteorFalls_1F_2R_LandMonsInfo = {10, gMeteorFalls_1F_2R_LandMons};
const struct WildPokemon gMeteorFalls_1F_2R_WaterMons[] =
{
{30, 35, SPECIES_GOLBAT},
{30, 35, SPECIES_GOLBAT},
{25, 35, SPECIES_SOLROCK},
{15, 25, SPECIES_SOLROCK},
{5, 15, SPECIES_SOLROCK},
};
const struct WildPokemonInfo gMeteorFalls_1F_2R_WaterMonsInfo = {4, gMeteorFalls_1F_2R_WaterMons};
const struct WildPokemon gMeteorFalls_1F_2R_FishingMons[] =
{
{5, 10, SPECIES_MAGIKARP},
{5, 10, SPECIES_GOLDEEN},
{10, 30, SPECIES_MAGIKARP},
{10, 30, SPECIES_GOLDEEN},
{10, 30, SPECIES_BARBOACH},
{25, 30, SPECIES_BARBOACH},
{30, 35, SPECIES_BARBOACH},
{30, 35, SPECIES_WHISCASH},
{35, 40, SPECIES_WHISCASH},
{40, 45, SPECIES_WHISCASH},
};
const struct WildPokemonInfo gMeteorFalls_1F_2R_FishingMonsInfo = {30, gMeteorFalls_1F_2R_FishingMons};
const struct WildPokemon gMeteorFalls_B1F_1R_LandMons[] =
{
{33, 33, SPECIES_GOLBAT},
{35, 35, SPECIES_GOLBAT},
{33, 33, SPECIES_GOLBAT},
{35, 35, SPECIES_SOLROCK},
{33, 33, SPECIES_SOLROCK},
{37, 37, SPECIES_SOLROCK},
{35, 35, SPECIES_GOLBAT},
{39, 39, SPECIES_SOLROCK},
{38, 38, SPECIES_GOLBAT},
{40, 40, SPECIES_GOLBAT},
{38, 38, SPECIES_GOLBAT},
{40, 40, SPECIES_GOLBAT},
};
const struct WildPokemonInfo gMeteorFalls_B1F_1R_LandMonsInfo = {10, gMeteorFalls_B1F_1R_LandMons};
const struct WildPokemon gMeteorFalls_B1F_1R_WaterMons[] =
{
{30, 35, SPECIES_GOLBAT},
{30, 35, SPECIES_GOLBAT},
{25, 35, SPECIES_SOLROCK},
{15, 25, SPECIES_SOLROCK},
{5, 15, SPECIES_SOLROCK},
};
const struct WildPokemonInfo gMeteorFalls_B1F_1R_WaterMonsInfo = {4, gMeteorFalls_B1F_1R_WaterMons};
const struct WildPokemon gMeteorFalls_B1F_1R_FishingMons[] =
{
{5, 10, SPECIES_MAGIKARP},
{5, 10, SPECIES_GOLDEEN},
{10, 30, SPECIES_MAGIKARP},
{10, 30, SPECIES_GOLDEEN},
{10, 30, SPECIES_BARBOACH},
{25, 30, SPECIES_BARBOACH},
{30, 35, SPECIES_BARBOACH},
{30, 35, SPECIES_WHISCASH},
{35, 40, SPECIES_WHISCASH},
{40, 45, SPECIES_WHISCASH},
};
const struct WildPokemonInfo gMeteorFalls_B1F_1R_FishingMonsInfo = {30, gMeteorFalls_B1F_1R_FishingMons};
const struct WildPokemon gShoalCave_LowTideStairsRoom_LandMons[] =
{
{26, 26, SPECIES_ZUBAT},
{26, 26, SPECIES_SPHEAL},
{28, 28, SPECIES_ZUBAT},
{28, 28, SPECIES_SPHEAL},
{30, 30, SPECIES_ZUBAT},
{30, 30, SPECIES_SPHEAL},
{32, 32, SPECIES_ZUBAT},
{32, 32, SPECIES_SPHEAL},
{32, 32, SPECIES_GOLBAT},
{32, 32, SPECIES_SPHEAL},
{32, 32, SPECIES_GOLBAT},
{32, 32, SPECIES_SPHEAL},
};
const struct WildPokemonInfo gShoalCave_LowTideStairsRoom_LandMonsInfo = {10, gShoalCave_LowTideStairsRoom_LandMons};
const struct WildPokemon gShoalCave_LowTideLowerRoom_LandMons[] =
{
{26, 26, SPECIES_ZUBAT},
{26, 26, SPECIES_SPHEAL},
{28, 28, SPECIES_ZUBAT},
{28, 28, SPECIES_SPHEAL},
{30, 30, SPECIES_ZUBAT},
{30, 30, SPECIES_SPHEAL},
{32, 32, SPECIES_ZUBAT},
{32, 32, SPECIES_SPHEAL},
{32, 32, SPECIES_GOLBAT},
{32, 32, SPECIES_SPHEAL},
{32, 32, SPECIES_GOLBAT},
{32, 32, SPECIES_SPHEAL},
};
const struct WildPokemonInfo gShoalCave_LowTideLowerRoom_LandMonsInfo = {10, gShoalCave_LowTideLowerRoom_LandMons};
const struct WildPokemon gShoalCave_LowTideInnerRoom_LandMons[] =
{
{26, 26, SPECIES_ZUBAT},
{26, 26, SPECIES_SPHEAL},
{28, 28, SPECIES_ZUBAT},
{28, 28, SPECIES_SPHEAL},
{30, 30, SPECIES_ZUBAT},
{30, 30, SPECIES_SPHEAL},
{32, 32, SPECIES_ZUBAT},
{32, 32, SPECIES_SPHEAL},
{32, 32, SPECIES_GOLBAT},
{32, 32, SPECIES_SPHEAL},
{32, 32, SPECIES_GOLBAT},
{32, 32, SPECIES_SPHEAL},
};
const struct WildPokemonInfo gShoalCave_LowTideInnerRoom_LandMonsInfo = {10, gShoalCave_LowTideInnerRoom_LandMons};
const struct WildPokemon gShoalCave_LowTideInnerRoom_WaterMons[] =
{
{5, 35, SPECIES_TENTACOOL},
{5, 35, SPECIES_ZUBAT},
{25, 30, SPECIES_SPHEAL},
{25, 30, SPECIES_SPHEAL},
{25, 35, SPECIES_SPHEAL},
};
const struct WildPokemonInfo gShoalCave_LowTideInnerRoom_WaterMonsInfo = {4, gShoalCave_LowTideInnerRoom_WaterMons};
const struct WildPokemon gShoalCave_LowTideInnerRoom_FishingMons[] =
{
{5, 10, SPECIES_MAGIKARP},
{5, 10, SPECIES_TENTACOOL},
{10, 30, SPECIES_MAGIKARP},
{10, 30, SPECIES_TENTACOOL},
{10, 30, SPECIES_WAILMER},
{25, 30, SPECIES_WAILMER},
{30, 35, SPECIES_WAILMER},
{20, 25, SPECIES_WAILMER},
{35, 40, SPECIES_WAILMER},
{40, 45, SPECIES_WAILMER},
};
const struct WildPokemonInfo gShoalCave_LowTideInnerRoom_FishingMonsInfo = {10, gShoalCave_LowTideInnerRoom_FishingMons};
const struct WildPokemon gShoalCave_LowTideEntranceRoom_LandMons[] =
{
{26, 26, SPECIES_ZUBAT},
{26, 26, SPECIES_SPHEAL},
{28, 28, SPECIES_ZUBAT},
{28, 28, SPECIES_SPHEAL},
{30, 30, SPECIES_ZUBAT},
{30, 30, SPECIES_SPHEAL},
{32, 32, SPECIES_ZUBAT},
{32, 32, SPECIES_SPHEAL},
{32, 32, SPECIES_GOLBAT},
{32, 32, SPECIES_SPHEAL},
{32, 32, SPECIES_GOLBAT},
{32, 32, SPECIES_SPHEAL},
};
const struct WildPokemonInfo gShoalCave_LowTideEntranceRoom_LandMonsInfo = {10, gShoalCave_LowTideEntranceRoom_LandMons};
const struct WildPokemon gShoalCave_LowTideEntranceRoom_WaterMons[] =
{
{5, 35, SPECIES_TENTACOOL},
{5, 35, SPECIES_ZUBAT},
{25, 30, SPECIES_SPHEAL},
{25, 30, SPECIES_SPHEAL},
{25, 35, SPECIES_SPHEAL},
};
const struct WildPokemonInfo gShoalCave_LowTideEntranceRoom_WaterMonsInfo = {4, gShoalCave_LowTideEntranceRoom_WaterMons};
const struct WildPokemon gShoalCave_LowTideEntranceRoom_FishingMons[] =
{
{5, 10, SPECIES_MAGIKARP},
{5, 10, SPECIES_TENTACOOL},
{10, 30, SPECIES_MAGIKARP},
{10, 30, SPECIES_TENTACOOL},
{10, 30, SPECIES_WAILMER},
{25, 30, SPECIES_WAILMER},
{30, 35, SPECIES_WAILMER},
{20, 25, SPECIES_WAILMER},
{35, 40, SPECIES_WAILMER},
{40, 45, SPECIES_WAILMER},
};
const struct WildPokemonInfo gShoalCave_LowTideEntranceRoom_FishingMonsInfo = {10, gShoalCave_LowTideEntranceRoom_FishingMons};
const struct WildPokemon gLilycoveCity_WaterMons[] =
{
{5, 35, SPECIES_TENTACOOL},
{10, 30, SPECIES_WINGULL},
{15, 25, SPECIES_WINGULL},
{25, 30, SPECIES_PELIPPER},
{25, 30, SPECIES_PELIPPER},
};
const struct WildPokemonInfo gLilycoveCity_WaterMonsInfo = {4, gLilycoveCity_WaterMons};
const struct WildPokemon gLilycoveCity_FishingMons[] =
{
{5, 10, SPECIES_MAGIKARP},
{5, 10, SPECIES_TENTACOOL},
{10, 30, SPECIES_MAGIKARP},
{10, 30, SPECIES_TENTACOOL},
{10, 30, SPECIES_WAILMER},
{25, 30, SPECIES_WAILMER},
{30, 35, SPECIES_WAILMER},
{25, 30, SPECIES_STARYU},
{35, 40, SPECIES_WAILMER},
{40, 45, SPECIES_WAILMER},
};
const struct WildPokemonInfo gLilycoveCity_FishingMonsInfo = {10, gLilycoveCity_FishingMons};
const struct WildPokemon gDewfordTown_WaterMons[] =
{
{5, 35, SPECIES_TENTACOOL},
{10, 30, SPECIES_WINGULL},
{15, 25, SPECIES_WINGULL},
{25, 30, SPECIES_PELIPPER},
{25, 30, SPECIES_PELIPPER},
};
const struct WildPokemonInfo gDewfordTown_WaterMonsInfo = {4, gDewfordTown_WaterMons};
const struct WildPokemon gDewfordTown_FishingMons[] =
{
{5, 10, SPECIES_MAGIKARP},
{5, 10, SPECIES_TENTACOOL},
{10, 30, SPECIES_MAGIKARP},
{10, 30, SPECIES_TENTACOOL},
{10, 30, SPECIES_WAILMER},
{25, 30, SPECIES_WAILMER},
{30, 35, SPECIES_WAILMER},
{20, 25, SPECIES_WAILMER},
{35, 40, SPECIES_WAILMER},
{40, 45, SPECIES_WAILMER},
};
const struct WildPokemonInfo gDewfordTown_FishingMonsInfo = {10, gDewfordTown_FishingMons};
const struct WildPokemon gSlateportCity_WaterMons[] =
{
{5, 35, SPECIES_TENTACOOL},
{10, 30, SPECIES_WINGULL},
{15, 25, SPECIES_WINGULL},
{25, 30, SPECIES_PELIPPER},
{25, 30, SPECIES_PELIPPER},
};
const struct WildPokemonInfo gSlateportCity_WaterMonsInfo = {4, gSlateportCity_WaterMons};
const struct WildPokemon gSlateportCity_FishingMons[] =
{
{5, 10, SPECIES_MAGIKARP},
{5, 10, SPECIES_TENTACOOL},
{10, 30, SPECIES_MAGIKARP},
{10, 30, SPECIES_TENTACOOL},
{10, 30, SPECIES_WAILMER},
{25, 30, SPECIES_WAILMER},
{30, 35, SPECIES_WAILMER},
{20, 25, SPECIES_WAILMER},
{35, 40, SPECIES_WAILMER},
{40, 45, SPECIES_WAILMER},
};
const struct WildPokemonInfo gSlateportCity_FishingMonsInfo = {10, gSlateportCity_FishingMons};
const struct WildPokemon gMossdeepCity_WaterMons[] =
{
{5, 35, SPECIES_TENTACOOL},
{10, 30, SPECIES_WINGULL},
{15, 25, SPECIES_WINGULL},
{25, 30, SPECIES_PELIPPER},
{25, 30, SPECIES_PELIPPER},
};
const struct WildPokemonInfo gMossdeepCity_WaterMonsInfo = {4, gMossdeepCity_WaterMons};
const struct WildPokemon gMossdeepCity_FishingMons[] =
{
{5, 10, SPECIES_MAGIKARP},
{5, 10, SPECIES_TENTACOOL},
{10, 30, SPECIES_MAGIKARP},
{10, 30, SPECIES_TENTACOOL},
{10, 30, SPECIES_WAILMER},
{30, 35, SPECIES_SHARPEDO},
{30, 35, SPECIES_WAILMER},
{25, 30, SPECIES_WAILMER},
{35, 40, SPECIES_WAILMER},
{40, 45, SPECIES_WAILMER},
};
const struct WildPokemonInfo gMossdeepCity_FishingMonsInfo = {10, gMossdeepCity_FishingMons};
const struct WildPokemon gPacifidlogTown_WaterMons[] =
{
{5, 35, SPECIES_TENTACOOL},
{10, 30, SPECIES_WINGULL},
{15, 25, SPECIES_WINGULL},
{25, 30, SPECIES_PELIPPER},
{25, 30, SPECIES_PELIPPER},
};
const struct WildPokemonInfo gPacifidlogTown_WaterMonsInfo = {4, gPacifidlogTown_WaterMons};
const struct WildPokemon gPacifidlogTown_FishingMons[] =
{
{5, 10, SPECIES_MAGIKARP},
{5, 10, SPECIES_TENTACOOL},
{10, 30, SPECIES_MAGIKARP},
{10, 30, SPECIES_TENTACOOL},
{10, 30, SPECIES_WAILMER},
{30, 35, SPECIES_SHARPEDO},
{30, 35, SPECIES_WAILMER},
{25, 30, SPECIES_WAILMER},
{35, 40, SPECIES_WAILMER},
{40, 45, SPECIES_WAILMER},
};
const struct WildPokemonInfo gPacifidlogTown_FishingMonsInfo = {10, gPacifidlogTown_FishingMons};
const struct WildPokemon gEverGrandeCity_WaterMons[] =
{
{5, 35, SPECIES_TENTACOOL},
{10, 30, SPECIES_WINGULL},
{15, 25, SPECIES_WINGULL},
{25, 30, SPECIES_PELIPPER},
{25, 30, SPECIES_PELIPPER},
};
const struct WildPokemonInfo gEverGrandeCity_WaterMonsInfo = {4, gEverGrandeCity_WaterMons};
const struct WildPokemon gEverGrandeCity_FishingMons[] =
{
{5, 10, SPECIES_MAGIKARP},
{5, 10, SPECIES_TENTACOOL},
{10, 30, SPECIES_MAGIKARP},
{10, 30, SPECIES_LUVDISC},
{10, 30, SPECIES_WAILMER},
{30, 35, SPECIES_LUVDISC},
{30, 35, SPECIES_WAILMER},
{30, 35, SPECIES_CORSOLA},
{35, 40, SPECIES_WAILMER},
{40, 45, SPECIES_WAILMER},
};
const struct WildPokemonInfo gEverGrandeCity_FishingMonsInfo = {10, gEverGrandeCity_FishingMons};
const struct WildPokemon gPetalburgCity_WaterMons[] =
{
{20, 30, SPECIES_MARILL},
{10, 20, SPECIES_MARILL},
{30, 35, SPECIES_MARILL},
{5, 10, SPECIES_MARILL},
{5, 10, SPECIES_MARILL},
};
const struct WildPokemonInfo gPetalburgCity_WaterMonsInfo = {1, gPetalburgCity_WaterMons};
const struct WildPokemon gPetalburgCity_FishingMons[] =
{
{5, 10, SPECIES_MAGIKARP},
{5, 10, SPECIES_GOLDEEN},
{10, 30, SPECIES_MAGIKARP},
{10, 30, SPECIES_GOLDEEN},
{10, 30, SPECIES_CORPHISH},
{25, 30, SPECIES_CORPHISH},
{30, 35, SPECIES_CORPHISH},
{20, 25, SPECIES_CORPHISH},
{35, 40, SPECIES_CORPHISH},
{40, 45, SPECIES_CORPHISH},
};
const struct WildPokemonInfo gPetalburgCity_FishingMonsInfo = {10, gPetalburgCity_FishingMons};
const struct WildPokemon gUnderwater1_WaterMons[] =
{
{20, 30, SPECIES_CLAMPERL},
{20, 30, SPECIES_CHINCHOU},
{30, 35, SPECIES_CLAMPERL},
{30, 35, SPECIES_RELICANTH},
{30, 35, SPECIES_RELICANTH},
};
const struct WildPokemonInfo gUnderwater1_WaterMonsInfo = {4, gUnderwater1_WaterMons};
const struct WildPokemon gShoalCave_LowTideIceRoom_LandMons[] =
{
{26, 26, SPECIES_ZUBAT},
{26, 26, SPECIES_SPHEAL},
{28, 28, SPECIES_ZUBAT},
{28, 28, SPECIES_SPHEAL},
{30, 30, SPECIES_ZUBAT},
{30, 30, SPECIES_SPHEAL},
{26, 26, SPECIES_SNORUNT},
{32, 32, SPECIES_SPHEAL},
{30, 30, SPECIES_GOLBAT},
{28, 28, SPECIES_SNORUNT},
{32, 32, SPECIES_GOLBAT},
{30, 30, SPECIES_SNORUNT},
};
const struct WildPokemonInfo gShoalCave_LowTideIceRoom_LandMonsInfo = {10, gShoalCave_LowTideIceRoom_LandMons};
const struct WildPokemon gSkyPillar_1F_LandMons[] =
{
{33, 33, SPECIES_SABLEYE},
{34, 34, SPECIES_GOLBAT},
{35, 35, SPECIES_GOLBAT},
{34, 34, SPECIES_SABLEYE},
{36, 36, SPECIES_CLAYDOL},
{37, 37, SPECIES_BANETTE},
{38, 38, SPECIES_BANETTE},
{36, 36, SPECIES_CLAYDOL},
{37, 37, SPECIES_CLAYDOL},
{38, 38, SPECIES_CLAYDOL},
{37, 37, SPECIES_CLAYDOL},
{38, 38, SPECIES_CLAYDOL},
};
const struct WildPokemonInfo gSkyPillar_1F_LandMonsInfo = {10, gSkyPillar_1F_LandMons};
const struct WildPokemon gSootopolisCity_WaterMons[] =
{
{5, 35, SPECIES_MAGIKARP},
{10, 30, SPECIES_MAGIKARP},
{15, 25, SPECIES_MAGIKARP},
{25, 30, SPECIES_MAGIKARP},
{25, 30, SPECIES_MAGIKARP},
};
const struct WildPokemonInfo gSootopolisCity_WaterMonsInfo = {1, gSootopolisCity_WaterMons};
const struct WildPokemon gSootopolisCity_FishingMons[] =
{
{5, 10, SPECIES_MAGIKARP},
{5, 10, SPECIES_TENTACOOL},
{10, 30, SPECIES_MAGIKARP},
{10, 30, SPECIES_MAGIKARP},
{10, 30, SPECIES_MAGIKARP},
{30, 35, SPECIES_MAGIKARP},
{30, 35, SPECIES_MAGIKARP},
{35, 40, SPECIES_GYARADOS},
{35, 45, SPECIES_GYARADOS},
{5, 45, SPECIES_GYARADOS},
};
const struct WildPokemonInfo gSootopolisCity_FishingMonsInfo = {10, gSootopolisCity_FishingMons};
const struct WildPokemon gSkyPillar_3F_LandMons[] =
{
{33, 33, SPECIES_SABLEYE},
{34, 34, SPECIES_GOLBAT},
{35, 35, SPECIES_GOLBAT},
{34, 34, SPECIES_SABLEYE},
{36, 36, SPECIES_CLAYDOL},
{37, 37, SPECIES_BANETTE},
{38, 38, SPECIES_BANETTE},
{36, 36, SPECIES_CLAYDOL},
{37, 37, SPECIES_CLAYDOL},
{38, 38, SPECIES_CLAYDOL},
{37, 37, SPECIES_CLAYDOL},
{38, 38, SPECIES_CLAYDOL},
};
const struct WildPokemonInfo gSkyPillar_3F_LandMonsInfo = {10, gSkyPillar_3F_LandMons};
const struct WildPokemon gSkyPillar_5F_LandMons[] =
{
{33, 33, SPECIES_SABLEYE},
{34, 34, SPECIES_GOLBAT},
{35, 35, SPECIES_GOLBAT},
{34, 34, SPECIES_SABLEYE},
{36, 36, SPECIES_CLAYDOL},
{37, 37, SPECIES_BANETTE},
{38, 38, SPECIES_BANETTE},
{36, 36, SPECIES_CLAYDOL},
{37, 37, SPECIES_CLAYDOL},
{38, 38, SPECIES_ALTARIA},
{39, 39, SPECIES_ALTARIA},
{39, 39, SPECIES_ALTARIA},
};
const struct WildPokemonInfo gSkyPillar_5F_LandMonsInfo = {10, gSkyPillar_5F_LandMons};
const struct WildPokemon gSafariZone_Southeast_LandMons[] =
{
{33, 33, SPECIES_SUNKERN},
{34, 34, SPECIES_MAREEP},
{35, 35, SPECIES_SUNKERN},
{36, 36, SPECIES_MAREEP},
{34, 34, SPECIES_AIPOM},
{33, 33, SPECIES_SPINARAK},
{35, 35, SPECIES_HOOTHOOT},
{34, 34, SPECIES_SNUBBULL},
{36, 36, SPECIES_STANTLER},
{37, 37, SPECIES_GLIGAR},
{39, 39, SPECIES_STANTLER},
{40, 40, SPECIES_GLIGAR},
};
const struct WildPokemonInfo gSafariZone_Southeast_LandMonsInfo = {25, gSafariZone_Southeast_LandMons};
const struct WildPokemon gSafariZone_Southeast_WaterMons[] =
{
{25, 30, SPECIES_WOOPER},
{25, 30, SPECIES_MARILL},
{25, 30, SPECIES_MARILL},
{30, 35, SPECIES_MARILL},
{35, 40, SPECIES_QUAGSIRE},
};
const struct WildPokemonInfo gSafariZone_Southeast_WaterMonsInfo = {9, gSafariZone_Southeast_WaterMons};
const struct WildPokemon gSafariZone_Southeast_FishingMons[] =
{
{25, 30, SPECIES_MAGIKARP},
{25, 30, SPECIES_GOLDEEN},
{25, 30, SPECIES_MAGIKARP},
{25, 30, SPECIES_GOLDEEN},
{30, 35, SPECIES_REMORAID},
{25, 30, SPECIES_GOLDEEN},
{25, 30, SPECIES_REMORAID},
{30, 35, SPECIES_REMORAID},
{30, 35, SPECIES_REMORAID},
{35, 40, SPECIES_OCTILLERY},
};
const struct WildPokemonInfo gSafariZone_Southeast_FishingMonsInfo = {35, gSafariZone_Southeast_FishingMons};
const struct WildPokemon gSafariZone_Northeast_LandMons[] =
{
{33, 33, SPECIES_AIPOM},
{34, 34, SPECIES_TEDDIURSA},
{35, 35, SPECIES_AIPOM},
{36, 36, SPECIES_TEDDIURSA},
{34, 34, SPECIES_SUNKERN},
{33, 33, SPECIES_LEDYBA},
{35, 35, SPECIES_HOOTHOOT},
{34, 34, SPECIES_PINECO},
{36, 36, SPECIES_HOUNDOUR},
{37, 37, SPECIES_MILTANK},
{39, 39, SPECIES_HOUNDOUR},
{40, 40, SPECIES_MILTANK},
};
const struct WildPokemonInfo gSafariZone_Northeast_LandMonsInfo = {25, gSafariZone_Northeast_LandMons};
const struct WildPokemon gSafariZone_Northeast_RockSmashMons[] =
{
{25, 30, SPECIES_SHUCKLE},
{20, 25, SPECIES_SHUCKLE},
{30, 35, SPECIES_SHUCKLE},
{30, 35, SPECIES_SHUCKLE},
{35, 40, SPECIES_SHUCKLE},
};
const struct WildPokemonInfo gSafariZone_Northeast_RockSmashMonsInfo = {25, gSafariZone_Northeast_RockSmashMons};
const struct WildPokemon gMagmaHideout_1F_LandMons[] =
{
{27, 27, SPECIES_GEODUDE},
{28, 28, SPECIES_TORKOAL},
{28, 28, SPECIES_GEODUDE},
{30, 30, SPECIES_TORKOAL},
{29, 29, SPECIES_GEODUDE},
{30, 30, SPECIES_GEODUDE},
{30, 30, SPECIES_GEODUDE},
{30, 30, SPECIES_GRAVELER},
{30, 30, SPECIES_GRAVELER},
{31, 31, SPECIES_GRAVELER},
{32, 32, SPECIES_GRAVELER},
{33, 33, SPECIES_GRAVELER},
};
const struct WildPokemonInfo gMagmaHideout_1F_LandMonsInfo = {10, gMagmaHideout_1F_LandMons};
const struct WildPokemon gMagmaHideout_2F_1R_LandMons[] =
{
{27, 27, SPECIES_GEODUDE},
{28, 28, SPECIES_TORKOAL},
{28, 28, SPECIES_GEODUDE},
{30, 30, SPECIES_TORKOAL},
{29, 29, SPECIES_GEODUDE},
{30, 30, SPECIES_GEODUDE},
{30, 30, SPECIES_GEODUDE},
{30, 30, SPECIES_GRAVELER},
{30, 30, SPECIES_GRAVELER},
{31, 31, SPECIES_GRAVELER},
{32, 32, SPECIES_GRAVELER},
{33, 33, SPECIES_GRAVELER},
};
const struct WildPokemonInfo gMagmaHideout_2F_1R_LandMonsInfo = {10, gMagmaHideout_2F_1R_LandMons};
const struct WildPokemon gMagmaHideout_2F_2R_LandMons[] =
{
{27, 27, SPECIES_GEODUDE},
{28, 28, SPECIES_TORKOAL},
{28, 28, SPECIES_GEODUDE},
{30, 30, SPECIES_TORKOAL},
{29, 29, SPECIES_GEODUDE},
{30, 30, SPECIES_GEODUDE},
{30, 30, SPECIES_GEODUDE},
{30, 30, SPECIES_GRAVELER},
{30, 30, SPECIES_GRAVELER},
{31, 31, SPECIES_GRAVELER},
{32, 32, SPECIES_GRAVELER},
{33, 33, SPECIES_GRAVELER},
};
const struct WildPokemonInfo gMagmaHideout_2F_2R_LandMonsInfo = {10, gMagmaHideout_2F_2R_LandMons};
const struct WildPokemon gMagmaHideout_3F_1R_LandMons[] =
{
{27, 27, SPECIES_GEODUDE},
{28, 28, SPECIES_TORKOAL},
{28, 28, SPECIES_GEODUDE},
{30, 30, SPECIES_TORKOAL},
{29, 29, SPECIES_GEODUDE},
{30, 30, SPECIES_GEODUDE},
{30, 30, SPECIES_GEODUDE},
{30, 30, SPECIES_GRAVELER},
{30, 30, SPECIES_GRAVELER},
{31, 31, SPECIES_GRAVELER},
{32, 32, SPECIES_GRAVELER},
{33, 33, SPECIES_GRAVELER},
};
const struct WildPokemonInfo gMagmaHideout_3F_1R_LandMonsInfo = {10, gMagmaHideout_3F_1R_LandMons};
const struct WildPokemon gMagmaHideout_3F_2R_LandMons[] =
{
{27, 27, SPECIES_GEODUDE},
{28, 28, SPECIES_TORKOAL},
{28, 28, SPECIES_GEODUDE},
{30, 30, SPECIES_TORKOAL},
{29, 29, SPECIES_GEODUDE},
{30, 30, SPECIES_GEODUDE},
{30, 30, SPECIES_GEODUDE},
{30, 30, SPECIES_GRAVELER},
{30, 30, SPECIES_GRAVELER},
{31, 31, SPECIES_GRAVELER},
{32, 32, SPECIES_GRAVELER},
{33, 33, SPECIES_GRAVELER},
};
const struct WildPokemonInfo gMagmaHideout_3F_2R_LandMonsInfo = {10, gMagmaHideout_3F_2R_LandMons};
const struct WildPokemon gMagmaHideout_4F_LandMons[] =
{
{27, 27, SPECIES_GEODUDE},
{28, 28, SPECIES_TORKOAL},
{28, 28, SPECIES_GEODUDE},
{30, 30, SPECIES_TORKOAL},
{29, 29, SPECIES_GEODUDE},
{30, 30, SPECIES_GEODUDE},
{30, 30, SPECIES_GEODUDE},
{30, 30, SPECIES_GRAVELER},
{30, 30, SPECIES_GRAVELER},
{31, 31, SPECIES_GRAVELER},
{32, 32, SPECIES_GRAVELER},
{33, 33, SPECIES_GRAVELER},
};
const struct WildPokemonInfo gMagmaHideout_4F_LandMonsInfo = {10, gMagmaHideout_4F_LandMons};
const struct WildPokemon gMagmaHideout_3F_3R_LandMons[] =
{
{27, 27, SPECIES_GEODUDE},
{28, 28, SPECIES_TORKOAL},
{28, 28, SPECIES_GEODUDE},
{30, 30, SPECIES_TORKOAL},
{29, 29, SPECIES_GEODUDE},
{30, 30, SPECIES_GEODUDE},
{30, 30, SPECIES_GEODUDE},
{30, 30, SPECIES_GRAVELER},
{30, 30, SPECIES_GRAVELER},
{31, 31, SPECIES_GRAVELER},
{32, 32, SPECIES_GRAVELER},
{33, 33, SPECIES_GRAVELER},
};
const struct WildPokemonInfo gMagmaHideout_3F_3R_LandMonsInfo = {10, gMagmaHideout_3F_3R_LandMons};
const struct WildPokemon gMagmaHideout_2F_3R_LandMons[] =
{
{27, 27, SPECIES_GEODUDE},
{28, 28, SPECIES_TORKOAL},
{28, 28, SPECIES_GEODUDE},
{30, 30, SPECIES_TORKOAL},
{29, 29, SPECIES_GEODUDE},
{30, 30, SPECIES_GEODUDE},
{30, 30, SPECIES_GEODUDE},
{30, 30, SPECIES_GRAVELER},
{30, 30, SPECIES_GRAVELER},
{31, 31, SPECIES_GRAVELER},
{32, 32, SPECIES_GRAVELER},
{33, 33, SPECIES_GRAVELER},
};
const struct WildPokemonInfo gMagmaHideout_2F_3R_LandMonsInfo = {10, gMagmaHideout_2F_3R_LandMons};
const struct WildPokemon gMirageTower_1F_LandMons[] =
{
{21, 21, SPECIES_SANDSHREW},
{21, 21, SPECIES_TRAPINCH},
{20, 20, SPECIES_SANDSHREW},
{20, 20, SPECIES_TRAPINCH},
{20, 20, SPECIES_SANDSHREW},
{20, 20, SPECIES_TRAPINCH},
{22, 22, SPECIES_SANDSHREW},
{22, 22, SPECIES_TRAPINCH},
{23, 23, SPECIES_SANDSHREW},
{23, 23, SPECIES_TRAPINCH},
{24, 24, SPECIES_SANDSHREW},
{24, 24, SPECIES_TRAPINCH},
};
const struct WildPokemonInfo gMirageTower_1F_LandMonsInfo = {10, gMirageTower_1F_LandMons};
const struct WildPokemon gMirageTower_2F_LandMons[] =
{
{21, 21, SPECIES_SANDSHREW},
{21, 21, SPECIES_TRAPINCH},
{20, 20, SPECIES_SANDSHREW},
{20, 20, SPECIES_TRAPINCH},
{20, 20, SPECIES_SANDSHREW},
{20, 20, SPECIES_TRAPINCH},
{22, 22, SPECIES_SANDSHREW},
{22, 22, SPECIES_TRAPINCH},
{23, 23, SPECIES_SANDSHREW},
{23, 23, SPECIES_TRAPINCH},
{24, 24, SPECIES_SANDSHREW},
{24, 24, SPECIES_TRAPINCH},
};
const struct WildPokemonInfo gMirageTower_2F_LandMonsInfo = {10, gMirageTower_2F_LandMons};
const struct WildPokemon gMirageTower_3F_LandMons[] =
{
{21, 21, SPECIES_SANDSHREW},
{21, 21, SPECIES_TRAPINCH},
{20, 20, SPECIES_SANDSHREW},
{20, 20, SPECIES_TRAPINCH},
{20, 20, SPECIES_SANDSHREW},
{20, 20, SPECIES_TRAPINCH},
{22, 22, SPECIES_SANDSHREW},
{22, 22, SPECIES_TRAPINCH},
{23, 23, SPECIES_SANDSHREW},
{23, 23, SPECIES_TRAPINCH},
{24, 24, SPECIES_SANDSHREW},
{24, 24, SPECIES_TRAPINCH},
};
const struct WildPokemonInfo gMirageTower_3F_LandMonsInfo = {10, gMirageTower_3F_LandMons};
const struct WildPokemon gMirageTower_4F_LandMons[] =
{
{21, 21, SPECIES_SANDSHREW},
{21, 21, SPECIES_TRAPINCH},
{20, 20, SPECIES_SANDSHREW},
{20, 20, SPECIES_TRAPINCH},
{20, 20, SPECIES_SANDSHREW},
{20, 20, SPECIES_TRAPINCH},
{22, 22, SPECIES_SANDSHREW},
{22, 22, SPECIES_TRAPINCH},
{23, 23, SPECIES_SANDSHREW},
{23, 23, SPECIES_TRAPINCH},
{24, 24, SPECIES_SANDSHREW},
{24, 24, SPECIES_TRAPINCH},
};
const struct WildPokemonInfo gMirageTower_4F_LandMonsInfo = {10, gMirageTower_4F_LandMons};
const struct WildPokemon gDesertUnderpass_LandMons[] =
{
{38, 38, SPECIES_DITTO},
{35, 35, SPECIES_WHISMUR},
{40, 40, SPECIES_DITTO},
{40, 40, SPECIES_LOUDRED},
{41, 41, SPECIES_DITTO},
{36, 36, SPECIES_WHISMUR},
{38, 38, SPECIES_LOUDRED},
{42, 42, SPECIES_DITTO},
{38, 38, SPECIES_WHISMUR},
{43, 43, SPECIES_DITTO},
{44, 44, SPECIES_LOUDRED},
{45, 45, SPECIES_DITTO},
};
const struct WildPokemonInfo gDesertUnderpass_LandMonsInfo = {10, gDesertUnderpass_LandMons};
const struct WildPokemon gArtisanCave_B1F_LandMons[] =
{
{40, 40, SPECIES_SMEARGLE},
{41, 41, SPECIES_SMEARGLE},
{42, 42, SPECIES_SMEARGLE},
{43, 43, SPECIES_SMEARGLE},
{44, 44, SPECIES_SMEARGLE},
{45, 45, SPECIES_SMEARGLE},
{46, 46, SPECIES_SMEARGLE},
{47, 47, SPECIES_SMEARGLE},
{48, 48, SPECIES_SMEARGLE},
{49, 49, SPECIES_SMEARGLE},
{50, 50, SPECIES_SMEARGLE},
{50, 50, SPECIES_SMEARGLE},
};
const struct WildPokemonInfo gArtisanCave_B1F_LandMonsInfo = {10, gArtisanCave_B1F_LandMons};
const struct WildPokemon gArtisanCave_1F_LandMons[] =
{
{40, 40, SPECIES_SMEARGLE},
{41, 41, SPECIES_SMEARGLE},
{42, 42, SPECIES_SMEARGLE},
{43, 43, SPECIES_SMEARGLE},
{44, 44, SPECIES_SMEARGLE},
{45, 45, SPECIES_SMEARGLE},
{46, 46, SPECIES_SMEARGLE},
{47, 47, SPECIES_SMEARGLE},
{48, 48, SPECIES_SMEARGLE},
{49, 49, SPECIES_SMEARGLE},
{50, 50, SPECIES_SMEARGLE},
{50, 50, SPECIES_SMEARGLE},
};
const struct WildPokemonInfo gArtisanCave_1F_LandMonsInfo = {10, gArtisanCave_1F_LandMons};
const struct WildPokemon gAlteringCave1_LandMons[] =
{
{10, 10, SPECIES_ZUBAT},
{12, 12, SPECIES_ZUBAT},
{8, 8, SPECIES_ZUBAT},
{14, 14, SPECIES_ZUBAT},
{10, 10, SPECIES_ZUBAT},
{12, 12, SPECIES_ZUBAT},
{16, 16, SPECIES_ZUBAT},
{6, 6, SPECIES_ZUBAT},
{8, 8, SPECIES_ZUBAT},
{14, 14, SPECIES_ZUBAT},
{8, 8, SPECIES_ZUBAT},
{14, 14, SPECIES_ZUBAT},
};
const struct WildPokemonInfo gAlteringCave1_LandMonsInfo = {7, gAlteringCave1_LandMons};
const struct WildPokemon gAlteringCave2_LandMons[] =
{
{7, 7, SPECIES_MAREEP},
{9, 9, SPECIES_MAREEP},
{5, 5, SPECIES_MAREEP},
{11, 11, SPECIES_MAREEP},
{7, 7, SPECIES_MAREEP},
{9, 9, SPECIES_MAREEP},
{13, 13, SPECIES_MAREEP},
{3, 3, SPECIES_MAREEP},
{5, 5, SPECIES_MAREEP},
{11, 11, SPECIES_MAREEP},
{5, 5, SPECIES_MAREEP},
{11, 11, SPECIES_MAREEP},
};
const struct WildPokemonInfo gAlteringCave2_LandMonsInfo = {7, gAlteringCave2_LandMons};
const struct WildPokemon gAlteringCave3_LandMons[] =
{
{23, 23, SPECIES_PINECO},
{25, 25, SPECIES_PINECO},
{22, 22, SPECIES_PINECO},
{27, 27, SPECIES_PINECO},
{23, 23, SPECIES_PINECO},
{25, 25, SPECIES_PINECO},
{29, 29, SPECIES_PINECO},
{19, 19, SPECIES_PINECO},
{21, 21, SPECIES_PINECO},
{27, 27, SPECIES_PINECO},
{21, 21, SPECIES_PINECO},
{27, 27, SPECIES_PINECO},
};
const struct WildPokemonInfo gAlteringCave3_LandMonsInfo = {7, gAlteringCave3_LandMons};
const struct WildPokemon gAlteringCave4_LandMons[] =
{
{16, 16, SPECIES_HOUNDOUR},
{18, 18, SPECIES_HOUNDOUR},
{14, 14, SPECIES_HOUNDOUR},
{20, 20, SPECIES_HOUNDOUR},
{16, 16, SPECIES_HOUNDOUR},
{18, 18, SPECIES_HOUNDOUR},
{22, 22, SPECIES_HOUNDOUR},
{12, 12, SPECIES_HOUNDOUR},
{14, 14, SPECIES_HOUNDOUR},
{20, 20, SPECIES_HOUNDOUR},
{14, 14, SPECIES_HOUNDOUR},
{20, 20, SPECIES_HOUNDOUR},
};
const struct WildPokemonInfo gAlteringCave4_LandMonsInfo = {7, gAlteringCave4_LandMons};
const struct WildPokemon gAlteringCave5_LandMons[] =
{
{10, 10, SPECIES_TEDDIURSA},
{12, 12, SPECIES_TEDDIURSA},
{8, 8, SPECIES_TEDDIURSA},
{14, 14, SPECIES_TEDDIURSA},
{10, 10, SPECIES_TEDDIURSA},
{12, 12, SPECIES_TEDDIURSA},
{16, 16, SPECIES_TEDDIURSA},
{6, 6, SPECIES_TEDDIURSA},
{8, 8, SPECIES_TEDDIURSA},
{14, 14, SPECIES_TEDDIURSA},
{8, 8, SPECIES_TEDDIURSA},
{14, 14, SPECIES_TEDDIURSA},
};
const struct WildPokemonInfo gAlteringCave5_LandMonsInfo = {7, gAlteringCave5_LandMons};
const struct WildPokemon gAlteringCave6_LandMons[] =
{
{22, 22, SPECIES_AIPOM},
{24, 24, SPECIES_AIPOM},
{20, 20, SPECIES_AIPOM},
{26, 26, SPECIES_AIPOM},
{22, 22, SPECIES_AIPOM},
{24, 24, SPECIES_AIPOM},
{28, 28, SPECIES_AIPOM},
{18, 18, SPECIES_AIPOM},
{20, 20, SPECIES_AIPOM},
{26, 26, SPECIES_AIPOM},
{20, 20, SPECIES_AIPOM},
{26, 26, SPECIES_AIPOM},
};
const struct WildPokemonInfo gAlteringCave6_LandMonsInfo = {7, gAlteringCave6_LandMons};
const struct WildPokemon gAlteringCave7_LandMons[] =
{
{22, 22, SPECIES_SHUCKLE},
{24, 24, SPECIES_SHUCKLE},
{20, 20, SPECIES_SHUCKLE},
{26, 26, SPECIES_SHUCKLE},
{22, 22, SPECIES_SHUCKLE},
{24, 24, SPECIES_SHUCKLE},
{28, 28, SPECIES_SHUCKLE},
{18, 18, SPECIES_SHUCKLE},
{20, 20, SPECIES_SHUCKLE},
{26, 26, SPECIES_SHUCKLE},
{20, 20, SPECIES_SHUCKLE},
{26, 26, SPECIES_SHUCKLE},
};
const struct WildPokemonInfo gAlteringCave7_LandMonsInfo = {7, gAlteringCave7_LandMons};
const struct WildPokemon gAlteringCave8_LandMons[] =
{
{22, 22, SPECIES_STANTLER},
{24, 24, SPECIES_STANTLER},
{20, 20, SPECIES_STANTLER},
{26, 26, SPECIES_STANTLER},
{22, 22, SPECIES_STANTLER},
{24, 24, SPECIES_STANTLER},
{28, 28, SPECIES_STANTLER},
{18, 18, SPECIES_STANTLER},
{20, 20, SPECIES_STANTLER},
{26, 26, SPECIES_STANTLER},
{20, 20, SPECIES_STANTLER},
{26, 26, SPECIES_STANTLER},
};
const struct WildPokemonInfo gAlteringCave8_LandMonsInfo = {7, gAlteringCave8_LandMons};
const struct WildPokemon gAlteringCave9_LandMons[] =
{
{22, 22, SPECIES_SMEARGLE},
{24, 24, SPECIES_SMEARGLE},
{20, 20, SPECIES_SMEARGLE},
{26, 26, SPECIES_SMEARGLE},
{22, 22, SPECIES_SMEARGLE},
{24, 24, SPECIES_SMEARGLE},
{28, 28, SPECIES_SMEARGLE},
{18, 18, SPECIES_SMEARGLE},
{20, 20, SPECIES_SMEARGLE},
{26, 26, SPECIES_SMEARGLE},
{20, 20, SPECIES_SMEARGLE},
{26, 26, SPECIES_SMEARGLE},
};
const struct WildPokemonInfo gAlteringCave9_LandMonsInfo = {7, gAlteringCave9_LandMons};
const struct WildPokemon gMeteorFalls_StevensCave_LandMons[] =
{
{33, 33, SPECIES_GOLBAT},
{35, 35, SPECIES_GOLBAT},
{33, 33, SPECIES_GOLBAT},
{35, 35, SPECIES_SOLROCK},
{33, 33, SPECIES_SOLROCK},
{37, 37, SPECIES_SOLROCK},
{35, 35, SPECIES_GOLBAT},
{39, 39, SPECIES_SOLROCK},
{38, 38, SPECIES_GOLBAT},
{40, 40, SPECIES_GOLBAT},
{38, 38, SPECIES_GOLBAT},
{40, 40, SPECIES_GOLBAT},
};
const struct WildPokemonInfo gMeteorFalls_StevensCave_LandMonsInfo = {10, gMeteorFalls_StevensCave_LandMons};
const struct WildPokemonHeader gWildMonHeaders[] =
{
{
.mapGroup = MAP_GROUP(ROUTE101),
.mapNum = MAP_NUM(ROUTE101),
.landMonsInfo = &gRoute101_LandMonsInfo,
.waterMonsInfo = NULL,
.rockSmashMonsInfo = NULL,
.fishingMonsInfo = NULL,
},
{
.mapGroup = MAP_GROUP(ROUTE102),
.mapNum = MAP_NUM(ROUTE102),
.landMonsInfo = &gRoute102_LandMonsInfo,
.waterMonsInfo = &gRoute102_WaterMonsInfo,
.rockSmashMonsInfo = NULL,
.fishingMonsInfo = &gRoute102_FishingMonsInfo,
},
{
.mapGroup = MAP_GROUP(ROUTE103),
.mapNum = MAP_NUM(ROUTE103),
.landMonsInfo = &gRoute103_LandMonsInfo,
.waterMonsInfo = &gRoute103_WaterMonsInfo,
.rockSmashMonsInfo = NULL,
.fishingMonsInfo = &gRoute103_FishingMonsInfo,
},
{
.mapGroup = MAP_GROUP(ROUTE104),
.mapNum = MAP_NUM(ROUTE104),
.landMonsInfo = &gRoute104_LandMonsInfo,
.waterMonsInfo = &gRoute104_WaterMonsInfo,
.rockSmashMonsInfo = NULL,
.fishingMonsInfo = &gRoute104_FishingMonsInfo,
},
{
.mapGroup = MAP_GROUP(ROUTE105),
.mapNum = MAP_NUM(ROUTE105),
.landMonsInfo = NULL,
.waterMonsInfo = &gRoute105_WaterMonsInfo,
.rockSmashMonsInfo = NULL,
.fishingMonsInfo = &gRoute105_FishingMonsInfo,
},
{
.mapGroup = MAP_GROUP(ROUTE110),
.mapNum = MAP_NUM(ROUTE110),
.landMonsInfo = &gRoute110_LandMonsInfo,
.waterMonsInfo = &gRoute110_WaterMonsInfo,
.rockSmashMonsInfo = NULL,
.fishingMonsInfo = &gRoute110_FishingMonsInfo,
},
{
.mapGroup = MAP_GROUP(ROUTE111),
.mapNum = MAP_NUM(ROUTE111),
.landMonsInfo = &gRoute111_LandMonsInfo,
.waterMonsInfo = &gRoute111_WaterMonsInfo,
.rockSmashMonsInfo = &gRoute111_RockSmashMonsInfo,
.fishingMonsInfo = &gRoute111_FishingMonsInfo,
},
{
.mapGroup = MAP_GROUP(ROUTE112),
.mapNum = MAP_NUM(ROUTE112),
.landMonsInfo = &gRoute112_LandMonsInfo,
.waterMonsInfo = NULL,
.rockSmashMonsInfo = NULL,
.fishingMonsInfo = NULL,
},
{
.mapGroup = MAP_GROUP(ROUTE113),
.mapNum = MAP_NUM(ROUTE113),
.landMonsInfo = &gRoute113_LandMonsInfo,
.waterMonsInfo = NULL,
.rockSmashMonsInfo = NULL,
.fishingMonsInfo = NULL,
},
{
.mapGroup = MAP_GROUP(ROUTE114),
.mapNum = MAP_NUM(ROUTE114),
.landMonsInfo = &gRoute114_LandMonsInfo,
.waterMonsInfo = &gRoute114_WaterMonsInfo,
.rockSmashMonsInfo = &gRoute114_RockSmashMonsInfo,
.fishingMonsInfo = &gRoute114_FishingMonsInfo,
},
{
.mapGroup = MAP_GROUP(ROUTE116),
.mapNum = MAP_NUM(ROUTE116),
.landMonsInfo = &gRoute116_LandMonsInfo,
.waterMonsInfo = NULL,
.rockSmashMonsInfo = NULL,
.fishingMonsInfo = NULL,
},
{
.mapGroup = MAP_GROUP(ROUTE117),
.mapNum = MAP_NUM(ROUTE117),
.landMonsInfo = &gRoute117_LandMonsInfo,
.waterMonsInfo = &gRoute117_WaterMonsInfo,
.rockSmashMonsInfo = NULL,
.fishingMonsInfo = &gRoute117_FishingMonsInfo,
},
{
.mapGroup = MAP_GROUP(ROUTE118),
.mapNum = MAP_NUM(ROUTE118),
.landMonsInfo = &gRoute118_LandMonsInfo,
.waterMonsInfo = &gRoute118_WaterMonsInfo,
.rockSmashMonsInfo = NULL,
.fishingMonsInfo = &gRoute118_FishingMonsInfo,
},
{
.mapGroup = MAP_GROUP(ROUTE124),
.mapNum = MAP_NUM(ROUTE124),
.landMonsInfo = NULL,
.waterMonsInfo = &gRoute124_WaterMonsInfo,
.rockSmashMonsInfo = NULL,
.fishingMonsInfo = &gRoute124_FishingMonsInfo,
},
{
.mapGroup = MAP_GROUP(PETALBURG_WOODS),
.mapNum = MAP_NUM(PETALBURG_WOODS),
.landMonsInfo = &gPetalburgWoods_LandMonsInfo,
.waterMonsInfo = NULL,
.rockSmashMonsInfo = NULL,
.fishingMonsInfo = NULL,
},
{
.mapGroup = MAP_GROUP(RUSTURF_TUNNEL),
.mapNum = MAP_NUM(RUSTURF_TUNNEL),
.landMonsInfo = &gRusturfTunnel_LandMonsInfo,
.waterMonsInfo = NULL,
.rockSmashMonsInfo = NULL,
.fishingMonsInfo = NULL,
},
{
.mapGroup = MAP_GROUP(GRANITE_CAVE_1F),
.mapNum = MAP_NUM(GRANITE_CAVE_1F),
.landMonsInfo = &gGraniteCave_1F_LandMonsInfo,
.waterMonsInfo = NULL,
.rockSmashMonsInfo = NULL,
.fishingMonsInfo = NULL,
},
{
.mapGroup = MAP_GROUP(GRANITE_CAVE_B1F),
.mapNum = MAP_NUM(GRANITE_CAVE_B1F),
.landMonsInfo = &gGraniteCave_B1F_LandMonsInfo,
.waterMonsInfo = NULL,
.rockSmashMonsInfo = NULL,
.fishingMonsInfo = NULL,
},
{
.mapGroup = MAP_GROUP(MT_PYRE_1F),
.mapNum = MAP_NUM(MT_PYRE_1F),
.landMonsInfo = &gMtPyre_1F_LandMonsInfo,
.waterMonsInfo = NULL,
.rockSmashMonsInfo = NULL,
.fishingMonsInfo = NULL,
},
{
.mapGroup = MAP_GROUP(VICTORY_ROAD_1F),
.mapNum = MAP_NUM(VICTORY_ROAD_1F),
.landMonsInfo = &gVictoryRoad_1F_LandMonsInfo,
.waterMonsInfo = NULL,
.rockSmashMonsInfo = NULL,
.fishingMonsInfo = NULL,
},
{
.mapGroup = MAP_GROUP(SAFARI_ZONE_SOUTH),
.mapNum = MAP_NUM(SAFARI_ZONE_SOUTH),
2018-02-05 22:27:29 +01:00
.landMonsInfo = &gSafariZone_South_LandMonsInfo,
.waterMonsInfo = NULL,
.rockSmashMonsInfo = NULL,
.fishingMonsInfo = NULL,
},
{
.mapGroup = MAP_GROUP(UNDERWATER2),
.mapNum = MAP_NUM(UNDERWATER2),
.landMonsInfo = NULL,
.waterMonsInfo = &gUnderwater2_WaterMonsInfo,
.rockSmashMonsInfo = NULL,
.fishingMonsInfo = NULL,
},
{
.mapGroup = MAP_GROUP(ABANDONED_SHIP_ROOMS_B1F),
.mapNum = MAP_NUM(ABANDONED_SHIP_ROOMS_B1F),
.landMonsInfo = NULL,
.waterMonsInfo = &gAbandonedShip_Rooms_B1F_WaterMonsInfo,
.rockSmashMonsInfo = NULL,
.fishingMonsInfo = &gAbandonedShip_Rooms_B1F_FishingMonsInfo,
},
{
.mapGroup = MAP_GROUP(GRANITE_CAVE_B2F),
.mapNum = MAP_NUM(GRANITE_CAVE_B2F),
.landMonsInfo = &gGraniteCave_B2F_LandMonsInfo,
.waterMonsInfo = NULL,
.rockSmashMonsInfo = &gGraniteCave_B2F_RockSmashMonsInfo,
.fishingMonsInfo = NULL,
},
{
.mapGroup = MAP_GROUP(FIERY_PATH),
.mapNum = MAP_NUM(FIERY_PATH),
.landMonsInfo = &gFieryPath_LandMonsInfo,
.waterMonsInfo = NULL,
.rockSmashMonsInfo = NULL,
.fishingMonsInfo = NULL,
},
{
.mapGroup = MAP_GROUP(METEOR_FALLS_B1F_2R),
.mapNum = MAP_NUM(METEOR_FALLS_B1F_2R),
.landMonsInfo = &gMeteorFalls_B1F_2R_LandMonsInfo,
.waterMonsInfo = &gMeteorFalls_B1F_2R_WaterMonsInfo,
.rockSmashMonsInfo = NULL,
.fishingMonsInfo = &gMeteorFalls_B1F_2R_FishingMonsInfo,
},
{
.mapGroup = MAP_GROUP(JAGGED_PASS),
.mapNum = MAP_NUM(JAGGED_PASS),
.landMonsInfo = &gJaggedPass_LandMonsInfo,
.waterMonsInfo = NULL,
.rockSmashMonsInfo = NULL,
.fishingMonsInfo = NULL,
},
{
.mapGroup = MAP_GROUP(ROUTE106),
.mapNum = MAP_NUM(ROUTE106),
.landMonsInfo = NULL,
.waterMonsInfo = &gRoute106_WaterMonsInfo,
.rockSmashMonsInfo = NULL,
.fishingMonsInfo = &gRoute106_FishingMonsInfo,
},
{
.mapGroup = MAP_GROUP(ROUTE107),
.mapNum = MAP_NUM(ROUTE107),
.landMonsInfo = NULL,
.waterMonsInfo = &gRoute107_WaterMonsInfo,
.rockSmashMonsInfo = NULL,
.fishingMonsInfo = &gRoute107_FishingMonsInfo,
},
{
.mapGroup = MAP_GROUP(ROUTE108),
.mapNum = MAP_NUM(ROUTE108),
.landMonsInfo = NULL,
.waterMonsInfo = &gRoute108_WaterMonsInfo,
.rockSmashMonsInfo = NULL,
.fishingMonsInfo = &gRoute108_FishingMonsInfo,
},
{
.mapGroup = MAP_GROUP(ROUTE109),
.mapNum = MAP_NUM(ROUTE109),
.landMonsInfo = NULL,
.waterMonsInfo = &gRoute109_WaterMonsInfo,
.rockSmashMonsInfo = NULL,
.fishingMonsInfo = &gRoute109_FishingMonsInfo,
},
{
.mapGroup = MAP_GROUP(ROUTE115),
.mapNum = MAP_NUM(ROUTE115),
.landMonsInfo = &gRoute115_LandMonsInfo,
.waterMonsInfo = &gRoute115_WaterMonsInfo,
.rockSmashMonsInfo = NULL,
.fishingMonsInfo = &gRoute115_FishingMonsInfo,
},
{
.mapGroup = MAP_GROUP(NEW_MAUVILLE_INSIDE),
.mapNum = MAP_NUM(NEW_MAUVILLE_INSIDE),
.landMonsInfo = &gNewMauville_Inside_LandMonsInfo,
.waterMonsInfo = NULL,
.rockSmashMonsInfo = NULL,
.fishingMonsInfo = NULL,
},
{
.mapGroup = MAP_GROUP(ROUTE119),
.mapNum = MAP_NUM(ROUTE119),
.landMonsInfo = &gRoute119_LandMonsInfo,
.waterMonsInfo = &gRoute119_WaterMonsInfo,
.rockSmashMonsInfo = NULL,
.fishingMonsInfo = &gRoute119_FishingMonsInfo,
},
{
.mapGroup = MAP_GROUP(ROUTE120),
.mapNum = MAP_NUM(ROUTE120),
.landMonsInfo = &gRoute120_LandMonsInfo,
.waterMonsInfo = &gRoute120_WaterMonsInfo,
.rockSmashMonsInfo = NULL,
.fishingMonsInfo = &gRoute120_FishingMonsInfo,
},
{
.mapGroup = MAP_GROUP(ROUTE121),
.mapNum = MAP_NUM(ROUTE121),
.landMonsInfo = &gRoute121_LandMonsInfo,
.waterMonsInfo = &gRoute121_WaterMonsInfo,
.rockSmashMonsInfo = NULL,
.fishingMonsInfo = &gRoute121_FishingMonsInfo,
},
{
.mapGroup = MAP_GROUP(ROUTE122),
.mapNum = MAP_NUM(ROUTE122),
.landMonsInfo = NULL,
.waterMonsInfo = &gRoute122_WaterMonsInfo,
.rockSmashMonsInfo = NULL,
.fishingMonsInfo = &gRoute122_FishingMonsInfo,
},
{
.mapGroup = MAP_GROUP(ROUTE123),
.mapNum = MAP_NUM(ROUTE123),
.landMonsInfo = &gRoute123_LandMonsInfo,
.waterMonsInfo = &gRoute123_WaterMonsInfo,
.rockSmashMonsInfo = NULL,
.fishingMonsInfo = &gRoute123_FishingMonsInfo,
},
{
.mapGroup = MAP_GROUP(MT_PYRE_2F),
.mapNum = MAP_NUM(MT_PYRE_2F),
.landMonsInfo = &gMtPyre_2F_LandMonsInfo,
.waterMonsInfo = NULL,
.rockSmashMonsInfo = NULL,
.fishingMonsInfo = NULL,
},
{
.mapGroup = MAP_GROUP(MT_PYRE_3F),
.mapNum = MAP_NUM(MT_PYRE_3F),
.landMonsInfo = &gMtPyre_3F_LandMonsInfo,
.waterMonsInfo = NULL,
.rockSmashMonsInfo = NULL,
.fishingMonsInfo = NULL,
},
{
.mapGroup = MAP_GROUP(MT_PYRE_4F),
.mapNum = MAP_NUM(MT_PYRE_4F),
.landMonsInfo = &gMtPyre_4F_LandMonsInfo,
.waterMonsInfo = NULL,
.rockSmashMonsInfo = NULL,
.fishingMonsInfo = NULL,
},
{
.mapGroup = MAP_GROUP(MT_PYRE_5F),
.mapNum = MAP_NUM(MT_PYRE_5F),
.landMonsInfo = &gMtPyre_5F_LandMonsInfo,
.waterMonsInfo = NULL,
.rockSmashMonsInfo = NULL,
.fishingMonsInfo = NULL,
},
{
.mapGroup = MAP_GROUP(MT_PYRE_6F),
.mapNum = MAP_NUM(MT_PYRE_6F),
.landMonsInfo = &gMtPyre_6F_LandMonsInfo,
.waterMonsInfo = NULL,
.rockSmashMonsInfo = NULL,
.fishingMonsInfo = NULL,
},
{
.mapGroup = MAP_GROUP(MT_PYRE_EXTERIOR),
.mapNum = MAP_NUM(MT_PYRE_EXTERIOR),
.landMonsInfo = &gMtPyre_Exterior_LandMonsInfo,
.waterMonsInfo = NULL,
.rockSmashMonsInfo = NULL,
.fishingMonsInfo = NULL,
},
{
.mapGroup = MAP_GROUP(MT_PYRE_SUMMIT),
.mapNum = MAP_NUM(MT_PYRE_SUMMIT),
.landMonsInfo = &gMtPyre_Summit_LandMonsInfo,
.waterMonsInfo = NULL,
.rockSmashMonsInfo = NULL,
.fishingMonsInfo = NULL,
},
{
.mapGroup = MAP_GROUP(GRANITE_CAVE_STEVENS_ROOM),
.mapNum = MAP_NUM(GRANITE_CAVE_STEVENS_ROOM),
.landMonsInfo = &gGraniteCave_StevensRoom_LandMonsInfo,
.waterMonsInfo = NULL,
.rockSmashMonsInfo = NULL,
.fishingMonsInfo = NULL,
},
{
.mapGroup = MAP_GROUP(ROUTE125),
.mapNum = MAP_NUM(ROUTE125),
.landMonsInfo = NULL,
.waterMonsInfo = &gRoute125_WaterMonsInfo,
.rockSmashMonsInfo = NULL,
.fishingMonsInfo = &gRoute125_FishingMonsInfo,
},
{
.mapGroup = MAP_GROUP(ROUTE126),
.mapNum = MAP_NUM(ROUTE126),
.landMonsInfo = NULL,
.waterMonsInfo = &gRoute126_WaterMonsInfo,
.rockSmashMonsInfo = NULL,
.fishingMonsInfo = &gRoute126_FishingMonsInfo,
},
{
.mapGroup = MAP_GROUP(ROUTE127),
.mapNum = MAP_NUM(ROUTE127),
.landMonsInfo = NULL,
.waterMonsInfo = &gRoute127_WaterMonsInfo,
.rockSmashMonsInfo = NULL,
.fishingMonsInfo = &gRoute127_FishingMonsInfo,
},
{
.mapGroup = MAP_GROUP(ROUTE128),
.mapNum = MAP_NUM(ROUTE128),
.landMonsInfo = NULL,
.waterMonsInfo = &gRoute128_WaterMonsInfo,
.rockSmashMonsInfo = NULL,
.fishingMonsInfo = &gRoute128_FishingMonsInfo,
},
{
.mapGroup = MAP_GROUP(ROUTE129),
.mapNum = MAP_NUM(ROUTE129),
.landMonsInfo = NULL,
.waterMonsInfo = &gRoute129_WaterMonsInfo,
.rockSmashMonsInfo = NULL,
.fishingMonsInfo = &gRoute129_FishingMonsInfo,
},
{
.mapGroup = MAP_GROUP(ROUTE130),
.mapNum = MAP_NUM(ROUTE130),
.landMonsInfo = &gRoute130_LandMonsInfo,
.waterMonsInfo = &gRoute130_WaterMonsInfo,
.rockSmashMonsInfo = NULL,
.fishingMonsInfo = &gRoute130_FishingMonsInfo,
},
{
.mapGroup = MAP_GROUP(ROUTE131),
.mapNum = MAP_NUM(ROUTE131),
.landMonsInfo = NULL,
.waterMonsInfo = &gRoute131_WaterMonsInfo,
.rockSmashMonsInfo = NULL,
.fishingMonsInfo = &gRoute131_FishingMonsInfo,
},
{
.mapGroup = MAP_GROUP(ROUTE132),
.mapNum = MAP_NUM(ROUTE132),
.landMonsInfo = NULL,
.waterMonsInfo = &gRoute132_WaterMonsInfo,
.rockSmashMonsInfo = NULL,
.fishingMonsInfo = &gRoute132_FishingMonsInfo,
},
{
.mapGroup = MAP_GROUP(ROUTE133),
.mapNum = MAP_NUM(ROUTE133),
.landMonsInfo = NULL,
.waterMonsInfo = &gRoute133_WaterMonsInfo,
.rockSmashMonsInfo = NULL,
.fishingMonsInfo = &gRoute133_FishingMonsInfo,
},
{
.mapGroup = MAP_GROUP(ROUTE134),
.mapNum = MAP_NUM(ROUTE134),
.landMonsInfo = NULL,
.waterMonsInfo = &gRoute134_WaterMonsInfo,
.rockSmashMonsInfo = NULL,
.fishingMonsInfo = &gRoute134_FishingMonsInfo,
},
{
.mapGroup = MAP_GROUP(ABANDONED_SHIP_HIDDEN_FLOOR_CORRIDORS),
.mapNum = MAP_NUM(ABANDONED_SHIP_HIDDEN_FLOOR_CORRIDORS),
.landMonsInfo = NULL,
.waterMonsInfo = &gAbandonedShip_HiddenFloorCorridors_WaterMonsInfo,
.rockSmashMonsInfo = NULL,
.fishingMonsInfo = &gAbandonedShip_HiddenFloorCorridors_FishingMonsInfo,
},
{
.mapGroup = MAP_GROUP(SEAFLOOR_CAVERN_ROOM1),
.mapNum = MAP_NUM(SEAFLOOR_CAVERN_ROOM1),
.landMonsInfo = &gSeafloorCavern_Room1_LandMonsInfo,
.waterMonsInfo = NULL,
.rockSmashMonsInfo = NULL,
.fishingMonsInfo = NULL,
},
{
.mapGroup = MAP_GROUP(SEAFLOOR_CAVERN_ROOM2),
.mapNum = MAP_NUM(SEAFLOOR_CAVERN_ROOM2),
.landMonsInfo = &gSeafloorCavern_Room2_LandMonsInfo,
.waterMonsInfo = NULL,
.rockSmashMonsInfo = NULL,
.fishingMonsInfo = NULL,
},
{
.mapGroup = MAP_GROUP(SEAFLOOR_CAVERN_ROOM3),
.mapNum = MAP_NUM(SEAFLOOR_CAVERN_ROOM3),
.landMonsInfo = &gSeafloorCavern_Room3_LandMonsInfo,
.waterMonsInfo = NULL,
.rockSmashMonsInfo = NULL,
.fishingMonsInfo = NULL,
},
{
.mapGroup = MAP_GROUP(SEAFLOOR_CAVERN_ROOM4),
.mapNum = MAP_NUM(SEAFLOOR_CAVERN_ROOM4),
.landMonsInfo = &gSeafloorCavern_Room4_LandMonsInfo,
.waterMonsInfo = NULL,
.rockSmashMonsInfo = NULL,
.fishingMonsInfo = NULL,
},
{
.mapGroup = MAP_GROUP(SEAFLOOR_CAVERN_ROOM5),
.mapNum = MAP_NUM(SEAFLOOR_CAVERN_ROOM5),
.landMonsInfo = &gSeafloorCavern_Room5_LandMonsInfo,
.waterMonsInfo = NULL,
.rockSmashMonsInfo = NULL,
.fishingMonsInfo = NULL,
},
{
.mapGroup = MAP_GROUP(SEAFLOOR_CAVERN_ROOM6),
.mapNum = MAP_NUM(SEAFLOOR_CAVERN_ROOM6),
.landMonsInfo = &gSeafloorCavern_Room6_LandMonsInfo,
.waterMonsInfo = &gSeafloorCavern_Room6_WaterMonsInfo,
.rockSmashMonsInfo = NULL,
.fishingMonsInfo = &gSeafloorCavern_Room6_FishingMonsInfo,
},
{
.mapGroup = MAP_GROUP(SEAFLOOR_CAVERN_ROOM7),
.mapNum = MAP_NUM(SEAFLOOR_CAVERN_ROOM7),
.landMonsInfo = &gSeafloorCavern_Room7_LandMonsInfo,
.waterMonsInfo = &gSeafloorCavern_Room7_WaterMonsInfo,
.rockSmashMonsInfo = NULL,
.fishingMonsInfo = &gSeafloorCavern_Room7_FishingMonsInfo,
},
{
.mapGroup = MAP_GROUP(SEAFLOOR_CAVERN_ROOM8),
.mapNum = MAP_NUM(SEAFLOOR_CAVERN_ROOM8),
.landMonsInfo = &gSeafloorCavern_Room8_LandMonsInfo,
.waterMonsInfo = NULL,
.rockSmashMonsInfo = NULL,
.fishingMonsInfo = NULL,
},
{
.mapGroup = MAP_GROUP(SEAFLOOR_CAVERN_ENTRANCE),
.mapNum = MAP_NUM(SEAFLOOR_CAVERN_ENTRANCE),
.landMonsInfo = NULL,
.waterMonsInfo = &gSeafloorCavern_Entrance_WaterMonsInfo,
.rockSmashMonsInfo = NULL,
.fishingMonsInfo = &gSeafloorCavern_Entrance_FishingMonsInfo,
},
{
.mapGroup = MAP_GROUP(CAVE_OF_ORIGIN_ENTRANCE),
.mapNum = MAP_NUM(CAVE_OF_ORIGIN_ENTRANCE),
.landMonsInfo = &gCaveOfOrigin_Entrance_LandMonsInfo,
.waterMonsInfo = NULL,
.rockSmashMonsInfo = NULL,
.fishingMonsInfo = NULL,
},
{
.mapGroup = MAP_GROUP(CAVE_OF_ORIGIN_1F),
.mapNum = MAP_NUM(CAVE_OF_ORIGIN_1F),
.landMonsInfo = &gCaveOfOrigin_1F_LandMonsInfo,
.waterMonsInfo = NULL,
.rockSmashMonsInfo = NULL,
.fishingMonsInfo = NULL,
},
{
2018-06-21 00:42:01 +02:00
.mapGroup = MAP_GROUP(CAVE_OF_ORIGIN_UNUSED_RUBY_SAPPHIRE_MAP1),
.mapNum = MAP_NUM(CAVE_OF_ORIGIN_UNUSED_RUBY_SAPPHIRE_MAP1),
2018-02-05 22:27:29 +01:00
.landMonsInfo = &gCaveOfOrigin_UnusedRubySapphireMap1_LandMonsInfo,
.waterMonsInfo = NULL,
.rockSmashMonsInfo = NULL,
.fishingMonsInfo = NULL,
},
{
2018-06-21 00:42:01 +02:00
.mapGroup = MAP_GROUP(CAVE_OF_ORIGIN_UNUSED_RUBY_SAPPHIRE_MAP2),
.mapNum = MAP_NUM(CAVE_OF_ORIGIN_UNUSED_RUBY_SAPPHIRE_MAP2),
2018-02-05 22:27:29 +01:00
.landMonsInfo = &gCaveOfOrigin_UnusedRubySapphireMap2_LandMonsInfo,
.waterMonsInfo = NULL,
.rockSmashMonsInfo = NULL,
.fishingMonsInfo = NULL,
},
{
2018-06-21 00:42:01 +02:00
.mapGroup = MAP_GROUP(CAVE_OF_ORIGIN_UNUSED_RUBY_SAPPHIRE_MAP3),
.mapNum = MAP_NUM(CAVE_OF_ORIGIN_UNUSED_RUBY_SAPPHIRE_MAP3),
2018-02-05 22:27:29 +01:00
.landMonsInfo = &gCaveOfOrigin_UnusedRubySapphireMap3_LandMonsInfo,
.waterMonsInfo = NULL,
.rockSmashMonsInfo = NULL,
.fishingMonsInfo = NULL,
},
{
.mapGroup = MAP_GROUP(NEW_MAUVILLE_ENTRANCE),
.mapNum = MAP_NUM(NEW_MAUVILLE_ENTRANCE),
.landMonsInfo = &gNewMauville_Entrance_LandMonsInfo,
.waterMonsInfo = NULL,
.rockSmashMonsInfo = NULL,
.fishingMonsInfo = NULL,
},
{
.mapGroup = MAP_GROUP(SAFARI_ZONE_SOUTHWEST),
.mapNum = MAP_NUM(SAFARI_ZONE_SOUTHWEST),
.landMonsInfo = &gSafariZone_Southwest_LandMonsInfo,
.waterMonsInfo = &gSafariZone_Southwest_WaterMonsInfo,
.rockSmashMonsInfo = NULL,
.fishingMonsInfo = &gSafariZone_Southwest_FishingMonsInfo,
},
{
.mapGroup = MAP_GROUP(SAFARI_ZONE_NORTH),
.mapNum = MAP_NUM(SAFARI_ZONE_NORTH),
2018-02-05 22:27:29 +01:00
.landMonsInfo = &gSafariZone_North_LandMonsInfo,
.waterMonsInfo = NULL,
.rockSmashMonsInfo = &gSafariZone_North_RockSmashMonsInfo,
.fishingMonsInfo = NULL,
},
{
.mapGroup = MAP_GROUP(SAFARI_ZONE_NORTHWEST),
.mapNum = MAP_NUM(SAFARI_ZONE_NORTHWEST),
.landMonsInfo = &gSafariZone_Northwest_LandMonsInfo,
.waterMonsInfo = &gSafariZone_Northwest_WaterMonsInfo,
.rockSmashMonsInfo = NULL,
.fishingMonsInfo = &gSafariZone_Northwest_FishingMonsInfo,
},
{
.mapGroup = MAP_GROUP(VICTORY_ROAD_B1F),
.mapNum = MAP_NUM(VICTORY_ROAD_B1F),
.landMonsInfo = &gVictoryRoad_B1F_LandMonsInfo,
.waterMonsInfo = NULL,
.rockSmashMonsInfo = &gVictoryRoad_B1F_RockSmashMonsInfo,
.fishingMonsInfo = NULL,
},
{
.mapGroup = MAP_GROUP(VICTORY_ROAD_B2F),
.mapNum = MAP_NUM(VICTORY_ROAD_B2F),
.landMonsInfo = &gVictoryRoad_B2F_LandMonsInfo,
.waterMonsInfo = &gVictoryRoad_B2F_WaterMonsInfo,
.rockSmashMonsInfo = NULL,
.fishingMonsInfo = &gVictoryRoad_B2F_FishingMonsInfo,
},
{
.mapGroup = MAP_GROUP(METEOR_FALLS_1F_1R),
.mapNum = MAP_NUM(METEOR_FALLS_1F_1R),
.landMonsInfo = &gMeteorFalls_1F_1R_LandMonsInfo,
.waterMonsInfo = &gMeteorFalls_1F_1R_WaterMonsInfo,
.rockSmashMonsInfo = NULL,
.fishingMonsInfo = &gMeteorFalls_1F_1R_FishingMonsInfo,
},
{
.mapGroup = MAP_GROUP(METEOR_FALLS_1F_2R),
.mapNum = MAP_NUM(METEOR_FALLS_1F_2R),
.landMonsInfo = &gMeteorFalls_1F_2R_LandMonsInfo,
.waterMonsInfo = &gMeteorFalls_1F_2R_WaterMonsInfo,
.rockSmashMonsInfo = NULL,
.fishingMonsInfo = &gMeteorFalls_1F_2R_FishingMonsInfo,
},
{
.mapGroup = MAP_GROUP(METEOR_FALLS_B1F_1R),
.mapNum = MAP_NUM(METEOR_FALLS_B1F_1R),
.landMonsInfo = &gMeteorFalls_B1F_1R_LandMonsInfo,
.waterMonsInfo = &gMeteorFalls_B1F_1R_WaterMonsInfo,
.rockSmashMonsInfo = NULL,
.fishingMonsInfo = &gMeteorFalls_B1F_1R_FishingMonsInfo,
},
{
.mapGroup = MAP_GROUP(SHOAL_CAVE_LOW_TIDE_STAIRS_ROOM),
.mapNum = MAP_NUM(SHOAL_CAVE_LOW_TIDE_STAIRS_ROOM),
.landMonsInfo = &gShoalCave_LowTideStairsRoom_LandMonsInfo,
.waterMonsInfo = NULL,
.rockSmashMonsInfo = NULL,
.fishingMonsInfo = NULL,
},
{
.mapGroup = MAP_GROUP(SHOAL_CAVE_LOW_TIDE_LOWER_ROOM),
.mapNum = MAP_NUM(SHOAL_CAVE_LOW_TIDE_LOWER_ROOM),
.landMonsInfo = &gShoalCave_LowTideLowerRoom_LandMonsInfo,
.waterMonsInfo = NULL,
.rockSmashMonsInfo = NULL,
.fishingMonsInfo = NULL,
},
{
.mapGroup = MAP_GROUP(SHOAL_CAVE_LOW_TIDE_INNER_ROOM),
.mapNum = MAP_NUM(SHOAL_CAVE_LOW_TIDE_INNER_ROOM),
.landMonsInfo = &gShoalCave_LowTideInnerRoom_LandMonsInfo,
.waterMonsInfo = &gShoalCave_LowTideInnerRoom_WaterMonsInfo,
.rockSmashMonsInfo = NULL,
.fishingMonsInfo = &gShoalCave_LowTideInnerRoom_FishingMonsInfo,
},
{
.mapGroup = MAP_GROUP(SHOAL_CAVE_LOW_TIDE_ENTRANCE_ROOM),
.mapNum = MAP_NUM(SHOAL_CAVE_LOW_TIDE_ENTRANCE_ROOM),
.landMonsInfo = &gShoalCave_LowTideEntranceRoom_LandMonsInfo,
.waterMonsInfo = &gShoalCave_LowTideEntranceRoom_WaterMonsInfo,
.rockSmashMonsInfo = NULL,
.fishingMonsInfo = &gShoalCave_LowTideEntranceRoom_FishingMonsInfo,
},
{
.mapGroup = MAP_GROUP(LILYCOVE_CITY),
.mapNum = MAP_NUM(LILYCOVE_CITY),
.landMonsInfo = NULL,
.waterMonsInfo = &gLilycoveCity_WaterMonsInfo,
.rockSmashMonsInfo = NULL,
.fishingMonsInfo = &gLilycoveCity_FishingMonsInfo,
},
{
.mapGroup = MAP_GROUP(DEWFORD_TOWN),
.mapNum = MAP_NUM(DEWFORD_TOWN),
.landMonsInfo = NULL,
.waterMonsInfo = &gDewfordTown_WaterMonsInfo,
.rockSmashMonsInfo = NULL,
.fishingMonsInfo = &gDewfordTown_FishingMonsInfo,
},
{
.mapGroup = MAP_GROUP(SLATEPORT_CITY),
.mapNum = MAP_NUM(SLATEPORT_CITY),
.landMonsInfo = NULL,
.waterMonsInfo = &gSlateportCity_WaterMonsInfo,
.rockSmashMonsInfo = NULL,
.fishingMonsInfo = &gSlateportCity_FishingMonsInfo,
},
{
.mapGroup = MAP_GROUP(MOSSDEEP_CITY),
.mapNum = MAP_NUM(MOSSDEEP_CITY),
.landMonsInfo = NULL,
.waterMonsInfo = &gMossdeepCity_WaterMonsInfo,
.rockSmashMonsInfo = NULL,
.fishingMonsInfo = &gMossdeepCity_FishingMonsInfo,
},
{
.mapGroup = MAP_GROUP(PACIFIDLOG_TOWN),
.mapNum = MAP_NUM(PACIFIDLOG_TOWN),
.landMonsInfo = NULL,
.waterMonsInfo = &gPacifidlogTown_WaterMonsInfo,
.rockSmashMonsInfo = NULL,
.fishingMonsInfo = &gPacifidlogTown_FishingMonsInfo,
},
{
.mapGroup = MAP_GROUP(EVER_GRANDE_CITY),
.mapNum = MAP_NUM(EVER_GRANDE_CITY),
.landMonsInfo = NULL,
.waterMonsInfo = &gEverGrandeCity_WaterMonsInfo,
.rockSmashMonsInfo = NULL,
.fishingMonsInfo = &gEverGrandeCity_FishingMonsInfo,
},
{
.mapGroup = MAP_GROUP(PETALBURG_CITY),
.mapNum = MAP_NUM(PETALBURG_CITY),
.landMonsInfo = NULL,
.waterMonsInfo = &gPetalburgCity_WaterMonsInfo,
.rockSmashMonsInfo = NULL,
.fishingMonsInfo = &gPetalburgCity_FishingMonsInfo,
},
{
.mapGroup = MAP_GROUP(UNDERWATER1),
.mapNum = MAP_NUM(UNDERWATER1),
.landMonsInfo = NULL,
.waterMonsInfo = &gUnderwater1_WaterMonsInfo,
.rockSmashMonsInfo = NULL,
.fishingMonsInfo = NULL,
},
{
.mapGroup = MAP_GROUP(SHOAL_CAVE_LOW_TIDE_ICE_ROOM),
.mapNum = MAP_NUM(SHOAL_CAVE_LOW_TIDE_ICE_ROOM),
.landMonsInfo = &gShoalCave_LowTideIceRoom_LandMonsInfo,
.waterMonsInfo = NULL,
.rockSmashMonsInfo = NULL,
.fishingMonsInfo = NULL,
},
{
.mapGroup = MAP_GROUP(SKY_PILLAR_1F),
.mapNum = MAP_NUM(SKY_PILLAR_1F),
.landMonsInfo = &gSkyPillar_1F_LandMonsInfo,
.waterMonsInfo = NULL,
.rockSmashMonsInfo = NULL,
.fishingMonsInfo = NULL,
},
{
.mapGroup = MAP_GROUP(SOOTOPOLIS_CITY),
.mapNum = MAP_NUM(SOOTOPOLIS_CITY),
.landMonsInfo = NULL,
.waterMonsInfo = &gSootopolisCity_WaterMonsInfo,
.rockSmashMonsInfo = NULL,
.fishingMonsInfo = &gSootopolisCity_FishingMonsInfo,
},
{
.mapGroup = MAP_GROUP(SKY_PILLAR_3F),
.mapNum = MAP_NUM(SKY_PILLAR_3F),
.landMonsInfo = &gSkyPillar_3F_LandMonsInfo,
.waterMonsInfo = NULL,
.rockSmashMonsInfo = NULL,
.fishingMonsInfo = NULL,
},
{
.mapGroup = MAP_GROUP(SKY_PILLAR_5F),
.mapNum = MAP_NUM(SKY_PILLAR_5F),
.landMonsInfo = &gSkyPillar_5F_LandMonsInfo,
.waterMonsInfo = NULL,
.rockSmashMonsInfo = NULL,
.fishingMonsInfo = NULL,
},
{
.mapGroup = MAP_GROUP(SAFARI_ZONE_SOUTHEAST),
.mapNum = MAP_NUM(SAFARI_ZONE_SOUTHEAST),
2018-02-05 22:27:29 +01:00
.landMonsInfo = &gSafariZone_Southeast_LandMonsInfo,
.waterMonsInfo = &gSafariZone_Southeast_WaterMonsInfo,
.rockSmashMonsInfo = NULL,
.fishingMonsInfo = &gSafariZone_Southeast_FishingMonsInfo,
},
{
.mapGroup = MAP_GROUP(SAFARI_ZONE_NORTHEAST),
.mapNum = MAP_NUM(SAFARI_ZONE_NORTHEAST),
2018-02-05 22:27:29 +01:00
.landMonsInfo = &gSafariZone_Northeast_LandMonsInfo,
.waterMonsInfo = NULL,
.rockSmashMonsInfo = &gSafariZone_Northeast_RockSmashMonsInfo,
.fishingMonsInfo = NULL,
},
{
.mapGroup = MAP_GROUP(MAGMA_HIDEOUT_1F),
.mapNum = MAP_NUM(MAGMA_HIDEOUT_1F),
.landMonsInfo = &gMagmaHideout_1F_LandMonsInfo,
.waterMonsInfo = NULL,
.rockSmashMonsInfo = NULL,
.fishingMonsInfo = NULL,
},
{
.mapGroup = MAP_GROUP(MAGMA_HIDEOUT_2F_1R),
.mapNum = MAP_NUM(MAGMA_HIDEOUT_2F_1R),
.landMonsInfo = &gMagmaHideout_2F_1R_LandMonsInfo,
.waterMonsInfo = NULL,
.rockSmashMonsInfo = NULL,
.fishingMonsInfo = NULL,
},
{
.mapGroup = MAP_GROUP(MAGMA_HIDEOUT_2F_2R),
.mapNum = MAP_NUM(MAGMA_HIDEOUT_2F_2R),
.landMonsInfo = &gMagmaHideout_2F_2R_LandMonsInfo,
.waterMonsInfo = NULL,
.rockSmashMonsInfo = NULL,
.fishingMonsInfo = NULL,
},
{
.mapGroup = MAP_GROUP(MAGMA_HIDEOUT_3F_1R),
.mapNum = MAP_NUM(MAGMA_HIDEOUT_3F_1R),
.landMonsInfo = &gMagmaHideout_3F_1R_LandMonsInfo,
.waterMonsInfo = NULL,
.rockSmashMonsInfo = NULL,
.fishingMonsInfo = NULL,
},
{
.mapGroup = MAP_GROUP(MAGMA_HIDEOUT_3F_2R),
.mapNum = MAP_NUM(MAGMA_HIDEOUT_3F_2R),
.landMonsInfo = &gMagmaHideout_3F_2R_LandMonsInfo,
.waterMonsInfo = NULL,
.rockSmashMonsInfo = NULL,
.fishingMonsInfo = NULL,
},
{
.mapGroup = MAP_GROUP(MAGMA_HIDEOUT_4F),
.mapNum = MAP_NUM(MAGMA_HIDEOUT_4F),
.landMonsInfo = &gMagmaHideout_4F_LandMonsInfo,
.waterMonsInfo = NULL,
.rockSmashMonsInfo = NULL,
.fishingMonsInfo = NULL,
},
{
.mapGroup = MAP_GROUP(MAGMA_HIDEOUT_3F_3R),
.mapNum = MAP_NUM(MAGMA_HIDEOUT_3F_3R),
.landMonsInfo = &gMagmaHideout_3F_3R_LandMonsInfo,
.waterMonsInfo = NULL,
.rockSmashMonsInfo = NULL,
.fishingMonsInfo = NULL,
},
{
.mapGroup = MAP_GROUP(MAGMA_HIDEOUT_2F_3R),
.mapNum = MAP_NUM(MAGMA_HIDEOUT_2F_3R),
.landMonsInfo = &gMagmaHideout_2F_3R_LandMonsInfo,
.waterMonsInfo = NULL,
.rockSmashMonsInfo = NULL,
.fishingMonsInfo = NULL,
},
{
.mapGroup = MAP_GROUP(MIRAGE_TOWER_1F),
.mapNum = MAP_NUM(MIRAGE_TOWER_1F),
.landMonsInfo = &gMirageTower_1F_LandMonsInfo,
.waterMonsInfo = NULL,
.rockSmashMonsInfo = NULL,
.fishingMonsInfo = NULL,
},
{
.mapGroup = MAP_GROUP(MIRAGE_TOWER_2F),
.mapNum = MAP_NUM(MIRAGE_TOWER_2F),
.landMonsInfo = &gMirageTower_2F_LandMonsInfo,
.waterMonsInfo = NULL,
.rockSmashMonsInfo = NULL,
.fishingMonsInfo = NULL,
},
{
.mapGroup = MAP_GROUP(MIRAGE_TOWER_3F),
.mapNum = MAP_NUM(MIRAGE_TOWER_3F),
.landMonsInfo = &gMirageTower_3F_LandMonsInfo,
.waterMonsInfo = NULL,
.rockSmashMonsInfo = NULL,
.fishingMonsInfo = NULL,
},
{
.mapGroup = MAP_GROUP(MIRAGE_TOWER_4F),
.mapNum = MAP_NUM(MIRAGE_TOWER_4F),
.landMonsInfo = &gMirageTower_4F_LandMonsInfo,
.waterMonsInfo = NULL,
.rockSmashMonsInfo = NULL,
.fishingMonsInfo = NULL,
},
{
.mapGroup = MAP_GROUP(DESERT_UNDERPASS),
.mapNum = MAP_NUM(DESERT_UNDERPASS),
.landMonsInfo = &gDesertUnderpass_LandMonsInfo,
.waterMonsInfo = NULL,
.rockSmashMonsInfo = NULL,
.fishingMonsInfo = NULL,
},
{
.mapGroup = MAP_GROUP(ARTISAN_CAVE_B1F),
.mapNum = MAP_NUM(ARTISAN_CAVE_B1F),
.landMonsInfo = &gArtisanCave_B1F_LandMonsInfo,
.waterMonsInfo = NULL,
.rockSmashMonsInfo = NULL,
.fishingMonsInfo = NULL,
},
{
.mapGroup = MAP_GROUP(ARTISAN_CAVE_1F),
.mapNum = MAP_NUM(ARTISAN_CAVE_1F),
.landMonsInfo = &gArtisanCave_1F_LandMonsInfo,
.waterMonsInfo = NULL,
.rockSmashMonsInfo = NULL,
.fishingMonsInfo = NULL,
},
{
.mapGroup = MAP_GROUP(ALTERING_CAVE),
.mapNum = MAP_NUM(ALTERING_CAVE),
.landMonsInfo = &gAlteringCave1_LandMonsInfo,
.waterMonsInfo = NULL,
.rockSmashMonsInfo = NULL,
.fishingMonsInfo = NULL,
},
{
.mapGroup = MAP_GROUP(ALTERING_CAVE),
.mapNum = MAP_NUM(ALTERING_CAVE),
.landMonsInfo = &gAlteringCave2_LandMonsInfo,
.waterMonsInfo = NULL,
.rockSmashMonsInfo = NULL,
.fishingMonsInfo = NULL,
},
{
.mapGroup = MAP_GROUP(ALTERING_CAVE),
.mapNum = MAP_NUM(ALTERING_CAVE),
.landMonsInfo = &gAlteringCave3_LandMonsInfo,
.waterMonsInfo = NULL,
.rockSmashMonsInfo = NULL,
.fishingMonsInfo = NULL,
},
{
.mapGroup = MAP_GROUP(ALTERING_CAVE),
.mapNum = MAP_NUM(ALTERING_CAVE),
.landMonsInfo = &gAlteringCave4_LandMonsInfo,
.waterMonsInfo = NULL,
.rockSmashMonsInfo = NULL,
.fishingMonsInfo = NULL,
},
{
.mapGroup = MAP_GROUP(ALTERING_CAVE),
.mapNum = MAP_NUM(ALTERING_CAVE),
.landMonsInfo = &gAlteringCave5_LandMonsInfo,
.waterMonsInfo = NULL,
.rockSmashMonsInfo = NULL,
.fishingMonsInfo = NULL,
},
{
.mapGroup = MAP_GROUP(ALTERING_CAVE),
.mapNum = MAP_NUM(ALTERING_CAVE),
.landMonsInfo = &gAlteringCave6_LandMonsInfo,
.waterMonsInfo = NULL,
.rockSmashMonsInfo = NULL,
.fishingMonsInfo = NULL,
},
{
.mapGroup = MAP_GROUP(ALTERING_CAVE),
.mapNum = MAP_NUM(ALTERING_CAVE),
.landMonsInfo = &gAlteringCave7_LandMonsInfo,
.waterMonsInfo = NULL,
.rockSmashMonsInfo = NULL,
.fishingMonsInfo = NULL,
},
{
.mapGroup = MAP_GROUP(ALTERING_CAVE),
.mapNum = MAP_NUM(ALTERING_CAVE),
.landMonsInfo = &gAlteringCave8_LandMonsInfo,
.waterMonsInfo = NULL,
.rockSmashMonsInfo = NULL,
.fishingMonsInfo = NULL,
},
{
.mapGroup = MAP_GROUP(ALTERING_CAVE),
.mapNum = MAP_NUM(ALTERING_CAVE),
.landMonsInfo = &gAlteringCave9_LandMonsInfo,
.waterMonsInfo = NULL,
.rockSmashMonsInfo = NULL,
.fishingMonsInfo = NULL,
},
{
.mapGroup = MAP_GROUP(METEOR_FALLS_STEVENS_CAVE),
.mapNum = MAP_NUM(METEOR_FALLS_STEVENS_CAVE),
.landMonsInfo = &gMeteorFalls_StevensCave_LandMonsInfo,
.waterMonsInfo = NULL,
.rockSmashMonsInfo = NULL,
.fishingMonsInfo = NULL,
},
{
.mapGroup = MAP_GROUP(UNDEFINED),
.mapNum = MAP_NUM(UNDEFINED),
.landMonsInfo = NULL,
.waterMonsInfo = NULL,
.rockSmashMonsInfo = NULL,
.fishingMonsInfo = NULL,
},
};
const struct WildPokemon gBattlePyramidPlaceholders_1[] =
{
{5, 5, SPECIES_BULBASAUR},
{5, 5, SPECIES_BULBASAUR},
{5, 5, SPECIES_BULBASAUR},
{5, 5, SPECIES_BULBASAUR},
{5, 5, SPECIES_IVYSAUR},
{5, 5, SPECIES_IVYSAUR},
{5, 5, SPECIES_VENUSAUR},
{5, 5, SPECIES_VENUSAUR},
{5, 5, SPECIES_VENUSAUR},
{5, 5, SPECIES_CHARMANDER},
{5, 5, SPECIES_VENUSAUR},
{5, 5, SPECIES_CHARMANDER},
};
const struct WildPokemonInfo gBattlePyramidPlaceholders_1Info = {4, gBattlePyramidPlaceholders_1};
const struct WildPokemon gBattlePyramidPlaceholders_2[] =
{
{5, 5, SPECIES_IVYSAUR},
{5, 5, SPECIES_IVYSAUR},
{5, 5, SPECIES_IVYSAUR},
{5, 5, SPECIES_IVYSAUR},
{5, 5, SPECIES_VENUSAUR},
{5, 5, SPECIES_VENUSAUR},
{5, 5, SPECIES_CHARMANDER},
{5, 5, SPECIES_CHARMANDER},
{5, 5, SPECIES_CHARMANDER},
{5, 5, SPECIES_CHARMELEON},
{5, 5, SPECIES_CHARMELEON},
{5, 5, SPECIES_CHARMANDER},
};
const struct WildPokemonInfo gBattlePyramidPlaceholders_2Info = {4, gBattlePyramidPlaceholders_2};
const struct WildPokemon gBattlePyramidPlaceholders_3[] =
{
{5, 5, SPECIES_VENUSAUR},
{5, 5, SPECIES_VENUSAUR},
{5, 5, SPECIES_VENUSAUR},
{5, 5, SPECIES_VENUSAUR},
{5, 5, SPECIES_CHARMANDER},
{5, 5, SPECIES_CHARMANDER},
{5, 5, SPECIES_CHARMELEON},
{5, 5, SPECIES_CHARMELEON},
{5, 5, SPECIES_CHARMELEON},
{5, 5, SPECIES_CHARIZARD},
{5, 5, SPECIES_CHARMELEON},
{5, 5, SPECIES_CHARIZARD},
};
const struct WildPokemonInfo gBattlePyramidPlaceholders_3Info = {4, gBattlePyramidPlaceholders_3};
const struct WildPokemon gBattlePyramidPlaceholders_4[] =
{
{5, 5, SPECIES_CHARMANDER},
{5, 5, SPECIES_CHARMANDER},
{5, 5, SPECIES_CHARMANDER},
{5, 5, SPECIES_CHARMANDER},
{5, 5, SPECIES_CHARMELEON},
{5, 5, SPECIES_CHARMELEON},
{5, 5, SPECIES_CHARIZARD},
{5, 5, SPECIES_CHARIZARD},
{5, 5, SPECIES_CHARIZARD},
{5, 5, SPECIES_SQUIRTLE},
{5, 5, SPECIES_CHARIZARD},
{5, 5, SPECIES_SQUIRTLE},
};
const struct WildPokemonInfo gBattlePyramidPlaceholders_4Info = {4, gBattlePyramidPlaceholders_4};
const struct WildPokemon gBattlePyramidPlaceholders_5[] =
{
{5, 5, SPECIES_CHARMELEON},
{5, 5, SPECIES_CHARMELEON},
{5, 5, SPECIES_CHARMELEON},
{5, 5, SPECIES_CHARMELEON},
{5, 5, SPECIES_CHARIZARD},
{5, 5, SPECIES_CHARIZARD},
{5, 5, SPECIES_SQUIRTLE},
{5, 5, SPECIES_SQUIRTLE},
{5, 5, SPECIES_SQUIRTLE},
{5, 5, SPECIES_WARTORTLE},
{5, 5, SPECIES_SQUIRTLE},
{5, 5, SPECIES_WARTORTLE},
};
const struct WildPokemonInfo gBattlePyramidPlaceholders_5Info = {4, gBattlePyramidPlaceholders_5};
const struct WildPokemon gBattlePyramidPlaceholders_6[] =
{
{5, 5, SPECIES_CHARIZARD},
{5, 5, SPECIES_CHARIZARD},
{5, 5, SPECIES_CHARIZARD},
{5, 5, SPECIES_CHARMELEON},
{5, 5, SPECIES_SQUIRTLE},
{5, 5, SPECIES_SQUIRTLE},
{5, 5, SPECIES_WARTORTLE},
{5, 5, SPECIES_WARTORTLE},
{5, 5, SPECIES_WARTORTLE},
{5, 5, SPECIES_WARTORTLE},
{5, 5, SPECIES_WARTORTLE},
{5, 5, SPECIES_WARTORTLE},
};
const struct WildPokemonInfo gBattlePyramidPlaceholders_6Info = {4, gBattlePyramidPlaceholders_6};
const struct WildPokemon gBattlePyramidPlaceholders_7[] =
{
{5, 5, SPECIES_WARTORTLE},
{5, 5, SPECIES_WARTORTLE},
{5, 5, SPECIES_SQUIRTLE},
{5, 5, SPECIES_SQUIRTLE},
{5, 5, SPECIES_SQUIRTLE},
{5, 5, SPECIES_CHARIZARD},
{5, 5, SPECIES_CHARIZARD},
{5, 5, SPECIES_CHARIZARD},
{5, 5, SPECIES_CHARMELEON},
{5, 5, SPECIES_CHARMELEON},
{5, 5, SPECIES_CHARMELEON},
{5, 5, SPECIES_CHARMELEON},
};
const struct WildPokemonInfo gBattlePyramidPlaceholders_7Info = {8, gBattlePyramidPlaceholders_7};
const struct WildPokemonHeader gBattlePyramidWildMonHeaders[] =
{
{
.mapGroup = 0,
.mapNum = 1,
.landMonsInfo = &gBattlePyramidPlaceholders_1Info,
.waterMonsInfo = NULL,
.rockSmashMonsInfo = NULL,
.fishingMonsInfo = NULL,
},
{
.mapGroup = 0,
.mapNum = 2,
.landMonsInfo = &gBattlePyramidPlaceholders_2Info,
.waterMonsInfo = NULL,
.rockSmashMonsInfo = NULL,
.fishingMonsInfo = NULL,
},
{
.mapGroup = 0,
.mapNum = 3,
.landMonsInfo = &gBattlePyramidPlaceholders_3Info,
.waterMonsInfo = NULL,
.rockSmashMonsInfo = NULL,
.fishingMonsInfo = NULL,
},
{
.mapGroup = 0,
.mapNum = 4,
.landMonsInfo = &gBattlePyramidPlaceholders_4Info,
.waterMonsInfo = NULL,
.rockSmashMonsInfo = NULL,
.fishingMonsInfo = NULL,
},
{
.mapGroup = 0,
.mapNum = 5,
.landMonsInfo = &gBattlePyramidPlaceholders_5Info,
.waterMonsInfo = NULL,
.rockSmashMonsInfo = NULL,
.fishingMonsInfo = NULL,
},
{
.mapGroup = 0,
.mapNum = 6,
.landMonsInfo = &gBattlePyramidPlaceholders_6Info,
.waterMonsInfo = NULL,
.rockSmashMonsInfo = NULL,
.fishingMonsInfo = NULL,
},
{
.mapGroup = 0,
.mapNum = 7,
.landMonsInfo = &gBattlePyramidPlaceholders_7Info,
.waterMonsInfo = NULL,
.rockSmashMonsInfo = NULL,
.fishingMonsInfo = NULL,
},
{
.mapGroup = 255,
.mapNum = 255,
.landMonsInfo = NULL,
.waterMonsInfo = NULL,
.rockSmashMonsInfo = NULL,
.fishingMonsInfo = NULL,
},
};
const struct WildPokemon gBattlePikeMons_1[] =
{
{5, 5, SPECIES_SEVIPER},
{5, 5, SPECIES_MILOTIC},
{5, 5, SPECIES_DUSCLOPS},
{5, 5, SPECIES_DUSCLOPS},
{5, 5, SPECIES_DUSCLOPS},
{5, 5, SPECIES_DUSCLOPS},
{5, 5, SPECIES_SEVIPER},
{5, 5, SPECIES_MILOTIC},
{5, 5, SPECIES_DUSCLOPS},
{5, 5, SPECIES_DUSCLOPS},
{5, 5, SPECIES_SEVIPER},
{5, 5, SPECIES_MILOTIC},
};
const struct WildPokemonInfo gBattlePikeMonsInfo_1 = {10, gBattlePikeMons_1};
const struct WildPokemon gBattlePikeMons_2[] =
{
{5, 5, SPECIES_SEVIPER},
{5, 5, SPECIES_MILOTIC},
{5, 5, SPECIES_ELECTRODE},
{5, 5, SPECIES_ELECTRODE},
{5, 5, SPECIES_ELECTRODE},
{5, 5, SPECIES_ELECTRODE},
{5, 5, SPECIES_SEVIPER},
{5, 5, SPECIES_MILOTIC},
{5, 5, SPECIES_ELECTRODE},
{5, 5, SPECIES_ELECTRODE},
{5, 5, SPECIES_SEVIPER},
{5, 5, SPECIES_MILOTIC},
};
const struct WildPokemonInfo gBattlePikeMonsInfo_2 = {10, gBattlePikeMons_2};
const struct WildPokemon gBattlePikeMons_3[] =
{
{5, 5, SPECIES_SEVIPER},
{5, 5, SPECIES_MILOTIC},
{5, 5, SPECIES_BRELOOM},
{5, 5, SPECIES_BRELOOM},
{5, 5, SPECIES_BRELOOM},
{5, 5, SPECIES_BRELOOM},
{5, 5, SPECIES_SEVIPER},
{5, 5, SPECIES_MILOTIC},
{5, 5, SPECIES_BRELOOM},
{5, 5, SPECIES_BRELOOM},
{5, 5, SPECIES_SEVIPER},
{5, 5, SPECIES_MILOTIC},
};
const struct WildPokemonInfo gBattlePikeMonsInfo_3 = {10, gBattlePikeMons_3};
const struct WildPokemon gBattlePikeMons_4[] =
{
{5, 5, SPECIES_SEVIPER},
{5, 5, SPECIES_MILOTIC},
{5, 5, SPECIES_WOBBUFFET},
{5, 5, SPECIES_WOBBUFFET},
{5, 5, SPECIES_WOBBUFFET},
{5, 5, SPECIES_WOBBUFFET},
{5, 5, SPECIES_SEVIPER},
{5, 5, SPECIES_MILOTIC},
{5, 5, SPECIES_WOBBUFFET},
{5, 5, SPECIES_WOBBUFFET},
{5, 5, SPECIES_SEVIPER},
{5, 5, SPECIES_MILOTIC},
};
const struct WildPokemonInfo gBattlePikeMonsInfo_4 = {10, gBattlePikeMons_4};
const struct WildPokemonHeader gBattlePikeWildMonHeaders[] =
{
{
.mapGroup = 0,
.mapNum = 1,
.landMonsInfo = &gBattlePikeMonsInfo_1,
.waterMonsInfo = NULL,
.rockSmashMonsInfo = NULL,
.fishingMonsInfo = NULL,
},
{
.mapGroup = 0,
.mapNum = 2,
.landMonsInfo = &gBattlePikeMonsInfo_2,
.waterMonsInfo = NULL,
.rockSmashMonsInfo = NULL,
.fishingMonsInfo = NULL,
},
{
.mapGroup = 0,
.mapNum = 3,
.landMonsInfo = &gBattlePikeMonsInfo_3,
.waterMonsInfo = NULL,
.rockSmashMonsInfo = NULL,
.fishingMonsInfo = NULL,
},
{
.mapGroup = 0,
.mapNum = 4,
.landMonsInfo = &gBattlePikeMonsInfo_4,
.waterMonsInfo = NULL,
.rockSmashMonsInfo = NULL,
.fishingMonsInfo = NULL,
},
{
.mapGroup = 255,
.mapNum = 255,
.landMonsInfo = NULL,
.waterMonsInfo = NULL,
.rockSmashMonsInfo = NULL,
.fishingMonsInfo = NULL,
},
};
const struct WildPokemon gWildFeebasRoute119Data = {20, 25, SPECIES_FEEBAS};
const u16 gRoute119WaterTileData[] =
{
0, 0x2D, 0,
0x2E, 0x5B, 0x83,
0x5C, 0x8B, 0x12A,
};
2017-11-16 20:38:10 +01:00
2018-02-05 22:27:29 +01:00
// code
2017-11-16 20:38:10 +01:00
void DisableWildEncounters(bool8 disabled)
{
sWildEncountersDisabled = disabled;
}
2017-11-18 12:27:10 +01:00
static u16 GetRoute119WaterTileNum(s16 x, s16 y, u8 section)
2017-11-16 20:38:10 +01:00
{
u16 xCur;
u16 yCur;
u16 yMin = gRoute119WaterTileData[section * 3 + 0];
u16 yMax = gRoute119WaterTileData[section * 3 + 1];
u16 tileNum = gRoute119WaterTileData[section * 3 + 2];
for (yCur = yMin; yCur <= yMax; yCur++)
{
2018-06-21 00:41:51 +02:00
for (xCur = 0; xCur < gMapHeader.mapLayout->width; xCur++)
2017-11-16 20:38:10 +01:00
{
u8 tileBehaviorId = MapGridGetMetatileBehaviorAt(xCur + 7, yCur + 7);
if (MetatileBehavior_IsSurfableAndNotWaterfall(tileBehaviorId) == TRUE)
{
tileNum++;
if (x == xCur && y == yCur)
return tileNum;
}
}
}
return tileNum + 1;
}
2017-11-18 12:27:10 +01:00
static bool8 CheckFeebas(void)
2017-11-16 20:38:10 +01:00
{
u8 i;
u16 feebasSpots[NUM_FEEBAS_SPOTS];
s16 x;
s16 y;
2017-11-20 16:40:02 +01:00
u8 route119Section = 0;
2017-11-16 20:38:10 +01:00
u16 waterTileNum;
2017-12-05 18:55:48 +01:00
if (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(ROUTE119)
&& gSaveBlock1Ptr->location.mapNum == MAP_NUM(ROUTE119))
2017-11-16 20:38:10 +01:00
{
GetXYCoordsOneStepInFrontOfPlayer(&x, &y);
x -= 7;
y -= 7;
#ifdef NONMATCHING
if (y >= gRoute119WaterTileData[3 * 1 + 0] && y <= gRoute119WaterTileData[3 * 1 + 1])
2017-11-20 16:40:02 +01:00
route119Section = 1;
2017-11-16 20:38:10 +01:00
if (y >= gRoute119WaterTileData[3 * 2 + 0] && y <= gRoute119WaterTileData[3 * 2 + 1])
2017-11-20 16:40:02 +01:00
route119Section = 2;
2017-11-16 20:38:10 +01:00
#else
{
register const u16 *arr asm("r0");
if (y >= (arr = gRoute119WaterTileData)[3 * 1 + 0] && y <= arr[3 * 1 + 1])
2017-11-20 16:40:02 +01:00
route119Section = 1;
2017-11-16 20:38:10 +01:00
if (y >= arr[3 * 2 + 0] && y <= arr[3 * 2 + 1])
2017-11-20 16:40:02 +01:00
route119Section = 2;
2017-11-16 20:38:10 +01:00
}
#endif
if (Random() % 100 > 49) // 50% chance of encountering Feebas
return FALSE;
FeebasSeedRng(gSaveBlock1Ptr->easyChatPairs[0].unk2);
for (i = 0; i != NUM_FEEBAS_SPOTS;)
{
feebasSpots[i] = FeebasRandom() % 447;
if (feebasSpots[i] == 0)
feebasSpots[i] = 447;
if (feebasSpots[i] < 1 || feebasSpots[i] >= 4)
i++;
}
2017-11-20 16:40:02 +01:00
waterTileNum = GetRoute119WaterTileNum(x, y, route119Section);
2017-11-16 20:38:10 +01:00
for (i = 0; i < NUM_FEEBAS_SPOTS; i++)
{
if (waterTileNum == feebasSpots[i])
return TRUE;
}
}
return FALSE;
}
2017-11-20 16:40:02 +01:00
// The number 1103515245 comes from the example implementation of rand and srand
// in the ISO C standard.
2017-11-17 22:28:55 +01:00
static u16 FeebasRandom(void)
2017-11-16 20:38:10 +01:00
{
2017-11-20 16:40:02 +01:00
sFeebasRngValue = (1103515245 * sFeebasRngValue) + 12345;
2017-11-16 20:38:10 +01:00
return sFeebasRngValue >> 16;
}
2017-11-17 22:28:55 +01:00
static void FeebasSeedRng(u16 seed)
2017-11-16 20:38:10 +01:00
{
sFeebasRngValue = seed;
}
2017-11-18 12:27:10 +01:00
static u8 ChooseWildMonIndex_Land(void)
2017-11-16 20:38:10 +01:00
{
u8 rand = Random() % 100;
if (rand < 20) // 20% chance
return 0;
2017-11-20 16:40:02 +01:00
else if (rand >= 20 && rand < 40) // 20% chance
2017-11-16 20:38:10 +01:00
return 1;
2017-11-20 16:40:02 +01:00
else if (rand >= 40 && rand < 50) // 10% chance
2017-11-16 20:38:10 +01:00
return 2;
2017-11-20 16:40:02 +01:00
else if (rand >= 50 && rand < 60) // 10% chance
2017-11-16 20:38:10 +01:00
return 3;
2017-11-20 16:40:02 +01:00
else if (rand >= 60 && rand < 70) // 10% chance
2017-11-16 20:38:10 +01:00
return 4;
2017-11-20 16:40:02 +01:00
else if (rand >= 70 && rand < 80) // 10% chance
2017-11-16 20:38:10 +01:00
return 5;
2017-11-20 16:40:02 +01:00
else if (rand >= 80 && rand < 85) // 5% chance
2017-11-16 20:38:10 +01:00
return 6;
2017-11-20 16:40:02 +01:00
else if (rand >= 85 && rand < 90) // 5% chance
2017-11-16 20:38:10 +01:00
return 7;
2017-11-20 16:40:02 +01:00
else if (rand >= 90 && rand < 94) // 4% chance
2017-11-16 20:38:10 +01:00
return 8;
2017-11-20 16:40:02 +01:00
else if (rand >= 94 && rand < 98) // 4% chance
2017-11-16 20:38:10 +01:00
return 9;
2017-11-20 16:40:02 +01:00
else if (rand == 98) // 1% chance
2017-11-16 20:38:10 +01:00
return 10;
else // 1% chance
return 11;
}
2017-11-18 12:27:10 +01:00
static u8 ChooseWildMonIndex_WaterRock(void)
2017-11-16 20:38:10 +01:00
{
u8 rand = Random() % 100;
if (rand < 60) // 60% chance
return 0;
2017-11-20 16:40:02 +01:00
else if (rand >= 60 && rand < 90) // 30% chance
2017-11-16 20:38:10 +01:00
return 1;
2017-11-20 16:40:02 +01:00
else if (rand >= 90 && rand < 95) // 5% chance
2017-11-16 20:38:10 +01:00
return 2;
2017-11-20 16:40:02 +01:00
else if (rand >= 95 && rand < 99) // 4% chance
2017-11-16 20:38:10 +01:00
return 3;
else // 1% chance
return 4;
}
enum
{
OLD_ROD,
GOOD_ROD,
SUPER_ROD
};
2017-11-18 12:27:10 +01:00
static u8 ChooseWildMonIndex_Fishing(u8 rod)
2017-11-16 20:38:10 +01:00
{
u8 wildMonIndex = 0;
u8 rand = Random() % 100;
switch (rod)
{
case OLD_ROD:
if (rand < 70) // 70% chance
wildMonIndex = 0;
else // 30% chance
wildMonIndex = 1;
break;
case GOOD_ROD:
if (rand < 60) // 60% chance
wildMonIndex = 2;
if (rand >= 60 && rand < 80) // 20% chance
wildMonIndex = 3;
if (rand >= 80 && rand < 100) // 20% chance
wildMonIndex = 4;
break;
case SUPER_ROD:
if (rand < 40) // 40% chance
wildMonIndex = 5;
if (rand >= 40 && rand < 80) // 40% chance
wildMonIndex = 6;
if (rand >= 80 && rand < 95) // 15% chance
wildMonIndex = 7;
if (rand >= 95 && rand < 99) // 4% chance
wildMonIndex = 8;
if (rand == 99) // 1% chance
wildMonIndex = 9;
break;
}
return wildMonIndex;
}
2017-11-18 12:27:10 +01:00
static u8 ChooseWildMonLevel(const struct WildPokemon *wildPokemon)
2017-11-16 20:38:10 +01:00
{
u8 min;
u8 max;
u8 range;
u8 rand;
// Make sure minimum level is less than maximum level
if (wildPokemon->maxLevel >= wildPokemon->minLevel)
{
min = wildPokemon->minLevel;
max = wildPokemon->maxLevel;
}
else
{
min = wildPokemon->maxLevel;
max = wildPokemon->minLevel;
}
range = max - min + 1;
rand = Random() % range;
// check ability for max level mon
if (!GetMonData(&gPlayerParty[0], MON_DATA_SANITY_BIT3))
{
u8 ability = GetMonAbility(&gPlayerParty[0]);
if (ability == ABILITY_HUSTLE || ability == ABILITY_VITAL_SPIRIT || ability == ABILITY_PRESSURE)
{
if (Random() % 2 == 0)
return max;
if (rand != 0)
rand--;
}
}
return min + rand;
}
2017-11-18 12:27:10 +01:00
static u16 GetCurrentMapWildMonHeaderId(void)
2017-11-16 20:38:10 +01:00
{
u16 i;
for (i = 0; ; i++)
{
const struct WildPokemonHeader *wildHeader = &gWildMonHeaders[i];
if (wildHeader->mapGroup == 0xFF)
break;
if (gWildMonHeaders[i].mapGroup == gSaveBlock1Ptr->location.mapGroup &&
gWildMonHeaders[i].mapNum == gSaveBlock1Ptr->location.mapNum)
{
2017-12-05 18:55:48 +01:00
if (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(ALTERING_CAVE) &&
gSaveBlock1Ptr->location.mapNum == MAP_NUM(ALTERING_CAVE))
2017-11-16 20:38:10 +01:00
{
u16 alteringCaveId = VarGet(VAR_ALTERING_CAVE_WILD_SET);
if (alteringCaveId > 8)
alteringCaveId = 0;
i += alteringCaveId;
}
return i;
}
}
return -1;
}
2017-11-18 12:27:10 +01:00
static u8 PickWildMonNature(void)
2017-11-16 20:38:10 +01:00
{
u8 i;
u8 j;
struct Pokeblock *safariPokeblock;
u8 natures[25];
if (GetSafariZoneFlag() == TRUE && Random() % 100 < 80)
{
safariPokeblock = SafariZoneGetActivePokeblock();
if (safariPokeblock != NULL)
{
for (i = 0; i < 25; i++)
natures[i] = i;
for (i = 0; i < 24; i++)
{
for (j = i + 1; j < 25; j++)
{
if (Random() & 1)
{
u8 temp = natures[i];
natures[i] = natures[j];
natures[j] = temp;
}
}
}
for (i = 0; i < 25; i++)
{
if (PokeblockGetGain(natures[i], safariPokeblock) > 0)
return natures[i];
}
}
}
// check synchronize for a pokemon with the same ability
if (!GetMonData(&gPlayerParty[0], MON_DATA_SANITY_BIT3)
&& GetMonAbility(&gPlayerParty[0]) == ABILITY_SYNCHRONIZE
&& Random() % 2 == 0)
{
return GetMonData(&gPlayerParty[0], MON_DATA_PERSONALITY) % 25;
}
// random nature
return Random() % 25;
}
2017-11-18 12:27:10 +01:00
static void CreateWildMon(u16 species, u8 level)
2017-11-16 20:38:10 +01:00
{
bool32 checkCuteCharm;
ZeroEnemyPartyMons();
checkCuteCharm = TRUE;
switch (gBaseStats[species].genderRatio)
{
case MON_MALE:
case MON_FEMALE:
case MON_GENDERLESS:
checkCuteCharm = FALSE;
break;
}
if (checkCuteCharm
&& !GetMonData(&gPlayerParty[0], MON_DATA_SANITY_BIT3)
&& GetMonAbility(&gPlayerParty[0]) == ABILITY_CUTE_CHARM
&& Random() % 3 != 0)
{
u16 leadingMonSpecies = GetMonData(&gPlayerParty[0], MON_DATA_SPECIES);
u32 leadingMonPersonality = GetMonData(&gPlayerParty[0], MON_DATA_PERSONALITY);
u8 gender = GetGenderFromSpeciesAndPersonality(leadingMonSpecies, leadingMonPersonality);
// misses mon is genderless check, although no genderless mon can have cute charm as ability
if (gender == MON_FEMALE)
gender = MON_MALE;
else
gender = MON_FEMALE;
CreateMonWithGenderNatureLetter(&gEnemyParty[0], species, level, 32, gender, PickWildMonNature(), 0);
return;
}
CreateMonWithNature(&gEnemyParty[0], species, level, 32, PickWildMonNature());
}
enum
{
WILD_AREA_LAND,
WILD_AREA_WATER,
WILD_AREA_ROCKS,
WILD_AREA_FISHING,
};
#define WILD_CHECK_REPEL 0x1
#define WILD_CHECK_KEEN_EYE 0x2
2017-11-18 12:27:10 +01:00
static bool8 TryGenerateWildMon(const struct WildPokemonInfo *wildMonInfo, u8 area, u8 flags)
2017-11-16 20:38:10 +01:00
{
u8 wildMonIndex = 0;
u8 level;
switch (area)
{
case WILD_AREA_LAND:
if (TryGetAbilityInfluencedWildMonIndex(wildMonInfo->wildPokemon, TYPE_STEEL, ABILITY_MAGNET_PULL, &wildMonIndex))
break;
if (TryGetAbilityInfluencedWildMonIndex(wildMonInfo->wildPokemon, TYPE_ELECTRIC, ABILITY_STATIC, &wildMonIndex))
break;
wildMonIndex = ChooseWildMonIndex_Land();
break;
case WILD_AREA_WATER:
if (TryGetAbilityInfluencedWildMonIndex(wildMonInfo->wildPokemon, TYPE_ELECTRIC, ABILITY_STATIC, &wildMonIndex))
break;
wildMonIndex = ChooseWildMonIndex_WaterRock();
break;
case WILD_AREA_ROCKS:
wildMonIndex = ChooseWildMonIndex_WaterRock();
break;
}
level = ChooseWildMonLevel(&wildMonInfo->wildPokemon[wildMonIndex]);
if (flags & WILD_CHECK_REPEL && !IsWildLevelAllowedByRepel(level))
return FALSE;
2018-06-21 00:41:51 +02:00
if (gMapHeader.mapLayoutId != 0x166 && flags & WILD_CHECK_KEEN_EYE && !IsAbilityAllowingEncounter(level))
2017-11-16 20:38:10 +01:00
return FALSE;
CreateWildMon(wildMonInfo->wildPokemon[wildMonIndex].species, level);
return TRUE;
}
2017-11-18 12:27:10 +01:00
static u16 GenerateFishingWildMon(const struct WildPokemonInfo *wildMonInfo, u8 rod)
2017-11-16 20:38:10 +01:00
{
u8 wildMonIndex = ChooseWildMonIndex_Fishing(rod);
u8 level = ChooseWildMonLevel(&wildMonInfo->wildPokemon[wildMonIndex]);
CreateWildMon(wildMonInfo->wildPokemon[wildMonIndex].species, level);
return wildMonInfo->wildPokemon[wildMonIndex].species;
}
2017-11-18 12:27:10 +01:00
static bool8 SetUpMassOutbreakEncounter(u8 flags)
2017-11-16 20:38:10 +01:00
{
u16 i;
if (flags & WILD_CHECK_REPEL && !IsWildLevelAllowedByRepel(gSaveBlock1Ptr->outbreakPokemonLevel))
return FALSE;
CreateWildMon(gSaveBlock1Ptr->outbreakPokemonSpecies, gSaveBlock1Ptr->outbreakPokemonLevel);
for (i = 0; i < 4; i++)
SetMonMoveSlot(&gEnemyParty[0], gSaveBlock1Ptr->outbreakPokemonMoves[i], i);
return TRUE;
}
2017-11-18 12:27:10 +01:00
static bool8 DoMassOutbreakEncounterTest(void)
2017-11-16 20:38:10 +01:00
{
if (gSaveBlock1Ptr->outbreakPokemonSpecies != 0
&& gSaveBlock1Ptr->location.mapNum == gSaveBlock1Ptr->outbreakLocationMapNum
&& gSaveBlock1Ptr->location.mapGroup == gSaveBlock1Ptr->outbreakLocationMapGroup)
{
if (Random() % 100 < gSaveBlock1Ptr->outbreakPokemonProbability)
return TRUE;
}
return FALSE;
}
2017-11-18 12:27:10 +01:00
static bool8 DoWildEncounterRateDiceRoll(u16 encounterRate)
2017-11-16 20:38:10 +01:00
{
if (Random() % 2880 < encounterRate)
return TRUE;
else
return FALSE;
}
2017-11-18 12:27:10 +01:00
static bool8 DoWildEncounterRateTest(u32 encounterRate, bool8 ignoreAbility)
2017-11-16 20:38:10 +01:00
{
encounterRate *= 16;
if (TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_MACH_BIKE | PLAYER_AVATAR_FLAG_ACRO_BIKE))
encounterRate = encounterRate * 80 / 100;
ApplyFluteEncounterRateMod(&encounterRate);
ApplyCleanseTagEncounterRateMod(&encounterRate);
if (!ignoreAbility && !GetMonData(&gPlayerParty[0], MON_DATA_SANITY_BIT3))
{
u32 ability = GetMonAbility(&gPlayerParty[0]);
2018-06-21 00:41:51 +02:00
if (ability == ABILITY_STENCH && gMapHeader.mapLayoutId == 0x169)
2017-11-16 20:38:10 +01:00
encounterRate = encounterRate * 3 / 4;
else if (ability == ABILITY_STENCH)
encounterRate /= 2;
else if (ability == ABILITY_ILLUMINATE)
encounterRate *= 2;
else if (ability == ABILITY_WHITE_SMOKE)
encounterRate /= 2;
else if (ability == ABILITY_ARENA_TRAP)
encounterRate *= 2;
else if (ability == ABILITY_SAND_VEIL && gSaveBlock1Ptr->weather == 8)
encounterRate /= 2;
}
if (encounterRate > 2880)
encounterRate = 2880;
return DoWildEncounterRateDiceRoll(encounterRate);
}
2017-11-17 17:50:07 +01:00
2017-11-18 12:27:10 +01:00
static bool8 DoGlobalWildEncounterDiceRoll(void)
2017-11-17 17:50:07 +01:00
{
if (Random() % 100 >= 60)
return FALSE;
else
return TRUE;
}
2017-11-18 12:27:10 +01:00
static bool8 AreLegendariesInSootopolisPreventingEncounters(void)
2017-11-17 17:50:07 +01:00
{
2017-12-05 18:55:48 +01:00
if (gSaveBlock1Ptr->location.mapGroup != MAP_GROUP(SOOTOPOLIS_CITY)
|| gSaveBlock1Ptr->location.mapNum != MAP_NUM(SOOTOPOLIS_CITY))
2017-11-17 17:50:07 +01:00
{
return FALSE;
}
return FlagGet(FLAG_LEGENDARIES_IN_SOOTOPOLIS);
}
bool8 StandardWildEncounter(u16 currMetaTileBehavior, u16 previousMetaTileBehavior)
{
u16 headerId;
struct Roamer *roamer;
if (sWildEncountersDisabled == TRUE)
return FALSE;
headerId = GetCurrentMapWildMonHeaderId();
if (headerId == 0xFFFF) // invalid
{
2018-06-21 00:41:51 +02:00
if (gMapHeader.mapLayoutId == 0x166)
2017-11-17 17:50:07 +01:00
{
headerId = GetBattlePikeWildMonHeaderId();
if (previousMetaTileBehavior != currMetaTileBehavior && !DoGlobalWildEncounterDiceRoll())
return FALSE;
2017-11-20 16:40:02 +01:00
else if (DoWildEncounterRateTest(gBattlePikeWildMonHeaders[headerId].landMonsInfo->encounterRate, FALSE) != TRUE)
2017-11-17 17:50:07 +01:00
return FALSE;
2017-11-20 16:40:02 +01:00
else if (TryGenerateWildMon(gBattlePikeWildMonHeaders[headerId].landMonsInfo, WILD_AREA_LAND, WILD_CHECK_KEEN_EYE) != TRUE)
2017-11-17 17:50:07 +01:00
return FALSE;
2017-11-20 16:40:02 +01:00
else if (!TryGenerateBattlePikeWildMon(TRUE))
2017-11-17 17:50:07 +01:00
return FALSE;
BattleSetup_StartBattlePikeWildBattle();
return TRUE;
}
2018-06-21 00:41:51 +02:00
if (gMapHeader.mapLayoutId == 0x169)
2017-11-17 17:50:07 +01:00
{
headerId = gSaveBlock2Ptr->frontier.field_CB2;
2017-11-17 17:50:07 +01:00
if (previousMetaTileBehavior != currMetaTileBehavior && !DoGlobalWildEncounterDiceRoll())
return FALSE;
2017-11-20 16:40:02 +01:00
else if (DoWildEncounterRateTest(gBattlePyramidWildMonHeaders[headerId].landMonsInfo->encounterRate, FALSE) != TRUE)
2017-11-17 17:50:07 +01:00
return FALSE;
2017-11-20 16:40:02 +01:00
else if (TryGenerateWildMon(gBattlePyramidWildMonHeaders[headerId].landMonsInfo, WILD_AREA_LAND, WILD_CHECK_KEEN_EYE) != TRUE)
2017-11-17 17:50:07 +01:00
return FALSE;
GenerateBattlePyramidWildMon();
BattleSetup_StartWildBattle();
return TRUE;
}
}
else
{
if (MetatileBehavior_IsLandWildEncounter(currMetaTileBehavior) == TRUE)
{
if (gWildMonHeaders[headerId].landMonsInfo == NULL)
return FALSE;
2017-11-20 16:40:02 +01:00
else if (previousMetaTileBehavior != currMetaTileBehavior && !DoGlobalWildEncounterDiceRoll())
2017-11-17 17:50:07 +01:00
return FALSE;
2017-11-20 16:40:02 +01:00
else if (DoWildEncounterRateTest(gWildMonHeaders[headerId].landMonsInfo->encounterRate, FALSE) != TRUE)
2017-11-17 17:50:07 +01:00
return FALSE;
if (TryStartRoamerEncounter() == TRUE)
{
roamer = &gSaveBlock1Ptr->roamer;
if (!IsWildLevelAllowedByRepel(roamer->level))
return FALSE;
BattleSetup_StartRoamerBattle();
return TRUE;
}
else
{
if (DoMassOutbreakEncounterTest() == TRUE && SetUpMassOutbreakEncounter(WILD_CHECK_REPEL | WILD_CHECK_KEEN_EYE) == TRUE)
{
BattleSetup_StartWildBattle();
return TRUE;
}
// try a regular wild land encounter
if (TryGenerateWildMon(gWildMonHeaders[headerId].landMonsInfo, WILD_AREA_LAND, WILD_CHECK_REPEL | WILD_CHECK_KEEN_EYE) == TRUE)
{
BattleSetup_StartWildBattle();
return TRUE;
}
return FALSE;
}
}
else if (MetatileBehavior_IsWaterWildEncounter(currMetaTileBehavior) == TRUE
|| (TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_SURFING) && MetatileBehavior_IsBridge(currMetaTileBehavior) == TRUE))
{
if (AreLegendariesInSootopolisPreventingEncounters() == TRUE)
return FALSE;
2017-11-20 16:40:02 +01:00
else if (gWildMonHeaders[headerId].waterMonsInfo == NULL)
2017-11-17 17:50:07 +01:00
return FALSE;
2017-11-20 16:40:02 +01:00
else if (previousMetaTileBehavior != currMetaTileBehavior && !DoGlobalWildEncounterDiceRoll())
2017-11-17 17:50:07 +01:00
return FALSE;
2017-11-20 16:40:02 +01:00
else if (DoWildEncounterRateTest(gWildMonHeaders[headerId].waterMonsInfo->encounterRate, FALSE) != TRUE)
2017-11-17 17:50:07 +01:00
return FALSE;
if (TryStartRoamerEncounter() == TRUE)
{
roamer = &gSaveBlock1Ptr->roamer;
if (!IsWildLevelAllowedByRepel(roamer->level))
return FALSE;
BattleSetup_StartRoamerBattle();
return TRUE;
}
else // try a regular surfing encounter
{
if (TryGenerateWildMon(gWildMonHeaders[headerId].waterMonsInfo, WILD_AREA_WATER, WILD_CHECK_REPEL | WILD_CHECK_KEEN_EYE) == TRUE)
{
BattleSetup_StartWildBattle();
return TRUE;
}
return FALSE;
}
}
}
return FALSE;
}
void RockSmashWildEncounter(void)
{
u16 headerId = GetCurrentMapWildMonHeaderId();
if (headerId != 0xFFFF)
{
const struct WildPokemonInfo *wildPokemonInfo = gWildMonHeaders[headerId].rockSmashMonsInfo;
if (wildPokemonInfo == NULL)
{
gSpecialVar_Result = FALSE;
}
else if (DoWildEncounterRateTest(wildPokemonInfo->encounterRate, 1) == TRUE
&& TryGenerateWildMon(wildPokemonInfo, 2, WILD_CHECK_REPEL | WILD_CHECK_KEEN_EYE) == TRUE)
{
BattleSetup_StartWildBattle();
gSpecialVar_Result = TRUE;
}
else
{
gSpecialVar_Result = FALSE;
}
}
else
{
gSpecialVar_Result = FALSE;
}
}
bool8 SweetScentWildEncounter(void)
{
s16 x, y;
u16 headerId;
PlayerGetDestCoords(&x, &y);
headerId = GetCurrentMapWildMonHeaderId();
if (headerId == 0xFFFF) // invalid
{
2018-06-21 00:41:51 +02:00
if (gMapHeader.mapLayoutId == 0x166)
2017-11-17 17:50:07 +01:00
{
headerId = GetBattlePikeWildMonHeaderId();
if (TryGenerateWildMon(gBattlePikeWildMonHeaders[headerId].landMonsInfo, WILD_AREA_LAND, 0) != TRUE)
return FALSE;
TryGenerateBattlePikeWildMon(FALSE);
BattleSetup_StartBattlePikeWildBattle();
return TRUE;
}
2018-06-21 00:41:51 +02:00
if (gMapHeader.mapLayoutId == 0x169)
2017-11-17 17:50:07 +01:00
{
headerId = gSaveBlock2Ptr->frontier.field_CB2;
2017-11-17 17:50:07 +01:00
if (TryGenerateWildMon(gBattlePyramidWildMonHeaders[headerId].landMonsInfo, WILD_AREA_LAND, 0) != TRUE)
return FALSE;
GenerateBattlePyramidWildMon();
BattleSetup_StartWildBattle();
return TRUE;
}
}
else
{
if (MetatileBehavior_IsLandWildEncounter(MapGridGetMetatileBehaviorAt(x, y)) == TRUE)
{
if (gWildMonHeaders[headerId].landMonsInfo == NULL)
return FALSE;
if (TryStartRoamerEncounter() == TRUE)
{
BattleSetup_StartRoamerBattle();
return TRUE;
}
if (DoMassOutbreakEncounterTest() == TRUE)
SetUpMassOutbreakEncounter(0);
else
TryGenerateWildMon(gWildMonHeaders[headerId].landMonsInfo, WILD_AREA_LAND, 0);
BattleSetup_StartWildBattle();
return TRUE;
}
else if (MetatileBehavior_IsWaterWildEncounter(MapGridGetMetatileBehaviorAt(x, y)) == TRUE)
{
if (AreLegendariesInSootopolisPreventingEncounters() == TRUE)
return FALSE;
if (gWildMonHeaders[headerId].waterMonsInfo == NULL)
return FALSE;
if (TryStartRoamerEncounter() == TRUE)
{
BattleSetup_StartRoamerBattle();
return TRUE;
}
TryGenerateWildMon(gWildMonHeaders[headerId].waterMonsInfo, WILD_AREA_WATER, 0);
BattleSetup_StartWildBattle();
return TRUE;
}
}
return FALSE;
}
bool8 DoesCurrentMapHaveFishingMons(void)
{
u16 headerId = GetCurrentMapWildMonHeaderId();
if (headerId != 0xFFFF && gWildMonHeaders[headerId].fishingMonsInfo != NULL)
return TRUE;
else
return FALSE;
}
2017-11-17 22:28:55 +01:00
void FishingWildEncounter(u8 rod)
{
u16 species;
if (CheckFeebas() == TRUE)
{
u8 level = ChooseWildMonLevel(&gWildFeebasRoute119Data);
species = gWildFeebasRoute119Data.species;
CreateWildMon(species, level);
}
else
{
species = GenerateFishingWildMon(gWildMonHeaders[GetCurrentMapWildMonHeaderId()].fishingMonsInfo, rod);
}
IncrementGameStat(GAME_STAT_FISHING_CAPTURES);
SetPokemonAnglerSpecies(species);
BattleSetup_StartWildBattle();
}
u16 GetLocalWildMon(bool8 *isWaterMon)
{
u16 headerId;
const struct WildPokemonInfo *landMonsInfo;
const struct WildPokemonInfo *waterMonsInfo;
*isWaterMon = FALSE;
headerId = GetCurrentMapWildMonHeaderId();
if (headerId == 0xFFFF)
return SPECIES_NONE;
landMonsInfo = gWildMonHeaders[headerId].landMonsInfo;
waterMonsInfo = gWildMonHeaders[headerId].waterMonsInfo;
// Neither
if (landMonsInfo == NULL && waterMonsInfo == NULL)
return SPECIES_NONE;
// Land Pokemon
2017-11-20 16:40:02 +01:00
else if (landMonsInfo != NULL && waterMonsInfo == NULL)
2017-11-17 22:28:55 +01:00
return landMonsInfo->wildPokemon[ChooseWildMonIndex_Land()].species;
// Water Pokemon
2017-11-20 16:40:02 +01:00
else if (landMonsInfo == NULL && waterMonsInfo != NULL)
2017-11-17 22:28:55 +01:00
{
*isWaterMon = TRUE;
return waterMonsInfo->wildPokemon[ChooseWildMonIndex_WaterRock()].species;
}
// Either land or water Pokemon
if ((Random() % 100) < 80)
{
return landMonsInfo->wildPokemon[ChooseWildMonIndex_Land()].species;
}
else
{
*isWaterMon = TRUE;
return waterMonsInfo->wildPokemon[ChooseWildMonIndex_WaterRock()].species;
}
}
u16 GetLocalWaterMon(void)
{
u16 headerId = GetCurrentMapWildMonHeaderId();
if (headerId != 0xFFFF)
{
const struct WildPokemonInfo *waterMonsInfo = gWildMonHeaders[headerId].waterMonsInfo;
if (waterMonsInfo)
return waterMonsInfo->wildPokemon[ChooseWildMonIndex_WaterRock()].species;
}
return SPECIES_NONE;
}
bool8 UpdateRepelCounter(void)
{
u16 steps;
if (InBattlePike() || InBattlePyramid())
return FALSE;
if (InUnionRoom() == TRUE)
return FALSE;
steps = VarGet(VAR_REPEL_STEP_COUNT);
if (steps != 0)
{
steps--;
VarSet(VAR_REPEL_STEP_COUNT, steps);
if (steps == 0)
{
ScriptContext1_SetupScript(EventScript_RepelWoreOff);
return TRUE;
}
}
return FALSE;
}
static bool8 IsWildLevelAllowedByRepel(u8 wildLevel)
{
u8 i;
if (!VarGet(VAR_REPEL_STEP_COUNT))
return TRUE;
for (i = 0; i < PARTY_SIZE; i++)
{
if (GetMonData(&gPlayerParty[i], MON_DATA_HP) && !GetMonData(&gPlayerParty[i], MON_DATA_IS_EGG))
{
u8 ourLevel = GetMonData(&gPlayerParty[i], MON_DATA_LEVEL);
if (wildLevel < ourLevel)
return FALSE;
else
return TRUE;
}
}
return FALSE;
}
static bool8 IsAbilityAllowingEncounter(u8 level)
{
u8 ability;
if (GetMonData(&gPlayerParty[0], MON_DATA_SANITY_BIT3))
return TRUE;
ability = GetMonAbility(&gPlayerParty[0]);
if (ability == ABILITY_KEEN_EYE || ability == ABILITY_INTIMIDATE)
{
u8 playerMonLevel = GetMonData(&gPlayerParty[0], MON_DATA_LEVEL);
if (playerMonLevel > 5 && level <= playerMonLevel - 5 && !(Random() % 2))
return FALSE;
}
return TRUE;
}
static bool8 TryGetRandomWildMonIndexByType(const struct WildPokemon *wildMon, u8 type, u8 numMon, u8 *monIndex)
{
u8 validIndexes[numMon]; // variable length array, an interesting feature
u8 i, validMonCount;
for (i = 0; i < numMon; i++)
validIndexes[i] = 0;
for (validMonCount = 0, i = 0; i < numMon; i++)
{
if (gBaseStats[wildMon[i].species].type1 == type || gBaseStats[wildMon[i].species].type2 == type)
validIndexes[validMonCount++] = i;
}
if (validMonCount == 0 || validMonCount == numMon)
return FALSE;
*monIndex = validIndexes[Random() % validMonCount];
return TRUE;
}
static bool8 TryGetAbilityInfluencedWildMonIndex(const struct WildPokemon *wildMon, u8 type, u8 ability, u8 *monIndex)
{
if (GetMonData(&gPlayerParty[0], MON_DATA_SANITY_BIT3))
return FALSE;
2017-11-20 16:40:02 +01:00
else if (GetMonAbility(&gPlayerParty[0]) != ability)
2017-11-17 22:28:55 +01:00
return FALSE;
2017-11-20 16:40:02 +01:00
else if (Random() % 2 != 0)
2017-11-17 22:28:55 +01:00
return FALSE;
return TryGetRandomWildMonIndexByType(wildMon, type, LAND_WILD_COUNT, monIndex);
}
static void ApplyFluteEncounterRateMod(u32 *encRate)
{
if (FlagGet(FLAG_SYS_ENC_UP_ITEM) == TRUE)
*encRate += *encRate / 2;
else if (FlagGet(FLAG_SYS_ENC_DOWN_ITEM) == TRUE)
*encRate = *encRate / 2;
}
static void ApplyCleanseTagEncounterRateMod(u32 *encRate)
{
if (GetMonData(&gPlayerParty[0], MON_DATA_HELD_ITEM) == ITEM_CLEANSE_TAG)
*encRate = *encRate * 2 / 3;
}