This commit is contained in:
Philip Dubé 2025-07-28 18:27:34 +01:00 committed by GitHub
commit eaaf2c93de
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 107 additions and 15 deletions

View file

@ -259,16 +259,60 @@ void RandomizerOnFlagSetHandler(int16_t flagType, int16_t flag) {
}
void RandomizerOnSceneFlagSetHandler(int16_t sceneNum, int16_t flagType, int16_t flag) {
if (RAND_GET_OPTION(RSK_SHUFFLE_DUNGEON_ENTRANCES) != RO_DUNGEON_ENTRANCE_SHUFFLE_OFF &&
sceneNum == SCENE_GERUDOS_FORTRESS && flagType == FLAG_SCENE_SWITCH && flag == 0x3A) {
if (flagType == FLAG_SCENE_SWITCH) {
auto dungeonInfo = Rando::Context::GetInstance()->GetDungeons()->GetDungeonFromScene(sceneNum);
bool isVanilla = dungeonInfo == nullptr || dungeonInfo->IsVanilla();
switch (sceneNum) {
case SCENE_GERUDOS_FORTRESS:
if (RAND_GET_OPTION(RSK_SHUFFLE_DUNGEON_ENTRANCES) != RO_DUNGEON_ENTRANCE_SHUFFLE_OFF && flag == 0x3A) {
Flags_SetRandomizerInf(RAND_INF_GF_GTG_GATE_PERMANENTLY_OPEN);
}
break;
case SCENE_DEKU_TREE:
if (!isVanilla && flag == 0x27) {
Flags_SetRandomizerInf(RAND_INF_DEKU_TREE_MQ_TORCH_SWITCH);
}
break;
if (sceneNum == SCENE_SPIRIT_TEMPLE && flagType == FLAG_SCENE_SWITCH) {
bool isVanilla =
Rando::Context::GetInstance()->GetDungeons()->GetDungeonFromScene(SCENE_SPIRIT_TEMPLE)->IsVanilla();
case SCENE_DODONGOS_CAVERN:
if (!isVanilla && flag == 0x25) {
Flags_SetRandomizerInf(RAND_INF_DODONGOS_CAVERN_MQ_SILVER_RUPEES);
}
break;
case SCENE_JABU_JABU:
if (isVanilla && flag == 0x3b) {
Flags_SetRandomizerInf(RAND_INF_JABU_JABUS_BELLY_FIRST_SWITCH);
}
break;
case SCENE_FOREST_TEMPLE:
if (flag == 0x26) {
Flags_SetRandomizerInf(RAND_INF_FOREST_DRAINED_WELL);
} else if (isVanilla && flag == 0x25) {
Flags_SetRandomizerInf(RAND_INF_FOREST_LOBBY_EYES);
} else if (!isVanilla && flag == 0x21) {
Flags_SetRandomizerInf(RAND_INF_FOREST_LOBBY_EYES);
} else if (!isVanilla && flag == 0x25) {
Flags_SetRandomizerInf(RAND_INF_FOREST_MQ_COURTYARD_WEB_BURNT);
} else if (!isVanilla && flag == 0x2a) {
Flags_SetRandomizerInf(RAND_INF_FOREST_LOBBY_EYES);
}
break;
case SCENE_FIRE_TEMPLE:
if (!isVanilla && flag == 0x28) {
Flags_SetRandomizerInf(RAND_INF_FIRE_MQ_LOBBY_TORCHES);
}
break;
case SCENE_SPIRIT_TEMPLE:
if (isVanilla && flag == 0x23) {
Flags_SetRandomizerInf(RAND_INF_SPIRIT_SUN_ON_FLOOR_ON);
} else if (!isVanilla && flag == 0x37) {
Flags_SetRandomizerInf(RAND_INF_SPIRIT_MQ_LOBBY_SILVER_RUPEES);
}
break;
}
}
@ -1865,12 +1909,52 @@ void RandomizerOnActorInitHandler(void* actorRef) {
Actor* actor = static_cast<Actor*>(actorRef);
if (actor->id == ACTOR_PLAYER) {
if (gPlayState->sceneNum == SCENE_SPIRIT_TEMPLE) {
bool isVanilla =
Rando::Context::GetInstance()->GetDungeons()->GetDungeonFromScene(SCENE_SPIRIT_TEMPLE)->IsVanilla();
auto dungeonInfo = Rando::Context::GetInstance()->GetDungeons()->GetDungeonFromScene(gPlayState->sceneNum);
bool isVanilla = dungeonInfo == nullptr || dungeonInfo->IsVanilla();
switch (gPlayState->sceneNum) {
case SCENE_DEKU_TREE:
if (!isVanilla && Flags_GetRandomizerInf(RAND_INF_DEKU_TREE_MQ_TORCH_SWITCH)) {
Flags_SetSwitch(gPlayState, 0x27);
}
break;
case SCENE_DODONGOS_CAVERN:
if (!isVanilla && Flags_GetRandomizerInf(RAND_INF_DODONGOS_CAVERN_MQ_SILVER_RUPEES)) {
Flags_SetSwitch(gPlayState, 0x25);
}
break;
case SCENE_JABU_JABU:
if (isVanilla && Flags_GetRandomizerInf(RAND_INF_JABU_JABUS_BELLY_FIRST_SWITCH)) {
Flags_SetSwitch(gPlayState, 0x3b);
}
break;
case SCENE_FOREST_TEMPLE:
if (Flags_GetRandomizerInf(RAND_INF_FOREST_DRAINED_WELL)) {
Flags_SetSwitch(gPlayState, 0x26);
} else if (isVanilla && Flags_GetRandomizerInf(RAND_INF_FOREST_LOBBY_EYES)) {
Flags_SetSwitch(gPlayState, 0x25);
} else if (!isVanilla && Flags_GetRandomizerInf(RAND_INF_FOREST_LOBBY_EYES)) {
Flags_SetSwitch(gPlayState, 0x21);
Flags_SetSwitch(gPlayState, 0x2a);
} else if (!isVanilla && Flags_GetRandomizerInf(RAND_INF_FOREST_MQ_COURTYARD_WEB_BURNT)) {
Flags_SetSwitch(gPlayState, 0x25);
}
break;
case SCENE_FIRE_TEMPLE:
if (!isVanilla && Flags_GetRandomizerInf(RAND_INF_FIRE_MQ_LOBBY_TORCHES)) {
Flags_SetSwitch(gPlayState, 0x28);
}
break;
case SCENE_SPIRIT_TEMPLE:
if (isVanilla && Flags_GetRandomizerInf(RAND_INF_SPIRIT_SUN_ON_FLOOR_ON)) {
Flags_SetSwitch(gPlayState, 0x23);
} else if (!isVanilla && Flags_GetRandomizerInf(RAND_INF_SPIRIT_MQ_LOBBY_SILVER_RUPEES)) {
Flags_SetSwitch(gPlayState, 0x37);
}
break;
}
}

View file

@ -1091,8 +1091,16 @@ DEFINE_RAND_INF(RAND_INF_MARKET_TREASURE_CHEST_GAME_KEY_5)
DEFINE_RAND_INF(RAND_INF_TH_ITEM_FROM_LEADER_OF_FORTRESS)
DEFINE_RAND_INF(RAND_INF_GF_GTG_GATE_PERMANENTLY_OPEN)
DEFINE_RAND_INF(RAND_INF_DEKU_TREE_MQ_TORCH_SWITCH)
DEFINE_RAND_INF(RAND_INF_DODONGOS_CAVERN_MQ_SILVER_RUPEES)
DEFINE_RAND_INF(RAND_INF_JABU_JABUS_BELLY_FIRST_SWITCH)
DEFINE_RAND_INF(RAND_INF_FOREST_LOBBY_EYES)
DEFINE_RAND_INF(RAND_INF_FOREST_DRAINED_WELL)
DEFINE_RAND_INF(RAND_INF_FOREST_MQ_COURTYARD_WEB_BURNT)
DEFINE_RAND_INF(RAND_INF_FIRE_MQ_LOBBY_TORCHES)
DEFINE_RAND_INF(RAND_INF_SPIRIT_SUN_ON_FLOOR_ON)
DEFINE_RAND_INF(RAND_INF_SPIRIT_BIG_MIRROR_STATUE_TURNED)
DEFINE_RAND_INF(RAND_INF_SPIRIT_MQ_LOBBY_SILVER_RUPEES)
DEFINE_RAND_INF(RAND_INF_ZELDAS_LETTER)
DEFINE_RAND_INF(RAND_INF_WEIRD_EGG)