Split quest_log.c
This commit is contained in:
+2
-2
@@ -794,13 +794,13 @@ const u8 *BattleSetup_ConfigureTrainerBattle(const u8 *data)
|
||||
SetMapVarsToTrainer();
|
||||
return EventScript_TryDoDoubleTrainerBattle;
|
||||
case TRAINER_BATTLE_REMATCH_DOUBLE:
|
||||
sub_811231C();
|
||||
FinishRecordingQuestLogScene();
|
||||
TrainerBattleLoadArgs(sDoubleBattleParams, data);
|
||||
SetMapVarsToTrainer();
|
||||
gTrainerBattleOpponent_A = GetRematchTrainerId(gTrainerBattleOpponent_A);
|
||||
return EventScript_TryDoDoubleRematchBattle;
|
||||
case TRAINER_BATTLE_REMATCH:
|
||||
sub_811231C();
|
||||
FinishRecordingQuestLogScene();
|
||||
TrainerBattleLoadArgs(sOrdinaryBattleParams, data);
|
||||
SetMapVarsToTrainer();
|
||||
gTrainerBattleOpponent_A = GetRematchTrainerId(gTrainerBattleOpponent_A);
|
||||
|
||||
+1
-1
@@ -193,7 +193,7 @@ static void Task_DiplomaReturnToOverworld(u8 taskId)
|
||||
DestroyTask(taskId);
|
||||
FreeAllWindowBuffers();
|
||||
FREE_AND_SET_NULL(gDiploma);
|
||||
SetMainCallback2(sub_80568FC);
|
||||
SetMainCallback2(CB2_ReturnToFieldFromDiploma);
|
||||
}
|
||||
|
||||
static void DiplomaBgInit(void)
|
||||
|
||||
@@ -1085,7 +1085,7 @@ void HandleBoulderActivateVictoryRoadSwitch(u16 x, u16 y)
|
||||
{
|
||||
if (events[i].x + 7 == x && events[i].y + 7 == y)
|
||||
{
|
||||
QuestLog_OnInteractionWithSpecialNpc();
|
||||
QuestLog_CutRecording();
|
||||
ScriptContext1_SetupScript(events[i].script);
|
||||
ScriptContext2_Enable();
|
||||
}
|
||||
|
||||
+5
-5
@@ -1105,7 +1105,7 @@ void FieldCB_FallWarpExit(void)
|
||||
{
|
||||
Overworld_PlaySpecialMapMusic();
|
||||
WarpFadeInScreen();
|
||||
sub_8111CF0();
|
||||
QuestLog_DrawPreviouslyOnQuestHeaderIfInPlaybackMode();
|
||||
ScriptContext2_Enable();
|
||||
FreezeObjectEvents();
|
||||
CreateTask(Task_FallWarpFieldEffect, 0);
|
||||
@@ -1409,7 +1409,7 @@ static void FieldCB_EscalatorWarpIn(void)
|
||||
{
|
||||
Overworld_PlaySpecialMapMusic();
|
||||
WarpFadeInScreen();
|
||||
sub_8111CF0();
|
||||
QuestLog_DrawPreviouslyOnQuestHeaderIfInPlaybackMode();
|
||||
ScriptContext2_Enable();
|
||||
FreezeObjectEvents();
|
||||
CreateTask(Task_EscalatorWarpInFieldEffect, 0);
|
||||
@@ -1819,7 +1819,7 @@ static void FieldCB_LavaridgeGymB1FWarpExit(void)
|
||||
{
|
||||
Overworld_PlaySpecialMapMusic();
|
||||
WarpFadeInScreen();
|
||||
sub_8111CF0();
|
||||
QuestLog_DrawPreviouslyOnQuestHeaderIfInPlaybackMode();
|
||||
ScriptContext2_Enable();
|
||||
gFieldCallback = NULL;
|
||||
CreateTask(Task_LavaridgeGymB1FWarpExit, 0);
|
||||
@@ -2186,7 +2186,7 @@ static void FieldCallback_EscapeRopeExit(void)
|
||||
{
|
||||
Overworld_PlaySpecialMapMusic();
|
||||
WarpFadeInScreen();
|
||||
sub_8111CF0();
|
||||
QuestLog_DrawPreviouslyOnQuestHeaderIfInPlaybackMode();
|
||||
ScriptContext2_Enable();
|
||||
FreezeObjectEvents();
|
||||
gFieldCallback = NULL;
|
||||
@@ -2350,7 +2350,7 @@ static void FieldCallback_TeleportIn(void)
|
||||
{
|
||||
Overworld_PlaySpecialMapMusic();
|
||||
WarpFadeInScreen();
|
||||
sub_8111CF0();
|
||||
QuestLog_DrawPreviouslyOnQuestHeaderIfInPlaybackMode();
|
||||
ScriptContext2_Enable();
|
||||
FreezeObjectEvents();
|
||||
gFieldCallback = NULL;
|
||||
|
||||
@@ -288,7 +288,7 @@ static void sub_807DF4C(bool8 a0)
|
||||
void FieldCB_DefaultWarpExit(void)
|
||||
{
|
||||
Overworld_PlaySpecialMapMusic();
|
||||
sub_8111CF0();
|
||||
QuestLog_DrawPreviouslyOnQuestHeaderIfInPlaybackMode();
|
||||
sub_807DE78(FALSE);
|
||||
ScriptContext2_Enable();
|
||||
}
|
||||
@@ -296,7 +296,7 @@ void FieldCB_DefaultWarpExit(void)
|
||||
void FieldCB_WarpExitFadeFromBlack(void)
|
||||
{
|
||||
Overworld_PlaySpecialMapMusic();
|
||||
sub_8111CF0();
|
||||
QuestLog_DrawPreviouslyOnQuestHeaderIfInPlaybackMode();
|
||||
sub_807DE78(TRUE);
|
||||
ScriptContext2_Enable();
|
||||
}
|
||||
@@ -305,7 +305,7 @@ static void FieldCB_TeleportWarpIn(void)
|
||||
{
|
||||
Overworld_PlaySpecialMapMusic();
|
||||
WarpFadeInScreen();
|
||||
sub_8111CF0();
|
||||
QuestLog_DrawPreviouslyOnQuestHeaderIfInPlaybackMode();
|
||||
PlaySE(SE_TK_WARPOUT);
|
||||
CreateTask(Task_TeleportWarpIn, 10);
|
||||
ScriptContext2_Enable();
|
||||
|
||||
+72
-72
@@ -95,7 +95,7 @@ static u8 *const sStringVarPtrs[] = {
|
||||
|
||||
void ShowDiploma(void)
|
||||
{
|
||||
QuestLog_OnInteractionWithSpecialNpc();
|
||||
QuestLog_CutRecording();
|
||||
SetMainCallback2(CB2_ShowDiploma);
|
||||
ScriptContext2_Enable();
|
||||
}
|
||||
@@ -187,7 +187,7 @@ u8 GetLeadMonFriendship(void)
|
||||
|
||||
void ShowTownMap(void)
|
||||
{
|
||||
QuestLog_OnInteractionWithSpecialNpc();
|
||||
QuestLog_CutRecording();
|
||||
sub_80BFF50(1, CB2_ReturnToFieldContinueScriptPlayMapMusic);
|
||||
}
|
||||
|
||||
@@ -1775,18 +1775,18 @@ bool8 DoesPlayerPartyContainSpecies(void)
|
||||
}
|
||||
|
||||
static const u8 sMartMaps[][3] = {
|
||||
{MAP_GROUP(VIRIDIAN_CITY_MART), MAP_NUM(VIRIDIAN_CITY_MART), 1},
|
||||
{MAP_GROUP(PEWTER_CITY_MART), MAP_NUM(PEWTER_CITY_MART), 3},
|
||||
{MAP_GROUP(CERULEAN_CITY_MART), MAP_NUM(CERULEAN_CITY_MART), 1},
|
||||
{MAP_GROUP(LAVENDER_TOWN_MART), MAP_NUM(LAVENDER_TOWN_MART), 1},
|
||||
{MAP_GROUP(VERMILION_CITY_MART), MAP_NUM(VERMILION_CITY_MART), 1},
|
||||
{MAP_GROUP(FUCHSIA_CITY_MART), MAP_NUM(FUCHSIA_CITY_MART), 1},
|
||||
{MAP_GROUP(CINNABAR_ISLAND_MART), MAP_NUM(CINNABAR_ISLAND_MART), 1},
|
||||
{MAP_GROUP(SAFFRON_CITY_MART), MAP_NUM(SAFFRON_CITY_MART), 1},
|
||||
{MAP_GROUP(THREE_ISLAND_MART), MAP_NUM(THREE_ISLAND_MART), 1},
|
||||
{MAP_GROUP(FOUR_ISLAND_MART), MAP_NUM(FOUR_ISLAND_MART), 1},
|
||||
{MAP_GROUP(SEVEN_ISLAND_MART), MAP_NUM(SEVEN_ISLAND_MART), 1},
|
||||
{MAP_GROUP(SIX_ISLAND_MART), MAP_NUM(SIX_ISLAND_MART), 1}
|
||||
{MAP(VIRIDIAN_CITY_MART), 1},
|
||||
{MAP(PEWTER_CITY_MART), 3},
|
||||
{MAP(CERULEAN_CITY_MART), 1},
|
||||
{MAP(LAVENDER_TOWN_MART), 1},
|
||||
{MAP(VERMILION_CITY_MART), 1},
|
||||
{MAP(FUCHSIA_CITY_MART), 1},
|
||||
{MAP(CINNABAR_ISLAND_MART), 1},
|
||||
{MAP(SAFFRON_CITY_MART), 1},
|
||||
{MAP(THREE_ISLAND_MART), 1},
|
||||
{MAP(FOUR_ISLAND_MART), 1},
|
||||
{MAP(SEVEN_ISLAND_MART), 1},
|
||||
{MAP(SIX_ISLAND_MART), 1}
|
||||
};
|
||||
|
||||
u8 GetMartClerkObjectId(void)
|
||||
@@ -1811,57 +1811,57 @@ static const struct {
|
||||
u16 grp2;
|
||||
u16 num2;
|
||||
} sInsideOutsidePairs[51] = {
|
||||
{MAP_GROUP(PALLET_TOWN_PLAYERS_HOUSE_1F), MAP_NUM(PALLET_TOWN_PLAYERS_HOUSE_1F), MAP_GROUP(PALLET_TOWN), MAP_NUM(PALLET_TOWN)},
|
||||
{MAP_GROUP(PALLET_TOWN_PROFESSOR_OAKS_LAB), MAP_NUM(PALLET_TOWN_PROFESSOR_OAKS_LAB), MAP_GROUP(PALLET_TOWN), MAP_NUM(PALLET_TOWN)},
|
||||
{MAP_GROUP(VIRIDIAN_CITY_GYM), MAP_NUM(VIRIDIAN_CITY_GYM), MAP_GROUP(VIRIDIAN_CITY), MAP_NUM(VIRIDIAN_CITY)},
|
||||
{MAP_GROUP(ROUTE22_NORTH_ENTRANCE), MAP_NUM(ROUTE22_NORTH_ENTRANCE), MAP_GROUP(ROUTE22), MAP_NUM(ROUTE22)},
|
||||
{MAP_GROUP(ROUTE22_NORTH_ENTRANCE), MAP_NUM(ROUTE22_NORTH_ENTRANCE), MAP_GROUP(ROUTE23), MAP_NUM(ROUTE23)},
|
||||
{MAP_GROUP(VIRIDIAN_FOREST), MAP_NUM(VIRIDIAN_FOREST), MAP_GROUP(ROUTE2_VIRIDIAN_FOREST_SOUTH_ENTRANCE), MAP_NUM(ROUTE2_VIRIDIAN_FOREST_SOUTH_ENTRANCE)},
|
||||
{MAP_GROUP(VIRIDIAN_FOREST), MAP_NUM(VIRIDIAN_FOREST), MAP_GROUP(ROUTE2_VIRIDIAN_FOREST_NORTH_ENTRANCE), MAP_NUM(ROUTE2_VIRIDIAN_FOREST_NORTH_ENTRANCE)},
|
||||
{MAP_GROUP(PEWTER_CITY_MUSEUM_1F), MAP_NUM(PEWTER_CITY_MUSEUM_1F), MAP_GROUP(PEWTER_CITY), MAP_NUM(PEWTER_CITY)},
|
||||
{MAP_GROUP(PEWTER_CITY_GYM), MAP_NUM(PEWTER_CITY_GYM), MAP_GROUP(PEWTER_CITY), MAP_NUM(PEWTER_CITY)},
|
||||
{MAP_GROUP(MT_MOON_1F), MAP_NUM(MT_MOON_1F), MAP_GROUP(ROUTE4), MAP_NUM(ROUTE4)},
|
||||
{MAP_GROUP(MT_MOON_B1F), MAP_NUM(MT_MOON_B1F), MAP_GROUP(ROUTE4), MAP_NUM(ROUTE4)},
|
||||
{MAP_GROUP(CERULEAN_CITY_GYM), MAP_NUM(CERULEAN_CITY_GYM), MAP_GROUP(CERULEAN_CITY), MAP_NUM(CERULEAN_CITY)},
|
||||
{MAP_GROUP(CERULEAN_CITY_BIKE_SHOP), MAP_NUM(CERULEAN_CITY_BIKE_SHOP), MAP_GROUP(CERULEAN_CITY), MAP_NUM(CERULEAN_CITY)},
|
||||
{MAP_GROUP(ROUTE25_SEA_COTTAGE), MAP_NUM(ROUTE25_SEA_COTTAGE), MAP_GROUP(ROUTE25), MAP_NUM(ROUTE25)},
|
||||
{MAP_GROUP(ROUTE5_POKEMON_DAY_CARE), MAP_NUM(ROUTE5_POKEMON_DAY_CARE), MAP_GROUP(ROUTE5), MAP_NUM(ROUTE5)},
|
||||
{MAP_GROUP(UNDERGROUND_PATH_NORTH_ENTRANCE), MAP_NUM(UNDERGROUND_PATH_NORTH_ENTRANCE), MAP_GROUP(ROUTE5), MAP_NUM(ROUTE5)},
|
||||
{MAP_GROUP(UNDERGROUND_PATH_SOUTH_ENTRANCE), MAP_NUM(UNDERGROUND_PATH_SOUTH_ENTRANCE), MAP_GROUP(ROUTE6), MAP_NUM(ROUTE6)},
|
||||
{MAP_GROUP(VERMILION_CITY_POKEMON_FAN_CLUB), MAP_NUM(VERMILION_CITY_POKEMON_FAN_CLUB), MAP_GROUP(VERMILION_CITY), MAP_NUM(VERMILION_CITY)},
|
||||
{MAP_GROUP(VERMILION_CITY_GYM), MAP_NUM(VERMILION_CITY_GYM), MAP_GROUP(VERMILION_CITY), MAP_NUM(VERMILION_CITY)},
|
||||
{MAP_GROUP(SSANNE_1F_CORRIDOR), MAP_NUM(SSANNE_1F_CORRIDOR), MAP_GROUP(VERMILION_CITY), MAP_NUM(VERMILION_CITY)},
|
||||
{MAP_GROUP(DIGLETTS_CAVE_NORTH_ENTRANCE), MAP_NUM(DIGLETTS_CAVE_NORTH_ENTRANCE), MAP_GROUP(ROUTE2), MAP_NUM(ROUTE2)},
|
||||
{MAP_GROUP(DIGLETTS_CAVE_SOUTH_ENTRANCE), MAP_NUM(DIGLETTS_CAVE_SOUTH_ENTRANCE), MAP_GROUP(ROUTE11), MAP_NUM(ROUTE11)},
|
||||
{MAP_GROUP(ROCK_TUNNEL_1F), MAP_NUM(ROCK_TUNNEL_1F), MAP_GROUP(ROUTE10), MAP_NUM(ROUTE10)},
|
||||
{MAP_GROUP(ROCK_TUNNEL_1F), MAP_NUM(ROCK_TUNNEL_1F), MAP_GROUP(ROUTE10), MAP_NUM(ROUTE10)},
|
||||
{MAP_GROUP(POWER_PLANT), MAP_NUM(POWER_PLANT), MAP_GROUP(ROUTE10), MAP_NUM(ROUTE10)},
|
||||
{MAP_GROUP(POKEMON_TOWER_1F), MAP_NUM(POKEMON_TOWER_1F), MAP_GROUP(LAVENDER_TOWN), MAP_NUM(LAVENDER_TOWN)},
|
||||
{MAP_GROUP(LAVENDER_TOWN_VOLUNTEER_POKEMON_HOUSE), MAP_NUM(LAVENDER_TOWN_VOLUNTEER_POKEMON_HOUSE), MAP_GROUP(LAVENDER_TOWN), MAP_NUM(LAVENDER_TOWN)},
|
||||
{MAP_GROUP(LAVENDER_TOWN_HOUSE2), MAP_NUM(LAVENDER_TOWN_HOUSE2), MAP_GROUP(LAVENDER_TOWN), MAP_NUM(LAVENDER_TOWN)},
|
||||
{MAP_GROUP(UNDERGROUND_PATH_EAST_ENTRANCE), MAP_NUM(UNDERGROUND_PATH_EAST_ENTRANCE), MAP_GROUP(ROUTE8), MAP_NUM(ROUTE8)},
|
||||
{MAP_GROUP(UNDERGROUND_PATH_WEST_ENTRANCE), MAP_NUM(UNDERGROUND_PATH_WEST_ENTRANCE), MAP_GROUP(ROUTE7), MAP_NUM(ROUTE7)},
|
||||
{MAP_GROUP(CELADON_CITY_DEPARTMENT_STORE_1F), MAP_NUM(CELADON_CITY_DEPARTMENT_STORE_1F), MAP_GROUP(CELADON_CITY), MAP_NUM(CELADON_CITY)},
|
||||
{MAP_GROUP(CELADON_CITY_CONDOMINIUMS_1F), MAP_NUM(CELADON_CITY_CONDOMINIUMS_1F), MAP_GROUP(CELADON_CITY), MAP_NUM(CELADON_CITY)},
|
||||
{MAP_GROUP(CELADON_CITY_GAME_CORNER), MAP_NUM(CELADON_CITY_GAME_CORNER), MAP_GROUP(CELADON_CITY), MAP_NUM(CELADON_CITY)},
|
||||
{MAP_GROUP(CELADON_CITY_GYM), MAP_NUM(CELADON_CITY_GYM), MAP_GROUP(CELADON_CITY), MAP_NUM(CELADON_CITY)},
|
||||
{MAP_GROUP(CELADON_CITY_RESTAURANT), MAP_NUM(CELADON_CITY_RESTAURANT), MAP_GROUP(CELADON_CITY), MAP_NUM(CELADON_CITY)},
|
||||
{MAP_GROUP(ROCKET_HIDEOUT_B1F), MAP_NUM(ROCKET_HIDEOUT_B1F), MAP_GROUP(CELADON_CITY_GAME_CORNER), MAP_NUM(CELADON_CITY_GAME_CORNER)},
|
||||
{MAP_GROUP(SAFARI_ZONE_CENTER), MAP_NUM(SAFARI_ZONE_CENTER), MAP_GROUP(FUCHSIA_CITY_SAFARI_ZONE_ENTRANCE), MAP_NUM(FUCHSIA_CITY_SAFARI_ZONE_ENTRANCE)},
|
||||
{MAP_GROUP(FUCHSIA_CITY_GYM), MAP_NUM(FUCHSIA_CITY_GYM), MAP_GROUP(FUCHSIA_CITY), MAP_NUM(FUCHSIA_CITY)},
|
||||
{MAP_GROUP(FUCHSIA_CITY_WARDENS_HOUSE), MAP_NUM(FUCHSIA_CITY_WARDENS_HOUSE), MAP_GROUP(FUCHSIA_CITY), MAP_NUM(FUCHSIA_CITY)},
|
||||
{MAP_GROUP(SAFFRON_CITY_DOJO), MAP_NUM(SAFFRON_CITY_DOJO), MAP_GROUP(SAFFRON_CITY), MAP_NUM(SAFFRON_CITY)},
|
||||
{MAP_GROUP(SAFFRON_CITY_GYM), MAP_NUM(SAFFRON_CITY_GYM), MAP_GROUP(SAFFRON_CITY), MAP_NUM(SAFFRON_CITY)},
|
||||
{MAP_GROUP(SILPH_CO_1F), MAP_NUM(SILPH_CO_1F), MAP_GROUP(SAFFRON_CITY), MAP_NUM(SAFFRON_CITY)},
|
||||
{MAP_GROUP(SEAFOAM_ISLANDS_1F), MAP_NUM(SEAFOAM_ISLANDS_1F), MAP_GROUP(ROUTE20), MAP_NUM(ROUTE20)},
|
||||
{MAP_GROUP(SEAFOAM_ISLANDS_1F), MAP_NUM(SEAFOAM_ISLANDS_1F), MAP_GROUP(ROUTE20), MAP_NUM(ROUTE20)},
|
||||
{MAP_GROUP(POKEMON_MANSION_1F), MAP_NUM(POKEMON_MANSION_1F), MAP_GROUP(CINNABAR_ISLAND), MAP_NUM(CINNABAR_ISLAND)},
|
||||
{MAP_GROUP(CINNABAR_ISLAND_GYM), MAP_NUM(CINNABAR_ISLAND_GYM), MAP_GROUP(CINNABAR_ISLAND), MAP_NUM(CINNABAR_ISLAND)},
|
||||
{MAP_GROUP(CINNABAR_ISLAND_POKEMON_LAB_ENTRANCE), MAP_NUM(CINNABAR_ISLAND_POKEMON_LAB_ENTRANCE), MAP_GROUP(CINNABAR_ISLAND), MAP_NUM(CINNABAR_ISLAND)},
|
||||
{MAP_GROUP(VICTORY_ROAD_1F), MAP_NUM(VICTORY_ROAD_1F), MAP_GROUP(ROUTE23), MAP_NUM(ROUTE23)},
|
||||
{MAP_GROUP(VICTORY_ROAD_2F), MAP_NUM(VICTORY_ROAD_2F), MAP_GROUP(ROUTE23), MAP_NUM(ROUTE23)},
|
||||
{MAP_GROUP(INDIGO_PLATEAU_POKEMON_CENTER_1F), MAP_NUM(INDIGO_PLATEAU_POKEMON_CENTER_1F), MAP_GROUP(INDIGO_PLATEAU_EXTERIOR), MAP_NUM(INDIGO_PLATEAU_EXTERIOR)},
|
||||
{MAP_GROUP(CERULEAN_CAVE_1F), MAP_NUM(CERULEAN_CAVE_1F), MAP_GROUP(CERULEAN_CITY), MAP_NUM(CERULEAN_CITY)}
|
||||
[QL_LOCATION_HOME] = {MAP(PALLET_TOWN_PLAYERS_HOUSE_1F), MAP(PALLET_TOWN)},
|
||||
[QL_LOCATION_OAKS_LAB] = {MAP(PALLET_TOWN_PROFESSOR_OAKS_LAB), MAP(PALLET_TOWN)},
|
||||
[QL_LOCATION_VIRIDIAN_GYM] = {MAP(VIRIDIAN_CITY_GYM), MAP(VIRIDIAN_CITY)},
|
||||
[QL_LOCATION_LEAGUE_GATE_1] = {MAP(ROUTE22_NORTH_ENTRANCE), MAP(ROUTE22)},
|
||||
[QL_LOCATION_LEAGUE_GATE_2] = {MAP(ROUTE22_NORTH_ENTRANCE), MAP(ROUTE23)},
|
||||
[QL_LOCATION_VIRIDIAN_FOREST_1] = {MAP(VIRIDIAN_FOREST), MAP(ROUTE2_VIRIDIAN_FOREST_SOUTH_ENTRANCE)},
|
||||
[QL_LOCATION_VIRIDIAN_FOREST_2] = {MAP(VIRIDIAN_FOREST), MAP(ROUTE2_VIRIDIAN_FOREST_NORTH_ENTRANCE)},
|
||||
[QL_LOCATION_PEWTER_MUSEUM] = {MAP(PEWTER_CITY_MUSEUM_1F), MAP(PEWTER_CITY)},
|
||||
[QL_LOCATION_PEWTER_GYM] = {MAP(PEWTER_CITY_GYM), MAP(PEWTER_CITY)},
|
||||
[QL_LOCATION_MT_MOON_1] = {MAP(MT_MOON_1F), MAP(ROUTE4)},
|
||||
[QL_LOCATION_MT_MOON_2] = {MAP(MT_MOON_B1F), MAP(ROUTE4)},
|
||||
[QL_LOCATION_CERULEAN_GYM] = {MAP(CERULEAN_CITY_GYM), MAP(CERULEAN_CITY)},
|
||||
[QL_LOCATION_BIKE_SHOP] = {MAP(CERULEAN_CITY_BIKE_SHOP), MAP(CERULEAN_CITY)},
|
||||
[QL_LOCATION_BILLS_HOUSE] = {MAP(ROUTE25_SEA_COTTAGE), MAP(ROUTE25)},
|
||||
[QL_LOCATION_DAY_CARE] = {MAP(ROUTE5_POKEMON_DAY_CARE), MAP(ROUTE5)},
|
||||
[QL_LOCATION_UNDERGROUND_PATH_1] = {MAP(UNDERGROUND_PATH_NORTH_ENTRANCE), MAP(ROUTE5)},
|
||||
[QL_LOCATION_UNDERGROUND_PATH_2] = {MAP(UNDERGROUND_PATH_SOUTH_ENTRANCE), MAP(ROUTE6)},
|
||||
[QL_LOCATION_PKMN_FAN_CLUB] = {MAP(VERMILION_CITY_POKEMON_FAN_CLUB), MAP(VERMILION_CITY)},
|
||||
[QL_LOCATION_VERMILION_GYM] = {MAP(VERMILION_CITY_GYM), MAP(VERMILION_CITY)},
|
||||
[QL_LOCATION_SS_ANNE] = {MAP(SSANNE_1F_CORRIDOR), MAP(VERMILION_CITY)},
|
||||
[QL_LOCATION_DIGLETTS_CAVE_1] = {MAP(DIGLETTS_CAVE_NORTH_ENTRANCE), MAP(ROUTE2)},
|
||||
[QL_LOCATION_DIGLETTS_CAVE_2] = {MAP(DIGLETTS_CAVE_SOUTH_ENTRANCE), MAP(ROUTE11)},
|
||||
[QL_LOCATION_ROCK_TUNNEL_1] = {MAP(ROCK_TUNNEL_1F), MAP(ROUTE10)},
|
||||
[QL_LOCATION_ROCK_TUNNEL_2] = {MAP(ROCK_TUNNEL_1F), MAP(ROUTE10)},
|
||||
[QL_LOCATION_POWER_PLANT] = {MAP(POWER_PLANT), MAP(ROUTE10)},
|
||||
[QL_LOCATION_PKMN_TOWER] = {MAP(POKEMON_TOWER_1F), MAP(LAVENDER_TOWN)},
|
||||
[QL_LOCATION_VOLUNTEER_HOUSE] = {MAP(LAVENDER_TOWN_VOLUNTEER_POKEMON_HOUSE), MAP(LAVENDER_TOWN)},
|
||||
[QL_LOCATION_NAME_RATERS_HOUSE] = {MAP(LAVENDER_TOWN_HOUSE2), MAP(LAVENDER_TOWN)},
|
||||
[QL_LOCATION_UNDERGROUND_PATH_3] = {MAP(UNDERGROUND_PATH_EAST_ENTRANCE), MAP(ROUTE8)},
|
||||
[QL_LOCATION_UNDERGROUND_PATH_4] = {MAP(UNDERGROUND_PATH_WEST_ENTRANCE), MAP(ROUTE7)},
|
||||
[QL_LOCATION_CELADON_DEPT_STORE] = {MAP(CELADON_CITY_DEPARTMENT_STORE_1F), MAP(CELADON_CITY)},
|
||||
[QL_LOCATION_CELADON_MANSION] = {MAP(CELADON_CITY_CONDOMINIUMS_1F), MAP(CELADON_CITY)},
|
||||
[QL_LOCATION_GAME_CORNER] = {MAP(CELADON_CITY_GAME_CORNER), MAP(CELADON_CITY)},
|
||||
[QL_LOCATION_CELADON_GYM] = {MAP(CELADON_CITY_GYM), MAP(CELADON_CITY)},
|
||||
[QL_LOCATION_CELADON_RESTAURANT] = {MAP(CELADON_CITY_RESTAURANT), MAP(CELADON_CITY)},
|
||||
[QL_LOCATION_ROCKET_HIDEOUT] = {MAP(ROCKET_HIDEOUT_B1F), MAP(CELADON_CITY_GAME_CORNER)},
|
||||
[QL_LOCATION_SAFARI_ZONE] = {MAP(SAFARI_ZONE_CENTER), MAP(FUCHSIA_CITY_SAFARI_ZONE_ENTRANCE)},
|
||||
[QL_LOCATION_FUCHSIA_GYM] = {MAP(FUCHSIA_CITY_GYM), MAP(FUCHSIA_CITY)},
|
||||
[QL_LOCATION_WARDENS_HOME] = {MAP(FUCHSIA_CITY_WARDENS_HOUSE), MAP(FUCHSIA_CITY)},
|
||||
[QL_LOCATION_FIGHTING_DOJO] = {MAP(SAFFRON_CITY_DOJO), MAP(SAFFRON_CITY)},
|
||||
[QL_LOCATION_SAFFRON_GYM] = {MAP(SAFFRON_CITY_GYM), MAP(SAFFRON_CITY)},
|
||||
[QL_LOCATION_SILPH_CO] = {MAP(SILPH_CO_1F), MAP(SAFFRON_CITY)},
|
||||
[QL_LOCATION_SEAFOAM_ISLANDS_1] = {MAP(SEAFOAM_ISLANDS_1F), MAP(ROUTE20)},
|
||||
[QL_LOCATION_SEAFOAM_ISLANDS_2] = {MAP(SEAFOAM_ISLANDS_1F), MAP(ROUTE20)},
|
||||
[QL_LOCATION_PKMN_MANSION] = {MAP(POKEMON_MANSION_1F), MAP(CINNABAR_ISLAND)},
|
||||
[QL_LOCATION_CINNABAR_GYM] = {MAP(CINNABAR_ISLAND_GYM), MAP(CINNABAR_ISLAND)},
|
||||
[QL_LOCATION_CINNABAR_LAB] = {MAP(CINNABAR_ISLAND_POKEMON_LAB_ENTRANCE), MAP(CINNABAR_ISLAND)},
|
||||
[QL_LOCATION_VICTORY_ROAD_1] = {MAP(VICTORY_ROAD_1F), MAP(ROUTE23)},
|
||||
[QL_LOCATION_VICTORY_ROAD_2] = {MAP(VICTORY_ROAD_2F), MAP(ROUTE23)},
|
||||
[QL_LOCATION_PKMN_LEAGUE] = {MAP(INDIGO_PLATEAU_POKEMON_CENTER_1F), MAP(INDIGO_PLATEAU_EXTERIOR)},
|
||||
[QL_LOCATION_CERULEAN_CAVE] = {MAP(CERULEAN_CAVE_1F), MAP(CERULEAN_CITY)}
|
||||
};
|
||||
|
||||
void sub_80CC534(void)
|
||||
@@ -1871,7 +1871,7 @@ void sub_80CC534(void)
|
||||
{
|
||||
if (gSaveBlock1Ptr->location.mapGroup == sInsideOutsidePairs[i].grp && gSaveBlock1Ptr->location.mapNum == sInsideOutsidePairs[i].num)
|
||||
{
|
||||
if (VarGet(VAR_0x404D) != 35 || i != 32)
|
||||
if (VarGet(VAR_0x404D) != QL_LOCATION_ROCKET_HIDEOUT || i != QL_LOCATION_GAME_CORNER)
|
||||
{
|
||||
VarSet(VAR_0x404D, i);
|
||||
FlagSet(FLAG_0x808);
|
||||
@@ -1893,7 +1893,7 @@ void sub_80CC59C(void)
|
||||
sp0.unk1 = 0;
|
||||
if (FlagGet(FLAG_0x808))
|
||||
{
|
||||
if (r5 == 5)
|
||||
if (r5 == QL_LOCATION_VIRIDIAN_FOREST_1)
|
||||
{
|
||||
if (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(ROUTE2_VIRIDIAN_FOREST_SOUTH_ENTRANCE) && (gSaveBlock1Ptr->location.mapNum == MAP_NUM(ROUTE2_VIRIDIAN_FOREST_SOUTH_ENTRANCE) || gSaveBlock1Ptr->location.mapNum == MAP_NUM(ROUTE2_VIRIDIAN_FOREST_NORTH_ENTRANCE)))
|
||||
{
|
||||
@@ -1907,7 +1907,7 @@ void sub_80CC59C(void)
|
||||
return;
|
||||
}
|
||||
}
|
||||
else if (r5 == 3)
|
||||
else if (r5 == QL_LOCATION_LEAGUE_GATE_1)
|
||||
{
|
||||
if (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(ROUTE22) && (gSaveBlock1Ptr->location.mapNum == MAP_NUM(ROUTE22) || gSaveBlock1Ptr->location.mapNum == MAP_NUM(ROUTE23)))
|
||||
{
|
||||
@@ -1925,13 +1925,13 @@ void sub_80CC59C(void)
|
||||
{
|
||||
sp0.unk0 = Overworld_GetMapHeaderByGroupAndId(sInsideOutsidePairs[r5].grp, sInsideOutsidePairs[r5].num)->regionMapSectionId;
|
||||
sp0.unk1 = r5;
|
||||
if (r5 == 22)
|
||||
if (r5 == QL_LOCATION_ROCK_TUNNEL_1)
|
||||
{
|
||||
PlayerGetDestCoords(&x, &y);
|
||||
if (x != 15 || y != 26)
|
||||
sp0.unk1++;
|
||||
}
|
||||
else if (r5 == 42)
|
||||
else if (r5 == QL_LOCATION_SEAFOAM_ISLANDS_1)
|
||||
{
|
||||
PlayerGetDestCoords(&x, &y);
|
||||
if (x != 67 || y != 15)
|
||||
@@ -1939,9 +1939,9 @@ void sub_80CC59C(void)
|
||||
}
|
||||
SetQuestLogEvent(QL_EVENT_DEPARTED, (void *)&sp0);
|
||||
FlagClear(FLAG_0x808);
|
||||
if (r5 == 35)
|
||||
if (r5 == QL_LOCATION_ROCKET_HIDEOUT)
|
||||
{
|
||||
VarSet(VAR_0x404D, 32);
|
||||
VarSet(VAR_0x404D, QL_LOCATION_GAME_CORNER);
|
||||
FlagSet(FLAG_0x808);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,197 @@
|
||||
#include "global.h"
|
||||
#include "gflib.h"
|
||||
#include "menu.h"
|
||||
|
||||
static EWRAM_DATA u8 sHelpMessageWindowId = 0;
|
||||
|
||||
const u16 gUnknown_84566A8[] = INCBIN_U16("data/graphics/unknown_84566a8.bin");
|
||||
|
||||
static const struct WindowTemplate sHelpMessageWindowTemplate = {
|
||||
.bg = 0,
|
||||
.tilemapLeft = 0,
|
||||
.tilemapTop = 15,
|
||||
.width = 30,
|
||||
.height = 5,
|
||||
.paletteNum = 15,
|
||||
.baseBlock = 0x08F
|
||||
};
|
||||
|
||||
void MapNamePopupWindowIdSetDummy(void)
|
||||
{
|
||||
sHelpMessageWindowId = 0xFF;
|
||||
}
|
||||
|
||||
u8 CreateHelpMessageWindow(void)
|
||||
{
|
||||
if (sHelpMessageWindowId == 0xFF)
|
||||
{
|
||||
sHelpMessageWindowId = AddWindow(&sHelpMessageWindowTemplate);
|
||||
PutWindowTilemap(sHelpMessageWindowId);
|
||||
}
|
||||
return sHelpMessageWindowId;
|
||||
}
|
||||
|
||||
void DestroyHelpMessageWindow(u8 a0)
|
||||
{
|
||||
if (sHelpMessageWindowId != 0xFF)
|
||||
{
|
||||
FillWindowPixelBuffer(sHelpMessageWindowId, PIXEL_FILL(0));
|
||||
ClearWindowTilemap(sHelpMessageWindowId);
|
||||
|
||||
if (a0)
|
||||
CopyWindowToVram(sHelpMessageWindowId, a0);
|
||||
|
||||
RemoveWindow(sHelpMessageWindowId);
|
||||
sHelpMessageWindowId = 0xFF;
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef NONMATCHING
|
||||
void sub_8112F18(u8 windowId)
|
||||
{
|
||||
u8 width = GetWindowAttribute(windowId, WINDOW_WIDTH);
|
||||
u8 height = GetWindowAttribute(windowId, WINDOW_HEIGHT);
|
||||
u8 *buffer = Alloc(32 * width * height);
|
||||
u8 i, j;
|
||||
u8 k;
|
||||
|
||||
if (buffer != NULL)
|
||||
{
|
||||
for (i = 0; i < height; i++)
|
||||
{
|
||||
for (j = 0; j < width; j++)
|
||||
{
|
||||
if (i == 0)
|
||||
k = 0;
|
||||
else if (i == height - 1)
|
||||
k = 14;
|
||||
else
|
||||
k = 5;
|
||||
CpuCopy32(
|
||||
(void *)gUnknown_84566A8 + 32 * k, // operand swap on "add" instruction
|
||||
buffer + 32 * (i * width + j),
|
||||
32
|
||||
);
|
||||
}
|
||||
}
|
||||
CopyToWindowPixelBuffer(windowId, buffer, width * height * 32, 0);
|
||||
Free(buffer);
|
||||
}
|
||||
}
|
||||
#else
|
||||
NAKED
|
||||
void sub_8112F18(u8 windowId)
|
||||
{
|
||||
asm_unified("\tpush {r4-r7,lr}\n"
|
||||
"\tmov r7, r10\n"
|
||||
"\tmov r6, r9\n"
|
||||
"\tmov r5, r8\n"
|
||||
"\tpush {r5-r7}\n"
|
||||
"\tsub sp, 0x8\n"
|
||||
"\tlsls r0, 24\n"
|
||||
"\tlsrs r0, 24\n"
|
||||
"\tmov r10, r0\n"
|
||||
"\tmovs r1, 0x3\n"
|
||||
"\tbl GetWindowAttribute\n"
|
||||
"\tlsls r0, 24\n"
|
||||
"\tlsrs r6, r0, 24\n"
|
||||
"\tmov r0, r10\n"
|
||||
"\tmovs r1, 0x4\n"
|
||||
"\tbl GetWindowAttribute\n"
|
||||
"\tlsls r0, 24\n"
|
||||
"\tlsrs r7, r0, 24\n"
|
||||
"\tlsls r0, r7, 5\n"
|
||||
"\tmuls r0, r6\n"
|
||||
"\tbl Alloc\n"
|
||||
"\tmov r8, r0\n"
|
||||
"\tcmp r0, 0\n"
|
||||
"\tbeq _08112FB8\n"
|
||||
"\tmovs r5, 0\n"
|
||||
"\tadds r0, r6, 0\n"
|
||||
"\tmuls r0, r7\n"
|
||||
"\tstr r0, [sp]\n"
|
||||
"\tcmp r5, r7\n"
|
||||
"\tbcs _08112FA2\n"
|
||||
"_08112F5A:\n"
|
||||
"\tmovs r4, 0\n"
|
||||
"\tadds r1, r5, 0x1\n"
|
||||
"\tmov r9, r1\n"
|
||||
"\tcmp r4, r6\n"
|
||||
"\tbcs _08112F98\n"
|
||||
"\tsubs r3, r7, 0x1\n"
|
||||
"_08112F66:\n"
|
||||
"\tmovs r0, 0\n"
|
||||
"\tcmp r5, 0\n"
|
||||
"\tbeq _08112F74\n"
|
||||
"\tmovs r0, 0x5\n"
|
||||
"\tcmp r5, r3\n"
|
||||
"\tbne _08112F74\n"
|
||||
"\tmovs r0, 0xE\n"
|
||||
"_08112F74:\n"
|
||||
"\tlsls r0, 5\n"
|
||||
"\tldr r1, _08112FC8 @ =gUnknown_84566A8\n"
|
||||
"\tadds r0, r1, r0\n"
|
||||
"\tadds r1, r5, 0\n"
|
||||
"\tmuls r1, r6\n"
|
||||
"\tadds r1, r4\n"
|
||||
"\tlsls r1, 5\n"
|
||||
"\tadd r1, r8\n"
|
||||
"\tldr r2, _08112FCC @ =0x04000008\n"
|
||||
"\tstr r3, [sp, 0x4]\n"
|
||||
"\tbl CpuSet\n"
|
||||
"\tadds r0, r4, 0x1\n"
|
||||
"\tlsls r0, 24\n"
|
||||
"\tlsrs r4, r0, 24\n"
|
||||
"\tldr r3, [sp, 0x4]\n"
|
||||
"\tcmp r4, r6\n"
|
||||
"\tbcc _08112F66\n"
|
||||
"_08112F98:\n"
|
||||
"\tmov r1, r9\n"
|
||||
"\tlsls r0, r1, 24\n"
|
||||
"\tlsrs r5, r0, 24\n"
|
||||
"\tcmp r5, r7\n"
|
||||
"\tbcc _08112F5A\n"
|
||||
"_08112FA2:\n"
|
||||
"\tldr r0, [sp]\n"
|
||||
"\tlsls r2, r0, 21\n"
|
||||
"\tlsrs r2, 16\n"
|
||||
"\tmov r0, r10\n"
|
||||
"\tmov r1, r8\n"
|
||||
"\tmovs r3, 0\n"
|
||||
"\tbl CopyToWindowPixelBuffer\n"
|
||||
"\tmov r0, r8\n"
|
||||
"\tbl Free\n"
|
||||
"_08112FB8:\n"
|
||||
"\tadd sp, 0x8\n"
|
||||
"\tpop {r3-r5}\n"
|
||||
"\tmov r8, r3\n"
|
||||
"\tmov r9, r4\n"
|
||||
"\tmov r10, r5\n"
|
||||
"\tpop {r4-r7}\n"
|
||||
"\tpop {r0}\n"
|
||||
"\tbx r0\n"
|
||||
"\t.align 2, 0\n"
|
||||
"_08112FC8: .4byte gUnknown_84566A8\n"
|
||||
"_08112FCC: .4byte 0x04000008");
|
||||
}
|
||||
#endif
|
||||
|
||||
static void sub_8112FD0(void)
|
||||
{
|
||||
sub_8112F18(sHelpMessageWindowId);
|
||||
}
|
||||
|
||||
static const u8 sHelpMessageTextColors[3] = {TEXT_COLOR_TRANSPARENT, TEXT_DYNAMIC_COLOR_1, TEXT_COLOR_DARK_GREY};
|
||||
|
||||
static void PrintHelpMessageText(const u8 *text)
|
||||
{
|
||||
AddTextPrinterParameterized4(sHelpMessageWindowId, 2, 2, 5, 1, 1, sHelpMessageTextColors, -1, text);
|
||||
}
|
||||
|
||||
void PrintTextOnHelpMessageWindow(const u8 *text, u8 mode)
|
||||
{
|
||||
sub_8112FD0();
|
||||
PrintHelpMessageText(text);
|
||||
if (mode)
|
||||
CopyWindowToVram(sHelpMessageWindowId, mode);
|
||||
}
|
||||
+1
-1
@@ -78,7 +78,7 @@ void SetSaveBlocksPointers(void)
|
||||
gPokemonStoragePtr = (void*)(&gPokemonStorage) + offset;
|
||||
|
||||
SetBagPocketsPointers();
|
||||
sub_8110840(oldSave);
|
||||
SetQuestLogRecordAndPlaybackPointers(oldSave);
|
||||
}
|
||||
|
||||
void MoveSaveBlocks_ResetHeap(void)
|
||||
|
||||
@@ -1,18 +1,13 @@
|
||||
#include "global.h"
|
||||
#include "malloc.h"
|
||||
#include "dma3.h"
|
||||
#include "task.h"
|
||||
#include "bg.h"
|
||||
#include "window.h"
|
||||
#include "gflib.h"
|
||||
#include "help_message.h"
|
||||
#include "menu.h"
|
||||
#include "menu_helpers.h"
|
||||
#include "new_menu_helpers.h"
|
||||
#include "quest_log.h"
|
||||
#include "text.h"
|
||||
#include "field_specials.h"
|
||||
#include "text_window.h"
|
||||
#include "script.h"
|
||||
#include "palette.h"
|
||||
|
||||
#define DLG_WINDOW_PALETTE_NUM 15
|
||||
#define DLG_WINDOW_BASE_TILE_NUM 0x200
|
||||
|
||||
+25
-25
@@ -160,9 +160,9 @@ static void SetCameraToTrackGuestPlayer_2(void);
|
||||
static void sub_8057178(void);
|
||||
static void sub_80571A8(void);
|
||||
static void CreateLinkPlayerSprites(void);
|
||||
static void sub_80572D8(void);
|
||||
static void sub_8057300(u8 *state);
|
||||
static bool32 sub_8057314(u8 *state);
|
||||
static void CB2_LoadMapForQLPlayback(void);
|
||||
static void DoLoadMap_QLPlayback(u8 *state);
|
||||
static bool32 LoadMap_QLPlayback(u8 *state);
|
||||
static bool32 SetUpScrollSceneForCredits(u8 *state, u8 unused);
|
||||
static bool8 MapLdr_Credits(void);
|
||||
static void CameraCB_CreditsPan(struct CameraObject * camera);
|
||||
@@ -340,7 +340,7 @@ static void Overworld_ResetStateAfterWhitingOut(void)
|
||||
VarSet(VAR_0x404D, 0);
|
||||
}
|
||||
|
||||
static void sub_8054E40(void)
|
||||
static void Overworld_ResetStateOnContinue(void)
|
||||
{
|
||||
FlagClear(FLAG_SYS_SAFARI_MODE);
|
||||
VarSet(VAR_MAP_SCENE_FUCHSIA_CITY_SAFARI_ZONE_ENTRANCE, 0);
|
||||
@@ -979,7 +979,7 @@ void SetCurrentMapLayout(u16 mapLayoutId)
|
||||
gMapHeader.mapLayout = GetMapLayout();
|
||||
}
|
||||
|
||||
void sub_8055D5C(struct WarpData * warp)
|
||||
void Overworld_SetWarpDestinationFromWarp(struct WarpData * warp)
|
||||
{
|
||||
sWarpDestination = *warp;
|
||||
}
|
||||
@@ -1441,7 +1441,7 @@ static void DoCB1_Overworld_QuestLogPlayback(void)
|
||||
RunQuestLogCB();
|
||||
}
|
||||
}
|
||||
else if (sub_8111CD0() == TRUE)
|
||||
else if (QuestLogScenePlaybackIsEnding() == TRUE)
|
||||
{
|
||||
RunQuestLogCB();
|
||||
}
|
||||
@@ -1555,7 +1555,7 @@ void CB2_WhiteOut(void)
|
||||
gFieldCallback = FieldCB_RushInjuredPokemonToCenter;
|
||||
val = 0;
|
||||
do_load_map_stuff_loop(&val);
|
||||
QuestLog_OnInteractionWithSpecialNpc();
|
||||
QuestLog_CutRecording();
|
||||
SetFieldVBlankCallback();
|
||||
SetMainCallback1(CB1_Overworld);
|
||||
SetMainCallback2(CB2_Overworld);
|
||||
@@ -1575,9 +1575,9 @@ void CB2_LoadMap(void)
|
||||
static void CB2_LoadMap2(void)
|
||||
{
|
||||
do_load_map_stuff_loop(&gMain.state);
|
||||
if (sub_8113748() == TRUE)
|
||||
if (QuestLog_ShouldEndSceneOnMapChange() == TRUE)
|
||||
{
|
||||
sub_81119C8();
|
||||
QuestLog_AdvancePlayhead_();
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -1671,14 +1671,14 @@ void CB2_ReturnToFieldContinueScriptPlayMapMusic(void)
|
||||
CB2_ReturnToField();
|
||||
}
|
||||
|
||||
void sub_80568FC(void)
|
||||
void CB2_ReturnToFieldFromDiploma(void)
|
||||
{
|
||||
FieldClearVBlankHBlankCallbacks();
|
||||
gFieldCallback = FieldCB_WarpExitFadeFromBlack;
|
||||
CB2_ReturnToField();
|
||||
}
|
||||
|
||||
static void sub_8056918(void)
|
||||
static void FieldCB_ShowMapNameOnContinue(void)
|
||||
{
|
||||
if (SHOW_MAP_NAME_ENABLED)
|
||||
ShowMapNamePopup(FALSE);
|
||||
@@ -1693,7 +1693,7 @@ void CB2_ContinueSavedGame(void)
|
||||
LoadSaveblockMapHeader();
|
||||
LoadSaveblockObjEventScripts();
|
||||
UnfreezeObjectEvents();
|
||||
sub_8054E40();
|
||||
Overworld_ResetStateOnContinue();
|
||||
InitMapFromSavedGame();
|
||||
PlayTimeCounter_Start();
|
||||
ScriptContext1_Init();
|
||||
@@ -1709,7 +1709,7 @@ void CB2_ContinueSavedGame(void)
|
||||
}
|
||||
else
|
||||
{
|
||||
gFieldCallback = sub_8056918;
|
||||
gFieldCallback = FieldCB_ShowMapNameOnContinue;
|
||||
SetMainCallback1(CB1_Overworld);
|
||||
CB2_ReturnToField();
|
||||
}
|
||||
@@ -1861,7 +1861,7 @@ static bool32 load_map_stuff(u8 *state, bool32 a1)
|
||||
(*state)++;
|
||||
break;
|
||||
case 3:
|
||||
if (sub_8113748() == TRUE)
|
||||
if (QuestLog_ShouldEndSceneOnMapChange() == TRUE)
|
||||
return TRUE;
|
||||
(*state)++;
|
||||
break;
|
||||
@@ -2205,7 +2205,7 @@ static void CreateLinkPlayerSprites(void)
|
||||
|
||||
// Quest Log
|
||||
|
||||
void sub_805726C(void)
|
||||
void CB2_SetUpOverworldForQLPlaybackWithWarpExit(void)
|
||||
{
|
||||
FieldClearVBlankHBlankCallbacks();
|
||||
gUnknown_2036E28 = 1;
|
||||
@@ -2213,10 +2213,10 @@ void sub_805726C(void)
|
||||
ScriptContext2_Disable();
|
||||
SetMainCallback1(NULL);
|
||||
SetMainCallback2(CB2_DoChangeMap);
|
||||
gMain.savedCallback = sub_80572D8;
|
||||
gMain.savedCallback = CB2_LoadMapForQLPlayback;
|
||||
}
|
||||
|
||||
void sub_80572A8(void)
|
||||
void CB2_SetUpOverworldForQLPlayback(void)
|
||||
{
|
||||
FieldClearVBlankHBlankCallbacks();
|
||||
gUnknown_2036E28 = 1;
|
||||
@@ -2224,24 +2224,24 @@ void sub_80572A8(void)
|
||||
ScriptContext1_Init();
|
||||
ScriptContext2_Disable();
|
||||
SetMainCallback1(NULL);
|
||||
SetMainCallback2(sub_80572D8);
|
||||
SetMainCallback2(CB2_LoadMapForQLPlayback);
|
||||
}
|
||||
|
||||
static void sub_80572D8(void)
|
||||
static void CB2_LoadMapForQLPlayback(void)
|
||||
{
|
||||
sub_8057300(&gMain.state);
|
||||
DoLoadMap_QLPlayback(&gMain.state);
|
||||
SetFieldVBlankCallback();
|
||||
SetMainCallback1(CB1_Overworld);
|
||||
SetMainCallback2(CB2_Overworld);
|
||||
}
|
||||
|
||||
static void sub_8057300(u8 *state)
|
||||
static void DoLoadMap_QLPlayback(u8 *state)
|
||||
{
|
||||
while (!sub_8057314(state))
|
||||
while (!LoadMap_QLPlayback(state))
|
||||
;
|
||||
}
|
||||
|
||||
static bool32 sub_8057314(u8 *state)
|
||||
static bool32 LoadMap_QLPlayback(u8 *state)
|
||||
{
|
||||
switch (*state)
|
||||
{
|
||||
@@ -2317,7 +2317,7 @@ static bool32 sub_8057314(u8 *state)
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
void sub_8057430(void)
|
||||
void CB2_EnterFieldFromQuestLog(void)
|
||||
{
|
||||
FieldClearVBlankHBlankCallbacks();
|
||||
StopMapMusic();
|
||||
@@ -2326,7 +2326,7 @@ void sub_8057430(void)
|
||||
LoadSaveblockMapHeader();
|
||||
LoadSaveblockObjEventScripts();
|
||||
UnfreezeObjectEvents();
|
||||
sub_8054E40();
|
||||
Overworld_ResetStateOnContinue();
|
||||
InitMapFromSavedGame();
|
||||
PlayTimeCounter_Start();
|
||||
ScriptContext1_Init();
|
||||
|
||||
@@ -19,6 +19,7 @@
|
||||
#include "fieldmap.h"
|
||||
#include "fldeff.h"
|
||||
#include "graphics.h"
|
||||
#include "help_message.h"
|
||||
#include "help_system.h"
|
||||
#include "item.h"
|
||||
#include "item_menu.h"
|
||||
|
||||
+96
-2758
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -8,6 +8,7 @@
|
||||
#include "party_menu.h"
|
||||
#include "save.h"
|
||||
#include "link_rfu.h"
|
||||
#include "help_message.h"
|
||||
#include "event_data.h"
|
||||
#include "fieldmap.h"
|
||||
#include "safari_zone.h"
|
||||
|
||||
@@ -0,0 +1,359 @@
|
||||
#include "global.h"
|
||||
#include "gflib.h"
|
||||
#include "battle.h"
|
||||
#include "event_data.h"
|
||||
#include "event_scripts.h"
|
||||
#include "random.h"
|
||||
#include "constants/vars.h"
|
||||
#include "constants/flags.h"
|
||||
|
||||
struct TrainerFanClub
|
||||
{
|
||||
u8 timer:7;
|
||||
u8 gotInitialFans:1;
|
||||
u8 fanFlags;
|
||||
};
|
||||
|
||||
#define TRAINER_FAN_CLUB ((struct TrainerFanClub *)GetVarPointer(VAR_FANCLUB_FAN_COUNTER))
|
||||
|
||||
#define GET_TRAINER_FAN_CLUB_FLAG(flag) (fanClub->fanFlags >> (flag) & 1)
|
||||
#define SET_TRAINER_FAN_CLUB_FLAG(flag) (fanClub->fanFlags |= 1 << (flag))
|
||||
#define FLIP_TRAINER_FAN_CLUB_FLAG(flag)(fanClub->fanFlags ^= 1 << (flag))
|
||||
|
||||
#define FANCLUB_MEMBER1 0
|
||||
#define FANCLUB_MEMBER2 1
|
||||
#define FANCLUB_MEMBER3 2
|
||||
#define FANCLUB_MEMBER4 3
|
||||
#define FANCLUB_MEMBER5 4
|
||||
#define FANCLUB_MEMBER6 5
|
||||
#define FANCLUB_MEMBER7 6
|
||||
#define FANCLUB_MEMBER8 7
|
||||
|
||||
#define NUM_TRAINER_FAN_CLUB_MEMBERS 8
|
||||
|
||||
static void TryLoseFansFromPlayTimeAfterLinkBattle(struct TrainerFanClub *);
|
||||
static void UpdateTrainerFanClubGameClear(struct TrainerFanClub *);
|
||||
static u8 PlayerGainRandomTrainerFan(struct TrainerFanClub *);
|
||||
static u16 GetNumFansOfPlayerInTrainerFanClub(struct TrainerFanClub *);
|
||||
static void TryLoseFansFromPlayTime(struct TrainerFanClub *);
|
||||
static bool16 IsFanClubMemberFanOfPlayer(struct TrainerFanClub *);
|
||||
static void SetInitialFansOfPlayer(struct TrainerFanClub *);
|
||||
static void BufferFanClubTrainerName(struct LinkBattleRecords *, u8, u8);
|
||||
static void UpdateTrainerFansAfterLinkBattle(struct TrainerFanClub *);
|
||||
static bool8 DidPlayerGetFirstFans(struct TrainerFanClub * );
|
||||
static void SetPlayerGotFirstFans(struct TrainerFanClub *);
|
||||
|
||||
void ResetTrainerFanClub(void)
|
||||
{
|
||||
VarSet(VAR_FANCLUB_FAN_COUNTER, 0);
|
||||
VarSet(VAR_FANCLUB_LOSE_FAN_TIMER, 0);
|
||||
}
|
||||
|
||||
void Script_TryLoseFansFromPlayTimeAfterLinkBattle(void)
|
||||
{
|
||||
TryLoseFansFromPlayTimeAfterLinkBattle(TRAINER_FAN_CLUB);
|
||||
}
|
||||
|
||||
static void TryLoseFansFromPlayTimeAfterLinkBattle(struct TrainerFanClub *fanClub)
|
||||
{
|
||||
if (DidPlayerGetFirstFans(fanClub))
|
||||
{
|
||||
TryLoseFansFromPlayTime(fanClub);
|
||||
VarSet(VAR_FANCLUB_LOSE_FAN_TIMER, gSaveBlock2Ptr->playTimeHours);
|
||||
}
|
||||
}
|
||||
|
||||
void Script_UpdateTrainerFanClubGameClear(void)
|
||||
{
|
||||
UpdateTrainerFanClubGameClear(TRAINER_FAN_CLUB);
|
||||
}
|
||||
|
||||
static void UpdateTrainerFanClubGameClear(struct TrainerFanClub *fanClub)
|
||||
{
|
||||
if (!fanClub->gotInitialFans)
|
||||
{
|
||||
SetPlayerGotFirstFans(fanClub);
|
||||
SetInitialFansOfPlayer(fanClub);
|
||||
VarSet(VAR_FANCLUB_LOSE_FAN_TIMER, gSaveBlock2Ptr->playTimeHours);
|
||||
FlagClear(FLAG_HIDE_SAFFRON_FAN_CLUB_BLACKBELT);
|
||||
FlagClear(FLAG_HIDE_SAFFRON_FAN_CLUB_ROCKER);
|
||||
FlagClear(FLAG_HIDE_SAFFRON_FAN_CLUB_WOMAN);
|
||||
FlagClear(FLAG_HIDE_SAFFRON_FAN_CLUB_BEAUTY);
|
||||
VarSet(VAR_MAP_SCENE_SAFFRON_CITY_POKEMON_TRAINER_FAN_CLUB, 1);
|
||||
}
|
||||
}
|
||||
|
||||
ALIGNED(4) const u8 sCounterIncrements[] = {2, 1, 2, 1};
|
||||
|
||||
static u8 TryGainNewFanFromCounter(struct TrainerFanClub *fanClub, u8 a1)
|
||||
{
|
||||
if (VarGet(VAR_MAP_SCENE_SAFFRON_CITY_POKEMON_TRAINER_FAN_CLUB) == 2)
|
||||
{
|
||||
if (fanClub->timer + sCounterIncrements[a1] >= 20)
|
||||
{
|
||||
if (GetNumFansOfPlayerInTrainerFanClub(fanClub) < 3)
|
||||
{
|
||||
PlayerGainRandomTrainerFan(fanClub);
|
||||
fanClub->timer = 0;
|
||||
}
|
||||
else
|
||||
fanClub->timer = 20;
|
||||
}
|
||||
else
|
||||
fanClub->timer += sCounterIncrements[a1];
|
||||
}
|
||||
|
||||
return fanClub->timer;
|
||||
}
|
||||
|
||||
|
||||
static u8 PlayerGainRandomTrainerFan(struct TrainerFanClub *fanClub)
|
||||
{
|
||||
static const u8 sFanClubMemberIds[] = {
|
||||
FANCLUB_MEMBER2,
|
||||
FANCLUB_MEMBER4,
|
||||
FANCLUB_MEMBER6,
|
||||
FANCLUB_MEMBER1,
|
||||
FANCLUB_MEMBER8,
|
||||
FANCLUB_MEMBER7,
|
||||
FANCLUB_MEMBER5,
|
||||
FANCLUB_MEMBER3
|
||||
};
|
||||
|
||||
u8 i;
|
||||
u8 idx = 0;
|
||||
|
||||
for (i = 0; i < NUM_TRAINER_FAN_CLUB_MEMBERS; i++)
|
||||
{
|
||||
if (!(GET_TRAINER_FAN_CLUB_FLAG(sFanClubMemberIds[i])))
|
||||
{
|
||||
idx = i;
|
||||
if (Random() % 2)
|
||||
{
|
||||
SET_TRAINER_FAN_CLUB_FLAG(sFanClubMemberIds[i]);
|
||||
return sFanClubMemberIds[i];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
SET_TRAINER_FAN_CLUB_FLAG(sFanClubMemberIds[idx]);
|
||||
return sFanClubMemberIds[idx];
|
||||
}
|
||||
|
||||
static u8 PlayerLoseRandomTrainerFan(struct TrainerFanClub *fanClub)
|
||||
{
|
||||
static const u8 sFanClubMemberIds[] =
|
||||
{
|
||||
FANCLUB_MEMBER6,
|
||||
FANCLUB_MEMBER7,
|
||||
FANCLUB_MEMBER4,
|
||||
FANCLUB_MEMBER8,
|
||||
FANCLUB_MEMBER5,
|
||||
FANCLUB_MEMBER2,
|
||||
FANCLUB_MEMBER1,
|
||||
FANCLUB_MEMBER3
|
||||
};
|
||||
|
||||
u8 i;
|
||||
u8 idx = 0;
|
||||
|
||||
if (GetNumFansOfPlayerInTrainerFanClub(fanClub) == 1)
|
||||
return 0;
|
||||
|
||||
for (i = 0; i < NUM_TRAINER_FAN_CLUB_MEMBERS; i++)
|
||||
{
|
||||
if (GET_TRAINER_FAN_CLUB_FLAG(sFanClubMemberIds[i]))
|
||||
{
|
||||
idx = i;
|
||||
if (Random() % 2)
|
||||
{
|
||||
FLIP_TRAINER_FAN_CLUB_FLAG(sFanClubMemberIds[i]);
|
||||
return sFanClubMemberIds[i];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (GET_TRAINER_FAN_CLUB_FLAG(sFanClubMemberIds[idx]))
|
||||
FLIP_TRAINER_FAN_CLUB_FLAG(sFanClubMemberIds[idx]);
|
||||
|
||||
return sFanClubMemberIds[idx];
|
||||
}
|
||||
|
||||
u16 Script_GetNumFansOfPlayerInTrainerFanClub(void)
|
||||
{
|
||||
return GetNumFansOfPlayerInTrainerFanClub(TRAINER_FAN_CLUB);
|
||||
}
|
||||
|
||||
static u16 GetNumFansOfPlayerInTrainerFanClub(struct TrainerFanClub *fanClub)
|
||||
{
|
||||
u8 count = 0;
|
||||
u8 i;
|
||||
|
||||
for (i = 0; i < NUM_TRAINER_FAN_CLUB_MEMBERS; i++)
|
||||
{
|
||||
if (GET_TRAINER_FAN_CLUB_FLAG(i))
|
||||
count++;
|
||||
}
|
||||
|
||||
return count;
|
||||
}
|
||||
|
||||
void Script_TryLoseFansFromPlayTime(void)
|
||||
{
|
||||
TryLoseFansFromPlayTime(TRAINER_FAN_CLUB);
|
||||
}
|
||||
|
||||
static void TryLoseFansFromPlayTime(struct TrainerFanClub *fanClub)
|
||||
{
|
||||
u8 i = 0;
|
||||
u16 timer;
|
||||
|
||||
if (gSaveBlock2Ptr->playTimeHours < 999)
|
||||
{
|
||||
while (1)
|
||||
{
|
||||
if (GetNumFansOfPlayerInTrainerFanClub(fanClub) < 5)
|
||||
{
|
||||
VarSet(VAR_FANCLUB_LOSE_FAN_TIMER, gSaveBlock2Ptr->playTimeHours);
|
||||
break;
|
||||
}
|
||||
if (i == NUM_TRAINER_FAN_CLUB_MEMBERS)
|
||||
break;
|
||||
|
||||
timer = VarGet(VAR_FANCLUB_LOSE_FAN_TIMER);
|
||||
if (gSaveBlock2Ptr->playTimeHours - timer < 12)
|
||||
break;
|
||||
|
||||
PlayerLoseRandomTrainerFan(fanClub);
|
||||
timer = VarGet(VAR_FANCLUB_LOSE_FAN_TIMER);
|
||||
VarSet(VAR_FANCLUB_LOSE_FAN_TIMER, timer + 12);
|
||||
i++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
bool16 Script_IsFanClubMemberFanOfPlayer(void)
|
||||
{
|
||||
return IsFanClubMemberFanOfPlayer(TRAINER_FAN_CLUB);
|
||||
}
|
||||
|
||||
static bool16 IsFanClubMemberFanOfPlayer(struct TrainerFanClub *fanClub)
|
||||
{
|
||||
return GET_TRAINER_FAN_CLUB_FLAG(gSpecialVar_0x8004);
|
||||
}
|
||||
|
||||
static void SetInitialFansOfPlayer(struct TrainerFanClub *fanClub)
|
||||
{
|
||||
SET_TRAINER_FAN_CLUB_FLAG(FANCLUB_MEMBER1);
|
||||
SET_TRAINER_FAN_CLUB_FLAG(FANCLUB_MEMBER2);
|
||||
SET_TRAINER_FAN_CLUB_FLAG(FANCLUB_MEMBER3);
|
||||
}
|
||||
|
||||
void Script_BufferFanClubTrainerName(void)
|
||||
{
|
||||
u8 whichLinkTrainer = 0;
|
||||
u8 whichNPCTrainer = 0;
|
||||
|
||||
switch (gSpecialVar_0x8004)
|
||||
{
|
||||
case FANCLUB_MEMBER1:
|
||||
whichNPCTrainer = 0;
|
||||
whichLinkTrainer = 0;
|
||||
break;
|
||||
case FANCLUB_MEMBER2:
|
||||
case FANCLUB_MEMBER3:
|
||||
case FANCLUB_MEMBER4:
|
||||
case FANCLUB_MEMBER8:
|
||||
break;
|
||||
case FANCLUB_MEMBER5:
|
||||
whichNPCTrainer = 1;
|
||||
whichLinkTrainer = 0;
|
||||
break;
|
||||
case FANCLUB_MEMBER6:
|
||||
whichNPCTrainer = 0;
|
||||
whichLinkTrainer = 1;
|
||||
break;
|
||||
case FANCLUB_MEMBER7:
|
||||
whichNPCTrainer = 2;
|
||||
whichLinkTrainer = 1;
|
||||
break;
|
||||
}
|
||||
BufferFanClubTrainerName(&gSaveBlock2Ptr->linkBattleRecords, whichLinkTrainer, whichNPCTrainer);
|
||||
}
|
||||
|
||||
static void BufferFanClubTrainerName(struct LinkBattleRecords *linkRecords, u8 whichLinkTrainer, u8 whichNPCTrainer)
|
||||
{
|
||||
u8 *str;
|
||||
const u8 *linkTrainerName = linkRecords->entries[whichLinkTrainer].name;
|
||||
if (linkTrainerName[0] == EOS)
|
||||
{
|
||||
switch (whichNPCTrainer)
|
||||
{
|
||||
case 0:
|
||||
StringCopy(gStringVar1, gSaveBlock1Ptr->rivalName);
|
||||
break;
|
||||
case 1:
|
||||
StringCopy(gStringVar1, gText_LtSurge);
|
||||
break;
|
||||
case 2:
|
||||
StringCopy(gStringVar1, gText_Koga);
|
||||
break;
|
||||
default:
|
||||
StringCopy(gStringVar1, gSaveBlock1Ptr->rivalName);
|
||||
break;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
str = gStringVar1;
|
||||
StringCopyN(str, linkTrainerName, PLAYER_NAME_LENGTH);
|
||||
str[PLAYER_NAME_LENGTH] = EOS;
|
||||
if ( str[0] == EXT_CTRL_CODE_BEGIN
|
||||
&& str[1] == EXT_CTRL_CODE_JPN)
|
||||
{
|
||||
str += 2;
|
||||
while (*str != EOS)
|
||||
str++;
|
||||
*str++ = EXT_CTRL_CODE_BEGIN;
|
||||
*str++ = EXT_CTRL_CODE_ENG;
|
||||
*str++ = EOS;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void Special_UpdateTrainerFansAfterLinkBattle(void)
|
||||
{
|
||||
UpdateTrainerFansAfterLinkBattle(TRAINER_FAN_CLUB);
|
||||
}
|
||||
|
||||
static void UpdateTrainerFansAfterLinkBattle(struct TrainerFanClub *fanClub)
|
||||
{
|
||||
if (VarGet(VAR_MAP_SCENE_SAFFRON_CITY_POKEMON_TRAINER_FAN_CLUB) == 2)
|
||||
{
|
||||
TryLoseFansFromPlayTimeAfterLinkBattle(fanClub);
|
||||
if (gBattleOutcome == B_OUTCOME_WON)
|
||||
PlayerGainRandomTrainerFan(fanClub);
|
||||
else
|
||||
PlayerLoseRandomTrainerFan(fanClub);
|
||||
}
|
||||
}
|
||||
|
||||
static bool8 DidPlayerGetFirstFans(struct TrainerFanClub *fanClub)
|
||||
{
|
||||
return fanClub->gotInitialFans;
|
||||
}
|
||||
|
||||
void Script_SetPlayerGotFirstFans(void)
|
||||
{
|
||||
SetPlayerGotFirstFans(TRAINER_FAN_CLUB);
|
||||
}
|
||||
|
||||
static void SetPlayerGotFirstFans(struct TrainerFanClub *fanClub)
|
||||
{
|
||||
fanClub->gotInitialFans = TRUE;
|
||||
}
|
||||
|
||||
u8 Script_TryGainNewFanFromCounter(void)
|
||||
{
|
||||
return TryGainNewFanFromCounter(TRAINER_FAN_CLUB, gSpecialVar_0x8004);
|
||||
}
|
||||
Reference in New Issue
Block a user