diff options
Diffstat (limited to 'src/secret_base.c')
-rw-r--r-- | src/secret_base.c | 49 |
1 files changed, 31 insertions, 18 deletions
diff --git a/src/secret_base.c b/src/secret_base.c index 097d95cfe..21dd83dd2 100644 --- a/src/secret_base.c +++ b/src/secret_base.c @@ -30,6 +30,7 @@ #include "task.h" #include "text.h" #include "constants/event_bg.h" +#include "constants/event_objects.h" #include "constants/decorations.h" #include "constants/items.h" #include "constants/map_types.h" @@ -50,9 +51,10 @@ static void sub_80BCBC0(u8); static void sub_80BCBF8(u8 taskId); static void sub_80BCC54(u8 taskId); static void Task_SecretBasePC_Registry(u8 taskId); +static u8 GetSecretBaseOwnerType(u8 secretBaseIndex); -extern u8 gUnknown_0815F399[]; -extern u8 gUnknown_0815F49A[]; +extern u8 SecretBase_EventScript_PCCancel[]; +extern u8 SecretBase_EventScript_ShowRegisterMenu[]; EWRAM_DATA u8 gCurrentSecretBaseId = 0; const struct @@ -107,8 +109,19 @@ const struct YesNoFuncTable gUnknown_083D13E4 = { sub_80BCBC0 }; -const u8 gUnknown_083D13EC[] = { - 0x23,0x24,0xF,0x1F,0x21,0x2F,0xE,0x14,0x20,0x22,0x0,0x0 +static const u8 sSecretBaseOwnerGfxIds[] = { + // Male + OBJ_EVENT_GFX_YOUNGSTER, + OBJ_EVENT_GFX_BUG_CATCHER, + OBJ_EVENT_GFX_BOY_4, + OBJ_EVENT_GFX_CAMPER, + OBJ_EVENT_GFX_MAN_4, + // Female + OBJ_EVENT_GFX_LASS, + OBJ_EVENT_GFX_GIRL_3, + OBJ_EVENT_GFX_WOMAN_3, + OBJ_EVENT_GFX_PICNICKER, + OBJ_EVENT_GFX_WOMAN_7, }; extern u8 gUnknown_081A2E14[]; @@ -380,7 +393,7 @@ void sub_80BBAF0(void) bool8 sub_80BBB24(void) { - if (gMapHeader.mapType == MAP_TYPE_SECRET_BASE && VarGet(VAR_0x4097) == 0) + if (gMapHeader.mapType == MAP_TYPE_SECRET_BASE && VarGet(VAR_INIT_SECRET_BASE) == 0) return FALSE; return TRUE; } @@ -462,7 +475,7 @@ void sub_80BBCCC(u8 flagIn) sub_80BB764(&x, &y, 0x220); MapGridSetMetatileIdAt(x + 7, y + 7, 0xe21); } - else if (flagIn == 1 && VarGet(VAR_0x4089) == 1) + else if (flagIn == 1 && VarGet(VAR_SECRET_BASE_INITIALIZED) == 1) { sub_80BB764(&x, &y, 0x220); MapGridSetMetatileIdAt(x + 7, y + 7, 0xe0a); @@ -512,7 +525,7 @@ void sub_80BBDD0(void) metatile = MapGridGetMetatileBehaviorAt(gSpecialVar_0x8006 + 7, gSpecialVar_0x8007 + 7); if (MetatileBehavior_IsSecretBaseLargeMatEdge(metatile) == TRUE || MetatileBehavior_IsLargeMatCenter(metatile) == TRUE) { - gSpecialVar_Result = gMapHeader.events->objectEvents[objid].graphicsId + VAR_0x3F20; + gSpecialVar_Result = VAR_OBJ_GFX_ID_0 + (gMapHeader.events->objectEvents[objid].graphicsId - OBJ_EVENT_GFX_VAR_0); VarSet(gSpecialVar_Result, gDecorations[roomdecor[decidx]].tiles[0]); gSpecialVar_Result = gMapHeader.events->objectEvents[objid].localId; FlagClear(gSpecialVar_0x8004 + 0xAE); @@ -527,10 +540,10 @@ void sub_80BBDD0(void) } } -void sub_80BBFA4(void) +void SetSecretBaseOwnerGfxId(void) { int curBase = VarGet(VAR_CURRENT_SECRET_BASE); - VarSet(VAR_OBJ_GFX_ID_F, gUnknown_083D13EC[sub_80BCCA4(curBase)]); + VarSet(VAR_OBJ_GFX_ID_F, sSecretBaseOwnerGfxIds[GetSecretBaseOwnerType(curBase)]); } void SetCurrentSecretBaseFromPosition(struct MapPosition *position, struct MapEvents *events) @@ -704,7 +717,7 @@ void sub_80BC440(void) sub_80BC0F8(); } -void SecretBasePC_PackUp(void) +void MoveOutOfSecretBase(void) { IncrementGameStat(GAME_STAT_MOVED_SECRET_BASE); sub_80BC440(); @@ -765,7 +778,7 @@ u8 sub_80BC538(void) return retVal; } -void sub_80BC56C(void) +void GetCurSecretBaseRegistrationValidity(void) { if (sub_80BC268(sub_80BC14C(gCurrentSecretBaseId)) == TRUE) gSpecialVar_Result = 1; @@ -775,10 +788,10 @@ void sub_80BC56C(void) gSpecialVar_Result = 0; } -void sub_80BC5BC(void) +void ToggleCurSecretBaseRegistry(void) { gSaveBlock1.secretBases[sub_80BC14C(gCurrentSecretBaseId)].sbr_field_1_6 ^= 1; - FlagSet(FLAG_DECORATION_16); + FlagSet(FLAG_SECRET_BASE_REGISTRY_ENABLED); } void SecretBasePC_Decoration(void) @@ -1076,14 +1089,14 @@ void sub_80BCC54(u8 taskId) DestroyVerticalScrollIndicator(BOTTOM_ARROW); if (curBaseIndex == 0) - ScriptContext1_SetupScript(gUnknown_0815F399); + ScriptContext1_SetupScript(SecretBase_EventScript_PCCancel); else - ScriptContext1_SetupScript(gUnknown_0815F49A); + ScriptContext1_SetupScript(SecretBase_EventScript_ShowRegisterMenu); DestroyTask(taskId); } -u8 sub_80BCCA4(u8 secretBaseIndex) +static u8 GetSecretBaseOwnerType(u8 secretBaseIndex) { return (gSaveBlock1.secretBases[secretBaseIndex].playerName[OT_NAME_LENGTH] % 5) + gSaveBlock1.secretBases[secretBaseIndex].gender * 5; @@ -1091,7 +1104,7 @@ u8 sub_80BCCA4(u8 secretBaseIndex) const u8 *GetSecretBaseTrainerLoseText(void) { - u8 param = sub_80BCCA4(VarGet(VAR_CURRENT_SECRET_BASE)); + u8 param = GetSecretBaseOwnerType(VarGet(VAR_CURRENT_SECRET_BASE)); if (param == 0) return UnknownString_81A1BB2; if (param == 1) return UnknownString_81A1F67; if (param == 2) return UnknownString_81A2254; @@ -1147,7 +1160,7 @@ void sub_80BCE90() FlagSet(FLAG_DAILY_UNKNOWN_8C2); } - gSpecialVar_0x8004 = sub_80BCCA4(curBaseIndex); + gSpecialVar_0x8004 = GetSecretBaseOwnerType(curBaseIndex); gSpecialVar_Result = gSaveBlock1.secretBases[curBaseIndex].sbr_field_1_5; } |