Merge remote-tracking branch 'upstream' into tustin2121-patch-5
This commit is contained in:
109
src/overworld.c
109
src/overworld.c
@@ -26,7 +26,7 @@
|
||||
#include "link_rfu.h"
|
||||
#include "load_save.h"
|
||||
#include "main.h"
|
||||
#include "alloc.h"
|
||||
#include "malloc.h"
|
||||
#include "m4a.h"
|
||||
#include "map_name_popup.h"
|
||||
#include "match_call.h"
|
||||
@@ -64,6 +64,7 @@
|
||||
#include "constants/region_map_sections.h"
|
||||
#include "constants/songs.h"
|
||||
#include "constants/species.h"
|
||||
#include "constants/trainer_hill.h"
|
||||
#include "constants/weather.h"
|
||||
|
||||
#define PLAYER_TRADING_STATE_IDLE 0x80
|
||||
@@ -85,19 +86,19 @@
|
||||
extern const u8 EventScript_WhiteOut[];
|
||||
extern const u8 EventScript_ResetMrBriney[];
|
||||
extern const u8 EventScript_DoLinkRoomExit[];
|
||||
extern const u8 gEventScript_TradeRoom_TooBusyToNotice[];
|
||||
extern const u8 gEventScript_TradeRoom_ReadTrainerCard_NoColor[];
|
||||
extern const u8 gEventScript_TradeRoom_ReadTrainerCard_Normal[];
|
||||
extern const u8 EventScript_DoubleBattleColosseum_PlayerSpot0[];
|
||||
extern const u8 EventScript_DoubleBattleColosseum_PlayerSpot1[];
|
||||
extern const u8 EventScript_DoubleBattleColosseum_PlayerSpot2[];
|
||||
extern const u8 EventScript_DoubleBattleColosseum_PlayerSpot3[];
|
||||
extern const u8 CableClub_EventScript_TooBusyToNotice[];
|
||||
extern const u8 CableClub_EventScript_ReadTrainerCard[];
|
||||
extern const u8 CableClub_EventScript_ReadTrainerCardColored[];
|
||||
extern const u8 EventScript_BattleColosseum_4P_PlayerSpot0[];
|
||||
extern const u8 EventScript_BattleColosseum_4P_PlayerSpot1[];
|
||||
extern const u8 EventScript_BattleColosseum_4P_PlayerSpot2[];
|
||||
extern const u8 EventScript_BattleColosseum_4P_PlayerSpot3[];
|
||||
extern const u8 EventScript_RecordCenter_Spot0[];
|
||||
extern const u8 EventScript_RecordCenter_Spot1[];
|
||||
extern const u8 EventScript_RecordCenter_Spot2[];
|
||||
extern const u8 EventScript_RecordCenter_Spot3[];
|
||||
extern const u8 EventScript_SingleBattleColosseum_PlayerSpot0[];
|
||||
extern const u8 EventScript_SingleBattleColosseum_PlayerSpot1[];
|
||||
extern const u8 EventScript_BattleColosseum_2P_PlayerSpot0[];
|
||||
extern const u8 EventScript_BattleColosseum_2P_PlayerSpot1[];
|
||||
extern const u8 EventScript_TradeCenter_Chair1[];
|
||||
extern const u8 EventScript_TradeCenter_Chair0[];
|
||||
extern const u8 EventScript_ConfirmLeaveTradeRoom[];
|
||||
@@ -431,11 +432,11 @@ static void Overworld_ResetStateAfterWhiteOut(void)
|
||||
FlagClear(FLAG_SYS_USE_STRENGTH);
|
||||
FlagClear(FLAG_SYS_USE_FLASH);
|
||||
// If you were defeated by Kyogre/Groudon and the step counter has
|
||||
// maxed out, end the unusual weather.
|
||||
if (VarGet(VAR_SHOULD_END_UNUSUAL_WEATHER) == 1)
|
||||
// maxed out, end the abnormal weather.
|
||||
if (VarGet(VAR_SHOULD_END_ABNORMAL_WEATHER) == 1)
|
||||
{
|
||||
VarSet(VAR_SHOULD_END_UNUSUAL_WEATHER, 0);
|
||||
VarSet(VAR_UNUSUAL_WEATHER_LOCATION, UNUSUAL_WEATHER_NONE);
|
||||
VarSet(VAR_SHOULD_END_ABNORMAL_WEATHER, 0);
|
||||
VarSet(VAR_ABNORMAL_WEATHER_LOCATION, ABNORMAL_WEATHER_NONE);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -851,10 +852,10 @@ static void mli0_load_map(u32 a1)
|
||||
LoadCurrentMapData();
|
||||
if (!(sUnknown_020322D8 & 1))
|
||||
{
|
||||
if (gMapHeader.mapLayoutId == LAYOUT_BATTLE_FRONTIER_BATTLE_PYRAMID_EMPTY_SQUARE)
|
||||
if (gMapHeader.mapLayoutId == LAYOUT_BATTLE_FRONTIER_BATTLE_PYRAMID_FLOOR)
|
||||
LoadBattlePyramidEventObjectTemplates();
|
||||
else if (InTrainerHill())
|
||||
sub_81D5DF8();
|
||||
LoadTrainerHillEventObjectTemplates();
|
||||
else
|
||||
LoadEventObjTemplatesFromHeader();
|
||||
}
|
||||
@@ -862,7 +863,7 @@ static void mli0_load_map(u32 a1)
|
||||
isOutdoors = IsMapTypeOutdoors(gMapHeader.mapType);
|
||||
isIndoors = IsMapTypeIndoors(gMapHeader.mapType);
|
||||
|
||||
sub_80EB218();
|
||||
CheckLeftFriendsSecretBase();
|
||||
TrySetMapSaveWarpStatus();
|
||||
ClearTempFieldEventData();
|
||||
ResetCyclingRoadChallengeData();
|
||||
@@ -879,7 +880,7 @@ static void mli0_load_map(u32 a1)
|
||||
RunOnTransitionMapScript();
|
||||
UpdateLocationHistoryForRoamer();
|
||||
RoamerMoveToOtherLocationSet();
|
||||
if (gMapHeader.mapLayoutId == LAYOUT_BATTLE_FRONTIER_BATTLE_PYRAMID_EMPTY_SQUARE)
|
||||
if (gMapHeader.mapLayoutId == LAYOUT_BATTLE_FRONTIER_BATTLE_PYRAMID_FLOOR)
|
||||
InitBattlePyramidMap(FALSE);
|
||||
else if (InTrainerHill())
|
||||
InitTrainerHillMap();
|
||||
@@ -977,7 +978,7 @@ static u16 GetCenterScreenMetatileBehavior(void)
|
||||
|
||||
bool32 Overworld_IsBikingAllowed(void)
|
||||
{
|
||||
if (!(gMapHeader.flags & 1))
|
||||
if (!(gMapHeader.flags & MAP_ALLOW_BIKE))
|
||||
return FALSE;
|
||||
else
|
||||
return TRUE;
|
||||
@@ -1183,7 +1184,7 @@ void Overworld_ClearSavedMusic(void)
|
||||
|
||||
static void sub_8085810(void)
|
||||
{
|
||||
if (FlagGet(FLAG_SPECIAL_FLAG_0x4001) != TRUE)
|
||||
if (FlagGet(FLAG_DONT_TRANSITION_MUSIC) != TRUE)
|
||||
{
|
||||
u16 newMusic = GetWarpDestinationMusic();
|
||||
u16 currentMusic = GetCurrentMapMusic();
|
||||
@@ -1231,7 +1232,7 @@ void TryFadeOutOldMapMusic(void)
|
||||
{
|
||||
u16 currentMusic = GetCurrentMapMusic();
|
||||
u16 warpMusic = GetWarpDestinationMusic();
|
||||
if (FlagGet(FLAG_SPECIAL_FLAG_0x4001) != TRUE && warpMusic != GetCurrentMapMusic())
|
||||
if (FlagGet(FLAG_DONT_TRANSITION_MUSIC) != TRUE && warpMusic != GetCurrentMapMusic())
|
||||
{
|
||||
if (currentMusic == MUS_NAMINORI
|
||||
&& VarGet(VAR_SKY_PILLAR_STATE) == 2
|
||||
@@ -1525,7 +1526,7 @@ static bool8 map_post_load_hook_exec(void)
|
||||
if (gFieldCallback)
|
||||
gFieldCallback();
|
||||
else
|
||||
mapldr_default();
|
||||
FieldCB_DefaultWarpExit();
|
||||
|
||||
gFieldCallback = NULL;
|
||||
}
|
||||
@@ -1564,7 +1565,7 @@ void CB2_WhiteOut(void)
|
||||
ResetInitialPlayerAvatarState();
|
||||
ScriptContext1_Init();
|
||||
ScriptContext2_Disable();
|
||||
gFieldCallback = sub_80AF3C8;
|
||||
gFieldCallback = FieldCB_WarpExitFadeFromBlack;
|
||||
val = 0;
|
||||
do_load_map_stuff_loop(&val);
|
||||
SetFieldVBlankCallback();
|
||||
@@ -1608,10 +1609,10 @@ void sub_8086024(void)
|
||||
}
|
||||
}
|
||||
|
||||
void sub_8086074(void)
|
||||
void CB2_ReturnToFieldCableClub(void)
|
||||
{
|
||||
FieldClearVBlankHBlankCallbacks();
|
||||
gFieldCallback = sub_80AF314;
|
||||
gFieldCallback = FieldCB_ReturnToFieldWirelessLink;
|
||||
SetMainCallback2(c2_80567AC);
|
||||
}
|
||||
|
||||
@@ -1662,9 +1663,9 @@ void CB2_ReturnToFieldFromMultiplayer(void)
|
||||
ResetAllMultiplayerState();
|
||||
|
||||
if (gWirelessCommType != 0)
|
||||
gFieldCallback = sub_80AF314;
|
||||
gFieldCallback = FieldCB_ReturnToFieldWirelessLink;
|
||||
else
|
||||
gFieldCallback = sub_80AF214;
|
||||
gFieldCallback = FieldCB_ReturnToFieldCableLink;
|
||||
|
||||
ScriptContext1_Init();
|
||||
ScriptContext2_Disable();
|
||||
@@ -1674,36 +1675,36 @@ void CB2_ReturnToFieldFromMultiplayer(void)
|
||||
void CB2_ReturnToFieldWithOpenMenu(void)
|
||||
{
|
||||
FieldClearVBlankHBlankCallbacks();
|
||||
gFieldCallback2 = sub_80AF6A4;
|
||||
gFieldCallback2 = FieldCB_ReturnToFieldOpenStartMenu;
|
||||
CB2_ReturnToField();
|
||||
}
|
||||
|
||||
void CB2_ReturnToFieldContinueScript(void)
|
||||
{
|
||||
FieldClearVBlankHBlankCallbacks();
|
||||
gFieldCallback = sub_80AF188;
|
||||
gFieldCallback = FieldCB_ContinueScript;
|
||||
CB2_ReturnToField();
|
||||
}
|
||||
|
||||
void CB2_ReturnToFieldContinueScriptPlayMapMusic(void)
|
||||
{
|
||||
FieldClearVBlankHBlankCallbacks();
|
||||
gFieldCallback = FieldCallback_ReturnToEventScript2;
|
||||
gFieldCallback = FieldCB_ContinueScriptHandleMusic;
|
||||
CB2_ReturnToField();
|
||||
}
|
||||
|
||||
void sub_80861E8(void)
|
||||
{
|
||||
FieldClearVBlankHBlankCallbacks();
|
||||
gFieldCallback = sub_80AF3C8;
|
||||
gFieldCallback = FieldCB_WarpExitFadeFromBlack;
|
||||
CB2_ReturnToField();
|
||||
}
|
||||
|
||||
static void sub_8086204(void)
|
||||
{
|
||||
if ((gMapHeader.flags & 0xF8) == 8 && SecretBaseMapPopupEnabled() == TRUE)
|
||||
if (SHOW_MAP_NAME_ENABLED && SecretBaseMapPopupEnabled() == TRUE)
|
||||
ShowMapNamePopup();
|
||||
sub_80AF3C8();
|
||||
FieldCB_WarpExitFadeFromBlack();
|
||||
}
|
||||
|
||||
void CB2_ContinueSavedGame(void)
|
||||
@@ -1713,23 +1714,23 @@ void CB2_ContinueSavedGame(void)
|
||||
FieldClearVBlankHBlankCallbacks();
|
||||
StopMapMusic();
|
||||
ResetSafariZoneFlag_();
|
||||
if (gSaveFileStatus == 0xFF)
|
||||
sub_81A3908();
|
||||
if (gSaveFileStatus == SAVE_STATUS_ERROR)
|
||||
ResetWinStreaks();
|
||||
|
||||
LoadSaveblockMapHeader();
|
||||
ClearDiveAndHoleWarps();
|
||||
trainerHillMapId = GetCurrentTrainerHillMapId();
|
||||
if (gMapHeader.mapLayoutId == LAYOUT_BATTLE_FRONTIER_BATTLE_PYRAMID_EMPTY_SQUARE)
|
||||
if (gMapHeader.mapLayoutId == LAYOUT_BATTLE_FRONTIER_BATTLE_PYRAMID_FLOOR)
|
||||
LoadBattlePyramidFloorEventObjectScripts();
|
||||
else if (trainerHillMapId != 0 && trainerHillMapId != 6)
|
||||
sub_81D5F48();
|
||||
else if (trainerHillMapId != 0 && trainerHillMapId != TRAINER_HILL_ENTRANCE)
|
||||
LoadTrainerHillFloorEventObjectScripts();
|
||||
else
|
||||
LoadSaveblockEventObjScripts();
|
||||
|
||||
UnfreezeEventObjects();
|
||||
DoTimeBasedEvents();
|
||||
sub_8084788();
|
||||
if (gMapHeader.mapLayoutId == LAYOUT_BATTLE_FRONTIER_BATTLE_PYRAMID_EMPTY_SQUARE)
|
||||
if (gMapHeader.mapLayoutId == LAYOUT_BATTLE_FRONTIER_BATTLE_PYRAMID_FLOOR)
|
||||
InitBattlePyramidMap(TRUE);
|
||||
else if (trainerHillMapId != 0)
|
||||
InitTrainerHillMap();
|
||||
@@ -1759,7 +1760,7 @@ void CB2_ContinueSavedGame(void)
|
||||
|
||||
static void FieldClearVBlankHBlankCallbacks(void)
|
||||
{
|
||||
if (warp0_in_pokecenter() == TRUE)
|
||||
if (UsedPokemonCenterWarp() == TRUE)
|
||||
CloseLink();
|
||||
|
||||
if (gWirelessCommType != 0)
|
||||
@@ -1947,7 +1948,7 @@ static bool32 load_map_stuff(u8 *state, u32 a2)
|
||||
(*state)++;
|
||||
break;
|
||||
case 11:
|
||||
if ((gMapHeader.flags & 0xF8) == 8 && SecretBaseMapPopupEnabled() == TRUE)
|
||||
if (SHOW_MAP_NAME_ENABLED && SecretBaseMapPopupEnabled() == TRUE)
|
||||
ShowMapNamePopup();
|
||||
(*state)++;
|
||||
break;
|
||||
@@ -2435,7 +2436,7 @@ static void UpdateAllLinkPlayers(u16 *keys, s32 selfId)
|
||||
struct TradeRoomPlayer trainer;
|
||||
s32 i;
|
||||
|
||||
for (i = 0; i < 4; i++)
|
||||
for (i = 0; i < MAX_LINK_PLAYERS; i++)
|
||||
{
|
||||
u8 key = keys[i];
|
||||
u16 setFacing = FACING_NONE;
|
||||
@@ -2742,7 +2743,7 @@ static bool32 PlayerIsAtSouthExit(struct TradeRoomPlayer *player)
|
||||
return FALSE;
|
||||
else if (!MetatileBehavior_IsSouthArrowWarp(player->field_C))
|
||||
return FALSE;
|
||||
else if (player->facing != 1)
|
||||
else if (player->facing != DIR_SOUTH)
|
||||
return FALSE;
|
||||
else
|
||||
return TRUE;
|
||||
@@ -2765,13 +2766,13 @@ static const u8 *TryInteractWithPlayer(struct TradeRoomPlayer *player)
|
||||
if (linkPlayerId != 4)
|
||||
{
|
||||
if (!player->isLocalPlayer)
|
||||
return gEventScript_TradeRoom_TooBusyToNotice;
|
||||
return CableClub_EventScript_TooBusyToNotice;
|
||||
else if (sPlayerTradingStates[linkPlayerId] != PLAYER_TRADING_STATE_IDLE)
|
||||
return gEventScript_TradeRoom_TooBusyToNotice;
|
||||
return CableClub_EventScript_TooBusyToNotice;
|
||||
else if (!GetLinkTrainerCardColor(linkPlayerId))
|
||||
return gEventScript_TradeRoom_ReadTrainerCard_NoColor;
|
||||
return CableClub_EventScript_ReadTrainerCard;
|
||||
else
|
||||
return gEventScript_TradeRoom_ReadTrainerCard_Normal;
|
||||
return CableClub_EventScript_ReadTrainerCardColored;
|
||||
}
|
||||
|
||||
return GetInteractedLinkPlayerScript(&otherPlayerPos, player->field_C, player->facing);
|
||||
@@ -2781,13 +2782,13 @@ static const u8 *TryInteractWithPlayer(struct TradeRoomPlayer *player)
|
||||
// these event scripts runs.
|
||||
static u16 GetDirectionForEventScript(const u8 *script)
|
||||
{
|
||||
if (script == EventScript_DoubleBattleColosseum_PlayerSpot0)
|
||||
if (script == EventScript_BattleColosseum_4P_PlayerSpot0)
|
||||
return FACING_FORCED_RIGHT;
|
||||
else if (script == EventScript_DoubleBattleColosseum_PlayerSpot1)
|
||||
else if (script == EventScript_BattleColosseum_4P_PlayerSpot1)
|
||||
return FACING_FORCED_LEFT;
|
||||
else if (script == EventScript_DoubleBattleColosseum_PlayerSpot2)
|
||||
else if (script == EventScript_BattleColosseum_4P_PlayerSpot2)
|
||||
return FACING_FORCED_RIGHT;
|
||||
else if (script == EventScript_DoubleBattleColosseum_PlayerSpot3)
|
||||
else if (script == EventScript_BattleColosseum_4P_PlayerSpot3)
|
||||
return FACING_FORCED_LEFT;
|
||||
else if (script == EventScript_RecordCenter_Spot0)
|
||||
return FACING_FORCED_RIGHT;
|
||||
@@ -2797,9 +2798,9 @@ static u16 GetDirectionForEventScript(const u8 *script)
|
||||
return FACING_FORCED_RIGHT;
|
||||
else if (script == EventScript_RecordCenter_Spot3)
|
||||
return FACING_FORCED_LEFT;
|
||||
else if (script == EventScript_SingleBattleColosseum_PlayerSpot0)
|
||||
else if (script == EventScript_BattleColosseum_2P_PlayerSpot0)
|
||||
return FACING_FORCED_RIGHT;
|
||||
else if (script == EventScript_SingleBattleColosseum_PlayerSpot1)
|
||||
else if (script == EventScript_BattleColosseum_2P_PlayerSpot1)
|
||||
return FACING_FORCED_LEFT;
|
||||
else if (script == EventScript_TradeCenter_Chair0)
|
||||
return FACING_FORCED_RIGHT;
|
||||
@@ -3026,7 +3027,7 @@ static s32 sub_80878E4(u8 linkPlayerId)
|
||||
static u8 GetLinkPlayerIdAt(s16 x, s16 y)
|
||||
{
|
||||
u8 i;
|
||||
for (i = 0; i < 4; i++)
|
||||
for (i = 0; i < MAX_LINK_PLAYERS; i++)
|
||||
{
|
||||
if (gLinkPlayerEventObjects[i].active
|
||||
&& (gLinkPlayerEventObjects[i].movementMode == 0 || gLinkPlayerEventObjects[i].movementMode == 2))
|
||||
|
||||
Reference in New Issue
Block a user