Split quest_log.c
This commit is contained in:
@@ -43,7 +43,7 @@ BirthIsland_Exterior_EventScript_Triangle:: @ 8165271
|
||||
lock
|
||||
faceplayer
|
||||
goto_if_questlog EventScript_ReleaseEnd
|
||||
special QuestLog_OnInteractionWithSpecialNpc
|
||||
special QuestLog_CutRecording
|
||||
special DoDeoxysTriangleInteraction
|
||||
waitstate
|
||||
switch VAR_RESULT
|
||||
|
||||
@@ -3,7 +3,7 @@ CeladonCity_DepartmentStore_Roof_MapScripts:: @ 816BCCC
|
||||
|
||||
CeladonCity_DepartmentStore_Roof_EventScript_ThirstyGirl:: @ 816BCCD
|
||||
goto_if_questlog EventScript_ReleaseEnd
|
||||
special QuestLog_OnInteractionWithSpecialNpc
|
||||
special QuestLog_CutRecording
|
||||
lock
|
||||
faceplayer
|
||||
call CeladonCity_DepartmentStore_Roof_EventScript_CheckPlayerHasDrinks
|
||||
|
||||
@@ -24,7 +24,7 @@ CeruleanCave_B1F_EventScript_ShowMewtwo:: @ 81624F1
|
||||
|
||||
CeruleanCave_B1F_EventScript_Mewtwo:: @ 81624F5
|
||||
goto_if_questlog EventScript_ReleaseEnd
|
||||
special QuestLog_OnInteractionWithSpecialNpc
|
||||
special QuestLog_CutRecording
|
||||
lock
|
||||
faceplayer
|
||||
waitse
|
||||
|
||||
@@ -3,7 +3,7 @@ CeruleanCity_House4_MapScripts:: @ 816ACEE
|
||||
|
||||
CeruleanCity_House4_EventScript_WonderNewsBerryMan:: @ 816ACEF
|
||||
goto_if_questlog EventScript_ReleaseEnd
|
||||
special QuestLog_OnInteractionWithSpecialNpc
|
||||
special QuestLog_CutRecording
|
||||
lock
|
||||
specialvar VAR_0x8004, GetMENewsJisanItemAndState
|
||||
copyvar VAR_0x8008, VAR_RESULT
|
||||
|
||||
@@ -33,7 +33,7 @@ FiveIsland_MemorialPillar_EventScript_ReturnedForTM42:: @ 8168A22
|
||||
|
||||
FiveIsland_MemorialPillar_EventScript_Memorial:: @ 8168A48
|
||||
goto_if_questlog EventScript_ReleaseEnd
|
||||
special QuestLog_OnInteractionWithSpecialNpc
|
||||
special QuestLog_CutRecording
|
||||
lockall
|
||||
goto_if_set FLAG_GOT_TM42_AT_MEMORIAL_PILLAR, FiveIsland_MemorialPillar_EventScript_MemorialLemonadeAlreadyPlaced
|
||||
goto_if_set FLAG_NO_ROOM_FOR_TM42_AT_MEMORIAL_PILLAR, FiveIsland_MemorialPillar_EventScript_MemorialLemonadeAlreadyPlaced
|
||||
|
||||
@@ -8,7 +8,7 @@ FiveIsland_ResortGorgeous_House_MapScripts:: @ 8171EBD
|
||||
|
||||
FiveIsland_ResortGorgeous_House_EventScript_Selphy:: @ 8171EBE
|
||||
goto_if_questlog EventScript_ReleaseEnd
|
||||
special QuestLog_OnInteractionWithSpecialNpc
|
||||
special QuestLog_CutRecording
|
||||
lock
|
||||
faceplayer
|
||||
goto_if_set SHOWN_REQUESTED_MON, FiveIsland_ResortGorgeous_House_EventScript_JustFulfilledRequest
|
||||
|
||||
@@ -3,7 +3,7 @@ FiveIsland_WaterLabyrinth_MapScripts:: @ 816884D
|
||||
|
||||
FiveIsland_WaterLabyrinth_EventScript_EggGentleman:: @ 816884E
|
||||
goto_if_questlog EventScript_ReleaseEnd
|
||||
special QuestLog_OnInteractionWithSpecialNpc
|
||||
special QuestLog_CutRecording
|
||||
lock
|
||||
faceplayer
|
||||
goto_if_set FLAG_GOT_TOGEPI_EGG, FiveIsland_WaterLabyrinth_EventScript_PostEggComment
|
||||
|
||||
@@ -73,7 +73,7 @@ FourIsland_Movement_PlayerWatchRivalExit:: @ 8167D52
|
||||
|
||||
FourIsland_EventScript_DaycareMan:: @ 8167D55
|
||||
goto_if_questlog EventScript_ReleaseEnd
|
||||
special QuestLog_OnInteractionWithSpecialNpc
|
||||
special QuestLog_CutRecording
|
||||
lock
|
||||
faceplayer
|
||||
special GetDaycareMonNicknames
|
||||
|
||||
@@ -24,7 +24,7 @@ MtEmber_Summit_EventScript_ShowMoltres:: @ 8163B2F
|
||||
|
||||
MtEmber_Summit_EventScript_Moltres:: @ 8163B33
|
||||
goto_if_questlog EventScript_ReleaseEnd
|
||||
special QuestLog_OnInteractionWithSpecialNpc
|
||||
special QuestLog_CutRecording
|
||||
lock
|
||||
faceplayer
|
||||
setwildbattle SPECIES_MOLTRES, 50, ITEM_NONE
|
||||
|
||||
@@ -63,7 +63,7 @@ MtMoon_B2F_EventScript_DomeFossil:: @ 816071B
|
||||
removeobject LOCALID_DOME_FOSSIL
|
||||
giveitem_msg MtMoon_B2F_Text_ObtainedDomeFossil, ITEM_DOME_FOSSIL, 1, MUS_FAN5
|
||||
closemessage
|
||||
special QuestLog_OnInteractionWithSpecialNpc
|
||||
special QuestLog_CutRecording
|
||||
delay 10
|
||||
applymovement LOCALID_MIGUEL, MtMoon_B2F_Movement_MiguelToHelixFossil
|
||||
waitmovement 0
|
||||
@@ -95,7 +95,7 @@ MtMoon_B2F_EventScript_HelixFossil:: @ 816077F
|
||||
removeobject LOCALID_HELIX_FOSSIL
|
||||
giveitem_msg MtMoon_B2F_Text_ObtainedHelixFossil, ITEM_HELIX_FOSSIL, 1, MUS_FAN5
|
||||
closemessage
|
||||
special QuestLog_OnInteractionWithSpecialNpc
|
||||
special QuestLog_CutRecording
|
||||
delay 10
|
||||
applymovement LOCALID_MIGUEL, MtMoon_B2F_Movement_MiguelToDomeFossil
|
||||
waitmovement 0
|
||||
|
||||
@@ -30,7 +30,7 @@ NavelRock_Base_EventScript_TryRemoveLugia:: @ 8165120
|
||||
|
||||
NavelRock_Base_EventScript_Lugia:: @ 8165134
|
||||
goto_if_questlog EventScript_ReleaseEnd
|
||||
special QuestLog_OnInteractionWithSpecialNpc
|
||||
special QuestLog_CutRecording
|
||||
lock
|
||||
faceplayer
|
||||
waitse
|
||||
|
||||
@@ -33,7 +33,7 @@ NavelRock_Summit_EventScript_TryRemoveHoOh:: @ 8164FE7
|
||||
|
||||
NavelRock_Summit_EventScript_HoOh:: @ 8164FFB
|
||||
goto_if_questlog EventScript_ReleaseEnd
|
||||
special QuestLog_OnInteractionWithSpecialNpc
|
||||
special QuestLog_CutRecording
|
||||
lockall
|
||||
setvar VAR_TEMP_1, 1
|
||||
special SpawnCameraObject
|
||||
|
||||
@@ -50,7 +50,7 @@ PalletTown_GarysHouse_EventScript_HeardBattledRival:: @ 8168DAF
|
||||
|
||||
PalletTown_GarysHouse_EventScript_GroomMon:: @ 8168DB9
|
||||
goto_if_questlog EventScript_ReleaseEnd
|
||||
special QuestLog_OnInteractionWithSpecialNpc
|
||||
special QuestLog_CutRecording
|
||||
compare VAR_MASSAGE_COOLDOWN_STEP_COUNTER, 500
|
||||
goto_if_lt PalletTown_GarysHouse_EventScript_RateMonFriendship
|
||||
msgbox PalletTown_GarysHouse_Text_LikeMeToGroomMon, MSGBOX_YESNO
|
||||
|
||||
@@ -1000,7 +1000,7 @@ PalletTown_ProfessorOaksLab_EventScript_DontStartNationalDexScene:: @ 81699F9
|
||||
|
||||
PalletTown_ProfessorOaksLab_EventScript_CheckIfPlayerNeedsBalls:: @ 81699FB
|
||||
goto_if_questlog EventScript_ReleaseEnd
|
||||
special QuestLog_OnInteractionWithSpecialNpc
|
||||
special QuestLog_CutRecording
|
||||
goto_if_set FLAG_OAK_SKIP_22_RIVAL_CHECK, PalletTown_ProfessorOaksLab_EventScript_MonsAroundWorldWait
|
||||
goto_if_set FLAG_GOT_POKEBALLS_FROM_OAK_AFTER_22_RIVAL, PalletTown_ProfessorOaksLab_EventScript_PlayerAlreadyGotBalls
|
||||
checkitem ITEM_POKE_BALL, 1
|
||||
|
||||
@@ -9,7 +9,7 @@ PokemonTower_6F_EventScript_MarowakGhost:: @ 81634B8
|
||||
setwildbattle SPECIES_MAROWAK, 30, ITEM_NONE
|
||||
special StartMarowakBattle
|
||||
waitstate
|
||||
special QuestLog_OnInteractionWithSpecialNpc
|
||||
special QuestLog_CutRecording
|
||||
compare VAR_RESULT, FALSE @ Set by CB2_EndMarowakBattle
|
||||
goto_if_eq PokemonTower_6F_EventScript_DefeatedMarowakGhost
|
||||
applymovement OBJ_EVENT_ID_PLAYER, PokemonTower_6F_Movement_ForcePlayerUp
|
||||
|
||||
@@ -35,7 +35,7 @@ PowerPlant_EventScript_ShowElectrode2:: @ 81637B4
|
||||
|
||||
PowerPlant_EventScript_Zapdos:: @ 81637B8
|
||||
goto_if_questlog EventScript_ReleaseEnd
|
||||
special QuestLog_OnInteractionWithSpecialNpc
|
||||
special QuestLog_CutRecording
|
||||
lock
|
||||
faceplayer
|
||||
setwildbattle SPECIES_ZAPDOS, 50, ITEM_NONE
|
||||
@@ -84,7 +84,7 @@ PowerPlant_EventScript_Electrode1:: @ 816382F
|
||||
setflag FLAG_SYS_SPECIAL_WILD_BATTLE
|
||||
dowildbattle
|
||||
clearflag FLAG_SYS_SPECIAL_WILD_BATTLE
|
||||
special QuestLog_OnInteractionWithSpecialNpc
|
||||
special QuestLog_CutRecording
|
||||
specialvar VAR_RESULT, GetBattleOutcome
|
||||
compare VAR_RESULT, B_OUTCOME_WON
|
||||
goto_if_eq PowerPlant_EventScript_FoughtElectrode1
|
||||
@@ -113,7 +113,7 @@ PowerPlant_EventScript_Electrode2:: @ 816388D
|
||||
setflag FLAG_SYS_SPECIAL_WILD_BATTLE
|
||||
dowildbattle
|
||||
clearflag FLAG_SYS_SPECIAL_WILD_BATTLE
|
||||
special QuestLog_OnInteractionWithSpecialNpc
|
||||
special QuestLog_CutRecording
|
||||
specialvar VAR_RESULT, GetBattleOutcome
|
||||
compare VAR_RESULT, B_OUTCOME_WON
|
||||
goto_if_eq PowerPlant_EventScript_FoughtElectrode2
|
||||
|
||||
@@ -15,7 +15,7 @@ Route12_EventScript_Snorlax:: @ 8168014
|
||||
faceplayer
|
||||
goto_if_unset FLAG_GOT_POKE_FLUTE, Route12_EventScript_SnorlaxNoPokeFlute
|
||||
goto_if_questlog EventScript_ReleaseEnd
|
||||
special QuestLog_OnInteractionWithSpecialNpc
|
||||
special QuestLog_CutRecording
|
||||
msgbox Text_WantToUsePokeFlute, MSGBOX_YESNO
|
||||
compare VAR_RESULT, NO
|
||||
goto_if_eq Route12_EventScript_DontUsePokeFlute
|
||||
|
||||
@@ -31,7 +31,7 @@ Route12_FishingHouse_EventScript_NoRoomForSuperRod:: @ 816FF75
|
||||
|
||||
Route12_FishingHouse_EventScript_CheckMagikarpRecord:: @ 816FF7F
|
||||
goto_if_questlog EventScript_ReleaseEnd
|
||||
special QuestLog_OnInteractionWithSpecialNpc
|
||||
special QuestLog_CutRecording
|
||||
setvar VAR_0x8004, SPECIES_MAGIKARP
|
||||
specialvar VAR_RESULT, DoesPlayerPartyContainSpecies
|
||||
compare VAR_RESULT, FALSE
|
||||
|
||||
@@ -34,7 +34,7 @@ Route16_EventScript_Snorlax:: @ 8168121
|
||||
faceplayer
|
||||
goto_if_unset FLAG_GOT_POKE_FLUTE, Route16_EventScript_SnorlaxNoPokeFlute
|
||||
goto_if_questlog EventScript_ReleaseEnd
|
||||
special QuestLog_OnInteractionWithSpecialNpc
|
||||
special QuestLog_CutRecording
|
||||
msgbox Text_WantToUsePokeFlute, MSGBOX_YESNO
|
||||
compare VAR_RESULT, NO
|
||||
goto_if_eq Route16_EventScript_DontUsePokeFlute
|
||||
|
||||
@@ -19,7 +19,7 @@ SaffronCity_CopycatsHouse_2F_EventScript_Doll:: @ 816EB70
|
||||
|
||||
SaffronCity_CopycatsHouse_2F_EventScript_Copycat:: @ 816EB7B
|
||||
goto_if_questlog EventScript_ReleaseEnd
|
||||
special QuestLog_OnInteractionWithSpecialNpc
|
||||
special QuestLog_CutRecording
|
||||
lock
|
||||
faceplayer
|
||||
checkitem ITEM_POKE_DOLL, 1
|
||||
|
||||
@@ -159,7 +159,7 @@ SeafoamIslands_B4F_Movement_WalkUp:: @ 81631AA
|
||||
|
||||
SeafoamIslands_B4F_EventScript_Articuno:: @ 81631AC
|
||||
goto_if_questlog EventScript_ReleaseEnd
|
||||
special QuestLog_OnInteractionWithSpecialNpc
|
||||
special QuestLog_CutRecording
|
||||
lock
|
||||
faceplayer
|
||||
setwildbattle SPECIES_ARTICUNO, 50, ITEM_NONE
|
||||
|
||||
@@ -5,7 +5,7 @@ SixIsland_WaterPath_House1_EventScript_Beauty:: @ 817206D
|
||||
lock
|
||||
faceplayer
|
||||
goto_if_questlog EventScript_ReleaseEnd
|
||||
special QuestLog_OnInteractionWithSpecialNpc
|
||||
special QuestLog_CutRecording
|
||||
setvar VAR_0x8004, SPECIES_HERACROSS
|
||||
specialvar VAR_RESULT, DoesPlayerPartyContainSpecies
|
||||
compare VAR_RESULT, FALSE
|
||||
|
||||
@@ -23,7 +23,7 @@ ThreeIsland_BerryForest_EventScript_Lostelle:: @ 8163C83
|
||||
waitmoncry
|
||||
setwildbattle SPECIES_HYPNO, 30, ITEM_NONE
|
||||
dowildbattle
|
||||
special QuestLog_OnInteractionWithSpecialNpc
|
||||
special QuestLog_CutRecording
|
||||
applymovement 1, Movement_FacePlayer
|
||||
waitmovement 0
|
||||
msgbox ThreeIsland_BerryForest_Text_ThankYouHaveThis
|
||||
|
||||
@@ -8,7 +8,7 @@ TwoIsland_House_MapScripts:: @ 8171618
|
||||
|
||||
TwoIsland_House_EventScript_MoveManiac:: @ 8171619
|
||||
goto_if_questlog EventScript_ReleaseEnd
|
||||
special QuestLog_OnInteractionWithSpecialNpc
|
||||
special QuestLog_CutRecording
|
||||
lock
|
||||
faceplayer
|
||||
clearflag HAS_BIG_MUSHROOM
|
||||
|
||||
@@ -86,7 +86,7 @@ VermilionCity_EventScript_CheckSeagallopPresent:: @ 8166996
|
||||
|
||||
VermilionCity_EventScript_ChooseSeagallopDestRainbowPass:: @ 81669BB
|
||||
goto_if_questlog EventScript_ReleaseEnd
|
||||
special QuestLog_OnInteractionWithSpecialNpc
|
||||
special QuestLog_CutRecording
|
||||
call VermilionCity_EventScript_CheckHasMysticTicket
|
||||
compare VAR_RESULT, TRUE
|
||||
goto_if_eq VermilionCity_EventScript_HasMysticTicket
|
||||
|
||||
@@ -142,7 +142,7 @@ VermilionCity_Gym_EventScript_TrashCan15:: @ 816B837
|
||||
|
||||
VermilionCity_Gym_EventScript_TrashCan:: @ 816B843
|
||||
goto_if_questlog EventScript_ReleaseEnd
|
||||
special QuestLog_OnInteractionWithSpecialNpc
|
||||
special QuestLog_CutRecording
|
||||
copyvar SWITCH1_ID, VAR_TEMP_0
|
||||
copyvar SWITCH2_ID, VAR_TEMP_1
|
||||
goto_if_set FLAG_FOUND_BOTH_VERMILION_GYM_SWITCHES, VermilionCity_Gym_EventScript_LocksAlreadyOpen
|
||||
|
||||
@@ -146,7 +146,7 @@ ViridianCity_EventScript_WatchToLearnBasics:: @ 8165A5B
|
||||
ViridianCity_EventScript_TutorialUnused:: @ 8165A65
|
||||
msgbox ViridianCity_Text_ThatWasEducationalTakeThis
|
||||
goto_if_questlog EventScript_ReleaseEnd
|
||||
special QuestLog_OnInteractionWithSpecialNpc
|
||||
special QuestLog_CutRecording
|
||||
special StartOldManTutorialBattle
|
||||
waitstate
|
||||
release
|
||||
@@ -239,7 +239,7 @@ ViridianCity_EventScript_DoTutorialBattle:: @ 8165B4C
|
||||
msgbox ViridianCity_Text_ShowYouHowToCatchMons
|
||||
closemessage
|
||||
goto_if_questlog EventScript_ReleaseEnd
|
||||
special QuestLog_OnInteractionWithSpecialNpc
|
||||
special QuestLog_CutRecording
|
||||
special StartOldManTutorialBattle
|
||||
waitstate
|
||||
lock
|
||||
|
||||
@@ -15,7 +15,7 @@ EventScript_HideMysteryGiftMan:: @ 81BB1CE
|
||||
|
||||
CableClub_EventScript_MysteryGiftMan:: @ 81BB1D2
|
||||
goto_if_questlog EventScript_ReleaseEnd
|
||||
special QuestLog_OnInteractionWithSpecialNpc
|
||||
special QuestLog_CutRecording
|
||||
execram
|
||||
|
||||
@ Unused
|
||||
@@ -775,7 +775,7 @@ CableClub_EventScript_DoLinkRoomExit:: @ 81BB9FC
|
||||
|
||||
CableClub_EventScript_UnionRoomAttendant:: @ 81BBA04
|
||||
goto_if_questlog EventScript_ReleaseEnd
|
||||
special QuestLog_OnInteractionWithSpecialNpc
|
||||
special QuestLog_CutRecording
|
||||
lock
|
||||
faceplayer
|
||||
goto_if_unset FLAG_SYS_POKEDEX_GET, CableClub_EventScript_WirelessClubAdjustements
|
||||
@@ -885,7 +885,7 @@ CableClub_EventScript_DontAskAboutLinking:: @ 81BBB92
|
||||
|
||||
CableClub_EventScript_DirectCornerAttendant:: @ 81BBB9C
|
||||
goto_if_questlog EventScript_ReleaseEnd
|
||||
special QuestLog_OnInteractionWithSpecialNpc
|
||||
special QuestLog_CutRecording
|
||||
lock
|
||||
faceplayer
|
||||
goto_if_unset FLAG_SYS_POKEDEX_GET, CableClub_EventScript_WirelessClubAdjustements
|
||||
@@ -1195,7 +1195,7 @@ CableClub_OnResume:: @ 81BC05C
|
||||
|
||||
JoyfulGameCorner_EventScript_InfoMan2:: @ 81BC060
|
||||
goto_if_questlog EventScript_ReleaseEnd
|
||||
special QuestLog_OnInteractionWithSpecialNpc
|
||||
special QuestLog_CutRecording
|
||||
lock
|
||||
faceplayer
|
||||
message Text_DescribeWhichGame
|
||||
@@ -1225,7 +1225,7 @@ CableClub_EventScript_MinigameInfoExit:: @ 81BC0C4
|
||||
|
||||
JoyfulGameCorner_EventScript_MinigameAttendant:: @ 81BC0CE
|
||||
goto_if_questlog EventScript_ReleaseEnd
|
||||
special QuestLog_OnInteractionWithSpecialNpc
|
||||
special QuestLog_CutRecording
|
||||
lock
|
||||
faceplayer
|
||||
message Text_WelcomeCanYouWait
|
||||
|
||||
@@ -448,7 +448,7 @@ EventScript_BodySlamTaught:: @ 81C4DE2
|
||||
|
||||
TwoIsland_CapeBrink_House_EventScript_StarterTutor:: @ 81C4DEC
|
||||
goto_if_questlog EventScript_ReleaseEnd
|
||||
special QuestLog_OnInteractionWithSpecialNpc
|
||||
special QuestLog_CutRecording
|
||||
lock
|
||||
faceplayer
|
||||
goto_if_set FLAG_LEARNED_ALL_MOVES_AT_CAPE_BRINK, CapeBrinkTutor_EventScript_TaughtAllMoves
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
PokedexRating_EventScript_RateInPerson:: @ 81A737B
|
||||
goto_if_questlog EventScript_ReleaseEnd
|
||||
special QuestLog_OnInteractionWithSpecialNpc
|
||||
special QuestLog_CutRecording
|
||||
call_if_set FLAG_OAK_SAW_DEX_COMPLETION, PokedexRating_EventScript_DexCompleteIntro
|
||||
call_if_unset FLAG_OAK_SAW_DEX_COMPLETION, PokedexRating_EventScript_NormalIntro
|
||||
call PokedexRating_EventScript_Rate
|
||||
|
||||
@@ -111,7 +111,7 @@ EventScript_SetSail:: @ 81A90DA
|
||||
closemessage
|
||||
delay 20
|
||||
goto_if_questlog EventScript_ReleaseEnd
|
||||
special QuestLog_OnInteractionWithSpecialNpc
|
||||
special QuestLog_CutRecording
|
||||
fadescreen FADE_TO_BLACK
|
||||
special DoSeagallopFerryScene
|
||||
waitstate
|
||||
|
||||
@@ -92,7 +92,7 @@ FourIsland_House2_EventScript_StickerManAskForBrag:: @ 81B2994
|
||||
applymovement 1, Movement_FacePlayer
|
||||
waitmovement 0
|
||||
goto_if_questlog EventScript_ReleaseEnd
|
||||
special QuestLog_OnInteractionWithSpecialNpc
|
||||
special QuestLog_CutRecording
|
||||
compare VAR_0x8008, 0
|
||||
goto_if_eq FourIsland_House2_EventScript_NothingToBragAbout
|
||||
message FourIsland_House2_Text_BragAboutWhatToday
|
||||
|
||||
+1
-1
@@ -400,7 +400,7 @@ gSpecials:: @ 815FD60
|
||||
def_special GetMartClerkObjectId
|
||||
def_special BattleCardAction
|
||||
def_special GetQuestLogState
|
||||
def_special QuestLog_OnInteractionWithSpecialNpc
|
||||
def_special QuestLog_CutRecording
|
||||
def_special GetMENewsJisanItemAndState
|
||||
def_special GetPCBoxToSendMon
|
||||
def_special OpenMuseumFossilPic
|
||||
|
||||
@@ -0,0 +1,10 @@
|
||||
#ifndef GUARD_HELP_MESSAGE_H
|
||||
#define GUARD_HELP_MESSAGE_H
|
||||
|
||||
void DestroyHelpMessageWindow(u8 a0);
|
||||
u8 CreateHelpMessageWindow(void);
|
||||
void PrintTextOnHelpMessageWindow(const u8 * text, u8 mode);
|
||||
void MapNamePopupWindowIdSetDummy(void);
|
||||
void sub_8112F18(u8 windowId);
|
||||
|
||||
#endif //GUARD_HELP_MESSAGE_H
|
||||
+5
-5
@@ -110,10 +110,10 @@ u32 GetGameStat(u8 statId);
|
||||
void SetGameStat(u8 statId, u32 value);
|
||||
|
||||
void CB2_ContinueSavedGame(void);
|
||||
void sub_8055D5C(struct WarpData *);
|
||||
void sub_80572A8(void);
|
||||
void sub_805726C(void);
|
||||
void sub_8057430(void);
|
||||
void Overworld_SetWarpDestinationFromWarp(struct WarpData *);
|
||||
void CB2_SetUpOverworldForQLPlayback(void);
|
||||
void CB2_SetUpOverworldForQLPlaybackWithWarpExit(void);
|
||||
void CB2_EnterFieldFromQuestLog(void);
|
||||
void Overworld_PlaySpecialMapMusic(void);
|
||||
|
||||
u8 GetCurrentRegionMapSectionId(void);
|
||||
@@ -133,7 +133,7 @@ extern bool8 (* gFieldCallback2)(void);
|
||||
|
||||
void SetLastHealLocationWarp(u8 healLocaionId);
|
||||
void LoadMapFromCameraTransition(u8 mapGroup, u8 mapNum);
|
||||
void sub_80568FC(void);
|
||||
void CB2_ReturnToFieldFromDiploma(void);
|
||||
void CB2_OverworldBasic(void);
|
||||
void CB2_NewGame(void);
|
||||
bool8 IsMapTypeOutdoors(u8 mapType);
|
||||
|
||||
+47
-12
@@ -6,10 +6,31 @@
|
||||
#include "constants/quest_log.h"
|
||||
#include "field_control_avatar.h"
|
||||
|
||||
struct QuestLogEntry
|
||||
{
|
||||
u8 unk_0;
|
||||
u8 unk_1;
|
||||
u8 unk_2;
|
||||
u8 unk_3;
|
||||
u16 unk_4;
|
||||
u8 unk_6;
|
||||
};
|
||||
|
||||
struct UnkStruct_203B044
|
||||
{
|
||||
u8 unk_0;
|
||||
u8 unk_1;
|
||||
u16 unk_2;
|
||||
};
|
||||
|
||||
extern u8 gQuestLogState;
|
||||
extern u8 gQuestLogPlaybackState;
|
||||
extern const u16 gUnknown_84566A8[];
|
||||
extern struct FieldInput gQuestLogFieldInput;
|
||||
extern struct UnkStruct_203B044 gUnknown_203B044;
|
||||
extern u16 *gUnknown_203AE04;
|
||||
extern u16 *sEventRecordingPointer;
|
||||
extern u16 sQuestLogCursor;
|
||||
|
||||
void sub_8112720(u8);
|
||||
void SetQuestLogEvent(u16, const u16 *);
|
||||
@@ -19,24 +40,19 @@ u8 sub_8112CAC(void);
|
||||
bool8 QuestLog_SchedulePlaybackCB(void (*func)(void));
|
||||
void sub_8111F38(u16 offset, u16 idx);
|
||||
void CommitQuestLogWindow1(void);
|
||||
void DestroyHelpMessageWindow(u8 a0);
|
||||
u8 CreateHelpMessageWindow(void);
|
||||
void PrintTextOnHelpMessageWindow(const u8 * text, u8 mode);
|
||||
void MapNamePopupWindowIdSetDummy(void);
|
||||
void sub_8111CF0(void);
|
||||
void QuestLog_DrawPreviouslyOnQuestHeaderIfInPlaybackMode(void);
|
||||
void ResetQuestLog(void);
|
||||
void ResetTrainerFanClub(void);
|
||||
void TrySetUpQuestLogScenes_ElseContinueFromSave(u8 taskId);
|
||||
void SaveQuestLogData(void);
|
||||
void QuestLog_OnInteractionWithSpecialNpc(void);
|
||||
void QuestLog_CutRecording(void);
|
||||
u8 sub_8112CAC(void);
|
||||
void sub_81138F8(void);
|
||||
void sub_811231C(void);
|
||||
void FinishRecordingQuestLogScene(void);
|
||||
void sub_81139BC(void);
|
||||
void *QuestLogGetFlagOrVarPtr(bool8 isFlag, u16 idx);
|
||||
void QuestLogSetFlagOrVar(bool8 isFlag, u16 idx, u16 value);
|
||||
void sub_8110840(void *oldSave);
|
||||
void sub_8112F18(u8 windowId);
|
||||
void SetQuestLogRecordAndPlaybackPointers(void *oldSave);
|
||||
void sub_811246C(struct Sprite *sprite);
|
||||
void sub_81124EC(u8 a0, u8 a1, u8 a2, u8 a3);
|
||||
bool8 sub_8111C2C(void);
|
||||
@@ -53,14 +69,33 @@ void sub_81127F8(struct FieldInput * a0);
|
||||
void sub_8112B3C(void);
|
||||
void RunQuestLogCB(void);
|
||||
void sub_8111C68(void);
|
||||
bool8 sub_8111CD0(void);
|
||||
bool8 QuestLogScenePlaybackIsEnding(void);
|
||||
void sub_8115798(void);
|
||||
bool8 sub_8113748(void);
|
||||
void sub_81119C8(void);
|
||||
bool8 QuestLog_ShouldEndSceneOnMapChange(void);
|
||||
void QuestLog_AdvancePlayhead_(void);
|
||||
void sub_8111F14(void);
|
||||
void sub_8110FCC(void);
|
||||
u8 GetQuestLogStartType(void);
|
||||
void sub_81113E4(void);
|
||||
void sub_8111438(void);
|
||||
void StartRecordingQuestLogEntry(u16 eventId);
|
||||
bool8 WillCommandOfSizeFitInSav1Record(u16 *cursor, size_t size);
|
||||
bool8 sub_8110944(const void * a0, size_t cmdSize);
|
||||
|
||||
void sub_8113BD8(void);
|
||||
void ResetUnk203B044(void);
|
||||
u16 *TryRecordEvent39_NoParams(u16 *);
|
||||
u16 *sub_8113C8C(u16 *, struct QuestLogEntry *);
|
||||
u16 *sub_8113CC8(u16 *, struct QuestLogEntry *);
|
||||
u16 *sub_8113D08(u16 *, struct QuestLogEntry *);
|
||||
u16 *sub_8113D48(u16 *, struct QuestLogEntry *);
|
||||
u16 *sub_8113D94(u16 *, struct QuestLogEntry *);
|
||||
void sub_811381C(void);
|
||||
u16 *QuestLog_SkipCommand(u16 *, u16 **);
|
||||
void sub_8113ABC(const u16 *);
|
||||
u16 *sub_8113C20(u16 *, struct QuestLogEntry *);
|
||||
bool8 sub_8113AE8(const u16 *);
|
||||
bool8 sub_8113B44(const u16 *);
|
||||
void TryRecordEvent41_IncCursor(u16);
|
||||
|
||||
#endif //GUARD_QUEST_LOG_H
|
||||
|
||||
@@ -248,6 +248,9 @@ SECTIONS {
|
||||
src/mailbox_pc.o(.text);
|
||||
src/menu.o(.text);
|
||||
src/quest_log.o(.text);
|
||||
src/help_message.o(.text);
|
||||
src/trainer_fan_club.o(.text);
|
||||
src/quest_log_events.o(.text);
|
||||
src/union_room.o(.text);
|
||||
src/rfu_union_tool.o(.text);
|
||||
src/union_room_battle.o(.text);
|
||||
@@ -549,6 +552,9 @@ SECTIONS {
|
||||
src/decoration.o(.rodata);
|
||||
src/menu.o(.rodata);
|
||||
src/quest_log.o(.rodata);
|
||||
src/help_message.o(.rodata);
|
||||
src/trainer_fan_club.o(.rodata);
|
||||
src/quest_log_events.o(.rodata);
|
||||
src/union_room.o(.rodata);
|
||||
src/rfu_union_tool.o(.rodata);
|
||||
src/union_room_battle.o(.rodata);
|
||||
|
||||
+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);
|
||||
}
|
||||
@@ -203,6 +203,10 @@
|
||||
.align 2
|
||||
.include "src/quest_log.o"
|
||||
.align 2
|
||||
.include "src/help_message.o"
|
||||
.align 2
|
||||
.include "src/quest_log_events.o"
|
||||
.align 2
|
||||
.include "src/union_room.o"
|
||||
.align 2
|
||||
.include "src/rfu_union_tool.o"
|
||||
|
||||
Reference in New Issue
Block a user