mirror of
https://github.com/HarbourMasters/Shipwright.git
synced 2025-08-24 07:05:34 -07:00
Added check if bean was planted.
This commit is contained in:
parent
c76bbf1a0c
commit
0b51f100d5
1 changed files with 71 additions and 1 deletions
|
@ -11,6 +11,11 @@
|
||||||
|
|
||||||
#include <fstream>
|
#include <fstream>
|
||||||
|
|
||||||
|
extern "C" {
|
||||||
|
extern SaveContext gSaveContext;
|
||||||
|
extern PlayState* gPlayState;
|
||||||
|
}
|
||||||
|
|
||||||
//generic grotto event list
|
//generic grotto event list
|
||||||
std::vector<EventAccess> grottoEvents;
|
std::vector<EventAccess> grottoEvents;
|
||||||
|
|
||||||
|
@ -224,8 +229,73 @@ bool MQSpiritSharedBrokenWallRoom(const RandomizerRegion region, ConditionFn con
|
||||||
return areaTable[region].MQSpiritShared(condition, true, anyAge);
|
return areaTable[region].MQSpiritShared(condition, true, anyAge);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool BeanPlanted(const RandomizerRegion region) {
|
||||||
|
// swchFlag found using the Actor Viewer to get the Obj_Bean parameters & 0x3F
|
||||||
|
// not tested with multiple OTRs, but can be automated similarly to GetDungeonSmallKeyDoors
|
||||||
|
SceneID sceneID;
|
||||||
|
uint8_t swchFlag;
|
||||||
|
switch (region) {
|
||||||
|
case RR_ZORAS_RIVER:
|
||||||
|
sceneID = SceneID::SCENE_ZORAS_RIVER;
|
||||||
|
swchFlag = 3;
|
||||||
|
break;
|
||||||
|
case RR_THE_GRAVEYARD:
|
||||||
|
sceneID = SceneID::SCENE_GRAVEYARD;
|
||||||
|
swchFlag = 3;
|
||||||
|
break;
|
||||||
|
case RR_KOKIRI_FOREST:
|
||||||
|
sceneID = SceneID::SCENE_KOKIRI_FOREST;
|
||||||
|
swchFlag = 9;
|
||||||
|
break;
|
||||||
|
case RR_THE_LOST_WOODS:
|
||||||
|
sceneID = SceneID::SCENE_LOST_WOODS;
|
||||||
|
swchFlag = 4;
|
||||||
|
break;
|
||||||
|
case RR_LW_BEYOND_MIDO:
|
||||||
|
sceneID = SceneID::SCENE_LOST_WOODS;
|
||||||
|
swchFlag = 18;
|
||||||
|
break;
|
||||||
|
case RR_DEATH_MOUNTAIN_TRAIL:
|
||||||
|
sceneID = SceneID::SCENE_DEATH_MOUNTAIN_TRAIL;
|
||||||
|
swchFlag = 6;
|
||||||
|
break;
|
||||||
|
case RR_LAKE_HYLIA:
|
||||||
|
sceneID = SceneID::SCENE_LAKE_HYLIA;
|
||||||
|
swchFlag = 1;
|
||||||
|
break;
|
||||||
|
case RR_GERUDO_VALLEY:
|
||||||
|
sceneID = SceneID::SCENE_GERUDO_VALLEY;
|
||||||
|
swchFlag = 3;
|
||||||
|
break;
|
||||||
|
case RR_DMC_CENTRAL_LOCAL:
|
||||||
|
sceneID = SceneID::SCENE_DEATH_MOUNTAIN_CRATER;
|
||||||
|
swchFlag = 3;
|
||||||
|
break;
|
||||||
|
case RR_DESERT_COLOSSUS:
|
||||||
|
sceneID = SceneID::SCENE_DESERT_COLOSSUS;
|
||||||
|
swchFlag = 24;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
sceneID = SCENE_ID_MAX;
|
||||||
|
swchFlag = 0;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Get the swch value for the scene
|
||||||
|
uint32_t swch;
|
||||||
|
if (gPlayState != nullptr && gPlayState->sceneNum == sceneID) {
|
||||||
|
swch = gPlayState->actorCtx.flags.swch;
|
||||||
|
} else if (sceneID != SCENE_ID_MAX) {
|
||||||
|
swch = gSaveContext.sceneFlags[sceneID].swch;
|
||||||
|
} else {
|
||||||
|
swch = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
return swch >> swchFlag & 1;
|
||||||
|
}
|
||||||
|
|
||||||
bool CanPlantBean(const RandomizerRegion region) {
|
bool CanPlantBean(const RandomizerRegion region) {
|
||||||
return areaTable[region].CanPlantBeanCheck();
|
return areaTable[region].CanPlantBeanCheck() || BeanPlanted(region);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool BothAges(const RandomizerRegion region) {
|
bool BothAges(const RandomizerRegion region) {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue