mirror of
https://github.com/pret/pmd-red.git
synced 2026-09-07 08:35:47 -05:00
dungeon_data.c
This commit is contained in:
@@ -3,31 +3,6 @@
|
||||
|
||||
#include "structs/str_dungeon.h"
|
||||
|
||||
// size: 0x10
|
||||
typedef struct DungeonDataEntry
|
||||
{
|
||||
/* 0x0 */ bool8 stairDirectionUp;
|
||||
// If enabled, enemies will evolve when a team member is KOed (and doesn't revive) if their evolution spawns on the floor.
|
||||
// False for all dungeons, but the code still works if this flag is enabled.
|
||||
/* 0x1 */ bool8 enemiesEvolveWhenKOed;
|
||||
/* 0x2 */ bool8 recruitingEnabled;
|
||||
/* 0x3 */ s8 rescuesAllowed;
|
||||
/* 0x4 */ u8 maxItemsAllowed;
|
||||
/* 0x5 */ u8 maxPartyMembers;
|
||||
/* 0x6 */ bool8 levelResetTo1;
|
||||
/* 0x7 */ bool8 keepMoney;
|
||||
/* 0x8 */ bool8 leaderCanSwitch;
|
||||
/* 0x9 */ bool8 hasCheckpoint;
|
||||
/* 0xA */ bool8 enterWithoutGameSave; // If false, the dungeon will force a quicksave before entering.
|
||||
/* 0xB */ u8 HMMask; // HM mask for dungeon entry requirements (Fly, Dive, Waterfall, Surf, Water).
|
||||
/* 0xC */ s16 turnLimit;
|
||||
// The chance that a wild Pokémon's moveRandomly flag will be set when spawning,
|
||||
// causing them to move randomly inside a room instead of exploring rooms.
|
||||
/* 0xE */ s16 randomMovementChance;
|
||||
} DungeonDataEntry;
|
||||
|
||||
extern const DungeonDataEntry gDungeons[];
|
||||
|
||||
s32 GetDungeonFloorCount(u8 dungeon);
|
||||
const u8 *GetDungeonName1(u8 dungeon);
|
||||
bool8 IsStairDirectionUp(u8 dungeon);
|
||||
|
||||
61
include/dungeon_data.h
Normal file
61
include/dungeon_data.h
Normal file
@@ -0,0 +1,61 @@
|
||||
#ifndef GUARD_DUNGEON_DATA_H
|
||||
#define GUARD_DUNGEON_DATA_H
|
||||
|
||||
#include "exclusive_pokemon.h"
|
||||
#include "friend_area.h"
|
||||
#include "constants/type.h"
|
||||
#include "constants/friend_area.h"
|
||||
#include "constants/iq_skill.h"
|
||||
#include "constants/tactic.h"
|
||||
#include "constants/dungeon.h"
|
||||
#include "constants/item.h"
|
||||
|
||||
// size: 0x10
|
||||
typedef struct DungeonDataEntry
|
||||
{
|
||||
/* 0x0 */ bool8 stairDirectionUp;
|
||||
// If enabled, enemies will evolve when a team member is KOed (and doesn't revive) if their evolution spawns on the floor.
|
||||
// False for all dungeons, but the code still works if this flag is enabled.
|
||||
/* 0x1 */ bool8 enemiesEvolveWhenKOed;
|
||||
/* 0x2 */ bool8 recruitingEnabled;
|
||||
/* 0x3 */ s8 rescuesAllowed;
|
||||
/* 0x4 */ u8 maxItemsAllowed;
|
||||
/* 0x5 */ u8 maxPartyMembers;
|
||||
/* 0x6 */ bool8 levelResetTo1;
|
||||
/* 0x7 */ bool8 keepMoney;
|
||||
/* 0x8 */ bool8 leaderCanSwitch;
|
||||
/* 0x9 */ bool8 hasCheckpoint;
|
||||
/* 0xA */ bool8 enterWithoutGameSave; // If false, the dungeon will force a quicksave before entering.
|
||||
/* 0xB */ u8 HMMask; // HM mask for dungeon entry requirements (Fly, Dive, Waterfall, Surf, Water).
|
||||
/* 0xC */ s16 turnLimit;
|
||||
// The chance that a wild Pok<6F>mon's moveRandomly flag will be set when spawning,
|
||||
// causing them to move randomly inside a room instead of exploring rooms.
|
||||
/* 0xE */ s16 randomMovementChance;
|
||||
} DungeonDataEntry;
|
||||
|
||||
extern const DungeonDataEntry gDungeons[];
|
||||
extern const u8 gInvalidDungeonIDs[11];
|
||||
extern const u8 gInvalidItemIDs[16];
|
||||
extern const bool8 gTacticsTargetLeader[NUM_TACTICS];
|
||||
extern const s16 gReqTacticLvls[NUM_TACTICS];
|
||||
extern const s32 gReqIQSkillPts[NUM_IQ_SKILLS];
|
||||
extern const s32 gUnknown_810A3F0[100];
|
||||
extern const s16 gTypeGummiIQBoost[NUM_TYPES][NUMBER_OF_GUMMIS];
|
||||
extern const s16 gUnknown_810A808[NUM_TYPES][NUMBER_OF_GUMMIS];
|
||||
extern const FriendAreaSettings gFriendAreaSettings[NUM_FRIEND_AREAS];
|
||||
extern const s16 gUnknown_810AC60;
|
||||
extern const s16 gUnknown_810AC62;
|
||||
extern const s16 gUnknown_810AC64;
|
||||
extern const s16 gUnknown_810AC66;
|
||||
extern const s16 gUnknown_810AC68;
|
||||
extern const u8 gUnknown_810AC6A[NUM_TYPES];
|
||||
extern const bool8 gIsTypePhysicalTable[NUM_TYPES];
|
||||
extern const s32 gUnknown_810AC90[10];
|
||||
extern const s16 gFrenzyPlantIQReq;
|
||||
extern const s16 gHydroCannonIQReq;
|
||||
extern const s16 gBlastBurnIQReq;
|
||||
extern const s16 gVoltTackleIQReq;
|
||||
extern const u8 gDungeonWaterType[76];
|
||||
extern const struct ExclusivePokemon gExclusivePokemon[NUM_EXCLUSIVE_POKEMON];
|
||||
|
||||
#endif // GUARD_DUNGEON_DATA_H
|
||||
@@ -577,11 +577,7 @@ SECTIONS {
|
||||
src/code_80972F4.o(.rodata);
|
||||
src/code_8097504.o(.rodata);
|
||||
data/data_8109D10.o(.rodata);
|
||||
src/pokemon_3.o(.rodata);
|
||||
src/items.o(.rodata);
|
||||
src/code_8048480.o(.rodata);
|
||||
src/friend_area.o(.rodata);
|
||||
src/dungeon_map_access.o(.rodata);
|
||||
src/dungeon_data.o(.rodata);
|
||||
src/exclusive_pokemon.o(.rodata);
|
||||
src/rescue_team_info.o(.rodata);
|
||||
src/strings.o(.rodata);
|
||||
|
||||
@@ -31,8 +31,7 @@
|
||||
#include "dungeon_menu_moves.h"
|
||||
#include "dungeon_misc.h"
|
||||
#include "code_803E724.h"
|
||||
|
||||
extern s16 gTypeGummiIQBoost[NUM_TYPES][NUMBER_OF_GUMMIS];
|
||||
#include "dungeon_data.h"
|
||||
|
||||
extern u8 *gUnknown_80F89F4[];
|
||||
extern u8 *gUnknown_80FB580[];
|
||||
@@ -66,8 +65,6 @@ extern u8 *gUnknown_80FECA0[];
|
||||
extern u8 *gItemStickyDoesntWorkText[];
|
||||
extern u8 *gUnknown_80F9BD8[];
|
||||
|
||||
#include "data/code_8048480.h"
|
||||
|
||||
extern void sub_8078B5C(Entity *, Entity *, u32, u32, u32);
|
||||
extern void sub_8051E7C(Entity *pokemon);
|
||||
extern void sub_8045BF8(u8 *, Item *);
|
||||
|
||||
@@ -1,21 +0,0 @@
|
||||
const s16 gUnknown_810A808[NUM_TYPES][NUMBER_OF_GUMMIS] =
|
||||
{
|
||||
[TYPE_NONE] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
[TYPE_NORMAL] = {0x00, 0x3c, 0x19, 0x19, 0x19, 0x19, 0x19, 0x1e, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x05, 0x19, 0x19, 0x19},
|
||||
[TYPE_FIRE] = {0x00, 0x19, 0x3c, 0x1e, 0x14, 0x19, 0x14, 0x19, 0x19, 0x1e, 0x19, 0x19, 0x14, 0x1e, 0x19, 0x19, 0x19, 0x14},
|
||||
[TYPE_WATER] = {0x00, 0x19, 0x14, 0x3c, 0x1e, 0x1e, 0x14, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x14},
|
||||
[TYPE_GRASS] = {0x00, 0x19, 0x1e, 0x14, 0x3c, 0x14, 0x1e, 0x19, 0x1e, 0x14, 0x1e, 0x19, 0x1e, 0x19, 0x19, 0x19, 0x19, 0x19},
|
||||
[TYPE_ELECTRIC] = {0x00, 0x19, 0x19, 0x19, 0x19, 0x3c, 0x19, 0x19, 0x19, 0x1e, 0x14, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x14},
|
||||
[TYPE_ICE] = {0x00, 0x19, 0x1e, 0x19, 0x19, 0x19, 0x3c, 0x1e, 0x19, 0x19, 0x19, 0x19, 0x19, 0x1e, 0x19, 0x19, 0x19, 0x1e},
|
||||
[TYPE_FIGHTING] = {0x00, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x3c, 0x19, 0x19, 0x1e, 0x1e, 0x14, 0x14, 0x19, 0x19, 0x14, 0x19},
|
||||
[TYPE_POISON] = {0x00, 0x19, 0x19, 0x19, 0x14, 0x19, 0x19, 0x14, 0x3c, 0x1e, 0x19, 0x1e, 0x14, 0x19, 0x19, 0x19, 0x19, 0x19},
|
||||
[TYPE_GROUND] = {0x00, 0x19, 0x19, 0x1e, 0x1e, 0x05, 0x1e, 0x19, 0x14, 0x3c, 0x19, 0x19, 0x19, 0x14, 0x19, 0x19, 0x19, 0x19},
|
||||
[TYPE_FLYING] = {0x00, 0x19, 0x19, 0x19, 0x14, 0x1e, 0x1e, 0x14, 0x19, 0x05, 0x3c, 0x19, 0x14, 0x1e, 0x19, 0x19, 0x19, 0x19},
|
||||
[TYPE_PSYCHIC] = {0x00, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x14, 0x19, 0x19, 0x19, 0x3c, 0x1e, 0x19, 0x1e, 0x19, 0x1e, 0x19},
|
||||
[TYPE_BUG] = {0x00, 0x19, 0x1e, 0x19, 0x14, 0x19, 0x19, 0x14, 0x19, 0x14, 0x1e, 0x19, 0x3c, 0x1e, 0x19, 0x19, 0x19, 0x19},
|
||||
[TYPE_ROCK] = {0x00, 0x14, 0x14, 0x1e, 0x1e, 0x19, 0x19, 0x1e, 0x14, 0x1e, 0x14, 0x19, 0x19, 0x3c, 0x19, 0x19, 0x19, 0x1e},
|
||||
[TYPE_GHOST] = {0x00, 0x05, 0x19, 0x19, 0x19, 0x19, 0x19, 0x05, 0x14, 0x19, 0x19, 0x1e, 0x14, 0x19, 0x3c, 0x19, 0x1e, 0x19},
|
||||
[TYPE_DRAGON] = {0x00, 0x19, 0x14, 0x14, 0x14, 0x14, 0x1e, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x3c, 0x19, 0x19},
|
||||
[TYPE_DARK] = {0x00, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x1e, 0x19, 0x19, 0x19, 0x05, 0x1e, 0x19, 0x14, 0x19, 0x3c, 0x19},
|
||||
[TYPE_STEEL] = {0x00, 0x14, 0x1e, 0x19, 0x14, 0x19, 0x14, 0x1e, 0x05, 0x1e, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x3c},
|
||||
};
|
||||
@@ -1,293 +0,0 @@
|
||||
static const FriendAreaSettings sFriendAreaSettings[NUM_FRIEND_AREAS] = // 810AA90
|
||||
{
|
||||
[FRIEND_AREA_NONE] = {
|
||||
.num_pokemon = 0,
|
||||
.unlock_condition = UNLOCK_SHOP_STORY,
|
||||
.price = 0,
|
||||
},
|
||||
[BOUNTIFUL_SEA] = {
|
||||
.num_pokemon = 9,
|
||||
.unlock_condition = UNLOCK_SHOP_POST_GAME,
|
||||
.price = 5500,
|
||||
},
|
||||
[TREASURE_SEA] = {
|
||||
.num_pokemon = 10,
|
||||
.unlock_condition = UNLOCK_SHOP_POST_GAME,
|
||||
.price = 4500,
|
||||
},
|
||||
[SERENE_SEA] = {
|
||||
.num_pokemon = 4,
|
||||
.unlock_condition = UNLOCK_SHOP_POST_GAME,
|
||||
.price = 8000,
|
||||
},
|
||||
[DEEP_SEA_FLOOR] = {
|
||||
.num_pokemon = 12,
|
||||
.unlock_condition = UNLOCK_SHOP_POST_GAME,
|
||||
.price = 5500,
|
||||
},
|
||||
[DEEP_SEA_CURRENT] = {
|
||||
.num_pokemon = 1,
|
||||
.unlock_condition = UNLOCK_LEGENDARY_REQUEST,
|
||||
.price = 0,
|
||||
},
|
||||
[SEAFLOOR_CAVE] = {
|
||||
.num_pokemon = 1,
|
||||
.unlock_condition = UNLOCK_LEGENDARY_REQUEST,
|
||||
.price = 0,
|
||||
},
|
||||
[SHALLOW_BEACH] = {
|
||||
.num_pokemon = 5,
|
||||
.unlock_condition = UNLOCK_SHOP_POST_GAME,
|
||||
.price = 5000,
|
||||
},
|
||||
[MT_DEEPGREEN] = {
|
||||
.num_pokemon = 12,
|
||||
.unlock_condition = UNLOCK_SHOP_STORY,
|
||||
.price = 130,
|
||||
},
|
||||
[MT_CLEFT] = {
|
||||
.num_pokemon = 9,
|
||||
.unlock_condition = UNLOCK_SHOP_POST_GAME,
|
||||
.price = 5000,
|
||||
},
|
||||
[MT_MOONVIEW] = {
|
||||
.num_pokemon = 6,
|
||||
.unlock_condition = UNLOCK_WONDER_MAIL,
|
||||
.price = 0,
|
||||
},
|
||||
[RAINBOW_PEAK] = {
|
||||
.num_pokemon = 1,
|
||||
.unlock_condition = UNLOCK_SHOP_POST_GAME,
|
||||
.price = 6500,
|
||||
},
|
||||
[WILD_PLAINS] = {
|
||||
.num_pokemon = 13,
|
||||
.unlock_condition = UNLOCK_SHOP_STORY,
|
||||
.price = 100,
|
||||
},
|
||||
[BEAU_PLAINS] = {
|
||||
.num_pokemon = 12,
|
||||
.unlock_condition = UNLOCK_SHOP_STORY,
|
||||
.price = 600,
|
||||
},
|
||||
[SKY_BLUE_PLAINS] = {
|
||||
.num_pokemon = 13,
|
||||
.unlock_condition = UNLOCK_WONDER_MAIL,
|
||||
.price = 0,
|
||||
},
|
||||
[SAFARI] = {
|
||||
.num_pokemon = 15,
|
||||
.unlock_condition = UNLOCK_SHOP_STORY,
|
||||
.price = 700,
|
||||
},
|
||||
[SCORCHED_PLAINS] = {
|
||||
.num_pokemon = 10,
|
||||
.unlock_condition = UNLOCK_SHOP_POST_GAME,
|
||||
.price = 5000,
|
||||
},
|
||||
[SACRED_FIELD] = {
|
||||
.num_pokemon = 3,
|
||||
.unlock_condition = UNLOCK_SHOP_POST_GAME,
|
||||
.price = 6500
|
||||
},
|
||||
[MIST_RISE_FOREST] = {
|
||||
.num_pokemon = 14,
|
||||
.unlock_condition = UNLOCK_SHOP_STORY,
|
||||
.price = 150
|
||||
},
|
||||
[FLYAWAY_FOREST] = {
|
||||
.num_pokemon = 12,
|
||||
.unlock_condition = UNLOCK_SHOP_STORY,
|
||||
.price = 550
|
||||
},
|
||||
[OVERGROWN_FOREST] = {
|
||||
.num_pokemon = 9,
|
||||
.unlock_condition = UNLOCK_SHOP_STORY,
|
||||
.price = 600
|
||||
},
|
||||
[ENERGETIC_FOREST] = {
|
||||
.num_pokemon = 15,
|
||||
.unlock_condition = UNLOCK_SHOP_POST_GAME,
|
||||
.price = 5000
|
||||
},
|
||||
[MUSHROOM_FOREST] = {
|
||||
.num_pokemon = 7,
|
||||
.unlock_condition = UNLOCK_SHOP_STORY,
|
||||
.price = 500
|
||||
},
|
||||
[HEALING_FOREST] = {
|
||||
.num_pokemon = 1,
|
||||
.unlock_condition = UNLOCK_LEGENDARY_REQUEST,
|
||||
.price = 0
|
||||
},
|
||||
[TRANSFORM_FOREST] = {
|
||||
.num_pokemon = 6,
|
||||
.unlock_condition = UNLOCK_SHOP_STORY,
|
||||
.price = 500
|
||||
},
|
||||
[SECRETIVE_FOREST] = {
|
||||
.num_pokemon = 9,
|
||||
.unlock_condition = UNLOCK_SHOP_POST_GAME,
|
||||
.price = 6500
|
||||
},
|
||||
[RUB_A_DUB_RIVER] = {
|
||||
.num_pokemon = 7,
|
||||
.unlock_condition = UNLOCK_SHOP_STORY,
|
||||
.price = 500
|
||||
},
|
||||
[TADPOLE_POND] = {
|
||||
.num_pokemon = 9,
|
||||
.unlock_condition = UNLOCK_SHOP_STORY,
|
||||
.price = 500
|
||||
},
|
||||
[TURTLESHELL_POND] = {
|
||||
.num_pokemon = 10,
|
||||
.unlock_condition = UNLOCK_SHOP_POST_GAME,
|
||||
.price = 5500
|
||||
},
|
||||
[MYSTIC_LAKE] = {
|
||||
.num_pokemon = 4,
|
||||
.unlock_condition = UNLOCK_SHOP_POST_GAME,
|
||||
.price = 2500
|
||||
},
|
||||
[WATERFALL_LAKE] = {
|
||||
.num_pokemon = 4,
|
||||
.unlock_condition = UNLOCK_SHOP_POST_GAME,
|
||||
.price = 3500
|
||||
},
|
||||
[PEANUT_SWAMP] = {
|
||||
.num_pokemon = 7,
|
||||
.unlock_condition = UNLOCK_SHOP_STORY,
|
||||
.price = 2500
|
||||
},
|
||||
[POISON_SWAMP] = {
|
||||
.num_pokemon = 6,
|
||||
.unlock_condition = UNLOCK_SHOP_POST_GAME,
|
||||
.price = 8500
|
||||
},
|
||||
[ECHO_CAVE] = {
|
||||
.num_pokemon = 11,
|
||||
.unlock_condition = UNLOCK_SHOP_POST_GAME,
|
||||
.price = 7500
|
||||
},
|
||||
[CRYPTIC_CAVE] = {
|
||||
.num_pokemon = 1,
|
||||
.unlock_condition = UNLOCK_SHOP_POST_GAME,
|
||||
.price = 6500
|
||||
},
|
||||
[DRAGON_CAVE] = {
|
||||
.num_pokemon = 3,
|
||||
.unlock_condition = UNLOCK_WONDER_MAIL,
|
||||
.price = 0
|
||||
},
|
||||
[BOULDER_CAVE] = {
|
||||
.num_pokemon = 4,
|
||||
.unlock_condition = UNLOCK_WONDER_MAIL,
|
||||
.price = 0
|
||||
},
|
||||
[JUNGLE] = {
|
||||
.num_pokemon = 13,
|
||||
.unlock_condition = UNLOCK_SHOP_STORY,
|
||||
.price = 800
|
||||
},
|
||||
[DECREPIT_LAB] = {
|
||||
.num_pokemon = 7,
|
||||
.unlock_condition = UNLOCK_SHOP_STORY,
|
||||
.price = 1000
|
||||
},
|
||||
[MT_DISCIPLINE] = {
|
||||
.num_pokemon = 11,
|
||||
.unlock_condition = UNLOCK_SHOP_STORY,
|
||||
.price = 1200
|
||||
},
|
||||
[THUNDER_MEADOW] = {
|
||||
.num_pokemon = 11,
|
||||
.unlock_condition = UNLOCK_SHOP_STORY,
|
||||
.price = 1000
|
||||
},
|
||||
[POWER_PLANT] = {
|
||||
.num_pokemon = 6,
|
||||
.unlock_condition = UNLOCK_SHOP_STORY,
|
||||
.price = 600
|
||||
},
|
||||
[CRATER] = {
|
||||
.num_pokemon = 7,
|
||||
.unlock_condition = UNLOCK_SHOP_POST_GAME,
|
||||
.price = 7500
|
||||
},
|
||||
[FURNACE_DESERT] = {
|
||||
.num_pokemon = 7,
|
||||
.unlock_condition = UNLOCK_SHOP_POST_GAME,
|
||||
.price = 8500
|
||||
},
|
||||
[AGED_CHAMBER_AN] = {
|
||||
.num_pokemon = 14,
|
||||
.unlock_condition = UNLOCK_SHOP_POST_GAME,
|
||||
.price = 5500
|
||||
},
|
||||
[AGED_CHAMBER_O_EXCLAIM] = {
|
||||
.num_pokemon = 14,
|
||||
.unlock_condition = UNLOCK_SHOP_POST_GAME,
|
||||
.price = 5500
|
||||
},
|
||||
[ANCIENT_RELIC] = {
|
||||
.num_pokemon = 6,
|
||||
.unlock_condition = UNLOCK_SHOP_POST_GAME,
|
||||
.price = 8000
|
||||
},
|
||||
[DARKNESS_RIDGE] = {
|
||||
.num_pokemon = 13,
|
||||
.unlock_condition = UNLOCK_LEGENDARY_REQUEST,
|
||||
.price = 0
|
||||
},
|
||||
[FRIGID_CAVERN] = {
|
||||
.num_pokemon = 7,
|
||||
.unlock_condition = UNLOCK_SHOP_POST_GAME,
|
||||
.price = 9000
|
||||
},
|
||||
[ICE_FLOE_BEACH] = {
|
||||
.num_pokemon = 5,
|
||||
.unlock_condition = UNLOCK_SHOP_POST_GAME,
|
||||
.price = 9500
|
||||
},
|
||||
[VOLCANIC_PIT] = {
|
||||
.num_pokemon = 1,
|
||||
.unlock_condition = UNLOCK_LEGENDARY_REQUEST,
|
||||
.price = 0
|
||||
},
|
||||
[STRATOS_LOOKOUT] = {
|
||||
.num_pokemon = 1,
|
||||
.unlock_condition = UNLOCK_LEGENDARY_REQUEST,
|
||||
.price = 0
|
||||
},
|
||||
[RAVAGED_FIELD] = {
|
||||
.num_pokemon = 5,
|
||||
.unlock_condition = UNLOCK_SHOP_STORY,
|
||||
.price = 1000
|
||||
},
|
||||
[MAGNETIC_QUARRY] = {
|
||||
.num_pokemon = 3,
|
||||
.unlock_condition = UNLOCK_SHOP_STORY,
|
||||
.price = 1000
|
||||
},
|
||||
[LEGENDARY_ISLAND] = {
|
||||
.num_pokemon = 3,
|
||||
.unlock_condition = UNLOCK_LEGENDARY_REQUEST,
|
||||
.price = 7500
|
||||
},
|
||||
[SOUTHERN_ISLAND] = {
|
||||
.num_pokemon = 2,
|
||||
.unlock_condition = UNLOCK_SHOP_POST_GAME,
|
||||
.price = 9500
|
||||
},
|
||||
[ENCLOSED_ISLAND] = {
|
||||
.num_pokemon = 1,
|
||||
.unlock_condition = UNLOCK_LEGENDARY_REQUEST,
|
||||
.price = 0
|
||||
},
|
||||
[FINAL_ISLAND] = {
|
||||
.num_pokemon = 1,
|
||||
.unlock_condition = UNLOCK_SHOP_POST_GAME,
|
||||
.price = 8500
|
||||
},
|
||||
};
|
||||
@@ -1,37 +0,0 @@
|
||||
// LUT for money item stack size -> money amount
|
||||
// NDS=020C359C
|
||||
const s32 gUnknown_810A3F0[100] = {
|
||||
4, 6, 10, 14, 22, 26, 34, 38, 46, 58,
|
||||
62, 74, 82, 86, 94, 106, 118, 122, 134, 142,
|
||||
146, 158, 166, 178, 194, 202, 206, 214, 218, 226,
|
||||
254, 262, 274, 278, 298, 302, 314, 326, 334, 346,
|
||||
358, 362, 382, 386, 394, 398, 422, 446, 454, 458,
|
||||
466, 478, 482, 502, 514, 526, 538, 542, 554, 562,
|
||||
566, 586, 614, 622, 626, 634, 662, 674, 694, 698,
|
||||
706, 718, 734, 746, 758, 768, 778, 794, 802, 818,
|
||||
838, 842, 862, 866, 878, 886, 898, 914, 922, 926,
|
||||
934, 958, 974, 982, 998, 1000, 1100, 1300, 1500, 20000};
|
||||
|
||||
|
||||
const s16 gTypeGummiIQBoost[NUM_TYPES][NUMBER_OF_GUMMIS] =
|
||||
{
|
||||
[TYPE_NONE] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
[TYPE_NORMAL] = {0x00, 0x07, 0x03, 0x03, 0x03, 0x03, 0x03, 0x04, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x01, 0x03, 0x03, 0x03},
|
||||
[TYPE_FIRE] = {0x00, 0x03, 0x07, 0x04, 0x02, 0x03, 0x02, 0x03, 0x03, 0x04, 0x03, 0x03, 0x02, 0x04, 0x03, 0x03, 0x03, 0x02},
|
||||
[TYPE_WATER] = {0x00, 0x03, 0x02, 0x07, 0x04, 0x04, 0x02, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x02},
|
||||
[TYPE_GRASS] = {0x00, 0x03, 0x04, 0x02, 0x07, 0x02, 0x04, 0x03, 0x04, 0x02, 0x04, 0x03, 0x04, 0x03, 0x03, 0x03, 0x03, 0x03},
|
||||
[TYPE_ELECTRIC] = {0x00, 0x03, 0x03, 0x03, 0x03, 0x07, 0x03, 0x03, 0x03, 0x04, 0x02, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x02},
|
||||
[TYPE_ICE] = {0x00, 0x03, 0x04, 0x03, 0x03, 0x03, 0x07, 0x04, 0x03, 0x03, 0x03, 0x03, 0x03, 0x04, 0x03, 0x03, 0x03, 0x04},
|
||||
[TYPE_FIGHTING] = {0x00, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x07, 0x03, 0x03, 0x04, 0x04, 0x02, 0x02, 0x03, 0x03, 0x02, 0x03},
|
||||
[TYPE_POISON] = {0x00, 0x03, 0x03, 0x03, 0x02, 0x03, 0x03, 0x02, 0x07, 0x04, 0x03, 0x04, 0x02, 0x03, 0x03, 0x03, 0x03, 0x03},
|
||||
[TYPE_GROUND] = {0x00, 0x03, 0x03, 0x04, 0x04, 0x01, 0x04, 0x03, 0x02, 0x07, 0x03, 0x03, 0x03, 0x02, 0x03, 0x03, 0x03, 0x03},
|
||||
[TYPE_FLYING] = {0x00, 0x03, 0x03, 0x03, 0x02, 0x04, 0x04, 0x02, 0x03, 0x01, 0x07, 0x03, 0x02, 0x04, 0x03, 0x03, 0x03, 0x03},
|
||||
[TYPE_PSYCHIC] = {0x00, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x02, 0x03, 0x03, 0x03, 0x07, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03},
|
||||
[TYPE_BUG] = {0x00, 0x03, 0x04, 0x03, 0x02, 0x03, 0x03, 0x02, 0x03, 0x02, 0x04, 0x03, 0x07, 0x04, 0x03, 0x03, 0x03, 0x03},
|
||||
[TYPE_ROCK] = {0x00, 0x02, 0x02, 0x04, 0x04, 0x03, 0x03, 0x04, 0x02, 0x04, 0x02, 0x03, 0x03, 0x07, 0x03, 0x03, 0x03, 0x04},
|
||||
[TYPE_GHOST] = {0x00, 0x01, 0x03, 0x03, 0x03, 0x03, 0x03, 0x01, 0x02, 0x03, 0x03, 0x04, 0x02, 0x03, 0x07, 0x03, 0x04, 0x03},
|
||||
[TYPE_DRAGON] = {0x00, 0x03, 0x02, 0x02, 0x02, 0x02, 0x04, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x07, 0x03, 0x03},
|
||||
[TYPE_DARK] = {0x00, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x04, 0x03, 0x03, 0x03, 0x01, 0x04, 0x03, 0x02, 0x03, 0x07, 0x03},
|
||||
[TYPE_STEEL] = {0x00, 0x02, 0x04, 0x03, 0x02, 0x03, 0x02, 0x04, 0x01, 0x04, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x07},
|
||||
|
||||
};
|
||||
@@ -1,97 +0,0 @@
|
||||
const u8 gInvalidDungeonIDs[11] =
|
||||
{
|
||||
DUNGEON_BOSS_3,
|
||||
DUNGEON_BOSS_4,
|
||||
DUNGEON_BOSS_9,
|
||||
DUNGEON_WONDROUS_SEA,
|
||||
DUNGEON_AUTOPILOT,
|
||||
DUNGEON_D50,
|
||||
DUNGEON_D51,
|
||||
DUNGEON_D54,
|
||||
DUNGEON_POISON_MAZE,
|
||||
DUNGEON_D61,
|
||||
DUNGEON_OUT_ON_RESCUE
|
||||
};
|
||||
|
||||
// NDS=020C3448
|
||||
const u8 gInvalidItemIDs[0x10] =
|
||||
{
|
||||
ITEM_G_MACHINE_6,
|
||||
ITEM_G_MACHINE_7,
|
||||
ITEM_G_MACHINE_8,
|
||||
ITEM_TM_SPIN_SLASH,
|
||||
ITEM_SWITCH_BOX,
|
||||
ITEM_ALERT_SPECS,
|
||||
ITEM_POSSESS_ORB,
|
||||
ITEM_REVIVER_ORB,
|
||||
ITEM_TM_EXCAVATE,
|
||||
ITEM_TOSS_ORB,
|
||||
ITEM_RING_D,
|
||||
ITEM_RING_E,
|
||||
ITEM_RING_F,
|
||||
ITEM_OBSERVER_ORB,
|
||||
ITEM_BEATUP_ORB,
|
||||
NUMBER_OF_ITEM_IDS
|
||||
};
|
||||
|
||||
const bool8 gTacticsTargetLeader[NUM_TACTICS] =
|
||||
{
|
||||
[TACTIC_LETS_GO_TOGETHER] = TRUE,
|
||||
[TACTIC_GO_THE_OTHER_WAY] = FALSE,
|
||||
[TACTIC_GO_AFTER_FOES] = FALSE,
|
||||
[TACTIC_AVOID_THE_FIRST_HIT] = FALSE,
|
||||
[TACTIC_ALL_FOR_ONE] = TRUE,
|
||||
[TACTIC_GROUP_SAFETY] = TRUE,
|
||||
[TACTIC_AVOID_TROUBLE] = TRUE,
|
||||
[TACTIC_BE_PATIENT] = TRUE,
|
||||
[TACTIC_KEEP_YOUR_DISTANCE] = TRUE,
|
||||
[TACTIC_WAIT_THERE] = FALSE,
|
||||
[TACTIC_GET_AWAY] = TRUE,
|
||||
[TACTIC_UNUSED] = FALSE
|
||||
};
|
||||
|
||||
|
||||
const s16 gReqTacticLvls[NUM_TACTICS] =
|
||||
{
|
||||
[TACTIC_LETS_GO_TOGETHER] = 1,
|
||||
[TACTIC_GO_THE_OTHER_WAY] = 25,
|
||||
[TACTIC_GO_AFTER_FOES] = 1,
|
||||
[TACTIC_AVOID_THE_FIRST_HIT] = 1,
|
||||
[TACTIC_ALL_FOR_ONE] = 999,
|
||||
[TACTIC_GROUP_SAFETY] = 999,
|
||||
[TACTIC_AVOID_TROUBLE] = 35,
|
||||
[TACTIC_BE_PATIENT] = 40,
|
||||
[TACTIC_KEEP_YOUR_DISTANCE] = 20,
|
||||
[TACTIC_WAIT_THERE] = 15,
|
||||
[TACTIC_GET_AWAY] = 10,
|
||||
[TACTIC_UNUSED] = 999,
|
||||
};
|
||||
|
||||
|
||||
const s32 gReqIQSkillPts[NUM_IQ_SKILLS] =
|
||||
{
|
||||
[IQ_NONE] = 9999,
|
||||
[IQ_TYPE_ADVANTAGE_MASTER] = 105,
|
||||
[IQ_ITEM_CATCHER] = 1,
|
||||
[IQ_COURSE_CHECKER] = 1,
|
||||
[IQ_SURE_HIT_ATTACKER] = 500,
|
||||
[IQ_QUICK_DODGER] = 100,
|
||||
[IQ_PP_CHECKER] = 2,
|
||||
[IQ_NONTRAITOR] = 40,
|
||||
[IQ_STATUS_CHECKER] = 25,
|
||||
[IQ_EXP_GO_GETTER] = 200,
|
||||
[IQ_EFFICIENCY_EXPERT] = 10,
|
||||
[IQ_WEAK_TYPE_PICKER] = 125,
|
||||
[IQ_ALL_TERRAIN_HIKER] = 400,
|
||||
[IQ_SUPER_MOBILE] = 990,
|
||||
[IQ_TRAP_AVOIDER] = 140,
|
||||
[IQ_HOUSE_AVOIDER] = 800,
|
||||
[IQ_ENERGY_SAVER] = 250,
|
||||
[IQ_NONSLEEPER] = 160,
|
||||
[IQ_SELF_CURER] = 70,
|
||||
[IQ_TRAP_SEER] = 600,
|
||||
[IQ_LAVA_EVADER] = 300,
|
||||
[IQ_DEDICATED_TRAVELER] = 1,
|
||||
[IQ_ITEM_MASTER] = 1,
|
||||
[IQ_EXCLUSIVE_MOVE_USER] = 1,
|
||||
};
|
||||
@@ -12,11 +12,11 @@
|
||||
#include "random.h"
|
||||
#include "string_format.h"
|
||||
#include "strings.h"
|
||||
#include "dungeon_data.h"
|
||||
|
||||
extern const char gUnknown_8108F10[];
|
||||
extern const char gUnknown_8108F18[];
|
||||
extern const char gUnknown_8108F2C[];
|
||||
extern u8 gInvalidDungeonIDs[];
|
||||
extern u8 gDungeonFloorCount[];
|
||||
extern const u8 *const gUnknown_8108084[];
|
||||
extern DungeonLocation gUnknown_8107828[];
|
||||
|
||||
597
src/dungeon_data.c
Normal file
597
src/dungeon_data.c
Normal file
@@ -0,0 +1,597 @@
|
||||
#include "global.h"
|
||||
// #include "globaldata.h" TODO: once gDungeons is moved to C
|
||||
#include "dungeon_data.h"
|
||||
#include "dungeon_map_access.h"
|
||||
#include "constants/walkable_tile.h"
|
||||
|
||||
// TODO: gDungeons from `dungeon/dungeon_data.inc`
|
||||
|
||||
const u8 gInvalidDungeonIDs[11] =
|
||||
{
|
||||
DUNGEON_BOSS_3,
|
||||
DUNGEON_BOSS_4,
|
||||
DUNGEON_BOSS_9,
|
||||
DUNGEON_WONDROUS_SEA,
|
||||
DUNGEON_AUTOPILOT,
|
||||
DUNGEON_D50,
|
||||
DUNGEON_D51,
|
||||
DUNGEON_D54,
|
||||
DUNGEON_POISON_MAZE,
|
||||
DUNGEON_D61,
|
||||
DUNGEON_OUT_ON_RESCUE
|
||||
};
|
||||
|
||||
// NDS=020C3448
|
||||
const u8 gInvalidItemIDs[16] =
|
||||
{
|
||||
ITEM_G_MACHINE_6,
|
||||
ITEM_G_MACHINE_7,
|
||||
ITEM_G_MACHINE_8,
|
||||
ITEM_TM_SPIN_SLASH,
|
||||
ITEM_SWITCH_BOX,
|
||||
ITEM_ALERT_SPECS,
|
||||
ITEM_POSSESS_ORB,
|
||||
ITEM_REVIVER_ORB,
|
||||
ITEM_TM_EXCAVATE,
|
||||
ITEM_TOSS_ORB,
|
||||
ITEM_RING_D,
|
||||
ITEM_RING_E,
|
||||
ITEM_RING_F,
|
||||
ITEM_OBSERVER_ORB,
|
||||
ITEM_BEATUP_ORB,
|
||||
NUMBER_OF_ITEM_IDS
|
||||
};
|
||||
|
||||
const bool8 gTacticsTargetLeader[NUM_TACTICS] =
|
||||
{
|
||||
[TACTIC_LETS_GO_TOGETHER] = TRUE,
|
||||
[TACTIC_GO_THE_OTHER_WAY] = FALSE,
|
||||
[TACTIC_GO_AFTER_FOES] = FALSE,
|
||||
[TACTIC_AVOID_THE_FIRST_HIT] = FALSE,
|
||||
[TACTIC_ALL_FOR_ONE] = TRUE,
|
||||
[TACTIC_GROUP_SAFETY] = TRUE,
|
||||
[TACTIC_AVOID_TROUBLE] = TRUE,
|
||||
[TACTIC_BE_PATIENT] = TRUE,
|
||||
[TACTIC_KEEP_YOUR_DISTANCE] = TRUE,
|
||||
[TACTIC_WAIT_THERE] = FALSE,
|
||||
[TACTIC_GET_AWAY] = TRUE,
|
||||
[TACTIC_UNUSED] = FALSE
|
||||
};
|
||||
|
||||
const s16 gReqTacticLvls[NUM_TACTICS] =
|
||||
{
|
||||
[TACTIC_LETS_GO_TOGETHER] = 1,
|
||||
[TACTIC_GO_THE_OTHER_WAY] = 25,
|
||||
[TACTIC_GO_AFTER_FOES] = 1,
|
||||
[TACTIC_AVOID_THE_FIRST_HIT] = 1,
|
||||
[TACTIC_ALL_FOR_ONE] = 999,
|
||||
[TACTIC_GROUP_SAFETY] = 999,
|
||||
[TACTIC_AVOID_TROUBLE] = 35,
|
||||
[TACTIC_BE_PATIENT] = 40,
|
||||
[TACTIC_KEEP_YOUR_DISTANCE] = 20,
|
||||
[TACTIC_WAIT_THERE] = 15,
|
||||
[TACTIC_GET_AWAY] = 10,
|
||||
[TACTIC_UNUSED] = 999,
|
||||
};
|
||||
|
||||
const s32 gReqIQSkillPts[NUM_IQ_SKILLS] =
|
||||
{
|
||||
[IQ_NONE] = 9999,
|
||||
[IQ_TYPE_ADVANTAGE_MASTER] = 105,
|
||||
[IQ_ITEM_CATCHER] = 1,
|
||||
[IQ_COURSE_CHECKER] = 1,
|
||||
[IQ_SURE_HIT_ATTACKER] = 500,
|
||||
[IQ_QUICK_DODGER] = 100,
|
||||
[IQ_PP_CHECKER] = 2,
|
||||
[IQ_NONTRAITOR] = 40,
|
||||
[IQ_STATUS_CHECKER] = 25,
|
||||
[IQ_EXP_GO_GETTER] = 200,
|
||||
[IQ_EFFICIENCY_EXPERT] = 10,
|
||||
[IQ_WEAK_TYPE_PICKER] = 125,
|
||||
[IQ_ALL_TERRAIN_HIKER] = 400,
|
||||
[IQ_SUPER_MOBILE] = 990,
|
||||
[IQ_TRAP_AVOIDER] = 140,
|
||||
[IQ_HOUSE_AVOIDER] = 800,
|
||||
[IQ_ENERGY_SAVER] = 250,
|
||||
[IQ_NONSLEEPER] = 160,
|
||||
[IQ_SELF_CURER] = 70,
|
||||
[IQ_TRAP_SEER] = 600,
|
||||
[IQ_LAVA_EVADER] = 300,
|
||||
[IQ_DEDICATED_TRAVELER] = 1,
|
||||
[IQ_ITEM_MASTER] = 1,
|
||||
[IQ_EXCLUSIVE_MOVE_USER] = 1,
|
||||
};
|
||||
|
||||
// LUT for money item stack size -> money amount
|
||||
// NDS=020C359C
|
||||
const s32 gUnknown_810A3F0[100] = {
|
||||
4, 6, 10, 14, 22, 26, 34, 38, 46, 58,
|
||||
62, 74, 82, 86, 94, 106, 118, 122, 134, 142,
|
||||
146, 158, 166, 178, 194, 202, 206, 214, 218, 226,
|
||||
254, 262, 274, 278, 298, 302, 314, 326, 334, 346,
|
||||
358, 362, 382, 386, 394, 398, 422, 446, 454, 458,
|
||||
466, 478, 482, 502, 514, 526, 538, 542, 554, 562,
|
||||
566, 586, 614, 622, 626, 634, 662, 674, 694, 698,
|
||||
706, 718, 734, 746, 758, 768, 778, 794, 802, 818,
|
||||
838, 842, 862, 866, 878, 886, 898, 914, 922, 926,
|
||||
934, 958, 974, 982, 998, 1000, 1100, 1300, 1500, 20000
|
||||
};
|
||||
|
||||
const s16 gTypeGummiIQBoost[NUM_TYPES][NUMBER_OF_GUMMIS] =
|
||||
{
|
||||
[TYPE_NONE] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
[TYPE_NORMAL] = {0x00, 0x07, 0x03, 0x03, 0x03, 0x03, 0x03, 0x04, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x01, 0x03, 0x03, 0x03},
|
||||
[TYPE_FIRE] = {0x00, 0x03, 0x07, 0x04, 0x02, 0x03, 0x02, 0x03, 0x03, 0x04, 0x03, 0x03, 0x02, 0x04, 0x03, 0x03, 0x03, 0x02},
|
||||
[TYPE_WATER] = {0x00, 0x03, 0x02, 0x07, 0x04, 0x04, 0x02, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x02},
|
||||
[TYPE_GRASS] = {0x00, 0x03, 0x04, 0x02, 0x07, 0x02, 0x04, 0x03, 0x04, 0x02, 0x04, 0x03, 0x04, 0x03, 0x03, 0x03, 0x03, 0x03},
|
||||
[TYPE_ELECTRIC] = {0x00, 0x03, 0x03, 0x03, 0x03, 0x07, 0x03, 0x03, 0x03, 0x04, 0x02, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x02},
|
||||
[TYPE_ICE] = {0x00, 0x03, 0x04, 0x03, 0x03, 0x03, 0x07, 0x04, 0x03, 0x03, 0x03, 0x03, 0x03, 0x04, 0x03, 0x03, 0x03, 0x04},
|
||||
[TYPE_FIGHTING] = {0x00, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x07, 0x03, 0x03, 0x04, 0x04, 0x02, 0x02, 0x03, 0x03, 0x02, 0x03},
|
||||
[TYPE_POISON] = {0x00, 0x03, 0x03, 0x03, 0x02, 0x03, 0x03, 0x02, 0x07, 0x04, 0x03, 0x04, 0x02, 0x03, 0x03, 0x03, 0x03, 0x03},
|
||||
[TYPE_GROUND] = {0x00, 0x03, 0x03, 0x04, 0x04, 0x01, 0x04, 0x03, 0x02, 0x07, 0x03, 0x03, 0x03, 0x02, 0x03, 0x03, 0x03, 0x03},
|
||||
[TYPE_FLYING] = {0x00, 0x03, 0x03, 0x03, 0x02, 0x04, 0x04, 0x02, 0x03, 0x01, 0x07, 0x03, 0x02, 0x04, 0x03, 0x03, 0x03, 0x03},
|
||||
[TYPE_PSYCHIC] = {0x00, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x02, 0x03, 0x03, 0x03, 0x07, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03},
|
||||
[TYPE_BUG] = {0x00, 0x03, 0x04, 0x03, 0x02, 0x03, 0x03, 0x02, 0x03, 0x02, 0x04, 0x03, 0x07, 0x04, 0x03, 0x03, 0x03, 0x03},
|
||||
[TYPE_ROCK] = {0x00, 0x02, 0x02, 0x04, 0x04, 0x03, 0x03, 0x04, 0x02, 0x04, 0x02, 0x03, 0x03, 0x07, 0x03, 0x03, 0x03, 0x04},
|
||||
[TYPE_GHOST] = {0x00, 0x01, 0x03, 0x03, 0x03, 0x03, 0x03, 0x01, 0x02, 0x03, 0x03, 0x04, 0x02, 0x03, 0x07, 0x03, 0x04, 0x03},
|
||||
[TYPE_DRAGON] = {0x00, 0x03, 0x02, 0x02, 0x02, 0x02, 0x04, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x07, 0x03, 0x03},
|
||||
[TYPE_DARK] = {0x00, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x04, 0x03, 0x03, 0x03, 0x01, 0x04, 0x03, 0x02, 0x03, 0x07, 0x03},
|
||||
[TYPE_STEEL] = {0x00, 0x02, 0x04, 0x03, 0x02, 0x03, 0x02, 0x04, 0x01, 0x04, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x07},
|
||||
};
|
||||
|
||||
const s16 gUnknown_810A808[NUM_TYPES][NUMBER_OF_GUMMIS] =
|
||||
{
|
||||
[TYPE_NONE] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
[TYPE_NORMAL] = {0x00, 0x3c, 0x19, 0x19, 0x19, 0x19, 0x19, 0x1e, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x05, 0x19, 0x19, 0x19},
|
||||
[TYPE_FIRE] = {0x00, 0x19, 0x3c, 0x1e, 0x14, 0x19, 0x14, 0x19, 0x19, 0x1e, 0x19, 0x19, 0x14, 0x1e, 0x19, 0x19, 0x19, 0x14},
|
||||
[TYPE_WATER] = {0x00, 0x19, 0x14, 0x3c, 0x1e, 0x1e, 0x14, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x14},
|
||||
[TYPE_GRASS] = {0x00, 0x19, 0x1e, 0x14, 0x3c, 0x14, 0x1e, 0x19, 0x1e, 0x14, 0x1e, 0x19, 0x1e, 0x19, 0x19, 0x19, 0x19, 0x19},
|
||||
[TYPE_ELECTRIC] = {0x00, 0x19, 0x19, 0x19, 0x19, 0x3c, 0x19, 0x19, 0x19, 0x1e, 0x14, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x14},
|
||||
[TYPE_ICE] = {0x00, 0x19, 0x1e, 0x19, 0x19, 0x19, 0x3c, 0x1e, 0x19, 0x19, 0x19, 0x19, 0x19, 0x1e, 0x19, 0x19, 0x19, 0x1e},
|
||||
[TYPE_FIGHTING] = {0x00, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x3c, 0x19, 0x19, 0x1e, 0x1e, 0x14, 0x14, 0x19, 0x19, 0x14, 0x19},
|
||||
[TYPE_POISON] = {0x00, 0x19, 0x19, 0x19, 0x14, 0x19, 0x19, 0x14, 0x3c, 0x1e, 0x19, 0x1e, 0x14, 0x19, 0x19, 0x19, 0x19, 0x19},
|
||||
[TYPE_GROUND] = {0x00, 0x19, 0x19, 0x1e, 0x1e, 0x05, 0x1e, 0x19, 0x14, 0x3c, 0x19, 0x19, 0x19, 0x14, 0x19, 0x19, 0x19, 0x19},
|
||||
[TYPE_FLYING] = {0x00, 0x19, 0x19, 0x19, 0x14, 0x1e, 0x1e, 0x14, 0x19, 0x05, 0x3c, 0x19, 0x14, 0x1e, 0x19, 0x19, 0x19, 0x19},
|
||||
[TYPE_PSYCHIC] = {0x00, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x14, 0x19, 0x19, 0x19, 0x3c, 0x1e, 0x19, 0x1e, 0x19, 0x1e, 0x19},
|
||||
[TYPE_BUG] = {0x00, 0x19, 0x1e, 0x19, 0x14, 0x19, 0x19, 0x14, 0x19, 0x14, 0x1e, 0x19, 0x3c, 0x1e, 0x19, 0x19, 0x19, 0x19},
|
||||
[TYPE_ROCK] = {0x00, 0x14, 0x14, 0x1e, 0x1e, 0x19, 0x19, 0x1e, 0x14, 0x1e, 0x14, 0x19, 0x19, 0x3c, 0x19, 0x19, 0x19, 0x1e},
|
||||
[TYPE_GHOST] = {0x00, 0x05, 0x19, 0x19, 0x19, 0x19, 0x19, 0x05, 0x14, 0x19, 0x19, 0x1e, 0x14, 0x19, 0x3c, 0x19, 0x1e, 0x19},
|
||||
[TYPE_DRAGON] = {0x00, 0x19, 0x14, 0x14, 0x14, 0x14, 0x1e, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x3c, 0x19, 0x19},
|
||||
[TYPE_DARK] = {0x00, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x1e, 0x19, 0x19, 0x19, 0x05, 0x1e, 0x19, 0x14, 0x19, 0x3c, 0x19},
|
||||
[TYPE_STEEL] = {0x00, 0x14, 0x1e, 0x19, 0x14, 0x19, 0x14, 0x1e, 0x05, 0x1e, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x3c},
|
||||
};
|
||||
|
||||
const FriendAreaSettings gFriendAreaSettings[NUM_FRIEND_AREAS] =
|
||||
{
|
||||
[FRIEND_AREA_NONE] = {
|
||||
.num_pokemon = 0,
|
||||
.unlock_condition = UNLOCK_SHOP_STORY,
|
||||
.price = 0,
|
||||
},
|
||||
[BOUNTIFUL_SEA] = {
|
||||
.num_pokemon = 9,
|
||||
.unlock_condition = UNLOCK_SHOP_POST_GAME,
|
||||
.price = 5500,
|
||||
},
|
||||
[TREASURE_SEA] = {
|
||||
.num_pokemon = 10,
|
||||
.unlock_condition = UNLOCK_SHOP_POST_GAME,
|
||||
.price = 4500,
|
||||
},
|
||||
[SERENE_SEA] = {
|
||||
.num_pokemon = 4,
|
||||
.unlock_condition = UNLOCK_SHOP_POST_GAME,
|
||||
.price = 8000,
|
||||
},
|
||||
[DEEP_SEA_FLOOR] = {
|
||||
.num_pokemon = 12,
|
||||
.unlock_condition = UNLOCK_SHOP_POST_GAME,
|
||||
.price = 5500,
|
||||
},
|
||||
[DEEP_SEA_CURRENT] = {
|
||||
.num_pokemon = 1,
|
||||
.unlock_condition = UNLOCK_LEGENDARY_REQUEST,
|
||||
.price = 0,
|
||||
},
|
||||
[SEAFLOOR_CAVE] = {
|
||||
.num_pokemon = 1,
|
||||
.unlock_condition = UNLOCK_LEGENDARY_REQUEST,
|
||||
.price = 0,
|
||||
},
|
||||
[SHALLOW_BEACH] = {
|
||||
.num_pokemon = 5,
|
||||
.unlock_condition = UNLOCK_SHOP_POST_GAME,
|
||||
.price = 5000,
|
||||
},
|
||||
[MT_DEEPGREEN] = {
|
||||
.num_pokemon = 12,
|
||||
.unlock_condition = UNLOCK_SHOP_STORY,
|
||||
.price = 130,
|
||||
},
|
||||
[MT_CLEFT] = {
|
||||
.num_pokemon = 9,
|
||||
.unlock_condition = UNLOCK_SHOP_POST_GAME,
|
||||
.price = 5000,
|
||||
},
|
||||
[MT_MOONVIEW] = {
|
||||
.num_pokemon = 6,
|
||||
.unlock_condition = UNLOCK_WONDER_MAIL,
|
||||
.price = 0,
|
||||
},
|
||||
[RAINBOW_PEAK] = {
|
||||
.num_pokemon = 1,
|
||||
.unlock_condition = UNLOCK_SHOP_POST_GAME,
|
||||
.price = 6500,
|
||||
},
|
||||
[WILD_PLAINS] = {
|
||||
.num_pokemon = 13,
|
||||
.unlock_condition = UNLOCK_SHOP_STORY,
|
||||
.price = 100,
|
||||
},
|
||||
[BEAU_PLAINS] = {
|
||||
.num_pokemon = 12,
|
||||
.unlock_condition = UNLOCK_SHOP_STORY,
|
||||
.price = 600,
|
||||
},
|
||||
[SKY_BLUE_PLAINS] = {
|
||||
.num_pokemon = 13,
|
||||
.unlock_condition = UNLOCK_WONDER_MAIL,
|
||||
.price = 0,
|
||||
},
|
||||
[SAFARI] = {
|
||||
.num_pokemon = 15,
|
||||
.unlock_condition = UNLOCK_SHOP_STORY,
|
||||
.price = 700,
|
||||
},
|
||||
[SCORCHED_PLAINS] = {
|
||||
.num_pokemon = 10,
|
||||
.unlock_condition = UNLOCK_SHOP_POST_GAME,
|
||||
.price = 5000,
|
||||
},
|
||||
[SACRED_FIELD] = {
|
||||
.num_pokemon = 3,
|
||||
.unlock_condition = UNLOCK_SHOP_POST_GAME,
|
||||
.price = 6500
|
||||
},
|
||||
[MIST_RISE_FOREST] = {
|
||||
.num_pokemon = 14,
|
||||
.unlock_condition = UNLOCK_SHOP_STORY,
|
||||
.price = 150
|
||||
},
|
||||
[FLYAWAY_FOREST] = {
|
||||
.num_pokemon = 12,
|
||||
.unlock_condition = UNLOCK_SHOP_STORY,
|
||||
.price = 550
|
||||
},
|
||||
[OVERGROWN_FOREST] = {
|
||||
.num_pokemon = 9,
|
||||
.unlock_condition = UNLOCK_SHOP_STORY,
|
||||
.price = 600
|
||||
},
|
||||
[ENERGETIC_FOREST] = {
|
||||
.num_pokemon = 15,
|
||||
.unlock_condition = UNLOCK_SHOP_POST_GAME,
|
||||
.price = 5000
|
||||
},
|
||||
[MUSHROOM_FOREST] = {
|
||||
.num_pokemon = 7,
|
||||
.unlock_condition = UNLOCK_SHOP_STORY,
|
||||
.price = 500
|
||||
},
|
||||
[HEALING_FOREST] = {
|
||||
.num_pokemon = 1,
|
||||
.unlock_condition = UNLOCK_LEGENDARY_REQUEST,
|
||||
.price = 0
|
||||
},
|
||||
[TRANSFORM_FOREST] = {
|
||||
.num_pokemon = 6,
|
||||
.unlock_condition = UNLOCK_SHOP_STORY,
|
||||
.price = 500
|
||||
},
|
||||
[SECRETIVE_FOREST] = {
|
||||
.num_pokemon = 9,
|
||||
.unlock_condition = UNLOCK_SHOP_POST_GAME,
|
||||
.price = 6500
|
||||
},
|
||||
[RUB_A_DUB_RIVER] = {
|
||||
.num_pokemon = 7,
|
||||
.unlock_condition = UNLOCK_SHOP_STORY,
|
||||
.price = 500
|
||||
},
|
||||
[TADPOLE_POND] = {
|
||||
.num_pokemon = 9,
|
||||
.unlock_condition = UNLOCK_SHOP_STORY,
|
||||
.price = 500
|
||||
},
|
||||
[TURTLESHELL_POND] = {
|
||||
.num_pokemon = 10,
|
||||
.unlock_condition = UNLOCK_SHOP_POST_GAME,
|
||||
.price = 5500
|
||||
},
|
||||
[MYSTIC_LAKE] = {
|
||||
.num_pokemon = 4,
|
||||
.unlock_condition = UNLOCK_SHOP_POST_GAME,
|
||||
.price = 2500
|
||||
},
|
||||
[WATERFALL_LAKE] = {
|
||||
.num_pokemon = 4,
|
||||
.unlock_condition = UNLOCK_SHOP_POST_GAME,
|
||||
.price = 3500
|
||||
},
|
||||
[PEANUT_SWAMP] = {
|
||||
.num_pokemon = 7,
|
||||
.unlock_condition = UNLOCK_SHOP_STORY,
|
||||
.price = 2500
|
||||
},
|
||||
[POISON_SWAMP] = {
|
||||
.num_pokemon = 6,
|
||||
.unlock_condition = UNLOCK_SHOP_POST_GAME,
|
||||
.price = 8500
|
||||
},
|
||||
[ECHO_CAVE] = {
|
||||
.num_pokemon = 11,
|
||||
.unlock_condition = UNLOCK_SHOP_POST_GAME,
|
||||
.price = 7500
|
||||
},
|
||||
[CRYPTIC_CAVE] = {
|
||||
.num_pokemon = 1,
|
||||
.unlock_condition = UNLOCK_SHOP_POST_GAME,
|
||||
.price = 6500
|
||||
},
|
||||
[DRAGON_CAVE] = {
|
||||
.num_pokemon = 3,
|
||||
.unlock_condition = UNLOCK_WONDER_MAIL,
|
||||
.price = 0
|
||||
},
|
||||
[BOULDER_CAVE] = {
|
||||
.num_pokemon = 4,
|
||||
.unlock_condition = UNLOCK_WONDER_MAIL,
|
||||
.price = 0
|
||||
},
|
||||
[JUNGLE] = {
|
||||
.num_pokemon = 13,
|
||||
.unlock_condition = UNLOCK_SHOP_STORY,
|
||||
.price = 800
|
||||
},
|
||||
[DECREPIT_LAB] = {
|
||||
.num_pokemon = 7,
|
||||
.unlock_condition = UNLOCK_SHOP_STORY,
|
||||
.price = 1000
|
||||
},
|
||||
[MT_DISCIPLINE] = {
|
||||
.num_pokemon = 11,
|
||||
.unlock_condition = UNLOCK_SHOP_STORY,
|
||||
.price = 1200
|
||||
},
|
||||
[THUNDER_MEADOW] = {
|
||||
.num_pokemon = 11,
|
||||
.unlock_condition = UNLOCK_SHOP_STORY,
|
||||
.price = 1000
|
||||
},
|
||||
[POWER_PLANT] = {
|
||||
.num_pokemon = 6,
|
||||
.unlock_condition = UNLOCK_SHOP_STORY,
|
||||
.price = 600
|
||||
},
|
||||
[CRATER] = {
|
||||
.num_pokemon = 7,
|
||||
.unlock_condition = UNLOCK_SHOP_POST_GAME,
|
||||
.price = 7500
|
||||
},
|
||||
[FURNACE_DESERT] = {
|
||||
.num_pokemon = 7,
|
||||
.unlock_condition = UNLOCK_SHOP_POST_GAME,
|
||||
.price = 8500
|
||||
},
|
||||
[AGED_CHAMBER_AN] = {
|
||||
.num_pokemon = 14,
|
||||
.unlock_condition = UNLOCK_SHOP_POST_GAME,
|
||||
.price = 5500
|
||||
},
|
||||
[AGED_CHAMBER_O_EXCLAIM] = {
|
||||
.num_pokemon = 14,
|
||||
.unlock_condition = UNLOCK_SHOP_POST_GAME,
|
||||
.price = 5500
|
||||
},
|
||||
[ANCIENT_RELIC] = {
|
||||
.num_pokemon = 6,
|
||||
.unlock_condition = UNLOCK_SHOP_POST_GAME,
|
||||
.price = 8000
|
||||
},
|
||||
[DARKNESS_RIDGE] = {
|
||||
.num_pokemon = 13,
|
||||
.unlock_condition = UNLOCK_LEGENDARY_REQUEST,
|
||||
.price = 0
|
||||
},
|
||||
[FRIGID_CAVERN] = {
|
||||
.num_pokemon = 7,
|
||||
.unlock_condition = UNLOCK_SHOP_POST_GAME,
|
||||
.price = 9000
|
||||
},
|
||||
[ICE_FLOE_BEACH] = {
|
||||
.num_pokemon = 5,
|
||||
.unlock_condition = UNLOCK_SHOP_POST_GAME,
|
||||
.price = 9500
|
||||
},
|
||||
[VOLCANIC_PIT] = {
|
||||
.num_pokemon = 1,
|
||||
.unlock_condition = UNLOCK_LEGENDARY_REQUEST,
|
||||
.price = 0
|
||||
},
|
||||
[STRATOS_LOOKOUT] = {
|
||||
.num_pokemon = 1,
|
||||
.unlock_condition = UNLOCK_LEGENDARY_REQUEST,
|
||||
.price = 0
|
||||
},
|
||||
[RAVAGED_FIELD] = {
|
||||
.num_pokemon = 5,
|
||||
.unlock_condition = UNLOCK_SHOP_STORY,
|
||||
.price = 1000
|
||||
},
|
||||
[MAGNETIC_QUARRY] = {
|
||||
.num_pokemon = 3,
|
||||
.unlock_condition = UNLOCK_SHOP_STORY,
|
||||
.price = 1000
|
||||
},
|
||||
[LEGENDARY_ISLAND] = {
|
||||
.num_pokemon = 3,
|
||||
.unlock_condition = UNLOCK_LEGENDARY_REQUEST,
|
||||
.price = 7500
|
||||
},
|
||||
[SOUTHERN_ISLAND] = {
|
||||
.num_pokemon = 2,
|
||||
.unlock_condition = UNLOCK_SHOP_POST_GAME,
|
||||
.price = 9500
|
||||
},
|
||||
[ENCLOSED_ISLAND] = {
|
||||
.num_pokemon = 1,
|
||||
.unlock_condition = UNLOCK_LEGENDARY_REQUEST,
|
||||
.price = 0
|
||||
},
|
||||
[FINAL_ISLAND] = {
|
||||
.num_pokemon = 1,
|
||||
.unlock_condition = UNLOCK_SHOP_POST_GAME,
|
||||
.price = 8500
|
||||
},
|
||||
};
|
||||
|
||||
const s16 gUnknown_810AC60 = 12;
|
||||
const s16 gUnknown_810AC62 = 12;
|
||||
const s16 gUnknown_810AC64 = 8;
|
||||
const s16 gUnknown_810AC66 = 8;
|
||||
const s16 gUnknown_810AC68 = 8;
|
||||
|
||||
const u8 gUnknown_810AC6A[NUM_TYPES] =
|
||||
{
|
||||
[TYPE_NONE] = TYPE_NONE,
|
||||
[TYPE_NORMAL] = TYPE_GHOST,
|
||||
[TYPE_FIRE] = TYPE_WATER,
|
||||
[TYPE_WATER] = TYPE_GRASS,
|
||||
[TYPE_GRASS] = TYPE_BUG,
|
||||
[TYPE_ELECTRIC] = TYPE_GROUND,
|
||||
[TYPE_ICE] = TYPE_FIRE,
|
||||
[TYPE_FIGHTING] = TYPE_GHOST,
|
||||
[TYPE_POISON] = TYPE_STEEL,
|
||||
[TYPE_GROUND] = TYPE_FLYING,
|
||||
[TYPE_FLYING] = TYPE_ROCK,
|
||||
[TYPE_PSYCHIC] = TYPE_DARK,
|
||||
[TYPE_BUG] = TYPE_POISON,
|
||||
[TYPE_ROCK] = TYPE_FIGHTING,
|
||||
[TYPE_GHOST] = TYPE_NORMAL,
|
||||
[TYPE_DRAGON] = TYPE_STEEL,
|
||||
[TYPE_DARK] = TYPE_DARK,
|
||||
[TYPE_STEEL] = TYPE_ELECTRIC,
|
||||
};
|
||||
|
||||
const bool8 gIsTypePhysicalTable[NUM_TYPES] = {
|
||||
[TYPE_NONE] = TRUE,
|
||||
[TYPE_NORMAL] = TRUE,
|
||||
[TYPE_FIGHTING] = TRUE,
|
||||
[TYPE_POISON] = TRUE,
|
||||
[TYPE_GROUND] = TRUE,
|
||||
[TYPE_FLYING] = TRUE,
|
||||
[TYPE_BUG] = TRUE,
|
||||
[TYPE_ROCK] = TRUE,
|
||||
[TYPE_GHOST] = TRUE,
|
||||
[TYPE_STEEL] = TRUE,
|
||||
};
|
||||
const s32 gUnknown_810AC90[10] = {2, 4, 6, 7, 8, 9, 0xA, 0xD, 0xF, 0x11};
|
||||
const s16 gFrenzyPlantIQReq = 333;
|
||||
const s16 gHydroCannonIQReq = 333;
|
||||
const s16 gBlastBurnIQReq = 333;
|
||||
const s16 gVoltTackleIQReq = 333;
|
||||
|
||||
const u8 gDungeonWaterType[76] = {
|
||||
DUNGEON_WATER_TYPE_NONE,
|
||||
DUNGEON_WATER_TYPE_NONE,
|
||||
DUNGEON_WATER_TYPE_NONE,
|
||||
DUNGEON_WATER_TYPE_NONE,
|
||||
DUNGEON_WATER_TYPE_NONE,
|
||||
DUNGEON_WATER_TYPE_NONE,
|
||||
DUNGEON_WATER_TYPE_NONE,
|
||||
DUNGEON_WATER_TYPE_NONE,
|
||||
DUNGEON_WATER_TYPE_NONE,
|
||||
DUNGEON_WATER_TYPE_WATER,
|
||||
DUNGEON_WATER_TYPE_NONE,
|
||||
DUNGEON_WATER_TYPE_NONE,
|
||||
DUNGEON_WATER_TYPE_NONE,
|
||||
DUNGEON_WATER_TYPE_NONE,
|
||||
DUNGEON_WATER_TYPE_NONE,
|
||||
DUNGEON_WATER_TYPE_NONE,
|
||||
DUNGEON_WATER_TYPE_NONE,
|
||||
DUNGEON_WATER_TYPE_NONE,
|
||||
DUNGEON_WATER_TYPE_NONE,
|
||||
DUNGEON_WATER_TYPE_NONE,
|
||||
DUNGEON_WATER_TYPE_NONE,
|
||||
DUNGEON_WATER_TYPE_NONE,
|
||||
DUNGEON_WATER_TYPE_NONE,
|
||||
DUNGEON_WATER_TYPE_NONE,
|
||||
DUNGEON_WATER_TYPE_NONE,
|
||||
DUNGEON_WATER_TYPE_NONE,
|
||||
DUNGEON_WATER_TYPE_NONE,
|
||||
DUNGEON_WATER_TYPE_NONE,
|
||||
DUNGEON_WATER_TYPE_NONE,
|
||||
DUNGEON_WATER_TYPE_NONE,
|
||||
DUNGEON_WATER_TYPE_NONE,
|
||||
DUNGEON_WATER_TYPE_NONE,
|
||||
DUNGEON_WATER_TYPE_NONE,
|
||||
DUNGEON_WATER_TYPE_NONE,
|
||||
DUNGEON_WATER_TYPE_NONE,
|
||||
DUNGEON_WATER_TYPE_WATER,
|
||||
DUNGEON_WATER_TYPE_NONE,
|
||||
DUNGEON_WATER_TYPE_NONE,
|
||||
DUNGEON_WATER_TYPE_NONE,
|
||||
DUNGEON_WATER_TYPE_NONE,
|
||||
DUNGEON_WATER_TYPE_NONE,
|
||||
DUNGEON_WATER_TYPE_NONE,
|
||||
DUNGEON_WATER_TYPE_NONE,
|
||||
DUNGEON_WATER_TYPE_NONE,
|
||||
DUNGEON_WATER_TYPE_NONE,
|
||||
DUNGEON_WATER_TYPE_NONE,
|
||||
DUNGEON_WATER_TYPE_LAVA,
|
||||
DUNGEON_WATER_TYPE_NONE,
|
||||
DUNGEON_WATER_TYPE_LAVA,
|
||||
DUNGEON_WATER_TYPE_NONE,
|
||||
DUNGEON_WATER_TYPE_NONE,
|
||||
DUNGEON_WATER_TYPE_NONE,
|
||||
DUNGEON_WATER_TYPE_NONE,
|
||||
DUNGEON_WATER_TYPE_NONE,
|
||||
DUNGEON_WATER_TYPE_NONE,
|
||||
DUNGEON_WATER_TYPE_NONE,
|
||||
DUNGEON_WATER_TYPE_NONE,
|
||||
DUNGEON_WATER_TYPE_NONE,
|
||||
DUNGEON_WATER_TYPE_NONE,
|
||||
DUNGEON_WATER_TYPE_LAVA,
|
||||
DUNGEON_WATER_TYPE_NONE,
|
||||
DUNGEON_WATER_TYPE_NONE,
|
||||
DUNGEON_WATER_TYPE_NONE,
|
||||
DUNGEON_WATER_TYPE_NONE,
|
||||
DUNGEON_WATER_TYPE_NONE,
|
||||
DUNGEON_WATER_TYPE_NONE,
|
||||
DUNGEON_WATER_TYPE_NONE,
|
||||
DUNGEON_WATER_TYPE_NONE,
|
||||
DUNGEON_WATER_TYPE_NONE,
|
||||
DUNGEON_WATER_TYPE_NONE,
|
||||
DUNGEON_WATER_TYPE_LAVA,
|
||||
DUNGEON_WATER_TYPE_NONE,
|
||||
DUNGEON_WATER_TYPE_NONE,
|
||||
DUNGEON_WATER_TYPE_NONE,
|
||||
DUNGEON_WATER_TYPE_NONE,
|
||||
DUNGEON_WATER_TYPE_NONE,
|
||||
};
|
||||
|
||||
const struct ExclusivePokemon gExclusivePokemon[NUM_EXCLUSIVE_POKEMON] = {
|
||||
|
||||
RED_EXCLUSIVE(MONSTER_PORYGON),
|
||||
BLUE_EXCLUSIVE(MONSTER_PORYGON2),
|
||||
BLUE_EXCLUSIVE(MONSTER_MAGIKARP),
|
||||
BLUE_EXCLUSIVE(MONSTER_GYARADOS),
|
||||
RED_EXCLUSIVE(MONSTER_FEEBAS),
|
||||
RED_EXCLUSIVE(MONSTER_MILOTIC),
|
||||
RED_EXCLUSIVE(MONSTER_PLUSLE),
|
||||
BLUE_EXCLUSIVE(MONSTER_MINUN),
|
||||
BLUE_EXCLUSIVE(MONSTER_LAPRAS),
|
||||
RED_EXCLUSIVE(MONSTER_MANTINE),
|
||||
RED_EXCLUSIVE(MONSTER_ROSELIA),
|
||||
BLUE_EXCLUSIVE(MONSTER_AIPOM),
|
||||
};
|
||||
@@ -39,133 +39,6 @@ EWRAM_DATA Tile gOutOfBoundsTileData = {0};
|
||||
|
||||
EWRAM_INIT const Tile *gCurTilesetOobTile = {NULL};
|
||||
|
||||
#include "constants/type.h"
|
||||
|
||||
const s16 gUnknown_810AC60 = 12;
|
||||
const s16 gUnknown_810AC62 = 12;
|
||||
const s16 gUnknown_810AC64 = 8;
|
||||
const s16 gUnknown_810AC66 = 8;
|
||||
const s16 gUnknown_810AC68 = 8;
|
||||
|
||||
const u8 gUnknown_810AC6A[NUM_TYPES] =
|
||||
{
|
||||
[TYPE_NONE] = TYPE_NONE,
|
||||
[TYPE_NORMAL] = TYPE_GHOST,
|
||||
[TYPE_FIRE] = TYPE_WATER,
|
||||
[TYPE_WATER] = TYPE_GRASS,
|
||||
[TYPE_GRASS] = TYPE_BUG,
|
||||
[TYPE_ELECTRIC] = TYPE_GROUND,
|
||||
[TYPE_ICE] = TYPE_FIRE,
|
||||
[TYPE_FIGHTING] = TYPE_GHOST,
|
||||
[TYPE_POISON] = TYPE_STEEL,
|
||||
[TYPE_GROUND] = TYPE_FLYING,
|
||||
[TYPE_FLYING] = TYPE_ROCK,
|
||||
[TYPE_PSYCHIC] = TYPE_DARK,
|
||||
[TYPE_BUG] = TYPE_POISON,
|
||||
[TYPE_ROCK] = TYPE_FIGHTING,
|
||||
[TYPE_GHOST] = TYPE_NORMAL,
|
||||
[TYPE_DRAGON] = TYPE_STEEL,
|
||||
[TYPE_DARK] = TYPE_DARK,
|
||||
[TYPE_STEEL] = TYPE_ELECTRIC,
|
||||
};
|
||||
|
||||
const bool8 gIsTypePhysicalTable[NUM_TYPES] = {
|
||||
[TYPE_NONE] = TRUE,
|
||||
[TYPE_NORMAL] = TRUE,
|
||||
[TYPE_FIGHTING] = TRUE,
|
||||
[TYPE_POISON] = TRUE,
|
||||
[TYPE_GROUND] = TRUE,
|
||||
[TYPE_FLYING] = TRUE,
|
||||
[TYPE_BUG] = TRUE,
|
||||
[TYPE_ROCK] = TRUE,
|
||||
[TYPE_GHOST] = TRUE,
|
||||
[TYPE_STEEL] = TRUE,
|
||||
};
|
||||
const s32 gUnknown_810AC90[] = {2, 4, 6, 7, 8, 9, 0xA, 0xD, 0xF, 0x11};
|
||||
const s16 gFrenzyPlantIQReq = 333;
|
||||
const s16 gHydroCannonIQReq = 333;
|
||||
const s16 gBlastBurnIQReq = 333;
|
||||
const s16 gVoltTackleIQReq = 333;
|
||||
|
||||
const u8 gDungeonWaterType[76] = {
|
||||
DUNGEON_WATER_TYPE_NONE,
|
||||
DUNGEON_WATER_TYPE_NONE,
|
||||
DUNGEON_WATER_TYPE_NONE,
|
||||
DUNGEON_WATER_TYPE_NONE,
|
||||
DUNGEON_WATER_TYPE_NONE,
|
||||
DUNGEON_WATER_TYPE_NONE,
|
||||
DUNGEON_WATER_TYPE_NONE,
|
||||
DUNGEON_WATER_TYPE_NONE,
|
||||
DUNGEON_WATER_TYPE_NONE,
|
||||
DUNGEON_WATER_TYPE_WATER,
|
||||
DUNGEON_WATER_TYPE_NONE,
|
||||
DUNGEON_WATER_TYPE_NONE,
|
||||
DUNGEON_WATER_TYPE_NONE,
|
||||
DUNGEON_WATER_TYPE_NONE,
|
||||
DUNGEON_WATER_TYPE_NONE,
|
||||
DUNGEON_WATER_TYPE_NONE,
|
||||
DUNGEON_WATER_TYPE_NONE,
|
||||
DUNGEON_WATER_TYPE_NONE,
|
||||
DUNGEON_WATER_TYPE_NONE,
|
||||
DUNGEON_WATER_TYPE_NONE,
|
||||
DUNGEON_WATER_TYPE_NONE,
|
||||
DUNGEON_WATER_TYPE_NONE,
|
||||
DUNGEON_WATER_TYPE_NONE,
|
||||
DUNGEON_WATER_TYPE_NONE,
|
||||
DUNGEON_WATER_TYPE_NONE,
|
||||
DUNGEON_WATER_TYPE_NONE,
|
||||
DUNGEON_WATER_TYPE_NONE,
|
||||
DUNGEON_WATER_TYPE_NONE,
|
||||
DUNGEON_WATER_TYPE_NONE,
|
||||
DUNGEON_WATER_TYPE_NONE,
|
||||
DUNGEON_WATER_TYPE_NONE,
|
||||
DUNGEON_WATER_TYPE_NONE,
|
||||
DUNGEON_WATER_TYPE_NONE,
|
||||
DUNGEON_WATER_TYPE_NONE,
|
||||
DUNGEON_WATER_TYPE_NONE,
|
||||
DUNGEON_WATER_TYPE_WATER,
|
||||
DUNGEON_WATER_TYPE_NONE,
|
||||
DUNGEON_WATER_TYPE_NONE,
|
||||
DUNGEON_WATER_TYPE_NONE,
|
||||
DUNGEON_WATER_TYPE_NONE,
|
||||
DUNGEON_WATER_TYPE_NONE,
|
||||
DUNGEON_WATER_TYPE_NONE,
|
||||
DUNGEON_WATER_TYPE_NONE,
|
||||
DUNGEON_WATER_TYPE_NONE,
|
||||
DUNGEON_WATER_TYPE_NONE,
|
||||
DUNGEON_WATER_TYPE_NONE,
|
||||
DUNGEON_WATER_TYPE_LAVA,
|
||||
DUNGEON_WATER_TYPE_NONE,
|
||||
DUNGEON_WATER_TYPE_LAVA,
|
||||
DUNGEON_WATER_TYPE_NONE,
|
||||
DUNGEON_WATER_TYPE_NONE,
|
||||
DUNGEON_WATER_TYPE_NONE,
|
||||
DUNGEON_WATER_TYPE_NONE,
|
||||
DUNGEON_WATER_TYPE_NONE,
|
||||
DUNGEON_WATER_TYPE_NONE,
|
||||
DUNGEON_WATER_TYPE_NONE,
|
||||
DUNGEON_WATER_TYPE_NONE,
|
||||
DUNGEON_WATER_TYPE_NONE,
|
||||
DUNGEON_WATER_TYPE_NONE,
|
||||
DUNGEON_WATER_TYPE_LAVA,
|
||||
DUNGEON_WATER_TYPE_NONE,
|
||||
DUNGEON_WATER_TYPE_NONE,
|
||||
DUNGEON_WATER_TYPE_NONE,
|
||||
DUNGEON_WATER_TYPE_NONE,
|
||||
DUNGEON_WATER_TYPE_NONE,
|
||||
DUNGEON_WATER_TYPE_NONE,
|
||||
DUNGEON_WATER_TYPE_NONE,
|
||||
DUNGEON_WATER_TYPE_NONE,
|
||||
DUNGEON_WATER_TYPE_NONE,
|
||||
DUNGEON_WATER_TYPE_NONE,
|
||||
DUNGEON_WATER_TYPE_LAVA,
|
||||
DUNGEON_WATER_TYPE_NONE,
|
||||
DUNGEON_WATER_TYPE_NONE,
|
||||
DUNGEON_WATER_TYPE_NONE,
|
||||
DUNGEON_WATER_TYPE_NONE,
|
||||
DUNGEON_WATER_TYPE_NONE,
|
||||
};
|
||||
|
||||
const Tile *GetTile(s32 x, s32 y)
|
||||
{
|
||||
if (x >= 0 && y >= 0 && x < DUNGEON_MAX_SIZE_X && y < DUNGEON_MAX_SIZE_Y)
|
||||
|
||||
@@ -1,21 +1,6 @@
|
||||
#include "global.h"
|
||||
#include "exclusive_pokemon.h"
|
||||
|
||||
const struct ExclusivePokemon gExclusivePokemon[NUM_EXCLUSIVE_POKEMON] = {
|
||||
|
||||
RED_EXCLUSIVE(MONSTER_PORYGON),
|
||||
BLUE_EXCLUSIVE(MONSTER_PORYGON2),
|
||||
BLUE_EXCLUSIVE(MONSTER_MAGIKARP),
|
||||
BLUE_EXCLUSIVE(MONSTER_GYARADOS),
|
||||
RED_EXCLUSIVE(MONSTER_FEEBAS),
|
||||
RED_EXCLUSIVE(MONSTER_MILOTIC),
|
||||
RED_EXCLUSIVE(MONSTER_PLUSLE),
|
||||
BLUE_EXCLUSIVE(MONSTER_MINUN),
|
||||
BLUE_EXCLUSIVE(MONSTER_LAPRAS),
|
||||
RED_EXCLUSIVE(MONSTER_MANTINE),
|
||||
RED_EXCLUSIVE(MONSTER_ROSELIA),
|
||||
BLUE_EXCLUSIVE(MONSTER_AIPOM),
|
||||
};
|
||||
#include "dungeon_data.h"
|
||||
|
||||
const u8 filler_ex0[8] =
|
||||
{
|
||||
|
||||
@@ -7,6 +7,7 @@
|
||||
#include "items.h"
|
||||
#include "pokemon.h"
|
||||
#include "strings.h"
|
||||
#include "dungeon_data.h"
|
||||
|
||||
EWRAM_DATA static bool8 sBoughtFriendAreas[NUM_FRIEND_AREAS] = {0};
|
||||
|
||||
@@ -15,7 +16,6 @@ EWRAM_INIT bool8 *gFriendAreas = {NULL};
|
||||
// data_8107010.s
|
||||
extern const u8 sUnknown_81098A4[];
|
||||
extern const u8 sUnknown_81098AC[];
|
||||
#include "data/friend_area_settings.h" // 810AA90
|
||||
|
||||
void LoadFriendAreas(void)
|
||||
{
|
||||
@@ -41,7 +41,7 @@ u8 sub_80923D4(s32 target)
|
||||
s32 sum = 0;
|
||||
|
||||
for (i = 0; i < NUM_FRIEND_AREAS; i++) {
|
||||
sum += sFriendAreaSettings[i].num_pokemon;
|
||||
sum += gFriendAreaSettings[i].num_pokemon;
|
||||
if (sum > target)
|
||||
return i;
|
||||
}
|
||||
@@ -100,12 +100,12 @@ const u8 *GetFriendAreaName(u8 index)
|
||||
|
||||
u8 GetFriendAreaUnlockCondition(u8 index)
|
||||
{
|
||||
return sFriendAreaSettings[index].unlock_condition;
|
||||
return gFriendAreaSettings[index].unlock_condition;
|
||||
}
|
||||
|
||||
s32 GetFriendAreaPrice(u8 index)
|
||||
{
|
||||
return sFriendAreaSettings[index].price;
|
||||
return gFriendAreaSettings[index].price;
|
||||
}
|
||||
|
||||
void sub_8092558(u8 *buffer, u8 index)
|
||||
@@ -119,7 +119,7 @@ void WriteFriendAreaName(u8 *buffer, u8 index, bool8 printPrice)
|
||||
u8 priceBuffer[20];
|
||||
|
||||
if (printPrice) {
|
||||
WriteHighDecimal(sFriendAreaSettings[index].price, priceBuffer, 1);
|
||||
WriteHighDecimal(gFriendAreaSettings[index].price, priceBuffer, 1);
|
||||
sprintfStatic(buffer, sUnknown_81098AC, gFriendAreaNames[index], 96, priceBuffer);
|
||||
}
|
||||
else
|
||||
@@ -162,14 +162,14 @@ void GetFriendAreaCapacity2(u8 friendArea, FriendAreaCapacity *dst, bool8 checkL
|
||||
iVar4 = 0;
|
||||
|
||||
for (i = 0; i < friendArea; i++)
|
||||
iVar4 += sFriendAreaSettings[i].num_pokemon;
|
||||
iVar4 += gFriendAreaSettings[i].num_pokemon;
|
||||
|
||||
dst->unk8 = iVar4;
|
||||
dst->hasFriendArea = gFriendAreas[i];
|
||||
|
||||
if (dst->hasFriendArea) {
|
||||
dst->currNoPokemon = 0;
|
||||
dst->maxPokemon = sFriendAreaSettings[i].num_pokemon;
|
||||
dst->maxPokemon = gFriendAreaSettings[i].num_pokemon;
|
||||
|
||||
for (i = 0; i < dst->maxPokemon; i++, iVar4++) {
|
||||
pokeStruct = &gRecruitedPokemonRef->pokemon[iVar4];
|
||||
@@ -197,14 +197,14 @@ void GetFriendAreaCapacity(u8 areaId, FriendAreaCapacity *dst, bool8 checkPartne
|
||||
r5 = 0;
|
||||
|
||||
for (i = 0; i < areaId; i++)
|
||||
r5 += sFriendAreaSettings[i].num_pokemon;
|
||||
r5 += gFriendAreaSettings[i].num_pokemon;
|
||||
|
||||
dst->unk8 = r5;
|
||||
dst->hasFriendArea = gFriendAreas[i];
|
||||
|
||||
if (dst->hasFriendArea) {
|
||||
dst->currNoPokemon = 0;
|
||||
dst->maxPokemon = sFriendAreaSettings[i].num_pokemon;
|
||||
dst->maxPokemon = gFriendAreaSettings[i].num_pokemon;
|
||||
max = dst->maxPokemon;
|
||||
|
||||
for (i = 0; i < max; i++, r5++) {
|
||||
|
||||
@@ -14,6 +14,8 @@
|
||||
#include "text_util.h"
|
||||
#include "strings.h"
|
||||
|
||||
extern const s32 gUnknown_810A3F0[100];
|
||||
extern const s16 gTypeGummiIQBoost[NUM_TYPES][NUMBER_OF_GUMMIS];
|
||||
extern const char gItemParaFileName[];
|
||||
extern const char gUnknown_8109794[];
|
||||
extern const char gUnknown_81097A4[];
|
||||
@@ -39,8 +41,6 @@ EWRAM_INIT TeamInventory *gTeamInventoryRef = {NULL}; // NDS=020EAF98
|
||||
extern void SortKecleonShopInventory();
|
||||
bool8 AddKecleonWareItem(u8);
|
||||
|
||||
#include "data/items.h"
|
||||
|
||||
static void sub_8090F58(u8 *, u8 *, Item *, const unkStruct_8090F58 *);
|
||||
|
||||
// arm9.bin::020610C0
|
||||
|
||||
@@ -21,6 +21,7 @@
|
||||
#include "strings.h"
|
||||
#include "text_1.h"
|
||||
#include "text_util.h"
|
||||
#include "dungeon_data.h"
|
||||
|
||||
struct UnusedOffenseStruct
|
||||
{
|
||||
@@ -50,11 +51,6 @@ extern u8 gUnknown_810778C[];
|
||||
extern u8 gUnknown_8107790[];
|
||||
extern u8 gUnknown_8107798[];
|
||||
|
||||
// 2, 4, 6, 7, 8, 9, 8, 0xA, 0xD, 0xF, 0x11
|
||||
extern s32 gUnknown_810AC90[10];
|
||||
|
||||
#include "data/pokemon_3.h"
|
||||
|
||||
extern void WriteDungeonLocationBits(DataSerializer*, DungeonLocation*);
|
||||
extern void WritePoke1LevelBits(DataSerializer*, struct unkPokeSubStruct_C*);
|
||||
void ReadDungeonLocationBits(DataSerializer*, DungeonLocation*);
|
||||
|
||||
Reference in New Issue
Block a user