Shuffle Zelda's Letter (#6938)

Removes RSK_SKIP_CHILD_ZELDA & RSK_KAK_GATE,
these are managed by RSK_SHUFFLE_ZELDAS_LETTER & RSK_STARTING_ZELDAS_LETTER & RSK_SHUFFLE_WEIRD_EGG
This commit is contained in:
Philip Dubé
2026-07-19 22:37:45 +00:00
committed by GitHub
parent cb974d123f
commit 1ea7206073
31 changed files with 180 additions and 117 deletions
+1
View File
@@ -2410,6 +2410,7 @@ u8 Item_Give(PlayState* play, u8 item) {
if (item >= ITEM_POCKET_EGG) {
Flags_SetRandomizerInf(item - ITEM_POCKET_EGG + RAND_INF_ADULT_TRADES_HAS_POCKET_EGG);
} else if (item == ITEM_LETTER_ZELDA) {
Flags_SetRandomizerInf(RAND_INF_ZELDAS_LETTER);
// don't care about zelda's letter if it's already been shown to the guard
if (!Flags_GetInfTable(INFTABLE_SHOWED_ZELDAS_LETTER_TO_GATE_GUARD)) {
Flags_SetRandomizerInf(RAND_INF_CHILD_TRADES_HAS_LETTER_ZELDA);
@@ -46,8 +46,7 @@ void BgGateShutter_Init(Actor* thisx, PlayState* play) {
this->somePos.y = thisx->world.pos.y;
this->somePos.z = thisx->world.pos.z;
if (((Flags_GetInfTable(INFTABLE_SHOWED_ZELDAS_LETTER_TO_GATE_GUARD)) ||
(!IS_RANDO && (Flags_GetEventChkInf(EVENTCHKINF_PULLED_MASTER_SWORD_FROM_PEDESTAL))) ||
(IS_RANDO && (Randomizer_GetSettingValue(RSK_KAK_GATE) == RO_KAK_GATE_OPEN))) &&
(!IS_RANDO && (Flags_GetEventChkInf(EVENTCHKINF_PULLED_MASTER_SWORD_FROM_PEDESTAL)))) &&
(play->sceneNum == SCENE_KAKARIKO_VILLAGE)) {
thisx->world.pos.x = -89.0f;
thisx->world.pos.z = -1375.0f;
@@ -606,10 +606,7 @@ void EnOssan_Init(Actor* thisx, PlayState* play) {
}
// If you haven't given Zelda's Letter to the Kakariko Guard
// or are rando'd and haven't gotten gotten the letter from zelda yet
if (this->actor.params == OSSAN_TYPE_MASK &&
(!Flags_GetInfTable(INFTABLE_SHOWED_ZELDAS_LETTER_TO_GATE_GUARD) ||
(IS_RANDO && !Flags_GetEventChkInf(EVENTCHKINF_OBTAINED_ZELDAS_LETTER)))) {
if (this->actor.params == OSSAN_TYPE_MASK && !Flags_GetInfTable(INFTABLE_SHOWED_ZELDAS_LETTER_TO_GATE_GUARD)) {
Actor_Kill(&this->actor);
return;
}
@@ -344,7 +344,7 @@ bool CanMaskSelect() {
void KaleidoScope_HandleItemCycles(PlayState* play) {
// handle the mask select
KaleidoScope_HandleItemCycleExtras(
play, SLOT_TRADE_CHILD, CanMaskSelect(),
play, SLOT_TRADE_CHILD, IS_RANDO || CanMaskSelect(),
IS_RANDO ? Randomizer_GetPrevChildTradeItem()
: (INV_CONTENT(ITEM_TRADE_CHILD) <= ITEM_MASK_KEATON || INV_CONTENT(ITEM_TRADE_CHILD) > ITEM_MASK_TRUTH
? ITEM_MASK_TRUTH
@@ -385,7 +385,7 @@ void KaleidoScope_HandleItemCycles(PlayState* play) {
void KaleidoScope_DrawItemCycles(PlayState* play) {
// draw the mask select
KaleidoScope_DrawItemCycleExtras(
play, SLOT_TRADE_CHILD, CanMaskSelect(),
play, SLOT_TRADE_CHILD, IS_RANDO || CanMaskSelect(),
IS_RANDO ? Randomizer_GetPrevChildTradeItem()
: (INV_CONTENT(ITEM_TRADE_CHILD) <= ITEM_MASK_KEATON || INV_CONTENT(ITEM_TRADE_CHILD) > ITEM_MASK_TRUTH
? ITEM_MASK_TRUTH