mirror of
https://github.com/pret/pmd-red.git
synced 2026-03-21 17:46:39 -05:00
Part 1
This commit is contained in:
parent
5c8b30f77b
commit
471f319060
|
|
@ -1,12 +1,14 @@
|
|||
#ifndef GUARD_CODE_80A26CC_H
|
||||
#define GUARD_CODE_80A26CC_H
|
||||
|
||||
#include "constants/script_dungeon_id.h"
|
||||
|
||||
// size: 0x14
|
||||
typedef struct DungeonInfo
|
||||
{
|
||||
/* 0x0 */ s16 unk0;
|
||||
/* 0x2 */ s16 unk2;
|
||||
/* 0x4 */ s16 unk4;
|
||||
/* 0x2 */ s16 unk2; // See enum "GroundMapID"
|
||||
/* 0x4 */ s16 unk4; // See enum "GroundMapID"
|
||||
/* 0x6 */ s16 unk6;
|
||||
/* 0x8 */ s16 unk8;
|
||||
/* 0xA */ s16 unkA;
|
||||
|
|
@ -17,7 +19,7 @@ typedef struct DungeonInfo
|
|||
/* 0x11 */ u8 unk11;
|
||||
} DungeonInfo;
|
||||
|
||||
const DungeonInfo *GetDungeonInfo_80A2608(s32 index);
|
||||
const DungeonInfo *GetDungeonInfo_80A2608(s32 scriptDungeon_);
|
||||
s16 sub_80A2654(s16 index);
|
||||
s16 sub_80A2668(s16);
|
||||
s16 sub_80A2688(u8);
|
||||
|
|
|
|||
|
|
@ -105,6 +105,14 @@ enum DungeonID
|
|||
DUNGEON_INVALID, // 99
|
||||
};
|
||||
|
||||
enum PrefightKind
|
||||
{
|
||||
PREFIGHT_NONE,
|
||||
PREFIGHT_SKARMORY_ATTEMPT1,
|
||||
PREFIGHT_SKARMORY_ATTEMPT2,
|
||||
PREFIGHT_SKARMORY_GONE,
|
||||
};
|
||||
|
||||
#define DUNGEON_FIRST_MAZE DUNGEON_NORMAL_MAZE_2
|
||||
#define DUNGEON_LAST_MAZE DUNGEON_RESCUE_TEAM_MAZE
|
||||
#define DUNGEON_LAST_BASIC_MAZE DUNGEON_STEEL_MAZE
|
||||
|
|
|
|||
|
|
@ -1,7 +1,68 @@
|
|||
#ifndef GUARD_CONSTANTS_EVENT_FLAG_H
|
||||
#define GUARD_CONSTANTS_EVENT_FLAG_H
|
||||
|
||||
enum FlagCalcOperation {
|
||||
enum MainQuest
|
||||
{
|
||||
// SCENARIO_MAIN:
|
||||
|
||||
QUEST_SET_TEAM_NAME,
|
||||
QUEST_UNK1, // Rescue dungeon related. For some reason it scans all rescue dungeons.
|
||||
QUEST_CAN_ACCESS_JOBS,
|
||||
QUEST_CAN_RECRUIT,
|
||||
QUEST_SQUARE_ASLEEP,
|
||||
QUEST_UNK5, // Run away related? It disallows "friend rescue" features.
|
||||
QUEST_REACHED_POSTGAME,
|
||||
QUEST_UNLOCKED_EVOLUTIONS,
|
||||
QUEST_CAN_CHANGE_LEADER,
|
||||
QUEST_CAN_DEPOSIT_PARTNER,
|
||||
QUEST_UNK10, // Dojo-related
|
||||
QUEST_UNK11,
|
||||
QUEST_UNK12, // Music-related
|
||||
QUEST_IN_WORLD_CALAMITY,
|
||||
QUEST_MAZE_14,
|
||||
QUEST_MAZE_15,
|
||||
QUEST_LEGEND_ZAPDOS,
|
||||
QUEST_LEGEND_MOLTRES,
|
||||
QUEST_LEGEND_ARTICUNO,
|
||||
QUEST_LEGEND_GROUDON,
|
||||
QUEST_LEGEND_RAYQUAZA,
|
||||
|
||||
// SCENARIO_SUB2:
|
||||
|
||||
QUEST_LEGEND_KYOGRE,
|
||||
QUEST_LEGEND_LUGIA,
|
||||
|
||||
// SCENARIO_SUB3:
|
||||
|
||||
QUEST_LEGEND_DEOXYS,
|
||||
|
||||
// SCENARIO_SUB4:
|
||||
|
||||
QUEST_LEGEND_HO_OH,
|
||||
|
||||
// SCENARIO_SUB5:
|
||||
|
||||
QUEST_LEGEND_MEWTWO,
|
||||
|
||||
// SCENARIO_SUB7:
|
||||
|
||||
QUEST_LEGEND_MEW,
|
||||
|
||||
// RESCUE_SCENARIO_CONQUEST_LIST:
|
||||
|
||||
QUEST_LEGEND_CELEBI,
|
||||
|
||||
// Special check:
|
||||
|
||||
QUEST_LUCARIO_RANK,
|
||||
|
||||
// TRAINING_CONQUEST_LIST:
|
||||
|
||||
QUEST_COMPLETED_ALL_MAZES,
|
||||
};
|
||||
|
||||
enum FlagCalcOperation
|
||||
{
|
||||
CALC_SET,
|
||||
CALC_SUB,
|
||||
CALC_ADD,
|
||||
|
|
@ -16,7 +77,8 @@ enum FlagCalcOperation {
|
|||
CALC_RANDOM,
|
||||
};
|
||||
|
||||
enum FlagJudgeOperation {
|
||||
enum FlagJudgeOperation
|
||||
{
|
||||
JUDGE_TRUE,
|
||||
JUDGE_FALSE,
|
||||
JUDGE_EQ,
|
||||
|
|
@ -30,7 +92,8 @@ enum FlagJudgeOperation {
|
|||
JUDGE_BIT_SET,
|
||||
};
|
||||
|
||||
enum ScriptVarId {
|
||||
enum ScriptVarId
|
||||
{
|
||||
/* 0x00 */ VERSION,
|
||||
/* 0x01 */ CONDITION,
|
||||
/* 0x02 */ SCENARIO_SELECT,
|
||||
|
|
|
|||
|
|
@ -4,7 +4,8 @@
|
|||
enum FixedRoomID
|
||||
{
|
||||
// floorwide fixed rooms
|
||||
FIXED_ROOM_MT_STEEL_SKARMORY = 1,
|
||||
FIXED_ROOM_NONE,
|
||||
FIXED_ROOM_MT_STEEL_SKARMORY,
|
||||
FIXED_ROOM_SINISTER_WOODS_TEAM_MEANIES,
|
||||
FIXED_ROOM_MT_THUNDER_PEAK_ZAPDOS,
|
||||
FIXED_ROOM_MT_BLAZE_PEAK_MOLTRES,
|
||||
|
|
@ -30,6 +31,7 @@ enum FixedRoomID
|
|||
FIXED_ROOM_HOWLING_FOREST_SMEARGLE,
|
||||
FIXED_ROOM_PURITY_FOREST_CELEBI,
|
||||
FIXED_ROOM_WISH_CAVE_MEDICHAM,
|
||||
// Mazes
|
||||
FIXED_ROOM_NORMAL_MAZE_BOSS,
|
||||
FIXED_ROOM_FIRE_MAZE_BOSS,
|
||||
FIXED_ROOM_WATER_MAZE_BOSS,
|
||||
|
|
@ -53,7 +55,7 @@ enum FixedRoomID
|
|||
FIXED_ROOM_TEAM_RUMBLEROCK_BOSS,
|
||||
FIXED_ROOM_RESCUE_TEAM_2_BOSS,
|
||||
FIXED_ROOM_RESCUE_TEAM_MAZE_BOSS,
|
||||
// non-floorwide fixed rooms
|
||||
// Non-floorwide fixed rooms
|
||||
FIXED_ROOM_WYVERN_HILL_HM_FLY,
|
||||
FIXED_ROOM_SOLAR_CAVE_HM_DIVE,
|
||||
FIXED_ROOM_SOLAR_CAVE_HM_WATERFALL,
|
||||
|
|
|
|||
|
|
@ -1,7 +1,8 @@
|
|||
#ifndef GUARD_CONSTANTS_GROUND_MAP_H
|
||||
#define GUARD_CONSTANTS_GROUND_MAP_H
|
||||
|
||||
enum {
|
||||
enum GroundMapID
|
||||
{
|
||||
MAP_SQUARE,
|
||||
MAP_POKEMON_SQUARE,
|
||||
MAP_WHISCASH_POND,
|
||||
|
|
|
|||
|
|
@ -75,6 +75,6 @@ void sub_8086A3C(Entity *pokemon);
|
|||
void sub_8086A54(Entity *pokemon);
|
||||
void SetupBossFightHP(Entity *pokemon, s32 newHP, u16 songIndex);
|
||||
void sub_8086AC0(void);
|
||||
u8 sub_8086AE4(s16 _index);
|
||||
bool8 sub_8086AE4(s16 _index);
|
||||
|
||||
#endif
|
||||
#endif // GUARD_DUNGEON_CUTSCENE_H
|
||||
|
|
|
|||
|
|
@ -6,6 +6,6 @@
|
|||
void SetUpDungeonExitData(s16 dungeonExitReason, Entity *target, Entity *entity);
|
||||
bool8 IsUnsuccessfulDungeonExit(void);
|
||||
bool8 sub_8083C50(void);
|
||||
bool8 sub_8083C88(u8 param_1);
|
||||
bool8 sub_8083C88(u8 dungeonMissionKind);
|
||||
|
||||
#endif // GUARD_DUNGEON_EXIT_H
|
||||
|
|
|
|||
|
|
@ -34,7 +34,8 @@ void UpdateScriptVarWithVar(u8 *localVarBuf, s16 dstVarId, s16 srcVarId, enum Fl
|
|||
bool8 FlagJudge(s32 r0, s32 r1, enum FlagJudgeOperation operation);
|
||||
bool8 JudgeVarWithImmediate(u8 *localVarBuf, s16 varId, s32 val, enum FlagJudgeOperation operation);
|
||||
bool8 JudgeVarWithVar(u8 *localVarBuf, s16 varId1, s16 varId2, enum FlagJudgeOperation operation);
|
||||
bool8 sub_80023E4(u32 param_1); // some kind of helper for predefined scenario checks
|
||||
// See enum "MainQuest"
|
||||
bool8 CheckQuest(s32 questID);
|
||||
u8 MapIdToFriendAreaId(s16 mapId_); // map -> friend area lookup
|
||||
s16 FriendAreaIdToMapId(u8 friendAreaId); // friend area -> map lookup
|
||||
bool8 sub_80026CC(s16 r0);
|
||||
|
|
|
|||
|
|
@ -14,6 +14,8 @@ enum
|
|||
SUB_WINDOW_INFO,
|
||||
};
|
||||
|
||||
#define MON_SUMMARY_UNK58_COUNT 12
|
||||
|
||||
struct MonSummaryInfo
|
||||
{
|
||||
// size: 0x64
|
||||
|
|
@ -45,7 +47,7 @@ struct MonSummaryInfo
|
|||
u8 tactic;
|
||||
u8 fill55[1];
|
||||
s16 unk56;
|
||||
u8 unk58[12];
|
||||
u8 unk58[MON_SUMMARY_UNK58_COUNT];
|
||||
};
|
||||
|
||||
struct UnkInfoTabStruct
|
||||
|
|
@ -55,6 +57,6 @@ struct UnkInfoTabStruct
|
|||
};
|
||||
|
||||
void ShowPokemonSummaryWindow(s32 which, s32 currSubWindowId, struct MonSummaryInfo *monInfo, struct UnkInfoTabStruct *param_4, u32 windowId);
|
||||
void SetMonSummaryInfo(struct MonSummaryInfo *dst, struct Pokemon *pokemon, bool8 param_3);
|
||||
void SetMonSummaryInfo(struct MonSummaryInfo *dst, struct Pokemon *pokemon, bool8 unlockedEvolutions);
|
||||
|
||||
#endif // GUARD_POKEMON_SUMMARY_WINDOW_H
|
||||
|
|
|
|||
|
|
@ -8,14 +8,14 @@
|
|||
typedef struct unkStruct_203B330
|
||||
{
|
||||
/* 0x0 */ TouchScreenMenuInput input;
|
||||
u8 unkC;
|
||||
u8 dungeonMissionKind; // See enum "DungeonMissionKind"
|
||||
/* 0xD */ u8 dungeonIndex;
|
||||
u32 unk10;
|
||||
WindowTemplate *unk14;
|
||||
WindowTemplates unk18;
|
||||
} unkStruct_203B330;
|
||||
|
||||
bool8 sub_80319A4(u8, u8 dungeon, s32);
|
||||
bool8 sub_80319A4(u8 dungeonMissionKind, u8 dungeon, s32);
|
||||
u32 sub_80319F8(void);
|
||||
void sub_8031A3C(void);
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
#ifndef GUARD_RESCUE_SCENARIO_H
|
||||
#define GUARD_RESCUE_SCENARIO_H
|
||||
|
||||
#include "constants/rescue_dungeon_id.h"
|
||||
#include "structs/str_wonder_mail.h"
|
||||
|
||||
void sub_80972F4(void);
|
||||
|
|
@ -9,7 +10,7 @@ bool8 sub_8097318(s16 param_1);
|
|||
void sub_809733C(s16 param_1, u32 param_2);
|
||||
bool8 sub_8097384(s32 param_1);
|
||||
void sub_80973A8(s32 param_1, u32 param_2);
|
||||
bool8 RescueScenarioConquered(s32 param_1);
|
||||
bool8 RescueScenarioConquered(s32 rescueDungeonID_);
|
||||
void sub_8097418(s32 index, bool32);
|
||||
const u8 *GetRescueDungeonName(s16 rescueDungeonId);
|
||||
const u8 *GetCurrentMissionText(s16 index);
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@ struct UnkStruct_203B414
|
|||
extern struct UnkStruct_203B414 *gUnknown_203B414;
|
||||
extern Dungeon *gDungeon;
|
||||
|
||||
void RunDungeon_Async(DungeonSetupStruct *r8);
|
||||
void RunDungeon_Async(DungeonSetupStruct *setupPtr);
|
||||
bool8 sub_8043CE4(s32 dungeonId);
|
||||
u8 GetFloorType(void);
|
||||
void sub_8043D50(s32 *a0, s32 *a1);
|
||||
|
|
|
|||
|
|
@ -238,6 +238,14 @@ struct MinMaxPosition
|
|||
s32 maxY;
|
||||
};
|
||||
|
||||
enum DungeonMissionKind
|
||||
{
|
||||
DUNGEON_MISSION_UNK0,
|
||||
DUNGEON_MISSION_OUTONRESCUE,
|
||||
DUNGEON_MISSION_ACCEPTEDJOB_RELATED,
|
||||
DUNGEON_MISSION_UNK3,
|
||||
};
|
||||
|
||||
// size: 0x58
|
||||
typedef struct unkDungeon644
|
||||
{
|
||||
|
|
@ -247,10 +255,10 @@ typedef struct unkDungeon644
|
|||
/* 0x10 */ u8 unk10;
|
||||
/* 0x11 */ u8 fill11[3];
|
||||
/* 0x14 */ bool8 canRecruit;
|
||||
/* 0x15 */ u8 unk15;
|
||||
/* 0x16 */ u8 unk16;
|
||||
/* 0x15 */ bool8 canRecruitRescueTeamMazeBosses;
|
||||
/* 0x16 */ bool8 unlockedEvolutions;
|
||||
/* 0x17 */ bool8 hasInventory;
|
||||
/* 0x18 */ u8 unk18;
|
||||
/* 0x18 */ bool8 canChangeLeader;
|
||||
/* 0x19 */ u8 unk19;
|
||||
/* 0x1A */ u8 fill1A[2];
|
||||
/* 0x1C */ s16 fractionalTurn; // Handles turn order when Pokémon have different movement speeds.
|
||||
|
|
@ -271,7 +279,7 @@ typedef struct unkDungeon644
|
|||
/* 0x31 */ u8 unk31;
|
||||
/* 0x32 */ bool8 itemHoldersIdentified;
|
||||
/* 0x33 */ u8 unk33;
|
||||
/* 0x34 */ u8 unk34;
|
||||
/* 0x34 */ u8 missionKind; // See enum "DungeonMissionKind"
|
||||
/* 0x35 */ u8 emptyBellyAlert; // which alert message to show when belly gets empty.
|
||||
/* 0x36 */ u8 windPhase;
|
||||
/* 0x37 */ s8 unk37;
|
||||
|
|
@ -422,7 +430,7 @@ typedef struct Dungeon
|
|||
/* 0x3A0A */ bool8 unk3A0A;
|
||||
/* 0x3A0B */ bool8 unk3A0B;
|
||||
/* 0x3A0C */ u8 monsterHouseRoom; // room index of monster house
|
||||
/* 0x3A0D */ u8 unk3A0D;
|
||||
/* 0x3A0D */ u8 prefight; // See enum "PrefightKind"
|
||||
/* 0x3A0E */ s16 tileset;
|
||||
/* 0x3A10 */ s16 unk3A10;
|
||||
/* 0x3A12 */ s16 unk3A12;
|
||||
|
|
|
|||
|
|
@ -12,13 +12,13 @@ typedef struct DungeonSetupSubstruct
|
|||
{
|
||||
DungeonLocation unk0;
|
||||
u8 unk4;
|
||||
u8 unk5;
|
||||
u8 unk6;
|
||||
u8 unk7;
|
||||
u8 unk8;
|
||||
u8 unk9;
|
||||
/* 0x5 */ bool8 canChangeLeader;
|
||||
/* 0x6 */ bool8 canRecruit;
|
||||
/* 0x7 */ bool8 canRecruitRescueTeamMazeBosses;
|
||||
/* 0x8 */ bool8 unlockedEvolutions;
|
||||
/* 0x9 */ bool8 hasInventory;
|
||||
u8 unkA;
|
||||
u8 unkB;
|
||||
/* 0xB */ u8 missionKind; // See enum "DungeonMissionKind"
|
||||
u8 unkC;
|
||||
u8 unkD;
|
||||
} DungeonSetupSubstruct;
|
||||
|
|
@ -30,7 +30,7 @@ typedef struct DungeonSetupInfo
|
|||
Pokemon mon;
|
||||
u8 *unk74;
|
||||
Dungeon *dungeon;
|
||||
s16 unk7C; // Set to 5 if the dungeon was skipped (quicksave read failed)
|
||||
s16 unk7C; // 4 = OutOnRescue related ... 5 = dungeon was skipped (quicksave read failed)
|
||||
u8 unk7E;
|
||||
DungeonLocation unk80;
|
||||
DungeonMailSeed unk84;
|
||||
|
|
|
|||
|
|
@ -40,10 +40,10 @@ struct WorldMap
|
|||
|
||||
struct WorldMapInfo
|
||||
{
|
||||
DungeonLocation startLocation;
|
||||
/* 0x0 */ DungeonLocation startLocation;
|
||||
DungeonSetupSubstruct unk4;
|
||||
Pokemon mon;
|
||||
u8 unk6C;
|
||||
/* 0x14 */ Pokemon mon;
|
||||
/* 0x6C */ bool8 canChangeLeader;
|
||||
u8 unk6D[WORLD_MAP_UNK_6D_COUNT];
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -304,7 +304,7 @@ static void sub_801D4C0(void)
|
|||
sUnknown_203B250->unk68[loopMax].menuAction = 4;
|
||||
|
||||
loopMax++;
|
||||
if (sub_80023E4(2)) {
|
||||
if (CheckQuest(QUEST_CAN_ACCESS_JOBS)) {
|
||||
sUnknown_203B250->unk68[loopMax].text = sJobList;
|
||||
sUnknown_203B250->unk68[loopMax].menuAction = 9;
|
||||
if (HasNoAcceptedJobs())
|
||||
|
|
|
|||
|
|
@ -98,5 +98,5 @@ static void sub_8024604(void)
|
|||
CreateMenuOnWindow(&sUnknown_203B2AC->input, 3, 1, sUnknown_203B2AC->unkE0);
|
||||
iVar3 = &sUnknown_203B2AC->unk4C;
|
||||
pokeStruct = &gRecruitedPokemonRef->pokemon[sUnknown_203B2AC->speciesNum];
|
||||
SetMonSummaryInfo(iVar3, pokeStruct, sub_80023E4(7));
|
||||
SetMonSummaryInfo(iVar3, pokeStruct, CheckQuest(QUEST_UNLOCKED_EVOLUTIONS));
|
||||
}
|
||||
|
|
|
|||
|
|
@ -244,7 +244,7 @@ bool8 sub_803C580(WonderMail *param_1)
|
|||
counter = 0;
|
||||
ptr = gUnknown_80E8180;
|
||||
|
||||
if (!sub_80023E4(6))
|
||||
if (!CheckQuest(QUEST_REACHED_POSTGAME))
|
||||
return FALSE;
|
||||
|
||||
for (id = 0; id < ARRAY_COUNT_INT(gUnknown_80E8180); ptr++, id++) {
|
||||
|
|
|
|||
|
|
@ -574,7 +574,7 @@ bool8 sub_80961D8(void)
|
|||
if(!gUnknown_203B490->PKMNNewsReceived[0x35])
|
||||
if(!sub_8096E80(0x35)) floor = 0x35;
|
||||
}
|
||||
if(sub_80023E4(0xF))
|
||||
if(CheckQuest(QUEST_MAZE_15))
|
||||
{
|
||||
if(!gUnknown_203B490->PKMNNewsReceived[0x34])
|
||||
if(!sub_8096E80(0x34)) floor = 0x34;
|
||||
|
|
@ -589,7 +589,7 @@ bool8 sub_80961D8(void)
|
|||
if(!gUnknown_203B490->PKMNNewsReceived[0x36])
|
||||
if(!sub_8096E80(0x36)) floor = 0x36;
|
||||
}
|
||||
if(sub_80023E4(6))
|
||||
if(CheckQuest(QUEST_REACHED_POSTGAME))
|
||||
{
|
||||
if(!gUnknown_203B490->PKMNNewsReceived[0x37])
|
||||
if(!sub_8096E80(0x37)) floor = 0x37;
|
||||
|
|
@ -598,7 +598,7 @@ bool8 sub_80961D8(void)
|
|||
if(floor != 0x38) goto _slot;
|
||||
if(num > index) goto _08096392;
|
||||
floor = sub_8096E2C();
|
||||
if(!sub_80023E4(0xE) && (floor > 2)) goto _0809638E;
|
||||
if(!CheckQuest(QUEST_MAZE_14) && (floor > 2)) goto _0809638E;
|
||||
if (floor > 0x31) goto _0809638E;
|
||||
_slot:
|
||||
slot = GetMailboxSlotInfo(num);
|
||||
|
|
@ -653,7 +653,7 @@ bool8 sub_80963B4(void)
|
|||
floor = sub_8096E2C();
|
||||
num = CountFilledMailboxSlots();
|
||||
if(num >= NUM_MAILBOX_SLOTS) return FALSE;
|
||||
if(sub_80023E4(0xE))
|
||||
if(CheckQuest(QUEST_MAZE_14))
|
||||
{
|
||||
if(floor < 0x32)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -4,7 +4,6 @@
|
|||
#include "code_80A26CC.h"
|
||||
#include "event_flag.h"
|
||||
#include "constants/dungeon.h"
|
||||
#include "constants/script_dungeon_id.h"
|
||||
#include "constants/rescue_dungeon_id.h"
|
||||
|
||||
static const DungeonInfo gUnknown_81168A8[SCRIPT_DUNGEON_COUNT] = {
|
||||
|
|
@ -1147,10 +1146,10 @@ static const s16 sRescueToScriptDungeonIdTable[RESCUE_DUNGEON_COUNT] = {
|
|||
[RESCUE_DUNGEON_FANTASY_STRAIT] = SCRIPT_DUNGEON_FANTASY_STRAIT,
|
||||
};
|
||||
|
||||
const DungeonInfo *GetDungeonInfo_80A2608(s32 _index)
|
||||
const DungeonInfo *GetDungeonInfo_80A2608(s32 scriptDungeon_)
|
||||
{
|
||||
s32 index = (s16) _index;
|
||||
return &gUnknown_81168A8[index];
|
||||
s32 scriptDungeon = (s16)scriptDungeon_;
|
||||
return &gUnknown_81168A8[scriptDungeon];
|
||||
}
|
||||
|
||||
static const DungeonInfo *GetRescueDungeonInfo(s16 rescueDungeonId)
|
||||
|
|
@ -1267,11 +1266,11 @@ s16 sub_80A2750(s16 r0)
|
|||
temp = GetDungeonInfo_80A2608(temp_2);
|
||||
if (temp->unkE == -1)
|
||||
return 1;
|
||||
if (sub_80023E4(5))
|
||||
if (CheckQuest(QUEST_UNK5))
|
||||
return 1;
|
||||
if (!RescueScenarioConquered((s16) temp->unkE))
|
||||
if (!RescueScenarioConquered((s16)temp->unkE))
|
||||
return 1;
|
||||
if (!sub_80023E4(1))
|
||||
if (!CheckQuest(QUEST_UNK1))
|
||||
return 1;
|
||||
return 2;
|
||||
}
|
||||
|
|
@ -1284,11 +1283,11 @@ bool8 IsRescueDungeonAvailable(s16 _rescueDungeonId)
|
|||
|
||||
if (GetRescueDungeonInfo(_rescueDungeonId)->unk0 == -1)
|
||||
return FALSE;
|
||||
if (sub_80023E4(5))
|
||||
if (CheckQuest(QUEST_UNK5))
|
||||
return FALSE;
|
||||
if (sub_8097384(_rescueDungeonId))
|
||||
return TRUE;
|
||||
if (!sub_80023E4(1))
|
||||
if (!CheckQuest(QUEST_UNK1))
|
||||
return FALSE;
|
||||
if (!RescueScenarioConquered((s16) rescueDungeonId))
|
||||
return FALSE;
|
||||
|
|
@ -1300,10 +1299,10 @@ bool8 sub_80A2824(u8 index)
|
|||
s32 i;
|
||||
const DungeonInfo *temp;
|
||||
|
||||
if (sub_80023E4(5))
|
||||
if (CheckQuest(QUEST_UNK5))
|
||||
return FALSE;
|
||||
|
||||
if (sub_80023E4(1)) {
|
||||
if (CheckQuest(QUEST_UNK1)) {
|
||||
for (i = 0; i < RESCUE_DUNGEON_COUNT; i++) {
|
||||
temp = GetRescueDungeonInfo(i);
|
||||
|
||||
|
|
@ -1405,7 +1404,7 @@ UNUSED static s32 sub_80A293C(u8 *param_1)
|
|||
|
||||
s32 sub_80A29B0(u8 *param_1)
|
||||
{
|
||||
u8 *pcVar2;
|
||||
bool8 *pcVar2;
|
||||
const DungeonInfo *iVar3;
|
||||
s32 index;
|
||||
s32 counter;
|
||||
|
|
@ -1413,29 +1412,29 @@ s32 sub_80A29B0(u8 *param_1)
|
|||
u8 *local2;
|
||||
u8 *local3;
|
||||
u8 *local4;
|
||||
u8 local_68[0x40];
|
||||
u8 zero;
|
||||
bool8 local_68[0x40];
|
||||
bool8 zero;
|
||||
|
||||
counter = 0;
|
||||
local1 = &local_68[43];
|
||||
local2 = &local_68[44];
|
||||
local3 = &local_68[45];
|
||||
local4 = &local_68[46];
|
||||
zero = 0;
|
||||
zero = FALSE;
|
||||
|
||||
pcVar2 = &local_68[62];
|
||||
do {
|
||||
*pcVar2 = zero;
|
||||
pcVar2 = pcVar2 + -1;
|
||||
pcVar2--;
|
||||
} while ((int)pcVar2 >= (int)local_68);
|
||||
|
||||
|
||||
if (sub_80023E4(1)) {
|
||||
if (CheckQuest(QUEST_UNK1)) {
|
||||
for (index = 0; index < RESCUE_DUNGEON_COUNT; index++) {
|
||||
iVar3 = GetRescueDungeonInfo(index);
|
||||
|
||||
if (iVar3->unk11 != 0 && RescueScenarioConquered((s16) index))
|
||||
local_68[iVar3->dungeonIndex] = 1;
|
||||
local_68[iVar3->dungeonIndex] = TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -1445,7 +1444,7 @@ s32 sub_80A29B0(u8 *param_1)
|
|||
*local4 = 0;
|
||||
|
||||
for (index = 0; index < 63; index++) {
|
||||
if (local_68[index] != 0) {
|
||||
if (local_68[index]) {
|
||||
param_1[counter] = index;
|
||||
counter++;
|
||||
}
|
||||
|
|
@ -1472,7 +1471,7 @@ UNUSED static s32 sub_80A2A5C(u8 *param_1)
|
|||
pcVar2--;
|
||||
} while ((s32)pcVar2 >= (s32)local_58);
|
||||
|
||||
if (sub_80023E4(1)) {
|
||||
if (CheckQuest(QUEST_UNK1)) {
|
||||
for (index = 0; index < RESCUE_DUNGEON_COUNT; index++) {
|
||||
iVar3 = GetRescueDungeonInfo(index);
|
||||
|
||||
|
|
|
|||
|
|
@ -1,145 +1,4 @@
|
|||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
static const struct ScriptCommand s_gs9_g0_s0_station_sref_script[] = { /* 0x819ad18 */
|
||||
DEBUGINFO_O(144),
|
||||
SELECT_MAP(MAP_TEAM_BASE),
|
||||
|
|
@ -381,7 +240,7 @@ static const struct ScriptCommand s_gs9_g0_s0_station_sref_script[] = { /* 0x819
|
|||
BGM_SWITCH(1),
|
||||
JUMP_SCRIPT(COMMON_ENTER),
|
||||
LABEL(53), /* = 0x35 */
|
||||
JUMPIF_SCENARIOCHECK(8, /* to label */ 57),
|
||||
JUMPIF_SCENARIOCHECK(QUEST_CAN_CHANGE_LEADER, /* to label */ 57),
|
||||
CJUMP_VAR(DUNGEON_ENTER),
|
||||
COND_EQUAL(1, /* to label */ 58),
|
||||
COND_EQUAL(2, /* to label */ 59),
|
||||
|
|
@ -441,7 +300,7 @@ static const struct ScriptRef s_gs9_g0_s0_evt0_sref = { 357, 2, NULL /* GETOUT_N
|
|||
static const struct ScriptCommand s_gs9_g0_s0_evt1_sref_script[] = { /* 0x819bf50 */
|
||||
DEBUGINFO_O(442),
|
||||
JUMPIF_SCENE_LT(SCENARIO_MAIN, 4, 3, /* to label */ 0),
|
||||
JUMPIF_SCENARIOCHECK(4, /* to label */ 1),
|
||||
JUMPIF_SCENARIOCHECK(QUEST_SQUARE_ASLEEP, /* to label */ 1),
|
||||
LABEL(2), /* = 0x02 */
|
||||
{ 0x3b, 0x12, 0x0000, 0x00000000, 0x00000000, NULL },
|
||||
COND_EQUAL(1, /* to label */ 3),
|
||||
|
|
@ -554,7 +413,7 @@ static const struct ScriptCommand s_gs9_g0_s0_obj2_dlg2[] = { /* 0x819c748 */
|
|||
WAIT(1),
|
||||
MSG_INSTANT(_("\n ← Friend Areas")),
|
||||
TEXTBOX_CLEAR,
|
||||
JUMPIF_SCENARIOCHECK(4, /* to label */ 0),
|
||||
JUMPIF_SCENARIOCHECK(QUEST_SQUARE_ASLEEP, /* to label */ 0),
|
||||
LABEL(1), /* = 0x01 */
|
||||
SPECIAL_TEXT(SPECIAL_TEXT_FRIEND_AREA_SELECT, 0, 0),
|
||||
COND_EQUAL(-2, /* to label */ 2),
|
||||
|
|
@ -577,7 +436,7 @@ static const struct ScriptCommand s_gs9_g0_s0_obj2_dlg2[] = { /* 0x819c748 */
|
|||
|
||||
static const struct ScriptCommand s_gs9_g0_s0_obj3_dlg0[] = { /* 0x819c8f4 */
|
||||
DEBUGINFO_O(579),
|
||||
JUMPIF_SCENARIOCHECK(29, /* to label */ 0),
|
||||
JUMPIF_SCENARIOCHECK(QUEST_COMPLETED_ALL_MAZES, /* to label */ 0),
|
||||
JUMPIF_ARRAY(EVENT_B01P01, 2, /* to label */ 0),
|
||||
END_DELETE,
|
||||
LABEL(0), /* = 0x00 */
|
||||
|
|
@ -1179,7 +1038,7 @@ static const struct ScriptCommand s_gs9_g5_s0_station_sref_script[] = { /* 0x819
|
|||
SET_DUNGEON_RES(/* result */ 0, /* enter */ -1),
|
||||
UPDATE_VARINT(CALC_SET, GROUND_ENTER, MAP_TEAM_BASE),
|
||||
UPDATE_VARINT(CALC_SET, GROUND_GETOUT, MAP_TEAM_BASE_INSIDE),
|
||||
JUMPIF_SCENARIOCHECK(8, /* to label */ 0),
|
||||
JUMPIF_SCENARIOCHECK(QUEST_CAN_CHANGE_LEADER, /* to label */ 0),
|
||||
UPDATE_VARINT(CALC_SET, PARTNER1_KIND, 2),
|
||||
UPDATE_VARINT(CALC_SET, PARTNER2_KIND, 0),
|
||||
SELECT_MAP(MAP_TEAM_BASE),
|
||||
|
|
@ -1301,7 +1160,7 @@ static const struct ScriptCommand s_gs9_g7_s0_station_sref_script[] = { /* 0x819
|
|||
SET_DUNGEON_RES(/* result */ 0, /* enter */ -1),
|
||||
UPDATE_VARINT(CALC_SET, GROUND_ENTER, MAP_TEAM_BASE),
|
||||
UPDATE_VARINT(CALC_SET, GROUND_GETOUT, MAP_TEAM_BASE_INSIDE),
|
||||
JUMPIF_SCENARIOCHECK(8, /* to label */ 0),
|
||||
JUMPIF_SCENARIOCHECK(QUEST_CAN_CHANGE_LEADER, /* to label */ 0),
|
||||
UPDATE_VARINT(CALC_SET, PARTNER1_KIND, 2),
|
||||
UPDATE_VARINT(CALC_SET, PARTNER2_KIND, 0),
|
||||
SELECT_MAP(MAP_TEAM_BASE),
|
||||
|
|
|
|||
|
|
@ -1,17 +1,7 @@
|
|||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
static const struct ScriptCommand s_gs193_g0_s0_station_sref_script[] = { /* 0x8242bb8 */
|
||||
DEBUGINFO_O(13),
|
||||
JUMPIF_SCENARIOCHECK(5, /* to label */ 0),
|
||||
JUMPIF_SCENARIOCHECK(QUEST_UNK5, /* to label */ 0),
|
||||
EXECUTE_STATION(12, 0, 0),
|
||||
LABEL(0), /* = 0x00 */
|
||||
SELECT_MAP(MAP_LAPIS_CAVE_ENTRY),
|
||||
|
|
|
|||
|
|
@ -1,25 +1,7 @@
|
|||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
static const struct ScriptCommand s_gs195_g0_s0_station_sref_script[] = { /* 0x8245cc8 */
|
||||
DEBUGINFO_O(21),
|
||||
JUMPIF_SCENARIOCHECK(5, /* to label */ 0),
|
||||
JUMPIF_SCENARIOCHECK(QUEST_UNK5, /* to label */ 0),
|
||||
EXECUTE_STATION(12, 0, 0),
|
||||
LABEL(0), /* = 0x00 */
|
||||
SELECT_MAP(195),
|
||||
|
|
|
|||
|
|
@ -66,7 +66,7 @@ static const struct ScriptRef s_gs196_g0_s0_evt0_sref = { 357, 2, NULL /* GETOUT
|
|||
|
||||
static const struct ScriptCommand s_gs196_g0_s0_evt1_sref_script[] = { /* 0x8248db4 */
|
||||
DEBUGINFO_O(68),
|
||||
JUMPIF_SCENARIOCHECK(5, /* to label */ 0),
|
||||
JUMPIF_SCENARIOCHECK(QUEST_UNK5, /* to label */ 0),
|
||||
ASK1(FALSE, /*default*/ 0, /* speaker */ -1, _("Return to the rescue team base?")),
|
||||
CHOICE(/* label */ 1, _("Yes.")),
|
||||
CHOICE(/* label */ 2, _("*No.")),
|
||||
|
|
|
|||
|
|
@ -1,15 +1,7 @@
|
|||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
static const struct ScriptCommand s_gs198_g0_s0_station_sref_script[] = { /* 0x824bbfc */
|
||||
DEBUGINFO_O(11),
|
||||
JUMPIF_SCENARIOCHECK(5, /* to label */ 0),
|
||||
JUMPIF_SCENARIOCHECK(QUEST_UNK5, /* to label */ 0),
|
||||
EXECUTE_STATION(12, 0, 0),
|
||||
LABEL(0), /* = 0x00 */
|
||||
SELECT_MAP(MAP_FROSTY_FOREST_ENTRY),
|
||||
|
|
|
|||
|
|
@ -66,7 +66,7 @@ static const struct ScriptRef s_gs199_g0_s0_evt0_sref = { 357, 2, NULL /* GETOUT
|
|||
|
||||
static const struct ScriptCommand s_gs199_g0_s0_evt1_sref_script[] = { /* 0x824ea74 */
|
||||
DEBUGINFO_O(68),
|
||||
JUMPIF_SCENARIOCHECK(5, /* to label */ 0),
|
||||
JUMPIF_SCENARIOCHECK(QUEST_UNK5, /* to label */ 0),
|
||||
ASK1(FALSE, /*default*/ 0, /* speaker */ -1, _("Return to the rescue team base?")),
|
||||
CHOICE(/* label */ 1, _("Yes.")),
|
||||
CHOICE(/* label */ 2, _("*No.")),
|
||||
|
|
|
|||
|
|
@ -1,16 +1,7 @@
|
|||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
static const struct ScriptCommand s_gs201_g0_s0_station_sref_script[] = { /* 0x8251f44 */
|
||||
DEBUGINFO_O(12),
|
||||
JUMPIF_SCENARIOCHECK(5, /* to label */ 0),
|
||||
JUMPIF_SCENARIOCHECK(QUEST_UNK5, /* to label */ 0),
|
||||
EXECUTE_STATION(12, 0, 0),
|
||||
LABEL(0), /* = 0x00 */
|
||||
SELECT_MAP(MAP_MT_FREEZE_ENTRY),
|
||||
|
|
|
|||
|
|
@ -73,7 +73,7 @@ static const struct ScriptRef s_gs202_g0_s0_evt0_sref = { 357, 2, NULL /* GETOUT
|
|||
|
||||
static const struct ScriptCommand s_gs202_g0_s0_evt1_sref_script[] = { /* 0x8255a70 */
|
||||
DEBUGINFO_O(75),
|
||||
JUMPIF_SCENARIOCHECK(5, /* to label */ 0),
|
||||
JUMPIF_SCENARIOCHECK(QUEST_UNK5, /* to label */ 0),
|
||||
ASK1(FALSE, /*default*/ 0, /* speaker */ -1, _("Return to the rescue team base?")),
|
||||
CHOICE(/* label */ 1, _("Yes.")),
|
||||
CHOICE(/* label */ 2, _("*No.")),
|
||||
|
|
|
|||
|
|
@ -158,7 +158,7 @@ static const struct ScriptCommand s_gs2_g0_s0_station_sref_script[] = { /* 0x817
|
|||
JUMP_LABEL(30),
|
||||
LABEL(30), /* = 0x1e */
|
||||
BGM_SWITCH(8),
|
||||
JUMPIF_SCENARIOCHECK(6, /* to label */ 31),
|
||||
JUMPIF_SCENARIOCHECK(QUEST_REACHED_POSTGAME, /* to label */ 31),
|
||||
JUMP_LABEL(32),
|
||||
LABEL(31), /* = 0x1f */
|
||||
SELECT_EVENTS(0, 2),
|
||||
|
|
|
|||
|
|
@ -110,7 +110,7 @@ static const struct ScriptRef s_gs6_g0_s3_evt0_sref = { 357, 2, NULL /* GETOUT_N
|
|||
|
||||
static const struct ScriptCommand s_gs6_g1_s0_station_sref_script[] = { /* 0x8199310 */
|
||||
DEBUGINFO_O(112),
|
||||
JUMPIF_SCENARIOCHECK(10, /* to label */ 0),
|
||||
JUMPIF_SCENARIOCHECK(QUEST_UNK10, /* to label */ 0),
|
||||
CANCEL_EVENTS(-1, -1),
|
||||
SELECT_ENTITIES(-1, 1),
|
||||
RET_DIRECT,
|
||||
|
|
@ -144,7 +144,7 @@ static const struct ScriptCommand s_gs6_g1_s0_lives0_dlg2[] = { /* 0x81993dc */
|
|||
static const struct ScriptCommand s_gs6_g1_s0_lives0_dlg3[] = { /* 0x819947c */
|
||||
DEBUGINFO_O(145),
|
||||
CALL_SCRIPT(INIT_PLAZA_SLEEP_TALK_FUNC),
|
||||
JUMPIF_SCENARIOCHECK(4, /* to label */ 0),
|
||||
JUMPIF_SCENARIOCHECK(QUEST_SQUARE_ASLEEP, /* to label */ 0),
|
||||
{ 0x8e, 0x00, 0x0000, 0x00000000, 0x00000000, NULL },
|
||||
LABEL(0), /* = 0x00 */
|
||||
{ 0x8d, 0x01, 0x0000, 0x00000000, 0x00000000, NULL },
|
||||
|
|
|
|||
|
|
@ -494,7 +494,7 @@ static const struct ScriptCommand s_script_MOVE_PLAZA_SLEEP[] = { /* 0x8120590 *
|
|||
|
||||
static const struct ScriptCommand s_script_INIT_PLAZA_SLEEP_STAY_FUNC[] = { /* 0x81205f0 */
|
||||
DEBUGINFO_O(496),
|
||||
JUMPIF_SCENARIOCHECK(4, /* to label */ 0),
|
||||
JUMPIF_SCENARIOCHECK(QUEST_SQUARE_ASLEEP, /* to label */ 0),
|
||||
{ 0x54, 0x00, 0x0300, 0x00000000, 0x00000000, NULL },
|
||||
SELECT_ANIMATION(4),
|
||||
RET_DIRECT,
|
||||
|
|
@ -505,7 +505,7 @@ static const struct ScriptCommand s_script_INIT_PLAZA_SLEEP_STAY_FUNC[] = { /* 0
|
|||
|
||||
static const struct ScriptCommand s_script_INIT_PLAZA_SLEEP_TALK_FUNC[] = { /* 0x8120670 */
|
||||
DEBUGINFO_O(507),
|
||||
JUMPIF_SCENARIOCHECK(4, /* to label */ 0),
|
||||
JUMPIF_SCENARIOCHECK(QUEST_SQUARE_ASLEEP, /* to label */ 0),
|
||||
SELECT_ANIMATION(2),
|
||||
RET_DIRECT,
|
||||
LABEL(0), /* = 0x00 */
|
||||
|
|
|
|||
|
|
@ -656,7 +656,7 @@ static void sub_8067558(Entity *entity, Entity *targetEntity, s32 a2)
|
|||
else if (info2->joinedAt.id == DUNGEON_RESCUE_TEAM_BASE) {
|
||||
speciesId = MONSTER_DECOY;
|
||||
}
|
||||
else if (info2->joinedAt.id == DUNGEON_JOIN_LOCATION_PARTNER && !gDungeon->unk644.unk18) {
|
||||
else if (info2->joinedAt.id == DUNGEON_JOIN_LOCATION_PARTNER && !gDungeon->unk644.canChangeLeader) {
|
||||
r6 = TRUE;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -55,15 +55,15 @@ extern void sub_8088EE8(void);
|
|||
extern void sub_8088848(void);
|
||||
extern void sub_808A718(void);
|
||||
|
||||
struct unkData_8107234
|
||||
typedef struct FixedRoomPrefightData
|
||||
{
|
||||
u8 unk0;
|
||||
u8 unk1;
|
||||
u8 unk2;
|
||||
u8 unk3;
|
||||
u8 unk4;
|
||||
u8 unk5;
|
||||
};
|
||||
u8 fixedRoomNumber; // See enum "FixedRoomID"
|
||||
u8 prefight1; // See enum "PrefightKind"
|
||||
u8 unk2; // 64 is a special value...
|
||||
u8 prefight3; // See enum "PrefightKind"
|
||||
u8 unk4; // 64 is a special value...
|
||||
u8 prefight5; // See enum "PrefightKind"
|
||||
} FixedRoomPrefightData;
|
||||
|
||||
// size: 0x8
|
||||
typedef struct unkStruct_202F3D0
|
||||
|
|
@ -76,40 +76,40 @@ typedef struct unkStruct_202F3D0
|
|||
u8 unk5;
|
||||
} unkStruct_202F3D0;
|
||||
|
||||
static void sub_8084854(const struct unkData_8107234 *);
|
||||
static void sub_8084854(const FixedRoomPrefightData *);
|
||||
static void sub_8085764(void);
|
||||
static void sub_80857B8(void);
|
||||
static void sub_80861EC(Entity *);
|
||||
|
||||
static const struct unkData_8107234 gUnknown_8107234[28] = {
|
||||
[0] = {1, 1, 0, 2, 1, 3},
|
||||
[1] = {2, 4, 2, 5, 3, 6},
|
||||
[2] = {3, 7, 4, 8, 5, 9},
|
||||
[3] = {4, 0xA, 6, 0xB, 7, 0xC},
|
||||
[4] = {5, 0xD, 8, 0xE, 9, 0xF},
|
||||
[5] = {6, 0x10, 0xA, 0x11, 0xA, 0x11},
|
||||
[6] = {7, 0x12, 0xB, 0x13, 0xC, 0x14},
|
||||
[7] = {0x14, 0x15, 0xD, 0x16, 0xD, 0x16},
|
||||
[8] = {8, 0x17, 0xE, 0x18, 0xF, 0x19},
|
||||
[9] = {0xB, 0x1A, 0x10, 0x1B, 0x11, 0x1C},
|
||||
[10] = {9, 0x1D, 0x12, 0x1E, 0x13, 0x1F},
|
||||
[11] = {0xC, 0x20, 0x14, 0x21, 0x15, 0x22},
|
||||
[12] = {0xD, 0x23, 0x16, 0x24, 0x17, 0x25},
|
||||
[13] = {0xE, 0x26, 0x18, 0x27, 0x19, 0x28},
|
||||
[14] = {0xF, 0x29, 0x40, 0x29, 0x1A, 0x2A},
|
||||
[15] = {0x10, 0x2B, 0x1B, 0x2C, 0x1C, 0x2D},
|
||||
[16] = {0x11, 0x2E, 0x40, 0x2E, 0x40, 0x2E},
|
||||
[17] = {0x12, 0x2F, 0x40, 0x2F, 0x40, 0x2F},
|
||||
[18] = {0x13, 0x30, 0x40, 0x30, 0x40, 0x30},
|
||||
[19] = {0xA, 0x31, 0x40, 0x31, 0x1E, 0x32},
|
||||
[20] = {0x15, 0x33, 0x40, 0x33, 0x40, 0x33},
|
||||
[21] = {0x16, 0x34, 0x40, 0x34, 0x40, 0x34},
|
||||
[22] = {0x17, 0x35, 0x40, 0x35, 0x40, 0x35},
|
||||
[23] = {0x19, 0x36, 0x40, 0x36, 0x40, 0x36},
|
||||
[24] = {0x1B, 0x37, 0x40, 0x37, 0x40, 0x37},
|
||||
[25] = {0x1A, 0x38, 0x20, 0x39, 0x20, 0x39},
|
||||
[26] = {0x18, 0x3A, 0x21, 0x3B, 0x21, 0x3B},
|
||||
[27] = {0},
|
||||
static const FixedRoomPrefightData sFixedRoomPrefightLookup[] = {
|
||||
{ FIXED_ROOM_MT_STEEL_SKARMORY, PREFIGHT_SKARMORY_ATTEMPT1, 0, PREFIGHT_SKARMORY_ATTEMPT2, 1, PREFIGHT_SKARMORY_GONE },
|
||||
{ FIXED_ROOM_SINISTER_WOODS_TEAM_MEANIES, 4, 2, 5, 3, 6 },
|
||||
{ FIXED_ROOM_MT_THUNDER_PEAK_ZAPDOS, 7, 4, 8, 5, 9 },
|
||||
{ FIXED_ROOM_MT_BLAZE_PEAK_MOLTRES, 0xA, 6, 0xB, 7, 0xC },
|
||||
{ FIXED_ROOM_FROSTY_GROTTO_ARTICUNO, 0xD, 8, 0xE, 9, 0xF },
|
||||
{ FIXED_ROOM_MT_FREEZE_PEAK_NINETALES, 0x10, 0xA, 0x11, 0xA, 0x11 },
|
||||
{ FIXED_ROOM_MAGMA_CAVERN_PIT_GROUDON, 0x12, 0xB, 0x13, 0xC, 0x14 },
|
||||
{ FIXED_ROOM_MAGMA_CAVERN_PIT_TYRANITAR_ALAKAZAM, 0x15, 0xD, 0x16, 0xD, 0x16 },
|
||||
{ FIXED_ROOM_SKY_TOWER_SUMMIT_RAYQUAZA, 0x17, 0xE, 0x18, 0xF, 0x19 },
|
||||
{ FIXED_ROOM_UPROAR_FOREST_MANKEY, 0x1A, 0x10, 0x1B, 0x11, 0x1C },
|
||||
{ FIXED_ROOM_WESTERN_CAVE_MEWTWO, 0x1D, 0x12, 0x1E, 0x13, 0x1F },
|
||||
{ FIXED_ROOM_FIERY_FIELD_ENTEI, 0x20, 0x14, 0x21, 0x15, 0x22 },
|
||||
{ FIXED_ROOM_LIGHTNING_FIELD_RAIKOU, 0x23, 0x16, 0x24, 0x17, 0x25 },
|
||||
{ FIXED_ROOM_NORTHWIND_FIELD_SUICUNE, 0x26, 0x18, 0x27, 0x19, 0x28 },
|
||||
{ FIXED_ROOM_MT_FARAWAY_HO_OH, 0x29, 64, 0x29, 0x1A, 0x2A },
|
||||
{ FIXED_ROOM_NORTHERN_RANGE_LATIOS, 0x2B, 0x1B, 0x2C, 0x1C, 0x2D },
|
||||
{ FIXED_ROOM_BURIED_RELIC_REGIROCK, 0x2E, 64, 0x2E, 64, 0x2E },
|
||||
{ FIXED_ROOM_BURIED_RELIC_REGICE, 0x2F, 64, 0x2F, 64, 0x2F },
|
||||
{ FIXED_ROOM_BURIED_RELIC_REGISTEEL, 0x30, 64, 0x30, 64, 0x30 },
|
||||
{ FIXED_ROOM_WISH_CAVE_JIRACHI, 0x31, 64, 0x31, 0x1E, 0x32 },
|
||||
{ FIXED_ROOM_SILVER_TRENCH_LUGIA, 0x33, 64, 0x33, 64, 0x33 },
|
||||
{ FIXED_ROOM_STORMY_SEA_KYOGRE, 0x34, 64, 0x34, 64, 0x34 },
|
||||
{ FIXED_ROOM_METEOR_CAVE_DEOXYS, 0x35, 64, 0x35, 64, 0x35 },
|
||||
{ FIXED_ROOM_PURITY_FOREST_CELEBI, 0x36, 64, 0x36, 64, 0x36 },
|
||||
{ FIRST_DOJO_MAZE_BOSS_ROOM, 0x37, 64, 0x37, 64, 0x37 },
|
||||
{ FIXED_ROOM_WISH_CAVE_MEDICHAM, 0x38, 0x20, 0x39, 0x20, 0x39 },
|
||||
{ FIXED_ROOM_HOWLING_FOREST_SMEARGLE, 0x3A, 0x21, 0x3B, 0x21, 0x3B },
|
||||
{ FIXED_ROOM_NONE, 0, 0, 0, 0, 0 },
|
||||
};
|
||||
|
||||
static const s32 gUnknown_8107314[] = {
|
||||
|
|
@ -123,41 +123,41 @@ EWRAM_DATA static unkStruct_202F3D0 gUnknown_202F3D0 = {0};
|
|||
void sub_80847D4(void)
|
||||
{
|
||||
u32 fixedRoomNumber;
|
||||
s32 index;
|
||||
s32 i;
|
||||
|
||||
gDungeon->unk3A0D = 0;
|
||||
gDungeon->prefight = PREFIGHT_NONE;
|
||||
gDungeon->unk1356C = 0;
|
||||
UpdateMinimap();
|
||||
for(index = 0; index < 0x3e7 && gUnknown_8107234[index].unk0 != 0; index++) {
|
||||
for (i = 0; i < 999 && sFixedRoomPrefightLookup[i].fixedRoomNumber != FIXED_ROOM_NONE; i++) {
|
||||
fixedRoomNumber = gDungeon->fixedRoomNumber;
|
||||
// Dojo maze bosses all use the same cutscene data
|
||||
if (fixedRoomNumber - (FIRST_DOJO_MAZE_BOSS_ROOM+1) < NUM_MAZE_BOSS_ROOMS) {
|
||||
if (fixedRoomNumber - (FIRST_DOJO_MAZE_BOSS_ROOM + 1) < NUM_MAZE_BOSS_ROOMS) {
|
||||
fixedRoomNumber = FIRST_DOJO_MAZE_BOSS_ROOM;
|
||||
}
|
||||
if (fixedRoomNumber == gUnknown_8107234[index].unk0)
|
||||
if (fixedRoomNumber == sFixedRoomPrefightLookup[i].fixedRoomNumber)
|
||||
{
|
||||
sub_8084854(&gUnknown_8107234[index]);
|
||||
sub_8084854(&sFixedRoomPrefightLookup[i]);
|
||||
break;
|
||||
}
|
||||
}
|
||||
sub_8097FF8();
|
||||
}
|
||||
|
||||
static void sub_8084854(const struct unkData_8107234 *param_1)
|
||||
static void sub_8084854(const FixedRoomPrefightData *a0)
|
||||
{
|
||||
if (gDungeon->unk644.unk34 != 0) {
|
||||
gDungeon->unk3A0D = param_1->unk5;
|
||||
if (gDungeon->unk644.missionKind != DUNGEON_MISSION_UNK0) {
|
||||
gDungeon->prefight = a0->prefight5;
|
||||
}
|
||||
else if (sub_8098100(param_1->unk4) != 0) {
|
||||
gDungeon->unk3A0D = param_1->unk5;
|
||||
else if (sub_8098100(a0->unk4)) {
|
||||
gDungeon->prefight = a0->prefight5;
|
||||
}
|
||||
else if (sub_8098100(param_1->unk2) != 0) {
|
||||
gDungeon->unk3A0D = param_1->unk3;
|
||||
else if (sub_8098100(a0->unk2)) {
|
||||
gDungeon->prefight = a0->prefight3;
|
||||
}
|
||||
else {
|
||||
gDungeon->unk3A0D = param_1->unk1;
|
||||
if (param_1->unk2 != 0x40) {
|
||||
sub_8097FA8(param_1->unk2);
|
||||
gDungeon->prefight = a0->prefight1;
|
||||
if (a0->unk2 != 64) {
|
||||
sub_8097FA8(a0->unk2);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -173,16 +173,16 @@ bool8 ShouldShowDungeonBanner(void)
|
|||
void sub_80848F0(void)
|
||||
{
|
||||
gDungeon->unk1356C = 1;
|
||||
switch(gDungeon->unk3A0D) {
|
||||
case 0:
|
||||
switch(gDungeon->prefight) {
|
||||
case PREFIGHT_NONE:
|
||||
case 0x3c:
|
||||
gDungeon->unk1356C = 0;
|
||||
break;
|
||||
case 1:
|
||||
case 2:
|
||||
case PREFIGHT_SKARMORY_ATTEMPT1:
|
||||
case PREFIGHT_SKARMORY_ATTEMPT2:
|
||||
sub_8086B14();
|
||||
break;
|
||||
case 3:
|
||||
case PREFIGHT_SKARMORY_GONE:
|
||||
sub_8086B94();
|
||||
break;
|
||||
case 4:
|
||||
|
|
@ -345,16 +345,16 @@ void sub_80848F0(void)
|
|||
|
||||
void DisplayPreFightDialogue(void)
|
||||
{
|
||||
switch(gDungeon->unk3A0D) {
|
||||
case 0:
|
||||
switch(gDungeon->prefight) {
|
||||
case PREFIGHT_NONE:
|
||||
break;
|
||||
case 1:
|
||||
case PREFIGHT_SKARMORY_ATTEMPT1:
|
||||
SkarmoryPreFightDialogue();
|
||||
break;
|
||||
case 2:
|
||||
case PREFIGHT_SKARMORY_ATTEMPT2:
|
||||
SkarmoryReFightDialogue();
|
||||
break;
|
||||
case 3:
|
||||
case PREFIGHT_SKARMORY_GONE:
|
||||
sub_8086E40();
|
||||
break;
|
||||
case 4:
|
||||
|
|
@ -535,102 +535,102 @@ void DisplayPreFightDialogue(void)
|
|||
void sub_8084E00(Entity *entity, u8 param_2, bool8 param_3)
|
||||
{
|
||||
if (param_2 != 0) {
|
||||
switch(gDungeon->unk3A0D) {
|
||||
case 0:
|
||||
switch(gDungeon->prefight) {
|
||||
case PREFIGHT_NONE:
|
||||
break;
|
||||
case 1:
|
||||
case 2:
|
||||
sub_8086BDC(param_2,gDungeon->unk3A0D);
|
||||
case PREFIGHT_SKARMORY_ATTEMPT1:
|
||||
case PREFIGHT_SKARMORY_ATTEMPT2:
|
||||
sub_8086BDC(param_2, gDungeon->prefight);
|
||||
break;
|
||||
case 4:
|
||||
case 5:
|
||||
sub_8086F54(param_2,gDungeon->unk3A0D);
|
||||
sub_8086F54(param_2, gDungeon->prefight);
|
||||
break;
|
||||
case 7:
|
||||
case 8:
|
||||
case 9:
|
||||
sub_8087334(param_2,gDungeon->unk3A0D);
|
||||
sub_8087334(param_2,gDungeon->prefight);
|
||||
break;
|
||||
case 10:
|
||||
case 0xb:
|
||||
case 0xc:
|
||||
sub_80878F4(param_2,gDungeon->unk3A0D);
|
||||
sub_80878F4(param_2,gDungeon->prefight);
|
||||
break;
|
||||
case 0xd:
|
||||
case 0xe:
|
||||
case 0xf:
|
||||
sub_8088088(param_2,gDungeon->unk3A0D);
|
||||
sub_8088088(param_2,gDungeon->prefight);
|
||||
break;
|
||||
case 0x12:
|
||||
case 0x13:
|
||||
case 0x14:
|
||||
sub_8088818(param_2,gDungeon->unk3A0D);
|
||||
sub_8088818(param_2,gDungeon->prefight);
|
||||
break;
|
||||
case 0x17:
|
||||
case 0x18:
|
||||
case 0x19:
|
||||
sub_80893B4(param_2,gDungeon->unk3A0D);
|
||||
sub_80893B4(param_2,gDungeon->prefight);
|
||||
break;
|
||||
case 0x1a:
|
||||
case 0x1b:
|
||||
sub_8089788(entity,param_2,gDungeon->unk3A0D);
|
||||
sub_8089788(entity,param_2,gDungeon->prefight);
|
||||
break;
|
||||
case 0x1d:
|
||||
case 0x1e:
|
||||
case 0x1f:
|
||||
sub_8089A00(param_2,gDungeon->unk3A0D);
|
||||
sub_8089A00(param_2,gDungeon->prefight);
|
||||
break;
|
||||
case 0x20:
|
||||
case 0x21:
|
||||
case 0x22:
|
||||
sub_8089CFC(param_2,gDungeon->unk3A0D);
|
||||
sub_8089CFC(param_2,gDungeon->prefight);
|
||||
break;
|
||||
case 0x23:
|
||||
case 0x24:
|
||||
case 0x25:
|
||||
sub_8089FF0(param_2,gDungeon->unk3A0D);
|
||||
sub_8089FF0(param_2,gDungeon->prefight);
|
||||
break;
|
||||
case 0x26:
|
||||
case 0x27:
|
||||
case 0x28:
|
||||
sub_808A36C(param_2,gDungeon->unk3A0D);
|
||||
sub_808A36C(param_2,gDungeon->prefight);
|
||||
break;
|
||||
case 0x29:
|
||||
case 0x2a:
|
||||
sub_808A6E8(param_2,gDungeon->unk3A0D);
|
||||
sub_808A6E8(param_2,gDungeon->prefight);
|
||||
break;
|
||||
case 0x2b:
|
||||
case 0x2c:
|
||||
case 0x2d:
|
||||
sub_808AAF0(param_2,gDungeon->unk3A0D);
|
||||
sub_808AAF0(param_2,gDungeon->prefight);
|
||||
break;
|
||||
case 0x2e:
|
||||
sub_808AE54(param_2,gDungeon->unk3A0D,&entity->pos);
|
||||
sub_808AE54(param_2,gDungeon->prefight,&entity->pos);
|
||||
break;
|
||||
case 0x2f:
|
||||
sub_808AEC8(param_2,gDungeon->unk3A0D,&entity->pos);
|
||||
sub_808AEC8(param_2,gDungeon->prefight,&entity->pos);
|
||||
break;
|
||||
case 0x30:
|
||||
sub_808AF3C(param_2,gDungeon->unk3A0D,&entity->pos);
|
||||
sub_808AF3C(param_2,gDungeon->prefight,&entity->pos);
|
||||
break;
|
||||
case 0x31:
|
||||
case 0x32:
|
||||
sub_808B3E4(param_2,gDungeon->unk3A0D,param_3);
|
||||
sub_808B3E4(param_2,gDungeon->prefight,param_3);
|
||||
break;
|
||||
case 0x33:
|
||||
sub_808BE70(param_2,gDungeon->unk3A0D,param_3);
|
||||
sub_808BE70(param_2,gDungeon->prefight,param_3);
|
||||
break;
|
||||
case 0x34:
|
||||
sub_808C1A4(param_2,gDungeon->unk3A0D,param_3);
|
||||
sub_808C1A4(param_2,gDungeon->prefight,param_3);
|
||||
break;
|
||||
case 0x35:
|
||||
sub_808C414(param_2,gDungeon->unk3A0D,param_3);
|
||||
sub_808C414(param_2,gDungeon->prefight,param_3);
|
||||
break;
|
||||
case 0x36:
|
||||
nullsub_100(param_2,gDungeon->unk3A0D,param_3);
|
||||
nullsub_100(param_2,gDungeon->prefight,param_3);
|
||||
break;
|
||||
case 0x37:
|
||||
sub_808C948(entity,gDungeon->unk3A0D);
|
||||
sub_808C948(entity,gDungeon->prefight);
|
||||
break;
|
||||
case 0x38:
|
||||
case 0x39:
|
||||
|
|
@ -647,21 +647,21 @@ void sub_8084E00(Entity *entity, u8 param_2, bool8 param_3)
|
|||
|
||||
void sub_8085140(void)
|
||||
{
|
||||
switch(gDungeon->unk3A0D) {
|
||||
switch (gDungeon->prefight) {
|
||||
// NOTE: shortcut way to generate all cases from 0 - 0x3C properly
|
||||
default:
|
||||
case 0:
|
||||
case 1:
|
||||
case PREFIGHT_NONE:
|
||||
case PREFIGHT_SKARMORY_ATTEMPT1:
|
||||
case 0x3C:
|
||||
break;
|
||||
case 0x2e:
|
||||
sub_808AFB0(gDungeon->unk3A0D);
|
||||
sub_808AFB0(gDungeon->prefight);
|
||||
break;
|
||||
case 0x2f:
|
||||
sub_808B030(gDungeon->unk3A0D);
|
||||
sub_808B030(gDungeon->prefight);
|
||||
break;
|
||||
case 0x30:
|
||||
sub_808B0B0(gDungeon->unk3A0D);
|
||||
sub_808B0B0(gDungeon->prefight);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
@ -760,7 +760,7 @@ void sub_8085374(void)
|
|||
}
|
||||
}
|
||||
|
||||
if (leaderEntity == NULL || partnerEntity != NULL || gDungeon->unk644.unk18 != 0)
|
||||
if (leaderEntity == NULL || partnerEntity != NULL || gDungeon->unk644.canChangeLeader)
|
||||
return;
|
||||
|
||||
j = 0;
|
||||
|
|
@ -1364,7 +1364,7 @@ void sub_8085F44(s32 param_1)
|
|||
|
||||
void sub_8085F78(void)
|
||||
{
|
||||
switch(gDungeon->unk3A0D) {
|
||||
switch(gDungeon->prefight) {
|
||||
case 0x12:
|
||||
case 0x13:
|
||||
case 0x14:
|
||||
|
|
@ -1377,7 +1377,7 @@ void sub_8085F78(void)
|
|||
case 0x2A:
|
||||
sub_808A718();
|
||||
break;
|
||||
case 0:
|
||||
case PREFIGHT_NONE:
|
||||
case 0x3C:
|
||||
default:
|
||||
break;
|
||||
|
|
@ -1981,12 +1981,12 @@ void sub_8086AC0(void)
|
|||
sub_8097FF8();
|
||||
}
|
||||
|
||||
u8 sub_8086AE4(s16 _index)
|
||||
bool8 sub_8086AE4(s16 _index)
|
||||
{
|
||||
s32 pokeIndex = _index;
|
||||
|
||||
if(gDungeon->unk644.unk18 == 0)
|
||||
return 1;
|
||||
if (!gDungeon->unk644.canChangeLeader)
|
||||
return TRUE;
|
||||
else
|
||||
return HasRecruitedMon(pokeIndex);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -71,9 +71,9 @@ void sub_8086B94(void)
|
|||
sub_8085860(leaderEntity->pos.x,leaderEntity->pos.y);
|
||||
}
|
||||
|
||||
void sub_8086BDC(u8 param_1, u8 param_2)
|
||||
void sub_8086BDC(u8 param_1, u8 prefight)
|
||||
{
|
||||
if ((param_2 == 1 || param_2 == 2) && param_1 == 3) {
|
||||
if ((prefight == PREFIGHT_SKARMORY_ATTEMPT1 || prefight == PREFIGHT_SKARMORY_ATTEMPT2) && param_1 == 3) {
|
||||
sub_8097FA8(1);
|
||||
gDungeon->unk2 = 1;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -74,7 +74,7 @@ void sub_808729C(void)
|
|||
sub_80854D4();
|
||||
sub_8085930(4);
|
||||
sub_80855E4(sub_8086A3C);
|
||||
if (sub_8086AE4(0x91) != 0) {
|
||||
if (sub_8086AE4(MONSTER_ZAPDOS)) {
|
||||
HandleFaint(zapdosEntity,DUNGEON_EXIT_DELETED_FOR_EVENT,0);
|
||||
}
|
||||
else {
|
||||
|
|
|
|||
|
|
@ -478,7 +478,7 @@ static bool8 HandleDealingDamageInternal(Entity *attacker, Entity *target, struc
|
|||
}
|
||||
else {
|
||||
DungeonMon *recruitedMon = &gRecruitedPokemonRef->dungeonTeam[targetData->teamIndex];
|
||||
if (targetData->isTeamLeader || (targetData->joinedAt.id == DUNGEON_JOIN_LOCATION_PARTNER && gDungeon->unk644.unk18 == 0)) {
|
||||
if (targetData->isTeamLeader || (targetData->joinedAt.id == DUNGEON_JOIN_LOCATION_PARTNER && !gDungeon->unk644.canChangeLeader)) {
|
||||
DisplayDungeonLoggableMessageTrue(attacker, gUnknown_80F9CEC[r8]);
|
||||
}
|
||||
else if (IsExperienceLocked(targetData->joinedAt.id)) {
|
||||
|
|
|
|||
|
|
@ -90,11 +90,11 @@ bool8 sub_8083C50(void)
|
|||
return FALSE;
|
||||
}
|
||||
|
||||
bool8 sub_8083C88(u8 param_1)
|
||||
bool8 sub_8083C88(u8 dungeonMissionKind)
|
||||
{
|
||||
DungeonExitSummary *exitSummary = &gDungeon->exitSummary;
|
||||
|
||||
if ((!HasCheckpoint(gDungeon->unk644.dungeonLocation.id) && (gDungeon->unk644.unk18 != 0 || param_1 != 0))
|
||||
if ((!HasCheckpoint(gDungeon->unk644.dungeonLocation.id) && (gDungeon->unk644.canChangeLeader || dungeonMissionKind != DUNGEON_MISSION_UNK0))
|
||||
|| exitSummary->exitReason != DUNGEON_EXIT_CLEARED_DUNGEON) {
|
||||
return TRUE;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -4288,7 +4288,7 @@ static void SpawnNonEnemies(FloorProperties *floorProps, bool8 isEmptyMonsterHou
|
|||
// Spawn an item
|
||||
tile->spawnOrVisibilityFlags.spawn |= SPAWN_FLAG_ITEM;
|
||||
}
|
||||
else if (gDungeon->unk644.unk18) {
|
||||
else if (gDungeon->unk644.canChangeLeader) {
|
||||
tile->spawnOrVisibilityFlags.spawn |= SPAWN_FLAG_TRAP;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -756,7 +756,7 @@ bool8 sub_8048A68(Entity *param_1,Item *item)
|
|||
}
|
||||
else
|
||||
{
|
||||
if (gDungeon->unk644.unk18 == 0) {
|
||||
if (!gDungeon->unk644.canChangeLeader) {
|
||||
DisplayDungeonMessage(0,gUnknown_80F9BD8,1);
|
||||
return FALSE;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -23,7 +23,7 @@ void sub_80842F0(void)
|
|||
|
||||
gDungeon->unk644.unk33 = 0;
|
||||
gDungeon->unk644.unk46 = 0;
|
||||
if (gDungeon->unk644.unk34 != 2)
|
||||
if (gDungeon->unk644.missionKind != DUNGEON_MISSION_ACCEPTEDJOB_RELATED)
|
||||
return;
|
||||
|
||||
for (i = 0; i < MAX_ACCEPTED_JOBS; i++) {
|
||||
|
|
|
|||
|
|
@ -263,7 +263,7 @@ static void sub_807218C(Entity *pokemon)
|
|||
}
|
||||
else if(info->joinedAt.id == DUNGEON_JOIN_LOCATION_PARTNER)
|
||||
{
|
||||
if(gDungeon->unk644.unk18 == 0)
|
||||
if (!gDungeon->unk644.canChangeLeader)
|
||||
r3 = 1;
|
||||
}
|
||||
sub_806A3D4(buffer, r1, 3, r3);
|
||||
|
|
|
|||
|
|
@ -417,7 +417,7 @@ static void ShowQuickSaveGiveUpMenu(void)
|
|||
|
||||
static void ShowMissionObjectivesMenu(void)
|
||||
{
|
||||
sub_80319A4(gDungeon->unk644.unk34, gDungeon->unk644.dungeonLocation.id, 0);
|
||||
sub_80319A4(gDungeon->unk644.missionKind, gDungeon->unk644.dungeonLocation.id, 0);
|
||||
do {
|
||||
DungeonRunFrameActions(0x47);
|
||||
} while (sub_80319F8() == 0);
|
||||
|
|
|
|||
|
|
@ -360,7 +360,7 @@ static void AddTeamSubMenuOptions(struct UnkFieldTeamMenuStruct *a0)
|
|||
AddActionToDungeonSubMenu(ACTION_CHECK_SUMMARY, 0);
|
||||
AddActionToDungeonSubMenu(ACTION_CHECK_MOVES, 0);
|
||||
if (!monInfo->isTeamLeader) {
|
||||
if (!gDungeon->unk644.unk19 && (monInfo->joinedAt.id != DUNGEON_JOIN_LOCATION_PARTNER || gDungeon->unk644.unk18)) {
|
||||
if (!gDungeon->unk644.unk19 && (monInfo->joinedAt.id != DUNGEON_JOIN_LOCATION_PARTNER || gDungeon->unk644.canChangeLeader)) {
|
||||
AddActionToDungeonSubMenu(0x34, 0);
|
||||
}
|
||||
AddActionToDungeonSubMenu(ACTION_TALK_MENU, 0);
|
||||
|
|
@ -369,7 +369,7 @@ static void AddTeamSubMenuOptions(struct UnkFieldTeamMenuStruct *a0)
|
|||
if (!monInfo->isTeamLeader) {
|
||||
AddActionToDungeonSubMenu(ACTION_CHANGE_TACTICS, 0);
|
||||
}
|
||||
if (!monInfo->isTeamLeader && gDungeon->unk644.unk18 && CanLeaderSwitch(gDungeon->unk644.dungeonLocation.id)) {
|
||||
if (!monInfo->isTeamLeader && gDungeon->unk644.canChangeLeader && CanLeaderSwitch(gDungeon->unk644.dungeonLocation.id)) {
|
||||
bool32 r5;
|
||||
|
||||
AddActionToDungeonSubMenu(0x3B, 0);
|
||||
|
|
|
|||
|
|
@ -735,7 +735,7 @@ void sub_8052FB8(const u8 *str)
|
|||
|
||||
const u8 *GetCurrentDungeonName(void)
|
||||
{
|
||||
if (gDungeon->unk644.unk34 == 1) {
|
||||
if (gDungeon->unk644.missionKind == DUNGEON_MISSION_OUTONRESCUE) {
|
||||
return GetDungeonName1(DUNGEON_OUT_ON_RESCUE);
|
||||
}
|
||||
else {
|
||||
|
|
|
|||
|
|
@ -486,7 +486,7 @@ void HandleFaint(Entity *entity, s32 dungeonExitReason_, Entity *param_3)
|
|||
entity->isVisible = FALSE;
|
||||
gLeaderPointer = NULL;
|
||||
joinId = entInfo->joinedAt.id;
|
||||
if (joinId == DUNGEON_JOIN_LOCATION_PARTNER && gDungeon->unk644.unk18 == 0) {
|
||||
if (joinId == DUNGEON_JOIN_LOCATION_PARTNER && !gDungeon->unk644.canChangeLeader) {
|
||||
gDungeon->unk10 = 1;
|
||||
entInfo->HP = 0;
|
||||
SubstitutePlaceholderStringTags(gDungeon->faintStringBuffer,entity,0);
|
||||
|
|
@ -505,9 +505,9 @@ void HandleFaint(Entity *entity, s32 dungeonExitReason_, Entity *param_3)
|
|||
&& dungeonExitReason != DUNGEON_EXIT_DELETED_FOR_EVENT
|
||||
&& dungeonExitReason != DUNGEON_EXIT_FAILED_TO_PROTECT_CLIENT
|
||||
&& dungeonExitReason != DUNGEON_EXIT_BLOWN_OUT_UNSEEN_FORCE
|
||||
&& gDungeon->unk3A0D == 0
|
||||
&& gDungeon->prefight == PREFIGHT_NONE
|
||||
&& gDungeon->unk644.unk37 >= 0
|
||||
&& gDungeon->unk644.unk34 != TRUE)
|
||||
&& gDungeon->unk644.missionKind != DUNGEON_MISSION_OUTONRESCUE)
|
||||
{
|
||||
if (gDungeon->unk644.unk37 > 0) {
|
||||
if (DisplayDungeonYesNoMessage(NULL,gUnknown_80FE268,1) == 1) {
|
||||
|
|
@ -605,7 +605,7 @@ void HandleFaint(Entity *entity, s32 dungeonExitReason_, Entity *param_3)
|
|||
if (entInfo->isTeamLeader) {
|
||||
uVar10 = TRUE;
|
||||
}
|
||||
if (gDungeon->unk644.unk18 == 0 && entInfo->joinedAt.id == DUNGEON_JOIN_LOCATION_PARTNER) {
|
||||
if (!gDungeon->unk644.canChangeLeader && entInfo->joinedAt.id == DUNGEON_JOIN_LOCATION_PARTNER) {
|
||||
uVar10 = TRUE;
|
||||
}
|
||||
|
||||
|
|
@ -846,7 +846,7 @@ void SetMonSummaryInfoFromEntity(struct MonSummaryInfo *param_1, Entity *target)
|
|||
param_1->unk44[0].level = 0;
|
||||
param_1->unk44[1].level = 0;
|
||||
param_1->IQSkills = info->IQSkillMenuFlags;
|
||||
if (gDungeon->unk644.unk16 != 0) {
|
||||
if (gDungeon->unk644.unlockedEvolutions) {
|
||||
param_1->evoStringId = sub_806A4DC(info);
|
||||
}
|
||||
else {
|
||||
|
|
@ -1352,6 +1352,7 @@ bool8 sub_806A458(Entity *pokemon)
|
|||
return (count > 1);
|
||||
}
|
||||
|
||||
// Evolution string related
|
||||
s32 sub_806A4DC(EntityInfo *info)
|
||||
{
|
||||
Pokemon pokemon;
|
||||
|
|
|
|||
|
|
@ -48,16 +48,14 @@ bool8 TryRecruitMonster(Entity *attacker, Entity *target)
|
|||
if (gDungeon->fixedRoomNumber != FIXED_ROOM_FROSTY_GROTTO_ARTICUNO
|
||||
&& gDungeon->fixedRoomNumber != FIXED_ROOM_MT_BLAZE_PEAK_MOLTRES
|
||||
&& gDungeon->fixedRoomNumber != FIXED_ROOM_WESTERN_CAVE_MEWTWO
|
||||
&& gDungeon->fixedRoomNumber != FIXED_ROOM_MT_FARAWAY_HO_OH
|
||||
) {
|
||||
if (gDungeon->fixedRoomNumber >= FIXED_ROOM_TEAM_SHIFTY_BOSS
|
||||
&& gDungeon->fixedRoomNumber <= FIXED_ROOM_RESCUE_TEAM_2_BOSS
|
||||
) {
|
||||
if (gDungeon->unk644.unk18 == 0)
|
||||
&& gDungeon->fixedRoomNumber != FIXED_ROOM_MT_FARAWAY_HO_OH) {
|
||||
|
||||
if (gDungeon->fixedRoomNumber >= FIXED_ROOM_TEAM_SHIFTY_BOSS && gDungeon->fixedRoomNumber <= FIXED_ROOM_RESCUE_TEAM_2_BOSS) {
|
||||
if (!gDungeon->unk644.canChangeLeader)
|
||||
return FALSE;
|
||||
}
|
||||
else if (gDungeon->fixedRoomNumber == FIXED_ROOM_RESCUE_TEAM_MAZE_BOSS) {
|
||||
if (gDungeon->unk644.unk15 == 0)
|
||||
if (!gDungeon->unk644.canRecruitRescueTeamMazeBosses)
|
||||
return FALSE;
|
||||
if (!sub_8097900(MONSTER_DEOXYS_NORMAL))
|
||||
return FALSE;
|
||||
|
|
@ -85,8 +83,7 @@ bool8 TryRecruitMonster(Entity *attacker, Entity *target)
|
|||
targetInfo->id == MONSTER_REGIROCK ||
|
||||
targetInfo->id == MONSTER_REGICE ||
|
||||
targetInfo->id == MONSTER_REGISTEEL)
|
||||
&& HasRecruitedMon(targetInfo->id))
|
||||
{
|
||||
&& HasRecruitedMon(targetInfo->id)) {
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
|
|
@ -107,9 +104,9 @@ bool8 TryRecruitMonster(Entity *attacker, Entity *target)
|
|||
if (recruitRate == -999)
|
||||
return FALSE;
|
||||
|
||||
if (HasHeldItem(attacker, ITEM_FRIEND_BOW)) {
|
||||
if (HasHeldItem(attacker, ITEM_FRIEND_BOW))
|
||||
recruitRate += gFriendBowRecruitRateUpValue;
|
||||
}
|
||||
|
||||
recruitRate += gRecruitRateByLevel[attackerInfo->level];
|
||||
if (rand >= recruitRate)
|
||||
return FALSE;
|
||||
|
|
@ -194,7 +191,7 @@ bool8 IsMonsterRecruitable(s32 species)
|
|||
else if (!sub_808529C(id)) {
|
||||
return FALSE;
|
||||
}
|
||||
else if (id == MONSTER_MEW && gDungeon->unk644.unk34 == 1) {
|
||||
else if (id == MONSTER_MEW && gDungeon->unk644.missionKind == DUNGEON_MISSION_OUTONRESCUE) {
|
||||
return FALSE;
|
||||
}
|
||||
else if (id == MONSTER_LATIAS) {
|
||||
|
|
|
|||
|
|
@ -255,7 +255,7 @@ void sub_806B168(void)
|
|||
}
|
||||
}
|
||||
|
||||
if (gDungeon->unk644.unk18 == 0) {
|
||||
if (!gDungeon->unk644.canChangeLeader) {
|
||||
for (i = 0; i < MAX_TEAM_MEMBERS; i++) {
|
||||
DungeonMon *currMonPtr = monPtrs[i];
|
||||
if (currMonPtr != NULL && currMonPtr->dungeonLocation.id == DUNGEON_JOIN_LOCATION_PARTNER) {
|
||||
|
|
|
|||
|
|
@ -418,7 +418,7 @@ static void ShowPokemonSummary(Pokemon *a0)
|
|||
|
||||
ResetTouchScreenMenuInput(&gDungeonMenu.touchScreen);
|
||||
DungeonShowWindows(&winTemplates, 1);
|
||||
SetMonSummaryInfo(&unkStruct, a0, gDungeon->unk644.unk16);
|
||||
SetMonSummaryInfo(&unkStruct, a0, gDungeon->unk644.unlockedEvolutions);
|
||||
ShowPokemonSummaryWindow(spF8[r7], r7, &unkStruct, &var_C8, 0);
|
||||
|
||||
gDungeonMenu.leftRightArrowsPos.x = (gWindows[0].x + 15) * 8;
|
||||
|
|
|
|||
|
|
@ -403,7 +403,7 @@ static void WriteDungeonFloor(DataSerializer *seri)
|
|||
WriteBool8(seri, gDungeon->unk3A0A);
|
||||
WriteBool8(seri, gDungeon->unk3A0B);
|
||||
WriteU8(seri, gDungeon->monsterHouseRoom);
|
||||
WriteU8(seri, gDungeon->unk3A0D);
|
||||
WriteU8(seri, gDungeon->prefight);
|
||||
WriteS16(seri, gDungeon->tileset);
|
||||
WriteS16(seri,gDungeon->unk3A10);
|
||||
WriteS16(seri, gDungeon->unk3A12);
|
||||
|
|
@ -765,7 +765,7 @@ static void ReadDungeonFloor(DataSerializer *seri)
|
|||
gDungeon->unk3A0A = ReadBool8(seri);
|
||||
gDungeon->unk3A0B = ReadBool8(seri);
|
||||
gDungeon->monsterHouseRoom = ReadU8(seri);
|
||||
gDungeon->unk3A0D = ReadU8(seri);
|
||||
gDungeon->prefight = ReadU8(seri);
|
||||
gDungeon->tileset = ReadS16(seri);
|
||||
gDungeon->unk3A10 = ReadS16(seri);
|
||||
gDungeon->unk3A12 = ReadS16(seri);
|
||||
|
|
|
|||
125
src/event_flag.c
125
src/event_flag.c
|
|
@ -529,14 +529,14 @@ bool8 ScriptVarScenarioEqual(s16 varId,u32 pMain,s32 pSub)
|
|||
}
|
||||
|
||||
// arm9.bin::0200F1d8
|
||||
bool8 ScriptVarScenarioAfter(s16 varId,u32 pMain,s32 pSub)
|
||||
bool8 ScriptVarScenarioAfter(s16 varId, u32 pMain, s32 pSub)
|
||||
{
|
||||
s32 sMain;
|
||||
s32 sSub;
|
||||
|
||||
sMain = GetScriptVarArrayValue(NULL, varId, 0);
|
||||
sSub = GetScriptVarArrayValue(NULL, varId, 1);
|
||||
if (sMain == 0x3a) {
|
||||
if (sMain == 58) {
|
||||
// DS: Assert(FALSE, "debug mode scenario comp %3d %3d %3d", varId, pMain, pSub)
|
||||
return FALSE;
|
||||
} else if (sMain > pMain) {
|
||||
|
|
@ -816,69 +816,68 @@ UNUSED static const u8 *sub_80023C4(u32 param_1)
|
|||
#endif
|
||||
|
||||
// arm9.bin::0200E654
|
||||
// 6 checks for post game being reached
|
||||
bool8 sub_80023E4(u32 param_1)
|
||||
bool8 CheckQuest(s32 questID)
|
||||
{
|
||||
switch(param_1) {
|
||||
case 0:
|
||||
return ScriptVarScenarioAfter(SCENARIO_MAIN,2,-1);
|
||||
case 1:
|
||||
return ScriptVarScenarioAfter(SCENARIO_MAIN,3,3);
|
||||
case 2:
|
||||
return ScriptVarScenarioAfter(SCENARIO_MAIN,4,3);
|
||||
case 3:
|
||||
return ScriptVarScenarioAfter(SCENARIO_MAIN,5,0);
|
||||
case 4:
|
||||
return (ScriptVarScenarioAfter(SCENARIO_MAIN,0xb,0) && ScriptVarScenarioBefore(SCENARIO_MAIN,0xd,0));
|
||||
case 5:
|
||||
return (ScriptVarScenarioAfter(SCENARIO_MAIN,0xb,3) && ScriptVarScenarioBefore(SCENARIO_MAIN,0xf,0));
|
||||
case 6:
|
||||
return ScriptVarScenarioAfter(SCENARIO_MAIN,0x11,-1);
|
||||
case 7:
|
||||
return ScriptVarScenarioAfter(SCENARIO_MAIN,0x12,2);
|
||||
case 8:
|
||||
return ScriptVarScenarioAfter(SCENARIO_MAIN,0x12,3);
|
||||
case 9:
|
||||
return ScriptVarScenarioAfter(SCENARIO_MAIN,0x12,-1);
|
||||
case 10:
|
||||
return ScriptVarScenarioAfter(SCENARIO_MAIN,5,4);
|
||||
case 0xb:
|
||||
return ScriptVarScenarioAfter(SCENARIO_MAIN,5,4);
|
||||
case 0xc:
|
||||
return (!ScriptVarScenarioEqual(SCENARIO_MAIN,0xb,2) && !ScriptVarScenarioEqual(SCENARIO_MAIN,0xb,3));
|
||||
case 0xd:
|
||||
return ScriptVarScenarioEqual(SCENARIO_MAIN,0x10,2);
|
||||
case 0xe:
|
||||
return !ScriptVarScenarioBefore(SCENARIO_MAIN,5,7);
|
||||
case 0xf:
|
||||
return !ScriptVarScenarioBefore(SCENARIO_MAIN,0xf,0);
|
||||
case 0x10:
|
||||
return ScriptVarScenarioAfter(SCENARIO_MAIN,7,-1);
|
||||
case 0x11:
|
||||
return ScriptVarScenarioAfter(SCENARIO_MAIN,0xc,-1);
|
||||
case 0x12:
|
||||
return ScriptVarScenarioAfter(SCENARIO_MAIN,0xd,-1);
|
||||
case 0x13:
|
||||
return ScriptVarScenarioAfter(SCENARIO_MAIN,0xf,-1);
|
||||
case 0x14:
|
||||
return ScriptVarScenarioAfter(SCENARIO_MAIN,0x10,-1);
|
||||
case 0x15:
|
||||
return ScriptVarScenarioAfter(SCENARIO_SUB2,0x21,-1);
|
||||
case 0x16:
|
||||
return ScriptVarScenarioAfter(SCENARIO_SUB2,0x22,-1);
|
||||
case 0x17:
|
||||
return ScriptVarScenarioAfter(SCENARIO_SUB3,0x24,-1);
|
||||
case 0x18:
|
||||
return ScriptVarScenarioAfter(SCENARIO_SUB4,0x2a,-1);
|
||||
case 0x19:
|
||||
return ScriptVarScenarioAfter(SCENARIO_SUB5,0x2c,-1);
|
||||
case 0x1a:
|
||||
return ScriptVarScenarioAfter(SCENARIO_SUB7,0x31,-1);
|
||||
case 0x1b:
|
||||
return RescueScenarioConquered(0x29);
|
||||
case 0x1c:
|
||||
switch (questID) {
|
||||
case QUEST_SET_TEAM_NAME:
|
||||
return ScriptVarScenarioAfter(SCENARIO_MAIN, 2, -1);
|
||||
case QUEST_UNK1:
|
||||
return ScriptVarScenarioAfter(SCENARIO_MAIN, 3, 3);
|
||||
case QUEST_CAN_ACCESS_JOBS:
|
||||
return ScriptVarScenarioAfter(SCENARIO_MAIN, 4, 3);
|
||||
case QUEST_CAN_RECRUIT:
|
||||
return ScriptVarScenarioAfter(SCENARIO_MAIN, 5, 0);
|
||||
case QUEST_SQUARE_ASLEEP:
|
||||
return (ScriptVarScenarioAfter(SCENARIO_MAIN, 11, 0) && ScriptVarScenarioBefore(SCENARIO_MAIN, 13, 0));
|
||||
case QUEST_UNK5:
|
||||
return (ScriptVarScenarioAfter(SCENARIO_MAIN, 11, 3) && ScriptVarScenarioBefore(SCENARIO_MAIN, 15, 0));
|
||||
case QUEST_REACHED_POSTGAME:
|
||||
return ScriptVarScenarioAfter(SCENARIO_MAIN, 17, -1);
|
||||
case QUEST_UNLOCKED_EVOLUTIONS:
|
||||
return ScriptVarScenarioAfter(SCENARIO_MAIN, 18, 2);
|
||||
case QUEST_CAN_CHANGE_LEADER:
|
||||
return ScriptVarScenarioAfter(SCENARIO_MAIN, 18, 3);
|
||||
case QUEST_CAN_DEPOSIT_PARTNER:
|
||||
return ScriptVarScenarioAfter(SCENARIO_MAIN, 18, -1);
|
||||
case QUEST_UNK10:
|
||||
return ScriptVarScenarioAfter(SCENARIO_MAIN, 5, 4);
|
||||
case QUEST_UNK11: // Never checked? Same as above.
|
||||
return ScriptVarScenarioAfter(SCENARIO_MAIN, 5, 4);
|
||||
case QUEST_UNK12:
|
||||
return (!ScriptVarScenarioEqual(SCENARIO_MAIN, 11, 2) && !ScriptVarScenarioEqual(SCENARIO_MAIN, 11, 3));
|
||||
case QUEST_IN_WORLD_CALAMITY:
|
||||
return ScriptVarScenarioEqual(SCENARIO_MAIN, 16, 2);
|
||||
case QUEST_MAZE_14:
|
||||
return !ScriptVarScenarioBefore(SCENARIO_MAIN, 5, 7);
|
||||
case QUEST_MAZE_15:
|
||||
return !ScriptVarScenarioBefore(SCENARIO_MAIN, 15, 0);
|
||||
case QUEST_LEGEND_ZAPDOS:
|
||||
return ScriptVarScenarioAfter(SCENARIO_MAIN, 7, -1);
|
||||
case QUEST_LEGEND_MOLTRES:
|
||||
return ScriptVarScenarioAfter(SCENARIO_MAIN, 12, -1);
|
||||
case QUEST_LEGEND_ARTICUNO:
|
||||
return ScriptVarScenarioAfter(SCENARIO_MAIN, 13, -1);
|
||||
case QUEST_LEGEND_GROUDON:
|
||||
return ScriptVarScenarioAfter(SCENARIO_MAIN, 15, -1);
|
||||
case QUEST_LEGEND_RAYQUAZA:
|
||||
return ScriptVarScenarioAfter(SCENARIO_MAIN, 16, -1);
|
||||
case QUEST_LEGEND_KYOGRE:
|
||||
return ScriptVarScenarioAfter(SCENARIO_SUB2, 33, -1);
|
||||
case QUEST_LEGEND_LUGIA:
|
||||
return ScriptVarScenarioAfter(SCENARIO_SUB2, 34, -1);
|
||||
case QUEST_LEGEND_DEOXYS:
|
||||
return ScriptVarScenarioAfter(SCENARIO_SUB3, 36, -1);
|
||||
case QUEST_LEGEND_HO_OH:
|
||||
return ScriptVarScenarioAfter(SCENARIO_SUB4, 42, -1);
|
||||
case QUEST_LEGEND_MEWTWO:
|
||||
return ScriptVarScenarioAfter(SCENARIO_SUB5, 44, -1);
|
||||
case QUEST_LEGEND_MEW:
|
||||
return ScriptVarScenarioAfter(SCENARIO_SUB7, 49, -1);
|
||||
case QUEST_LEGEND_CELEBI:
|
||||
return RescueScenarioConquered(RESCUE_DUNGEON_PURITY_FOREST);
|
||||
case QUEST_LUCARIO_RANK: // Never checked?
|
||||
return GetRescueTeamRank() == LUCARIO_RANK;
|
||||
case 0x1d:
|
||||
case QUEST_COMPLETED_ALL_MAZES:
|
||||
return HasCompletedAllMazes();
|
||||
default:
|
||||
return FALSE;
|
||||
|
|
|
|||
|
|
@ -75,6 +75,7 @@ void sub_80980B4(s16 pokeID)
|
|||
{
|
||||
s32 pokeID_s32 = pokeID;
|
||||
s32 pokeID_s32_1 = pokeID_s32;
|
||||
|
||||
if (pokeID_s32 == MONSTER_DECOY)
|
||||
return;
|
||||
if (pokeID_s32 == MONSTER_STATUE)
|
||||
|
|
@ -87,13 +88,10 @@ void sub_80980B4(s16 pokeID)
|
|||
|
||||
bool8 sub_8098100(u8 param_1)
|
||||
{
|
||||
if (param_1 > 0x3f) {
|
||||
if (param_1 >= 64)
|
||||
return FALSE;
|
||||
}
|
||||
else
|
||||
{
|
||||
return (gUnknown_203B498->unk3C[param_1 / 32] & (1 << (param_1 % 32))) != 0;
|
||||
}
|
||||
|
||||
return (gUnknown_203B498->unk3C[param_1 / 32] & (1 << (param_1 % 32))) != 0;
|
||||
}
|
||||
|
||||
bool8 sub_8098134(s16 pokeID)
|
||||
|
|
@ -103,7 +101,7 @@ bool8 sub_8098134(s16 pokeID)
|
|||
|
||||
pokeID_s32 = pokeID;
|
||||
pokeID_s32_1 = pokeID_s32;
|
||||
return ((gUnknown_203B498->unk4[pokeID_s32 / 32] & (1 << (s16)(pokeID_s32_1 % 32))) != 0);
|
||||
return (gUnknown_203B498->unk4[pokeID_s32 / 32] & (1 << (s16)(pokeID_s32_1 % 32))) != 0;
|
||||
}
|
||||
|
||||
void SetTutorialFlag(s32 index)
|
||||
|
|
@ -113,12 +111,10 @@ void SetTutorialFlag(s32 index)
|
|||
|
||||
bool32 GetTutorialFlag(s32 index)
|
||||
{
|
||||
if (index > 0x1e) {
|
||||
if (index >= 31)
|
||||
return FALSE;
|
||||
}
|
||||
else {
|
||||
return (((gUnknown_203B498->unk54[index / 32]) & (1 << (index % 32))) != 0);
|
||||
}
|
||||
|
||||
return ((gUnknown_203B498->unk54[index / 32]) & (1 << (index % 32))) != 0;
|
||||
}
|
||||
|
||||
bool8 IsExclusivePokemonUnlocked(s32 pokeID)
|
||||
|
|
|
|||
|
|
@ -250,7 +250,7 @@ void CreateFriendActionMenu(void)
|
|||
sUnknown_203B2BC->unk16C[loopMax] = 1;
|
||||
}
|
||||
loopMax += 1;
|
||||
if(sub_80023E4(8) && !pokeStruct->isTeamLeader)
|
||||
if(CheckQuest(QUEST_CAN_CHANGE_LEADER) && !pokeStruct->isTeamLeader)
|
||||
{
|
||||
sUnknown_203B2BC->menuItems[loopMax].text = sMakeLeader;
|
||||
sUnknown_203B2BC->menuItems[loopMax].menuAction = FRIEND_AREA_ACTION_MENU_ACTION_MAKE_LEADER;
|
||||
|
|
@ -702,7 +702,7 @@ bool8 sub_8027D9C(Pokemon *pokeStruct)
|
|||
var1 = 1;
|
||||
if(var1 != 0)
|
||||
{
|
||||
if(!sub_80023E4(8))
|
||||
if(!CheckQuest(QUEST_CAN_CHANGE_LEADER))
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
|
|
@ -723,7 +723,7 @@ bool8 sub_8027DCC(Pokemon *pokeStruct)
|
|||
var1 = 1;
|
||||
if(var1 != 0)
|
||||
{
|
||||
if(sub_80023E4(8))
|
||||
if(CheckQuest(QUEST_CAN_CHANGE_LEADER))
|
||||
goto check;
|
||||
}
|
||||
else
|
||||
|
|
|
|||
|
|
@ -86,7 +86,7 @@ bool8 FriendList_Init(u32 r5, u32 windowId, DungeonPos *pos, u32 r10)
|
|||
case 4:
|
||||
sFriendList->unk18 = 1;
|
||||
sFriendList->unk15 = 1;
|
||||
if (!sub_80023E4(9)) {
|
||||
if (!CheckQuest(QUEST_CAN_DEPOSIT_PARTNER)) {
|
||||
sFriendList->unk16 = 1;
|
||||
}
|
||||
break;
|
||||
|
|
@ -365,7 +365,7 @@ bool8 sub_8024108(s32 param_1)
|
|||
}
|
||||
else if (param_1 == 4) {
|
||||
if (pokeStruct->isTeamLeader) continue;
|
||||
if (!sub_80023E4(9)) {
|
||||
if (!CheckQuest(QUEST_CAN_DEPOSIT_PARTNER)) {
|
||||
if (!IsMonPartner(pokeStruct)) return FALSE;
|
||||
if (PokemonFlag2(pokeStruct)) continue;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -705,7 +705,7 @@ static bool8 FriendListMenu_isOnTeam(Pokemon *pokeStruct)
|
|||
if (pokeStruct->isTeamLeader)
|
||||
return FALSE;
|
||||
|
||||
if (IsMonPartner(pokeStruct) && !sub_80023E4(8))
|
||||
if (IsMonPartner(pokeStruct) && !CheckQuest(QUEST_CAN_CHANGE_LEADER))
|
||||
return FALSE;
|
||||
|
||||
return TRUE;
|
||||
|
|
|
|||
|
|
@ -485,7 +485,7 @@ static s32 sub_80A7B94(s16 *a0)
|
|||
return -1;
|
||||
}
|
||||
|
||||
if (sub_80023E4(9)) {
|
||||
if (CheckQuest(QUEST_CAN_DEPOSIT_PARTNER)) {
|
||||
val = sub_808D6A4(sp);
|
||||
}
|
||||
else {
|
||||
|
|
@ -505,7 +505,7 @@ static s32 sub_80A7B94(s16 *a0)
|
|||
GetFriendAreaCapacity2(map, &fAreaCapacity, FALSE, FALSE);
|
||||
if (id < fAreaCapacity.maxPokemon) {
|
||||
Pokemon *monStrPtr = &gRecruitedPokemonRef->pokemon[fAreaCapacity.unk8 + id];
|
||||
if (sub_80023E4(9)) {
|
||||
if (CheckQuest(QUEST_CAN_DEPOSIT_PARTNER)) {
|
||||
if (PokemonExists(monStrPtr) && !monStrPtr->isTeamLeader) {
|
||||
return -1;
|
||||
}
|
||||
|
|
@ -561,7 +561,7 @@ s32 sub_80A7DDC(s16 *a0, s16 *speciesDst)
|
|||
return -1;
|
||||
}
|
||||
|
||||
if (sub_80023E4(9)) {
|
||||
if (CheckQuest(QUEST_CAN_DEPOSIT_PARTNER)) {
|
||||
val = sub_808D6A4(sp);
|
||||
}
|
||||
else {
|
||||
|
|
@ -583,7 +583,7 @@ s32 sub_80A7DDC(s16 *a0, s16 *speciesDst)
|
|||
GetFriendAreaCapacity2(map, &fAreaCapacity, FALSE, FALSE);
|
||||
if (id < fAreaCapacity.maxPokemon) {
|
||||
Pokemon *monStrPtr = &gRecruitedPokemonRef->pokemon[fAreaCapacity.unk8 + id];
|
||||
if (sub_80023E4(9)) {
|
||||
if (CheckQuest(QUEST_CAN_DEPOSIT_PARTNER)) {
|
||||
if (PokemonExists(monStrPtr) && !monStrPtr->isTeamLeader) {
|
||||
*speciesDst = monStrPtr->speciesNum;
|
||||
return -1;
|
||||
|
|
@ -1283,7 +1283,7 @@ Pokemon *sub_80A8D54(s32 a0)
|
|||
if (sub_8098F88())
|
||||
return NULL;
|
||||
|
||||
if (sub_80023E4(9)) {
|
||||
if (CheckQuest(QUEST_CAN_DEPOSIT_PARTNER)) {
|
||||
val = sub_808D6A4(spArray);
|
||||
}
|
||||
else {
|
||||
|
|
@ -1310,7 +1310,7 @@ Pokemon *sub_80A8D54(s32 a0)
|
|||
return NULL;
|
||||
|
||||
monPtr = &gRecruitedPokemonRef->pokemon[fAreaCapacity.unk8 + id];
|
||||
if (sub_80023E4(9)) {
|
||||
if (CheckQuest(QUEST_CAN_DEPOSIT_PARTNER)) {
|
||||
if (PokemonExists(monPtr) && !monPtr->isTeamLeader) {
|
||||
return monPtr;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -63,7 +63,6 @@ extern void sub_8095494(DungeonMailSeed *param_1, u8 index);
|
|||
// TODO: Move these externs to headers
|
||||
extern s16 sub_80A2654(s16 r0);
|
||||
extern bool8 sub_80048BC(void);
|
||||
extern u8 sub_80023E4(u32);
|
||||
extern bool8 sub_8099B94(void);
|
||||
extern void sub_8099768(void);
|
||||
extern void sub_809975C(void);
|
||||
|
|
@ -127,7 +126,7 @@ u32 xxx_script_related_8098468(s32 param_1)
|
|||
break;
|
||||
}
|
||||
ResetSoundEffectCounters();
|
||||
if (gUnknown_20398B9 == 0 && !sub_80023E4(0xd)) {
|
||||
if (gUnknown_20398B9 == 0 && !CheckQuest(QUEST_IN_WORLD_CALAMITY)) {
|
||||
FadeOutAllMusic(0x10);
|
||||
}
|
||||
gUnknown_2026E4E = 0x808;
|
||||
|
|
@ -521,7 +520,7 @@ bool8 sub_8098D80(u32 speed)
|
|||
gUnknown_20398AC = 1;
|
||||
gUnknown_20398B0 = speed;
|
||||
sub_809C730();
|
||||
if(!sub_80023E4(0xD))
|
||||
if(!CheckQuest(QUEST_IN_WORLD_CALAMITY))
|
||||
{
|
||||
FadeOutAllMusic(speed);
|
||||
}
|
||||
|
|
@ -538,7 +537,7 @@ bool8 sub_8098DCC(u32 speed)
|
|||
gUnknown_20398AC = 1;
|
||||
gUnknown_20398B0 = speed;
|
||||
sub_809C730();
|
||||
if(!sub_80023E4(0xD))
|
||||
if(!CheckQuest(QUEST_IN_WORLD_CALAMITY))
|
||||
{
|
||||
FadeOutAllMusic(speed);
|
||||
}
|
||||
|
|
@ -636,40 +635,47 @@ const char *GetCurrentGroundPlaceName(void)
|
|||
return GetGroundPlaceName(GetScriptVarValue(NULL, GROUND_PLACE));
|
||||
}
|
||||
|
||||
// Returns an enum GroundMapID
|
||||
static s16 sub_8098FCC(u32 unused)
|
||||
{
|
||||
s32 iVar4;
|
||||
s32 iVar5;
|
||||
s32 iVar6;
|
||||
const DungeonInfo *iVar3;
|
||||
s32 scriptDungeon;
|
||||
s32 scriptDungeon__;
|
||||
s32 scriptDungeon_;
|
||||
const DungeonInfo *di;
|
||||
|
||||
iVar5 = (s16)GetScriptVarValue(NULL,DUNGEON_ENTER);
|
||||
iVar6 = iVar5;
|
||||
if (iVar5 == -1) return 0xC;
|
||||
scriptDungeon__ = (s16)GetScriptVarValue(NULL,DUNGEON_ENTER);
|
||||
scriptDungeon_ = scriptDungeon__;
|
||||
if (scriptDungeon__ == -1)
|
||||
return MAP_TEAM_BASE_INSIDE;
|
||||
|
||||
if (iVar5 == 0x51)
|
||||
iVar4 = (s16)GetScriptVarValue(NULL,DUNGEON_ENTER_INDEX);
|
||||
else
|
||||
iVar4 = iVar6;
|
||||
if (scriptDungeon__ == SCRIPT_DUNGEON_81)
|
||||
scriptDungeon = (s16)GetScriptVarValue(NULL, DUNGEON_ENTER_INDEX);
|
||||
else
|
||||
scriptDungeon = scriptDungeon_;
|
||||
|
||||
iVar3 = GetDungeonInfo_80A2608(iVar4);
|
||||
if (gUnknown_20398B4 == 9) {
|
||||
return iVar3->unk2;
|
||||
}
|
||||
switch((s16)(iVar3->unk4 - 0xb2)) {
|
||||
case 0:
|
||||
if (ScriptVarScenarioAfter(SCENARIO_MAIN,2,-1) != 0) return 0xc;
|
||||
break;
|
||||
case 0xf:
|
||||
case 0x11:
|
||||
case 0x14:
|
||||
case 0x17:
|
||||
if (!sub_80023E4(5)) return 0xC;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
return iVar3->unk4;
|
||||
di = GetDungeonInfo_80A2608(scriptDungeon);
|
||||
if (gUnknown_20398B4 == 9)
|
||||
return di->unk2;
|
||||
|
||||
switch (di->unk4) {
|
||||
case MAP_TINY_WOODS_ENTRY: {
|
||||
if (ScriptVarScenarioAfter(SCENARIO_MAIN, 2, -1))
|
||||
return MAP_TEAM_BASE_INSIDE;
|
||||
break;
|
||||
}
|
||||
case MAP_LAPIS_CAVE_ENTRY:
|
||||
case MAP_MT_BLAZE_ENTRY:
|
||||
case MAP_FROSTY_FOREST_ENTRY:
|
||||
case MAP_MT_FREEZE_ENTRY: {
|
||||
if (!CheckQuest(QUEST_UNK5))
|
||||
return MAP_TEAM_BASE_INSIDE;
|
||||
break;
|
||||
}
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
return di->unk4;
|
||||
}
|
||||
|
||||
UNUSED static const char *sub_80990B8(void)
|
||||
|
|
@ -686,7 +692,7 @@ UNUSED static const char *sub_80990B8(void)
|
|||
static inline bool8 sub_80990EC_sub(struct DungeonSetupInfo *iVar1, u32 iVar2)
|
||||
{
|
||||
bool8 flag = FALSE;
|
||||
iVar1->sub0.unkB = 0;
|
||||
iVar1->sub0.missionKind = DUNGEON_MISSION_UNK0;
|
||||
|
||||
if ((u16)(iVar2 - 0x25) < 3)
|
||||
flag = TRUE;
|
||||
|
|
@ -737,10 +743,10 @@ u8 sub_80990EC(struct DungeonSetupInfo *param_1, s32 param_2)
|
|||
}
|
||||
break;
|
||||
case 4:
|
||||
param_1->sub0.unkB = 0;
|
||||
param_1->sub0.missionKind = DUNGEON_MISSION_UNK0;
|
||||
break;
|
||||
case 2:
|
||||
param_1->sub0.unkB = 2;
|
||||
param_1->sub0.missionKind = DUNGEON_MISSION_ACCEPTEDJOB_RELATED;
|
||||
break;
|
||||
}
|
||||
param_1->sub0.unk4 = 0;
|
||||
|
|
@ -785,7 +791,7 @@ void sub_809927C(u8 param_1)
|
|||
SetScriptVarValue(0x0,DUNGEON_ENTER,0x50);
|
||||
SetScriptVarValue(0x0,DUNGEON_ENTER_INDEX,gUnknown_2039950);
|
||||
sub_8095494(&gUnknown_20398C8.dungeonSeed,param_1);
|
||||
gUnknown_20398C8.sub0.unkB = 1;
|
||||
gUnknown_20398C8.sub0.missionKind = DUNGEON_MISSION_OUTONRESCUE;
|
||||
gUnknown_20398C8.sub0.unkC = 0;
|
||||
gUnknown_20398C8.sub0.unk4 = 0;
|
||||
gUnknown_20398C8.sub0.unkD = 0;
|
||||
|
|
|
|||
|
|
@ -372,7 +372,7 @@ s16 GetAdjustedGroundMap(s32 mapId)
|
|||
retMapId = (s16)(retMapId + ((GetScriptVarValue(NULL, BASE_KIND) * TEAM_BASE_MAPS_PER_SPECIES) + GetScriptVarValue(NULL, BASE_LEVEL)));
|
||||
break;
|
||||
case MAP_WHISCASH_POND:
|
||||
if (sub_80023E4(6)) {
|
||||
if (CheckQuest(QUEST_REACHED_POSTGAME)) {
|
||||
retMapId = MAP_WHISCASH_POND_OPEN;
|
||||
}
|
||||
break;
|
||||
|
|
|
|||
|
|
@ -943,7 +943,7 @@ s16 HandleAction(Action *action, const DebugLocation *debug)
|
|||
if (sub_80990EC(&unkStruct, dungeonEnter)) {
|
||||
s32 val;
|
||||
sub_8099220(&unkStruct, dungeonEnter);
|
||||
val = sub_80023E4(6);
|
||||
val = CheckQuest(QUEST_REACHED_POSTGAME);
|
||||
res = BufferDungeonRequirementsText(unkStruct.sub0.unk0.id, 0, gUnknown_203B4B0, val, FALSE);
|
||||
gUnknown_2039DA4 = res;
|
||||
switch (res) {
|
||||
|
|
@ -985,7 +985,7 @@ s16 HandleAction(Action *action, const DebugLocation *debug)
|
|||
s32 val;
|
||||
u32 res;
|
||||
ret = GetMailatIndex(GetScriptVarValue(NULL, 20));
|
||||
val = sub_80023E4(6);
|
||||
val = CheckQuest(QUEST_REACHED_POSTGAME);
|
||||
res = BufferDungeonRequirementsText(ret->dungeonSeed.location.id, 0, gUnknown_203B4B0, val, TRUE);
|
||||
gUnknown_2039DA4 = res;
|
||||
switch (res) {
|
||||
|
|
@ -2641,14 +2641,14 @@ static s32 ExecuteScriptCommand(Action *action)
|
|||
}
|
||||
break;
|
||||
}
|
||||
case 0xba: {
|
||||
case 0xba: { // JUMPIF_SCENE_GT
|
||||
if (ScriptVarScenarioAfter(curCmd.argShort, curCmd.arg1, curCmd.arg2)) {
|
||||
scriptData->script.ptr = FindLabel(action, (u8)curCmd.argByte);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case 0xbb: {
|
||||
if (sub_80023E4(curCmd.argShort)) {
|
||||
case 0xbb: { // JUMPIF_SCENARIOCHECK
|
||||
if (CheckQuest(curCmd.argShort)) {
|
||||
scriptData->script.ptr = FindLabel(action, (u8)curCmd.argByte);
|
||||
}
|
||||
break;
|
||||
|
|
@ -3014,7 +3014,7 @@ static s32 sub_80A14E8(Action *action, u8 idx, u32 r2, s32 r3)
|
|||
case 9:
|
||||
{
|
||||
u8 var;
|
||||
if (sub_80023E4(8) == 0) {
|
||||
if (CheckQuest(QUEST_CAN_CHANGE_LEADER) == 0) {
|
||||
var = sub_808D4B0();
|
||||
}
|
||||
else {
|
||||
|
|
@ -3936,9 +3936,9 @@ static u32 sub_80A25AC(u16 param_1)
|
|||
return param_1;
|
||||
if (param_1 == 50)
|
||||
return 50;
|
||||
if (!sub_80023E4(12))
|
||||
if (!CheckQuest(QUEST_UNK12))
|
||||
return 999;
|
||||
if (sub_80023E4(13))
|
||||
if (CheckQuest(QUEST_IN_WORLD_CALAMITY))
|
||||
return 19;
|
||||
if (param_1 != 1)
|
||||
return param_1;
|
||||
|
|
|
|||
|
|
@ -25,10 +25,10 @@
|
|||
#include "text_3.h"
|
||||
#include "text_util.h"
|
||||
|
||||
// Size: 0x27C
|
||||
struct LoadScreen
|
||||
{
|
||||
// size: 0x27c
|
||||
u32 currMenu;
|
||||
/* 0x000 */ u32 currMenu;
|
||||
MenuStruct unk4[4];
|
||||
WindowTemplates unk144;
|
||||
/* 0x1A4 */ u8 formattedTeamName[0x24];
|
||||
|
|
@ -45,26 +45,26 @@ extern unkStruct_203B484 *gUnknown_203B484;
|
|||
|
||||
u8 IsQuickSave(void);
|
||||
void DrawLoadScreenText(void);
|
||||
void sub_80397B4(void);
|
||||
static void DrawQuestIcons(void);
|
||||
|
||||
extern void sub_80920D8(u8 *);
|
||||
|
||||
const WindowTemplate gUnknown_80E75F8 = {
|
||||
0,
|
||||
0x03,
|
||||
0x00, 0x00,
|
||||
0x00, 0x00,
|
||||
0x00, 0x00,
|
||||
NULL
|
||||
0,
|
||||
0x03,
|
||||
0x00, 0x00,
|
||||
0x00, 0x00,
|
||||
0x00, 0x00,
|
||||
NULL
|
||||
};
|
||||
|
||||
const WindowTemplate gUnknown_80E7610 = {
|
||||
0,
|
||||
0x03,
|
||||
0x02, 0x02,
|
||||
0x1A, 0x0B,
|
||||
0x0B, 0x00,
|
||||
NULL
|
||||
0,
|
||||
0x03,
|
||||
0x02, 0x02,
|
||||
0x1A, 0x0B,
|
||||
0x0B, 0x00,
|
||||
NULL
|
||||
};
|
||||
|
||||
EWRAM_INIT MenuItem gUnknown_203B378[2] = {
|
||||
|
|
@ -78,16 +78,30 @@ EWRAM_INIT MenuItem gUnknown_203B378[2] = {
|
|||
}
|
||||
};
|
||||
|
||||
EWRAM_INIT u32 gUnknown_203B388[12] = {0xC, 0xC, 0xE, 0xE, 0xD, 0xE, 0xC, 0xD, 0xD, 0xB, 0xB, 0xB};
|
||||
EWRAM_INIT u32 gUnknown_203B3B8[12] = {0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x1A, 0x18, 0x1B, 0x16, 0x19, 0x17};
|
||||
EWRAM_INIT u32 gUnknown_203B388[12] = { 0xC, 0xC, 0xE, 0xE, 0xD, 0xE, 0xC, 0xD, 0xD, 0xB, 0xB, 0xB };
|
||||
|
||||
static EWRAM_INIT u32 sLegendaryQuestIDs[12] = {
|
||||
QUEST_LEGEND_ZAPDOS,
|
||||
QUEST_LEGEND_MOLTRES,
|
||||
QUEST_LEGEND_ARTICUNO,
|
||||
QUEST_LEGEND_GROUDON,
|
||||
QUEST_LEGEND_RAYQUAZA,
|
||||
QUEST_LEGEND_KYOGRE,
|
||||
QUEST_LEGEND_MEW,
|
||||
QUEST_LEGEND_HO_OH,
|
||||
QUEST_LEGEND_CELEBI,
|
||||
QUEST_LEGEND_LUGIA,
|
||||
QUEST_LEGEND_MEWTWO,
|
||||
QUEST_LEGEND_DEOXYS,
|
||||
};
|
||||
|
||||
const WindowTemplate gUnknown_80E762C = {
|
||||
0,
|
||||
0x03,
|
||||
0x02, 0x0F,
|
||||
0x13, 0x03,
|
||||
0x03, 0x00,
|
||||
NULL
|
||||
0,
|
||||
0x03,
|
||||
0x02, 0x0F,
|
||||
0x13, 0x03,
|
||||
0x03, 0x00,
|
||||
NULL
|
||||
};
|
||||
|
||||
const MenuItem gResumeQuicksaveMenuItems[3] =
|
||||
|
|
@ -279,7 +293,7 @@ void DrawLoadScreenText(void)
|
|||
PrintStringOnWindow(8,60,gHelperHeadingText,0,0); // Helper:
|
||||
|
||||
// Draw Team Name
|
||||
if (sub_80023E4(0)) {
|
||||
if (CheckQuest(QUEST_SET_TEAM_NAME)) {
|
||||
sub_80920D8(teamNameBuffer);
|
||||
}
|
||||
else {
|
||||
|
|
@ -362,7 +376,7 @@ void DrawLoadScreenText(void)
|
|||
}
|
||||
PrintStringOnWindow(64,60,gLoadScreen->formattedHelperInfo,0,0);
|
||||
|
||||
sub_80397B4(); // Draw event icons??
|
||||
DrawQuestIcons();
|
||||
sub_80073E0(0);
|
||||
}
|
||||
|
||||
|
|
@ -373,32 +387,31 @@ struct ClmkFileData
|
|||
/* 0x4 */ RGB *palette;
|
||||
};
|
||||
|
||||
void sub_80397B4(void)
|
||||
static void DrawQuestIcons(void)
|
||||
{
|
||||
OpenedFile *clmkFile;
|
||||
s32 index;
|
||||
s32 x;
|
||||
s32 y;
|
||||
OpenedFile *clmkFile;
|
||||
s32 i;
|
||||
s32 x;
|
||||
s32 y;
|
||||
|
||||
clmkFile = OpenFileAndGetFileDataPtr(gClmkpatFileName,&gTitleMenuFileArchive); // clmkpat
|
||||
clmkFile = OpenFileAndGetFileDataPtr(gClmkpatFileName, &gTitleMenuFileArchive); // clmkpat
|
||||
|
||||
for(index = 0; index < 64; index++)
|
||||
{
|
||||
SetBGPaletteBufferColorArray(index + 176, &((struct ClmkFileData *)(clmkFile->data))->palette[index]);
|
||||
}
|
||||
|
||||
x = 8;
|
||||
y = 0x49;
|
||||
|
||||
// Draw the 12 legendary icons
|
||||
for(index = 0; index < 12; index++)
|
||||
{
|
||||
if (sub_80023E4(gUnknown_203B3B8[index])) {
|
||||
sub_8007E20(0,x,y,0x10,0x10,(&((struct ClmkFileData *)(clmkFile->data))->pics[index * 32]), gUnknown_203B388[index]);
|
||||
x += 16;
|
||||
for (i = 0; i < 64; i++) {
|
||||
SetBGPaletteBufferColorArray(i + 176, &((struct ClmkFileData *)(clmkFile->data))->palette[i]);
|
||||
}
|
||||
}
|
||||
CloseFile(clmkFile);
|
||||
|
||||
x = 8;
|
||||
y = 73;
|
||||
|
||||
// Draw the 12 legendary icons
|
||||
for (i = 0; i < ARRAY_COUNT_INT(sLegendaryQuestIDs); i++) {
|
||||
if (CheckQuest(sLegendaryQuestIDs[i])) {
|
||||
sub_8007E20(0, x, y, 16, 16, (&((struct ClmkFileData *)(clmkFile->data))->pics[i * 32]), gUnknown_203B388[i]);
|
||||
x += 16;
|
||||
}
|
||||
}
|
||||
|
||||
CloseFile(clmkFile);
|
||||
}
|
||||
|
||||
bool8 IsQuickSave(void)
|
||||
|
|
|
|||
|
|
@ -593,7 +593,7 @@ static u32 RunGameMode_Async(u32 a0)
|
|||
|
||||
friendAreasSetup.friendAreasMapPtr = MemoryAlloc(sizeof(*friendAreasSetup.friendAreasMapPtr),8);
|
||||
friendAreasSetup.startingFriendAreaId = friendAreaId;
|
||||
friendAreasSetup.unk5 = sub_80023E4(9);
|
||||
friendAreasSetup.unk5 = CheckQuest(QUEST_CAN_DEPOSIT_PARTNER);
|
||||
ShowFriendAreasMap_Async(&friendAreasSetup);
|
||||
MemoryFree(friendAreasSetup.friendAreasMapPtr);
|
||||
if (friendAreasSetup.chosenAreaId != NUM_FRIEND_AREAS) {
|
||||
|
|
@ -627,7 +627,7 @@ static u32 RunGameMode_Async(u32 a0)
|
|||
|
||||
worldMapSetup.info.startLocation.id = DUNGEON_OUT_ON_RESCUE;
|
||||
sub_80011CC(&worldMapSetup.info.unk4, dungeonId);
|
||||
worldMapSetup.info.unk6C = worldMapSetup.info.unk4.unk5;
|
||||
worldMapSetup.info.canChangeLeader = worldMapSetup.info.unk4.canChangeLeader;
|
||||
switch ((s16) sub_80A2750(scriptDungeonId)) {
|
||||
case 1:
|
||||
if (sub_80990EC(&dungeonSetup.info, scriptDungeonId)) {
|
||||
|
|
@ -722,7 +722,7 @@ static u32 RunGameMode_Async(u32 a0)
|
|||
if (var == 0xF1207) {
|
||||
dungeonSetup.info.sub0.unkD = 1;
|
||||
dungeonSetup.info.sub0.unk4 = 1;
|
||||
dungeonSetup.info.sub0.unkB = 0;
|
||||
dungeonSetup.info.sub0.missionKind = DUNGEON_MISSION_UNK0;
|
||||
if (gUnknown_203B484->unk4.speciesNum != 0) {
|
||||
dungeonSetup.info.sub0.unkC = 1;
|
||||
dungeonSetup.info.mon = gUnknown_203B484->unk4;
|
||||
|
|
@ -1036,7 +1036,7 @@ static void sub_80011CC(DungeonSetupSubstruct *info, u8 dungId)
|
|||
|
||||
sub_80011E8(info);
|
||||
|
||||
info->unkB = 0;
|
||||
info->missionKind = DUNGEON_MISSION_UNK0;
|
||||
info->unk4 = 0;
|
||||
info->unkC = 0;
|
||||
info->unkD = 0;
|
||||
|
|
@ -1045,16 +1045,16 @@ static void sub_80011CC(DungeonSetupSubstruct *info, u8 dungId)
|
|||
// arm9.bin::0200CD1C
|
||||
static void sub_80011E8(DungeonSetupSubstruct *info)
|
||||
{
|
||||
info->unk5 = sub_80023E4(8);
|
||||
info->unk6 = sub_80023E4(3);
|
||||
info->unk8 = sub_80023E4(7);
|
||||
info->unk9 = sub_80023E4(0);
|
||||
info->unkA = sub_80023E4(5);
|
||||
info->canChangeLeader = CheckQuest(QUEST_CAN_CHANGE_LEADER);
|
||||
info->canRecruit = CheckQuest(QUEST_CAN_RECRUIT);
|
||||
info->unlockedEvolutions = CheckQuest(QUEST_UNLOCKED_EVOLUTIONS);
|
||||
info->hasInventory = CheckQuest(QUEST_SET_TEAM_NAME);
|
||||
info->unkA = CheckQuest(QUEST_UNK5);
|
||||
|
||||
if (sub_80023E4(24) && sub_80023E4(25) && sub_80023E4(26))
|
||||
info->unk7 = 1;
|
||||
if (CheckQuest(QUEST_LEGEND_HO_OH) && CheckQuest(QUEST_LEGEND_MEWTWO) && CheckQuest(QUEST_LEGEND_MEW))
|
||||
info->canRecruitRescueTeamMazeBosses = TRUE;
|
||||
else
|
||||
info->unk7 = 0;
|
||||
info->canRecruitRescueTeamMazeBosses = FALSE;
|
||||
}
|
||||
|
||||
// arm9.bin::0200CC4C
|
||||
|
|
|
|||
|
|
@ -393,7 +393,7 @@ static void PartyListMenu_CreateMenu1(void)
|
|||
}
|
||||
loopMax += 1;
|
||||
|
||||
if(sub_80023E4(8) && !pokeStruct->isTeamLeader)
|
||||
if(CheckQuest(QUEST_CAN_CHANGE_LEADER) && !pokeStruct->isTeamLeader)
|
||||
{
|
||||
sUnknown_203B2B8->unk16C[loopMax].text = sPartyMenuMakeLeader;
|
||||
sUnknown_203B2B8->unk16C[loopMax].menuAction = PARTY_LIST_MENU_MAKE_LEADER;
|
||||
|
|
@ -860,7 +860,7 @@ static bool8 sub_8026E88(Pokemon *r0)
|
|||
{
|
||||
flag = (r0->dungeonLocation.id == DUNGEON_JOIN_LOCATION_PARTNER);
|
||||
if(flag)
|
||||
if(!sub_80023E4(0x8))
|
||||
if(!CheckQuest(QUEST_CAN_CHANGE_LEADER))
|
||||
return FALSE;
|
||||
}
|
||||
else
|
||||
|
|
@ -878,7 +878,7 @@ static bool8 sub_8026EB8(Pokemon *r0)
|
|||
flag = (r0->dungeonLocation.id == DUNGEON_JOIN_LOCATION_PARTNER);
|
||||
if(flag)
|
||||
{
|
||||
if(sub_80023E4(0x8))
|
||||
if(CheckQuest(QUEST_CAN_CHANGE_LEADER))
|
||||
goto check;
|
||||
}
|
||||
else
|
||||
|
|
|
|||
|
|
@ -416,7 +416,7 @@ bool8 sub_803C110(s16 index)
|
|||
if (!sub_8098134(index) || index != GetBaseSpecies(index) || !sub_803C0DC(index))
|
||||
return FALSE;
|
||||
|
||||
if (!sub_80023E4(6)) {
|
||||
if (!CheckQuest(QUEST_REACHED_POSTGAME)) {
|
||||
psVar5 = &gUnknown_80E8126[0]; // TODO: Un-ugly this
|
||||
if (*psVar5 != MONSTER_NONE) {
|
||||
psVar6 = &gUnknown_80E8126[0];
|
||||
|
|
|
|||
|
|
@ -234,7 +234,7 @@ void ShowPokemonSummaryWindow(s32 which, s32 currSubWindowId, struct MonSummaryI
|
|||
sub_80073E0(windowId);
|
||||
}
|
||||
|
||||
void SetMonSummaryInfo(struct MonSummaryInfo *dst, struct Pokemon *pokemon, bool8 param_3)
|
||||
void SetMonSummaryInfo(struct MonSummaryInfo *dst, struct Pokemon *pokemon, bool8 unlockedEvolutions)
|
||||
{
|
||||
s32 index;
|
||||
|
||||
|
|
@ -284,15 +284,13 @@ void SetMonSummaryInfo(struct MonSummaryInfo *dst, struct Pokemon *pokemon, bool
|
|||
dst->unk44[0] = pokemon->unkC[0];
|
||||
dst->unk44[1] = pokemon->unkC[1];
|
||||
dst->IQSkills = pokemon->IQSkills;
|
||||
if (param_3) {
|
||||
dst->evoStringId = GetMonSummaryScreenEvoStringId(pokemon);
|
||||
}
|
||||
else {
|
||||
dst->evoStringId = EVO_STRING_EMPTY;
|
||||
}
|
||||
|
||||
for(index = 0; index < 0xC; index++)
|
||||
{
|
||||
if (unlockedEvolutions)
|
||||
dst->evoStringId = GetMonSummaryScreenEvoStringId(pokemon);
|
||||
else
|
||||
dst->evoStringId = EVO_STRING_EMPTY;
|
||||
|
||||
for (index = 0; index < MON_SUMMARY_UNK58_COUNT; index++) {
|
||||
dst->unk58[index] = 0;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -30,10 +30,10 @@ static void DisplayMissionObjectives(void);
|
|||
static void sub_8031A2C(void);
|
||||
static void sub_8031A84(void);
|
||||
|
||||
bool8 sub_80319A4(u8 param_1, u8 dungeon, s32 param_3)
|
||||
bool8 sub_80319A4(u8 dungeonMissionKind, u8 dungeon, s32 param_3)
|
||||
{
|
||||
sUnknown_203B330 = MemoryAlloc(sizeof(unkStruct_203B330), 8);
|
||||
sUnknown_203B330->unkC = param_1;
|
||||
sUnknown_203B330->dungeonMissionKind = dungeonMissionKind;
|
||||
sUnknown_203B330->dungeonIndex = dungeon;
|
||||
ResetTouchScreenMenuInput(&sUnknown_203B330->input);
|
||||
sUnknown_203B330->unk10 = param_3;
|
||||
|
|
@ -80,7 +80,7 @@ static void sub_8031A84(void)
|
|||
RestoreSavedWindows(&sUnknown_203B330->unk18);
|
||||
sUnknown_203B330->unk18.id[sUnknown_203B330->unk10] = sUnknown_80E1F18;
|
||||
|
||||
if (sUnknown_203B330->unkC == 2) {
|
||||
if (sUnknown_203B330->dungeonMissionKind == DUNGEON_MISSION_ACCEPTEDJOB_RELATED) {
|
||||
jobs = CountJobsinDungeon(sUnknown_203B330->dungeonIndex);
|
||||
if (jobs == 0)
|
||||
jobs = 1;
|
||||
|
|
@ -94,23 +94,16 @@ static void sub_8031A84(void)
|
|||
|
||||
static void DisplayMissionObjectives(void)
|
||||
{
|
||||
s32 yCoord;
|
||||
s32 jobSlotIdx;
|
||||
unkStruct_203B480 *mail;
|
||||
WonderMail *jobInfo;
|
||||
u8 buffer[100];
|
||||
volatile u8 local_94;
|
||||
u8 buffer1[100];
|
||||
s16 auStack44;
|
||||
s16 missionIndex;
|
||||
u8 local_test;
|
||||
|
||||
sub_80073B8(sUnknown_203B330->unk10);
|
||||
// Objectives
|
||||
PrintStringOnWindow(10, 0, sObjectives, sUnknown_203B330->unk10, 0);
|
||||
|
||||
switch (sUnknown_203B330->unkC) {
|
||||
case 1:
|
||||
switch (sUnknown_203B330->dungeonMissionKind) {
|
||||
case DUNGEON_MISSION_OUTONRESCUE: {
|
||||
unkStruct_203B480 *mail;
|
||||
u8 buffer[100];
|
||||
volatile u8 local_94;
|
||||
|
||||
sub_8099394((u8*)&local_94);
|
||||
mail = GetMailatIndex(local_94);
|
||||
sub_803B6B0(10, 16, 3, sUnknown_203B330->unk10);
|
||||
|
|
@ -121,15 +114,18 @@ static void DisplayMissionObjectives(void)
|
|||
sprintfStatic(buffer,sFmtRescue,GetMonSpecies(mail->clientSpecies));
|
||||
PrintStringOnWindow(40, 16, buffer, sUnknown_203B330->unk10, 0);
|
||||
break;
|
||||
case 2:
|
||||
}
|
||||
case DUNGEON_MISSION_ACCEPTEDJOB_RELATED: {
|
||||
if (CountJobsinDungeon(sUnknown_203B330->dungeonIndex) == 0)
|
||||
PrintStringOnWindow(10, 16, sJustGo, sUnknown_203B330->unk10, 0);
|
||||
else {
|
||||
yCoord = 16;
|
||||
s32 yCoord = 16;
|
||||
s32 jobSlotIdx;
|
||||
u8 buffer1[100];
|
||||
|
||||
// 8 Job Slots... check each of them
|
||||
for (jobSlotIdx = 0; jobSlotIdx < MAX_ACCEPTED_JOBS; jobSlotIdx++) {
|
||||
jobInfo = GetJobSlotInfo(jobSlotIdx);
|
||||
WonderMail *jobInfo = GetJobSlotInfo(jobSlotIdx);
|
||||
|
||||
if (jobInfo->dungeonSeed.location.id == sUnknown_203B330->dungeonIndex
|
||||
&& jobInfo->mailType != 0
|
||||
|
|
@ -168,9 +164,14 @@ static void DisplayMissionObjectives(void)
|
|||
}
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
case 0:
|
||||
default:
|
||||
}
|
||||
case DUNGEON_MISSION_UNK3:
|
||||
case DUNGEON_MISSION_UNK0:
|
||||
default: {
|
||||
s16 auStack44;
|
||||
s16 missionIndex;
|
||||
u8 local_test;
|
||||
|
||||
if (sub_80992E0(&auStack44, &missionIndex))
|
||||
PrintStringOnWindow(10, 16, GetCurrentMissionText(missionIndex), sUnknown_203B330->unk10, 0);
|
||||
else if (sub_8099360(&local_test) != 0)
|
||||
|
|
@ -178,6 +179,7 @@ static void DisplayMissionObjectives(void)
|
|||
else
|
||||
PrintStringOnWindow(10, 16, sRedQuestionMarks, sUnknown_203B330->unk10, 0);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
sub_80073E0(sUnknown_203B330->unk10);
|
||||
|
|
|
|||
|
|
@ -6,7 +6,6 @@
|
|||
#include "exclusive_pokemon.h"
|
||||
#include "code_80958E8.h"
|
||||
#include "code_80A26CC.h"
|
||||
#include "constants/rescue_dungeon_id.h"
|
||||
|
||||
// size: 0x8
|
||||
typedef struct MissionText
|
||||
|
|
@ -134,16 +133,14 @@ void sub_80973A8(s32 param_1, u32 param_2)
|
|||
}
|
||||
}
|
||||
|
||||
bool8 RescueScenarioConquered(s32 param_1)
|
||||
bool8 RescueScenarioConquered(s32 rescueDungeonID_)
|
||||
{
|
||||
s32 param1 = (s16) param_1;
|
||||
s32 rescueDungeonID = (s16) rescueDungeonID_;
|
||||
|
||||
if (param1 == RESCUE_DUNGEON_DUMMY) {
|
||||
if (rescueDungeonID == RESCUE_DUNGEON_DUMMY)
|
||||
return FALSE;
|
||||
}
|
||||
else {
|
||||
return (GetScriptVarArrayValue(NULL, RESCUE_SCENARIO_CONQUEST_LIST, (u16) param1) != FALSE);
|
||||
}
|
||||
|
||||
return (GetScriptVarArrayValue(NULL, RESCUE_SCENARIO_CONQUEST_LIST, (u16)rescueDungeonID) != FALSE);
|
||||
}
|
||||
|
||||
void sub_8097418(s32 index, bool32 param_2)
|
||||
|
|
|
|||
|
|
@ -127,7 +127,7 @@ u32 SaveRescueTeamInfo(u8 *param_1, u32 size)
|
|||
InitBitWriter(&auStack36, param_1, size);
|
||||
WriteBits(&auStack36, gRescueTeamInfoRef->teamName, 0x58);
|
||||
WriteBits(&auStack36, (u8 *)&gRescueTeamInfoRef->teamRankPts, 0x20);
|
||||
gRescueTeamInfoRef->isTeamRenamed = sub_80023E4(0);
|
||||
gRescueTeamInfoRef->isTeamRenamed = CheckQuest(QUEST_SET_TEAM_NAME);
|
||||
|
||||
if (gRescueTeamInfoRef->isTeamRenamed)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -132,7 +132,7 @@ void RunDungeon_Async(DungeonSetupStruct *setupPtr)
|
|||
gPlayerDotMapPosition.x = 100;
|
||||
|
||||
if (!r6) {
|
||||
gDungeon->unk644.unk34 = setupPtr->info.sub0.unkB;
|
||||
gDungeon->unk644.missionKind = setupPtr->info.sub0.missionKind;
|
||||
gDungeon->unk644.dungeonSeed = setupPtr->info.dungeonSeed;
|
||||
gDungeon->unk644.windTurns = GetTurnLimit(setupPtr->info.sub0.unk0.id);
|
||||
gDungeon->unk644.windPhase = 0;
|
||||
|
|
@ -140,11 +140,11 @@ void RunDungeon_Async(DungeonSetupStruct *setupPtr)
|
|||
}
|
||||
gDungeon->unk644.unk54 = 0;
|
||||
gDungeon->unk644.unk55 = 0;
|
||||
gDungeon->unk644.unk18 = setupPtr->info.sub0.unk5;
|
||||
gDungeon->unk644.unk16 = setupPtr->info.sub0.unk8;
|
||||
gDungeon->unk644.canRecruit = setupPtr->info.sub0.unk6;
|
||||
gDungeon->unk644.unk15 = setupPtr->info.sub0.unk7;
|
||||
gDungeon->unk644.hasInventory = setupPtr->info.sub0.unk9;
|
||||
gDungeon->unk644.canChangeLeader = setupPtr->info.sub0.canChangeLeader;
|
||||
gDungeon->unk644.unlockedEvolutions = setupPtr->info.sub0.unlockedEvolutions;
|
||||
gDungeon->unk644.canRecruit = setupPtr->info.sub0.canRecruit;
|
||||
gDungeon->unk644.canRecruitRescueTeamMazeBosses = setupPtr->info.sub0.canRecruitRescueTeamMazeBosses;
|
||||
gDungeon->unk644.hasInventory = setupPtr->info.sub0.hasInventory;
|
||||
gDungeon->unk644.unk19 = setupPtr->info.sub0.unkA;
|
||||
StopDungeonBGM();
|
||||
sub_803D4AC();
|
||||
|
|
@ -174,7 +174,7 @@ void RunDungeon_Async(DungeonSetupStruct *setupPtr)
|
|||
if (!r6) {
|
||||
gDungeon->unk181e8.allTilesRevealed = 1;
|
||||
gDungeon->unk181e8.unk1820C = 1;
|
||||
if (gDungeon->unk644.unk34 == 1) {
|
||||
if (gDungeon->unk644.missionKind == DUNGEON_MISSION_OUTONRESCUE) {
|
||||
gDungeon->unk644.dungeonLocation.id = setupPtr->info.dungeonSeed.location.id;
|
||||
gDungeon->unk644.dungeonLocation.floor = 1;
|
||||
}
|
||||
|
|
@ -186,7 +186,7 @@ void RunDungeon_Async(DungeonSetupStruct *setupPtr)
|
|||
EnforceMaxItemsAndMoney();
|
||||
}
|
||||
if (!r6) {
|
||||
if (gDungeon->unk644.unk34 == 1) {
|
||||
if (gDungeon->unk644.missionKind == DUNGEON_MISSION_OUTONRESCUE) {
|
||||
gDungeon->unk644.unk38 = setupPtr->info.dungeonSeed.seed;
|
||||
}
|
||||
else {
|
||||
|
|
@ -223,7 +223,7 @@ void RunDungeon_Async(DungeonSetupStruct *setupPtr)
|
|||
}
|
||||
|
||||
OpenDungeonPaletteFile();
|
||||
if (!r6 && gDungeon->unk644.unk34 == 1) {
|
||||
if (!r6 && gDungeon->unk644.missionKind == DUNGEON_MISSION_OUTONRESCUE) {
|
||||
if (sub_8099394(&sp)) {
|
||||
unkStruct_203B480 *mailStr = GetMailatIndex(sp);
|
||||
if (mailStr->rescuesAllowed) {
|
||||
|
|
@ -565,7 +565,7 @@ void RunDungeon_Async(DungeonSetupStruct *setupPtr)
|
|||
SetUpDungeonExitData(var, NULL, GetLeader());
|
||||
check = TRUE;
|
||||
}
|
||||
else if (gDungeon->unk644.unk34 == 1 && GetFloorType() == FLOOR_TYPE_RESCUE && gDungeon->unk644.unk10 == 2) {
|
||||
else if (gDungeon->unk644.missionKind == DUNGEON_MISSION_OUTONRESCUE && GetFloorType() == FLOOR_TYPE_RESCUE && gDungeon->unk644.unk10 == 2) {
|
||||
SetUpDungeonExitData(DUNGEON_EXIT_SUCCEEDED_IN_RESCUE_MISSION, NULL, GetLeader());
|
||||
if (gDungeon->unk644.stoleFromKecleon != 0) {
|
||||
IncrementThievingSuccesses();
|
||||
|
|
@ -612,7 +612,7 @@ void RunDungeon_Async(DungeonSetupStruct *setupPtr)
|
|||
sub_80095CC(1, 0x14);
|
||||
sub_803E13C();
|
||||
sub_800CDA8(4);
|
||||
if (gDungeon->unk6 == 0 && sub_8083C88(gDungeon->unk644.unk34)) {
|
||||
if (gDungeon->unk6 == 0 && sub_8083C88(gDungeon->unk644.missionKind)) {
|
||||
ShowDungeonClearedWindow();
|
||||
}
|
||||
|
||||
|
|
@ -630,10 +630,10 @@ void RunDungeon_Async(DungeonSetupStruct *setupPtr)
|
|||
}
|
||||
}
|
||||
else if (sub_8083C50()) {
|
||||
if (gDungeon->unk644.unk34 == 1) {
|
||||
if (gDungeon->unk644.missionKind == DUNGEON_MISSION_OUTONRESCUE) {
|
||||
setupPtr->info.unk7C = 4;
|
||||
}
|
||||
else if (gDungeon->unk644.unk34 == 0) {
|
||||
else if (gDungeon->unk644.missionKind == DUNGEON_MISSION_UNK0) {
|
||||
setupPtr->info.unk7C = 1;
|
||||
sub_8084424();
|
||||
}
|
||||
|
|
@ -689,7 +689,7 @@ bool8 sub_8043CE4(s32 dungeonId)
|
|||
|
||||
u8 GetFloorType(void)
|
||||
{
|
||||
if (gDungeon->unk644.unk34 == 1 && gDungeon->unk644.dungeonSeed.location.floor == gDungeon->unk644.dungeonLocation.floor)
|
||||
if (gDungeon->unk644.missionKind == DUNGEON_MISSION_OUTONRESCUE && gDungeon->unk644.dungeonSeed.location.floor == gDungeon->unk644.dungeonLocation.floor)
|
||||
return FLOOR_TYPE_RESCUE;
|
||||
else if (IsFloorwideFixedRoom())
|
||||
return FLOOR_TYPE_FIXED;
|
||||
|
|
|
|||
|
|
@ -713,7 +713,7 @@ const u8 *FormatString(const u8 *str, u8 *dst, u8 *dstMax, u16 flags)
|
|||
break;
|
||||
case 't':
|
||||
str++;
|
||||
if (sub_80023E4(0)) {
|
||||
if (CheckQuest(QUEST_SET_TEAM_NAME)) {
|
||||
sub_80920D8(sFormatBuffer_TeamName);
|
||||
}
|
||||
else {
|
||||
|
|
|
|||
|
|
@ -1556,7 +1556,7 @@ static bool8 sub_809B648(void)
|
|||
FinishWriteSavePak();
|
||||
return 0;
|
||||
case 0x10: {
|
||||
bool8 unkBool = (sub_80023E4(4) != 0);
|
||||
bool8 unkBool = (CheckQuest(QUEST_SQUARE_ASLEEP) != FALSE);
|
||||
ResetTextbox();
|
||||
if (CreateKangaskhanStorage(unkBool)) {
|
||||
sTextbox->unk418 = &gUnknown_81161C8;
|
||||
|
|
@ -1569,7 +1569,7 @@ static bool8 sub_809B648(void)
|
|||
sTextbox->unk418 = &gUnknown_81161D8;
|
||||
return 1;
|
||||
case 0x13: {
|
||||
bool8 unkBool = (sub_80023E4(4) != 0);
|
||||
bool8 unkBool = (CheckQuest(QUEST_SQUARE_ASLEEP) != FALSE);
|
||||
ResetTextbox();
|
||||
if (CreateFelicityBank(unkBool)) {
|
||||
sTextbox->unk418 = &gUnknown_81161E8;
|
||||
|
|
@ -1583,7 +1583,7 @@ static bool8 sub_809B648(void)
|
|||
case 0x17:
|
||||
case 0x18: {
|
||||
u8 var;
|
||||
bool8 unkBool = sub_80023E4(4);
|
||||
bool8 unkBool = CheckQuest(QUEST_SQUARE_ASLEEP);
|
||||
ResetTextbox();
|
||||
if (sTextbox->unk414 == 0x17) {
|
||||
var = (unkBool == 0) ? 0 : 1;
|
||||
|
|
@ -1605,7 +1605,7 @@ static bool8 sub_809B648(void)
|
|||
}
|
||||
}
|
||||
case 0x19: {
|
||||
bool8 unkBool = (sub_80023E4(4) != 0);
|
||||
bool8 unkBool = (CheckQuest(QUEST_SQUARE_ASLEEP) != FALSE);
|
||||
ResetTextbox();
|
||||
if (sub_801FB50(unkBool)) {
|
||||
sTextbox->unk418 = &gUnknown_8116208;
|
||||
|
|
@ -1646,7 +1646,7 @@ static bool8 sub_809B648(void)
|
|||
}
|
||||
return 0;
|
||||
case 0x1b: {
|
||||
bool8 unk = (sub_80023E4(4) != 0);
|
||||
bool8 unk = (CheckQuest(QUEST_SQUARE_ASLEEP) != FALSE);
|
||||
ResetTextbox();
|
||||
if (CreateWigglytuffShop(unk)) {
|
||||
sTextbox->unk418 = &gUnknown_8116218;
|
||||
|
|
@ -1739,7 +1739,7 @@ static bool8 sub_809B648(void)
|
|||
}
|
||||
case 0x24:
|
||||
if (sTextbox->unk420 == 1) {
|
||||
u32 uVar19 = sub_80023E4(4) == 0 ? 0 : 4;
|
||||
u32 uVar19 = CheckQuest(QUEST_SQUARE_ASLEEP) == FALSE ? 0 : 4;
|
||||
ResetTextbox();
|
||||
if (MakuhitaDojo_New(uVar19)) {
|
||||
return 1;
|
||||
|
|
@ -1770,7 +1770,7 @@ static bool8 sub_809B648(void)
|
|||
return 0;
|
||||
case 0x25: {
|
||||
s32 var = 1;
|
||||
if (sub_80023E4(4)) {
|
||||
if (CheckQuest(QUEST_SQUARE_ASLEEP)) {
|
||||
var = 5;
|
||||
}
|
||||
ResetTextbox();
|
||||
|
|
@ -1785,7 +1785,7 @@ static bool8 sub_809B648(void)
|
|||
}
|
||||
case 0x26: {
|
||||
s32 var = 2;
|
||||
if (sub_80023E4(4)) {
|
||||
if (CheckQuest(QUEST_SQUARE_ASLEEP)) {
|
||||
var = 6;
|
||||
}
|
||||
ResetTextbox();
|
||||
|
|
@ -1800,7 +1800,7 @@ static bool8 sub_809B648(void)
|
|||
}
|
||||
case 0x27: {
|
||||
s32 var = 3;
|
||||
if (sub_80023E4(4)) {
|
||||
if (CheckQuest(QUEST_SQUARE_ASLEEP)) {
|
||||
var = 7;
|
||||
}
|
||||
ResetTextbox();
|
||||
|
|
|
|||
|
|
@ -23,7 +23,7 @@ UNUSED static void nullsub_208(void)
|
|||
|
||||
bool8 sub_8097504(s16 mazeIndex)
|
||||
{
|
||||
s32 uVar3;
|
||||
s32 questID;
|
||||
s32 mazeIndex_ = Self_s16(mazeIndex); // Needed to match
|
||||
if (mazeIndex < 17) {
|
||||
switch (mazeIndex) {
|
||||
|
|
@ -31,7 +31,7 @@ bool8 sub_8097504(s16 mazeIndex)
|
|||
case 10:
|
||||
case 11:
|
||||
case 12:
|
||||
uVar3 = 14;
|
||||
questID = QUEST_MAZE_14;
|
||||
break;
|
||||
case 0:
|
||||
case 1:
|
||||
|
|
@ -39,7 +39,7 @@ bool8 sub_8097504(s16 mazeIndex)
|
|||
case 7:
|
||||
case 9:
|
||||
case 14:
|
||||
uVar3 = 15;
|
||||
questID = QUEST_MAZE_15;
|
||||
break;
|
||||
case 3:
|
||||
case 4:
|
||||
|
|
@ -47,7 +47,7 @@ bool8 sub_8097504(s16 mazeIndex)
|
|||
case 8:
|
||||
return TRUE;
|
||||
case 13:
|
||||
uVar3 = 6;
|
||||
questID = QUEST_REACHED_POSTGAME;
|
||||
break;
|
||||
default:
|
||||
return TRUE;
|
||||
|
|
@ -57,15 +57,13 @@ bool8 sub_8097504(s16 mazeIndex)
|
|||
if (mazeIndex_ > 22) return FALSE;
|
||||
if (mazeIndex_ == 22) return FALSE;
|
||||
if (mazeIndex_ == 21) return FALSE;
|
||||
uVar3 = 6;
|
||||
questID = QUEST_REACHED_POSTGAME;
|
||||
}
|
||||
|
||||
if (!sub_80023E4(uVar3)) {
|
||||
if (!CheckQuest(questID))
|
||||
return FALSE;
|
||||
}
|
||||
else {
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool8 IsMazeCompleted(s16 mazeIndex)
|
||||
|
|
|
|||
|
|
@ -198,7 +198,7 @@ static s32 sub_8021664(void)
|
|||
counter++;
|
||||
break;
|
||||
case UNLOCK_SHOP_POST_GAME:
|
||||
if (sub_80023E4(6)) {
|
||||
if (CheckQuest(QUEST_REACHED_POSTGAME)) {
|
||||
sWigglytuffShop1Work->friendAreas[counter] = i;
|
||||
counter++;
|
||||
}
|
||||
|
|
@ -233,7 +233,7 @@ bool8 sub_8021700(u32 kind)
|
|||
case UNLOCK_SHOP_STORY:
|
||||
return FALSE;
|
||||
case UNLOCK_SHOP_POST_GAME:
|
||||
if (sub_80023E4(6))
|
||||
if (CheckQuest(QUEST_REACHED_POSTGAME))
|
||||
return FALSE;
|
||||
break;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -279,7 +279,7 @@ static void UpdateWigglytuffDialogue(void)
|
|||
else {
|
||||
switch (GetFriendAreaUnlockCondition(sWigglytuffShop3Work->chosenFriendArea)) {
|
||||
case UNLOCK_SHOP_POST_GAME:
|
||||
if (sub_80023E4(6) != 0)
|
||||
if (CheckQuest(QUEST_REACHED_POSTGAME))
|
||||
sWigglytuffShop3Work->fallbackState = WIGGLYTUFF_CHECK_AGAIN;
|
||||
else
|
||||
sWigglytuffShop3Work->fallbackState = WIGGLYTUFF_CHECK_POST_GAME;
|
||||
|
|
|
|||
|
|
@ -145,7 +145,7 @@ void sub_802B3E0(void)
|
|||
|
||||
switch(sUnknown_203B2C8->currState) {
|
||||
case INIT_STATE:
|
||||
if (sub_80023E4(0)) {
|
||||
if (CheckQuest(QUEST_SET_TEAM_NAME)) {
|
||||
// Copy Team Name to buffer
|
||||
sub_80920D8(teamNameBuffer);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -98,7 +98,7 @@ void ShowWorldMap_Async(struct WorldMapSetupStruct *setupPtr)
|
|||
speciesId = 0;
|
||||
}
|
||||
|
||||
dungeonEnter = BufferDungeonRequirementsText(setupPtr->info.unk4.unk0.id, speciesId, text, setupPtr->info.unk6C, FALSE);
|
||||
dungeonEnter = BufferDungeonRequirementsText(setupPtr->info.unk4.unk0.id, speciesId, text, setupPtr->info.canChangeLeader, FALSE);
|
||||
if (dungeonEnter == DUNGEON_REQUIREMENTS_PASS) {
|
||||
setupPtr->dungeonEntered = TRUE;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -9,15 +9,15 @@
|
|||
|
||||
void PlayFriendAreasMapBGM(void)
|
||||
{
|
||||
if (sub_80023E4(13))
|
||||
if (CheckQuest(QUEST_IN_WORLD_CALAMITY))
|
||||
StartNewBGM(MUS_WORLD_CALAMITY);
|
||||
else if (sub_80023E4(12))
|
||||
else if (CheckQuest(QUEST_UNK12))
|
||||
StartNewBGM(MUS_POKEMON_SQUARE);
|
||||
}
|
||||
|
||||
void PlayWorldMapBGM(void)
|
||||
{
|
||||
if (sub_80023E4(13))
|
||||
if (CheckQuest(QUEST_IN_WORLD_CALAMITY))
|
||||
StartNewBGM(MUS_WORLD_CALAMITY);
|
||||
else
|
||||
StartNewBGM(MUS_POKEMON_SQUARE);
|
||||
|
|
@ -25,7 +25,7 @@ void PlayWorldMapBGM(void)
|
|||
|
||||
void FadeOutFriendAreasMapBGM(void)
|
||||
{
|
||||
if (!sub_80023E4(13))
|
||||
if (!CheckQuest(QUEST_IN_WORLD_CALAMITY))
|
||||
FadeOutBGM(30);
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user