mirror of
https://github.com/HarbourMasters/Shipwright
synced 2026-04-23 08:14:31 +00:00
Fix Skip Planting Beans crash (#6463)
Move code to set beans as planted after getting the bean pack to rando item give handler.
This commit is contained in:
parent
978a219213
commit
876d512a4b
|
|
@ -446,6 +446,54 @@ void RandomizerOnItemReceiveHandler(GetItemEntry receivedItemEntry) {
|
||||||
randomizerQueuedItemEntry = GET_ITEM_NONE;
|
randomizerQueuedItemEntry = GET_ITEM_NONE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (receivedItemEntry.modIndex == MOD_RANDOMIZER && receivedItemEntry.getItemId == RG_MAGIC_BEAN_PACK) {
|
||||||
|
if (OTRGlobals::Instance->gRandomizer->GetRandoSettingValue(RSK_SKIP_PLANTING_BEANS)) {
|
||||||
|
gSaveContext.sceneFlags[SCENE_DEATH_MOUNTAIN_CRATER].swch |= (1 << 3);
|
||||||
|
if (gPlayState->sceneNum == SCENE_DEATH_MOUNTAIN_CRATER) {
|
||||||
|
Flags_SetSwitch(gPlayState, 3);
|
||||||
|
}
|
||||||
|
gSaveContext.sceneFlags[SCENE_DEATH_MOUNTAIN_TRAIL].swch |= (1 << 6);
|
||||||
|
if (gPlayState->sceneNum == SCENE_DEATH_MOUNTAIN_TRAIL) {
|
||||||
|
Flags_SetSwitch(gPlayState, 6);
|
||||||
|
}
|
||||||
|
gSaveContext.sceneFlags[SCENE_DESERT_COLOSSUS].swch |= (1 << 24);
|
||||||
|
if (gPlayState->sceneNum == SCENE_DESERT_COLOSSUS) {
|
||||||
|
Flags_SetSwitch(gPlayState, 24);
|
||||||
|
}
|
||||||
|
gSaveContext.sceneFlags[SCENE_GERUDO_VALLEY].swch |= (1 << 3);
|
||||||
|
if (gPlayState->sceneNum == SCENE_GERUDO_VALLEY) {
|
||||||
|
Flags_SetSwitch(gPlayState, 3);
|
||||||
|
}
|
||||||
|
gSaveContext.sceneFlags[SCENE_GRAVEYARD].swch |= (1 << 3);
|
||||||
|
if (gPlayState->sceneNum == SCENE_GRAVEYARD) {
|
||||||
|
Flags_SetSwitch(gPlayState, 3);
|
||||||
|
}
|
||||||
|
gSaveContext.sceneFlags[SCENE_KOKIRI_FOREST].swch |= (1 << 9);
|
||||||
|
if (gPlayState->sceneNum == SCENE_KOKIRI_FOREST) {
|
||||||
|
Flags_SetSwitch(gPlayState, 9);
|
||||||
|
}
|
||||||
|
gSaveContext.sceneFlags[SCENE_LAKE_HYLIA].swch |= (1 << 1);
|
||||||
|
if (gPlayState->sceneNum == SCENE_LAKE_HYLIA) {
|
||||||
|
Flags_SetSwitch(gPlayState, 1);
|
||||||
|
}
|
||||||
|
gSaveContext.sceneFlags[SCENE_LOST_WOODS].swch |= (1 << 4) | (1 << 18);
|
||||||
|
if (gPlayState->sceneNum == SCENE_LOST_WOODS) {
|
||||||
|
Flags_SetSwitch(gPlayState, 4);
|
||||||
|
Flags_SetSwitch(gPlayState, 18);
|
||||||
|
}
|
||||||
|
gSaveContext.sceneFlags[SCENE_ZORAS_RIVER].swch |= (1 << 3);
|
||||||
|
if (gPlayState->sceneNum == SCENE_ZORAS_RIVER) {
|
||||||
|
Flags_SetSwitch(gPlayState, 3);
|
||||||
|
}
|
||||||
|
ObjBean* bean = (ObjBean*)Actor_Find(&gPlayState->actorCtx, ACTOR_OBJ_BEAN, ACTORCAT_BG);
|
||||||
|
if (bean != nullptr) {
|
||||||
|
Flags_SetSwitch(gPlayState, bean->dyna.actor.params & 0x3F);
|
||||||
|
func_80B8FE00(bean);
|
||||||
|
}
|
||||||
|
AMMO(ITEM_BEAN) = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (receivedItemEntry.modIndex == MOD_NONE &&
|
if (receivedItemEntry.modIndex == MOD_NONE &&
|
||||||
(receivedItemEntry.itemId == ITEM_HEART_PIECE || receivedItemEntry.itemId == ITEM_HEART_PIECE_2 ||
|
(receivedItemEntry.itemId == ITEM_HEART_PIECE || receivedItemEntry.itemId == ITEM_HEART_PIECE_2 ||
|
||||||
receivedItemEntry.itemId == ITEM_HEART_CONTAINER)) {
|
receivedItemEntry.itemId == ITEM_HEART_CONTAINER)) {
|
||||||
|
|
|
||||||
|
|
@ -3867,51 +3867,6 @@ extern "C" u16 Randomizer_Item_Give(PlayState* play, GetItemEntry giEntry) {
|
||||||
if (INV_CONTENT(ITEM_BEAN) == ITEM_NONE) {
|
if (INV_CONTENT(ITEM_BEAN) == ITEM_NONE) {
|
||||||
INV_CONTENT(ITEM_BEAN) = ITEM_BEAN;
|
INV_CONTENT(ITEM_BEAN) = ITEM_BEAN;
|
||||||
AMMO(ITEM_BEAN) = 10;
|
AMMO(ITEM_BEAN) = 10;
|
||||||
if (OTRGlobals::Instance->gRandomizer->GetRandoSettingValue(RSK_SKIP_PLANTING_BEANS)) {
|
|
||||||
gSaveContext.sceneFlags[SCENE_DEATH_MOUNTAIN_CRATER].swch |= (1 << 3);
|
|
||||||
if (gPlayState->sceneNum == SCENE_DEATH_MOUNTAIN_CRATER) {
|
|
||||||
Flags_SetSwitch(gPlayState, 3);
|
|
||||||
}
|
|
||||||
gSaveContext.sceneFlags[SCENE_DEATH_MOUNTAIN_TRAIL].swch |= (1 << 6);
|
|
||||||
if (gPlayState->sceneNum == SCENE_DEATH_MOUNTAIN_TRAIL) {
|
|
||||||
Flags_SetSwitch(gPlayState, 6);
|
|
||||||
}
|
|
||||||
gSaveContext.sceneFlags[SCENE_DESERT_COLOSSUS].swch |= (1 << 24);
|
|
||||||
if (gPlayState->sceneNum == SCENE_DESERT_COLOSSUS) {
|
|
||||||
Flags_SetSwitch(gPlayState, 24);
|
|
||||||
}
|
|
||||||
gSaveContext.sceneFlags[SCENE_GERUDO_VALLEY].swch |= (1 << 3);
|
|
||||||
if (gPlayState->sceneNum == SCENE_GERUDO_VALLEY) {
|
|
||||||
Flags_SetSwitch(gPlayState, 3);
|
|
||||||
}
|
|
||||||
gSaveContext.sceneFlags[SCENE_GRAVEYARD].swch |= (1 << 3);
|
|
||||||
if (gPlayState->sceneNum == SCENE_GRAVEYARD) {
|
|
||||||
Flags_SetSwitch(gPlayState, 3);
|
|
||||||
}
|
|
||||||
gSaveContext.sceneFlags[SCENE_KOKIRI_FOREST].swch |= (1 << 9);
|
|
||||||
if (gPlayState->sceneNum == SCENE_KOKIRI_FOREST) {
|
|
||||||
Flags_SetSwitch(gPlayState, 9);
|
|
||||||
}
|
|
||||||
gSaveContext.sceneFlags[SCENE_LAKE_HYLIA].swch |= (1 << 1);
|
|
||||||
if (gPlayState->sceneNum == SCENE_LAKE_HYLIA) {
|
|
||||||
Flags_SetSwitch(gPlayState, 1);
|
|
||||||
}
|
|
||||||
gSaveContext.sceneFlags[SCENE_LOST_WOODS].swch |= (1 << 4) | (1 << 18);
|
|
||||||
if (gPlayState->sceneNum == SCENE_LOST_WOODS) {
|
|
||||||
Flags_SetSwitch(gPlayState, 4);
|
|
||||||
Flags_SetSwitch(gPlayState, 18);
|
|
||||||
}
|
|
||||||
gSaveContext.sceneFlags[SCENE_ZORAS_RIVER].swch |= (1 << 3);
|
|
||||||
if (gPlayState->sceneNum == SCENE_ZORAS_RIVER) {
|
|
||||||
Flags_SetSwitch(gPlayState, 3);
|
|
||||||
}
|
|
||||||
ObjBean* bean = (ObjBean*)Actor_Find(&gPlayState->actorCtx, ACTOR_OBJ_BEAN, ACTORCAT_BG);
|
|
||||||
if (bean != nullptr) {
|
|
||||||
Flags_SetSwitch(gPlayState, bean->dyna.actor.params & 0x3F);
|
|
||||||
func_80B8FE00(bean);
|
|
||||||
}
|
|
||||||
AMMO(ITEM_BEAN) = 0;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case RG_DOUBLE_DEFENSE:
|
case RG_DOUBLE_DEFENSE:
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue