summaryrefslogtreecommitdiff
path: root/mm/2s2h/Rando/Logic/Regions
diff options
context:
space:
mode:
Diffstat (limited to 'mm/2s2h/Rando/Logic/Regions')
-rw-r--r--mm/2s2h/Rando/Logic/Regions/Central.cpp18
-rw-r--r--mm/2s2h/Rando/Logic/Regions/East.cpp14
-rw-r--r--mm/2s2h/Rando/Logic/Regions/MilkRoad.cpp16
-rw-r--r--mm/2s2h/Rando/Logic/Regions/PiratesFortress.cpp9
-rw-r--r--mm/2s2h/Rando/Logic/Regions/SpiderHouses.cpp31
-rw-r--r--mm/2s2h/Rando/Logic/Regions/TerminaField.cpp36
6 files changed, 119 insertions, 5 deletions
diff --git a/mm/2s2h/Rando/Logic/Regions/Central.cpp b/mm/2s2h/Rando/Logic/Regions/Central.cpp
index 96373840a..c4b811850 100644
--- a/mm/2s2h/Rando/Logic/Regions/Central.cpp
+++ b/mm/2s2h/Rando/Logic/Regions/Central.cpp
@@ -95,6 +95,15 @@ static RegisterShipInitFunc initFunc([]() {
CHECK(RC_CLOCK_TOWN_EAST_UPPER_CHEST, true),
CHECK(RC_CLOCK_TOWN_BOMBERS_NOTEBOOK, RANDO_EVENTS[RE_BOMBER_CODE]),
CHECK(RC_CLOCK_TOWN_POSTBOX, HAS_ITEM(ITEM_MASK_POSTMAN)),
+ CHECK(RC_CLOCK_TOWN_EAST_WONDER_ITEM_01, CAN_USE_SWORD || CAN_USE_PROJECTILE || HAS_ITEM(ITEM_DEKU_STICK) || HAS_ITEM(ITEM_DEKU_NUT)),
+ CHECK(RC_CLOCK_TOWN_EAST_WONDER_ITEM_02, CAN_USE_SWORD || CAN_USE_PROJECTILE || HAS_ITEM(ITEM_DEKU_STICK) || HAS_ITEM(ITEM_DEKU_NUT)),
+ CHECK(RC_CLOCK_TOWN_EAST_WONDER_ITEM_03, CAN_USE_SWORD || CAN_USE_PROJECTILE || HAS_ITEM(ITEM_DEKU_STICK) || HAS_ITEM(ITEM_DEKU_NUT)),
+ CHECK(RC_CLOCK_TOWN_EAST_WONDER_ITEM_04, CAN_USE_SWORD || CAN_USE_PROJECTILE || HAS_ITEM(ITEM_DEKU_STICK) || HAS_ITEM(ITEM_DEKU_NUT)),
+ CHECK(RC_CLOCK_TOWN_EAST_WONDER_ITEM_05, CAN_USE_SWORD || CAN_USE_PROJECTILE || HAS_ITEM(ITEM_DEKU_STICK) || HAS_ITEM(ITEM_DEKU_NUT)),
+ CHECK(RC_CLOCK_TOWN_EAST_WONDER_ITEM_06, CAN_USE_SWORD || CAN_USE_PROJECTILE || HAS_ITEM(ITEM_DEKU_STICK) || HAS_ITEM(ITEM_DEKU_NUT)),
+ CHECK(RC_CLOCK_TOWN_EAST_WONDER_ITEM_07, true),
+ CHECK(RC_CLOCK_TOWN_EAST_WONDER_ITEM_08, true),
+ CHECK(RC_CLOCK_TOWN_EAST_WONDER_ITEM_09, true),
},
.exits = { // TO FROM
EXIT(ENTRANCE(TERMINA_FIELD, 7), ENTRANCE(EAST_CLOCK_TOWN, 0), true),
@@ -201,6 +210,9 @@ static RegisterShipInitFunc initFunc([]() {
CHECK(RC_CLOCK_TOWN_SOUTH_CHEST_UPPER, ((CAN_BE_DEKU && Flags_GetRandoInf(RANDO_INF_OBTAINED_MOONS_TEAR)) || HAS_ITEM(ITEM_HOOKSHOT)) && FINAL_DAY()),
CHECK(RC_CLOCK_TOWN_SOUTH_CHEST_LOWER, (CAN_BE_DEKU && Flags_GetRandoInf(RANDO_INF_OBTAINED_MOONS_TEAR)) || HAS_ITEM(ITEM_HOOKSHOT)),
CHECK(RC_CLOCK_TOWN_SOUTH_OWL_STATUE, CAN_USE_SWORD),
+ CHECK(RC_CLOCK_TOWN_SOUTH_WONDER_ITEM_01, CAN_USE_PROJECTILE),
+ CHECK(RC_CLOCK_TOWN_SOUTH_WONDER_ITEM_02, CAN_USE_PROJECTILE),
+ CHECK(RC_CLOCK_TOWN_SOUTH_WONDER_ITEM_03, CAN_USE_PROJECTILE),
},
.exits = { // TO FROM
EXIT(ENTRANCE(CLOCK_TOWER_INTERIOR, 1), ENTRANCE(SOUTH_CLOCK_TOWN, 0), true),
@@ -298,6 +310,9 @@ static RegisterShipInitFunc initFunc([]() {
Flags_GetRandoInf(RANDO_INF_OBTAINED_LETTER_TO_MAMA) || Flags_GetRandoInf(RANDO_INF_OBTAINED_LETTER_TO_KAFEI)) &&
MIDNIGHT()
),
+ CHECK(RC_STOCK_POT_INN_WONDER_ITEM_01, CAN_BE_ZORA && HAS_MAGIC),
+ CHECK(RC_STOCK_POT_INN_WONDER_ITEM_02, CAN_BE_ZORA && HAS_MAGIC),
+ CHECK(RC_STOCK_POT_INN_WONDER_ITEM_03, CAN_BE_ZORA && HAS_MAGIC),
},
.exits = { // TO FROM
EXIT(ENTRANCE(EAST_CLOCK_TOWN, 9), ENTRANCE(STOCK_POT_INN, 0), true), // From ground floor
@@ -382,6 +397,9 @@ static RegisterShipInitFunc initFunc([]() {
CHECK(RC_SWORDSMAN_SCHOOL_POT_03, CAN_USE_HUMAN_SWORD && AFTER(TIME_NIGHT3_AM_12_00)),
CHECK(RC_SWORDSMAN_SCHOOL_POT_04, CAN_USE_HUMAN_SWORD && AFTER(TIME_NIGHT3_AM_12_00)),
CHECK(RC_SWORDSMAN_SCHOOL_POT_05, CAN_USE_HUMAN_SWORD && AFTER(TIME_NIGHT3_AM_12_00)),
+ CHECK(RC_SWORDSMAN_SCHOOL_WONDER_ITEM, (CAN_BE_GORON || CAN_BE_ZORA || CAN_BE_DEKU || CAN_USE_SWORD ||
+ HAS_ITEM(ITEM_DEKU_STICK) || HAS_ITEM(ITEM_HOOKSHOT) || HAS_ITEM(ITEM_BOW)) &&
+ BEFORE(TIME_NIGHT3_PM_11_00)),
},
.exits = { // TO FROM
EXIT(ENTRANCE(WEST_CLOCK_TOWN, 3), ENTRANCE(SWORDMANS_SCHOOL, 0), true),
diff --git a/mm/2s2h/Rando/Logic/Regions/East.cpp b/mm/2s2h/Rando/Logic/Regions/East.cpp
index c0d60438a..541f65420 100644
--- a/mm/2s2h/Rando/Logic/Regions/East.cpp
+++ b/mm/2s2h/Rando/Logic/Regions/East.cpp
@@ -228,6 +228,16 @@ static RegisterShipInitFunc initFunc([]() {
CHECK(RC_IKANA_GRAVEYARD_GRASS_07, true),
CHECK(RC_IKANA_GRAVEYARD_GRASS_08, true),
CHECK(RC_IKANA_GRAVEYARD_GRASS_09, true),
+ // Rocks can be picked up and thrown at these:
+ CHECK(RC_IKANA_GRAVEYARD_WONDER_ITEM_01, true),
+ CHECK(RC_IKANA_GRAVEYARD_WONDER_ITEM_02, true),
+ CHECK(RC_IKANA_GRAVEYARD_WONDER_ITEM_03, true),
+ CHECK(RC_IKANA_GRAVEYARD_WONDER_ITEM_04, true),
+ CHECK(RC_IKANA_GRAVEYARD_WONDER_ITEM_05, true),
+ CHECK(RC_IKANA_GRAVEYARD_WONDER_ITEM_06, true),
+ CHECK(RC_IKANA_GRAVEYARD_WONDER_ITEM_07, true),
+ CHECK(RC_IKANA_GRAVEYARD_WONDER_ITEM_08, true),
+ CHECK(RC_IKANA_GRAVEYARD_WONDER_ITEM_09, true),
CHECK(RC_ENEMY_DROP_STALCHILD, CanKillEnemy(ACTOR_EN_SKB) && IS_NIGHT()), // Night only
CHECK(RC_ENEMY_DROP_BAD_BAT, CanKillEnemy(ACTOR_EN_BAT) && IS_DAY()), // Day only
},
@@ -248,6 +258,10 @@ static RegisterShipInitFunc initFunc([]() {
Regions[RR_IKANA_GRAVEYARD_UPPER] = RandoRegion{ .name = "Upper", .sceneId = SCENE_BOTI,
.checks = {
CHECK(RC_IKANA_GRAVEYARD_CAPTAIN_MASK, CanKillEnemy(ACTOR_EN_SKB) && CanKillEnemy(ACTOR_EN_BSB)),
+ // Rocks can be picked up and thrown at this:
+ CHECK(RC_IKANA_GRAVEYARD_WONDER_ITEM_10, true),
+ CHECK(RC_IKANA_GRAVEYARD_WONDER_ITEM_11, true),
+ CHECK(RC_IKANA_GRAVEYARD_WONDER_ITEM_12, true),
CHECK(RC_ENEMY_DROP_STALCHILD, CanKillEnemy(ACTOR_EN_SKB)),
CHECK(RC_ENEMY_DROP_BAD_BAT, CanKillEnemy(ACTOR_EN_BAT) && IS_DAY()), // Day only
CHECK(RC_ENEMY_DROP_CAPTAIN_KEETA, CanKillEnemy(ACTOR_EN_SKB) && CanKillEnemy(ACTOR_EN_BSB)),
diff --git a/mm/2s2h/Rando/Logic/Regions/MilkRoad.cpp b/mm/2s2h/Rando/Logic/Regions/MilkRoad.cpp
index 779c6ad73..75b7ae574 100644
--- a/mm/2s2h/Rando/Logic/Regions/MilkRoad.cpp
+++ b/mm/2s2h/Rando/Logic/Regions/MilkRoad.cpp
@@ -23,6 +23,12 @@ static RegisterShipInitFunc initFunc([]() {
CHECK(RC_CUCCO_SHACK_LARGE_CRATE_02, true),
CHECK(RC_CUCCO_SHACK_LARGE_CRATE_03, true),
CHECK(RC_CUCCO_SHACK_TREE, true),
+ CHECK(RC_CUCCO_SHACK_WONDER_ITEM_01, CAN_USE_SWORD || CAN_BE_GORON || CAN_USE_PROJECTILE || CAN_USE_EXPLOSIVE || HAS_ITEM(ITEM_DEKU_STICK) || HAS_ITEM(ITEM_DEKU_NUT)),
+ CHECK(RC_CUCCO_SHACK_WONDER_ITEM_02, CAN_USE_SWORD || CAN_BE_GORON || CAN_USE_PROJECTILE || CAN_USE_EXPLOSIVE || HAS_ITEM(ITEM_DEKU_STICK) || HAS_ITEM(ITEM_DEKU_NUT)),
+ CHECK(RC_CUCCO_SHACK_WONDER_ITEM_03, CAN_USE_SWORD || CAN_BE_GORON || CAN_USE_PROJECTILE || CAN_USE_EXPLOSIVE || HAS_ITEM(ITEM_DEKU_STICK) || HAS_ITEM(ITEM_DEKU_NUT)),
+ CHECK(RC_CUCCO_SHACK_WONDER_ITEM_04, CAN_USE_SWORD || CAN_BE_GORON || CAN_USE_PROJECTILE || CAN_USE_EXPLOSIVE || HAS_ITEM(ITEM_DEKU_STICK) || HAS_ITEM(ITEM_DEKU_NUT)),
+ CHECK(RC_CUCCO_SHACK_WONDER_ITEM_05, CAN_USE_SWORD || CAN_BE_GORON || CAN_USE_PROJECTILE || CAN_USE_EXPLOSIVE || HAS_ITEM(ITEM_DEKU_STICK) || HAS_ITEM(ITEM_DEKU_NUT)),
+ CHECK(RC_CUCCO_SHACK_WONDER_ITEM_06, CAN_USE_SWORD || CAN_BE_GORON || CAN_USE_PROJECTILE || CAN_USE_EXPLOSIVE || HAS_ITEM(ITEM_DEKU_STICK) || HAS_ITEM(ITEM_DEKU_NUT)),
},
.exits = { // TO FROM
EXIT(ENTRANCE(ROMANI_RANCH, 4), ENTRANCE(CUCCO_SHACK, 0), true),
@@ -147,7 +153,9 @@ static RegisterShipInitFunc initFunc([]() {
.checks = {
CHECK(RC_ROMANI_RANCH_BARN_COW_LEFT, CAN_PLAY_SONG(EPONA) && BREAK_BOULDER_BEFORE_OR_BEAT_ALIENS_NIGHT),
CHECK(RC_ROMANI_RANCH_BARN_COW_MIDDLE, CAN_PLAY_SONG(EPONA) && BREAK_BOULDER_BEFORE_OR_BEAT_ALIENS_NIGHT),
- CHECK(RC_ROMANI_RANCH_BARN_COW_RIGHT, CAN_PLAY_SONG(EPONA) && BREAK_BOULDER_BEFORE_OR_BEAT_ALIENS_NIGHT)
+ CHECK(RC_ROMANI_RANCH_BARN_COW_RIGHT, CAN_PLAY_SONG(EPONA) && BREAK_BOULDER_BEFORE_OR_BEAT_ALIENS_NIGHT),
+ CHECK(RC_ROMANI_RANCH_BARN_WONDER_ITEM_01, true),
+ CHECK(RC_ROMANI_RANCH_BARN_WONDER_ITEM_02, true),
},
.exits = { // TO FROM
EXIT(ENTRANCE(ROMANI_RANCH, 2), ENTRANCE(RANCH_HOUSE, 0), true),
@@ -242,6 +250,12 @@ static RegisterShipInitFunc initFunc([]() {
CHECK(RC_ROMANI_RANCH_TREE_05, true),
CHECK(RC_ROMANI_RANCH_TREE_06, true),
CHECK(RC_ROMANI_RANCH_TREE_07, true),
+ CHECK(RC_ROMANI_RANCH_WONDER_ITEM_01, true),
+ CHECK(RC_ROMANI_RANCH_WONDER_ITEM_02, true),
+ CHECK(RC_ROMANI_RANCH_WONDER_ITEM_03, true),
+ CHECK(RC_ROMANI_RANCH_WONDER_ITEM_04, true),
+ CHECK(RC_ROMANI_RANCH_WONDER_ITEM_05, true),
+ CHECK(RC_ROMANI_RANCH_WONDER_ITEM_06, true),
// TODO: Time logic is wrong for entrance rando
CHECK(RC_ENEMY_DROP_ALIEN, CanKillEnemy(ACTOR_EN_INVADEPOH) && IS_NIGHT1() && CAN_BE_GORON && HAS_ITEM(ITEM_POWDER_KEG)), // Night 1 only
},
diff --git a/mm/2s2h/Rando/Logic/Regions/PiratesFortress.cpp b/mm/2s2h/Rando/Logic/Regions/PiratesFortress.cpp
index f82ca9c75..7f817cca5 100644
--- a/mm/2s2h/Rando/Logic/Regions/PiratesFortress.cpp
+++ b/mm/2s2h/Rando/Logic/Regions/PiratesFortress.cpp
@@ -27,6 +27,9 @@ static RegisterShipInitFunc initFunc([]() {
CHECK(RC_PIRATE_FORTRESS_CAPTAIN_ROOM_BARREL_01, RANDO_EVENTS[RE_PIRATE_FORTRESS_BEEHIVE_HIT]),
CHECK(RC_PIRATE_FORTRESS_CAPTAIN_ROOM_BARREL_02, RANDO_EVENTS[RE_PIRATE_FORTRESS_BEEHIVE_HIT]),
CHECK(RC_PIRATE_FORTRESS_INTERIOR_HOOKSHOT_CHEST, RANDO_EVENTS[RE_PIRATE_FORTRESS_BEEHIVE_HIT]),
+ CHECK(RC_PIRATE_FORTRESS_INTERIOR_WONDER_ITEM_01, RANDO_EVENTS[RE_PIRATE_FORTRESS_BEEHIVE_HIT] && CAN_USE_PROJECTILE),
+ CHECK(RC_PIRATE_FORTRESS_INTERIOR_WONDER_ITEM_02, RANDO_EVENTS[RE_PIRATE_FORTRESS_BEEHIVE_HIT] && CAN_USE_PROJECTILE),
+ CHECK(RC_PIRATE_FORTRESS_INTERIOR_WONDER_ITEM_03, RANDO_EVENTS[RE_PIRATE_FORTRESS_BEEHIVE_HIT] && CAN_USE_PROJECTILE),
CHECK(RC_ENEMY_DROP_SHELLBLADE, CanKillEnemy(ACTOR_EN_SB)),
},
.exits = { // TO FROM
@@ -265,6 +268,12 @@ static RegisterShipInitFunc initFunc([]() {
.checks = {
CHECK(RC_PIRATE_FORTRESS_PLAZA_LARGE_CRATE_01, true),
CHECK(RC_PIRATE_FORTRESS_PLAZA_LOWER_CHEST, true),
+ CHECK(RC_PIRATE_FORTRESS_PLAZA_WONDER_ITEM_01, CAN_USE_PROJECTILE),
+ CHECK(RC_PIRATE_FORTRESS_PLAZA_WONDER_ITEM_02, CAN_USE_PROJECTILE),
+ CHECK(RC_PIRATE_FORTRESS_PLAZA_WONDER_ITEM_03, CAN_USE_PROJECTILE),
+ CHECK(RC_PIRATE_FORTRESS_PLAZA_WONDER_ITEM_04, CAN_USE_PROJECTILE),
+ CHECK(RC_PIRATE_FORTRESS_PLAZA_WONDER_ITEM_05, CAN_USE_PROJECTILE),
+ CHECK(RC_PIRATE_FORTRESS_PLAZA_WONDER_ITEM_06, CAN_USE_PROJECTILE),
},
.exits = { // TO FROM
EXIT(ENTRANCE(PIRATES_FORTRESS_INTERIOR, 0), ENTRANCE(PIRATES_FORTRESS, 1), true),
diff --git a/mm/2s2h/Rando/Logic/Regions/SpiderHouses.cpp b/mm/2s2h/Rando/Logic/Regions/SpiderHouses.cpp
index ab42d3597..c720ee131 100644
--- a/mm/2s2h/Rando/Logic/Regions/SpiderHouses.cpp
+++ b/mm/2s2h/Rando/Logic/Regions/SpiderHouses.cpp
@@ -40,7 +40,10 @@ static RegisterShipInitFunc initFunc([]() {
CHECK(RC_OCEAN_SPIDER_HOUSE_ENTRANCE_POT_01, true),
CHECK(RC_OCEAN_SPIDER_HOUSE_ENTRANCE_POT_02, true),
CHECK(RC_OCEAN_SPIDER_HOUSE_ENTRANCE_POT_03, true),
- CHECK(RC_OCEAN_SPIDER_HOUSE_ENTRANCE_POT_04, true)
+ CHECK(RC_OCEAN_SPIDER_HOUSE_ENTRANCE_POT_04, true),
+ CHECK(RC_OCEAN_SPIDER_HOUSE_WONDER_ITEM_07, CAN_USE_PROJECTILE || CAN_USE_EXPLOSIVE || HAS_ITEM(ITEM_DEKU_NUT)),
+ CHECK(RC_OCEAN_SPIDER_HOUSE_WONDER_ITEM_08, CAN_USE_PROJECTILE || CAN_USE_EXPLOSIVE || HAS_ITEM(ITEM_DEKU_NUT)),
+ CHECK(RC_OCEAN_SPIDER_HOUSE_WONDER_ITEM_09, CAN_USE_PROJECTILE || CAN_USE_EXPLOSIVE || HAS_ITEM(ITEM_DEKU_NUT)),
},
.connections = {
CONNECTION(RR_OCEAN_SPIDER_HOUSE_ENTRANCE_UPPER, CAN_BE_GORON),
@@ -50,6 +53,12 @@ static RegisterShipInitFunc initFunc([]() {
Regions[RR_OCEAN_SPIDER_HOUSE_ENTRANCE_UPPER] = RandoRegion{ .name = "Entrance Upper", .sceneId = SCENE_KINDAN2,
.checks = {
CHECK(RC_OCEAN_SPIDER_HOUSE_WALLET, HAS_ENOUGH_SKULLTULA_TOKENS(SCENE_KINDAN2)),
+ CHECK(RC_OCEAN_SPIDER_HOUSE_WONDER_ITEM_01, CAN_USE_PROJECTILE || CAN_USE_EXPLOSIVE),
+ CHECK(RC_OCEAN_SPIDER_HOUSE_WONDER_ITEM_02, CAN_USE_PROJECTILE || CAN_USE_EXPLOSIVE),
+ CHECK(RC_OCEAN_SPIDER_HOUSE_WONDER_ITEM_03, CAN_USE_PROJECTILE || CAN_USE_EXPLOSIVE),
+ CHECK(RC_OCEAN_SPIDER_HOUSE_WONDER_ITEM_04, CAN_USE_PROJECTILE || CAN_USE_EXPLOSIVE),
+ CHECK(RC_OCEAN_SPIDER_HOUSE_WONDER_ITEM_05, CAN_USE_PROJECTILE || CAN_USE_EXPLOSIVE),
+ CHECK(RC_OCEAN_SPIDER_HOUSE_WONDER_ITEM_06, CAN_USE_PROJECTILE || CAN_USE_EXPLOSIVE),
},
.exits = { // TO FROM
EXIT(ENTRANCE(GREAT_BAY_COAST, 8), ENTRANCE(OCEANSIDE_SPIDER_HOUSE, 0), true)
@@ -140,6 +149,11 @@ static RegisterShipInitFunc initFunc([]() {
CHECK(RC_SWAMP_SKULLTULA_POT_ROOM_WALL, CanKillEnemy(ACTOR_EN_SW)),
CHECK(RC_SWAMP_SPIDER_HOUSE_JAR_ROOM_POT_06, true),
CHECK(RC_SWAMP_SPIDER_HOUSE_JAR_ROOM_POT_07, true),
+ CHECK(RC_SWAMP_SPIDER_HOUSE_WONDER_ITEM_01, true),
+ CHECK(RC_SWAMP_SPIDER_HOUSE_WONDER_ITEM_02, true),
+ CHECK(RC_SWAMP_SPIDER_HOUSE_WONDER_ITEM_03, true),
+ CHECK(RC_SWAMP_SPIDER_HOUSE_WONDER_ITEM_04, true),
+ CHECK(RC_SWAMP_SPIDER_HOUSE_WONDER_ITEM_05, true),
},
.connections = {
CONNECTION(RR_SWAMP_SPIDER_HOUSE_CENTER_ROOM_UPPER, true),
@@ -157,9 +171,18 @@ static RegisterShipInitFunc initFunc([]() {
CHECK(RC_SWAMP_SKULLTULA_MAIN_ROOM_LOWER_RIGHT_SOFT_SOIL, HAS_BOTTLE && CAN_ACCESS(BUGS) && CanKillEnemy(ACTOR_EN_SW)),
CHECK(RC_SWAMP_SKULLTULA_MAIN_ROOM_PILLAR, CanKillEnemy(ACTOR_EN_SW)),
CHECK(RC_SWAMP_SKULLTULA_MAIN_ROOM_WATER, CanKillEnemy(ACTOR_EN_SW)),
- CHECK(RC_SWAMP_SPIDER_HOUSE_MAIN_ROOM_LOWER_POT_01, true),
- CHECK(RC_SWAMP_SPIDER_HOUSE_MAIN_ROOM_LOWER_POT_02, true),
- CHECK(RC_SWAMP_SPIDER_HOUSE_MAIN_ROOM_LOWER_POT_03, true),
+ CHECK(RC_SWAMP_SPIDER_HOUSE_WONDER_ITEM_06, CAN_USE_PROJECTILE),
+ CHECK(RC_SWAMP_SPIDER_HOUSE_WONDER_ITEM_07, CAN_USE_PROJECTILE),
+ CHECK(RC_SWAMP_SPIDER_HOUSE_WONDER_ITEM_08, CAN_USE_PROJECTILE),
+ CHECK(RC_SWAMP_SPIDER_HOUSE_WONDER_ITEM_09, CAN_USE_PROJECTILE),
+ CHECK(RC_SWAMP_SPIDER_HOUSE_WONDER_ITEM_10, CAN_USE_PROJECTILE),
+ CHECK(RC_SWAMP_SPIDER_HOUSE_WONDER_ITEM_11, CAN_USE_PROJECTILE),
+ CHECK(RC_SWAMP_SPIDER_HOUSE_WONDER_ITEM_12, CAN_USE_PROJECTILE),
+ CHECK(RC_SWAMP_SPIDER_HOUSE_WONDER_ITEM_13, CAN_USE_PROJECTILE),
+ CHECK(RC_SWAMP_SPIDER_HOUSE_WONDER_ITEM_14, CAN_USE_PROJECTILE),
+ CHECK(RC_SWAMP_SPIDER_HOUSE_WONDER_ITEM_15, CAN_USE_PROJECTILE),
+ CHECK(RC_SWAMP_SPIDER_HOUSE_WONDER_ITEM_16, CAN_USE_PROJECTILE),
+ CHECK(RC_SWAMP_SPIDER_HOUSE_WONDER_ITEM_17, CAN_USE_PROJECTILE),
},
.connections = {
CONNECTION(RR_SWAMP_SPIDER_HOUSE_ENTRANCE, true),
diff --git a/mm/2s2h/Rando/Logic/Regions/TerminaField.cpp b/mm/2s2h/Rando/Logic/Regions/TerminaField.cpp
index 0c1df9df8..d9d041433 100644
--- a/mm/2s2h/Rando/Logic/Regions/TerminaField.cpp
+++ b/mm/2s2h/Rando/Logic/Regions/TerminaField.cpp
@@ -511,6 +511,42 @@ static RegisterShipInitFunc initFunc([]() {
CHECK(RC_TERMINA_FIELD_MAN_IN_THE_TREE_RUPEE_02, true),
CHECK(RC_TERMINA_FIELD_TREE_01, true),
CHECK(RC_TERMINA_FIELD_TREE_02, true),
+ CHECK(RC_TERMINA_FIELD_WONDER_ITEM_01, true),
+ CHECK(RC_TERMINA_FIELD_WONDER_ITEM_02, true),
+ CHECK(RC_TERMINA_FIELD_WONDER_ITEM_03, true),
+ CHECK(RC_TERMINA_FIELD_WONDER_ITEM_04, true),
+ CHECK(RC_TERMINA_FIELD_WONDER_ITEM_05, true),
+ CHECK(RC_TERMINA_FIELD_WONDER_ITEM_06, CAN_BE_GORON && HAS_MAGIC),
+ CHECK(RC_TERMINA_FIELD_WONDER_ITEM_07, true),
+ CHECK(RC_TERMINA_FIELD_WONDER_ITEM_08, true),
+ CHECK(RC_TERMINA_FIELD_WONDER_ITEM_09, CAN_BE_GORON && HAS_MAGIC),
+ CHECK(RC_TERMINA_FIELD_WONDER_ITEM_10, CAN_BE_GORON && HAS_MAGIC),
+ CHECK(RC_TERMINA_FIELD_WONDER_ITEM_11, CAN_BE_GORON && HAS_MAGIC),
+ CHECK(RC_TERMINA_FIELD_WONDER_ITEM_12, CAN_USE_PROJECTILE || HAS_ITEM(ITEM_BOMBCHU)),
+ CHECK(RC_TERMINA_FIELD_WONDER_ITEM_13, CAN_USE_PROJECTILE || HAS_ITEM(ITEM_BOMBCHU)),
+ CHECK(RC_TERMINA_FIELD_WONDER_ITEM_14, CAN_USE_PROJECTILE || HAS_ITEM(ITEM_BOMBCHU)),
+ CHECK(RC_TERMINA_FIELD_WONDER_ITEM_15, CAN_USE_SWORD || CAN_BE_GORON || CAN_USE_PROJECTILE || CAN_USE_EXPLOSIVE || HAS_ITEM(ITEM_DEKU_STICK) || HAS_ITEM(ITEM_DEKU_NUT)),
+ CHECK(RC_TERMINA_FIELD_WONDER_ITEM_16, CAN_USE_SWORD || CAN_BE_GORON || CAN_USE_PROJECTILE || CAN_USE_EXPLOSIVE || HAS_ITEM(ITEM_DEKU_STICK) || HAS_ITEM(ITEM_DEKU_NUT)),
+ CHECK(RC_TERMINA_FIELD_WONDER_ITEM_17, CAN_USE_SWORD || CAN_BE_GORON || CAN_USE_PROJECTILE || CAN_USE_EXPLOSIVE || HAS_ITEM(ITEM_DEKU_STICK) || HAS_ITEM(ITEM_DEKU_NUT)),
+ CHECK(RC_TERMINA_FIELD_WONDER_ITEM_18, true),
+ CHECK(RC_TERMINA_FIELD_WONDER_ITEM_19, true),
+ CHECK(RC_TERMINA_FIELD_WONDER_ITEM_20, true),
+ CHECK(RC_TERMINA_FIELD_WONDER_ITEM_21, true),
+ CHECK(RC_TERMINA_FIELD_WALL_WONDER_ITEM_01, canPlaySong(OCARINA_SONG_TERMINA_WALL) && IS_DAY()), // Only obtainable 6-7 A.M.
+ CHECK(RC_TERMINA_FIELD_WALL_WONDER_ITEM_02, canPlaySong(OCARINA_SONG_TERMINA_WALL) && IS_DAY()), // Only obtainable 6-7 A.M.
+ CHECK(RC_TERMINA_FIELD_WALL_WONDER_ITEM_03, canPlaySong(OCARINA_SONG_TERMINA_WALL) && IS_DAY()), // Only obtainable 6-7 A.M.
+ CHECK(RC_TERMINA_FIELD_WALL_WONDER_ITEM_04, canPlaySong(OCARINA_SONG_TERMINA_WALL)),
+ CHECK(RC_TERMINA_FIELD_WALL_WONDER_ITEM_05, canPlaySong(OCARINA_SONG_TERMINA_WALL)),
+ CHECK(RC_TERMINA_FIELD_WALL_WONDER_ITEM_06, canPlaySong(OCARINA_SONG_TERMINA_WALL)),
+ CHECK(RC_TERMINA_FIELD_WALL_WONDER_ITEM_07, canPlaySong(OCARINA_SONG_TERMINA_WALL)),
+ CHECK(RC_TERMINA_FIELD_WALL_WONDER_ITEM_08, canPlaySong(OCARINA_SONG_TERMINA_WALL)),
+ CHECK(RC_TERMINA_FIELD_WALL_WONDER_ITEM_09, canPlaySong(OCARINA_SONG_TERMINA_WALL) && IS_NIGHT()), // Only obtainable 8-9 P.M. and 4-5 A.M.
+ CHECK(RC_TERMINA_FIELD_WALL_WONDER_ITEM_10, canPlaySong(OCARINA_SONG_TERMINA_WALL) && IS_NIGHT()), // Only obtainable 8-9 P.M. and 4-5 A.M.
+ CHECK(RC_TERMINA_FIELD_WALL_WONDER_ITEM_11, canPlaySong(OCARINA_SONG_TERMINA_WALL) && IS_NIGHT()), // Only obtainable 8-9 P.M. and 4-5 A.M.
+ CHECK(RC_TERMINA_FIELD_WALL_WONDER_ITEM_12, canPlaySong(OCARINA_SONG_TERMINA_WALL)),
+ CHECK(RC_TERMINA_FIELD_WALL_WONDER_ITEM_13, canPlaySong(OCARINA_SONG_TERMINA_WALL)),
+ CHECK(RC_TERMINA_FIELD_WALL_WONDER_ITEM_14, canPlaySong(OCARINA_SONG_TERMINA_WALL)),
+ CHECK(RC_TERMINA_FIELD_WALL_WONDER_ITEM_15, canPlaySong(OCARINA_SONG_TERMINA_WALL)),
CHECK(RC_ENEMY_DROP_BLUE_BUBBLE, CanKillEnemy(ACTOR_EN_BB) && IS_NIGHT()), // Night only
CHECK(RC_ENEMY_DROP_DEKU_BABA, CanKillEnemy(ACTOR_EN_DEKUBABA)),
CHECK(RC_ENEMY_DROP_CHUCHU, CanKillEnemy(ACTOR_EN_SLIME) && IS_DAY()), // Day only