Skip to content

Commit 218f55a

Browse files
committed
Move code to set beans as planted after getting the bean pack to rando item give handler.
1 parent 14b464b commit 218f55a

2 files changed

Lines changed: 48 additions & 45 deletions

File tree

soh/soh/Enhancements/randomizer/hook_handlers.cpp

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -446,6 +446,54 @@ void RandomizerOnItemReceiveHandler(GetItemEntry receivedItemEntry) {
446446
randomizerQueuedItemEntry = GET_ITEM_NONE;
447447
}
448448

449+
if (receivedItemEntry.modIndex == 1 && receivedItemEntry.getItemId == RG_MAGIC_BEAN_PACK) {
450+
if (OTRGlobals::Instance->gRandomizer->GetRandoSettingValue(RSK_SKIP_PLANTING_BEANS)) {
451+
gSaveContext.sceneFlags[SCENE_DEATH_MOUNTAIN_CRATER].swch |= (1 << 3);
452+
if (gPlayState->sceneNum == SCENE_DEATH_MOUNTAIN_CRATER) {
453+
Flags_SetSwitch(gPlayState, 3);
454+
}
455+
gSaveContext.sceneFlags[SCENE_DEATH_MOUNTAIN_TRAIL].swch |= (1 << 6);
456+
if (gPlayState->sceneNum == SCENE_DEATH_MOUNTAIN_TRAIL) {
457+
Flags_SetSwitch(gPlayState, 6);
458+
}
459+
gSaveContext.sceneFlags[SCENE_DESERT_COLOSSUS].swch |= (1 << 24);
460+
if (gPlayState->sceneNum == SCENE_DESERT_COLOSSUS) {
461+
Flags_SetSwitch(gPlayState, 24);
462+
}
463+
gSaveContext.sceneFlags[SCENE_GERUDO_VALLEY].swch |= (1 << 3);
464+
if (gPlayState->sceneNum == SCENE_GERUDO_VALLEY) {
465+
Flags_SetSwitch(gPlayState, 3);
466+
}
467+
gSaveContext.sceneFlags[SCENE_GRAVEYARD].swch |= (1 << 3);
468+
if (gPlayState->sceneNum == SCENE_GRAVEYARD) {
469+
Flags_SetSwitch(gPlayState, 3);
470+
}
471+
gSaveContext.sceneFlags[SCENE_KOKIRI_FOREST].swch |= (1 << 9);
472+
if (gPlayState->sceneNum == SCENE_KOKIRI_FOREST) {
473+
Flags_SetSwitch(gPlayState, 9);
474+
}
475+
gSaveContext.sceneFlags[SCENE_LAKE_HYLIA].swch |= (1 << 1);
476+
if (gPlayState->sceneNum == SCENE_LAKE_HYLIA) {
477+
Flags_SetSwitch(gPlayState, 1);
478+
}
479+
gSaveContext.sceneFlags[SCENE_LOST_WOODS].swch |= (1 << 4) | (1 << 18);
480+
if (gPlayState->sceneNum == SCENE_LOST_WOODS) {
481+
Flags_SetSwitch(gPlayState, 4);
482+
Flags_SetSwitch(gPlayState, 18);
483+
}
484+
gSaveContext.sceneFlags[SCENE_ZORAS_RIVER].swch |= (1 << 3);
485+
if (gPlayState->sceneNum == SCENE_ZORAS_RIVER) {
486+
Flags_SetSwitch(gPlayState, 3);
487+
}
488+
ObjBean* bean = (ObjBean*)Actor_Find(&gPlayState->actorCtx, ACTOR_OBJ_BEAN, ACTORCAT_BG);
489+
if (bean != nullptr) {
490+
Flags_SetSwitch(gPlayState, bean->dyna.actor.params & 0x3F);
491+
func_80B8FE00(bean);
492+
}
493+
AMMO(ITEM_BEAN) = 0;
494+
}
495+
}
496+
449497
if (receivedItemEntry.modIndex == MOD_NONE &&
450498
(receivedItemEntry.itemId == ITEM_HEART_PIECE || receivedItemEntry.itemId == ITEM_HEART_PIECE_2 ||
451499
receivedItemEntry.itemId == ITEM_HEART_CONTAINER)) {

soh/soh/Enhancements/randomizer/randomizer.cpp

Lines changed: 0 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -3867,51 +3867,6 @@ extern "C" u16 Randomizer_Item_Give(PlayState* play, GetItemEntry giEntry) {
38673867
if (INV_CONTENT(ITEM_BEAN) == ITEM_NONE) {
38683868
INV_CONTENT(ITEM_BEAN) = ITEM_BEAN;
38693869
AMMO(ITEM_BEAN) = 10;
3870-
if (OTRGlobals::Instance->gRandomizer->GetRandoSettingValue(RSK_SKIP_PLANTING_BEANS)) {
3871-
gSaveContext.sceneFlags[SCENE_DEATH_MOUNTAIN_CRATER].swch |= (1 << 3);
3872-
if (gPlayState->sceneNum == SCENE_DEATH_MOUNTAIN_CRATER) {
3873-
Flags_SetSwitch(gPlayState, 3);
3874-
}
3875-
gSaveContext.sceneFlags[SCENE_DEATH_MOUNTAIN_TRAIL].swch |= (1 << 6);
3876-
if (gPlayState->sceneNum == SCENE_DEATH_MOUNTAIN_TRAIL) {
3877-
Flags_SetSwitch(gPlayState, 6);
3878-
}
3879-
gSaveContext.sceneFlags[SCENE_DESERT_COLOSSUS].swch |= (1 << 24);
3880-
if (gPlayState->sceneNum == SCENE_DESERT_COLOSSUS) {
3881-
Flags_SetSwitch(gPlayState, 24);
3882-
}
3883-
gSaveContext.sceneFlags[SCENE_GERUDO_VALLEY].swch |= (1 << 3);
3884-
if (gPlayState->sceneNum == SCENE_GERUDO_VALLEY) {
3885-
Flags_SetSwitch(gPlayState, 3);
3886-
}
3887-
gSaveContext.sceneFlags[SCENE_GRAVEYARD].swch |= (1 << 3);
3888-
if (gPlayState->sceneNum == SCENE_GRAVEYARD) {
3889-
Flags_SetSwitch(gPlayState, 3);
3890-
}
3891-
gSaveContext.sceneFlags[SCENE_KOKIRI_FOREST].swch |= (1 << 9);
3892-
if (gPlayState->sceneNum == SCENE_KOKIRI_FOREST) {
3893-
Flags_SetSwitch(gPlayState, 9);
3894-
}
3895-
gSaveContext.sceneFlags[SCENE_LAKE_HYLIA].swch |= (1 << 1);
3896-
if (gPlayState->sceneNum == SCENE_LAKE_HYLIA) {
3897-
Flags_SetSwitch(gPlayState, 1);
3898-
}
3899-
gSaveContext.sceneFlags[SCENE_LOST_WOODS].swch |= (1 << 4) | (1 << 18);
3900-
if (gPlayState->sceneNum == SCENE_LOST_WOODS) {
3901-
Flags_SetSwitch(gPlayState, 4);
3902-
Flags_SetSwitch(gPlayState, 18);
3903-
}
3904-
gSaveContext.sceneFlags[SCENE_ZORAS_RIVER].swch |= (1 << 3);
3905-
if (gPlayState->sceneNum == SCENE_ZORAS_RIVER) {
3906-
Flags_SetSwitch(gPlayState, 3);
3907-
}
3908-
ObjBean* bean = (ObjBean*)Actor_Find(&gPlayState->actorCtx, ACTOR_OBJ_BEAN, ACTORCAT_BG);
3909-
if (bean != nullptr) {
3910-
Flags_SetSwitch(gPlayState, bean->dyna.actor.params & 0x3F);
3911-
func_80B8FE00(bean);
3912-
}
3913-
AMMO(ITEM_BEAN) = 0;
3914-
}
39153870
}
39163871
break;
39173872
case RG_DOUBLE_DEFENSE:

0 commit comments

Comments
 (0)