summaryrefslogtreecommitdiff
path: root/soh/src/code
diff options
context:
space:
mode:
authorArchez <Archez@users.noreply.github.com>2024-02-15 20:14:24 -0500
committerGitHub <noreply@github.com>2024-02-15 19:14:24 -0600
commit13fce8258d92e80ea09900f83d338ccba2e7b1f9 (patch)
treeac61ec1426e480cda1005d805c19e66e03750aef /soh/src/code
parent3187564f5b4120e159f5e506b4a3db88716b56aa (diff)
[Rando] Add Mix and Decouple support to Boss Entrances (#3261)
* initial support for mixing boss entrances in the mixed pool * support decouple for boss entrances * missed decouple change * add blue warp exits to boss rooms in location access * add entrance get helper methods * fix assumed targets not using root in entrance name * add dedicated blue warp entrances and handle blue warp changes during generation * change bluewarp handling in game to use unique blue warp entrances * handle blue warps in entrance tracker * fix overriding all jabu and water temple rooms * fix grotto returns when exiting boss rooms/dungeons * fix blue warp logic by tracking original connected region key * use entrance enums * remove unneeded entrance values * fix decouple generation crash * fix jabu mq backwards logic
Diffstat (limited to 'soh/src/code')
-rw-r--r--soh/src/code/z_room.c13
1 files changed, 7 insertions, 6 deletions
diff --git a/soh/src/code/z_room.c b/soh/src/code/z_room.c
index 772978f09..e92925c6a 100644
--- a/soh/src/code/z_room.c
+++ b/soh/src/code/z_room.c
@@ -575,6 +575,13 @@ u32 func_80096FE8(PlayState* play, RoomContext* roomCtx) {
frontRoom = gSaveContext.respawnFlag > 0 ? ((void)0, gSaveContext.respawn[gSaveContext.respawnFlag - 1].roomIndex)
: play->setupEntranceList[play->curSpawn].room;
+
+ // In ER, override roomNum to load based on scene and spawn during scene init
+ if (IS_RANDO && gSaveContext.respawnFlag <= 0 &&
+ Randomizer_GetSettingValue(RSK_SHUFFLE_ENTRANCES)) {
+ frontRoom = Entrance_OverrideSpawnSceneRoom(play->sceneNum, play->curSpawn, frontRoom);
+ }
+
func_8009728C(play, roomCtx, frontRoom);
return maxRoomSize;
@@ -583,12 +590,6 @@ u32 func_80096FE8(PlayState* play, RoomContext* roomCtx) {
s32 func_8009728C(PlayState* play, RoomContext* roomCtx, s32 roomNum) {
size_t size;
- // In ER, override roomNum to load based on scene and spawn
- if (IS_RANDO && gSaveContext.respawnFlag <= 0 &&
- Randomizer_GetSettingValue(RSK_SHUFFLE_ENTRANCES)) {
- roomNum = Entrance_OverrideSpawnSceneRoom(play->sceneNum, play->curSpawn, roomNum);
- }
-
return OTRfunc_8009728C(play, roomCtx, roomNum);
if (roomCtx->status == 0) {