From 720b2daecc2054e6e9b8d370dc7fbaf182c1a794 Mon Sep 17 00:00:00 2001 From: Eduardo Quezada Date: Thu, 5 Dec 2024 18:25:27 -0300 Subject: [PATCH] Improve Pyramid location documentaion --- asm/macros/battle_frontier/battle_pyramid.inc | 4 ++-- data/scripts/field_poison.inc | 6 +++--- data/scripts/obtain_item.inc | 4 ++-- include/battle_pyramid.h | 9 ++++++++- include/constants/battle_pyramid.h | 6 +++++- src/battle_pyramid.c | 16 ++++++++-------- src/field_poison.c | 2 +- src/frontier_pass.c | 6 +++--- src/item_use.c | 2 +- src/party_menu.c | 2 +- 10 files changed, 34 insertions(+), 23 deletions(-) diff --git a/asm/macros/battle_frontier/battle_pyramid.inc b/asm/macros/battle_frontier/battle_pyramid.inc index bb5069f18a..42141d9937 100644 --- a/asm/macros/battle_frontier/battle_pyramid.inc +++ b/asm/macros/battle_frontier/battle_pyramid.inc @@ -69,8 +69,8 @@ .endm @ VAR_RESULT is 1 if player is on a Pyramid floor, 2 if on the Pyramid peak, 0 otherwise - .macro pyramid_inchallenge - setvar VAR_0x8004, BATTLE_PYRAMID_FUNC_IS_IN + .macro pyramid_getlocation + setvar VAR_0x8004, BATTLE_PYRAMID_FUNC_CURRENT_LOCATION special CallBattlePyramidFunction .endm diff --git a/data/scripts/field_poison.inc b/data/scripts/field_poison.inc index ddda34ebaa..1d89bcfdfd 100644 --- a/data/scripts/field_poison.inc +++ b/data/scripts/field_poison.inc @@ -29,9 +29,9 @@ EventScript_FrontierFieldWhiteOut:: waitbuttonpress pike_inchallenge goto_if_eq VAR_RESULT, TRUE, BattleFrontier_BattlePike_EventScript_Retire - pyramid_inchallenge - goto_if_eq VAR_RESULT, 1, BattleFrontier_BattlePyramid_EventScript_WarpToLobbyLost @ On Pyramid floor - goto_if_eq VAR_RESULT, 2, BattleFrontier_BattlePyramid_EventScript_WarpToLobbyLost @ On Pyramid peak + pyramid_getlocation + goto_if_eq VAR_RESULT, PYRAMID_LOCATION_FLOOR, BattleFrontier_BattlePyramid_EventScript_WarpToLobbyLost + goto_if_eq VAR_RESULT, PYRAMID_LOCATION_TOP, BattleFrontier_BattlePyramid_EventScript_WarpToLobbyLost trainerhill_inchallenge goto_if_eq VAR_RESULT, TRUE, TrainerHill_1F_EventScript_Lost special Script_FadeOutMapMusic diff --git a/data/scripts/obtain_item.inc b/data/scripts/obtain_item.inc index e982858e7b..6831a75b6e 100644 --- a/data/scripts/obtain_item.inc +++ b/data/scripts/obtain_item.inc @@ -118,8 +118,8 @@ EventScript_PickUpItem:: waitfanfare waitmessage bufferitemnameplural STR_VAR_2, VAR_0x8004, VAR_0x8005 - pyramid_inchallenge - goto_if_eq VAR_RESULT, TRUE, EventScript_PutBattlePyramidItemInBag + pyramid_getlocation + goto_if_eq VAR_RESULT, PYRAMID_LOCATION_FLOOR, EventScript_PutBattlePyramidItemInBag msgbox gText_PutItemInPocket, MSGBOX_DEFAULT return diff --git a/include/battle_pyramid.h b/include/battle_pyramid.h index 62320358b6..8b35e9967c 100644 --- a/include/battle_pyramid.h +++ b/include/battle_pyramid.h @@ -1,13 +1,15 @@ #ifndef GUARD_BATTLE_PYRAMID_H #define GUARD_BATTLE_PYRAMID_H +#include "constants/battle_pyramid.h" + void CallBattlePyramidFunction(void); u16 LocalIdToPyramidTrainerId(u8 localId); bool8 GetBattlePyramidTrainerFlag(u8 eventId); void MarkApproachingPyramidTrainersAsBattled(void); void GenerateBattlePyramidWildMon(void); u8 GetPyramidRunMultiplier(void); -u8 InBattlePyramid(void); +u8 CurrentBattlePyramidLocation(void); bool8 InBattlePyramid_(void); void PausePyramidChallenge(void); void SoftResetInBattlePyramid(void); @@ -21,4 +23,9 @@ void LoadBattlePyramidFloorObjectEventScripts(void); u8 GetNumBattlePyramidObjectEvents(void); u16 GetBattlePyramidPickupItemId(void); +static inline bool8 InBattlePyramid() +{ + return (CurrentBattlePyramidLocation() != PYRAMID_LOCATION_NONE); +} + #endif // GUARD_BATTLE_PYRAMID_H diff --git a/include/constants/battle_pyramid.h b/include/constants/battle_pyramid.h index ac80a2d7d3..08fa695cf2 100644 --- a/include/constants/battle_pyramid.h +++ b/include/constants/battle_pyramid.h @@ -43,7 +43,7 @@ #define BATTLE_PYRAMID_FUNC_SET_TRAINERS 9 #define BATTLE_PYRAMID_FUNC_SHOW_HINT_TEXT 10 #define BATTLE_PYRAMID_FUNC_UPDATE_STREAK 11 // unused -#define BATTLE_PYRAMID_FUNC_IS_IN 12 +#define BATTLE_PYRAMID_FUNC_CURRENT_LOCATION 12 #define BATTLE_PYRAMID_FUNC_UPDATE_LIGHT 13 #define BATTLE_PYRAMID_FUNC_CLEAR_HELD_ITEMS 14 #define BATTLE_PYRAMID_FUNC_SET_FLOOR_PALETTE 15 @@ -62,4 +62,8 @@ #define PYRAMID_LIGHT_SET_RADIUS 0 #define PYRAMID_LIGHT_INCR_RADIUS 1 +#define PYRAMID_LOCATION_NONE 0 // Not in the Pyramid +#define PYRAMID_LOCATION_FLOOR 1 +#define PYRAMID_LOCATION_TOP 2 + #endif // GUARD_CONSTANTS_BATTLE_PYRAMID_H diff --git a/src/battle_pyramid.c b/src/battle_pyramid.c index b4bb3cacca..b463e85357 100644 --- a/src/battle_pyramid.c +++ b/src/battle_pyramid.c @@ -79,7 +79,7 @@ static void HidePyramidItem(void); static void SetPyramidFacilityTrainers(void); static void ShowPostBattleHintText(void); static void UpdatePyramidWinStreak(void); -static void GetInBattlePyramid(void); +static void GetCurrentBattlePyramidLocation(void); static void UpdatePyramidLightRadius(void); static void ClearPyramidPartyHeldItems(void); static void SetPyramidFloorPalette(void); @@ -798,7 +798,7 @@ static void (* const sBattlePyramidFunctions[])(void) = [BATTLE_PYRAMID_FUNC_SET_TRAINERS] = SetPyramidFacilityTrainers, [BATTLE_PYRAMID_FUNC_SHOW_HINT_TEXT] = ShowPostBattleHintText, [BATTLE_PYRAMID_FUNC_UPDATE_STREAK] = UpdatePyramidWinStreak, - [BATTLE_PYRAMID_FUNC_IS_IN] = GetInBattlePyramid, + [BATTLE_PYRAMID_FUNC_CURRENT_LOCATION] = GetCurrentBattlePyramidLocation, [BATTLE_PYRAMID_FUNC_UPDATE_LIGHT] = UpdatePyramidLightRadius, [BATTLE_PYRAMID_FUNC_CLEAR_HELD_ITEMS] = ClearPyramidPartyHeldItems, [BATTLE_PYRAMID_FUNC_SET_FLOOR_PALETTE] = SetPyramidFloorPalette, @@ -1113,9 +1113,9 @@ static void UpdatePyramidWinStreak(void) gSaveBlock2Ptr->frontier.pyramidRecordStreaks[lvlMode] = gSaveBlock2Ptr->frontier.pyramidWinStreaks[lvlMode]; } -static void GetInBattlePyramid(void) +static void GetCurrentBattlePyramidLocation(void) { - gSpecialVar_Result = InBattlePyramid(); + gSpecialVar_Result = CurrentBattlePyramidLocation(); } static void UpdatePyramidLightRadius(void) @@ -1419,14 +1419,14 @@ u8 GetPyramidRunMultiplier(void) return sPyramidFloorTemplates[id].runMultiplier; } -u8 InBattlePyramid(void) +u8 CurrentBattlePyramidLocation(void) { if (gMapHeader.mapLayoutId == LAYOUT_BATTLE_FRONTIER_BATTLE_PYRAMID_FLOOR) - return 1; + return PYRAMID_LOCATION_FLOOR; else if (gMapHeader.mapLayoutId == LAYOUT_BATTLE_FRONTIER_BATTLE_PYRAMID_TOP) - return 2; + return PYRAMID_LOCATION_TOP; else - return FALSE; + return PYRAMID_LOCATION_NONE; } bool8 InBattlePyramid_(void) diff --git a/src/field_poison.c b/src/field_poison.c index d952b4b640..e0b08b8716 100644 --- a/src/field_poison.c +++ b/src/field_poison.c @@ -92,7 +92,7 @@ static void Task_TryFieldPoisonWhiteOut(u8 taskId) #ifdef BUGFIX if (InBattlePyramid() || InBattlePike() || InTrainerHillChallenge()) #else - if (InBattlePyramid() | InBattlePike() || InTrainerHillChallenge()) + if (CurrentBattlePyramidLocation() | InBattlePike() || InTrainerHillChallenge()) #endif gSpecialVar_Result = FLDPSN_FRONTIER_WHITEOUT; else diff --git a/src/frontier_pass.c b/src/frontier_pass.c index a351d81ce9..960684c9ea 100644 --- a/src/frontier_pass.c +++ b/src/frontier_pass.c @@ -917,12 +917,12 @@ static void CB2_ReturnFromRecord(void) sPassData->cursorX = sSavedPassData.cursorX; sPassData->cursorY = sSavedPassData.cursorY; memset(&sSavedPassData, 0, sizeof(sSavedPassData)); - switch (InBattlePyramid()) + switch (CurrentBattlePyramidLocation()) { - case 1: + case PYRAMID_LOCATION_FLOOR: PlayBGM(MUS_B_PYRAMID); break; - case 2: + case PYRAMID_LOCATION_TOP: PlayBGM(MUS_B_PYRAMID_TOP); break; default: diff --git a/src/item_use.c b/src/item_use.c index 322eaf76c0..181698ac30 100755 --- a/src/item_use.c +++ b/src/item_use.c @@ -983,7 +983,7 @@ static void Task_UseStatIncreaseItem(u8 taskId) { PlaySE(SE_USE_ITEM); RemoveBagItem(gSpecialVar_ItemId, 1); - if (!InBattlePyramid()) + if (CurrentBattlePyramidLocation() == PYRAMID_LOCATION_NONE) // !InBattlePyramid() doesn't match DisplayItemMessage(taskId, FONT_NORMAL, UseStatIncreaseItem(gSpecialVar_ItemId), Task_CloseStatIncreaseMessage); else DisplayItemMessageInBattlePyramid(taskId, UseStatIncreaseItem(gSpecialVar_ItemId), Task_CloseStatIncreaseMessage); diff --git a/src/party_menu.c b/src/party_menu.c index cbd469713a..f6dd6a264c 100755 --- a/src/party_menu.c +++ b/src/party_menu.c @@ -5358,7 +5358,7 @@ void CB2_PartyMenuFromStartMenu(void) // As opposted to by selecting Give in the party menu, which is handled by CursorCb_Give void CB2_ChooseMonToGiveItem(void) { - MainCallback callback = (InBattlePyramid() == FALSE) ? CB2_ReturnToBagMenu : CB2_ReturnToPyramidBagMenu; + MainCallback callback = (!InBattlePyramid()) ? CB2_ReturnToBagMenu : CB2_ReturnToPyramidBagMenu; InitPartyMenu(PARTY_MENU_TYPE_FIELD, PARTY_LAYOUT_SINGLE, PARTY_ACTION_GIVE_ITEM, FALSE, PARTY_MSG_GIVE_TO_WHICH_MON, Task_HandleChooseMonInput, callback); gPartyMenu.bagItem = gSpecialVar_ItemId; }