Split quest_log.c

This commit is contained in:
PikalaxALT
2020-04-06 17:58:24 -04:00
parent a622448029
commit c78101535b
53 changed files with 3027 additions and 2933 deletions
+1 -1
View File
@@ -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
+1 -1
View File
@@ -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
+1 -1
View File
@@ -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
+1 -1
View File
@@ -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
+1 -1
View File
@@ -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
+2 -2
View File
@@ -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
+1 -1
View File
@@ -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
+1 -1
View File
@@ -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
+1 -1
View File
@@ -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
+1 -1
View File
@@ -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
+3 -3
View File
@@ -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
+1 -1
View File
@@ -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
+1 -1
View File
@@ -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
+1 -1
View File
@@ -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
+1 -1
View File
@@ -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
+1 -1
View File
@@ -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
+1 -1
View File
@@ -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
+1 -1
View File
@@ -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
+2 -2
View File
@@ -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
+5 -5
View File
@@ -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
+1 -1
View File
@@ -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 -1
View File
@@ -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
+1 -1
View File
@@ -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
+1 -1
View File
@@ -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
View File
@@ -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
+10
View File
@@ -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
View File
@@ -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
View File
@@ -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
+6
View File
@@ -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
View File
@@ -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
View File
@@ -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)
+1 -1
View File
@@ -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
View File
@@ -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;
+3 -3
View File
@@ -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
View File
@@ -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);
}
}
+197
View File
@@ -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
View File
@@ -78,7 +78,7 @@ void SetSaveBlocksPointers(void)
gPokemonStoragePtr = (void*)(&gPokemonStorage) + offset;
SetBagPocketsPointers();
sub_8110840(oldSave);
SetQuestLogRecordAndPlaybackPointers(oldSave);
}
void MoveSaveBlocks_ResetHeap(void)
+2 -7
View File
@@ -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
View File
@@ -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();
+1
View File
@@ -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
View File
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+1
View File
@@ -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"
+359
View File
@@ -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);
}
+4
View File
@@ -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"