mirror of
https://github.com/HarbourMasters/Shipwright
synced 2026-04-23 08:14:31 +00:00
[Rando] Shuffle Wonder Items (#6342)
This commit is contained in:
parent
7363e1c264
commit
412e9e262f
|
|
@ -2419,6 +2419,42 @@ typedef enum {
|
|||
// - None
|
||||
VB_WIN_GORON_POT,
|
||||
|
||||
// #### `result`
|
||||
// ```c
|
||||
// true
|
||||
// ```
|
||||
// #### `args`
|
||||
// - `*EnWonderItem`
|
||||
VB_WONDER_DROP_ITEM,
|
||||
|
||||
// #### `result`
|
||||
// ```c
|
||||
// true
|
||||
// ```
|
||||
// #### `args`
|
||||
// - 'Vec3f' pos
|
||||
// - 'f32' rotY
|
||||
VB_WONDER_HEISHI_ITEM,
|
||||
|
||||
// #### `result`
|
||||
// ```c
|
||||
// (gSaveContext.dayTime < 0xB888 || IS_DAY) && ((!IS_RANDO &&
|
||||
// !Flags_GetEventChkInf(EVENTCHKINF_ZELDA_FLED_HYRULE_CASTLE)) || (IS_RANDO && !metZelda))
|
||||
// (gSaveContext.dayTime >= 0xB889) || !IS_DAY || (!IS_RANDO &&
|
||||
// Flags_GetEventChkInf(EVENTCHKINF_ZELDA_FLED_HYRULE_CASTLE)) || (IS_RANDO && metZelda)
|
||||
// ```
|
||||
// #### `args`
|
||||
// - EnHeishi1*
|
||||
VB_WONDER_HEISHI_PATROLLING,
|
||||
|
||||
// #### `result`
|
||||
// ```c
|
||||
// (this->switchFlag >= 0) && Flags_GetSwitch(play, this->switchFlag)
|
||||
// ```
|
||||
// #### `args`
|
||||
// - `None`
|
||||
VB_WONDER_SPAWN,
|
||||
|
||||
// #### `result`
|
||||
// ```c
|
||||
// true
|
||||
|
|
|
|||
|
|
@ -131,6 +131,10 @@ void StaticData::HintTable_Init_Exclude_Dungeon() {
|
|||
/*german*/ "Man erzählt sich, daß eine #Kiste im Deku-Baum# #[[1]]# enthielte.",
|
||||
/*french*/ "Selon moi, une #caisse dans l'Arbre Mojo# contient #[[1]]#.", {QM_RED, QM_GREEN}));
|
||||
|
||||
hintTextTable[RHT_WONDER_ITEM_DEKU_TREE] = HintText(CustomMessage("They say that a #wonder item in the Deku Tree# hides #[[1]]#.",
|
||||
/*german*/ "Man erzählt sich, daß sich ein #Wunder-Gegenstand im Deku-Baum# #[[1]]# verstecke.",
|
||||
/*french*/ "Selon moi, un #objet merveilleux dans l'Arbre Mojo# cache #[[1]]#.", {QM_RED, QM_GREEN}));
|
||||
|
||||
/*--------------------------
|
||||
| DODONGOS CAVERN |
|
||||
---------------------------*/
|
||||
|
|
@ -484,6 +488,10 @@ void StaticData::HintTable_Init_Exclude_Dungeon() {
|
|||
/*german*/ "Man erzählt sich, daß eine #Kiste in Jabu-Jabus Bauch# #[[1]]# enthielte.",
|
||||
/*french*/ "Selon moi, une #caisse dans le Ventre de Jabu-Jabu# contient #[[1]]#.", {QM_RED, QM_GREEN}));
|
||||
|
||||
hintTextTable[RHT_WONDER_ITEM_JABU_JABU] = HintText(CustomMessage("They say that a #wonder item in Jabu Jabu's Belly# hides #[[1]]#.",
|
||||
/*german*/ "Man erzählt sich, daß sich ein #Wunder-Gegenstand in Jabu-Jabus Bauch# #[[1]]# verstecke.",
|
||||
/*french*/ "Selon moi, un #objet merveilleux dans le Ventre de Jabu-Jabu# cache #[[1]]#.", {QM_RED, QM_GREEN}));
|
||||
|
||||
/*--------------------------
|
||||
| FOREST TEMPLE |
|
||||
---------------------------*/
|
||||
|
|
@ -926,6 +934,10 @@ void StaticData::HintTable_Init_Exclude_Dungeon() {
|
|||
/*german*/ "Man erzählt sich, daß eine #Kiste im Feuertempel# #[[1]]# enthielte.",
|
||||
/*french*/ "Selon moi, une #caisse dans le Temple du Feu# contient #[[1]]#.", {QM_RED, QM_GREEN}));
|
||||
|
||||
hintTextTable[RHT_WONDER_ITEM_FIRE_TEMPLE] = HintText(CustomMessage("They say that a #wonder item in Fire Temple# hides #[[1]]#.",
|
||||
/*german*/ "Man erzählt sich, daß sich ein #Wunder-Gegenstand im Feuertempel# #[[1]]# verstecke.",
|
||||
/*french*/ "Selon moi, un #objet merveilleux dans le Temple du Feu# cache #[[1]]#.", {QM_RED, QM_GREEN}));
|
||||
|
||||
/*--------------------------
|
||||
| WATER TEMPLE |
|
||||
---------------------------*/
|
||||
|
|
@ -1077,6 +1089,10 @@ void StaticData::HintTable_Init_Exclude_Dungeon() {
|
|||
/*german*/ "Man erzählt sich, daß eine #Kiste im Wassertempel# #[[1]]# enthielte.",
|
||||
/*french*/ "Selon moi, une #caisse dans le Temple de l'Eau# contient #[[1]]#.", {QM_RED, QM_GREEN}));
|
||||
|
||||
hintTextTable[RHT_WONDER_ITEM_WATER_TEMPLE] = HintText(CustomMessage("They say that a #wonder item in Water Temple# hides #[[1]]#.",
|
||||
/*german*/ "Man erzählt sich, daß sich ein #Wunder-Gegenstand im Wassertempel# #[[1]]# verstecke.",
|
||||
/*french*/ "Selon moi, un #objet merveilleux dans le Temple de l'Eau# cache #[[1]]#.", {QM_RED, QM_GREEN}));
|
||||
|
||||
/*--------------------------
|
||||
| SPIRIT TEMPLE |
|
||||
---------------------------*/
|
||||
|
|
@ -1326,6 +1342,10 @@ void StaticData::HintTable_Init_Exclude_Dungeon() {
|
|||
/*german*/ "Man erzählt sich, daß eine #Kiste im Geistertempel# #[[1]]# enthielte.",
|
||||
/*french*/ "Selon moi, une #caisse dans le Temple de l'Esprit# contient #[[1]]#.", {QM_RED, QM_GREEN}));
|
||||
|
||||
hintTextTable[RHT_WONDER_ITEM_SPIRIT_TEMPLE] = HintText(CustomMessage("They say that a #wonder item in Spirit Temple# hides #[[1]]#.",
|
||||
/*german*/ "Man erzählt sich, daß sich ein #Wunder-Gegenstand im Geistertempel# #[[1]]# verstecke.",
|
||||
/*french*/ "Selon moi, un #objet merveilleux dans le Temple de l'Esprit# cache #[[1]]#.", {QM_RED, QM_GREEN}));
|
||||
|
||||
/*--------------------------
|
||||
| SHADOW TEMPLE |
|
||||
---------------------------*/
|
||||
|
|
@ -1597,6 +1617,10 @@ void StaticData::HintTable_Init_Exclude_Dungeon() {
|
|||
/*german*/ "Man erzählt sich, daß das #Lesen eines Schildes im Schattentempel# #[[1]]# enthülle.",
|
||||
/*french*/ "Selon moi, #lire un panneau dans le Temple de l'Ombre# révèle #[[1]]#.", {QM_RED, QM_GREEN}));
|
||||
|
||||
hintTextTable[RHT_WONDER_ITEM_SHADOW_TEMPLE] = HintText(CustomMessage("They say that a #wonder item in Shadow Temple# hides #[[1]]#.",
|
||||
/*german*/ "Man erzählt sich, daß sich ein #Wunder-Gegenstand im Schattentempel# #[[1]]# verstecke.",
|
||||
/*french*/ "Selon moi, un #objet merveilleux dans le Temple de l'Ombre# cache #[[1]]#.", {QM_RED, QM_GREEN}));
|
||||
|
||||
/*--------------------------
|
||||
| BOTTOM OF THE WELL |
|
||||
---------------------------*/
|
||||
|
|
@ -1743,6 +1767,9 @@ void StaticData::HintTable_Init_Exclude_Dungeon() {
|
|||
/*german*/ "Man erzählt sich, daß etwas #Gras auf dem Grund des Brunnens# #[[1]]# verstecke.",
|
||||
/*french*/ "Selon moi, de l'#herbe dans le Puits# cache #[[1]]#.", {QM_RED, QM_GREEN}));
|
||||
|
||||
hintTextTable[RHT_BOTTOM_OF_THE_WELL_WONDER_ITEM] = HintText(CustomMessage("They say that a #wonder item in the Bottom of the Well# hides #[[1]]#.",
|
||||
/*german*/ "Man erzählt sich, daß sich ein #Wunder-Gegenstand auf dem Grund des Brunnens# #[[1]]# verstecke.",
|
||||
/*french*/ "Selon moi, un #objet merveilleux dans le Puits# cache #[[1]]#.", {QM_RED, QM_GREEN}));
|
||||
|
||||
/*--------------------------
|
||||
| ICE CAVERN |
|
||||
|
|
@ -2024,6 +2051,10 @@ void StaticData::HintTable_Init_Exclude_Dungeon() {
|
|||
/*german*/ "Man erzählt sich, daß eine #Kiste in der Gerudo-Trainingsarena# #[[1]]# enthielte.",
|
||||
/*french*/ "Selon moi, une #caisse dans le Gymnase Gerudo# contient #[[1]]#.", {QM_RED, QM_GREEN}));
|
||||
|
||||
hintTextTable[RHT_WONDER_ITEM_GERUDO_TRAINING_GROUND] = HintText(CustomMessage("They say that a #wonder item in Gerudo Training Ground# hides #[[1]]#.",
|
||||
/*german*/ "Man erzählt sich, daß sich ein #Wunder-Gegenstand in der Gerudo-Trainingsarena# #[[1]]# verstecke.",
|
||||
/*french*/ "Selon moi, un #objet merveilleux dans le Gymnase Gerudo# cache #[[1]]#.", {QM_RED, QM_GREEN}));
|
||||
|
||||
/*--------------------------
|
||||
| GANONS CASTLE |
|
||||
---------------------------*/
|
||||
|
|
@ -2233,6 +2264,10 @@ void StaticData::HintTable_Init_Exclude_Dungeon() {
|
|||
/*german*/ "Man erzählt sich, daß ein #Herz in Ganons Schloß# #[[1]]# verstecke.",
|
||||
/*french*/ "Selon moi, un #coeur dans le Château de Ganon# cache #[[1]]#.", {QM_RED, QM_GREEN}));
|
||||
|
||||
hintTextTable[RHT_GANONS_CASTLE_WONDER_ITEM] = HintText(CustomMessage("They say that a #wonder item in Ganon's Castle# hides #[[1]]#.",
|
||||
/*german*/ "Man erzählt sich, daß sich ein #Wunder-Gegenstand in Ganons Schloß# #[[1]]# verstecke.",
|
||||
/*french*/ "Selon moi, un #objet merveilleux dans le Château de Ganon# cache #[[1]]#.", {QM_RED, QM_GREEN}));
|
||||
|
||||
// clang-format on
|
||||
}
|
||||
} // namespace Rando
|
||||
|
|
|
|||
|
|
@ -2247,6 +2247,74 @@ void StaticData::HintTable_Init_Exclude_Overworld() {
|
|||
hintTextTable[RHT_SIGN_HAUNTED_WASTELAND] = HintText(CustomMessage("They say that #reading a sign in Haunted Wasteland# reveals #[[1]]#.",
|
||||
/*german*/ "Man erzählt sich, daß das #Lesen eines Schildes in der Gespensterwüste# #[[1]]# enthülle.",
|
||||
/*french*/ "Selon moi, #lire un panneau dans le Désert Hanté# révèle #[[1]]#.", {QM_RED, QM_GREEN}));
|
||||
|
||||
hintTextTable[RHT_WONDER_ITEM_KOKIRI_FOREST] = HintText(CustomMessage("They say that a #wonder item in Kokiri Forest# hides #[[1]]#.",
|
||||
/*german*/ "Man erzählt sich, daß sich ein #Wunder-Gegenstand im Kokiri-Wald# #[[1]]# verstecke.",
|
||||
/*french*/ "Selon moi, un #objet merveilleux dans la Fôret Kokiri# cache #[[1]]#.", {QM_RED, QM_GREEN}));
|
||||
|
||||
hintTextTable[RHT_WONDER_ITEM_HYRULE_FIELD] = HintText(CustomMessage("They say that a #wonder item in Hyrule Field# hides #[[1]]#.",
|
||||
/*german*/ "Man erzählt sich, daß sich ein #Wunder-Gegenstand in der Ebene von Hyrule# #[[1]]# verstecke.",
|
||||
/*french*/ "Selon moi, un #objet merveilleux dans la Plaine d'Hyrule# cache #[[1]]#.", {QM_RED, QM_GREEN}));
|
||||
|
||||
hintTextTable[RHT_WONDER_ITEM_MARKET] = HintText(CustomMessage("They say that a #wonder item in the Market# hides #[[1]]#.",
|
||||
/*german*/ "Man erzählt sich, daß sich ein #Wunder-Gegenstand auf dem Markt# #[[1]]# verstecke.",
|
||||
/*french*/ "Selon moi, un #objet merveilleux dans la Place du Marché# cache #[[1]]#.", {QM_RED, QM_GREEN}));
|
||||
|
||||
hintTextTable[RHT_WONDER_ITEM_LON_LON_RANCH] = HintText(CustomMessage("They say that a #wonder item in Lon Lon Ranch# hides #[[1]]#.",
|
||||
/*german*/ "Man erzählt sich, daß sich ein #Wunder-Gegenstand auf der Lon Lon-Farm# #[[1]]# verstecke.",
|
||||
/*french*/ "Selon moi, un #objet merveilleux dans le Ranch Lon Lon# cache #[[1]]#.", {QM_RED, QM_GREEN}));
|
||||
|
||||
hintTextTable[RHT_WONDER_ITEM_HYRULE_CASTLE] = HintText(CustomMessage("They say that a #wonder item in Hyrule Castle# hides #[[1]]#.",
|
||||
/*german*/ "Man erzählt sich, daß sich ein #Wunder-Gegenstand im Schloss von Hyrule# #[[1]]# verstecke.",
|
||||
/*french*/ "Selon moi, un #objet merveilleux au Château d'Hyrule# cache #[[1]]#.", {QM_RED, QM_GREEN}));
|
||||
|
||||
hintTextTable[RHT_WONDER_ITEM_CASTLE_COURTYARD_ZELDA] = HintText(CustomMessage("They say that #shooting a window in a castle# reveals #[[1]]#.",
|
||||
/*german*/ "Man erzählt sich, daß das #Schießen auf ein Fenster in einem Schloss# #[[1]]# enthülle.",
|
||||
/*french*/ "Selon moi, #tirer sur une fenêtre dans un château# donne #[[1]]#.", {QM_RED, QM_GREEN}));
|
||||
|
||||
hintTextTable[RHT_WONDER_ITEM_LOST_WOODS] = HintText(CustomMessage("They say that a #wonder item in the woods# hides #[[1]]#.",
|
||||
/*german*/ "Man erzählt sich, daß sich ein #Wunder-Gegenstand in den Wäldern# #[[1]]# verstecke.",
|
||||
/*french*/ "Selon moi, un #objet merveilleux dans des bois# cache #[[1]]#.", {QM_RED, QM_GREEN}));
|
||||
|
||||
hintTextTable[RHT_WONDER_ITEM_SACRED_FOREST_MEADOW] = HintText(CustomMessage("They say that a #wonder item in a forest meadow# hides #[[1]]#.",
|
||||
/*german*/ "Man erzählt sich, daß sich ein #Wunder-Gegenstand auf einer Waldlichtung# #[[1]]# verstecke.",
|
||||
/*french*/ "Selon moi, un #objet merveilleux dans le sanctuaire des bois# cache #[[1]]#.", {QM_RED, QM_GREEN}));
|
||||
|
||||
hintTextTable[RHT_WONDER_ITEM_KAKARIKO_VILLAGE] = HintText(CustomMessage("They say that a #wonder item in Kakariko Village# hides #[[1]]#.",
|
||||
/*german*/ "Man erzählt sich, daß sich ein #Wunder-Gegenstand in Kakariko# #[[1]]# verstecke.",
|
||||
/*french*/ "Selon moi, un #objet merveilleux dans le Village de Cocorico# cache #[[1]]#.", {QM_RED, QM_GREEN}));
|
||||
|
||||
hintTextTable[RHT_WONDER_ITEM_DAMPES_GRAVE] = HintText(CustomMessage("They say that a #wonder item in a gravekeeper's tomb# hides #[[1]]#.",
|
||||
/*german*/ "Man erzählt sich, daß sich ein #Wunder-Gegenstand im Grab des Totengräbers# #[[1]]# verstecke.",
|
||||
/*french*/ "Selon moi, un #objet merveilleux dans la tombe du fossoyeur# cache #[[1]]#.", {QM_RED, QM_GREEN}));
|
||||
|
||||
hintTextTable[RHT_WONDER_ITEM_DEATH_MOUNTAIN_CRATER] = HintText(CustomMessage("They say that a #wonder item in Death Mountain's Crater# hides #[[1]]#.",
|
||||
/*german*/ "Man erzählt sich, daß sich ein #Wunder-Gegenstand im Todeskrater# #[[1]]# verstecke.",
|
||||
/*french*/ "Selon moi, un #objet merveilleux sur le Mont du Péril# cache #[[1]]#.", {QM_RED, QM_GREEN}));
|
||||
|
||||
hintTextTable[RHT_WONDER_ITEM_ZORAS_RIVER] = HintText(CustomMessage("They say that a #wonder item in a river# hides #[[1]]#.",
|
||||
/*german*/ "Man erzählt sich, daß sich ein #Wunder-Gegenstand in einem Fluss# #[[1]]# verstecke.",
|
||||
/*french*/ "Selon moi, un #objet merveilleux dans une rivière# cache #[[1]]#.", {QM_RED, QM_GREEN}));
|
||||
|
||||
hintTextTable[RHT_WONDER_ITEM_ZORAS_RIVER] = HintText(CustomMessage("They say that a #wonder item in Zora's Fountain# hides #[[1]]#.",
|
||||
/*german*/ "Man erzählt sich, daß sich ein #Wunder-Gegenstand in Zoras Quelle# #[[1]]# verstecke.",
|
||||
/*french*/ "Selon moi, un #objet merveilleux dans la Fontaine Zora# cache #[[1]]#.", {QM_RED, QM_GREEN}));
|
||||
|
||||
hintTextTable[RHT_WONDER_ITEM_GERUDO_VALLEY] = HintText(CustomMessage("They say that a #wonder item in Gerudo Valley# hides #[[1]]#.",
|
||||
/*german*/ "Man erzählt sich, daß sich ein #Wunder-Gegenstand im Gerudotal# #[[1]]# verstecke.",
|
||||
/*french*/ "Selon moi, un #objet merveilleux dans une vallée# cache #[[1]]#.", {QM_RED, QM_GREEN}));
|
||||
|
||||
hintTextTable[RHT_WONDER_ITEM_GERUDOS_FORTRESS] = HintText(CustomMessage("They say that a #wonder item in Gerudo Fortress# hides #[[1]]#.",
|
||||
/*german*/ "Man erzählt sich, daß sich ein #Wunder-Gegenstand in der Gerudo-Festung# #[[1]]# verstecke.",
|
||||
/*french*/ "Selon moi, un #objet merveilleux dans la Forteresse Gerudo# cache #[[1]]#.", {QM_RED, QM_GREEN}));
|
||||
|
||||
hintTextTable[RHT_WONDER_ITEM_THIEVES_HIDEOUT] = HintText(CustomMessage("They say that a #wonder item in Thieve's Hideout# hides #[[1]]#.",
|
||||
/*german*/ "Man erzählt sich, daß sich ein #Wunder-Gegenstand im Versteck der Diebe# #[[1]]# verstecke.",
|
||||
/*french*/ "Selon moi, un #objet merveilleux dans a Cachette des Voleurs# cache #[[1]]#.", {QM_RED, QM_GREEN}));
|
||||
|
||||
hintTextTable[RHT_WONDER_ITEM_DESERT_COLOSSUS] = HintText(CustomMessage("They say that a #wonder item near the temple of the sand# hides #[[1]]#.",
|
||||
/*german*/ "Man erzählt sich, daß sich ein #Wunder-Gegenstand nahe des Tempels des Sandes# #[[1]]# verstecke.",
|
||||
/*french*/ "Selon moi, un #objet merveilleux près du temple du sable# cache #[[1]]#.", {QM_RED, QM_GREEN}));
|
||||
// clang-format on
|
||||
}
|
||||
} // namespace Rando
|
||||
|
|
|
|||
|
|
@ -447,6 +447,13 @@ void GenerateItemPool() {
|
|||
bool bushesActive = (bool)ctx->GetOption(RSK_SHUFFLE_BUSHES);
|
||||
PlaceItemsForType(RCTYPE_BUSH, bushesActive, false);
|
||||
|
||||
// Shuffle Wonder Items
|
||||
bool overworldWonderItemsActive = ctx->GetOption(RSK_SHUFFLE_WONDER_ITEMS).Is(RO_SHUFFLE_WONDER_ITEMS_OVERWORLD) ||
|
||||
ctx->GetOption(RSK_SHUFFLE_WONDER_ITEMS).Is(RO_SHUFFLE_WONDER_ITEMS_ALL);
|
||||
bool dungeonWonderItemsActive = ctx->GetOption(RSK_SHUFFLE_WONDER_ITEMS).Is(RO_SHUFFLE_WONDER_ITEMS_DUNGEONS) ||
|
||||
ctx->GetOption(RSK_SHUFFLE_WONDER_ITEMS).Is(RO_SHUFFLE_WONDER_ITEMS_ALL);
|
||||
PlaceItemsForType(RCTYPE_WONDER_ITEM, overworldWonderItemsActive, dungeonWonderItemsActive);
|
||||
|
||||
// Shuffle Crates
|
||||
bool overworldCratesActive = ctx->GetOption(RSK_SHUFFLE_CRATES).Is(RO_SHUFFLE_CRATES_OVERWORLD) ||
|
||||
ctx->GetOption(RSK_SHUFFLE_CRATES).Is(RO_SHUFFLE_CRATES_ALL);
|
||||
|
|
|
|||
|
|
@ -217,6 +217,8 @@ void Context::GenerateLocationPool() {
|
|||
(!mOptions[RSK_SHUFFLE_TREES] || mOptions[RSK_LOGIC_RULES].IsNot(RO_LOGIC_NO_LOGIC))) ||
|
||||
(location.GetRCType() == RCTYPE_BUSH && !mOptions[RSK_SHUFFLE_BUSHES]) ||
|
||||
(location.GetRCType() == RCTYPE_SIGN && mOptions[RSK_SHUFFLE_SIGNS].Is(RO_SHUFFLE_SIGNS_OFF)) ||
|
||||
(location.GetRCType() == RCTYPE_WONDER_ITEM &&
|
||||
mOptions[RSK_SHUFFLE_WONDER_ITEMS].Is(RO_SHUFFLE_WONDER_ITEMS_OFF)) ||
|
||||
(location.GetRCType() == RCTYPE_FREESTANDING &&
|
||||
mOptions[RSK_SHUFFLE_FREESTANDING].Is(RO_SHUFFLE_FREESTANDING_OFF)) ||
|
||||
(location.GetRCType() == RCTYPE_BEEHIVE && !mOptions[RSK_SHUFFLE_BEEHIVES])) {
|
||||
|
|
@ -229,6 +231,8 @@ void Context::GenerateLocationPool() {
|
|||
mOptions[RSK_SHUFFLE_FREESTANDING].Is(RO_SHUFFLE_FREESTANDING_DUNGEONS)) ||
|
||||
(location.GetRCType() == RCTYPE_POT && mOptions[RSK_SHUFFLE_POTS].Is(RO_SHUFFLE_POTS_DUNGEONS)) ||
|
||||
(location.GetRCType() == RCTYPE_GRASS && mOptions[RSK_SHUFFLE_GRASS].Is(RO_SHUFFLE_GRASS_DUNGEONS)) ||
|
||||
(location.GetRCType() == RCTYPE_WONDER_ITEM &&
|
||||
mOptions[RSK_SHUFFLE_WONDER_ITEMS].Is(RO_SHUFFLE_WONDER_ITEMS_DUNGEONS)) ||
|
||||
(location.GetRCType() == RCTYPE_CRATE && mOptions[RSK_SHUFFLE_CRATES].Is(RO_SHUFFLE_CRATES_DUNGEONS)) ||
|
||||
(location.GetRCType() == RCTYPE_NLCRATE &&
|
||||
mOptions[RSK_SHUFFLE_CRATES].Is(RO_SHUFFLE_CRATES_DUNGEONS) &&
|
||||
|
|
@ -250,6 +254,8 @@ void Context::GenerateLocationPool() {
|
|||
(location.GetRCType() == RCTYPE_POT && mOptions[RSK_SHUFFLE_POTS].Is(RO_SHUFFLE_POTS_OVERWORLD)) ||
|
||||
(location.GetRCType() == RCTYPE_GRASS &&
|
||||
mOptions[RSK_SHUFFLE_GRASS].Is(RO_SHUFFLE_GRASS_OVERWORLD)) ||
|
||||
(location.GetRCType() == RCTYPE_WONDER_ITEM &&
|
||||
mOptions[RSK_SHUFFLE_WONDER_ITEMS].Is(RO_SHUFFLE_WONDER_ITEMS_OVERWORLD)) ||
|
||||
(location.GetRCType() == RCTYPE_CRATE &&
|
||||
mOptions[RSK_SHUFFLE_CRATES].Is(RO_SHUFFLE_CRATES_OVERWORLD)) ||
|
||||
(location.GetRCType() == RCTYPE_NLCRATE &&
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
#include <soh/OTRGlobals.h>
|
||||
#include "soh/ObjectExtension/ObjectExtension.h"
|
||||
#include "item_category_adj.h"
|
||||
#include "particle_cmc.h"
|
||||
extern "C" {
|
||||
extern PlayState* gPlayState;
|
||||
#include "overlays/actors/ovl_En_Kanban/z_en_kanban.h"
|
||||
|
|
@ -9,16 +10,6 @@ extern PlayState* gPlayState;
|
|||
#include "overlays/actors/ovl_En_Wonder_Talk2/z_en_wonder_talk2.h"
|
||||
}
|
||||
|
||||
typedef enum {
|
||||
PARTICLE_MAJOR,
|
||||
PARTICLE_SKULLTULA_TOKEN,
|
||||
PARTICLE_SMALL_KEY,
|
||||
PARTICLE_BOSS_KEY,
|
||||
PARTICLE_HEALTH,
|
||||
PARTICLE_LESSER,
|
||||
PARTICLE_JUNK,
|
||||
} SignCMCColors;
|
||||
|
||||
uint8_t Sign_RandomizerHoldsItem(Actor* actor, PlayState* play) {
|
||||
const auto signIdentity = ObjectExtension::GetInstance().Get<CheckIdentity>(actor);
|
||||
if (signIdentity == nullptr) {
|
||||
|
|
@ -69,40 +60,6 @@ void Sign_RandomizerDrawSetup(void* actor) {
|
|||
|
||||
int isNotCMC = !cmc || (requiresStoneAgony && !CHECK_QUEST_ITEM(QUEST_STONE_OF_AGONY));
|
||||
|
||||
// Color of the circle for the particles
|
||||
static Color_RGBA8 mainColors[7][3] = {
|
||||
{ 250, 185, 40 }, // Major
|
||||
{ 0, 0, 0 }, // Skulltula Token
|
||||
{ 180, 180, 180 }, // Small Key
|
||||
{ 255, 255, 0 }, // Boss Key
|
||||
{ 250, 0, 0 }, // Health
|
||||
{ 170, 50, 0 }, // Lesser
|
||||
{ 255, 255, 255 } // Junk
|
||||
};
|
||||
|
||||
// Secondary color of the circle for the particles
|
||||
static Color_RGBA8 secColors[7][3] = {
|
||||
{ 255, 220, 135 }, // Major
|
||||
{ 255, 250, 190 }, // Skulltula Token
|
||||
{ 130, 130, 130 }, // Small Key
|
||||
{ 0, 200, 255 }, // Boss Key
|
||||
{ 0, 0, 255 }, // Health
|
||||
{ 250, 75, 0 }, // Lesser
|
||||
{ 255, 255, 255 } // Junk
|
||||
};
|
||||
|
||||
// Color of the faded flares stretching off the particles
|
||||
static Color_RGBA8 flareColors[7][3] = {
|
||||
{ 250, 220, 180 }, // Major
|
||||
{ 255, 255, 255 }, // Skulltula Token
|
||||
{ 100, 100, 100 }, // Small Key
|
||||
{ 0, 200, 255 }, // Boss Key
|
||||
{ 255, 125, 125 }, // Health
|
||||
{ 255, 160, 100 }, // Lesser
|
||||
{ 135, 135, 135 } // Junk
|
||||
};
|
||||
|
||||
s16 colorIndex;
|
||||
Color_RGBA8 primColor;
|
||||
Color_RGBA8 secColor;
|
||||
Color_RGBA8 envColor;
|
||||
|
|
@ -117,42 +74,11 @@ void Sign_RandomizerDrawSetup(void* actor) {
|
|||
getItemCategory = Randomizer_AdjustItemCategory(signItem);
|
||||
|
||||
if (isNotCMC) {
|
||||
colorIndex = PARTICLE_MAJOR;
|
||||
Color_RGBA8_Copy(&primColor, mainColors[colorIndex]);
|
||||
Color_RGBA8_Copy(&secColor, secColors[colorIndex]);
|
||||
Color_RGBA8_Copy(&envColor, flareColors[colorIndex]);
|
||||
Sign_RandomizerDraw(signActor, &primColor, &secColor, &envColor);
|
||||
return;
|
||||
getItemCategory = ITEM_CATEGORY_MAJOR;
|
||||
}
|
||||
|
||||
// Change particle color for CMC
|
||||
switch (getItemCategory) {
|
||||
case ITEM_CATEGORY_MAJOR:
|
||||
colorIndex = PARTICLE_MAJOR;
|
||||
break;
|
||||
case ITEM_CATEGORY_SKULLTULA_TOKEN:
|
||||
colorIndex = PARTICLE_SKULLTULA_TOKEN;
|
||||
break;
|
||||
case ITEM_CATEGORY_SMALL_KEY:
|
||||
colorIndex = PARTICLE_SMALL_KEY;
|
||||
break;
|
||||
case ITEM_CATEGORY_BOSS_KEY:
|
||||
colorIndex = PARTICLE_BOSS_KEY;
|
||||
break;
|
||||
case ITEM_CATEGORY_HEALTH:
|
||||
colorIndex = PARTICLE_HEALTH;
|
||||
break;
|
||||
case ITEM_CATEGORY_LESSER:
|
||||
colorIndex = PARTICLE_LESSER;
|
||||
break;
|
||||
case ITEM_CATEGORY_JUNK:
|
||||
default:
|
||||
colorIndex = PARTICLE_JUNK;
|
||||
break;
|
||||
}
|
||||
Color_RGBA8_Copy(&primColor, mainColors[colorIndex]);
|
||||
Color_RGBA8_Copy(&secColor, secColors[colorIndex]);
|
||||
Color_RGBA8_Copy(&envColor, flareColors[colorIndex]);
|
||||
primColor = Randomizer_GetParticleCMCColor(getItemCategory, COLOR_PRIMARY);
|
||||
secColor = Randomizer_GetParticleCMCColor(getItemCategory, COLOR_SECONDARY);
|
||||
envColor = Randomizer_GetParticleCMCColor(getItemCategory, COLOR_FLARE);
|
||||
Sign_RandomizerDraw(signActor, &primColor, &secColor, &envColor);
|
||||
}
|
||||
|
||||
|
|
|
|||
524
soh/soh/Enhancements/randomizer/ShuffleWonderItems.cpp
Normal file
524
soh/soh/Enhancements/randomizer/ShuffleWonderItems.cpp
Normal file
|
|
@ -0,0 +1,524 @@
|
|||
#include <soh/OTRGlobals.h>
|
||||
#include <soh/GameVersions.h>
|
||||
#include "soh/ResourceManagerHelpers.h"
|
||||
#include "soh/ObjectExtension/ObjectExtension.h"
|
||||
#include "soh/ObjectExtension/ActorListIndex.h"
|
||||
#include "item_category_adj.h"
|
||||
#include "particle_cmc.h"
|
||||
|
||||
extern "C" {
|
||||
#include "overlays/actors/ovl_En_Wonder_Item/z_en_wonder_item.h"
|
||||
#include "overlays/actors/ovl_En_Heishi1/z_en_heishi1.h"
|
||||
extern PlayState* gPlayState;
|
||||
extern Vec3f sTagPointsFree[9];
|
||||
extern Vec3f sTagPointsOrdered[9];
|
||||
}
|
||||
|
||||
extern void EnItem00_DrawRandomizedItem(EnItem00* enItem00, PlayState* play);
|
||||
|
||||
// Many wonder items spawn on top of each other, offset position to make them all distinct
|
||||
static std::unordered_map<RandomizerCheck, Vec3f> sStackedWonderOffsets = {
|
||||
{ RC_COLOSSUS_WONDER_OASIS_TREE_1, { 8.0f, 0.0f, -8.0f } },
|
||||
{ RC_COLOSSUS_WONDER_OASIS_TREE_2, { 5.0f, 0.0f, -8.0f } },
|
||||
|
||||
{ RC_JABU_JABUS_BELLY_MQ_WONDER_BASEMENT_RIGHT_COW_1, { 6.0f, 15.0f, 6.0f } },
|
||||
{ RC_JABU_JABUS_BELLY_MQ_WONDER_BASEMENT_RIGHT_COW_2, { 12.0f, 0.0f, 0.0f } },
|
||||
{ RC_JABU_JABUS_BELLY_MQ_WONDER_BASEMENT_RIGHT_COW_3, { -4.0f, -2.0f, 25.0f } },
|
||||
|
||||
{ RC_JABU_JABUS_BELLY_MQ_WONDER_BASEMENT_LEFT_COW_1, { -6.0f, -14.0f, 2.0f } },
|
||||
{ RC_JABU_JABUS_BELLY_MQ_WONDER_BASEMENT_LEFT_COW_2, { 5.0f, 0.0f, -10.0f } },
|
||||
{ RC_JABU_JABUS_BELLY_MQ_WONDER_BASEMENT_LEFT_COW_3, { 4.0f, -2.0f, 5.0f } },
|
||||
|
||||
{ RC_JABU_JABUS_BELLY_MQ_WONDER_FALLING_LIKE_LIKES_COW_RIGHT_1, { 5.0f, 6.0f, 0.0f } },
|
||||
{ RC_JABU_JABUS_BELLY_MQ_WONDER_FALLING_LIKE_LIKES_COW_RIGHT_2, { 0.0f, 0.0f, 0.0f } },
|
||||
{ RC_JABU_JABUS_BELLY_MQ_WONDER_FALLING_LIKE_LIKES_COW_RIGHT_3, { 0.0f, 0.0f, 0.0f } },
|
||||
|
||||
{ RC_JABU_JABUS_BELLY_MQ_WONDER_FALLING_LIKE_LIKES_COW_LEFT_1, { -2.0f, 0.0f, 15.0f } },
|
||||
{ RC_JABU_JABUS_BELLY_MQ_WONDER_FALLING_LIKE_LIKES_COW_LEFT_2, { 1.0f, -11.0f, -5.0f } },
|
||||
{ RC_JABU_JABUS_BELLY_MQ_WONDER_FALLING_LIKE_LIKES_COW_LEFT_3, { 0.0f, -12.0f, 0.0f } },
|
||||
|
||||
{ RC_JABU_JABUS_BELLY_MQ_WONDER_FALLING_LIKE_LIKES_EXPLOSION_1, { -7.5f, 0.0f, -7.5f } },
|
||||
{ RC_JABU_JABUS_BELLY_MQ_WONDER_FALLING_LIKE_LIKES_EXPLOSION_2, { -7.5f, 0.0f, 7.5f } },
|
||||
{ RC_JABU_JABUS_BELLY_MQ_WONDER_FALLING_LIKE_LIKES_EXPLOSION_3, { 7.5f, 0.0f, 7.5f } },
|
||||
|
||||
{ RC_FIRE_TEMPLE_MQ_WONDER_SHORTCUT_ROOM_1, { -7.5f, 0.0f, -7.5f } },
|
||||
{ RC_FIRE_TEMPLE_MQ_WONDER_SHORTCUT_ROOM_2, { -7.5f, 0.0f, 7.5f } },
|
||||
{ RC_FIRE_TEMPLE_MQ_WONDER_SHORTCUT_ROOM_3, { 7.5f, 0.0f, 7.5f } },
|
||||
|
||||
{ RC_FIRE_TEMPLE_MQ_WONDER_BOSS_KEY_ROOM_HOOKSHOT, { 0.0f, 0.0f, -8.0f } },
|
||||
{ RC_FIRE_TEMPLE_MQ_WONDER_BOSS_KEY_ROOM_BOW, { 0.0f, 0.0f, 8.0f } },
|
||||
|
||||
{ RC_FIRE_TEMPLE_MQ_WONDER_EAST_TOWER_LARGE_FACE_1, { -8.0f, 0.0f, 0.0f } },
|
||||
{ RC_FIRE_TEMPLE_MQ_WONDER_EAST_TOWER_LARGE_FACE_2, { 8.0f, 0.0f, 0.0f } },
|
||||
|
||||
{ RC_FIRE_TEMPLE_MQ_WONDER_EAST_TOWER_SMALL_FACE_1, { 0.0f, 0.0f, -8.0f } },
|
||||
{ RC_FIRE_TEMPLE_MQ_WONDER_EAST_TOWER_SMALL_FACE_2, { 0.0f, 0.0f, 8.0f } },
|
||||
|
||||
{ RC_WATER_TEMPLE_MQ_WONDER_HOOKSHOT_STAIRCASE_RIGHT_1, { -5.0f, 1.0f, -5.0f } },
|
||||
{ RC_WATER_TEMPLE_MQ_WONDER_HOOKSHOT_STAIRCASE_RIGHT_2, { 0.0f, -3.0f, -11.0f } },
|
||||
{ RC_WATER_TEMPLE_MQ_WONDER_HOOKSHOT_STAIRCASE_RIGHT_3, { 0.0f, -14.0f, -15.0f } },
|
||||
|
||||
{ RC_WATER_TEMPLE_MQ_WONDER_HOOKSHOT_STAIRCASE_LEFT_1, { 0.0f, 9.0f, 10.0f } },
|
||||
{ RC_WATER_TEMPLE_MQ_WONDER_HOOKSHOT_STAIRCASE_LEFT_2, { 0.0f, -7.0f, 10.0f } },
|
||||
{ RC_WATER_TEMPLE_MQ_WONDER_HOOKSHOT_STAIRCASE_LEFT_3, { 0.0f, 0.0f, 10.0f } },
|
||||
|
||||
{ RC_SPIRIT_TEMPLE_MQ_WONDER_CHEST_HAMMER, { 0.0f, 0.0f, -8.0f } },
|
||||
{ RC_SPIRIT_TEMPLE_MQ_WONDER_CHEST_SLASH, { 0.0f, 0.0f, 8.0f } },
|
||||
|
||||
{ RC_BOTTOM_OF_THE_WELL_MQ_WONDER_MAIN_ROOM_LEFT_1, { -22.5f, 0.0f, 0.0f } },
|
||||
{ RC_BOTTOM_OF_THE_WELL_MQ_WONDER_MAIN_ROOM_LEFT_2, { -7.5f, 0.0f, 0.0f } },
|
||||
{ RC_BOTTOM_OF_THE_WELL_MQ_WONDER_MAIN_ROOM_LEFT_3, { 7.5f, 0.0f, 0.0f } },
|
||||
{ RC_BOTTOM_OF_THE_WELL_MQ_WONDER_MAIN_ROOM_LEFT_4, { 22.5f, 0.0f, 0.0f } },
|
||||
|
||||
{ RC_BOTTOM_OF_THE_WELL_MQ_WONDER_MAIN_ROOM_RIGHT_1, { -22.5f, 0.0f, 0.0f } },
|
||||
{ RC_BOTTOM_OF_THE_WELL_MQ_WONDER_MAIN_ROOM_RIGHT_2, { -7.5f, 0.0f, 0.0f } },
|
||||
{ RC_BOTTOM_OF_THE_WELL_MQ_WONDER_MAIN_ROOM_RIGHT_3, { 7.5f, 0.0f, 0.0f } },
|
||||
{ RC_BOTTOM_OF_THE_WELL_MQ_WONDER_MAIN_ROOM_RIGHT_4, { 22.5f, 0.0f, 0.0f } },
|
||||
|
||||
{ RC_BOTTOM_OF_THE_WELL_MQ_WONDER_SIDE_ROOM_1, { -22.5f, 0.0f, 0.0f } },
|
||||
{ RC_BOTTOM_OF_THE_WELL_MQ_WONDER_SIDE_ROOM_2, { -7.5f, 0.0f, 0.0f } },
|
||||
{ RC_BOTTOM_OF_THE_WELL_MQ_WONDER_SIDE_ROOM_3, { 7.5f, 0.0f, 0.0f } },
|
||||
{ RC_BOTTOM_OF_THE_WELL_MQ_WONDER_SIDE_ROOM_4, { 22.5f, 0.0f, 0.0f } },
|
||||
};
|
||||
|
||||
static Vec3f GetStackOffset(RandomizerCheck rc) {
|
||||
auto it = sStackedWonderOffsets.find(rc);
|
||||
return it != sStackedWonderOffsets.end() ? it->second : Vec3f{ 0.0f, 0.0f, 0.0f };
|
||||
}
|
||||
|
||||
void SpawnNTSC10WonderItem() {
|
||||
if (LINK_IS_ADULT && gPlayState->sceneNum == SCENE_ZORAS_FOUNTAIN) {
|
||||
Actor_Spawn(&gPlayState->actorCtx, gPlayState, ACTOR_EN_WONDER_ITEM, -667, 320, 1053, 0, 0, 1, 4799);
|
||||
} else if (LINK_IS_ADULT && gPlayState->sceneNum == SCENE_DEATH_MOUNTAIN_CRATER) {
|
||||
Actor_Spawn(&gPlayState->actorCtx, gPlayState, ACTOR_EN_WONDER_ITEM, 6, 311, -640, 0, 0, 1, 4799);
|
||||
}
|
||||
}
|
||||
|
||||
uint8_t EnWonderItem_RandomizerHoldsItem(EnWonderItem* wonderActor, PlayState* play) {
|
||||
const CheckIdentity* wonderIdentity = ObjectExtension::GetInstance().Get<CheckIdentity>(&wonderActor->actor);
|
||||
if (wonderIdentity == nullptr) {
|
||||
Actor* actor = &wonderActor->actor;
|
||||
s16 actorIndex = GetActorListIndex(actor);
|
||||
bool isDungeonScene = (play->sceneNum >= SCENE_DEKU_TREE && play->sceneNum <= SCENE_GERUDO_TRAINING_GROUND) ||
|
||||
play->sceneNum == SCENE_INSIDE_GANONS_CASTLE;
|
||||
// For dungeons, use room Id and actor index. For overworld, use xz coordinates.
|
||||
auto newIdentity = isDungeonScene ? OTRGlobals::Instance->gRandomizer->IdentifyWonderItem(
|
||||
play->sceneNum, (s16)play->roomCtx.curRoom.num, actorIndex)
|
||||
: OTRGlobals::Instance->gRandomizer->IdentifyWonderItem(
|
||||
play->sceneNum, (s16)actor->world.pos.x, (s16)actor->world.pos.z);
|
||||
|
||||
ObjectExtension::GetInstance().Set<CheckIdentity>(actor, std::move(newIdentity));
|
||||
wonderIdentity = ObjectExtension::GetInstance().Get<CheckIdentity>(actor);
|
||||
if (wonderIdentity == nullptr) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
RandomizerCheck rc = wonderIdentity->randomizerCheck;
|
||||
uint8_t isDungeon = Rando::StaticData::GetLocation(rc)->IsDungeon();
|
||||
auto wonderSetting = RAND_GET_OPTION(RSK_SHUFFLE_WONDER_ITEMS);
|
||||
if (!IS_RANDO || (wonderSetting.Is(RO_SHUFFLE_WONDER_ITEMS_OVERWORLD) && isDungeon) ||
|
||||
(wonderSetting.Is(RO_SHUFFLE_WONDER_ITEMS_DUNGEONS) && !isDungeon) ||
|
||||
Flags_GetRandomizerInf(wonderIdentity->randomizerInf) || wonderIdentity->randomizerCheck == RC_UNKNOWN_CHECK) {
|
||||
return false;
|
||||
} else {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
static void EnWonderItem_RandomizerDraw(EnWonderItem* wonderActor, Color_RGBA8* primColor, Color_RGBA8* secColor,
|
||||
Color_RGBA8* envColor, CheckIdentity* wonderIdentity) {
|
||||
Vec3f pos;
|
||||
static Vec3f velocity = { 0.0f, 0.0f, 0.0f };
|
||||
static Vec3f accel = { 0.0f, 0.0f, 0.0f };
|
||||
|
||||
velocity.y = -0.05f;
|
||||
accel.y = -0.025f;
|
||||
|
||||
// Draw particles at tag spots if applicable, otherwise at wonder item actor location
|
||||
if (wonderActor->wonderMode == WONDERITEM_MULTITAG_ORDERED) {
|
||||
for (s32 i = 0, mask = 1; i < wonderActor->numTagPoints; i++, mask <<= 1) {
|
||||
if (!(wonderActor->tagFlags & mask)) {
|
||||
pos.x = Rand_CenteredFloat(1.0f) + sTagPointsOrdered[i].x;
|
||||
pos.y = (Rand_ZeroOne() * 25.0f) + sTagPointsOrdered[i].y + 10;
|
||||
pos.z = Rand_CenteredFloat(1.0f) + sTagPointsOrdered[i].z;
|
||||
EffectSsKiraKira_SpawnFocused(gPlayState, &pos, &velocity, &accel, secColor, envColor, 2000, 100);
|
||||
EffectSsKiraKira_SpawnFocused(gPlayState, &pos, &velocity, &accel, primColor, envColor, 2000, 100);
|
||||
}
|
||||
}
|
||||
} else if (wonderActor->wonderMode == WONDERITEM_MULTITAG_FREE) {
|
||||
for (s32 i = 0, mask = 1; i < wonderActor->numTagPoints; i++, mask <<= 1) {
|
||||
if (!(wonderActor->tagFlags & mask)) {
|
||||
pos.x = Rand_CenteredFloat(1.0f) + sTagPointsFree[i].x;
|
||||
pos.y = (Rand_ZeroOne() * 25.0f) + sTagPointsFree[i].y + 10;
|
||||
pos.z = Rand_CenteredFloat(1.0f) + sTagPointsFree[i].z;
|
||||
EffectSsKiraKira_SpawnFocused(gPlayState, &pos, &velocity, &accel, secColor, envColor, 2000, 100);
|
||||
EffectSsKiraKira_SpawnFocused(gPlayState, &pos, &velocity, &accel, primColor, envColor, 2000, 100);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
Vec3f offset = GetStackOffset(wonderIdentity->randomizerCheck);
|
||||
pos.x = Rand_CenteredFloat(1.0f) + wonderActor->actor.world.pos.x + offset.x;
|
||||
pos.y = (Rand_ZeroOne() * 25.0f) + wonderActor->actor.world.pos.y + 10 + offset.y;
|
||||
pos.z = Rand_CenteredFloat(1.0f) + wonderActor->actor.world.pos.z + offset.z;
|
||||
EffectSsKiraKira_SpawnFocused(gPlayState, &pos, &velocity, &accel, secColor, envColor, 2000, 100);
|
||||
EffectSsKiraKira_SpawnFocused(gPlayState, &pos, &velocity, &accel, primColor, envColor, 2000, 100);
|
||||
}
|
||||
}
|
||||
|
||||
void EnWonderItem_RandomizerDrawSetup(void* refActor) {
|
||||
GetItemCategory getItemCategory;
|
||||
EnWonderItem* wonderActor = static_cast<EnWonderItem*>(refActor);
|
||||
|
||||
// If not a randomized item or too far, don't draw.
|
||||
// If item is unshuffled or collected, kill wonder actor if switch flag is set.
|
||||
if (!EnWonderItem_RandomizerHoldsItem(wonderActor, gPlayState)) {
|
||||
if ((wonderActor->switchFlag >= 0) && Flags_GetSwitch(gPlayState, wonderActor->switchFlag)) {
|
||||
Actor_Kill(&wonderActor->actor);
|
||||
}
|
||||
return;
|
||||
} else if (wonderActor->actor.xzDistToPlayer > 1000.0f) {
|
||||
return;
|
||||
}
|
||||
|
||||
bool cmc = CVarGetInteger(CVAR_ENHANCEMENT("ChestSizeAndTextureMatchContents"), 0);
|
||||
int requiresStoneAgony = CVarGetInteger(CVAR_ENHANCEMENT("ChestSizeDependsStoneOfAgony"), 0);
|
||||
|
||||
int isNotCMC = !cmc || (requiresStoneAgony && !CHECK_QUEST_ITEM(QUEST_STONE_OF_AGONY));
|
||||
|
||||
Color_RGBA8 primColor;
|
||||
Color_RGBA8 secColor;
|
||||
Color_RGBA8 envColor;
|
||||
|
||||
const auto wonderIdentity = ObjectExtension::GetInstance().Get<CheckIdentity>(refActor);
|
||||
if (wonderIdentity == nullptr) {
|
||||
return;
|
||||
}
|
||||
|
||||
GetItemEntry wonderItem =
|
||||
Rando::Context::GetInstance()->GetFinalGIEntry(wonderIdentity->randomizerCheck, true, GI_NONE);
|
||||
getItemCategory = Randomizer_AdjustItemCategory(wonderItem);
|
||||
|
||||
if (isNotCMC) {
|
||||
getItemCategory = ITEM_CATEGORY_MAJOR;
|
||||
}
|
||||
primColor = Randomizer_GetParticleCMCColor(getItemCategory, COLOR_PRIMARY);
|
||||
secColor = Randomizer_GetParticleCMCColor(getItemCategory, COLOR_SECONDARY);
|
||||
envColor = Randomizer_GetParticleCMCColor(getItemCategory, COLOR_FLARE);
|
||||
EnWonderItem_RandomizerDraw(wonderActor, &primColor, &secColor, &envColor, wonderIdentity);
|
||||
}
|
||||
|
||||
void EnWonderItem_RandomizerSpawnCollectible(EnWonderItem* wonderActor, PlayState* play) {
|
||||
const auto wonderIdentity = ObjectExtension::GetInstance().Get<CheckIdentity>(&wonderActor->actor);
|
||||
EnItem00* item00;
|
||||
Player* player = GET_PLAYER(gPlayState);
|
||||
|
||||
// Hyrule courtyard left window handled separately to replace the bomb the guard throws
|
||||
if (wonderIdentity == nullptr || wonderIdentity->randomizerCheck == RC_HC_WONDER_COURTYARD_LEFT_WINDOW) {
|
||||
return;
|
||||
}
|
||||
// if activated via tag points, autocollect the check, otherwise spawn the item toward the player
|
||||
// Water Temple MQ hookshot staircase can easily spawn unreachable items, autocollect
|
||||
// Jabu MQ holes cow always spawns the item OOB (vanilla bug), autocollect
|
||||
if (wonderActor->wonderMode == WONDERITEM_MULTITAG_FREE || wonderActor->wonderMode == WONDERITEM_PROXIMITY_DROP ||
|
||||
wonderActor->wonderMode == WONDERITEM_MULTITAG_ORDERED ||
|
||||
(wonderIdentity->randomizerCheck >= RC_WATER_TEMPLE_MQ_WONDER_HOOKSHOT_STAIRCASE_RIGHT_1 &&
|
||||
wonderIdentity->randomizerCheck <= RC_WATER_TEMPLE_MQ_WONDER_HOOKSHOT_STAIRCASE_LEFT_3) ||
|
||||
wonderIdentity->randomizerCheck == RC_JABU_JABUS_BELLY_MQ_HOLES_COW) {
|
||||
Flags_SetRandomizerInf(wonderIdentity->randomizerInf);
|
||||
} else {
|
||||
item00 = (EnItem00*)Item_DropCollectible(play, &wonderActor->actor.world.pos, ITEM00_SOH_DUMMY);
|
||||
item00->randoInf = wonderIdentity->randomizerInf;
|
||||
item00->itemEntry =
|
||||
Rando::Context::GetInstance()->GetFinalGIEntry(wonderIdentity->randomizerCheck, true, GI_NONE);
|
||||
item00->actor.draw = (ActorFunc)EnItem00_DrawRandomizedItem;
|
||||
if (gPlayState->sceneNum != SCENE_INSIDE_GANONS_CASTLE) {
|
||||
item00->actor.velocity.y = 3.0f;
|
||||
item00->actor.speedXZ = 3.0f;
|
||||
item00->actor.world.rot.y =
|
||||
Math_Vec3f_Yaw(&item00->actor.world.pos, &player->actor.world.pos) + (s16)Rand_CenteredFloat(16384.0f);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void WonderHeishi_RandomizerSpawnCollectible(PlayState* play, Vec3f pos, f32 rotY) {
|
||||
EnItem00* item00;
|
||||
Player* player = GET_PLAYER(gPlayState);
|
||||
|
||||
item00 = (EnItem00*)Item_DropCollectible(play, &pos, ITEM00_SOH_DUMMY);
|
||||
item00->randoInf = RAND_INF_HC_WONDER_COURTYARD_LEFT_WINDOW;
|
||||
item00->itemEntry =
|
||||
Rando::Context::GetInstance()->GetFinalGIEntry(RC_HC_WONDER_COURTYARD_LEFT_WINDOW, true, GI_NONE);
|
||||
item00->actor.draw = (ActorFunc)EnItem00_DrawRandomizedItem;
|
||||
item00->actor.velocity.y = Rand_CenteredFloat(5.0f) + 10.0f;
|
||||
item00->actor.speedXZ = Rand_CenteredFloat(5.0f) + 10.0f;
|
||||
item00->actor.world.rot.y = rotY;
|
||||
}
|
||||
|
||||
void RegisterShuffleWonderItems() {
|
||||
bool shouldRegister = IS_RANDO && RAND_GET_OPTION(RSK_SHUFFLE_WONDER_ITEMS);
|
||||
bool isNtscUs10 = false;
|
||||
for (uint32_t i = 0; i < ResourceMgr_GetNumGameVersions(); i++) {
|
||||
if (ResourceMgr_GetGameVersion(i) == OOT_NTSC_US_10) {
|
||||
isNtscUs10 = true;
|
||||
}
|
||||
}
|
||||
bool shouldRegisterOverworld = RAND_GET_OPTION(RSK_SHUFFLE_WONDER_ITEMS).Is(RO_SHUFFLE_WONDER_ITEMS_ALL) ||
|
||||
RAND_GET_OPTION(RSK_SHUFFLE_WONDER_ITEMS).Is(RO_SHUFFLE_WONDER_ITEMS_OVERWORLD);
|
||||
bool shouldRegisterNTSC10 = shouldRegister && isNtscUs10 && shouldRegisterOverworld;
|
||||
|
||||
// Draw particle effect in wonder item spot to indicate a randomized item
|
||||
COND_ID_HOOK(OnActorUpdate, ACTOR_EN_WONDER_ITEM, shouldRegister, EnWonderItem_RandomizerDrawSetup);
|
||||
|
||||
// Spawn missing wonder items for NTSC 1.0
|
||||
COND_HOOK(OnSceneSpawnActors, shouldRegisterNTSC10, SpawnNTSC10WonderItem);
|
||||
|
||||
// Prevent or delay actor kill until EnWonderItem_RandomizerDrawSetup in case item isn't yet collected
|
||||
COND_VB_SHOULD(VB_WONDER_SPAWN, shouldRegister, { *should = false; });
|
||||
|
||||
// Do not spawn vanilla wonder item, instead spawn the randomized item
|
||||
COND_VB_SHOULD(VB_WONDER_DROP_ITEM, shouldRegister, {
|
||||
EnWonderItem* wonderActor = va_arg(args, EnWonderItem*);
|
||||
if (EnWonderItem_RandomizerHoldsItem(wonderActor, gPlayState)) {
|
||||
EnWonderItem_RandomizerSpawnCollectible(wonderActor, gPlayState);
|
||||
*should = false;
|
||||
}
|
||||
});
|
||||
|
||||
// Do not spawn castle courtyard guard bomb, instead spawn the randomized item
|
||||
COND_VB_SHOULD(VB_WONDER_HEISHI_ITEM, shouldRegisterOverworld, {
|
||||
if (!Flags_GetRandomizerInf(RAND_INF_HC_WONDER_COURTYARD_LEFT_WINDOW)) {
|
||||
Vec3f* pos = va_arg(args, Vec3f*);
|
||||
f32 rotY = (f32)va_arg(args, double);
|
||||
|
||||
WonderHeishi_RandomizerSpawnCollectible(gPlayState, *pos, rotY);
|
||||
*should = false;
|
||||
}
|
||||
});
|
||||
|
||||
// If courtyard items are uncollected, keep guards patrolling
|
||||
COND_VB_SHOULD(VB_WONDER_HEISHI_PATROLLING, shouldRegisterOverworld, {
|
||||
EnHeishi1* guardActor = va_arg(args, EnHeishi1*);
|
||||
if (!Flags_GetRandomizerInf(RAND_INF_HC_WONDER_COURTYARD_LEFT_WINDOW) ||
|
||||
!Flags_GetRandomizerInf(RAND_INF_HC_WONDER_COURTYARD_RIGHT_WINDOW)) {
|
||||
*should = guardActor->type != 5;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
void Rando::StaticData::RegisterWonderItemLocations() {
|
||||
static bool registered = false;
|
||||
if (registered)
|
||||
return;
|
||||
registered = true;
|
||||
// clang-format off
|
||||
// Overworld Wonder Items
|
||||
// Randomizer Check Randomizer Check Quest Area Scene ID Params Short Name Hint Text Key Vanilla Spoiler Collection Check
|
||||
locationTable[RC_KF_WONDER_TRAINING_1] = Location::WonderItem(RC_KF_WONDER_TRAINING_1, RCQUEST_BOTH, RCAREA_KOKIRI_FOREST, SCENE_KOKIRI_FOREST, TWO_ACTOR_PARAMS(-747, 951), "Wonder Training 1", RHT_WONDER_ITEM_KOKIRI_FOREST, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_KF_WONDER_TRAINING_1));
|
||||
locationTable[RC_KF_WONDER_TRAINING_2] = Location::WonderItem(RC_KF_WONDER_TRAINING_2, RCQUEST_BOTH, RCAREA_KOKIRI_FOREST, SCENE_KOKIRI_FOREST, TWO_ACTOR_PARAMS(-677, 899), "Wonder Training 2", RHT_WONDER_ITEM_KOKIRI_FOREST, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_KF_WONDER_TRAINING_2));
|
||||
locationTable[RC_KF_WONDER_TRAINING_3] = Location::WonderItem(RC_KF_WONDER_TRAINING_3, RCQUEST_BOTH, RCAREA_KOKIRI_FOREST, SCENE_KOKIRI_FOREST, TWO_ACTOR_PARAMS(-698, 830), "Wonder Training 3", RHT_WONDER_ITEM_KOKIRI_FOREST, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_KF_WONDER_TRAINING_3));
|
||||
locationTable[RC_KF_WONDER_SHOP] = Location::WonderItem(RC_KF_WONDER_SHOP, RCQUEST_BOTH, RCAREA_KOKIRI_FOREST, SCENE_KOKIRI_SHOP, TWO_ACTOR_PARAMS(146, -97), "Wonder Shop", RHT_WONDER_ITEM_KOKIRI_FOREST, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_KF_WONDER_SHOP));
|
||||
locationTable[RC_KF_WONDER_SIGN] = Location::WonderItem(RC_KF_WONDER_SIGN, RCQUEST_BOTH, RCAREA_KOKIRI_FOREST, SCENE_KOKIRI_FOREST, TWO_ACTOR_PARAMS(-488, 600), "Wonder Sign", RHT_WONDER_ITEM_KOKIRI_FOREST, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_KF_WONDER_SIGN));
|
||||
locationTable[RC_KF_WONDER_PLATFORMS_1] = Location::WonderItem(RC_KF_WONDER_PLATFORMS_1, RCQUEST_BOTH, RCAREA_KOKIRI_FOREST, SCENE_KOKIRI_FOREST, TWO_ACTOR_PARAMS(364, 28), "Wonder Platforms 1", RHT_WONDER_ITEM_KOKIRI_FOREST, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_KF_WONDER_PLATFORMS_1));
|
||||
locationTable[RC_KF_WONDER_PLATFORMS_2] = Location::WonderItem(RC_KF_WONDER_PLATFORMS_2, RCQUEST_BOTH, RCAREA_KOKIRI_FOREST, SCENE_KOKIRI_FOREST, TWO_ACTOR_PARAMS(1074, 178), "Wonder Platforms 2", RHT_WONDER_ITEM_KOKIRI_FOREST, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_KF_WONDER_PLATFORMS_2));
|
||||
locationTable[RC_KF_WONDER_CRAWL_GRASS_1] = Location::WonderItem(RC_KF_WONDER_CRAWL_GRASS_1, RCQUEST_BOTH, RCAREA_KOKIRI_FOREST, SCENE_KOKIRI_FOREST, TWO_ACTOR_PARAMS(-590, 1635), "Wonder Crawl Grass 1", RHT_WONDER_ITEM_KOKIRI_FOREST, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_KF_WONDER_CRAWL_GRASS_1));
|
||||
locationTable[RC_KF_WONDER_CRAWL_GRASS_2] = Location::WonderItem(RC_KF_WONDER_CRAWL_GRASS_2, RCQUEST_BOTH, RCAREA_KOKIRI_FOREST, SCENE_KOKIRI_FOREST, TWO_ACTOR_PARAMS(-584, 1762), "Wonder Crawl Grass 2", RHT_WONDER_ITEM_KOKIRI_FOREST, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_KF_WONDER_CRAWL_GRASS_2));
|
||||
locationTable[RC_HF_WONDER_BRIDGE_1] = Location::WonderItem(RC_HF_WONDER_BRIDGE_1, RCQUEST_BOTH, RCAREA_HYRULE_FIELD, SCENE_HYRULE_FIELD, TWO_ACTOR_PARAMS(-99, 662), "Wonder Bridge Left", RHT_WONDER_ITEM_HYRULE_FIELD, RG_RED_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_HF_WONDER_BRIDGE_1));
|
||||
locationTable[RC_HF_WONDER_BRIDGE_2] = Location::WonderItem(RC_HF_WONDER_BRIDGE_2, RCQUEST_BOTH, RCAREA_HYRULE_FIELD, SCENE_HYRULE_FIELD, TWO_ACTOR_PARAMS(-1, 665), "Wonder Bridge Center", RHT_WONDER_ITEM_HYRULE_FIELD, RG_RED_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_HF_WONDER_BRIDGE_2));
|
||||
locationTable[RC_HF_WONDER_BRIDGE_3] = Location::WonderItem(RC_HF_WONDER_BRIDGE_3, RCQUEST_BOTH, RCAREA_HYRULE_FIELD, SCENE_HYRULE_FIELD, TWO_ACTOR_PARAMS(93, 659), "Wonder Bridge Right", RHT_WONDER_ITEM_HYRULE_FIELD, RG_RED_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_HF_WONDER_BRIDGE_3));
|
||||
locationTable[RC_MKT_WONDER_DAY_1] = Location::WonderItem(RC_MKT_WONDER_DAY_1, RCQUEST_BOTH, RCAREA_MARKET, SCENE_MARKET_DAY, TWO_ACTOR_PARAMS(-523, -340), "Wonder Day Balcony 1", RHT_WONDER_ITEM_MARKET, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MKT_WONDER_DAY_1));
|
||||
locationTable[RC_MKT_WONDER_DAY_2] = Location::WonderItem(RC_MKT_WONDER_DAY_2, RCQUEST_BOTH, RCAREA_MARKET, SCENE_MARKET_DAY, TWO_ACTOR_PARAMS(-523, -224), "Wonder Day Balcony 2", RHT_WONDER_ITEM_MARKET, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MKT_WONDER_DAY_2));
|
||||
locationTable[RC_MKT_WONDER_DAY_3] = Location::WonderItem(RC_MKT_WONDER_DAY_3, RCQUEST_BOTH, RCAREA_MARKET, SCENE_MARKET_DAY, TWO_ACTOR_PARAMS(-521, -113), "Wonder Day Balcony 3", RHT_WONDER_ITEM_MARKET, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MKT_WONDER_DAY_3));
|
||||
locationTable[RC_MKT_WONDER_DAY_4] = Location::WonderItem(RC_MKT_WONDER_DAY_4, RCQUEST_BOTH, RCAREA_MARKET, SCENE_MARKET_DAY, TWO_ACTOR_PARAMS(-521, -2), "Wonder Day Balcony 4", RHT_WONDER_ITEM_MARKET, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MKT_WONDER_DAY_4));
|
||||
locationTable[RC_MKT_WONDER_DAY_5] = Location::WonderItem(RC_MKT_WONDER_DAY_5, RCQUEST_BOTH, RCAREA_MARKET, SCENE_MARKET_DAY, TWO_ACTOR_PARAMS(-516, 117), "Wonder Day Balcony 5", RHT_WONDER_ITEM_MARKET, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MKT_WONDER_DAY_5));
|
||||
locationTable[RC_MKT_WONDER_NIGHT_1] = Location::WonderItem(RC_MKT_WONDER_NIGHT_1, RCQUEST_BOTH, RCAREA_MARKET, SCENE_MARKET_NIGHT, TWO_ACTOR_PARAMS(-524, -246), "Wonder Night Balcony 1", RHT_WONDER_ITEM_MARKET, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MKT_WONDER_NIGHT_1));
|
||||
locationTable[RC_MKT_WONDER_NIGHT_2] = Location::WonderItem(RC_MKT_WONDER_NIGHT_2, RCQUEST_BOTH, RCAREA_MARKET, SCENE_MARKET_NIGHT, TWO_ACTOR_PARAMS(-521, 27), "Wonder Night Balcony 2", RHT_WONDER_ITEM_MARKET, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MKT_WONDER_NIGHT_2));
|
||||
locationTable[RC_LLR_WONDER_BIG_FENCE] = Location::WonderItem(RC_LLR_WONDER_BIG_FENCE, RCQUEST_BOTH, RCAREA_LON_LON_RANCH, SCENE_LON_LON_RANCH, TWO_ACTOR_PARAMS(-443, -311), "Wonder Big Fence", RHT_WONDER_ITEM_LON_LON_RANCH, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_LLR_WONDER_BIG_FENCE));
|
||||
locationTable[RC_LLR_WONDER_SMALL_FENCE] = Location::WonderItem(RC_LLR_WONDER_SMALL_FENCE, RCQUEST_BOTH, RCAREA_LON_LON_RANCH, SCENE_LON_LON_RANCH, TWO_ACTOR_PARAMS(295, -979), "Wonder Small Fence", RHT_WONDER_ITEM_LON_LON_RANCH, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_LLR_WONDER_SMALL_FENCE));
|
||||
locationTable[RC_HC_WONDER_LEFT_TORCH] = Location::WonderItem(RC_HC_WONDER_LEFT_TORCH, RCQUEST_BOTH, RCAREA_HYRULE_CASTLE, SCENE_HYRULE_CASTLE, TWO_ACTOR_PARAMS(-502, 468), "Wonder Left Torch", RHT_WONDER_ITEM_HYRULE_CASTLE, RG_RED_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_HC_WONDER_LEFT_TORCH));
|
||||
locationTable[RC_HC_WONDER_RIGHT_TORCH] = Location::WonderItem(RC_HC_WONDER_RIGHT_TORCH, RCQUEST_BOTH, RCAREA_HYRULE_CASTLE, SCENE_HYRULE_CASTLE, TWO_ACTOR_PARAMS(-72, 468), "Wonder Right Torch", RHT_WONDER_ITEM_HYRULE_CASTLE, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_HC_WONDER_RIGHT_TORCH));
|
||||
locationTable[RC_HC_WONDER_MOAT_1] = Location::WonderItem(RC_HC_WONDER_MOAT_1, RCQUEST_BOTH, RCAREA_HYRULE_CASTLE, SCENE_HYRULE_CASTLE, TWO_ACTOR_PARAMS(706, -663), "Wonder Moat Past Boxes", RHT_WONDER_ITEM_HYRULE_CASTLE, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_HC_WONDER_MOAT_1));
|
||||
locationTable[RC_HC_WONDER_MOAT_2] = Location::WonderItem(RC_HC_WONDER_MOAT_2, RCQUEST_BOTH, RCAREA_HYRULE_CASTLE, SCENE_HYRULE_CASTLE, TWO_ACTOR_PARAMS(755, -118), "Wonder Moat Past Gate 1", RHT_WONDER_ITEM_HYRULE_CASTLE, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_HC_WONDER_MOAT_2));
|
||||
locationTable[RC_HC_WONDER_MOAT_3] = Location::WonderItem(RC_HC_WONDER_MOAT_3, RCQUEST_BOTH, RCAREA_HYRULE_CASTLE, SCENE_HYRULE_CASTLE, TWO_ACTOR_PARAMS(725, 112), "Wonder Moat Past Gate 2", RHT_WONDER_ITEM_HYRULE_CASTLE, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_HC_WONDER_MOAT_3));
|
||||
locationTable[RC_HC_WONDER_MOAT_4] = Location::WonderItem(RC_HC_WONDER_MOAT_4, RCQUEST_BOTH, RCAREA_HYRULE_CASTLE, SCENE_HYRULE_CASTLE, TWO_ACTOR_PARAMS(754, 395), "Wonder Moat Before Gate 1", RHT_WONDER_ITEM_HYRULE_CASTLE, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_HC_WONDER_MOAT_4));
|
||||
locationTable[RC_HC_WONDER_MOAT_5] = Location::WonderItem(RC_HC_WONDER_MOAT_5, RCQUEST_BOTH, RCAREA_HYRULE_CASTLE, SCENE_HYRULE_CASTLE, TWO_ACTOR_PARAMS(403, 587), "Wonder Moat Before Gate 2", RHT_WONDER_ITEM_HYRULE_CASTLE, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_HC_WONDER_MOAT_5));
|
||||
locationTable[RC_HC_WONDER_MOAT_6] = Location::WonderItem(RC_HC_WONDER_MOAT_6, RCQUEST_BOTH, RCAREA_HYRULE_CASTLE, SCENE_HYRULE_CASTLE, TWO_ACTOR_PARAMS(62, 555), "Wonder Moat Before Gate 3", RHT_WONDER_ITEM_HYRULE_CASTLE, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_HC_WONDER_MOAT_6));
|
||||
locationTable[RC_HC_WONDER_MOAT_7] = Location::WonderItem(RC_HC_WONDER_MOAT_7, RCQUEST_BOTH, RCAREA_HYRULE_CASTLE, SCENE_HYRULE_CASTLE, TWO_ACTOR_PARAMS(-256, 598), "Wonder Moat Before Gate 4", RHT_WONDER_ITEM_HYRULE_CASTLE, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_HC_WONDER_MOAT_7));
|
||||
locationTable[RC_HC_WONDER_MOAT_8] = Location::WonderItem(RC_HC_WONDER_MOAT_8, RCQUEST_BOTH, RCAREA_HYRULE_CASTLE, SCENE_HYRULE_CASTLE, TWO_ACTOR_PARAMS(-557, 568), "Wonder Moat Before Gate 5", RHT_WONDER_ITEM_HYRULE_CASTLE, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_HC_WONDER_MOAT_8));
|
||||
locationTable[RC_HC_WONDER_MOAT_9] = Location::WonderItem(RC_HC_WONDER_MOAT_9, RCQUEST_BOTH, RCAREA_HYRULE_CASTLE, SCENE_HYRULE_CASTLE, TWO_ACTOR_PARAMS(-819, 613), "Wonder Moat Before Gate 6", RHT_WONDER_ITEM_HYRULE_CASTLE, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_HC_WONDER_MOAT_9));
|
||||
locationTable[RC_HC_WONDER_MOAT_10] = Location::WonderItem(RC_HC_WONDER_MOAT_10, RCQUEST_BOTH, RCAREA_HYRULE_CASTLE, SCENE_HYRULE_CASTLE, TWO_ACTOR_PARAMS(-1190, 561), "Wonder Moat Before Gate 7", RHT_WONDER_ITEM_HYRULE_CASTLE, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_HC_WONDER_MOAT_10));
|
||||
locationTable[RC_HC_WONDER_COURTYARD_RIGHT_WINDOW] = Location::WonderItem(RC_HC_WONDER_COURTYARD_RIGHT_WINDOW, RCQUEST_BOTH, RCAREA_HYRULE_CASTLE, SCENE_CASTLE_COURTYARD_ZELDA, TWO_ACTOR_PARAMS(0, -481), "Wonder Courtyard Right Window", RHT_WONDER_ITEM_CASTLE_COURTYARD_ZELDA, RG_PURPLE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_HC_WONDER_COURTYARD_RIGHT_WINDOW));
|
||||
locationTable[RC_HC_WONDER_COURTYARD_LEFT_WINDOW] = Location::WonderItem(RC_HC_WONDER_COURTYARD_LEFT_WINDOW, RCQUEST_BOTH, RCAREA_HYRULE_CASTLE, SCENE_CASTLE_COURTYARD_ZELDA, TWO_ACTOR_PARAMS(0, 476), "Wonder Courtyard Left Window", RHT_WONDER_ITEM_CASTLE_COURTYARD_ZELDA, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_HC_WONDER_COURTYARD_LEFT_WINDOW));
|
||||
locationTable[RC_LW_WONDER_BACK_SKULL_KIDS_GRASS_1] = Location::WonderItem(RC_LW_WONDER_BACK_SKULL_KIDS_GRASS_1, RCQUEST_BOTH, RCAREA_LOST_WOODS, SCENE_LOST_WOODS, TWO_ACTOR_PARAMS(1371, 497), "Wonder Back Skull Kids Grass 1", RHT_WONDER_ITEM_LOST_WOODS, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_LW_WONDER_BACK_SKULL_KIDS_GRASS_1));
|
||||
locationTable[RC_LW_WONDER_BACK_SKULL_KIDS_GRASS_2] = Location::WonderItem(RC_LW_WONDER_BACK_SKULL_KIDS_GRASS_2, RCQUEST_BOTH, RCAREA_LOST_WOODS, SCENE_LOST_WOODS, TWO_ACTOR_PARAMS(1038, 557), "Wonder Back Skull Kids Grass 2", RHT_WONDER_ITEM_LOST_WOODS, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_LW_WONDER_BACK_SKULL_KIDS_GRASS_2));
|
||||
locationTable[RC_LW_WONDER_FRONT_SKULL_KIDS_GRASS] = Location::WonderItem(RC_LW_WONDER_FRONT_SKULL_KIDS_GRASS, RCQUEST_BOTH, RCAREA_LOST_WOODS, SCENE_LOST_WOODS, TWO_ACTOR_PARAMS(1256, 194), "Wonder Front Skull Kids Grass", RHT_WONDER_ITEM_LOST_WOODS, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_LW_WONDER_FRONT_SKULL_KIDS_GRASS));
|
||||
locationTable[RC_SFM_WONDER_ENTRANCE] = Location::WonderItem(RC_SFM_WONDER_ENTRANCE, RCQUEST_BOTH, RCAREA_SACRED_FOREST_MEADOW, SCENE_SACRED_FOREST_MEADOW, TWO_ACTOR_PARAMS(-351, 2121), "Wonder Entrance Grass", RHT_WONDER_ITEM_SACRED_FOREST_MEADOW, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SFM_WONDER_ENTRANCE));
|
||||
locationTable[RC_SFM_WONDER_MAZE_1] = Location::WonderItem(RC_SFM_WONDER_MAZE_1, RCQUEST_BOTH, RCAREA_SACRED_FOREST_MEADOW, SCENE_SACRED_FOREST_MEADOW, TWO_ACTOR_PARAMS(100, 1375), "Wonder First Row Grass", RHT_WONDER_ITEM_SACRED_FOREST_MEADOW, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SFM_WONDER_MAZE_1));
|
||||
locationTable[RC_SFM_WONDER_MAZE_2] = Location::WonderItem(RC_SFM_WONDER_MAZE_2, RCQUEST_BOTH, RCAREA_SACRED_FOREST_MEADOW, SCENE_SACRED_FOREST_MEADOW, TWO_ACTOR_PARAMS(100, 1084), "Wonder Second Row Grass 1", RHT_WONDER_ITEM_SACRED_FOREST_MEADOW, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SFM_WONDER_MAZE_2));
|
||||
locationTable[RC_SFM_WONDER_MAZE_3] = Location::WonderItem(RC_SFM_WONDER_MAZE_3, RCQUEST_BOTH, RCAREA_SACRED_FOREST_MEADOW, SCENE_SACRED_FOREST_MEADOW, TWO_ACTOR_PARAMS(-204, 1283), "Wonder Second Row Grass 2", RHT_WONDER_ITEM_SACRED_FOREST_MEADOW, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SFM_WONDER_MAZE_3));
|
||||
locationTable[RC_SFM_WONDER_MAZE_4] = Location::WonderItem(RC_SFM_WONDER_MAZE_4, RCQUEST_BOTH, RCAREA_SACRED_FOREST_MEADOW, SCENE_SACRED_FOREST_MEADOW, TWO_ACTOR_PARAMS(-199, 177), "Wonder End of Maze Grass 1", RHT_WONDER_ITEM_SACRED_FOREST_MEADOW, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SFM_WONDER_MAZE_4));
|
||||
locationTable[RC_SFM_WONDER_MAZE_5] = Location::WonderItem(RC_SFM_WONDER_MAZE_5, RCQUEST_BOTH, RCAREA_SACRED_FOREST_MEADOW, SCENE_SACRED_FOREST_MEADOW, TWO_ACTOR_PARAMS(299, 285), "Wonder End of Maze Grass 2", RHT_WONDER_ITEM_SACRED_FOREST_MEADOW, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SFM_WONDER_MAZE_5));
|
||||
locationTable[RC_KAK_WONDER_UNDER_CONSTRUCTION] = Location::WonderItem(RC_KAK_WONDER_UNDER_CONSTRUCTION, RCQUEST_BOTH, RCAREA_KAKARIKO_VILLAGE, SCENE_KAKARIKO_VILLAGE, TWO_ACTOR_PARAMS(148, 1165), "Wonder Under Construction", RHT_WONDER_ITEM_KAKARIKO_VILLAGE, RG_RED_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_KAK_WONDER_UNDER_CONSTRUCTION));
|
||||
locationTable[RC_KAK_WONDER_ABOVE_COW] = Location::WonderItem(RC_KAK_WONDER_ABOVE_COW, RCQUEST_BOTH, RCAREA_KAKARIKO_VILLAGE, SCENE_IMPAS_HOUSE, TWO_ACTOR_PARAMS(153, -266), "Wonder Above Impa's Cow", RHT_WONDER_ITEM_KAKARIKO_VILLAGE, RG_RED_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_KAK_WONDER_ABOVE_COW));
|
||||
locationTable[RC_GY_WONDER_DAMPE_RACE_1] = Location::WonderItem(RC_GY_WONDER_DAMPE_RACE_1, RCQUEST_BOTH, RCAREA_GRAVEYARD, SCENE_WINDMILL_AND_DAMPES_GRAVE, TWO_ACTOR_PARAMS(391, -2681), "Wonder Dampe's Grave 1", RHT_WONDER_ITEM_DAMPES_GRAVE, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GY_WONDER_DAMPE_RACE_1));
|
||||
locationTable[RC_GY_WONDER_DAMPE_RACE_2] = Location::WonderItem(RC_GY_WONDER_DAMPE_RACE_2, RCQUEST_BOTH, RCAREA_GRAVEYARD, SCENE_WINDMILL_AND_DAMPES_GRAVE, TWO_ACTOR_PARAMS(394, -2588), "Wonder Dampe's Grave 2", RHT_WONDER_ITEM_DAMPES_GRAVE, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GY_WONDER_DAMPE_RACE_2));
|
||||
locationTable[RC_GY_WONDER_DAMPE_RACE_3] = Location::WonderItem(RC_GY_WONDER_DAMPE_RACE_3, RCQUEST_BOTH, RCAREA_GRAVEYARD, SCENE_WINDMILL_AND_DAMPES_GRAVE, TWO_ACTOR_PARAMS(475, -2591), "Wonder Dampe's Grave 3", RHT_WONDER_ITEM_DAMPES_GRAVE, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GY_WONDER_DAMPE_RACE_3));
|
||||
locationTable[RC_GY_WONDER_DAMPE_RACE_4] = Location::WonderItem(RC_GY_WONDER_DAMPE_RACE_4, RCQUEST_BOTH, RCAREA_GRAVEYARD, SCENE_WINDMILL_AND_DAMPES_GRAVE, TWO_ACTOR_PARAMS(562, -2588), "Wonder Dampe's Grave 4", RHT_WONDER_ITEM_DAMPES_GRAVE, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GY_WONDER_DAMPE_RACE_4));
|
||||
locationTable[RC_GY_WONDER_DAMPE_RACE_5] = Location::WonderItem(RC_GY_WONDER_DAMPE_RACE_5, RCQUEST_BOTH, RCAREA_GRAVEYARD, SCENE_WINDMILL_AND_DAMPES_GRAVE, TWO_ACTOR_PARAMS(621, -3219), "Wonder Dampe's Grave 5", RHT_WONDER_ITEM_DAMPES_GRAVE, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GY_WONDER_DAMPE_RACE_5));
|
||||
locationTable[RC_GY_WONDER_DAMPE_RACE_6] = Location::WonderItem(RC_GY_WONDER_DAMPE_RACE_6, RCQUEST_BOTH, RCAREA_GRAVEYARD, SCENE_WINDMILL_AND_DAMPES_GRAVE, TWO_ACTOR_PARAMS(570, -5778), "Wonder Dampe's Grave 6", RHT_WONDER_ITEM_DAMPES_GRAVE, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GY_WONDER_DAMPE_RACE_6));
|
||||
locationTable[RC_GY_WONDER_DAMPE_RACE_7] = Location::WonderItem(RC_GY_WONDER_DAMPE_RACE_7, RCQUEST_BOTH, RCAREA_GRAVEYARD, SCENE_WINDMILL_AND_DAMPES_GRAVE, TWO_ACTOR_PARAMS(353, -5825), "Wonder Dampe's Grave 7", RHT_WONDER_ITEM_DAMPES_GRAVE, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GY_WONDER_DAMPE_RACE_7));
|
||||
locationTable[RC_GY_WONDER_DAMPE_RACE_8] = Location::WonderItem(RC_GY_WONDER_DAMPE_RACE_8, RCQUEST_BOTH, RCAREA_GRAVEYARD, SCENE_WINDMILL_AND_DAMPES_GRAVE, TWO_ACTOR_PARAMS(1666, -5736), "Wonder Dampe's Grave 8", RHT_WONDER_ITEM_DAMPES_GRAVE, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GY_WONDER_DAMPE_RACE_8));
|
||||
locationTable[RC_GY_WONDER_DAMPE_RACE_9] = Location::WonderItem(RC_GY_WONDER_DAMPE_RACE_9, RCQUEST_BOTH, RCAREA_GRAVEYARD, SCENE_WINDMILL_AND_DAMPES_GRAVE, TWO_ACTOR_PARAMS(2549, -4598), "Wonder Dampe's Grave 9", RHT_WONDER_ITEM_DAMPES_GRAVE, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GY_WONDER_DAMPE_RACE_9));
|
||||
locationTable[RC_GY_WONDER_DAMPE_RACE_10] = Location::WonderItem(RC_GY_WONDER_DAMPE_RACE_10, RCQUEST_BOTH, RCAREA_GRAVEYARD, SCENE_WINDMILL_AND_DAMPES_GRAVE, TWO_ACTOR_PARAMS(2547, -4847), "Wonder Dampe's Grave 10", RHT_WONDER_ITEM_DAMPES_GRAVE, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GY_WONDER_DAMPE_RACE_10));
|
||||
locationTable[RC_GY_WONDER_DAMPE_RACE_11] = Location::WonderItem(RC_GY_WONDER_DAMPE_RACE_11, RCQUEST_BOTH, RCAREA_GRAVEYARD, SCENE_WINDMILL_AND_DAMPES_GRAVE, TWO_ACTOR_PARAMS(2726, -3634), "Wonder Dampe's Grave 11", RHT_WONDER_ITEM_DAMPES_GRAVE, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GY_WONDER_DAMPE_RACE_11));
|
||||
locationTable[RC_GY_WONDER_DAMPE_RACE_12] = Location::WonderItem(RC_GY_WONDER_DAMPE_RACE_12, RCQUEST_BOTH, RCAREA_GRAVEYARD, SCENE_WINDMILL_AND_DAMPES_GRAVE, TWO_ACTOR_PARAMS(2728, -3500), "Wonder Dampe's Grave 12", RHT_WONDER_ITEM_DAMPES_GRAVE, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GY_WONDER_DAMPE_RACE_12));
|
||||
locationTable[RC_GY_WONDER_DAMPE_RACE_13] = Location::WonderItem(RC_GY_WONDER_DAMPE_RACE_13, RCQUEST_BOTH, RCAREA_GRAVEYARD, SCENE_WINDMILL_AND_DAMPES_GRAVE, TWO_ACTOR_PARAMS(2633, -3394), "Wonder Dampe's Grave 13", RHT_WONDER_ITEM_DAMPES_GRAVE, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GY_WONDER_DAMPE_RACE_13));
|
||||
locationTable[RC_GY_WONDER_DAMPE_RACE_14] = Location::WonderItem(RC_GY_WONDER_DAMPE_RACE_14, RCQUEST_BOTH, RCAREA_GRAVEYARD, SCENE_WINDMILL_AND_DAMPES_GRAVE, TWO_ACTOR_PARAMS(2377, -3398), "Wonder Dampe's Grave 14", RHT_WONDER_ITEM_DAMPES_GRAVE, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GY_WONDER_DAMPE_RACE_14));
|
||||
locationTable[RC_GY_WONDER_DAMPE_RACE_15] = Location::WonderItem(RC_GY_WONDER_DAMPE_RACE_15, RCQUEST_BOTH, RCAREA_GRAVEYARD, SCENE_WINDMILL_AND_DAMPES_GRAVE, TWO_ACTOR_PARAMS(1308, -3125), "Wonder Dampe's Grave 15", RHT_WONDER_ITEM_DAMPES_GRAVE, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GY_WONDER_DAMPE_RACE_15));
|
||||
locationTable[RC_DMC_WONDER_BENEATH_BRIDGE_PLATFORM] = Location::WonderItem(RC_DMC_WONDER_BENEATH_BRIDGE_PLATFORM, RCQUEST_BOTH, RCAREA_DEATH_MOUNTAIN_CRATER, SCENE_DEATH_MOUNTAIN_CRATER, TWO_ACTOR_PARAMS(6, -640), "Wonder Beneath Bridge Platform", RHT_WONDER_ITEM_DEATH_MOUNTAIN_CRATER, RG_RED_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_DMC_WONDER_BENEATH_BRIDGE_PLATFORM));
|
||||
locationTable[RC_ZR_WONDER_NEAR_DOMAIN_1] = Location::WonderItem(RC_ZR_WONDER_NEAR_DOMAIN_1, RCQUEST_BOTH, RCAREA_ZORAS_RIVER, SCENE_ZORAS_RIVER, TWO_ACTOR_PARAMS(3329, -1499), "Wonder Near Domain 1", RHT_WONDER_ITEM_ZORAS_RIVER, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ZR_WONDER_NEAR_DOMAIN_1));
|
||||
locationTable[RC_ZR_WONDER_NEAR_DOMAIN_2] = Location::WonderItem(RC_ZR_WONDER_NEAR_DOMAIN_2, RCQUEST_BOTH, RCAREA_ZORAS_RIVER, SCENE_ZORAS_RIVER, TWO_ACTOR_PARAMS(3161, -1493), "Wonder Near Domain 2", RHT_WONDER_ITEM_ZORAS_RIVER, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ZR_WONDER_NEAR_DOMAIN_2));
|
||||
locationTable[RC_ZR_WONDER_NEAR_DOMAIN_3] = Location::WonderItem(RC_ZR_WONDER_NEAR_DOMAIN_3, RCQUEST_BOTH, RCAREA_ZORAS_RIVER, SCENE_ZORAS_RIVER, TWO_ACTOR_PARAMS(2987, -1499), "Wonder Near Domain 3", RHT_WONDER_ITEM_ZORAS_RIVER, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ZR_WONDER_NEAR_DOMAIN_3));
|
||||
locationTable[RC_ZR_WONDER_NEAR_DOMAIN_4] = Location::WonderItem(RC_ZR_WONDER_NEAR_DOMAIN_4, RCQUEST_BOTH, RCAREA_ZORAS_RIVER, SCENE_ZORAS_RIVER, TWO_ACTOR_PARAMS(2831, -1421), "Wonder Near Domain 4", RHT_WONDER_ITEM_ZORAS_RIVER, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ZR_WONDER_NEAR_DOMAIN_4));
|
||||
locationTable[RC_ZR_WONDER_BEFORE_LADDER_1] = Location::WonderItem(RC_ZR_WONDER_BEFORE_LADDER_1, RCQUEST_BOTH, RCAREA_ZORAS_RIVER, SCENE_ZORAS_RIVER, TWO_ACTOR_PARAMS(1287, -363), "Wonder Before Ladder 1", RHT_WONDER_ITEM_ZORAS_RIVER, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ZR_WONDER_BEFORE_LADDER_1));
|
||||
locationTable[RC_ZR_WONDER_BEFORE_LADDER_2] = Location::WonderItem(RC_ZR_WONDER_BEFORE_LADDER_2, RCQUEST_BOTH, RCAREA_ZORAS_RIVER, SCENE_ZORAS_RIVER, TWO_ACTOR_PARAMS(1144, -296), "Wonder Before Ladder 2", RHT_WONDER_ITEM_ZORAS_RIVER, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ZR_WONDER_BEFORE_LADDER_2));
|
||||
locationTable[RC_ZR_WONDER_BEFORE_LADDER_3] = Location::WonderItem(RC_ZR_WONDER_BEFORE_LADDER_3, RCQUEST_BOTH, RCAREA_ZORAS_RIVER, SCENE_ZORAS_RIVER, TWO_ACTOR_PARAMS(1021, -224), "Wonder Before Ladder 3", RHT_WONDER_ITEM_ZORAS_RIVER, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ZR_WONDER_BEFORE_LADDER_3));
|
||||
locationTable[RC_ZR_WONDER_BEFORE_LADDER_4] = Location::WonderItem(RC_ZR_WONDER_BEFORE_LADDER_4, RCQUEST_BOTH, RCAREA_ZORAS_RIVER, SCENE_ZORAS_RIVER, TWO_ACTOR_PARAMS(902, -150), "Wonder Before Ladder 4", RHT_WONDER_ITEM_ZORAS_RIVER, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ZR_WONDER_BEFORE_LADDER_4));
|
||||
locationTable[RC_ZR_WONDER_BEFORE_LADDER_5] = Location::WonderItem(RC_ZR_WONDER_BEFORE_LADDER_5, RCQUEST_BOTH, RCAREA_ZORAS_RIVER, SCENE_ZORAS_RIVER, TWO_ACTOR_PARAMS(786, -74), "Wonder Before Ladder 5", RHT_WONDER_ITEM_ZORAS_RIVER, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ZR_WONDER_BEFORE_LADDER_5));
|
||||
locationTable[RC_ZR_WONDER_BEFORE_LADDER_6] = Location::WonderItem(RC_ZR_WONDER_BEFORE_LADDER_6, RCQUEST_BOTH, RCAREA_ZORAS_RIVER, SCENE_ZORAS_RIVER, TWO_ACTOR_PARAMS(670, 3), "Wonder Before Ladder 6", RHT_WONDER_ITEM_ZORAS_RIVER, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ZR_WONDER_BEFORE_LADDER_6));
|
||||
locationTable[RC_ZR_WONDER_AFTER_LADDER_1] = Location::WonderItem(RC_ZR_WONDER_AFTER_LADDER_1, RCQUEST_BOTH, RCAREA_ZORAS_RIVER, SCENE_ZORAS_RIVER, TWO_ACTOR_PARAMS(520, 12), "Wonder After Ladder 1", RHT_WONDER_ITEM_ZORAS_RIVER, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ZR_WONDER_AFTER_LADDER_1));
|
||||
locationTable[RC_ZR_WONDER_AFTER_LADDER_2] = Location::WonderItem(RC_ZR_WONDER_AFTER_LADDER_2, RCQUEST_BOTH, RCAREA_ZORAS_RIVER, SCENE_ZORAS_RIVER, TWO_ACTOR_PARAMS(353, 9), "Wonder After Ladder 2", RHT_WONDER_ITEM_ZORAS_RIVER, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ZR_WONDER_AFTER_LADDER_2));
|
||||
locationTable[RC_ZR_WONDER_AFTER_LADDER_3] = Location::WonderItem(RC_ZR_WONDER_AFTER_LADDER_3, RCQUEST_BOTH, RCAREA_ZORAS_RIVER, SCENE_ZORAS_RIVER, TWO_ACTOR_PARAMS(158, 6), "Wonder After Ladder 3", RHT_WONDER_ITEM_ZORAS_RIVER, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ZR_WONDER_AFTER_LADDER_3));
|
||||
locationTable[RC_ZR_WONDER_FROG_BRIDGE_1] = Location::WonderItem(RC_ZR_WONDER_FROG_BRIDGE_1, RCQUEST_BOTH, RCAREA_ZORAS_RIVER, SCENE_ZORAS_RIVER, TWO_ACTOR_PARAMS(1204, -608), "Wonder Frog Bridge 1", RHT_WONDER_ITEM_ZORAS_RIVER, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ZR_WONDER_FROG_BRIDGE_1));
|
||||
locationTable[RC_ZR_WONDER_FROG_BRIDGE_2] = Location::WonderItem(RC_ZR_WONDER_FROG_BRIDGE_2, RCQUEST_BOTH, RCAREA_ZORAS_RIVER, SCENE_ZORAS_RIVER, TWO_ACTOR_PARAMS(1124, -803), "Wonder Frog Bridge 2", RHT_WONDER_ITEM_ZORAS_RIVER, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ZR_WONDER_FROG_BRIDGE_2));
|
||||
locationTable[RC_ZR_WONDER_FROG_BRIDGE_3] = Location::WonderItem(RC_ZR_WONDER_FROG_BRIDGE_3, RCQUEST_BOTH, RCAREA_ZORAS_RIVER, SCENE_ZORAS_RIVER, TWO_ACTOR_PARAMS(1020, -973), "Wonder Frog Bridge 3", RHT_WONDER_ITEM_ZORAS_RIVER, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ZR_WONDER_FROG_BRIDGE_3));
|
||||
locationTable[RC_ZR_WONDER_PILLARS_1] = Location::WonderItem(RC_ZR_WONDER_PILLARS_1, RCQUEST_BOTH, RCAREA_ZORAS_RIVER, SCENE_ZORAS_RIVER, TWO_ACTOR_PARAMS(509, -1223), "Wonder Pillars 1", RHT_WONDER_ITEM_ZORAS_RIVER, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ZR_WONDER_PILLARS_1));
|
||||
locationTable[RC_ZR_WONDER_PILLARS_2] = Location::WonderItem(RC_ZR_WONDER_PILLARS_2, RCQUEST_BOTH, RCAREA_ZORAS_RIVER, SCENE_ZORAS_RIVER, TWO_ACTOR_PARAMS(269, -1018), "Wonder Pillars 2", RHT_WONDER_ITEM_ZORAS_RIVER, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ZR_WONDER_PILLARS_2));
|
||||
locationTable[RC_ZR_WONDER_PILLARS_3] = Location::WonderItem(RC_ZR_WONDER_PILLARS_3, RCQUEST_BOTH, RCAREA_ZORAS_RIVER, SCENE_ZORAS_RIVER, TWO_ACTOR_PARAMS(9, -1158), "Wonder Pillars 3", RHT_WONDER_ITEM_ZORAS_RIVER, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ZR_WONDER_PILLARS_3));
|
||||
locationTable[RC_ZR_WONDER_PILLARS_4] = Location::WonderItem(RC_ZR_WONDER_PILLARS_4, RCQUEST_BOTH, RCAREA_ZORAS_RIVER, SCENE_ZORAS_RIVER, TWO_ACTOR_PARAMS(-145, -938), "Wonder Pillars 4", RHT_WONDER_ITEM_ZORAS_RIVER, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ZR_WONDER_PILLARS_4));
|
||||
locationTable[RC_ZR_WONDER_LOWER_LAND_BRIDGE_1] = Location::WonderItem(RC_ZR_WONDER_LOWER_LAND_BRIDGE_1, RCQUEST_BOTH, RCAREA_ZORAS_RIVER, SCENE_ZORAS_RIVER, TWO_ACTOR_PARAMS(-147, -736), "Wonder Lower Land Bridge 1", RHT_WONDER_ITEM_ZORAS_RIVER, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ZR_WONDER_LOWER_LAND_BRIDGE_1));
|
||||
locationTable[RC_ZR_WONDER_LOWER_LAND_BRIDGE_2] = Location::WonderItem(RC_ZR_WONDER_LOWER_LAND_BRIDGE_2, RCQUEST_BOTH, RCAREA_ZORAS_RIVER, SCENE_ZORAS_RIVER, TWO_ACTOR_PARAMS(-141, -588), "Wonder Lower Land Bridge 2", RHT_WONDER_ITEM_ZORAS_RIVER, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ZR_WONDER_LOWER_LAND_BRIDGE_2));
|
||||
locationTable[RC_ZR_WONDER_LOWER_LAND_BRIDGE_3] = Location::WonderItem(RC_ZR_WONDER_LOWER_LAND_BRIDGE_3, RCQUEST_BOTH, RCAREA_ZORAS_RIVER, SCENE_ZORAS_RIVER, TWO_ACTOR_PARAMS(-142, -383), "Wonder Lower Land Bridge 3", RHT_WONDER_ITEM_ZORAS_RIVER, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ZR_WONDER_LOWER_LAND_BRIDGE_3));
|
||||
locationTable[RC_ZR_WONDER_LOWER_LAND_BRIDGE_4] = Location::WonderItem(RC_ZR_WONDER_LOWER_LAND_BRIDGE_4, RCQUEST_BOTH, RCAREA_ZORAS_RIVER, SCENE_ZORAS_RIVER, TWO_ACTOR_PARAMS(-141, -218), "Wonder Lower Land Bridge 4", RHT_WONDER_ITEM_ZORAS_RIVER, RG_RED_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ZR_WONDER_LOWER_LAND_BRIDGE_4));
|
||||
locationTable[RC_ZR_WONDER_NEAR_CUCCO_1] = Location::WonderItem(RC_ZR_WONDER_NEAR_CUCCO_1, RCQUEST_BOTH, RCAREA_ZORAS_RIVER, SCENE_ZORAS_RIVER, TWO_ACTOR_PARAMS(-860, -38), "Wonder Near Cucco 1", RHT_WONDER_ITEM_ZORAS_RIVER, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ZR_WONDER_NEAR_CUCCO_1));
|
||||
locationTable[RC_ZR_WONDER_NEAR_CUCCO_2] = Location::WonderItem(RC_ZR_WONDER_NEAR_CUCCO_2, RCQUEST_BOTH, RCAREA_ZORAS_RIVER, SCENE_ZORAS_RIVER, TWO_ACTOR_PARAMS(-1063, -4), "Wonder Near Cucco 2", RHT_WONDER_ITEM_ZORAS_RIVER, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ZR_WONDER_NEAR_CUCCO_2));
|
||||
locationTable[RC_ZR_WONDER_NEAR_CUCCO_3] = Location::WonderItem(RC_ZR_WONDER_NEAR_CUCCO_3, RCQUEST_BOTH, RCAREA_ZORAS_RIVER, SCENE_ZORAS_RIVER, TWO_ACTOR_PARAMS(-1296, 242), "Wonder Near Cucco 3", RHT_WONDER_ITEM_ZORAS_RIVER, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ZR_WONDER_NEAR_CUCCO_3));
|
||||
locationTable[RC_ZR_WONDER_LOWER_RIVER_1] = Location::WonderItem(RC_ZR_WONDER_LOWER_RIVER_1, RCQUEST_BOTH, RCAREA_ZORAS_RIVER, SCENE_ZORAS_RIVER, TWO_ACTOR_PARAMS(-1287, 457), "Wonder Lower River 1", RHT_WONDER_ITEM_ZORAS_RIVER, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ZR_WONDER_LOWER_RIVER_1));
|
||||
locationTable[RC_ZR_WONDER_LOWER_RIVER_2] = Location::WonderItem(RC_ZR_WONDER_LOWER_RIVER_2, RCQUEST_BOTH, RCAREA_ZORAS_RIVER, SCENE_ZORAS_RIVER, TWO_ACTOR_PARAMS(-1288, 668), "Wonder Lower River 2", RHT_WONDER_ITEM_ZORAS_RIVER, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ZR_WONDER_LOWER_RIVER_2));
|
||||
locationTable[RC_ZR_WONDER_LOWER_RIVER_3] = Location::WonderItem(RC_ZR_WONDER_LOWER_RIVER_3, RCQUEST_BOTH, RCAREA_ZORAS_RIVER, SCENE_ZORAS_RIVER, TWO_ACTOR_PARAMS(-1290, 862), "Wonder Lower River 3", RHT_WONDER_ITEM_ZORAS_RIVER, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ZR_WONDER_LOWER_RIVER_3));
|
||||
locationTable[RC_ZR_WONDER_LOWER_RIVER_4] = Location::WonderItem(RC_ZR_WONDER_LOWER_RIVER_4, RCQUEST_BOTH, RCAREA_ZORAS_RIVER, SCENE_ZORAS_RIVER, TWO_ACTOR_PARAMS(-1288, 1052), "Wonder Lower River 4", RHT_WONDER_ITEM_ZORAS_RIVER, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ZR_WONDER_LOWER_RIVER_4));
|
||||
locationTable[RC_ZF_WONDER_ROCK] = Location::WonderItem(RC_ZF_WONDER_ROCK, RCQUEST_BOTH, RCAREA_ZORAS_FOUNTAIN, SCENE_ZORAS_FOUNTAIN, TWO_ACTOR_PARAMS(-667, 1053), "Wonder Scarecrow Rock", RHT_WONDER_ITEM_ZORAS_FOUNTAIN, RG_RED_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ZF_WONDER_ROCK));
|
||||
locationTable[RC_GV_WONDER_LOWER_WATERFALL] = Location::WonderItem(RC_GV_WONDER_LOWER_WATERFALL, RCQUEST_BOTH, RCAREA_GERUDO_VALLEY, SCENE_GERUDO_VALLEY, TWO_ACTOR_PARAMS(-45, -298), "Wonder Lower Waterfall", RHT_WONDER_ITEM_GERUDO_VALLEY, RG_RED_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GV_WONDER_LOWER_WATERFALL));
|
||||
locationTable[RC_GV_WONDER_UPPER_WATERFALL] = Location::WonderItem(RC_GV_WONDER_UPPER_WATERFALL, RCQUEST_BOTH, RCAREA_GERUDO_VALLEY, SCENE_GERUDO_VALLEY, TWO_ACTOR_PARAMS(47, -2620), "Wonder Upper Waterfall", RHT_WONDER_ITEM_GERUDO_VALLEY, RG_RED_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GV_WONDER_UPPER_WATERFALL));
|
||||
locationTable[RC_GF_WONDER_ENTRANCE_SIGN] = Location::WonderItem(RC_GF_WONDER_ENTRANCE_SIGN, RCQUEST_BOTH, RCAREA_GERUDO_FORTRESS, SCENE_GERUDOS_FORTRESS, TWO_ACTOR_PARAMS(-814, -810), "Wonder Entrance Sign", RHT_WONDER_ITEM_GERUDOS_FORTRESS, RG_RED_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GF_WONDER_ENTRANCE_SIGN));
|
||||
locationTable[RC_GF_WONDER_ARCHERY_SIGN] = Location::WonderItem(RC_GF_WONDER_ARCHERY_SIGN, RCQUEST_BOTH, RCAREA_GERUDO_FORTRESS, SCENE_GERUDOS_FORTRESS, TWO_ACTOR_PARAMS(1094, -412), "Wonder Archery Sign", RHT_WONDER_ITEM_GERUDOS_FORTRESS, RG_RED_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GF_WONDER_ARCHERY_SIGN));
|
||||
locationTable[RC_TH_WONDER_1_TORCH_1] = Location::WonderItem(RC_TH_WONDER_1_TORCH_1, RCQUEST_BOTH, RCAREA_GERUDO_FORTRESS, SCENE_THIEVES_HIDEOUT, TWO_ACTOR_PARAMS(-305, -2633), "Wonder 1 Torch Outer Exit Skull", RHT_WONDER_ITEM_THIEVES_HIDEOUT, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_TH_WONDER_1_TORCH_1));
|
||||
locationTable[RC_TH_WONDER_1_TORCH_2] = Location::WonderItem(RC_TH_WONDER_1_TORCH_2, RCQUEST_BOTH, RCAREA_GERUDO_FORTRESS, SCENE_THIEVES_HIDEOUT, TWO_ACTOR_PARAMS(-307, -2200), "Wonder 1 Torch Inner Exit Skull", RHT_WONDER_ITEM_THIEVES_HIDEOUT, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_TH_WONDER_1_TORCH_2));
|
||||
locationTable[RC_TH_WONDER_STEEP_SLOPE_LOWER_EXIT] = Location::WonderItem(RC_TH_WONDER_STEEP_SLOPE_LOWER_EXIT, RCQUEST_BOTH, RCAREA_GERUDO_FORTRESS, SCENE_THIEVES_HIDEOUT, TWO_ACTOR_PARAMS(71, -928), "Wonder Steep Slope Lower Exit Skull", RHT_WONDER_ITEM_THIEVES_HIDEOUT, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_TH_WONDER_STEEP_SLOPE_LOWER_EXIT));
|
||||
locationTable[RC_TH_WONDER_STEEP_SLOPE_UPPER_EXIT] = Location::WonderItem(RC_TH_WONDER_STEEP_SLOPE_UPPER_EXIT, RCQUEST_BOTH, RCAREA_GERUDO_FORTRESS, SCENE_THIEVES_HIDEOUT, TWO_ACTOR_PARAMS(77, -1345), "Wonder Steep Slope Upper Exit Skull", RHT_WONDER_ITEM_THIEVES_HIDEOUT, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_TH_WONDER_STEEP_SLOPE_UPPER_EXIT));
|
||||
locationTable[RC_TH_WONDER_DOUBLE_JAIL_LOWER_EXIT] = Location::WonderItem(RC_TH_WONDER_DOUBLE_JAIL_LOWER_EXIT, RCQUEST_BOTH, RCAREA_GERUDO_FORTRESS, SCENE_THIEVES_HIDEOUT, TWO_ACTOR_PARAMS(-65, 173), "Wonder Double Jail Lower Exit Skull", RHT_WONDER_ITEM_THIEVES_HIDEOUT, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_TH_WONDER_DOUBLE_JAIL_LOWER_EXIT));
|
||||
locationTable[RC_TH_WONDER_DOUBLE_JAIL_UPPER_EXIT] = Location::WonderItem(RC_TH_WONDER_DOUBLE_JAIL_UPPER_EXIT, RCQUEST_BOTH, RCAREA_GERUDO_FORTRESS, SCENE_THIEVES_HIDEOUT, TWO_ACTOR_PARAMS(709, 180), "Wonder Double Jail Upper Exit Skull", RHT_WONDER_ITEM_THIEVES_HIDEOUT, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_TH_WONDER_DOUBLE_JAIL_UPPER_EXIT));
|
||||
locationTable[RC_TH_WONDER_KITCHEN_SKULL] = Location::WonderItem(RC_TH_WONDER_KITCHEN_SKULL, RCQUEST_BOTH, RCAREA_GERUDO_FORTRESS, SCENE_THIEVES_HIDEOUT, TWO_ACTOR_PARAMS(1204, -610), "Wonder Kitchen Skull", RHT_WONDER_ITEM_THIEVES_HIDEOUT, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_TH_WONDER_KITCHEN_SKULL));
|
||||
locationTable[RC_TH_WONDER_KITCHEN_SOUP] = Location::WonderItem(RC_TH_WONDER_KITCHEN_SOUP, RCQUEST_BOTH, RCAREA_GERUDO_FORTRESS, SCENE_THIEVES_HIDEOUT, TWO_ACTOR_PARAMS(1940, -585), "Wonder Kitchen Soup", RHT_WONDER_ITEM_THIEVES_HIDEOUT, RG_RED_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_TH_WONDER_KITCHEN_SOUP));
|
||||
locationTable[RC_TH_WONDER_DEAD_END_SKULL_ENTRANCE] = Location::WonderItem(RC_TH_WONDER_DEAD_END_SKULL_ENTRANCE, RCQUEST_BOTH, RCAREA_GERUDO_FORTRESS, SCENE_THIEVES_HIDEOUT, TWO_ACTOR_PARAMS(1666, -2323), "Wonder Dead End Entrance Skull", RHT_WONDER_ITEM_THIEVES_HIDEOUT, RG_ARROWS_5, SpoilerCollectionCheck::RandomizerInf(RAND_INF_TH_WONDER_DEAD_END_SKULL_ENTRANCE));
|
||||
locationTable[RC_TH_WONDER_DEAD_END_SKULL_NEAR_JAIL] = Location::WonderItem(RC_TH_WONDER_DEAD_END_SKULL_NEAR_JAIL, RCQUEST_BOTH, RCAREA_GERUDO_FORTRESS, SCENE_THIEVES_HIDEOUT, TWO_ACTOR_PARAMS(1378, -2829), "Wonder Dead End Near Jail Skull", RHT_WONDER_ITEM_THIEVES_HIDEOUT, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_TH_WONDER_DEAD_END_SKULL_NEAR_JAIL));
|
||||
locationTable[RC_TH_WONDER_BREAK_ROOM_BOTTOM_SKULL] = Location::WonderItem(RC_TH_WONDER_BREAK_ROOM_BOTTOM_SKULL, RCQUEST_BOTH, RCAREA_GERUDO_FORTRESS, SCENE_THIEVES_HIDEOUT, TWO_ACTOR_PARAMS(820, -3511), "Wonder Break Room Bottom Skull", RHT_WONDER_ITEM_THIEVES_HIDEOUT, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_TH_WONDER_BREAK_ROOM_BOTTOM_SKULL));
|
||||
locationTable[RC_TH_WONDER_BREAK_ROOM_TOP_SKULL] = Location::WonderItem(RC_TH_WONDER_BREAK_ROOM_TOP_SKULL, RCQUEST_BOTH, RCAREA_GERUDO_FORTRESS, SCENE_THIEVES_HIDEOUT, TWO_ACTOR_PARAMS(38, -3509), "Wonder Break Room Top Skull", RHT_WONDER_ITEM_THIEVES_HIDEOUT, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_TH_WONDER_BREAK_ROOM_TOP_SKULL));
|
||||
locationTable[RC_COLOSSUS_WONDER_OASIS_TREE_1] = Location::WonderItem(RC_COLOSSUS_WONDER_OASIS_TREE_1, RCQUEST_BOTH, RCAREA_DESERT_COLOSSUS, SCENE_DESERT_COLOSSUS, TWO_ACTOR_PARAMS(1161, 2383), "Wonder Oasis Tree 1", RHT_WONDER_ITEM_DESERT_COLOSSUS, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_COLOSSUS_WONDER_OASIS_TREE_1));
|
||||
locationTable[RC_COLOSSUS_WONDER_OASIS_TREE_2] = Location::WonderItem(RC_COLOSSUS_WONDER_OASIS_TREE_2, RCQUEST_BOTH, RCAREA_DESERT_COLOSSUS, SCENE_DESERT_COLOSSUS, TWO_ACTOR_PARAMS(1113, 2581), "Wonder Oasis Tree 2", RHT_WONDER_ITEM_DESERT_COLOSSUS, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_COLOSSUS_WONDER_OASIS_TREE_2));
|
||||
locationTable[RC_COLOSSUS_WONDER_OASIS_CHILD_TREE] = Location::WonderItem(RC_COLOSSUS_WONDER_OASIS_CHILD_TREE, RCQUEST_BOTH, RCAREA_DESERT_COLOSSUS, SCENE_DESERT_COLOSSUS, TWO_ACTOR_PARAMS(456, 2325), "Wonder Oasis Child Tree", RHT_WONDER_ITEM_DESERT_COLOSSUS, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_COLOSSUS_WONDER_OASIS_CHILD_TREE));
|
||||
locationTable[RC_COLOSSUS_WONDER_GF_TREE_1] = Location::WonderItem(RC_COLOSSUS_WONDER_GF_TREE_1, RCQUEST_BOTH, RCAREA_DESERT_COLOSSUS, SCENE_DESERT_COLOSSUS, TWO_ACTOR_PARAMS(2406, -1407), "Wonder Great Fairy Tree 1", RHT_WONDER_ITEM_DESERT_COLOSSUS, RG_RED_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_COLOSSUS_WONDER_GF_TREE_1));
|
||||
locationTable[RC_COLOSSUS_WONDER_GF_TREE_2] = Location::WonderItem(RC_COLOSSUS_WONDER_GF_TREE_2, RCQUEST_BOTH, RCAREA_DESERT_COLOSSUS, SCENE_DESERT_COLOSSUS, TWO_ACTOR_PARAMS(2098, -1402), "Wonder Great Fairy Tree 2", RHT_WONDER_ITEM_DESERT_COLOSSUS, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_COLOSSUS_WONDER_GF_TREE_2));
|
||||
// Dungeon Wonder Items
|
||||
locationTable[RC_SHADOW_TEMPLE_WONDER_THREE_POTS] = Location::WonderItem(RC_SHADOW_TEMPLE_WONDER_THREE_POTS, RCQUEST_VANILLA, RCAREA_SHADOW_TEMPLE, SCENE_SHADOW_TEMPLE, TWO_ACTOR_PARAMS(12, 1), "Wonder Three Pots Sign", RHT_WONDER_ITEM_SHADOW_TEMPLE, RG_ARROWS_30, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SHADOW_TEMPLE_WONDER_THREE_POTS));
|
||||
locationTable[RC_GERUDO_TRAINING_GROUND_WONDER_BEAMOS_ROOM] = Location::WonderItem(RC_GERUDO_TRAINING_GROUND_WONDER_BEAMOS_ROOM, RCQUEST_VANILLA, RCAREA_GERUDO_TRAINING_GROUND, SCENE_GERUDO_TRAINING_GROUND, TWO_ACTOR_PARAMS(7, 12), "Wonder Beamos Sign", RHT_WONDER_ITEM_GERUDO_TRAINING_GROUND, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GERUDO_TRAINING_GROUND_WONDER_BEAMOS_ROOM));
|
||||
locationTable[RC_GERUDO_TRAINING_GROUND_WONDER_EYE_STATUE_ROOM] = Location::WonderItem(RC_GERUDO_TRAINING_GROUND_WONDER_EYE_STATUE_ROOM, RCQUEST_VANILLA, RCAREA_GERUDO_TRAINING_GROUND, SCENE_GERUDO_TRAINING_GROUND, TWO_ACTOR_PARAMS(4, 2), "Wonder Top of Eye Statue", RHT_WONDER_ITEM_GERUDO_TRAINING_GROUND, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GERUDO_TRAINING_GROUND_WONDER_EYE_STATUE_ROOM));
|
||||
locationTable[RC_GERUDO_TRAINING_GROUND_WONDER_TORCH_SLUGS_ROOM] = Location::WonderItem(RC_GERUDO_TRAINING_GROUND_WONDER_TORCH_SLUGS_ROOM, RCQUEST_VANILLA, RCAREA_GERUDO_TRAINING_GROUND, SCENE_GERUDO_TRAINING_GROUND, TWO_ACTOR_PARAMS(5, 16), "Wonder Torch Slug Sign", RHT_WONDER_ITEM_GERUDO_TRAINING_GROUND, RG_RED_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GERUDO_TRAINING_GROUND_WONDER_TORCH_SLUGS_ROOM));
|
||||
// MQ Dungeon Wonder Items
|
||||
locationTable[RC_DEKU_TREE_MQ_WONDER_BASEMENT_GRAVE_1] = Location::WonderItem(RC_DEKU_TREE_MQ_WONDER_BASEMENT_GRAVE_1, RCQUEST_MQ, RCAREA_DEKU_TREE, SCENE_DEKU_TREE, TWO_ACTOR_PARAMS(7, 12), "MQ Wonder Basement Grave 1", RHT_WONDER_ITEM_DEKU_TREE, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_DEKU_TREE_MQ_WONDER_BASEMENT_GRAVE_1));
|
||||
locationTable[RC_DEKU_TREE_MQ_WONDER_BASEMENT_GRAVE_2] = Location::WonderItem(RC_DEKU_TREE_MQ_WONDER_BASEMENT_GRAVE_2, RCQUEST_MQ, RCAREA_DEKU_TREE, SCENE_DEKU_TREE, TWO_ACTOR_PARAMS(7, 11), "MQ Wonder Basement Grave 2", RHT_WONDER_ITEM_DEKU_TREE, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_DEKU_TREE_MQ_WONDER_BASEMENT_GRAVE_2));
|
||||
locationTable[RC_DEKU_TREE_MQ_WONDER_BASEMENT_GRAVE_3] = Location::WonderItem(RC_DEKU_TREE_MQ_WONDER_BASEMENT_GRAVE_3, RCQUEST_MQ, RCAREA_DEKU_TREE, SCENE_DEKU_TREE, TWO_ACTOR_PARAMS(7, 10), "MQ Wonder Basement Grave 3", RHT_WONDER_ITEM_DEKU_TREE, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_DEKU_TREE_MQ_WONDER_BASEMENT_GRAVE_3));
|
||||
locationTable[RC_DEKU_TREE_MQ_WONDER_BASEMENT_GRAVE_4] = Location::WonderItem(RC_DEKU_TREE_MQ_WONDER_BASEMENT_GRAVE_4, RCQUEST_MQ, RCAREA_DEKU_TREE, SCENE_DEKU_TREE, TWO_ACTOR_PARAMS(7, 9), "MQ Wonder Basement Grave 4", RHT_WONDER_ITEM_DEKU_TREE, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_DEKU_TREE_MQ_WONDER_BASEMENT_GRAVE_4));
|
||||
locationTable[RC_JABU_JABUS_BELLY_MQ_WONDER_ENTRANCE_LEFT_COW] = Location::WonderItem(RC_JABU_JABUS_BELLY_MQ_WONDER_ENTRANCE_LEFT_COW, RCQUEST_MQ, RCAREA_JABU_JABUS_BELLY, SCENE_JABU_JABU, TWO_ACTOR_PARAMS(0, 13), "MQ Wonder Entrance Cow Left", RHT_WONDER_ITEM_JABU_JABU, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_JABU_JABUS_BELLY_MQ_WONDER_ENTRANCE_LEFT_COW));
|
||||
locationTable[RC_JABU_JABUS_BELLY_MQ_WONDER_ENTRANCE_RIGHT_COW] = Location::WonderItem(RC_JABU_JABUS_BELLY_MQ_WONDER_ENTRANCE_RIGHT_COW, RCQUEST_MQ, RCAREA_JABU_JABUS_BELLY, SCENE_JABU_JABU, TWO_ACTOR_PARAMS(0, 14), "MQ Wonder Entrance Cow Right", RHT_WONDER_ITEM_JABU_JABU, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_JABU_JABUS_BELLY_MQ_WONDER_ENTRANCE_RIGHT_COW));
|
||||
locationTable[RC_JABU_JABUS_BELLY_MQ_WONDER_ELEVATOR_COW] = Location::WonderItem(RC_JABU_JABUS_BELLY_MQ_WONDER_ELEVATOR_COW, RCQUEST_MQ, RCAREA_JABU_JABUS_BELLY, SCENE_JABU_JABU, TWO_ACTOR_PARAMS(1, 19), "MQ Wonder Elevator Cow", RHT_WONDER_ITEM_JABU_JABU, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_JABU_JABUS_BELLY_MQ_WONDER_ELEVATOR_COW));
|
||||
locationTable[RC_JABU_JABUS_BELLY_MQ_HOLES_COW] = Location::WonderItem(RC_JABU_JABUS_BELLY_MQ_HOLES_COW, RCQUEST_MQ, RCAREA_JABU_JABUS_BELLY, SCENE_JABU_JABU, TWO_ACTOR_PARAMS(2, 13), "MQ Wonder Holes Cow", RHT_WONDER_ITEM_JABU_JABU, RG_ARROWS_5, SpoilerCollectionCheck::RandomizerInf(RAND_INF_JABU_JABUS_BELLY_MQ_HOLES_COW));
|
||||
locationTable[RC_JABU_JABUS_BELLY_MQ_WONDER_BASEMENT_RIGHT_COW_1] = Location::WonderItem(RC_JABU_JABUS_BELLY_MQ_WONDER_BASEMENT_RIGHT_COW_1, RCQUEST_MQ, RCAREA_JABU_JABUS_BELLY, SCENE_JABU_JABU, TWO_ACTOR_PARAMS(3, 15), "MQ Wonder Basement Right Cow 1", RHT_WONDER_ITEM_JABU_JABU, RG_DEKU_SEEDS_30, SpoilerCollectionCheck::RandomizerInf(RAND_INF_JABU_JABUS_BELLY_MQ_WONDER_BASEMENT_RIGHT_COW_1));
|
||||
locationTable[RC_JABU_JABUS_BELLY_MQ_WONDER_BASEMENT_RIGHT_COW_2] = Location::WonderItem(RC_JABU_JABUS_BELLY_MQ_WONDER_BASEMENT_RIGHT_COW_2, RCQUEST_MQ, RCAREA_JABU_JABUS_BELLY, SCENE_JABU_JABU, TWO_ACTOR_PARAMS(3, 13), "MQ Wonder Basement Right Cow 2", RHT_WONDER_ITEM_JABU_JABU, RG_DEKU_SEEDS_30, SpoilerCollectionCheck::RandomizerInf(RAND_INF_JABU_JABUS_BELLY_MQ_WONDER_BASEMENT_RIGHT_COW_2));
|
||||
locationTable[RC_JABU_JABUS_BELLY_MQ_WONDER_BASEMENT_RIGHT_COW_3] = Location::WonderItem(RC_JABU_JABUS_BELLY_MQ_WONDER_BASEMENT_RIGHT_COW_3, RCQUEST_MQ, RCAREA_JABU_JABUS_BELLY, SCENE_JABU_JABU, TWO_ACTOR_PARAMS(3, 14), "MQ Wonder Basement Right Cow 3", RHT_WONDER_ITEM_JABU_JABU, RG_DEKU_SEEDS_30, SpoilerCollectionCheck::RandomizerInf(RAND_INF_JABU_JABUS_BELLY_MQ_WONDER_BASEMENT_RIGHT_COW_3));
|
||||
locationTable[RC_JABU_JABUS_BELLY_MQ_WONDER_BASEMENT_LEFT_COW_1] = Location::WonderItem(RC_JABU_JABUS_BELLY_MQ_WONDER_BASEMENT_LEFT_COW_1, RCQUEST_MQ, RCAREA_JABU_JABUS_BELLY, SCENE_JABU_JABU, TWO_ACTOR_PARAMS(3, 18), "MQ Wonder Basement Left Cow 1", RHT_WONDER_ITEM_JABU_JABU, RG_DEKU_SEEDS_30, SpoilerCollectionCheck::RandomizerInf(RAND_INF_JABU_JABUS_BELLY_MQ_WONDER_BASEMENT_LEFT_COW_1));
|
||||
locationTable[RC_JABU_JABUS_BELLY_MQ_WONDER_BASEMENT_LEFT_COW_2] = Location::WonderItem(RC_JABU_JABUS_BELLY_MQ_WONDER_BASEMENT_LEFT_COW_2, RCQUEST_MQ, RCAREA_JABU_JABUS_BELLY, SCENE_JABU_JABU, TWO_ACTOR_PARAMS(3, 16), "MQ Wonder Basement Left Cow 2", RHT_WONDER_ITEM_JABU_JABU, RG_DEKU_SEEDS_30, SpoilerCollectionCheck::RandomizerInf(RAND_INF_JABU_JABUS_BELLY_MQ_WONDER_BASEMENT_LEFT_COW_2));
|
||||
locationTable[RC_JABU_JABUS_BELLY_MQ_WONDER_BASEMENT_LEFT_COW_3] = Location::WonderItem(RC_JABU_JABUS_BELLY_MQ_WONDER_BASEMENT_LEFT_COW_3, RCQUEST_MQ, RCAREA_JABU_JABUS_BELLY, SCENE_JABU_JABU, TWO_ACTOR_PARAMS(3, 17), "MQ Wonder Basement Left Cow 3", RHT_WONDER_ITEM_JABU_JABU, RG_DEKU_SEEDS_30, SpoilerCollectionCheck::RandomizerInf(RAND_INF_JABU_JABUS_BELLY_MQ_WONDER_BASEMENT_LEFT_COW_3));
|
||||
locationTable[RC_JABU_JABUS_BELLY_MQ_WONDER_AFTER_BIG_OCTO] = Location::WonderItem(RC_JABU_JABUS_BELLY_MQ_WONDER_AFTER_BIG_OCTO, RCQUEST_MQ, RCAREA_JABU_JABUS_BELLY, SCENE_JABU_JABU, TWO_ACTOR_PARAMS(6, 7), "MQ Wonder After Big Octo Cow", RHT_WONDER_ITEM_JABU_JABU, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_JABU_JABUS_BELLY_MQ_WONDER_AFTER_BIG_OCTO));
|
||||
locationTable[RC_JABU_JABUS_BELLY_MQ_WONDER_JIGGLIES_COW] = Location::WonderItem(RC_JABU_JABUS_BELLY_MQ_WONDER_JIGGLIES_COW, RCQUEST_MQ, RCAREA_JABU_JABUS_BELLY, SCENE_JABU_JABU, TWO_ACTOR_PARAMS(4, 13), "MQ Wonder Jigglies Cow", RHT_WONDER_ITEM_JABU_JABU, RG_DEKU_SEEDS_30, SpoilerCollectionCheck::RandomizerInf(RAND_INF_JABU_JABUS_BELLY_MQ_WONDER_JIGGLIES_COW));
|
||||
locationTable[RC_JABU_JABUS_BELLY_MQ_WONDER_FALLING_LIKE_LIKES_COW_RIGHT_1] = Location::WonderItem(RC_JABU_JABUS_BELLY_MQ_WONDER_FALLING_LIKE_LIKES_COW_RIGHT_1, RCQUEST_MQ, RCAREA_JABU_JABUS_BELLY, SCENE_JABU_JABU, TWO_ACTOR_PARAMS(11, 21), "MQ Wonder Like Like Right Cow 1", RHT_WONDER_ITEM_JABU_JABU, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_JABU_JABUS_BELLY_MQ_WONDER_FALLING_LIKE_LIKES_COW_RIGHT_1));
|
||||
locationTable[RC_JABU_JABUS_BELLY_MQ_WONDER_FALLING_LIKE_LIKES_COW_RIGHT_2] = Location::WonderItem(RC_JABU_JABUS_BELLY_MQ_WONDER_FALLING_LIKE_LIKES_COW_RIGHT_2, RCQUEST_MQ, RCAREA_JABU_JABUS_BELLY, SCENE_JABU_JABU, TWO_ACTOR_PARAMS(11, 20), "MQ Wonder Like Like Right Cow 2", RHT_WONDER_ITEM_JABU_JABU, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_JABU_JABUS_BELLY_MQ_WONDER_FALLING_LIKE_LIKES_COW_RIGHT_2));
|
||||
locationTable[RC_JABU_JABUS_BELLY_MQ_WONDER_FALLING_LIKE_LIKES_COW_RIGHT_3] = Location::WonderItem(RC_JABU_JABUS_BELLY_MQ_WONDER_FALLING_LIKE_LIKES_COW_RIGHT_3, RCQUEST_MQ, RCAREA_JABU_JABUS_BELLY, SCENE_JABU_JABU, TWO_ACTOR_PARAMS(11, 19), "MQ Wonder Like Like Right Cow 3", RHT_WONDER_ITEM_JABU_JABU, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_JABU_JABUS_BELLY_MQ_WONDER_FALLING_LIKE_LIKES_COW_RIGHT_3));
|
||||
locationTable[RC_JABU_JABUS_BELLY_MQ_WONDER_FALLING_LIKE_LIKES_COW_LEFT_1] = Location::WonderItem(RC_JABU_JABUS_BELLY_MQ_WONDER_FALLING_LIKE_LIKES_COW_LEFT_1, RCQUEST_MQ, RCAREA_JABU_JABUS_BELLY, SCENE_JABU_JABU, TWO_ACTOR_PARAMS(11, 24), "MQ Wonder Like Like Left Cow 1", RHT_WONDER_ITEM_JABU_JABU, RG_DEKU_SEEDS_30, SpoilerCollectionCheck::RandomizerInf(RAND_INF_JABU_JABUS_BELLY_MQ_WONDER_FALLING_LIKE_LIKES_COW_LEFT_1));
|
||||
locationTable[RC_JABU_JABUS_BELLY_MQ_WONDER_FALLING_LIKE_LIKES_COW_LEFT_2] = Location::WonderItem(RC_JABU_JABUS_BELLY_MQ_WONDER_FALLING_LIKE_LIKES_COW_LEFT_2, RCQUEST_MQ, RCAREA_JABU_JABUS_BELLY, SCENE_JABU_JABU, TWO_ACTOR_PARAMS(11, 23), "MQ Wonder Like Like Left Cow 2", RHT_WONDER_ITEM_JABU_JABU, RG_DEKU_SEEDS_30, SpoilerCollectionCheck::RandomizerInf(RAND_INF_JABU_JABUS_BELLY_MQ_WONDER_FALLING_LIKE_LIKES_COW_LEFT_2));
|
||||
locationTable[RC_JABU_JABUS_BELLY_MQ_WONDER_FALLING_LIKE_LIKES_COW_LEFT_3] = Location::WonderItem(RC_JABU_JABUS_BELLY_MQ_WONDER_FALLING_LIKE_LIKES_COW_LEFT_3, RCQUEST_MQ, RCAREA_JABU_JABUS_BELLY, SCENE_JABU_JABU, TWO_ACTOR_PARAMS(11, 22), "MQ Wonder Like Like Left Cow 3", RHT_WONDER_ITEM_JABU_JABU, RG_DEKU_SEEDS_30, SpoilerCollectionCheck::RandomizerInf(RAND_INF_JABU_JABUS_BELLY_MQ_WONDER_FALLING_LIKE_LIKES_COW_LEFT_3));
|
||||
locationTable[RC_JABU_JABUS_BELLY_MQ_WONDER_FALLING_LIKE_LIKES_EXPLOSION_1] = Location::WonderItem(RC_JABU_JABUS_BELLY_MQ_WONDER_FALLING_LIKE_LIKES_EXPLOSION_1, RCQUEST_MQ, RCAREA_JABU_JABUS_BELLY, SCENE_JABU_JABU, TWO_ACTOR_PARAMS(11, 29), "MQ Wonder Like Like Grass 1", RHT_WONDER_ITEM_JABU_JABU, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_JABU_JABUS_BELLY_MQ_WONDER_FALLING_LIKE_LIKES_EXPLOSION_1));
|
||||
locationTable[RC_JABU_JABUS_BELLY_MQ_WONDER_FALLING_LIKE_LIKES_EXPLOSION_2] = Location::WonderItem(RC_JABU_JABUS_BELLY_MQ_WONDER_FALLING_LIKE_LIKES_EXPLOSION_2, RCQUEST_MQ, RCAREA_JABU_JABUS_BELLY, SCENE_JABU_JABU, TWO_ACTOR_PARAMS(11, 28), "MQ Wonder Like Like Grass 2", RHT_WONDER_ITEM_JABU_JABU, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_JABU_JABUS_BELLY_MQ_WONDER_FALLING_LIKE_LIKES_EXPLOSION_2));
|
||||
locationTable[RC_JABU_JABUS_BELLY_MQ_WONDER_FALLING_LIKE_LIKES_EXPLOSION_3] = Location::WonderItem(RC_JABU_JABUS_BELLY_MQ_WONDER_FALLING_LIKE_LIKES_EXPLOSION_3, RCQUEST_MQ, RCAREA_JABU_JABUS_BELLY, SCENE_JABU_JABU, TWO_ACTOR_PARAMS(11, 27), "MQ Wonder Like Like Grass 3", RHT_WONDER_ITEM_JABU_JABU, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_JABU_JABUS_BELLY_MQ_WONDER_FALLING_LIKE_LIKES_EXPLOSION_3));
|
||||
locationTable[RC_JABU_JABUS_BELLY_MQ_WONDER_BEFORE_BOSS_LEFT_COW] = Location::WonderItem(RC_JABU_JABUS_BELLY_MQ_WONDER_BEFORE_BOSS_LEFT_COW, RCQUEST_MQ, RCAREA_JABU_JABUS_BELLY, SCENE_JABU_JABU, TWO_ACTOR_PARAMS(5, 10), "MQ Wonder Before Boss Left Cow", RHT_WONDER_ITEM_JABU_JABU, RG_DEKU_SEEDS_30, SpoilerCollectionCheck::RandomizerInf(RAND_INF_JABU_JABUS_BELLY_MQ_WONDER_BEFORE_BOSS_LEFT_COW));
|
||||
locationTable[RC_JABU_JABUS_BELLY_MQ_WONDER_BEFORE_BOSS_RIGHT_COW_1] = Location::WonderItem(RC_JABU_JABUS_BELLY_MQ_WONDER_BEFORE_BOSS_RIGHT_COW_1, RCQUEST_MQ, RCAREA_JABU_JABUS_BELLY, SCENE_JABU_JABU, TWO_ACTOR_PARAMS(5, 9), "MQ Wonder Before Boss Right Cow 1", RHT_WONDER_ITEM_JABU_JABU, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_JABU_JABUS_BELLY_MQ_WONDER_BEFORE_BOSS_RIGHT_COW_1));
|
||||
locationTable[RC_JABU_JABUS_BELLY_MQ_WONDER_BEFORE_BOSS_RIGHT_COW_2] = Location::WonderItem(RC_JABU_JABUS_BELLY_MQ_WONDER_BEFORE_BOSS_RIGHT_COW_2, RCQUEST_MQ, RCAREA_JABU_JABUS_BELLY, SCENE_JABU_JABU, TWO_ACTOR_PARAMS(5, 11), "MQ Wonder Before Boss Right Cow 2", RHT_WONDER_ITEM_JABU_JABU, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_JABU_JABUS_BELLY_MQ_WONDER_BEFORE_BOSS_RIGHT_COW_2));
|
||||
locationTable[RC_FIRE_TEMPLE_MQ_WONDER_SHORTCUT_ROOM_1] = Location::WonderItem(RC_FIRE_TEMPLE_MQ_WONDER_SHORTCUT_ROOM_1, RCQUEST_MQ, RCAREA_FIRE_TEMPLE, SCENE_FIRE_TEMPLE, TWO_ACTOR_PARAMS(4, 6), "MQ Wonder Shortcut Room 1", RHT_WONDER_ITEM_FIRE_TEMPLE, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FIRE_TEMPLE_MQ_WONDER_SHORTCUT_ROOM_1));
|
||||
locationTable[RC_FIRE_TEMPLE_MQ_WONDER_SHORTCUT_ROOM_2] = Location::WonderItem(RC_FIRE_TEMPLE_MQ_WONDER_SHORTCUT_ROOM_2, RCQUEST_MQ, RCAREA_FIRE_TEMPLE, SCENE_FIRE_TEMPLE, TWO_ACTOR_PARAMS(4, 7), "MQ Wonder Shortcut Room 2", RHT_WONDER_ITEM_FIRE_TEMPLE, RG_ARROWS_10, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FIRE_TEMPLE_MQ_WONDER_SHORTCUT_ROOM_2));
|
||||
locationTable[RC_FIRE_TEMPLE_MQ_WONDER_SHORTCUT_ROOM_3] = Location::WonderItem(RC_FIRE_TEMPLE_MQ_WONDER_SHORTCUT_ROOM_3, RCQUEST_MQ, RCAREA_FIRE_TEMPLE, SCENE_FIRE_TEMPLE, TWO_ACTOR_PARAMS(4, 8), "MQ Wonder Shortcut Room 3", RHT_WONDER_ITEM_FIRE_TEMPLE, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FIRE_TEMPLE_MQ_WONDER_SHORTCUT_ROOM_3));
|
||||
locationTable[RC_FIRE_TEMPLE_MQ_WONDER_BOSS_KEY_ROOM_HOOKSHOT] = Location::WonderItem(RC_FIRE_TEMPLE_MQ_WONDER_BOSS_KEY_ROOM_HOOKSHOT, RCQUEST_MQ, RCAREA_FIRE_TEMPLE, SCENE_FIRE_TEMPLE, TWO_ACTOR_PARAMS(19, 9), "MQ Wonder Boss Key Room Hookshot", RHT_WONDER_ITEM_FIRE_TEMPLE, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FIRE_TEMPLE_MQ_WONDER_BOSS_KEY_ROOM_HOOKSHOT));
|
||||
locationTable[RC_FIRE_TEMPLE_MQ_WONDER_BOSS_KEY_ROOM_BOW] = Location::WonderItem(RC_FIRE_TEMPLE_MQ_WONDER_BOSS_KEY_ROOM_BOW, RCQUEST_MQ, RCAREA_FIRE_TEMPLE, SCENE_FIRE_TEMPLE, TWO_ACTOR_PARAMS(19, 10), "MQ Wonder Boss Key Room Bow", RHT_WONDER_ITEM_FIRE_TEMPLE, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FIRE_TEMPLE_MQ_WONDER_BOSS_KEY_ROOM_BOW));
|
||||
locationTable[RC_FIRE_TEMPLE_MQ_WONDER_LIZALFOS_MAZE] = Location::WonderItem(RC_FIRE_TEMPLE_MQ_WONDER_LIZALFOS_MAZE, RCQUEST_MQ, RCAREA_FIRE_TEMPLE, SCENE_FIRE_TEMPLE, TWO_ACTOR_PARAMS(5, 19), "MQ Wonder Lizalfos Maze", RHT_WONDER_ITEM_FIRE_TEMPLE, RG_RED_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FIRE_TEMPLE_MQ_WONDER_LIZALFOS_MAZE));
|
||||
locationTable[RC_FIRE_TEMPLE_MQ_WONDER_EAST_TOWER_LARGE_FACE_1] = Location::WonderItem(RC_FIRE_TEMPLE_MQ_WONDER_EAST_TOWER_LARGE_FACE_1, RCQUEST_MQ, RCAREA_FIRE_TEMPLE, SCENE_FIRE_TEMPLE, TWO_ACTOR_PARAMS(7, 6), "MQ Wonder East Tower Large Face 1", RHT_WONDER_ITEM_FIRE_TEMPLE, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FIRE_TEMPLE_MQ_WONDER_EAST_TOWER_LARGE_FACE_1));
|
||||
locationTable[RC_FIRE_TEMPLE_MQ_WONDER_EAST_TOWER_LARGE_FACE_2] = Location::WonderItem(RC_FIRE_TEMPLE_MQ_WONDER_EAST_TOWER_LARGE_FACE_2, RCQUEST_MQ, RCAREA_FIRE_TEMPLE, SCENE_FIRE_TEMPLE, TWO_ACTOR_PARAMS(7, 7), "MQ Wonder East Tower Large Face 2", RHT_WONDER_ITEM_FIRE_TEMPLE, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FIRE_TEMPLE_MQ_WONDER_EAST_TOWER_LARGE_FACE_2));
|
||||
locationTable[RC_FIRE_TEMPLE_MQ_WONDER_EAST_TOWER_SMALL_FACE_1] = Location::WonderItem(RC_FIRE_TEMPLE_MQ_WONDER_EAST_TOWER_SMALL_FACE_1, RCQUEST_MQ, RCAREA_FIRE_TEMPLE, SCENE_FIRE_TEMPLE, TWO_ACTOR_PARAMS(7, 4), "MQ Wonder East Tower Small Face 1", RHT_WONDER_ITEM_FIRE_TEMPLE, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FIRE_TEMPLE_MQ_WONDER_EAST_TOWER_SMALL_FACE_1));
|
||||
locationTable[RC_FIRE_TEMPLE_MQ_WONDER_EAST_TOWER_SMALL_FACE_2] = Location::WonderItem(RC_FIRE_TEMPLE_MQ_WONDER_EAST_TOWER_SMALL_FACE_2, RCQUEST_MQ, RCAREA_FIRE_TEMPLE, SCENE_FIRE_TEMPLE, TWO_ACTOR_PARAMS(7, 5), "MQ Wonder East Tower Small Face 2", RHT_WONDER_ITEM_FIRE_TEMPLE, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FIRE_TEMPLE_MQ_WONDER_EAST_TOWER_SMALL_FACE_2));
|
||||
locationTable[RC_FIRE_TEMPLE_MQ_WONDER_TORCH_ROOM] = Location::WonderItem(RC_FIRE_TEMPLE_MQ_WONDER_TORCH_ROOM, RCQUEST_MQ, RCAREA_FIRE_TEMPLE, SCENE_FIRE_TEMPLE, TWO_ACTOR_PARAMS(16, 0), "MQ Wonder Torch Room", RHT_WONDER_ITEM_FIRE_TEMPLE, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FIRE_TEMPLE_MQ_WONDER_TORCH_ROOM));
|
||||
locationTable[RC_FIRE_TEMPLE_MQ_WONDER_FIRE_MAZE] = Location::WonderItem(RC_FIRE_TEMPLE_MQ_WONDER_FIRE_MAZE, RCQUEST_MQ, RCAREA_FIRE_TEMPLE, SCENE_FIRE_TEMPLE, TWO_ACTOR_PARAMS(10, 42), "MQ Wonder Fire Maze", RHT_WONDER_ITEM_FIRE_TEMPLE, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FIRE_TEMPLE_MQ_WONDER_FIRE_MAZE));
|
||||
locationTable[RC_FIRE_TEMPLE_MQ_WONDER_AFTER_FLARE_DANCER] = Location::WonderItem(RC_FIRE_TEMPLE_MQ_WONDER_AFTER_FLARE_DANCER, RCQUEST_MQ, RCAREA_FIRE_TEMPLE, SCENE_FIRE_TEMPLE, TWO_ACTOR_PARAMS(12, 0), "MQ Wonder After Flare Dancer", RHT_WONDER_ITEM_FIRE_TEMPLE, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FIRE_TEMPLE_MQ_WONDER_AFTER_FLARE_DANCER));
|
||||
locationTable[RC_FIRE_TEMPLE_MQ_WONDER_STAIRCASE] = Location::WonderItem(RC_FIRE_TEMPLE_MQ_WONDER_STAIRCASE, RCQUEST_MQ, RCAREA_FIRE_TEMPLE, SCENE_FIRE_TEMPLE, TWO_ACTOR_PARAMS(14, 1), "MQ Wonder Hammer Staircase", RHT_WONDER_ITEM_FIRE_TEMPLE, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FIRE_TEMPLE_MQ_WONDER_STAIRCASE));
|
||||
locationTable[RC_WATER_TEMPLE_MQ_WONDER_LIZALFOS_ROOM] = Location::WonderItem(RC_WATER_TEMPLE_MQ_WONDER_LIZALFOS_ROOM, RCQUEST_MQ, RCAREA_WATER_TEMPLE, SCENE_WATER_TEMPLE, TWO_ACTOR_PARAMS(19, 5), "MQ Wonder Lizalfos Room", RHT_WONDER_ITEM_WATER_TEMPLE, RG_RED_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_WATER_TEMPLE_MQ_WONDER_LIZALFOS_ROOM));
|
||||
locationTable[RC_WATER_TEMPLE_MQ_WONDER_LONGSHOT_ROOM] = Location::WonderItem(RC_WATER_TEMPLE_MQ_WONDER_LONGSHOT_ROOM, RCQUEST_MQ, RCAREA_WATER_TEMPLE, SCENE_WATER_TEMPLE, TWO_ACTOR_PARAMS(17, 7), "MQ Wonder Longshot Room", RHT_WONDER_ITEM_WATER_TEMPLE, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_WATER_TEMPLE_MQ_WONDER_LONGSHOT_ROOM));
|
||||
locationTable[RC_WATER_TEMPLE_MQ_WONDER_STALFOS_ROOM] = Location::WonderItem(RC_WATER_TEMPLE_MQ_WONDER_STALFOS_ROOM, RCQUEST_MQ, RCAREA_WATER_TEMPLE, SCENE_WATER_TEMPLE, TWO_ACTOR_PARAMS(18, 3), "MQ Wonder Stalfos Room", RHT_WONDER_ITEM_WATER_TEMPLE, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_WATER_TEMPLE_MQ_WONDER_STALFOS_ROOM));
|
||||
locationTable[RC_WATER_TEMPLE_MQ_WONDER_HOOKSHOT_STAIRCASE_RIGHT_1] = Location::WonderItem(RC_WATER_TEMPLE_MQ_WONDER_HOOKSHOT_STAIRCASE_RIGHT_1, RCQUEST_MQ, RCAREA_WATER_TEMPLE, SCENE_WATER_TEMPLE, TWO_ACTOR_PARAMS(5, 4), "MQ Wonder Hookshot Staircase Right 1", RHT_WONDER_ITEM_WATER_TEMPLE, RG_DEKU_NUTS_5, SpoilerCollectionCheck::RandomizerInf(RAND_INF_WATER_TEMPLE_MQ_WONDER_HOOKSHOT_STAIRCASE_RIGHT_1));
|
||||
locationTable[RC_WATER_TEMPLE_MQ_WONDER_HOOKSHOT_STAIRCASE_RIGHT_2] = Location::WonderItem(RC_WATER_TEMPLE_MQ_WONDER_HOOKSHOT_STAIRCASE_RIGHT_2, RCQUEST_MQ, RCAREA_WATER_TEMPLE, SCENE_WATER_TEMPLE, TWO_ACTOR_PARAMS(5, 3), "MQ Wonder Hookshot Staircase Right 2", RHT_WONDER_ITEM_WATER_TEMPLE, RG_RED_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_WATER_TEMPLE_MQ_WONDER_HOOKSHOT_STAIRCASE_RIGHT_2));
|
||||
locationTable[RC_WATER_TEMPLE_MQ_WONDER_HOOKSHOT_STAIRCASE_RIGHT_3] = Location::WonderItem(RC_WATER_TEMPLE_MQ_WONDER_HOOKSHOT_STAIRCASE_RIGHT_3, RCQUEST_MQ, RCAREA_WATER_TEMPLE, SCENE_WATER_TEMPLE, TWO_ACTOR_PARAMS(5, 2), "MQ Wonder Hookshot Staircase Right 3", RHT_WONDER_ITEM_WATER_TEMPLE, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_WATER_TEMPLE_MQ_WONDER_HOOKSHOT_STAIRCASE_RIGHT_3));
|
||||
locationTable[RC_WATER_TEMPLE_MQ_WONDER_HOOKSHOT_STAIRCASE_LEFT_1] = Location::WonderItem(RC_WATER_TEMPLE_MQ_WONDER_HOOKSHOT_STAIRCASE_LEFT_1, RCQUEST_MQ, RCAREA_WATER_TEMPLE, SCENE_WATER_TEMPLE, TWO_ACTOR_PARAMS(5, 11), "MQ Wonder Hookshot Staircase Left 1", RHT_WONDER_ITEM_WATER_TEMPLE, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_WATER_TEMPLE_MQ_WONDER_HOOKSHOT_STAIRCASE_LEFT_1));
|
||||
locationTable[RC_WATER_TEMPLE_MQ_WONDER_HOOKSHOT_STAIRCASE_LEFT_2] = Location::WonderItem(RC_WATER_TEMPLE_MQ_WONDER_HOOKSHOT_STAIRCASE_LEFT_2, RCQUEST_MQ, RCAREA_WATER_TEMPLE, SCENE_WATER_TEMPLE, TWO_ACTOR_PARAMS(5, 10), "MQ Wonder Hookshot Staircase Left 2", RHT_WONDER_ITEM_WATER_TEMPLE, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_WATER_TEMPLE_MQ_WONDER_HOOKSHOT_STAIRCASE_LEFT_2));
|
||||
locationTable[RC_WATER_TEMPLE_MQ_WONDER_HOOKSHOT_STAIRCASE_LEFT_3] = Location::WonderItem(RC_WATER_TEMPLE_MQ_WONDER_HOOKSHOT_STAIRCASE_LEFT_3, RCQUEST_MQ, RCAREA_WATER_TEMPLE, SCENE_WATER_TEMPLE, TWO_ACTOR_PARAMS(5, 9), "MQ Wonder Hookshot Staircase Left 3", RHT_WONDER_ITEM_WATER_TEMPLE, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_WATER_TEMPLE_MQ_WONDER_HOOKSHOT_STAIRCASE_LEFT_3));
|
||||
locationTable[RC_WATER_TEMPLE_MQ_WONDER_AFTER_DARK_LINK] = Location::WonderItem(RC_WATER_TEMPLE_MQ_WONDER_AFTER_DARK_LINK, RCQUEST_MQ, RCAREA_WATER_TEMPLE, SCENE_WATER_TEMPLE, TWO_ACTOR_PARAMS(7, 0), "MQ Wonder After Dark Link", RHT_WONDER_ITEM_WATER_TEMPLE, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_WATER_TEMPLE_MQ_WONDER_AFTER_DARK_LINK));
|
||||
locationTable[RC_WATER_TEMPLE_MQ_WONDER_DRAGON_ROOM_LEFT_EYE] = Location::WonderItem(RC_WATER_TEMPLE_MQ_WONDER_DRAGON_ROOM_LEFT_EYE, RCQUEST_MQ, RCAREA_WATER_TEMPLE, SCENE_WATER_TEMPLE, TWO_ACTOR_PARAMS(8, 4), "MQ Wonder Dragon Room Left Eye", RHT_WONDER_ITEM_WATER_TEMPLE, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_WATER_TEMPLE_MQ_WONDER_DRAGON_ROOM_LEFT_EYE));
|
||||
locationTable[RC_WATER_TEMPLE_MQ_WONDER_DRAGON_ROOM_RIGHT_EYE] = Location::WonderItem(RC_WATER_TEMPLE_MQ_WONDER_DRAGON_ROOM_RIGHT_EYE, RCQUEST_MQ, RCAREA_WATER_TEMPLE, SCENE_WATER_TEMPLE, TWO_ACTOR_PARAMS(8, 6), "MQ Wonder Dragon Room Right Eye", RHT_WONDER_ITEM_WATER_TEMPLE, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_WATER_TEMPLE_MQ_WONDER_DRAGON_ROOM_RIGHT_EYE));
|
||||
locationTable[RC_WATER_TEMPLE_MQ_WONDER_DRAGON_ROOM_PORTRAIT] = Location::WonderItem(RC_WATER_TEMPLE_MQ_WONDER_DRAGON_ROOM_PORTRAIT, RCQUEST_MQ, RCAREA_WATER_TEMPLE, SCENE_WATER_TEMPLE, TWO_ACTOR_PARAMS(8, 5), "MQ Wonder Dragon Room Portrait", RHT_WONDER_ITEM_WATER_TEMPLE, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_WATER_TEMPLE_MQ_WONDER_DRAGON_ROOM_PORTRAIT));
|
||||
locationTable[RC_WATER_TEMPLE_MQ_WONDER_TRIPLE_TORCHES] = Location::WonderItem(RC_WATER_TEMPLE_MQ_WONDER_TRIPLE_TORCHES, RCQUEST_MQ, RCAREA_WATER_TEMPLE, SCENE_WATER_TEMPLE, TWO_ACTOR_PARAMS(3, 3), "MQ Wonder Triple Torches Room", RHT_WONDER_ITEM_WATER_TEMPLE, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_WATER_TEMPLE_MQ_WONDER_TRIPLE_TORCHES));
|
||||
locationTable[RC_WATER_TEMPLE_MQ_WONDER_WATER_SPROUTS_1] = Location::WonderItem(RC_WATER_TEMPLE_MQ_WONDER_WATER_SPROUTS_1, RCQUEST_MQ, RCAREA_WATER_TEMPLE, SCENE_WATER_TEMPLE, TWO_ACTOR_PARAMS(15, 0), "MQ Wonder Water Sprouts 1", RHT_WONDER_ITEM_WATER_TEMPLE, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_WATER_TEMPLE_MQ_WONDER_WATER_SPROUTS_1));
|
||||
locationTable[RC_WATER_TEMPLE_MQ_WONDER_WATER_SPROUTS_2] = Location::WonderItem(RC_WATER_TEMPLE_MQ_WONDER_WATER_SPROUTS_2, RCQUEST_MQ, RCAREA_WATER_TEMPLE, SCENE_WATER_TEMPLE, TWO_ACTOR_PARAMS(15, 1), "MQ Wonder Water Sprouts 2", RHT_WONDER_ITEM_WATER_TEMPLE, RG_ARROWS_30, SpoilerCollectionCheck::RandomizerInf(RAND_INF_WATER_TEMPLE_MQ_WONDER_WATER_SPROUTS_2));
|
||||
locationTable[RC_WATER_TEMPLE_MQ_WONDER_FREESTANDING_ROOM] = Location::WonderItem(RC_WATER_TEMPLE_MQ_WONDER_FREESTANDING_ROOM, RCQUEST_MQ, RCAREA_WATER_TEMPLE, SCENE_WATER_TEMPLE, TWO_ACTOR_PARAMS(16, 0), "MQ Wonder Freestanding Room", RHT_WONDER_ITEM_WATER_TEMPLE, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_WATER_TEMPLE_MQ_WONDER_FREESTANDING_ROOM));
|
||||
locationTable[RC_WATER_TEMPLE_MQ_WONDER_BEFORE_BOSS_1] = Location::WonderItem(RC_WATER_TEMPLE_MQ_WONDER_BEFORE_BOSS_1, RCQUEST_MQ, RCAREA_WATER_TEMPLE, SCENE_WATER_TEMPLE, TWO_ACTOR_PARAMS(11, 1), "MQ Wonder Before Boss 1", RHT_WONDER_ITEM_WATER_TEMPLE, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_WATER_TEMPLE_MQ_WONDER_BEFORE_BOSS_1));
|
||||
locationTable[RC_WATER_TEMPLE_MQ_WONDER_BEFORE_BOSS_2] = Location::WonderItem(RC_WATER_TEMPLE_MQ_WONDER_BEFORE_BOSS_2, RCQUEST_MQ, RCAREA_WATER_TEMPLE, SCENE_WATER_TEMPLE, TWO_ACTOR_PARAMS(11, 0), "MQ Wonder Before Boss 2", RHT_WONDER_ITEM_WATER_TEMPLE, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_WATER_TEMPLE_MQ_WONDER_BEFORE_BOSS_2));
|
||||
locationTable[RC_WATER_TEMPLE_MQ_WONDER_UNDER_PILLAR_ROOM] = Location::WonderItem(RC_WATER_TEMPLE_MQ_WONDER_UNDER_PILLAR_ROOM, RCQUEST_MQ, RCAREA_WATER_TEMPLE, SCENE_WATER_TEMPLE, TWO_ACTOR_PARAMS(2, 24), "MQ Wonder Under Pillar Room", RHT_WONDER_ITEM_WATER_TEMPLE, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_WATER_TEMPLE_MQ_WONDER_UNDER_PILLAR_ROOM));
|
||||
locationTable[RC_WATER_TEMPLE_MQ_WONDER_LIZALFOS_HALLWAY] = Location::WonderItem(RC_WATER_TEMPLE_MQ_WONDER_LIZALFOS_HALLWAY, RCQUEST_MQ, RCAREA_WATER_TEMPLE, SCENE_WATER_TEMPLE, TWO_ACTOR_PARAMS(20, 2), "MQ Wonder Lizalfos Hallway", RHT_WONDER_ITEM_WATER_TEMPLE, RG_ARROWS_5, SpoilerCollectionCheck::RandomizerInf(RAND_INF_WATER_TEMPLE_MQ_WONDER_LIZALFOS_HALLWAY));
|
||||
locationTable[RC_WATER_TEMPLE_MQ_WONDER_GS_STORAGE_ROOM] = Location::WonderItem(RC_WATER_TEMPLE_MQ_WONDER_GS_STORAGE_ROOM, RCQUEST_MQ, RCAREA_WATER_TEMPLE, SCENE_WATER_TEMPLE, TWO_ACTOR_PARAMS(10, 1), "MQ Wonder GS Storage Room", RHT_WONDER_ITEM_WATER_TEMPLE, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_WATER_TEMPLE_MQ_WONDER_GS_STORAGE_ROOM));
|
||||
locationTable[RC_SPIRIT_TEMPLE_MQ_WONDER_CHEST_HAMMER] = Location::WonderItem(RC_SPIRIT_TEMPLE_MQ_WONDER_CHEST_HAMMER, RCQUEST_MQ, RCAREA_SPIRIT_TEMPLE, SCENE_SPIRIT_TEMPLE, TWO_ACTOR_PARAMS(18, 8), "MQ Wonder Chest Hammer", RHT_WONDER_ITEM_SPIRIT_TEMPLE, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SPIRIT_TEMPLE_MQ_WONDER_CHEST_HAMMER));
|
||||
locationTable[RC_SPIRIT_TEMPLE_MQ_WONDER_CHEST_SLASH] = Location::WonderItem(RC_SPIRIT_TEMPLE_MQ_WONDER_CHEST_SLASH, RCQUEST_MQ, RCAREA_SPIRIT_TEMPLE, SCENE_SPIRIT_TEMPLE, TWO_ACTOR_PARAMS(18, 9), "MQ Wonder Chest Sword", RHT_WONDER_ITEM_SPIRIT_TEMPLE, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SPIRIT_TEMPLE_MQ_WONDER_CHEST_SLASH));
|
||||
locationTable[RC_SHADOW_TEMPLE_MQ_WONDER_THREE_POTS] = Location::WonderItem(RC_SHADOW_TEMPLE_MQ_WONDER_THREE_POTS, RCQUEST_MQ, RCAREA_SHADOW_TEMPLE, SCENE_SHADOW_TEMPLE, TWO_ACTOR_PARAMS(12, 1), "MQ Wonder Three Pots Sign", RHT_WONDER_ITEM_SHADOW_TEMPLE, RG_ARROWS_30, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SHADOW_TEMPLE_MQ_WONDER_THREE_POTS));
|
||||
locationTable[RC_BOTTOM_OF_THE_WELL_MQ_WONDER_MAIN_ROOM_LEFT_1] = Location::WonderItem(RC_BOTTOM_OF_THE_WELL_MQ_WONDER_MAIN_ROOM_LEFT_1, RCQUEST_MQ, RCAREA_BOTTOM_OF_THE_WELL, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(0, 5), "MQ Wonder Main Room West Sign 1", RHT_BOTTOM_OF_THE_WELL_WONDER_ITEM, RG_DEKU_SEEDS_30, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTTOM_OF_THE_WELL_MQ_WONDER_MAIN_ROOM_LEFT_1));
|
||||
locationTable[RC_BOTTOM_OF_THE_WELL_MQ_WONDER_MAIN_ROOM_LEFT_2] = Location::WonderItem(RC_BOTTOM_OF_THE_WELL_MQ_WONDER_MAIN_ROOM_LEFT_2, RCQUEST_MQ, RCAREA_BOTTOM_OF_THE_WELL, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(0, 6), "MQ Wonder Main Room West Sign 2", RHT_BOTTOM_OF_THE_WELL_WONDER_ITEM, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTTOM_OF_THE_WELL_MQ_WONDER_MAIN_ROOM_LEFT_2));
|
||||
locationTable[RC_BOTTOM_OF_THE_WELL_MQ_WONDER_MAIN_ROOM_LEFT_3] = Location::WonderItem(RC_BOTTOM_OF_THE_WELL_MQ_WONDER_MAIN_ROOM_LEFT_3, RCQUEST_MQ, RCAREA_BOTTOM_OF_THE_WELL, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(0, 8), "MQ Wonder Main Room West Sign 3", RHT_BOTTOM_OF_THE_WELL_WONDER_ITEM, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTTOM_OF_THE_WELL_MQ_WONDER_MAIN_ROOM_LEFT_3));
|
||||
locationTable[RC_BOTTOM_OF_THE_WELL_MQ_WONDER_MAIN_ROOM_LEFT_4] = Location::WonderItem(RC_BOTTOM_OF_THE_WELL_MQ_WONDER_MAIN_ROOM_LEFT_4, RCQUEST_MQ, RCAREA_BOTTOM_OF_THE_WELL, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(0, 10), "MQ Wonder Main Room West Sign 4", RHT_BOTTOM_OF_THE_WELL_WONDER_ITEM, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTTOM_OF_THE_WELL_MQ_WONDER_MAIN_ROOM_LEFT_4));
|
||||
locationTable[RC_BOTTOM_OF_THE_WELL_MQ_WONDER_MAIN_ROOM_RIGHT_1] = Location::WonderItem(RC_BOTTOM_OF_THE_WELL_MQ_WONDER_MAIN_ROOM_RIGHT_1, RCQUEST_MQ, RCAREA_BOTTOM_OF_THE_WELL, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(0, 12), "MQ Wonder Main Room East Sign 1", RHT_BOTTOM_OF_THE_WELL_WONDER_ITEM, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTTOM_OF_THE_WELL_MQ_WONDER_MAIN_ROOM_RIGHT_1));
|
||||
locationTable[RC_BOTTOM_OF_THE_WELL_MQ_WONDER_MAIN_ROOM_RIGHT_2] = Location::WonderItem(RC_BOTTOM_OF_THE_WELL_MQ_WONDER_MAIN_ROOM_RIGHT_2, RCQUEST_MQ, RCAREA_BOTTOM_OF_THE_WELL, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(0, 11), "MQ Wonder Main Room East Sign 2", RHT_BOTTOM_OF_THE_WELL_WONDER_ITEM, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTTOM_OF_THE_WELL_MQ_WONDER_MAIN_ROOM_RIGHT_2));
|
||||
locationTable[RC_BOTTOM_OF_THE_WELL_MQ_WONDER_MAIN_ROOM_RIGHT_3] = Location::WonderItem(RC_BOTTOM_OF_THE_WELL_MQ_WONDER_MAIN_ROOM_RIGHT_3, RCQUEST_MQ, RCAREA_BOTTOM_OF_THE_WELL, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(0, 9), "MQ Wonder Main Room East Sign 3", RHT_BOTTOM_OF_THE_WELL_WONDER_ITEM, RG_DEKU_SEEDS_30, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTTOM_OF_THE_WELL_MQ_WONDER_MAIN_ROOM_RIGHT_3));
|
||||
locationTable[RC_BOTTOM_OF_THE_WELL_MQ_WONDER_MAIN_ROOM_RIGHT_4] = Location::WonderItem(RC_BOTTOM_OF_THE_WELL_MQ_WONDER_MAIN_ROOM_RIGHT_4, RCQUEST_MQ, RCAREA_BOTTOM_OF_THE_WELL, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(0, 7), "MQ Wonder Main Room East Sign 4", RHT_BOTTOM_OF_THE_WELL_WONDER_ITEM, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTTOM_OF_THE_WELL_MQ_WONDER_MAIN_ROOM_RIGHT_4));
|
||||
locationTable[RC_BOTTOM_OF_THE_WELL_MQ_WONDER_SIDE_ROOM_1] = Location::WonderItem(RC_BOTTOM_OF_THE_WELL_MQ_WONDER_SIDE_ROOM_1, RCQUEST_MQ, RCAREA_BOTTOM_OF_THE_WELL, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(5, 0), "MQ Wonder East Room Sign 1", RHT_BOTTOM_OF_THE_WELL_WONDER_ITEM, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTTOM_OF_THE_WELL_MQ_WONDER_SIDE_ROOM_1));
|
||||
locationTable[RC_BOTTOM_OF_THE_WELL_MQ_WONDER_SIDE_ROOM_2] = Location::WonderItem(RC_BOTTOM_OF_THE_WELL_MQ_WONDER_SIDE_ROOM_2, RCQUEST_MQ, RCAREA_BOTTOM_OF_THE_WELL, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(5, 1), "MQ Wonder East Room Sign 2", RHT_BOTTOM_OF_THE_WELL_WONDER_ITEM, RG_DEKU_SEEDS_30, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTTOM_OF_THE_WELL_MQ_WONDER_SIDE_ROOM_2));
|
||||
locationTable[RC_BOTTOM_OF_THE_WELL_MQ_WONDER_SIDE_ROOM_3] = Location::WonderItem(RC_BOTTOM_OF_THE_WELL_MQ_WONDER_SIDE_ROOM_3, RCQUEST_MQ, RCAREA_BOTTOM_OF_THE_WELL, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(5, 2), "MQ Wonder East Room Sign 3", RHT_BOTTOM_OF_THE_WELL_WONDER_ITEM, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTTOM_OF_THE_WELL_MQ_WONDER_SIDE_ROOM_3));
|
||||
locationTable[RC_BOTTOM_OF_THE_WELL_MQ_WONDER_SIDE_ROOM_4] = Location::WonderItem(RC_BOTTOM_OF_THE_WELL_MQ_WONDER_SIDE_ROOM_4, RCQUEST_MQ, RCAREA_BOTTOM_OF_THE_WELL, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(5, 3), "MQ Wonder East Room Sign 4", RHT_BOTTOM_OF_THE_WELL_WONDER_ITEM, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTTOM_OF_THE_WELL_MQ_WONDER_SIDE_ROOM_4));
|
||||
locationTable[RC_GERUDO_TRAINING_GROUND_MQ_WONDER_DINOLFOS_ROOM] = Location::WonderItem(RC_GERUDO_TRAINING_GROUND_MQ_WONDER_DINOLFOS_ROOM, RCQUEST_MQ, RCAREA_GERUDO_TRAINING_GROUND, SCENE_GERUDO_TRAINING_GROUND, TWO_ACTOR_PARAMS(7, 9), "MQ Wonder Dinolfos Sign", RHT_WONDER_ITEM_GERUDO_TRAINING_GROUND, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GERUDO_TRAINING_GROUND_MQ_WONDER_DINOLFOS_ROOM));
|
||||
locationTable[RC_GERUDO_TRAINING_GROUND_MQ_WONDER_EYE_STATUE] = Location::WonderItem(RC_GERUDO_TRAINING_GROUND_MQ_WONDER_EYE_STATUE, RCQUEST_MQ, RCAREA_GERUDO_TRAINING_GROUND, SCENE_GERUDO_TRAINING_GROUND, TWO_ACTOR_PARAMS(4, 4), "MQ Wonder Top of Eye Statue", RHT_WONDER_ITEM_GERUDO_TRAINING_GROUND, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GERUDO_TRAINING_GROUND_MQ_WONDER_EYE_STATUE));
|
||||
locationTable[RC_GANONS_CASTLE_MQ_WONDER_SHADOW_TRIAL] = Location::WonderItem(RC_GANONS_CASTLE_MQ_WONDER_SHADOW_TRIAL, RCQUEST_MQ, RCAREA_GANONS_CASTLE, SCENE_INSIDE_GANONS_CASTLE, TWO_ACTOR_PARAMS(12, 12), "MQ Wonder Shadow Trial Bombflower", RHT_GANONS_CASTLE_WONDER_ITEM, RG_DEKU_NUTS_5, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_MQ_WONDER_SHADOW_TRIAL));
|
||||
|
||||
// clang-format on
|
||||
}
|
||||
|
||||
static RegisterShipInitFunc registerShuffleWonderItems(RegisterShuffleWonderItems, { "IS_RANDO" });
|
||||
static RegisterShipInitFunc registerWonderItemLocations(Rando::StaticData::RegisterWonderItemLocations);
|
||||
|
|
@ -397,8 +397,8 @@ void SetAllEntrancesData() {
|
|||
{ EntranceType::ThievesHideout, RR_TH_KITCHEN_OPPOSITE_CORRIDOR, RR_GF_NEAR_GS, ENTR_GERUDOS_FORTRESS_10 } },
|
||||
{ { EntranceType::ThievesHideout, RR_GF_BELOW_CHEST, RR_TH_BREAK_ROOM, ENTR_THIEVES_HIDEOUT_10 },
|
||||
{ EntranceType::ThievesHideout, RR_TH_BREAK_ROOM, RR_GF_BELOW_CHEST, ENTR_GERUDOS_FORTRESS_11 } },
|
||||
{ { EntranceType::ThievesHideout, RR_GF_ABOVE_JAIL, RR_TH_BREAK_ROOM_CORRIDOR, ENTR_THIEVES_HIDEOUT_11 },
|
||||
{ EntranceType::ThievesHideout, RR_TH_BREAK_ROOM_CORRIDOR, RR_GF_ABOVE_JAIL, ENTR_GERUDOS_FORTRESS_12 } },
|
||||
{ { EntranceType::ThievesHideout, RR_GF_ABOVE_JAIL, RR_TH_BREAK_ROOM_UPPER_CORRIDOR, ENTR_THIEVES_HIDEOUT_11 },
|
||||
{ EntranceType::ThievesHideout, RR_TH_BREAK_ROOM_UPPER_CORRIDOR, RR_GF_ABOVE_JAIL, ENTR_GERUDOS_FORTRESS_12 } },
|
||||
{ { EntranceType::ThievesHideout, RR_GF_BELOW_GS, RR_TH_DEAD_END_CELL, ENTR_THIEVES_HIDEOUT_12 },
|
||||
{ EntranceType::ThievesHideout, RR_TH_DEAD_END_CELL, RR_GF_BELOW_GS, ENTR_GERUDOS_FORTRESS_13 } },
|
||||
|
||||
|
|
|
|||
|
|
@ -590,6 +590,15 @@ Rando::Location Rando::Location::Bush(RandomizerCheck rc, RandomizerCheckQuest q
|
|||
false, collectionCheck };
|
||||
}
|
||||
|
||||
Rando::Location Rando::Location::WonderItem(RandomizerCheck rc, RandomizerCheckQuest quest_, RandomizerCheckArea area_,
|
||||
SceneID scene_, int32_t actorParams_, std::string&& shortName_,
|
||||
RandomizerHintTextKey hintKey, RandomizerGet vanillaItem,
|
||||
SpoilerCollectionCheck collectionCheck) {
|
||||
return { rc, quest_, RCTYPE_WONDER_ITEM, area_, ACTOR_EN_WONDER_ITEM,
|
||||
scene_, actorParams_, std::move(shortName_), hintKey, vanillaItem,
|
||||
false, collectionCheck };
|
||||
}
|
||||
|
||||
Rando::Location Rando::Location::HintStone(RandomizerCheck rc, RandomizerCheckQuest quest_, RandomizerCheckArea area_,
|
||||
SceneID scene_, int32_t actorParams_, std::string&& shortName_) {
|
||||
return { rc, quest_, RCTYPE_GOSSIP_STONE, area_, ACTOR_EN_GS,
|
||||
|
|
|
|||
|
|
@ -261,6 +261,11 @@ class Location {
|
|||
int32_t actorParams_, std::string&& shortName_, RandomizerHintTextKey hintKey,
|
||||
ActorID actorId_, SpoilerCollectionCheck collectionCheck);
|
||||
|
||||
static Location WonderItem(RandomizerCheck rc, RandomizerCheckQuest quest_, RandomizerCheckArea area_,
|
||||
SceneID scene_, int32_t actorParams_, std::string&& shortName_,
|
||||
RandomizerHintTextKey hintKey, RandomizerGet vanillaItem,
|
||||
SpoilerCollectionCheck collectionCheck);
|
||||
|
||||
static Location OtherHint(RandomizerCheck rc, RandomizerCheckQuest quest_, RandomizerCheckArea area_,
|
||||
ActorID actorId_, SceneID scene_, std::string&& shortName_, std::string&& spoilerName_);
|
||||
|
||||
|
|
|
|||
|
|
@ -280,10 +280,18 @@ void RegionTable_Init_BottomOfTheWell() {
|
|||
//Instead of blowing up the boulder, you can aim through the lower left side with sling(either age) or as child with bow
|
||||
//Not even bow extension seems to get adult's bow to work
|
||||
//this would be a trick
|
||||
LOCATION(RC_BOTTOM_OF_THE_WELL_MQ_OUTER_LOBBY_POT, (AnyAgeTime([]{return logic->BlastOrSmash();}) && logic->CanHitEyeTargets()) ||
|
||||
(ctx->GetTrickOption(RT_BOULDER_COLLISION) && logic->IsChild ? logic->CanHitEyeTargets() : logic->CanUse(RG_FAIRY_SLINGSHOT))),
|
||||
LOCATION(RC_BOTTOM_OF_THE_WELL_MQ_BOMB_LEFT_HEART, logic->HasExplosives()),
|
||||
LOCATION(RC_BOTTOM_OF_THE_WELL_MQ_BOMB_RIGHT_HEART, logic->HasExplosives()),
|
||||
LOCATION(RC_BOTTOM_OF_THE_WELL_MQ_OUTER_LOBBY_POT, (AnyAgeTime([]{return logic->BlastOrSmash();}) && logic->CanHitEyeTargets()) ||
|
||||
(ctx->GetTrickOption(RT_BOULDER_COLLISION) && logic->IsChild ? logic->CanHitEyeTargets() : logic->CanUse(RG_FAIRY_SLINGSHOT))),
|
||||
LOCATION(RC_BOTTOM_OF_THE_WELL_MQ_BOMB_LEFT_HEART, logic->HasExplosives()),
|
||||
LOCATION(RC_BOTTOM_OF_THE_WELL_MQ_BOMB_RIGHT_HEART, logic->HasExplosives()),
|
||||
LOCATION(RC_BOTTOM_OF_THE_WELL_MQ_WONDER_MAIN_ROOM_LEFT_1, logic->CanUse(RG_FAIRY_SLINGSHOT)),
|
||||
LOCATION(RC_BOTTOM_OF_THE_WELL_MQ_WONDER_MAIN_ROOM_LEFT_2, logic->CanUse(RG_FAIRY_SLINGSHOT)),
|
||||
LOCATION(RC_BOTTOM_OF_THE_WELL_MQ_WONDER_MAIN_ROOM_LEFT_3, logic->CanUse(RG_FAIRY_SLINGSHOT)),
|
||||
LOCATION(RC_BOTTOM_OF_THE_WELL_MQ_WONDER_MAIN_ROOM_LEFT_4, logic->CanUse(RG_FAIRY_SLINGSHOT)),
|
||||
LOCATION(RC_BOTTOM_OF_THE_WELL_MQ_WONDER_MAIN_ROOM_RIGHT_1, logic->CanUse(RG_FAIRY_SLINGSHOT)),
|
||||
LOCATION(RC_BOTTOM_OF_THE_WELL_MQ_WONDER_MAIN_ROOM_RIGHT_2, logic->CanUse(RG_FAIRY_SLINGSHOT)),
|
||||
LOCATION(RC_BOTTOM_OF_THE_WELL_MQ_WONDER_MAIN_ROOM_RIGHT_3, logic->CanUse(RG_FAIRY_SLINGSHOT)),
|
||||
LOCATION(RC_BOTTOM_OF_THE_WELL_MQ_WONDER_MAIN_ROOM_RIGHT_4, logic->CanUse(RG_FAIRY_SLINGSHOT)),
|
||||
}, {
|
||||
//Exits
|
||||
ENTRANCE(RR_BOTW_ENTRYWAY, logic->CanUse(RG_CRAWL) && (logic->HasItem(RG_CLIMB) || logic->CanUse(RG_HOOKSHOT))),
|
||||
|
|
@ -321,6 +329,10 @@ void RegionTable_Init_BottomOfTheWell() {
|
|||
LOCATION(RC_BOTTOM_OF_THE_WELL_MQ_EAST_INNER_ROOM_POT_1, logic->CanBreakPots()),
|
||||
LOCATION(RC_BOTTOM_OF_THE_WELL_MQ_EAST_INNER_ROOM_POT_2, logic->CanBreakPots()),
|
||||
LOCATION(RC_BOTTOM_OF_THE_WELL_MQ_EAST_INNER_ROOM_POT_3, logic->CanBreakPots()),
|
||||
LOCATION(RC_BOTTOM_OF_THE_WELL_MQ_WONDER_SIDE_ROOM_1, logic->CanUse(RG_FAIRY_SLINGSHOT)),
|
||||
LOCATION(RC_BOTTOM_OF_THE_WELL_MQ_WONDER_SIDE_ROOM_2, logic->CanUse(RG_FAIRY_SLINGSHOT)),
|
||||
LOCATION(RC_BOTTOM_OF_THE_WELL_MQ_WONDER_SIDE_ROOM_3, logic->CanUse(RG_FAIRY_SLINGSHOT)),
|
||||
LOCATION(RC_BOTTOM_OF_THE_WELL_MQ_WONDER_SIDE_ROOM_4, logic->CanUse(RG_FAIRY_SLINGSHOT)),
|
||||
}, {
|
||||
//Exits
|
||||
ENTRANCE(RR_BOTW_MQ_MIDDLE, true),
|
||||
|
|
|
|||
|
|
@ -421,6 +421,10 @@ void RegionTable_Init_DekuTree() {
|
|||
LOCATION(RC_DEKU_TREE_MQ_BASEMENT_GRAVES_GRASS_3, logic->CanCutShrubs()),
|
||||
LOCATION(RC_DEKU_TREE_MQ_BASEMENT_GRAVES_GRASS_4, logic->CanCutShrubs()),
|
||||
LOCATION(RC_DEKU_TREE_MQ_BASEMENT_GRAVES_GRASS_5, logic->CanCutShrubs()),
|
||||
LOCATION(RC_DEKU_TREE_MQ_WONDER_BASEMENT_GRAVE_1, logic->CanJumpslashExceptHammer()),
|
||||
LOCATION(RC_DEKU_TREE_MQ_WONDER_BASEMENT_GRAVE_2, logic->CanJumpslashExceptHammer()),
|
||||
LOCATION(RC_DEKU_TREE_MQ_WONDER_BASEMENT_GRAVE_3, logic->CanJumpslashExceptHammer()),
|
||||
LOCATION(RC_DEKU_TREE_MQ_WONDER_BASEMENT_GRAVE_4, logic->CanJumpslashExceptHammer()),
|
||||
}, {
|
||||
//Exits
|
||||
ENTRANCE(RR_DEKU_TREE_MQ_BASEMENT_LEDGE, logic->CanUse(RG_CRAWL) && AnyAgeTime([]{return logic->HasFireSourceWithTorch() || logic->CanUse(RG_FAIRY_BOW);})),
|
||||
|
|
|
|||
|
|
@ -626,9 +626,11 @@ void RegionTable_Init_FireTemple() {
|
|||
EVENT_ACCESS(LOGIC_FAIRY_ACCESS, logic->CanUse(RG_HOOKSHOT)),
|
||||
}, {
|
||||
//Locations
|
||||
LOCATION(RC_FIRE_TEMPLE_MQ_BOSS_KEY_CHEST, logic->CanUse(RG_HOOKSHOT) && logic->HasItem(RG_OPEN_CHEST)),
|
||||
LOCATION(RC_FIRE_TEMPLE_MQ_LAVA_TORCH_POT_1, logic->HookshotOrBoomerang()),
|
||||
LOCATION(RC_FIRE_TEMPLE_MQ_LAVA_TORCH_POT_2, logic->HookshotOrBoomerang()),
|
||||
LOCATION(RC_FIRE_TEMPLE_MQ_BOSS_KEY_CHEST, logic->CanUse(RG_HOOKSHOT) && logic->HasItem(RG_OPEN_CHEST)),
|
||||
LOCATION(RC_FIRE_TEMPLE_MQ_LAVA_TORCH_POT_1, logic->HookshotOrBoomerang()),
|
||||
LOCATION(RC_FIRE_TEMPLE_MQ_LAVA_TORCH_POT_2, logic->HookshotOrBoomerang()),
|
||||
LOCATION(RC_FIRE_TEMPLE_MQ_WONDER_BOSS_KEY_ROOM_HOOKSHOT, logic->CanUse(RG_HOOKSHOT)),
|
||||
LOCATION(RC_FIRE_TEMPLE_MQ_WONDER_BOSS_KEY_ROOM_BOW, logic->HookshotOrBoomerang() && logic->CanUse(RG_FAIRY_BOW)),
|
||||
}, {
|
||||
//Exits
|
||||
ENTRANCE(RR_FIRE_TEMPLE_MQ_BIG_LAVA_ROOM, true),
|
||||
|
|
@ -676,7 +678,12 @@ void RegionTable_Init_FireTemple() {
|
|||
ENTRANCE(RR_FIRE_TEMPLE_MQ_SHORTCUT_ROOM_LOWER, true),
|
||||
});
|
||||
|
||||
areaTable[RR_FIRE_TEMPLE_MQ_SHORTCUT_ROOM_LOWER] = Region("Fire Temple MQ Shortcut Room Lower", SCENE_FIRE_TEMPLE, {}, {}, {
|
||||
areaTable[RR_FIRE_TEMPLE_MQ_SHORTCUT_ROOM_LOWER] = Region("Fire Temple MQ Shortcut Room Lower", SCENE_FIRE_TEMPLE, {}, {
|
||||
//Locations
|
||||
LOCATION(RC_FIRE_TEMPLE_MQ_WONDER_SHORTCUT_ROOM_1, logic->CanUse(RG_MEGATON_HAMMER)),
|
||||
LOCATION(RC_FIRE_TEMPLE_MQ_WONDER_SHORTCUT_ROOM_2, logic->CanUse(RG_MEGATON_HAMMER)),
|
||||
LOCATION(RC_FIRE_TEMPLE_MQ_WONDER_SHORTCUT_ROOM_3, logic->CanUse(RG_MEGATON_HAMMER)),
|
||||
}, {
|
||||
//Exits
|
||||
ENTRANCE(RR_FIRE_TEMPLE_MQ_SHORTCUT_ROOM_MID, (logic->HasFireSource() && (logic->IsAdult || (logic->CanUse(RG_HOOKSHOT) && logic->HasItem(RG_CLIMB)))) ||
|
||||
(ctx->GetTrickOption(RT_FIRE_MQ_CLIMB) && logic->CanUse(RG_HOVER_BOOTS) && logic->HasItem(RG_CLIMB))),
|
||||
|
|
@ -697,7 +704,10 @@ void RegionTable_Init_FireTemple() {
|
|||
ENTRANCE(RR_FIRE_TEMPLE_MQ_LOWER_LIZALFOS_MAZE, true),
|
||||
});
|
||||
|
||||
areaTable[RR_FIRE_TEMPLE_MQ_LOWER_LIZALFOS_MAZE] = Region("Fire Temple MQ Lower Lizalfos Maze", SCENE_FIRE_TEMPLE, {}, {}, {
|
||||
areaTable[RR_FIRE_TEMPLE_MQ_LOWER_LIZALFOS_MAZE] = Region("Fire Temple MQ Lower Lizalfos Maze", SCENE_FIRE_TEMPLE, {}, {
|
||||
//Locations
|
||||
LOCATION(RC_FIRE_TEMPLE_MQ_WONDER_LIZALFOS_MAZE, logic->CanUse(RG_HOOKSHOT)),
|
||||
}, {
|
||||
//Exits
|
||||
ENTRANCE(RR_FIRE_TEMPLE_MQ_SHORTCUT_ROOM_LOWER, true),
|
||||
//Explosives can also reach this room. Chus is relatively simple, they need to detonate on the first horizontal bar up from the floor while horizontally near the switch, but bombs are much harder
|
||||
|
|
@ -797,7 +807,13 @@ void RegionTable_Init_FireTemple() {
|
|||
areaTable[RR_FIRE_TEMPLE_MQ_TORCH_SLUG_CLIMB] = Region("Fire Temple MQ Torch Slug Climb", SCENE_FIRE_TEMPLE, {
|
||||
//Events
|
||||
EVENT_ACCESS(LOGIC_FAIRY_ACCESS, logic->CanUse(RG_HOOKSHOT)),
|
||||
}, {}, {
|
||||
}, {
|
||||
//Locations
|
||||
LOCATION(RC_FIRE_TEMPLE_MQ_WONDER_EAST_TOWER_LARGE_FACE_1, logic->CanUse(RG_HOOKSHOT)),
|
||||
LOCATION(RC_FIRE_TEMPLE_MQ_WONDER_EAST_TOWER_LARGE_FACE_2, logic->CanUse(RG_HOOKSHOT)),
|
||||
LOCATION(RC_FIRE_TEMPLE_MQ_WONDER_EAST_TOWER_SMALL_FACE_1, logic->CanUse(RG_HOOKSHOT)),
|
||||
LOCATION(RC_FIRE_TEMPLE_MQ_WONDER_EAST_TOWER_SMALL_FACE_2, logic->CanUse(RG_HOOKSHOT)),
|
||||
}, {
|
||||
//Exits
|
||||
ENTRANCE(RR_FIRE_TEMPLE_MQ_ABOVE_MAZE, true),
|
||||
ENTRANCE(RR_FIRE_TEMPLE_MQ_BURNING_BLOCK, logic->CanUse(RG_HOOKSHOT) && logic->HasItem(RG_CLIMB)),
|
||||
|
|
@ -842,6 +858,7 @@ void RegionTable_Init_FireTemple() {
|
|||
LOCATION(RC_FIRE_TEMPLE_MQ_LAVA_TORCH_CRATE_4, logic->CanBreakCrates() && logic->FireTimer() >= 16),
|
||||
LOCATION(RC_FIRE_TEMPLE_MQ_LAVA_TORCH_SMALL_CRATE_2, logic->CanBreakSmallCrates() && logic->FireTimer() >= 24),
|
||||
LOCATION(RC_FIRE_TEMPLE_MQ_LAVA_TORCH_SMALL_CRATE_3, logic->CanBreakSmallCrates() && logic->FireTimer() >= 16),
|
||||
LOCATION(RC_FIRE_TEMPLE_MQ_WONDER_TORCH_ROOM, logic->CanUse(RG_HOOKSHOT) && logic->FireTimer() >= 16),
|
||||
}, {
|
||||
//Exits
|
||||
ENTRANCE(RR_FIRE_TEMPLE_MQ_HIGH_TORCH_ROOM_ABOVE_CAGE, (logic->IsAdult || logic->CanUse(RG_HOOKSHOT)) && logic->FireTimer() >= 24),
|
||||
|
|
@ -945,6 +962,7 @@ void RegionTable_Init_FireTemple() {
|
|||
LOCATION(RC_FIRE_TEMPLE_MQ_PAST_FIRE_MAZE_SOUTH_POT, logic->CanUse(RG_BOOMERANG)),
|
||||
LOCATION(RC_FIRE_TEMPLE_MQ_FIRE_MAZE_NORTHMOST_POT, logic->CanBreakPots()),
|
||||
LOCATION(RC_FIRE_TEMPLE_MQ_FIRE_MAZE_NORTHWEST_POT, logic->CanBreakPots()),
|
||||
LOCATION(RC_FIRE_TEMPLE_MQ_WONDER_FIRE_MAZE, logic->CanUse(RG_LONGSHOT) && logic->CanUse(RG_BOOMERANG)),
|
||||
}, {
|
||||
//Exits
|
||||
ENTRANCE(RR_FIRE_TEMPLE_MQ_GS_LIZALFOS_ROOM, true),
|
||||
|
|
@ -972,6 +990,7 @@ void RegionTable_Init_FireTemple() {
|
|||
LOCATION(RC_FIRE_TEMPLE_MQ_PAST_FIRE_MAZE_SOUTH_POT, logic->CanBreakPots()),
|
||||
LOCATION(RC_FIRE_TEMPLE_MQ_PAST_FIRE_MAZE_NORTH_POT, logic->CanBreakPots()),
|
||||
LOCATION(RC_FIRE_TEMPLE_MQ_FIRE_MAZE_NORTHWEST_POT, logic->CanUse(RG_BOOMERANG)),
|
||||
LOCATION(RC_FIRE_TEMPLE_MQ_WONDER_FIRE_MAZE, logic->CanUse(RG_HOOKSHOT)),
|
||||
}, {
|
||||
//Exits
|
||||
ENTRANCE(RR_FIRE_TEMPLE_MQ_3F_FLARE_DANCER, true),
|
||||
|
|
@ -992,7 +1011,10 @@ void RegionTable_Init_FireTemple() {
|
|||
ENTRANCE(RR_FIRE_TEMPLE_MQ_LOCKED_CLIMB, true),
|
||||
});
|
||||
|
||||
areaTable[RR_FIRE_TEMPLE_MQ_LOCKED_CLIMB] = Region("Fire Temple MQ Locked Climb", SCENE_FIRE_TEMPLE, {}, {}, {
|
||||
areaTable[RR_FIRE_TEMPLE_MQ_LOCKED_CLIMB] = Region("Fire Temple MQ Locked Climb", SCENE_FIRE_TEMPLE, {}, {
|
||||
//Locations
|
||||
LOCATION(RC_FIRE_TEMPLE_MQ_WONDER_AFTER_FLARE_DANCER, logic->CanUse(RG_HOOKSHOT)),
|
||||
}, {
|
||||
//Exits
|
||||
ENTRANCE(RR_FIRE_TEMPLE_MQ_3F_FLARE_DANCER, true),
|
||||
ENTRANCE(RR_FIRE_TEMPLE_MQ_NARROW_STAIRS_ROOM, logic->SmallKeys(SCENE_FIRE_TEMPLE, 4) && logic->HasItem(RG_CLIMB)),
|
||||
|
|
@ -1032,7 +1054,10 @@ void RegionTable_Init_FireTemple() {
|
|||
ENTRANCE(RR_FIRE_TEMPLE_MQ_NARROW_STAIRS_4F, logic->SmallKeys(SCENE_FIRE_TEMPLE, 5)),
|
||||
});
|
||||
|
||||
areaTable[RR_FIRE_TEMPLE_MQ_BASE_OF_COLLAPSING_STAIRS] = Region("Fire Temple MQ Base of Collapsing Stairs", SCENE_FIRE_TEMPLE, {}, {}, {
|
||||
areaTable[RR_FIRE_TEMPLE_MQ_BASE_OF_COLLAPSING_STAIRS] = Region("Fire Temple MQ Base of Collapsing Stairs", SCENE_FIRE_TEMPLE, {}, {
|
||||
//Locations
|
||||
LOCATION(RC_FIRE_TEMPLE_MQ_WONDER_STAIRCASE, logic->Get(LOGIC_FIRE_HIT_STAIRS) && logic->CanUse(RG_HOOKSHOT)),
|
||||
}, {
|
||||
//Exits
|
||||
ENTRANCE(RR_FIRE_TEMPLE_MQ_TOP_OF_COLLAPSING_STAIRS, logic->Get(LOGIC_FIRE_HIT_STAIRS) && logic->IsAdult),
|
||||
ENTRANCE(RR_FIRE_TEMPLE_MQ_ABOVE_FIRE_MAZE, logic->CanUse(RG_HOOKSHOT)),
|
||||
|
|
|
|||
|
|
@ -564,7 +564,10 @@ void RegionTable_Init_GanonsCastle() {
|
|||
//Events
|
||||
//A torch run from RR_GANONS_CASTLE_MQ_SHADOW_TRIAL_STARTING_LEDGE is possible but tight, so would be a trick
|
||||
EVENT_ACCESS(LOGIC_SHADOW_TRIAL_FIRST_CHEST, logic->CanDetonateUprightBombFlower()),
|
||||
}, {}, {
|
||||
}, {
|
||||
//Locations
|
||||
LOCATION(RC_GANONS_CASTLE_MQ_WONDER_SHADOW_TRIAL, (logic->CanDetonateBombFlowers() || (ctx->GetTrickOption(RT_BLUE_FIRE_MUD_WALLS) && logic->CanUse(RG_BOTTLE_WITH_BLUE_FIRE))) && (logic->TakeDamage() || logic->CanUse(RG_NAYRUS_LOVE))),
|
||||
}, {
|
||||
//Exits
|
||||
ENTRANCE(RR_GANONS_CASTLE_MQ_SHADOW_TRIAL_CHEST_PLATFORM, logic->IsAdult || logic->CanUse(RG_HOOKSHOT) || logic->CanUse(RG_HOVER_BOOTS)),
|
||||
ENTRANCE(RR_GANONS_CASTLE_MQ_SHADOW_TRIAL_BEAMOS_TORCH, true),
|
||||
|
|
|
|||
|
|
@ -107,7 +107,10 @@ void RegionTable_Init_GerudoTrainingGround() {
|
|||
ENTRANCE(RR_GERUDO_TRAINING_GROUND_BEHIND_HEAVY_BLOCK, true),
|
||||
});
|
||||
|
||||
areaTable[RR_GERUDO_TRAINING_GROUND_EYE_STATUE_UPPER] = Region("Gerudo Training Ground Eye Statue Upper", SCENE_GERUDO_TRAINING_GROUND, {}, {}, {
|
||||
areaTable[RR_GERUDO_TRAINING_GROUND_EYE_STATUE_UPPER] = Region("Gerudo Training Ground Eye Statue Upper", SCENE_GERUDO_TRAINING_GROUND, {}, {
|
||||
//Locations
|
||||
LOCATION(RC_GERUDO_TRAINING_GROUND_WONDER_EYE_STATUE_ROOM, logic->CanUse(RG_HOVER_BOOTS)), //RANDOTODO: add trick for jump+jumpslash and jump only to pillar
|
||||
}, {
|
||||
//Exits
|
||||
ENTRANCE(RR_GERUDO_TRAINING_GROUND_EYE_STATUE_LOWER, true),
|
||||
ENTRANCE(RR_GERUDO_TRAINING_GROUND_HEAVY_BLOCK_ROOM_UPPER, true),
|
||||
|
|
@ -137,6 +140,7 @@ void RegionTable_Init_GerudoTrainingGround() {
|
|||
//Locations
|
||||
LOCATION(RC_GERUDO_TRAINING_GROUND_HAMMER_ROOM_CLEAR_CHEST, logic->CanAttack() && logic->HasItem(RG_OPEN_CHEST)),
|
||||
LOCATION(RC_GERUDO_TRAINING_GROUND_HAMMER_ROOM_SWITCH_CHEST, (logic->CanUse(RG_MEGATON_HAMMER) || (logic->TakeDamage() && ctx->GetTrickOption(RT_FIRE_RINGS))) && logic->HasItem(RG_OPEN_CHEST)),
|
||||
LOCATION(RC_GERUDO_TRAINING_GROUND_WONDER_TORCH_SLUGS_ROOM, logic->CanUse(RG_FAIRY_BOW)),
|
||||
}, {
|
||||
//Exits
|
||||
ENTRANCE(RR_GERUDO_TRAINING_GROUND_EYE_STATUE_LOWER, logic->CanUse(RG_MEGATON_HAMMER) && logic->CanUse(RG_FAIRY_BOW)),
|
||||
|
|
@ -172,6 +176,7 @@ void RegionTable_Init_GerudoTrainingGround() {
|
|||
LOCATION(RC_GERUDO_TRAINING_GROUND_BEAMOS_CHEST, logic->CanKillEnemy(RE_BEAMOS) && logic->CanKillEnemy(RE_DINOLFOS, ED_CLOSE, true, 2, true) && logic->HasItem(RG_OPEN_CHEST)),
|
||||
LOCATION(RC_GERUDO_TRAINING_GROUND_BEAMOS_SOUTH_HEART, true),
|
||||
LOCATION(RC_GERUDO_TRAINING_GROUND_BEAMOS_EAST_HEART, true),
|
||||
LOCATION(RC_GERUDO_TRAINING_GROUND_WONDER_BEAMOS_ROOM, logic->CanUse(RG_FAIRY_BOW)),
|
||||
}, {
|
||||
//Exits
|
||||
ENTRANCE(RR_GERUDO_TRAINING_GROUND_LOBBY, true),
|
||||
|
|
@ -275,7 +280,10 @@ void RegionTable_Init_GerudoTrainingGround() {
|
|||
ENTRANCE(RR_GERUDO_TRAINING_GROUND_MQ_BEHIND_BLOCK, true),
|
||||
});
|
||||
|
||||
areaTable[RR_GERUDO_TRAINING_GROUND_MQ_STATUE_ROOM_LEDGE] = Region("Gerudo Training Ground MQ Statue Room Ledge", SCENE_GERUDO_TRAINING_GROUND, {}, {}, {
|
||||
areaTable[RR_GERUDO_TRAINING_GROUND_MQ_STATUE_ROOM_LEDGE] = Region("Gerudo Training Ground MQ Statue Room Ledge", SCENE_GERUDO_TRAINING_GROUND, {}, {
|
||||
//Locations
|
||||
LOCATION(RC_GERUDO_TRAINING_GROUND_MQ_WONDER_EYE_STATUE, logic->CanUse(RG_LONGSHOT) || logic->CanUse(RG_HOVER_BOOTS)),
|
||||
}, {
|
||||
//Exits
|
||||
ENTRANCE(RR_GERUDO_TRAINING_GROUND_MQ_STALFOS_ROOM, true),
|
||||
//implies dropping down to hit the switch. Using swords, especially master, is a bit awkward, may be trick worthy, but is only relevant with other tricks
|
||||
|
|
@ -400,7 +408,8 @@ void RegionTable_Init_GerudoTrainingGround() {
|
|||
//is logic->CanKillEnemy(RE_DINOLFOS, ED_CLOSE, true, 2, true) && logic->CanKillEnemy(RE_ARMOS, ED_CLOSE, true, 1, true) broken down to exclude sticks, as it takes too many to clear the room
|
||||
//Proper enemy kill room ammo logic is needed to handle this room
|
||||
//some combinations may be impossible without taking damage, keep an eye out for issues here
|
||||
LOCATION(RC_GERUDO_TRAINING_GROUND_MQ_DINOLFOS_CHEST, (logic->CanUse(RG_MASTER_SWORD) || logic->CanUse(RG_BIGGORON_SWORD) || logic->CanUse(RG_MEGATON_HAMMER) || logic->CanUse(RG_FAIRY_BOW) || ((logic->CanUse(RG_NUTS) || logic->CanUse(RG_HOOKSHOT) || logic->CanUse(RG_BOOMERANG)) && (logic->CanUse(RG_KOKIRI_SWORD) || logic->CanUse(RG_FAIRY_SLINGSHOT)))) && logic->HasItem(RG_OPEN_CHEST)),
|
||||
LOCATION(RC_GERUDO_TRAINING_GROUND_MQ_DINOLFOS_CHEST, (logic->CanUse(RG_MASTER_SWORD) || logic->CanUse(RG_BIGGORON_SWORD) || logic->CanUse(RG_MEGATON_HAMMER) || logic->CanUse(RG_FAIRY_BOW) || ((logic->CanUse(RG_NUTS) || logic->CanUse(RG_HOOKSHOT) || logic->CanUse(RG_BOOMERANG)) && (logic->CanUse(RG_KOKIRI_SWORD) || logic->CanUse(RG_FAIRY_SLINGSHOT)))) && logic->HasItem(RG_OPEN_CHEST)),
|
||||
LOCATION(RC_GERUDO_TRAINING_GROUND_MQ_WONDER_DINOLFOS_ROOM, logic->CanUse(RG_FAIRY_BOW)),
|
||||
}, {
|
||||
//Exits
|
||||
ENTRANCE(RR_GERUDO_TRAINING_GROUND_MQ_LOBBY, true),
|
||||
|
|
|
|||
|
|
@ -266,12 +266,14 @@ void RegionTable_Init_JabuJabusBelly() {
|
|||
EVENT_ACCESS(LOGIC_NUT_ACCESS, logic->CanBreakPots()),
|
||||
}, {
|
||||
//Locations
|
||||
LOCATION(RC_JABU_JABUS_BELLY_MQ_MAP_CHEST, logic->BlastOrSmash() && logic->HasItem(RG_OPEN_CHEST)),
|
||||
LOCATION(RC_JABU_JABUS_BELLY_MQ_FIRST_ROOM_SIDE_CHEST, logic->CanUse(RG_FAIRY_SLINGSHOT) && logic->HasItem(RG_OPEN_CHEST)),
|
||||
LOCATION(RC_JABU_JABUS_BELLY_MQ_ENTRANCE_POT_1, logic->CanBreakPots()),
|
||||
LOCATION(RC_JABU_JABUS_BELLY_MQ_ENTRANCE_POT_2, logic->CanBreakPots()),
|
||||
LOCATION(RC_JABU_JABUS_BELLY_MQ_FIRST_GRASS_1, logic->CanCutShrubs()),
|
||||
LOCATION(RC_JABU_JABUS_BELLY_MQ_FIRST_GRASS_2, logic->CanCutShrubs()),
|
||||
LOCATION(RC_JABU_JABUS_BELLY_MQ_MAP_CHEST, logic->BlastOrSmash() && logic->HasItem(RG_OPEN_CHEST)),
|
||||
LOCATION(RC_JABU_JABUS_BELLY_MQ_FIRST_ROOM_SIDE_CHEST, logic->CanUse(RG_FAIRY_SLINGSHOT) && logic->HasItem(RG_OPEN_CHEST)),
|
||||
LOCATION(RC_JABU_JABUS_BELLY_MQ_ENTRANCE_POT_1, logic->CanBreakPots()),
|
||||
LOCATION(RC_JABU_JABUS_BELLY_MQ_ENTRANCE_POT_2, logic->CanBreakPots()),
|
||||
LOCATION(RC_JABU_JABUS_BELLY_MQ_FIRST_GRASS_1, logic->CanCutShrubs()),
|
||||
LOCATION(RC_JABU_JABUS_BELLY_MQ_FIRST_GRASS_2, logic->CanCutShrubs()),
|
||||
LOCATION(RC_JABU_JABUS_BELLY_MQ_WONDER_ENTRANCE_LEFT_COW, logic->CanUse(RG_FAIRY_SLINGSHOT)),
|
||||
LOCATION(RC_JABU_JABUS_BELLY_MQ_WONDER_ENTRANCE_RIGHT_COW, logic->CanUse(RG_FAIRY_SLINGSHOT)),
|
||||
}, {
|
||||
//Exits
|
||||
ENTRANCE(RR_JABU_JABUS_BELLY_ENTRYWAY, true),
|
||||
|
|
@ -283,12 +285,13 @@ void RegionTable_Init_JabuJabusBelly() {
|
|||
EVENT_ACCESS(LOGIC_JABU_MQ_LIFT_ROOM_COW, logic->CanUse(RG_FAIRY_SLINGSHOT)),
|
||||
}, {
|
||||
//Locations
|
||||
LOCATION(RC_JABU_JABUS_BELLY_MQ_SECOND_ROOM_LOWER_CHEST, logic->HasItem(RG_OPEN_CHEST)),
|
||||
LOCATION(RC_JABU_JABUS_BELLY_MQ_LIFT_HEART_1, true),
|
||||
LOCATION(RC_JABU_JABUS_BELLY_MQ_LIFT_HEART_2, true),
|
||||
LOCATION(RC_JABU_JABUS_BELLY_MQ_LIFT_RUPEE_1, logic->CanUse(RG_IRON_BOOTS)),
|
||||
LOCATION(RC_JABU_JABUS_BELLY_MQ_LIFT_RUPEE_2, logic->CanUse(RG_IRON_BOOTS)),
|
||||
LOCATION(RC_JABU_JABUS_BELLY_MQ_LIFT_RUPEE_3, logic->CanUse(RG_IRON_BOOTS)),
|
||||
LOCATION(RC_JABU_JABUS_BELLY_MQ_SECOND_ROOM_LOWER_CHEST, logic->HasItem(RG_OPEN_CHEST)),
|
||||
LOCATION(RC_JABU_JABUS_BELLY_MQ_LIFT_HEART_1, true),
|
||||
LOCATION(RC_JABU_JABUS_BELLY_MQ_LIFT_HEART_2, true),
|
||||
LOCATION(RC_JABU_JABUS_BELLY_MQ_LIFT_RUPEE_1, logic->CanUse(RG_IRON_BOOTS)),
|
||||
LOCATION(RC_JABU_JABUS_BELLY_MQ_LIFT_RUPEE_2, logic->CanUse(RG_IRON_BOOTS)),
|
||||
LOCATION(RC_JABU_JABUS_BELLY_MQ_LIFT_RUPEE_3, logic->CanUse(RG_IRON_BOOTS)),
|
||||
LOCATION(RC_JABU_JABUS_BELLY_MQ_WONDER_ELEVATOR_COW, logic->CanUse(RG_FAIRY_SLINGSHOT) && (logic->HasItem(RG_SILVER_SCALE) || logic->CanUse(RG_IRON_BOOTS) || logic->CanUse(RG_BOOMERANG))),
|
||||
}, {
|
||||
//Exits
|
||||
ENTRANCE(RR_JABU_JABUS_BELLY_MQ_BEGINNING, true),
|
||||
|
|
@ -322,6 +325,7 @@ void RegionTable_Init_JabuJabusBelly() {
|
|||
//Locations
|
||||
LOCATION(RC_JABU_JABUS_BELLY_MQ_PIT_GRASS_1, logic->CanCutShrubs() && logic->HasExplosives()),
|
||||
LOCATION(RC_JABU_JABUS_BELLY_MQ_PIT_GRASS_2, logic->CanCutShrubs() && logic->HasExplosives()),
|
||||
LOCATION(RC_JABU_JABUS_BELLY_MQ_HOLES_COW, (logic->HasExplosives() || ctx->GetTrickOption(RT_BOULDER_COLLISION)) && logic->CanUse(RG_FAIRY_SLINGSHOT)),
|
||||
}, {
|
||||
//Exits
|
||||
ENTRANCE(RR_JABU_JABUS_BELLY_MQ_LIFT_ROOM, true),
|
||||
|
|
@ -345,6 +349,12 @@ void RegionTable_Init_JabuJabusBelly() {
|
|||
LOCATION(RC_JABU_JABUS_BELLY_MQ_BASEMENT_GRASS_1, logic->CanCutShrubs()),
|
||||
LOCATION(RC_JABU_JABUS_BELLY_MQ_BASEMENT_GRASS_2, logic->CanCutShrubs()),
|
||||
LOCATION(RC_JABU_JABUS_BELLY_MQ_BASEMENT_GRASS_3, logic->CanCutShrubs()),
|
||||
LOCATION(RC_JABU_JABUS_BELLY_MQ_WONDER_BASEMENT_RIGHT_COW_1, logic->CanUse(RG_FAIRY_SLINGSHOT)),
|
||||
LOCATION(RC_JABU_JABUS_BELLY_MQ_WONDER_BASEMENT_RIGHT_COW_2, logic->CanUse(RG_FAIRY_SLINGSHOT)),
|
||||
LOCATION(RC_JABU_JABUS_BELLY_MQ_WONDER_BASEMENT_RIGHT_COW_3, logic->CanUse(RG_FAIRY_SLINGSHOT)),
|
||||
LOCATION(RC_JABU_JABUS_BELLY_MQ_WONDER_BASEMENT_LEFT_COW_1, logic->CanUse(RG_FAIRY_SLINGSHOT)),
|
||||
LOCATION(RC_JABU_JABUS_BELLY_MQ_WONDER_BASEMENT_LEFT_COW_2, logic->CanUse(RG_FAIRY_SLINGSHOT)),
|
||||
LOCATION(RC_JABU_JABUS_BELLY_MQ_WONDER_BASEMENT_LEFT_COW_3, logic->CanUse(RG_FAIRY_SLINGSHOT)),
|
||||
}, {
|
||||
//Exits
|
||||
ENTRANCE(RR_JABU_JABUS_BELLY_MQ_HOLES_ROOM, logic->HasItem(RG_CLIMB)),
|
||||
|
|
@ -435,12 +445,21 @@ void RegionTable_Init_JabuJabusBelly() {
|
|||
areaTable[RR_JABU_JABUS_BELLY_MQ_FORK_NORTH_EAST] = Region("Jabu Jabus Belly MQ Fork North East", SCENE_JABU_JABU, {}, {
|
||||
//Locations
|
||||
//Implies CanKillEnemy(RE_LIKE_LIKE)
|
||||
LOCATION(RC_JABU_JABUS_BELLY_MQ_FALLING_LIKE_LIKE_ROOM_CHEST, logic->CanUse(RG_FAIRY_SLINGSHOT) && logic->HasItem(RG_OPEN_CHEST)),
|
||||
LOCATION(RC_JABU_JABUS_BELLY_MQ_LIKE_LIKES_POT_1, logic->CanBreakPots()),
|
||||
LOCATION(RC_JABU_JABUS_BELLY_MQ_LIKE_LIKES_POT_2, logic->CanBreakPots()),
|
||||
LOCATION(RC_JABU_JABUS_BELLY_MQ_FALLING_LIKE_LIKE_GRASS, logic->CanCutShrubs()),
|
||||
LOCATION(RC_JABU_JABUS_BELLY_MQ_TRIPLE_HALLWAY_SMALL_CRATE_1, logic->CanBreakSmallCrates()),
|
||||
LOCATION(RC_JABU_JABUS_BELLY_MQ_TRIPLE_HALLWAY_SMALL_CRATE_2, logic->CanBreakSmallCrates()),
|
||||
LOCATION(RC_JABU_JABUS_BELLY_MQ_FALLING_LIKE_LIKE_ROOM_CHEST, logic->CanUse(RG_FAIRY_SLINGSHOT) && logic->HasItem(RG_OPEN_CHEST)),
|
||||
LOCATION(RC_JABU_JABUS_BELLY_MQ_LIKE_LIKES_POT_1, logic->CanBreakPots()),
|
||||
LOCATION(RC_JABU_JABUS_BELLY_MQ_LIKE_LIKES_POT_2, logic->CanBreakPots()),
|
||||
LOCATION(RC_JABU_JABUS_BELLY_MQ_FALLING_LIKE_LIKE_GRASS, logic->CanCutShrubs()),
|
||||
LOCATION(RC_JABU_JABUS_BELLY_MQ_TRIPLE_HALLWAY_SMALL_CRATE_1, logic->CanBreakSmallCrates()),
|
||||
LOCATION(RC_JABU_JABUS_BELLY_MQ_TRIPLE_HALLWAY_SMALL_CRATE_2, logic->CanBreakSmallCrates()),
|
||||
LOCATION(RC_JABU_JABUS_BELLY_MQ_WONDER_FALLING_LIKE_LIKES_COW_RIGHT_1, logic->CanUse(RG_FAIRY_SLINGSHOT)),
|
||||
LOCATION(RC_JABU_JABUS_BELLY_MQ_WONDER_FALLING_LIKE_LIKES_COW_RIGHT_2, logic->CanUse(RG_FAIRY_SLINGSHOT)),
|
||||
LOCATION(RC_JABU_JABUS_BELLY_MQ_WONDER_FALLING_LIKE_LIKES_COW_RIGHT_3, logic->CanUse(RG_FAIRY_SLINGSHOT)),
|
||||
LOCATION(RC_JABU_JABUS_BELLY_MQ_WONDER_FALLING_LIKE_LIKES_COW_LEFT_1, logic->CanUse(RG_FAIRY_SLINGSHOT)),
|
||||
LOCATION(RC_JABU_JABUS_BELLY_MQ_WONDER_FALLING_LIKE_LIKES_COW_LEFT_2, logic->CanUse(RG_FAIRY_SLINGSHOT)),
|
||||
LOCATION(RC_JABU_JABUS_BELLY_MQ_WONDER_FALLING_LIKE_LIKES_COW_LEFT_3, logic->CanUse(RG_FAIRY_SLINGSHOT)),
|
||||
LOCATION(RC_JABU_JABUS_BELLY_MQ_WONDER_FALLING_LIKE_LIKES_EXPLOSION_1, logic->HasExplosives()),
|
||||
LOCATION(RC_JABU_JABUS_BELLY_MQ_WONDER_FALLING_LIKE_LIKES_EXPLOSION_2, logic->HasExplosives()),
|
||||
LOCATION(RC_JABU_JABUS_BELLY_MQ_WONDER_FALLING_LIKE_LIKES_EXPLOSION_3, logic->HasExplosives()),
|
||||
}, {
|
||||
//Exits
|
||||
ENTRANCE(RR_JABU_JABUS_BELLY_MQ_FORKED_CORRIDOR, true),
|
||||
|
|
@ -492,6 +511,7 @@ void RegionTable_Init_JabuJabusBelly() {
|
|||
//Locations
|
||||
LOCATION(RC_JABU_JABUS_BELLY_MQ_AFTER_BIG_OCTO_GRASS_1, logic->CanCutShrubs()),
|
||||
LOCATION(RC_JABU_JABUS_BELLY_MQ_AFTER_BIG_OCTO_GRASS_2, logic->CanCutShrubs()),
|
||||
LOCATION(RC_JABU_JABUS_BELLY_MQ_WONDER_AFTER_BIG_OCTO, logic->CanUse(RG_FAIRY_SLINGSHOT)),
|
||||
}, {
|
||||
//Exits
|
||||
ENTRANCE(RR_JABU_JABUS_BELLY_MQ_JIGGLIES_ROOM, true),
|
||||
|
|
@ -504,6 +524,7 @@ void RegionTable_Init_JabuJabusBelly() {
|
|||
LOCATION(RC_JABU_JABUS_BELLY_MQ_JIGGLIES_GRASS, logic->CanCutShrubs()),
|
||||
LOCATION(RC_JABU_JABUS_BELLY_MQ_JIGGLIES_SMALL_CRATE_1, logic->CanUse(RG_FAIRY_SLINGSHOT) && logic->CanBreakSmallCrates()),
|
||||
LOCATION(RC_JABU_JABUS_BELLY_MQ_JIGGLIES_SMALL_CRATE_2, logic->CanUse(RG_FAIRY_SLINGSHOT) && logic->CanBreakSmallCrates()),
|
||||
LOCATION(RC_JABU_JABUS_BELLY_MQ_WONDER_JIGGLIES_COW, logic->CanUse(RG_FAIRY_SLINGSHOT)),
|
||||
}, {
|
||||
//Exits
|
||||
ENTRANCE(RR_JABU_JABUS_BELLY_MQ_ABOVE_BIGOCTO, true),
|
||||
|
|
@ -541,11 +562,14 @@ void RegionTable_Init_JabuJabusBelly() {
|
|||
EVENT_ACCESS(LOGIC_FAIRY_ACCESS, logic->CanBreakPots()),
|
||||
}, {
|
||||
//Locations
|
||||
LOCATION(RC_JABU_JABUS_BELLY_MQ_NEAR_BOSS_CHEST, logic->CanUse(RG_FAIRY_SLINGSHOT)),
|
||||
LOCATION(RC_JABU_JABUS_BELLY_MQ_GS_NEAR_BOSS, (logic->HasItem(RG_CLIMB) && (logic->CanUse(RG_BOOMERANG) || (ctx->GetTrickOption(RT_JABU_NEAR_BOSS_RANGED) && logic->CanUse(RG_HOOKSHOT)))) || (ctx->GetTrickOption(RT_JABU_NEAR_BOSS_RANGED) && logic->CanUse(RG_LONGSHOT))),
|
||||
LOCATION(RC_JABU_JABUS_BELLY_MQ_BEFORE_BOSS_POT_1, logic->CanBreakPots()),
|
||||
LOCATION(RC_JABU_JABUS_BELLY_MQ_BEFORE_BOSS_GRASS_1, logic->CanCutShrubs()),
|
||||
LOCATION(RC_JABU_JABUS_BELLY_MQ_BEFORE_BOSS_GRASS_2, logic->CanCutShrubs()),
|
||||
LOCATION(RC_JABU_JABUS_BELLY_MQ_NEAR_BOSS_CHEST, logic->CanUse(RG_FAIRY_SLINGSHOT)),
|
||||
LOCATION(RC_JABU_JABUS_BELLY_MQ_GS_NEAR_BOSS, (logic->HasItem(RG_CLIMB) && (logic->CanUse(RG_BOOMERANG) || (ctx->GetTrickOption(RT_JABU_NEAR_BOSS_RANGED) && logic->CanUse(RG_HOOKSHOT)))) || (ctx->GetTrickOption(RT_JABU_NEAR_BOSS_RANGED) && logic->CanUse(RG_LONGSHOT))),
|
||||
LOCATION(RC_JABU_JABUS_BELLY_MQ_BEFORE_BOSS_POT_1, logic->CanBreakPots()),
|
||||
LOCATION(RC_JABU_JABUS_BELLY_MQ_BEFORE_BOSS_GRASS_1, logic->CanCutShrubs()),
|
||||
LOCATION(RC_JABU_JABUS_BELLY_MQ_BEFORE_BOSS_GRASS_2, logic->CanCutShrubs()),
|
||||
LOCATION(RC_JABU_JABUS_BELLY_MQ_WONDER_BEFORE_BOSS_LEFT_COW, logic->CanUse(RG_FAIRY_SLINGSHOT)),
|
||||
LOCATION(RC_JABU_JABUS_BELLY_MQ_WONDER_BEFORE_BOSS_RIGHT_COW_1, logic->CanUse(RG_FAIRY_SLINGSHOT)),
|
||||
LOCATION(RC_JABU_JABUS_BELLY_MQ_WONDER_BEFORE_BOSS_RIGHT_COW_2, logic->CanUse(RG_FAIRY_SLINGSHOT)),
|
||||
}, {
|
||||
//Exits
|
||||
ENTRANCE(RR_JABU_JABUS_BELLY_MQ_TO_NEAR_BOSS_ROOM, true),
|
||||
|
|
|
|||
|
|
@ -344,6 +344,7 @@ void RegionTable_Init_ShadowTemple() {
|
|||
areaTable[RR_SHADOW_TEMPLE_THREE_SKULL_JARS] = Region("Shadow Temple Three Skull Jars", SCENE_SHADOW_TEMPLE, {}, {
|
||||
//Locations
|
||||
LOCATION(RC_SHADOW_TEMPLE_GS_TRIPLE_GIANT_POT, logic->HasItem(RG_GORONS_BRACELET) || logic->CanKillEnemy(RE_GOLD_SKULLTULA, ED_SHORT_JUMPSLASH)),
|
||||
LOCATION(RC_SHADOW_TEMPLE_WONDER_THREE_POTS, logic->CanUse(RG_FAIRY_BOW)),
|
||||
}, {
|
||||
//Exits
|
||||
ENTRANCE(RR_SHADOW_TEMPLE_MAZE, true),
|
||||
|
|
@ -740,7 +741,8 @@ void RegionTable_Init_ShadowTemple() {
|
|||
|
||||
areaTable[RR_SHADOW_TEMPLE_MQ_THREE_SKULL_JARS] = Region("Shadow Temple MQ Three Skull Jars", SCENE_SHADOW_TEMPLE, {}, {
|
||||
//Locations
|
||||
LOCATION(RC_SHADOW_TEMPLE_MQ_FREESTANDING_KEY, true),
|
||||
LOCATION(RC_SHADOW_TEMPLE_MQ_FREESTANDING_KEY, true),
|
||||
LOCATION(RC_SHADOW_TEMPLE_MQ_WONDER_THREE_POTS, logic->CanUse(RG_FAIRY_BOW)),
|
||||
}, {
|
||||
//Exits
|
||||
ENTRANCE(RR_SHADOW_TEMPLE_MQ_INVISIBLE_MAZE, true),
|
||||
|
|
|
|||
|
|
@ -984,6 +984,8 @@ void RegionTable_Init_SpiritTemple() {
|
|||
//Locations
|
||||
LOCATION(RC_SPIRIT_TEMPLE_MQ_CHEST_SWITCH_CHEST, logic->HasItem(RG_OPEN_CHEST)),
|
||||
LOCATION(RC_SPIRIT_TEMPLE_MQ_DINALFOS_ROOM_SUN_FAIRY, logic->CanUse(RG_SUNS_SONG)),
|
||||
LOCATION(RC_SPIRIT_TEMPLE_MQ_WONDER_CHEST_HAMMER, logic->CanUse(RG_MEGATON_HAMMER)),
|
||||
LOCATION(RC_SPIRIT_TEMPLE_MQ_WONDER_CHEST_SLASH, logic->CanJumpslashExceptHammer()),
|
||||
}, {
|
||||
//Exits
|
||||
ENTRANCE(RR_SPIRIT_TEMPLE_MQ_BEAMOS_PITS, true),
|
||||
|
|
|
|||
|
|
@ -760,7 +760,11 @@ void RegionTable_Init_WaterTemple() {
|
|||
ENTRANCE(RR_WATER_TEMPLE_MQ_BOSS_DOOR_RAMP, true),
|
||||
});
|
||||
|
||||
areaTable[RR_WATER_TEMPLE_MQ_BOSS_DOOR_RAMP] = Region("Water Temple MQ Boss Door Ramp", SCENE_WATER_TEMPLE, {}, {}, {
|
||||
areaTable[RR_WATER_TEMPLE_MQ_BOSS_DOOR_RAMP] = Region("Water Temple MQ Boss Door Ramp", SCENE_WATER_TEMPLE, {}, {
|
||||
//Locations
|
||||
LOCATION(RC_WATER_TEMPLE_MQ_WONDER_BEFORE_BOSS_1, logic->CanUse(RG_HOOKSHOT)),
|
||||
LOCATION(RC_WATER_TEMPLE_MQ_WONDER_BEFORE_BOSS_2, logic->CanUse(RG_HOOKSHOT)),
|
||||
}, {
|
||||
//Exits
|
||||
ENTRANCE(RR_WATER_TEMPLE_MQ_RISING_TARGET_LEDGE, true),
|
||||
ENTRANCE(RR_WATER_TEMPLE_MQ_BOSS_DOOR, logic->CanUse(RG_LONGSHOT) || logic->CanUse(RG_HOVER_BOOTS) || logic->CanUse(RG_ICE_ARROWS) || logic->CanUse(RG_NAYRUS_LOVE)),
|
||||
|
|
@ -789,7 +793,8 @@ void RegionTable_Init_WaterTemple() {
|
|||
|
||||
areaTable[RR_WATER_TEMPLE_MQ_SIDE_TOWER_2F] = Region("Water Temple MQ Side Tower 2F", SCENE_WATER_TEMPLE, {}, {
|
||||
//Locations
|
||||
LOCATION(RC_WATER_TEMPLE_MQ_LONGSHOT_CHEST, logic->CanUse(RG_HOOKSHOT) && ((logic->WaterLevel(WL_MID) && logic->HasItem(RG_OPEN_CHEST)) || logic->CanOpenUnderwaterChest())),
|
||||
LOCATION(RC_WATER_TEMPLE_MQ_LONGSHOT_CHEST, logic->CanUse(RG_HOOKSHOT) && ((logic->WaterLevel(WL_MID) && logic->HasItem(RG_OPEN_CHEST)) || logic->CanOpenUnderwaterChest())),
|
||||
LOCATION(RC_WATER_TEMPLE_MQ_WONDER_LONGSHOT_ROOM, logic->CanUse(RG_HOOKSHOT) && (logic->WaterLevel(WL_MID) || logic->CanUse(RG_IRON_BOOTS))),
|
||||
}, {
|
||||
//Exits
|
||||
ENTRANCE(RR_WATER_TEMPLE_MQ_SIDE_TOWER_1F, logic->WaterLevel(WL_LOW) || logic->CanUse(RG_IRON_BOOTS)),
|
||||
|
|
@ -810,7 +815,8 @@ void RegionTable_Init_WaterTemple() {
|
|||
|
||||
areaTable[RR_WATER_TEMPLE_MQ_3_STALFOS_ROOM] = Region("Water Temple MQ 3 Stalfos Room", SCENE_WATER_TEMPLE, {}, {
|
||||
//Locations
|
||||
LOCATION(RC_WATER_TEMPLE_MQ_MAP_CHEST, logic->CanUse(RG_HOOKSHOT) && logic->HasItem(RG_OPEN_CHEST)),
|
||||
LOCATION(RC_WATER_TEMPLE_MQ_MAP_CHEST, logic->CanUse(RG_HOOKSHOT) && logic->HasItem(RG_OPEN_CHEST)),
|
||||
LOCATION(RC_WATER_TEMPLE_MQ_WONDER_STALFOS_ROOM, logic->CanUse(RG_HOOKSHOT)),
|
||||
}, {
|
||||
//Exits
|
||||
ENTRANCE(RR_WATER_TEMPLE_MQ_LOW_EMBLEM, logic->CanKillEnemy(RE_STALFOS, ED_CLOSE, true, 4)),
|
||||
|
|
@ -821,7 +827,8 @@ void RegionTable_Init_WaterTemple() {
|
|||
EVENT_ACCESS(LOGIC_WATER_MQ_SIDE_TOWER_TARGETS, logic->CanKillEnemy(RE_LIZALFOS) && logic->CanKillEnemy(RE_SPIKE)),
|
||||
}, {
|
||||
//Locations
|
||||
LOCATION(RC_WATER_TEMPLE_MQ_COMPASS_CHEST, logic->Get(LOGIC_WATER_MQ_SIDE_TOWER_TARGETS) && logic->HasItem(RG_OPEN_CHEST)),
|
||||
LOCATION(RC_WATER_TEMPLE_MQ_COMPASS_CHEST, logic->Get(LOGIC_WATER_MQ_SIDE_TOWER_TARGETS) && logic->HasItem(RG_OPEN_CHEST)),
|
||||
LOCATION(RC_WATER_TEMPLE_MQ_WONDER_LIZALFOS_ROOM, logic->CanUse(RG_HOOKSHOT)),
|
||||
}, {
|
||||
//Exits
|
||||
ENTRANCE(RR_WATER_TEMPLE_MQ_SIDE_TOWER_1F, true),
|
||||
|
|
@ -901,7 +908,8 @@ void RegionTable_Init_WaterTemple() {
|
|||
|
||||
areaTable[RR_WATER_TEMPLE_MQ_PILLAR_B1_FINAL] = Region("Water Temple MQ Central Pillar B1 Final", SCENE_WATER_TEMPLE, {}, {
|
||||
//Locations
|
||||
LOCATION(RC_WATER_TEMPLE_MQ_CENTRAL_PILLAR_CHEST, logic->CanUse(RG_HOOKSHOT) && logic->HasItem(RG_OPEN_CHEST)),
|
||||
LOCATION(RC_WATER_TEMPLE_MQ_CENTRAL_PILLAR_CHEST, logic->CanUse(RG_HOOKSHOT) && logic->HasItem(RG_OPEN_CHEST)),
|
||||
LOCATION(RC_WATER_TEMPLE_MQ_WONDER_UNDER_PILLAR_ROOM, logic->CanUse(RG_HOOKSHOT)),
|
||||
}, {});
|
||||
|
||||
areaTable[RR_WATER_TEMPLE_MQ_STORAGE_ROOM] = Region("Water Temple MQ Storage Room", SCENE_WATER_TEMPLE, {}, {
|
||||
|
|
@ -944,6 +952,7 @@ void RegionTable_Init_WaterTemple() {
|
|||
LOCATION(RC_WATER_TEMPLE_MQ_GS_STORAGE_ROOM_LOWER_CRATE_5, logic->CanBreakCrates()),
|
||||
LOCATION(RC_WATER_TEMPLE_MQ_GS_STORAGE_ROOM_LOWER_CRATE_6, logic->CanBreakCrates()),
|
||||
LOCATION(RC_WATER_TEMPLE_MQ_GS_STORAGE_ROOM_LOWER_SMALL_CRATE, logic->CanBreakSmallCrates()),
|
||||
LOCATION(RC_WATER_TEMPLE_MQ_WONDER_GS_STORAGE_ROOM, logic->CanUse(RG_HOOKSHOT)),
|
||||
}, {
|
||||
//Exits
|
||||
ENTRANCE(RR_WATER_TEMPLE_MQ_MAIN, true),
|
||||
|
|
@ -978,6 +987,7 @@ void RegionTable_Init_WaterTemple() {
|
|||
LOCATION(RC_WATER_TEMPLE_MQ_LIZALFOS_HALLWAY_ROOM_CRATE_3, logic->CanBreakCrates()),
|
||||
LOCATION(RC_WATER_TEMPLE_MQ_LIZALFOS_HALLWAY_ROOM_CRATE_4, logic->CanBreakCrates()),
|
||||
LOCATION(RC_WATER_TEMPLE_MQ_LIZALFOS_HALLWAY_ROOM_CRATE_5, logic->CanBreakCrates()),
|
||||
LOCATION(RC_WATER_TEMPLE_MQ_WONDER_LIZALFOS_HALLWAY, logic->CanUse(RG_HOOKSHOT)),
|
||||
}, {
|
||||
//Exits
|
||||
ENTRANCE(RR_WATER_TEMPLE_MQ_3F_CENTRAL_A, logic->CanUse(RG_HOOKSHOT)),
|
||||
|
|
@ -1024,13 +1034,29 @@ void RegionTable_Init_WaterTemple() {
|
|||
ENTRANCE(RR_WATER_TEMPLE_MQ_2F_CENTRAL_H, logic->WaterLevel(WL_HIGH) && logic->CanUse(RG_HOOKSHOT) && logic->CanUse(RG_IRON_BOOTS)),
|
||||
});
|
||||
|
||||
areaTable[RR_WATER_TEMPLE_MQ_WATERFALL] = Region("Water Temple Waterfall", SCENE_WATER_TEMPLE, {}, {}, {
|
||||
areaTable[RR_WATER_TEMPLE_MQ_WATERFALL] = Region("Water Temple Waterfall", SCENE_WATER_TEMPLE, {}, {
|
||||
//Locations
|
||||
LOCATION(RC_WATER_TEMPLE_MQ_WONDER_HOOKSHOT_STAIRCASE_RIGHT_1, logic->CanUse(RG_LONGSHOT)),
|
||||
LOCATION(RC_WATER_TEMPLE_MQ_WONDER_HOOKSHOT_STAIRCASE_RIGHT_2, logic->CanUse(RG_LONGSHOT)),
|
||||
LOCATION(RC_WATER_TEMPLE_MQ_WONDER_HOOKSHOT_STAIRCASE_RIGHT_3, logic->CanUse(RG_LONGSHOT)),
|
||||
LOCATION(RC_WATER_TEMPLE_MQ_WONDER_HOOKSHOT_STAIRCASE_LEFT_1, logic->CanUse(RG_LONGSHOT)),
|
||||
LOCATION(RC_WATER_TEMPLE_MQ_WONDER_HOOKSHOT_STAIRCASE_LEFT_2, logic->CanUse(RG_LONGSHOT)),
|
||||
LOCATION(RC_WATER_TEMPLE_MQ_WONDER_HOOKSHOT_STAIRCASE_LEFT_3, logic->CanUse(RG_LONGSHOT)),
|
||||
}, {
|
||||
//Exits
|
||||
ENTRANCE(RR_WATER_TEMPLE_MQ_OUTSIDE_WATERFALL, logic->SmallKeys(SCENE_WATER_TEMPLE, 1)),
|
||||
ENTRANCE(RR_WATER_TEMPLE_MQ_WATERFALL_TOP, logic->CanUse(RG_LONGSHOT)),
|
||||
});
|
||||
|
||||
areaTable[RR_WATER_TEMPLE_MQ_WATERFALL_TOP] = Region("Water Temple Waterfall Top", SCENE_WATER_TEMPLE, {}, {}, {
|
||||
areaTable[RR_WATER_TEMPLE_MQ_WATERFALL_TOP] = Region("Water Temple Waterfall Top", SCENE_WATER_TEMPLE, {}, {
|
||||
//Locations
|
||||
LOCATION(RC_WATER_TEMPLE_MQ_WONDER_HOOKSHOT_STAIRCASE_RIGHT_1, logic->CanUse(RG_HOOKSHOT)),
|
||||
LOCATION(RC_WATER_TEMPLE_MQ_WONDER_HOOKSHOT_STAIRCASE_RIGHT_2, logic->CanUse(RG_HOOKSHOT)),
|
||||
LOCATION(RC_WATER_TEMPLE_MQ_WONDER_HOOKSHOT_STAIRCASE_RIGHT_3, logic->CanUse(RG_HOOKSHOT)),
|
||||
LOCATION(RC_WATER_TEMPLE_MQ_WONDER_HOOKSHOT_STAIRCASE_LEFT_1, logic->CanUse(RG_HOOKSHOT)),
|
||||
LOCATION(RC_WATER_TEMPLE_MQ_WONDER_HOOKSHOT_STAIRCASE_LEFT_2, logic->CanUse(RG_HOOKSHOT)),
|
||||
LOCATION(RC_WATER_TEMPLE_MQ_WONDER_HOOKSHOT_STAIRCASE_LEFT_3, logic->CanUse(RG_HOOKSHOT)),
|
||||
}, {
|
||||
//Exits
|
||||
ENTRANCE(RR_WATER_TEMPLE_MQ_WATERFALL, logic->CanUse(RG_LONGSHOT) && logic->CanHitSwitch(ED_FAR)),
|
||||
ENTRANCE(RR_WATER_TEMPLE_MQ_STALFOS_PIT, true),
|
||||
|
|
@ -1097,8 +1123,9 @@ void RegionTable_Init_WaterTemple() {
|
|||
EVENT_ACCESS(LOGIC_FAIRY_ACCESS, logic->CanBreakPots()),
|
||||
}, {
|
||||
//Locations
|
||||
LOCATION(RC_WATER_TEMPLE_MQ_AFTER_DARK_LINK_POT_1, logic->CanBreakPots()),
|
||||
LOCATION(RC_WATER_TEMPLE_MQ_AFTER_DARK_LINK_POT_2, logic->CanBreakPots()),
|
||||
LOCATION(RC_WATER_TEMPLE_MQ_AFTER_DARK_LINK_POT_1, logic->CanBreakPots()),
|
||||
LOCATION(RC_WATER_TEMPLE_MQ_AFTER_DARK_LINK_POT_2, logic->CanBreakPots()),
|
||||
LOCATION(RC_WATER_TEMPLE_MQ_WONDER_AFTER_DARK_LINK, logic->CanUse(RG_HOOKSHOT)),
|
||||
}, {
|
||||
//Exits
|
||||
ENTRANCE(RR_WATER_TEMPLE_MQ_DARK_LINK_ROOM, true),
|
||||
|
|
@ -1138,6 +1165,8 @@ void RegionTable_Init_WaterTemple() {
|
|||
LOCATION(RC_WATER_TEMPLE_MQ_DRAGON_ROOM_SUBMERGED_CRATE_2, logic->CanBreakCrates()),
|
||||
LOCATION(RC_WATER_TEMPLE_MQ_DRAGON_ROOM_SUBMERGED_CRATE_3, logic->CanBreakCrates()),
|
||||
LOCATION(RC_WATER_TEMPLE_MQ_DRAGON_ROOM_SUBMERGED_CRATE_4, logic->CanBreakCrates()),
|
||||
LOCATION(RC_WATER_TEMPLE_MQ_WONDER_DRAGON_ROOM_LEFT_EYE, logic->CanUse(RG_HOOKSHOT)),
|
||||
LOCATION(RC_WATER_TEMPLE_MQ_WONDER_DRAGON_ROOM_RIGHT_EYE, logic->CanUse(RG_HOOKSHOT)),
|
||||
}, {
|
||||
//Exits
|
||||
ENTRANCE(RR_WATER_TEMPLE_MQ_RIVER_POTS, logic->CanUse(RG_LONGSHOT)),
|
||||
|
|
@ -1155,6 +1184,7 @@ void RegionTable_Init_WaterTemple() {
|
|||
LOCATION(RC_WATER_TEMPLE_MQ_DRAGON_ROOM_TORCHES_SMALL_CRATE_1, logic->CanBreakSmallCrates()),
|
||||
LOCATION(RC_WATER_TEMPLE_MQ_DRAGON_ROOM_TORCHES_SMALL_CRATE_2, logic->CanBreakSmallCrates()),
|
||||
LOCATION(RC_WATER_TEMPLE_MQ_DRAGON_ROOM_TORCHES_SMALL_CRATE_3, logic->CanBreakSmallCrates()),
|
||||
LOCATION(RC_WATER_TEMPLE_MQ_WONDER_DRAGON_ROOM_PORTRAIT, logic->CanUse(RG_HOOKSHOT)),
|
||||
}, {
|
||||
//Exits
|
||||
ENTRANCE(RR_WATER_TEMPLE_MQ_DRAGON_ROOM_TUNNEL, logic->CanUse(RG_IRON_BOOTS) && logic->WaterTimer() >= 16),
|
||||
|
|
@ -1164,8 +1194,10 @@ void RegionTable_Init_WaterTemple() {
|
|||
areaTable[RR_WATER_TEMPLE_MQ_DRAGON_ROOM_DOOR] = Region("Water Temple MQ Dragon Room Door", SCENE_WATER_TEMPLE, {},
|
||||
{
|
||||
//Locations
|
||||
LOCATION(RC_WATER_TEMPLE_MQ_DRAGON_ROOM_DOOR_CRATE_1, logic->CanBreakCrates()),
|
||||
LOCATION(RC_WATER_TEMPLE_MQ_DRAGON_ROOM_DOOR_CRATE_2, logic->CanBreakCrates()),
|
||||
LOCATION(RC_WATER_TEMPLE_MQ_DRAGON_ROOM_DOOR_CRATE_1, logic->CanBreakCrates()),
|
||||
LOCATION(RC_WATER_TEMPLE_MQ_DRAGON_ROOM_DOOR_CRATE_2, logic->CanBreakCrates()),
|
||||
LOCATION(RC_WATER_TEMPLE_MQ_WONDER_DRAGON_ROOM_LEFT_EYE, logic->CanUse(RG_HOOKSHOT) && logic->WaterTimer() >= 8),
|
||||
LOCATION(RC_WATER_TEMPLE_MQ_WONDER_DRAGON_ROOM_RIGHT_EYE, logic->CanUse(RG_HOOKSHOT) && logic->WaterTimer() >= 8),
|
||||
}, {
|
||||
//Exits
|
||||
ENTRANCE(RR_WATER_TEMPLE_MQ_RIVER_POTS, logic->CanUse(RG_LONGSHOT)),
|
||||
|
|
@ -1261,6 +1293,8 @@ void RegionTable_Init_WaterTemple() {
|
|||
LOCATION(RC_WATER_TEMPLE_MQ_TRIPLE_TORCH_ROOM_GATE_CRATE_3, logic->CanBreakCrates()),
|
||||
LOCATION(RC_WATER_TEMPLE_MQ_TRIPLE_TORCH_ROOM_GATE_CRATE_1, logic->CanBreakCrates()),
|
||||
LOCATION(RC_WATER_TEMPLE_MQ_TRIPLE_TORCH_ROOM_GATE_CRATE_2, logic->CanBreakCrates()),
|
||||
// A vanilla bug causes a glitched damage value on hardware and undefined behavior in SOH. Matching the resulting damage triggers with an additional array entry.
|
||||
LOCATION(RC_WATER_TEMPLE_MQ_WONDER_TRIPLE_TORCHES, logic->CanUse(RG_HOOKSHOT) || logic->CanUse(RG_FAIRY_BOW)),
|
||||
}, {});
|
||||
|
||||
areaTable[RR_WATER_TEMPLE_MQ_SPIKE_MOAT] = Region("Water Temple MQ Spike Moat", SCENE_WATER_TEMPLE, {}, {}, {
|
||||
|
|
@ -1309,9 +1343,9 @@ void RegionTable_Init_WaterTemple() {
|
|||
|
||||
areaTable[RR_WATER_TEMPLE_MQ_CANAL_ALCOVE] = Region("Water Temple MQ Canal Alcove", SCENE_WATER_TEMPLE, {}, {}, {
|
||||
//Exits
|
||||
ENTRANCE(RR_WATER_TEMPLE_MQ_3_JETS_ROOM, logic->SmallKeys(SCENE_WATER_TEMPLE, 2)),
|
||||
ENTRANCE(RR_WATER_TEMPLE_MQ_SCARECROW_CANAL, logic->IsAdult || logic->HasItem(RG_BRONZE_SCALE) || (logic->CanUse(RG_IRON_BOOTS) && logic->WaterTimer() >= 8)),
|
||||
ENTRANCE(RR_WATER_TEMPLE_MQ_BEHIND_CANAL, logic->IsAdult && ctx->GetTrickOption(RT_UNINTUITIVE_JUMPS) && logic->HasItem(RG_BRONZE_SCALE)),
|
||||
ENTRANCE(RR_WATER_TEMPLE_MQ_3_JETS_ROOM_SWITCH_SIDE, logic->SmallKeys(SCENE_WATER_TEMPLE, 2)),
|
||||
ENTRANCE(RR_WATER_TEMPLE_MQ_SCARECROW_CANAL, logic->IsAdult || logic->HasItem(RG_BRONZE_SCALE) || (logic->CanUse(RG_IRON_BOOTS) && logic->WaterTimer() >= 8)),
|
||||
ENTRANCE(RR_WATER_TEMPLE_MQ_BEHIND_CANAL, logic->IsAdult && ctx->GetTrickOption(RT_UNINTUITIVE_JUMPS) && logic->HasItem(RG_BRONZE_SCALE)),
|
||||
});
|
||||
|
||||
areaTable[RR_WATER_TEMPLE_MQ_BEHIND_CANAL] = Region("Water Temple MQ Behind Canal", SCENE_WATER_TEMPLE, {}, {}, {
|
||||
|
|
@ -1322,23 +1356,38 @@ void RegionTable_Init_WaterTemple() {
|
|||
|
||||
areaTable[RR_WATER_TEMPLE_MQ_FREESTANDING_ROOM] = Region("Water Temple MQ Freestanding Room", SCENE_WATER_TEMPLE, {}, {
|
||||
//Locations
|
||||
LOCATION(RC_WATER_TEMPLE_MQ_FREESTANDING_KEY, logic->CanBreakCrates()),
|
||||
LOCATION(RC_WATER_TEMPLE_MQ_STORAGE_ROOM_B_POT_1, logic->CanBreakPots()),
|
||||
LOCATION(RC_WATER_TEMPLE_MQ_STORAGE_ROOM_B_POT_2, logic->CanBreakPots()),
|
||||
LOCATION(RC_WATER_TEMPLE_MQ_STORAGE_ROOM_B_CRATE_1, logic->CanBreakCrates()),
|
||||
LOCATION(RC_WATER_TEMPLE_MQ_STORAGE_ROOM_B_CRATE_2, logic->CanBreakCrates()),
|
||||
LOCATION(RC_WATER_TEMPLE_MQ_STORAGE_ROOM_B_CRATE_3, logic->CanBreakCrates()),
|
||||
LOCATION(RC_WATER_TEMPLE_MQ_STORAGE_ROOM_B_CRATE_4, logic->CanBreakCrates()),
|
||||
LOCATION(RC_WATER_TEMPLE_MQ_STORAGE_ROOM_B_CRATE_5, logic->CanBreakCrates()),
|
||||
LOCATION(RC_WATER_TEMPLE_MQ_FREESTANDING_KEY, logic->CanBreakCrates()),
|
||||
LOCATION(RC_WATER_TEMPLE_MQ_STORAGE_ROOM_B_POT_1, logic->CanBreakPots()),
|
||||
LOCATION(RC_WATER_TEMPLE_MQ_STORAGE_ROOM_B_POT_2, logic->CanBreakPots()),
|
||||
LOCATION(RC_WATER_TEMPLE_MQ_STORAGE_ROOM_B_CRATE_1, logic->CanBreakCrates()),
|
||||
LOCATION(RC_WATER_TEMPLE_MQ_STORAGE_ROOM_B_CRATE_2, logic->CanBreakCrates()),
|
||||
LOCATION(RC_WATER_TEMPLE_MQ_STORAGE_ROOM_B_CRATE_3, logic->CanBreakCrates()),
|
||||
LOCATION(RC_WATER_TEMPLE_MQ_STORAGE_ROOM_B_CRATE_4, logic->CanBreakCrates()),
|
||||
LOCATION(RC_WATER_TEMPLE_MQ_STORAGE_ROOM_B_CRATE_5, logic->CanBreakCrates()),
|
||||
LOCATION(RC_WATER_TEMPLE_MQ_WONDER_FREESTANDING_ROOM, logic->CanUse(RG_HOOKSHOT)),
|
||||
}, {
|
||||
//Exits
|
||||
ENTRANCE(RR_WATER_TEMPLE_MQ_BEHIND_CANAL, AnyAgeTime([]{return logic->CanKillEnemy(RE_STALFOS);})),
|
||||
});
|
||||
|
||||
areaTable[RR_WATER_TEMPLE_MQ_3_JETS_ROOM] = Region("Water Temple MQ 3 Jets Room", SCENE_WATER_TEMPLE, {}, {}, {
|
||||
areaTable[RR_WATER_TEMPLE_MQ_3_JETS_ROOM_SWITCH_SIDE] = Region("Water Temple MQ 3 Jets Room Switch Side", SCENE_WATER_TEMPLE, {}, {
|
||||
//Locations
|
||||
LOCATION(RC_WATER_TEMPLE_MQ_WONDER_WATER_SPROUTS_1, true),
|
||||
LOCATION(RC_WATER_TEMPLE_MQ_WONDER_WATER_SPROUTS_2, logic->CanHitSwitch()),
|
||||
}, {
|
||||
//Exits
|
||||
ENTRANCE(RR_WATER_TEMPLE_MQ_CANAL_ALCOVE, logic->SmallKeys(SCENE_WATER_TEMPLE, 2) && logic->CanHitSwitch(ED_BOOMERANG)),
|
||||
ENTRANCE(RR_WATER_TEMPLE_MQ_DODONGO_ROOM, logic->CanHitSwitch() && logic->HasFireSource()),
|
||||
ENTRANCE(RR_WATER_TEMPLE_MQ_CANAL_ALCOVE, logic->SmallKeys(SCENE_WATER_TEMPLE, 2)),
|
||||
ENTRANCE(RR_WATER_TEMPLE_MQ_3_JETS_ROOM_NO_SWITCH_SIDE, logic->CanHitSwitch()),
|
||||
// No Switch Side requires CanHitSwitch(ED_BOOMERANG) to get to this entrance. This is covered by No Switch -> Switch entrance.
|
||||
ENTRANCE(RR_WATER_TEMPLE_MQ_DODONGO_ROOM, logic->CanHitSwitch(ED_BOOMERANG) && logic->HasFireSource()),
|
||||
});
|
||||
|
||||
areaTable[RR_WATER_TEMPLE_MQ_3_JETS_ROOM_NO_SWITCH_SIDE] = Region("Water Temple MQ 3 Jets Room No Switch Side", SCENE_WATER_TEMPLE, {}, {
|
||||
//Locations
|
||||
LOCATION(RC_WATER_TEMPLE_MQ_WONDER_WATER_SPROUTS_2, logic->IsAdult),
|
||||
}, {
|
||||
//Exits
|
||||
ENTRANCE(RR_WATER_TEMPLE_MQ_3_JETS_ROOM_SWITCH_SIDE, logic->CanHitSwitch(ED_BOOMERANG) || (ctx->GetTrickOption(RT_HOVER_BOOST_SIMPLE) && logic->CanHammerRecoilHover())),
|
||||
});
|
||||
|
||||
areaTable[RR_WATER_TEMPLE_MQ_DODONGO_ROOM] = Region("Water Temple MQ Dodongo Room", SCENE_WATER_TEMPLE, {}, {
|
||||
|
|
@ -1352,8 +1401,8 @@ void RegionTable_Init_WaterTemple() {
|
|||
LOCATION(RC_WATER_TEMPLE_MQ_DODONGO_ROOM_LOWER_CRATE_3, logic->CanBreakCrates()),
|
||||
}, {
|
||||
//Exits
|
||||
ENTRANCE(RR_WATER_TEMPLE_MQ_3_JETS_ROOM, (logic->CanUse(RG_HOOKSHOT) || logic->CanUse(RG_HOVER_BOOTS)) && AnyAgeTime([]{return logic->CanKillEnemy(RE_DODONGO, ED_CLOSE, true, 5);})),
|
||||
ENTRANCE(RR_WATER_TEMPLE_MQ_CRATE_VORTEX_CAGE, (logic->CanUse(RG_HOOKSHOT) || logic->CanUse(RG_HOVER_BOOTS)) && AnyAgeTime([]{return logic->CanKillEnemy(RE_DODONGO, ED_CLOSE, true, 5);})),
|
||||
ENTRANCE(RR_WATER_TEMPLE_MQ_3_JETS_ROOM_NO_SWITCH_SIDE, (logic->CanUse(RG_HOOKSHOT) || logic->CanUse(RG_HOVER_BOOTS)) && AnyAgeTime([]{return logic->CanKillEnemy(RE_DODONGO, ED_CLOSE, true, 5);})),
|
||||
ENTRANCE(RR_WATER_TEMPLE_MQ_CRATE_VORTEX_CAGE, (logic->CanUse(RG_HOOKSHOT) || logic->CanUse(RG_HOVER_BOOTS)) && AnyAgeTime([]{return logic->CanKillEnemy(RE_DODONGO, ED_CLOSE, true, 5);})),
|
||||
});
|
||||
|
||||
areaTable[RR_WATER_TEMPLE_MQ_CRATE_VORTEX_CAGE] = Region("Water Temple MQ Crate Vortex Cage", SCENE_WATER_TEMPLE, {}, {
|
||||
|
|
|
|||
|
|
@ -93,9 +93,21 @@ void RegionTable_Init_CastleGrounds() {
|
|||
|
||||
areaTable[RR_HC_MOAT] = Region("Hyrule Castle Grounds", SCENE_HYRULE_CASTLE, {}, {
|
||||
//Locations
|
||||
LOCATION(RC_HC_GRASS_1, logic->CanCutShrubs()),
|
||||
LOCATION(RC_HC_GRASS_2, logic->CanCutShrubs()),
|
||||
LOCATION(RC_HC_GROTTO_TREE, logic->CanBonkTrees()),
|
||||
LOCATION(RC_HC_GRASS_1, logic->CanCutShrubs()),
|
||||
LOCATION(RC_HC_GRASS_2, logic->CanCutShrubs()),
|
||||
LOCATION(RC_HC_GROTTO_TREE, logic->CanBonkTrees()),
|
||||
LOCATION(RC_HC_WONDER_LEFT_TORCH, logic->CanUse(RG_FAIRY_SLINGSHOT) && (logic->HasItem(RG_BRONZE_SCALE) || logic->CanUse(RG_BOOMERANG))),
|
||||
LOCATION(RC_HC_WONDER_RIGHT_TORCH, logic->CanUse(RG_FAIRY_SLINGSHOT) && (logic->HasItem(RG_BRONZE_SCALE) || logic->CanUse(RG_BOOMERANG))),
|
||||
LOCATION(RC_HC_WONDER_MOAT_1, logic->HasItem(RG_BRONZE_SCALE) || logic->CanUse(RG_IRON_BOOTS)), // RANDOTODO: Add trick for swimless
|
||||
LOCATION(RC_HC_WONDER_MOAT_2, logic->HasItem(RG_BRONZE_SCALE) || logic->CanUse(RG_IRON_BOOTS)), // Requires backflip with Iron Boots
|
||||
LOCATION(RC_HC_WONDER_MOAT_3, logic->HasItem(RG_BRONZE_SCALE) || logic->CanUse(RG_IRON_BOOTS)), // Requires backflip with Iron Boots
|
||||
LOCATION(RC_HC_WONDER_MOAT_4, logic->HasItem(RG_BRONZE_SCALE) || logic->CanUse(RG_IRON_BOOTS)),
|
||||
LOCATION(RC_HC_WONDER_MOAT_5, logic->HasItem(RG_BRONZE_SCALE) || logic->CanUse(RG_IRON_BOOTS)), // Requires backflip with Iron Boots
|
||||
LOCATION(RC_HC_WONDER_MOAT_6, logic->HasItem(RG_BRONZE_SCALE) || logic->CanUse(RG_IRON_BOOTS)), // Requires backflip with Iron Boots
|
||||
LOCATION(RC_HC_WONDER_MOAT_7, logic->HasItem(RG_BRONZE_SCALE) || logic->CanUse(RG_IRON_BOOTS)), // Requires backflip with Iron Boots
|
||||
LOCATION(RC_HC_WONDER_MOAT_8, logic->HasItem(RG_BRONZE_SCALE) || logic->CanUse(RG_IRON_BOOTS)), // Requires backflip with Iron Boots
|
||||
LOCATION(RC_HC_WONDER_MOAT_9, logic->HasItem(RG_BRONZE_SCALE) || logic->CanUse(RG_IRON_BOOTS)), // Requires backflip with Iron Boots
|
||||
LOCATION(RC_HC_WONDER_MOAT_10, logic->HasItem(RG_BRONZE_SCALE) || logic->CanUse(RG_IRON_BOOTS)), // Requires backflip with Iron Boots
|
||||
}, {
|
||||
//Exits
|
||||
ENTRANCE(RR_HC_GATE, true),
|
||||
|
|
@ -112,8 +124,10 @@ void RegionTable_Init_CastleGrounds() {
|
|||
|
||||
areaTable[RR_HC_GARDEN] = Region("HC Garden", SCENE_CASTLE_COURTYARD_ZELDA, {}, {
|
||||
//Locations
|
||||
LOCATION(RC_HC_ZELDAS_LETTER, logic->HasItem(RG_SPEAK_HYLIAN)),
|
||||
LOCATION(RC_SONG_FROM_IMPA, logic->HasItem(RG_SPEAK_HYLIAN)),
|
||||
LOCATION(RC_HC_ZELDAS_LETTER, logic->HasItem(RG_SPEAK_HYLIAN)),
|
||||
LOCATION(RC_SONG_FROM_IMPA, logic->HasItem(RG_SPEAK_HYLIAN)),
|
||||
LOCATION(RC_HC_WONDER_COURTYARD_RIGHT_WINDOW, logic->CanUse(RG_FAIRY_SLINGSHOT)),
|
||||
LOCATION(RC_HC_WONDER_COURTYARD_LEFT_WINDOW, logic->CanUse(RG_FAIRY_SLINGSHOT)),
|
||||
}, {
|
||||
//Exits
|
||||
ENTRANCE(RR_HC_DRAIN_LEDGE, true), // if this ever gets shuffled leaving garden area should come out crawlspace
|
||||
|
|
|
|||
|
|
@ -303,19 +303,22 @@ void RegionTable_Init_DeathMountainCrater() {
|
|||
EVENT_ACCESS(LOGIC_FAIRY_ACCESS, logic->IsChild && logic->CanUse(RG_MAGIC_BEAN) && logic->HasItem(RG_DEATH_MOUNTAIN_CRATER_BEAN_SOUL) && logic->CanUse(RG_SONG_OF_STORMS)),
|
||||
}, {
|
||||
//Locations
|
||||
LOCATION(RC_SHEIK_IN_CRATER, logic->IsAdult),
|
||||
LOCATION(RC_DMC_GS_BEAN_PATCH, logic->CanSpawnSoilSkull(RG_DEATH_MOUNTAIN_CRATER_BEAN_SOUL) && logic->CanKillEnemy(RE_GOLD_SKULLTULA)),
|
||||
LOCATION(RC_DMC_NEAR_PLATFORM_RED_RUPEE, logic->IsChild),
|
||||
LOCATION(RC_DMC_MIDDLE_PLATFORM_RED_RUPEE, logic->IsChild),
|
||||
LOCATION(RC_DMC_MIDDLE_PLATFORM_BLUE_RUPEE_1, logic->IsChild),
|
||||
LOCATION(RC_DMC_MIDDLE_PLATFORM_BLUE_RUPEE_2, logic->IsChild),
|
||||
LOCATION(RC_DMC_MIDDLE_PLATFORM_BLUE_RUPEE_3, logic->IsChild),
|
||||
LOCATION(RC_DMC_MIDDLE_PLATFORM_BLUE_RUPEE_4, logic->IsChild),
|
||||
LOCATION(RC_DMC_MIDDLE_PLATFORM_BLUE_RUPEE_5, logic->IsChild),
|
||||
LOCATION(RC_DMC_MIDDLE_PLATFORM_BLUE_RUPEE_6, logic->IsChild),
|
||||
LOCATION(RC_DMC_BEAN_SPROUT_FAIRY_1, logic->IsChild && logic->CanUse(RG_MAGIC_BEAN) && logic->HasItem(RG_DEATH_MOUNTAIN_CRATER_BEAN_SOUL) && logic->CanUse(RG_SONG_OF_STORMS)),
|
||||
LOCATION(RC_DMC_BEAN_SPROUT_FAIRY_2, logic->IsChild && logic->CanUse(RG_MAGIC_BEAN) && logic->HasItem(RG_DEATH_MOUNTAIN_CRATER_BEAN_SOUL) && logic->CanUse(RG_SONG_OF_STORMS)),
|
||||
LOCATION(RC_DMC_BEAN_SPROUT_FAIRY_3, logic->IsChild && logic->CanUse(RG_MAGIC_BEAN) && logic->HasItem(RG_DEATH_MOUNTAIN_CRATER_BEAN_SOUL) && logic->CanUse(RG_SONG_OF_STORMS)),
|
||||
LOCATION(RC_SHEIK_IN_CRATER, logic->IsAdult),
|
||||
LOCATION(RC_DMC_GS_BEAN_PATCH, logic->CanSpawnSoilSkull(RG_DEATH_MOUNTAIN_CRATER_BEAN_SOUL) && logic->CanKillEnemy(RE_GOLD_SKULLTULA)),
|
||||
LOCATION(RC_DMC_NEAR_PLATFORM_RED_RUPEE, logic->IsChild),
|
||||
LOCATION(RC_DMC_MIDDLE_PLATFORM_RED_RUPEE, logic->IsChild),
|
||||
LOCATION(RC_DMC_MIDDLE_PLATFORM_BLUE_RUPEE_1, logic->IsChild),
|
||||
LOCATION(RC_DMC_MIDDLE_PLATFORM_BLUE_RUPEE_2, logic->IsChild),
|
||||
LOCATION(RC_DMC_MIDDLE_PLATFORM_BLUE_RUPEE_3, logic->IsChild),
|
||||
LOCATION(RC_DMC_MIDDLE_PLATFORM_BLUE_RUPEE_4, logic->IsChild),
|
||||
LOCATION(RC_DMC_MIDDLE_PLATFORM_BLUE_RUPEE_5, logic->IsChild),
|
||||
LOCATION(RC_DMC_MIDDLE_PLATFORM_BLUE_RUPEE_6, logic->IsChild),
|
||||
LOCATION(RC_DMC_BEAN_SPROUT_FAIRY_1, logic->IsChild && logic->CanUse(RG_MAGIC_BEAN) && logic->HasItem(RG_DEATH_MOUNTAIN_CRATER_BEAN_SOUL) && logic->CanUse(RG_SONG_OF_STORMS)),
|
||||
LOCATION(RC_DMC_BEAN_SPROUT_FAIRY_2, logic->IsChild && logic->CanUse(RG_MAGIC_BEAN) && logic->HasItem(RG_DEATH_MOUNTAIN_CRATER_BEAN_SOUL) && logic->CanUse(RG_SONG_OF_STORMS)),
|
||||
LOCATION(RC_DMC_BEAN_SPROUT_FAIRY_3, logic->IsChild && logic->CanUse(RG_MAGIC_BEAN) && logic->HasItem(RG_DEATH_MOUNTAIN_CRATER_BEAN_SOUL) && logic->CanUse(RG_SONG_OF_STORMS)),
|
||||
// RANDOTODO: A number of tricks to reach this: sidehop jumpslash or hookshot + jumpslash from bridge platform, chu+shield damage boost
|
||||
LOCATION(RC_DMC_WONDER_BENEATH_BRIDGE_PLATFORM, logic->IsAdult && (logic->CanUse(RG_LONGSHOT) || logic->CanUse(RG_HOVER_BOOTS))),
|
||||
|
||||
}, {});
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -10,16 +10,21 @@ void RegionTable_Init_DesertColossus() {
|
|||
EVENT_ACCESS(LOGIC_BUG_ACCESS, logic->HasItem(RG_POWER_BRACELET)),
|
||||
}, {
|
||||
//Locations
|
||||
LOCATION(RC_COLOSSUS_FREESTANDING_POH, logic->IsAdult && CanPlantBean(RR_DESERT_COLOSSUS, RG_DESERT_COLOSSUS_BEAN_SOUL)),
|
||||
LOCATION(RC_COLOSSUS_GS_BEAN_PATCH, logic->CanSpawnSoilSkull(RG_DESERT_COLOSSUS_BEAN_SOUL) && logic->CanAttack()),
|
||||
LOCATION(RC_COLOSSUS_GS_TREE, logic->IsAdult && logic->HookshotOrBoomerang() && logic->CanGetNightTimeGS()),
|
||||
LOCATION(RC_COLOSSUS_GS_HILL, logic->IsAdult && ((CanPlantBean(RR_DESERT_COLOSSUS, RG_DESERT_COLOSSUS_BEAN_SOUL) && logic->CanAttack()) || logic->CanUse(RG_LONGSHOT) || (ctx->GetTrickOption(RT_COLOSSUS_GS) && logic->CanUse(RG_HOOKSHOT))) && logic->CanGetNightTimeGS()),
|
||||
LOCATION(RC_COLOSSUS_BEAN_SPROUT_FAIRY_1, logic->IsChild && logic->CanUse(RG_MAGIC_BEAN) && logic->HasItem(RG_DESERT_COLOSSUS_BEAN_SOUL) && logic->CanUse(RG_SONG_OF_STORMS)),
|
||||
LOCATION(RC_COLOSSUS_BEAN_SPROUT_FAIRY_2, logic->IsChild && logic->CanUse(RG_MAGIC_BEAN) && logic->HasItem(RG_DESERT_COLOSSUS_BEAN_SOUL) && logic->CanUse(RG_SONG_OF_STORMS)),
|
||||
LOCATION(RC_COLOSSUS_BEAN_SPROUT_FAIRY_3, logic->IsChild && logic->CanUse(RG_MAGIC_BEAN) && logic->HasItem(RG_DESERT_COLOSSUS_BEAN_SOUL) && logic->CanUse(RG_SONG_OF_STORMS)),
|
||||
LOCATION(RC_COLOSSUS_GOSSIP_STONE_FAIRY, logic->CallGossipFairy()),
|
||||
LOCATION(RC_COLOSSUS_GOSSIP_STONE_FAIRY_BIG, logic->CanUse(RG_SONG_OF_STORMS)),
|
||||
LOCATION(RC_COLOSSUS_GOSSIP_STONE, true),
|
||||
LOCATION(RC_COLOSSUS_FREESTANDING_POH, logic->IsAdult && CanPlantBean(RR_DESERT_COLOSSUS, RG_DESERT_COLOSSUS_BEAN_SOUL)),
|
||||
LOCATION(RC_COLOSSUS_GS_BEAN_PATCH, logic->CanSpawnSoilSkull(RG_DESERT_COLOSSUS_BEAN_SOUL) && logic->CanAttack()),
|
||||
LOCATION(RC_COLOSSUS_GS_TREE, logic->IsAdult && logic->HookshotOrBoomerang() && logic->CanGetNightTimeGS()),
|
||||
LOCATION(RC_COLOSSUS_GS_HILL, logic->IsAdult && ((CanPlantBean(RR_DESERT_COLOSSUS, RG_DESERT_COLOSSUS_BEAN_SOUL) && logic->CanAttack()) || logic->CanUse(RG_LONGSHOT) || (ctx->GetTrickOption(RT_COLOSSUS_GS) && logic->CanUse(RG_HOOKSHOT))) && logic->CanGetNightTimeGS()),
|
||||
LOCATION(RC_COLOSSUS_BEAN_SPROUT_FAIRY_1, logic->IsChild && logic->CanUse(RG_MAGIC_BEAN) && logic->HasItem(RG_DESERT_COLOSSUS_BEAN_SOUL) && logic->CanUse(RG_SONG_OF_STORMS)),
|
||||
LOCATION(RC_COLOSSUS_BEAN_SPROUT_FAIRY_2, logic->IsChild && logic->CanUse(RG_MAGIC_BEAN) && logic->HasItem(RG_DESERT_COLOSSUS_BEAN_SOUL) && logic->CanUse(RG_SONG_OF_STORMS)),
|
||||
LOCATION(RC_COLOSSUS_BEAN_SPROUT_FAIRY_3, logic->IsChild && logic->CanUse(RG_MAGIC_BEAN) && logic->HasItem(RG_DESERT_COLOSSUS_BEAN_SOUL) && logic->CanUse(RG_SONG_OF_STORMS)),
|
||||
LOCATION(RC_COLOSSUS_GOSSIP_STONE_FAIRY, logic->CallGossipFairy()),
|
||||
LOCATION(RC_COLOSSUS_GOSSIP_STONE_FAIRY_BIG, logic->CanUse(RG_SONG_OF_STORMS)),
|
||||
LOCATION(RC_COLOSSUS_GOSSIP_STONE, true),
|
||||
LOCATION(RC_COLOSSUS_WONDER_OASIS_TREE_1, (logic->IsAdult && logic->CanUse(RG_FAIRY_BOW)) || (logic->IsChild && logic->CanUse(RG_FAIRY_SLINGSHOT))),
|
||||
LOCATION(RC_COLOSSUS_WONDER_OASIS_TREE_2, (logic->IsAdult && logic->CanUse(RG_FAIRY_BOW)) || (logic->IsChild && logic->CanUse(RG_FAIRY_SLINGSHOT))),
|
||||
LOCATION(RC_COLOSSUS_WONDER_OASIS_CHILD_TREE, logic->IsChild && logic->CanUse(RG_FAIRY_SLINGSHOT)),
|
||||
LOCATION(RC_COLOSSUS_WONDER_GF_TREE_1, (logic->IsAdult && logic->CanUse(RG_FAIRY_BOW)) || (logic->IsChild && logic->CanUse(RG_FAIRY_SLINGSHOT))),
|
||||
LOCATION(RC_COLOSSUS_WONDER_GF_TREE_2, (logic->IsAdult && logic->CanUse(RG_FAIRY_BOW)) || (logic->IsChild && logic->CanUse(RG_FAIRY_SLINGSHOT))),
|
||||
}, {
|
||||
//Exits
|
||||
//You can kinda get the fairies without entering the water, but it relies on them cooperating and leevers are jerks. should be a trick
|
||||
|
|
|
|||
|
|
@ -12,6 +12,7 @@ void RegionTable_Init_GerudoFortress() {
|
|||
LOCATION(RC_GF_OUTSKIRTS_NE_CRATE, (logic->IsChild || logic->CanPassEnemy(RE_GERUDO_GUARD)) && logic->CanBreakCrates()),
|
||||
LOCATION(RC_GF_OUTSKIRTS_NW_CRATE, (logic->IsChild || logic->CanPassEnemy(RE_GERUDO_GUARD)) && logic->CanBreakCrates()),
|
||||
LOCATION(RC_GF_EAST_EXIT_ARROW_SIGN, logic->CanRead()),
|
||||
LOCATION(RC_GF_WONDER_ENTRANCE_SIGN, logic->CanUse(RG_HOOKSHOT)),
|
||||
}, {
|
||||
//Exits
|
||||
ENTRANCE(RR_GV_FORTRESS_SIDE, true),
|
||||
|
|
@ -207,13 +208,13 @@ void RegionTable_Init_GerudoFortress() {
|
|||
//there's a trick to reach RR_GF_LONG_ROOF
|
||||
//For some reason, you take fall damage if you backflip onto the fortress but not onto the sand
|
||||
//It's unintuitive to avoid being caught on landing, but that sends you to the same place anyway...
|
||||
ENTRANCE(RR_GF_OUTSKIRTS, true),
|
||||
ENTRANCE(RR_GF_NEAR_CHEST, logic->CanUse(RG_LONGSHOT)),
|
||||
ENTRANCE(RR_GF_BELOW_CHEST, logic->TakeDamage()),
|
||||
ENTRANCE(RR_GF_JAIL_WINDOW, logic->CanUse(RG_HOOKSHOT)),
|
||||
ENTRANCE(RR_TH_BREAK_ROOM_CORRIDOR, true),
|
||||
ENTRANCE(RR_GF_TOWER, ctx->GetTrickOption(RT_GF_ADULT_SKIP_WASTELAND_GATE) && logic->IsAdult && logic->CanUse(RG_HOVER_BOOTS) && logic->CanJumpslash() && logic->HasItem(RG_GERUDO_MEMBERSHIP_CARD)),
|
||||
ENTRANCE(RR_GF_OUTSIDE_GATE, ctx->GetTrickOption(RT_GF_ADULT_SKIP_WASTELAND_GATE) && logic->IsAdult && logic->CanUse(RG_HOVER_BOOTS) && logic->CanJumpslash()),
|
||||
ENTRANCE(RR_GF_OUTSKIRTS, ctx->GetTrickOption(RT_UNINTUITIVE_JUMPS) || logic->TakeDamage()),
|
||||
ENTRANCE(RR_GF_NEAR_CHEST, logic->CanUse(RG_LONGSHOT)),
|
||||
ENTRANCE(RR_GF_BELOW_CHEST, logic->TakeDamage()),
|
||||
ENTRANCE(RR_GF_JAIL_WINDOW, logic->CanUse(RG_HOOKSHOT)),
|
||||
ENTRANCE(RR_TH_BREAK_ROOM_UPPER_CORRIDOR, true),
|
||||
ENTRANCE(RR_GF_TOWER, ctx->GetTrickOption(RT_GF_ADULT_SKIP_WASTELAND_GATE) && logic->IsAdult && logic->CanUse(RG_HOVER_BOOTS) && logic->CanJumpslash() && logic->HasItem(RG_GERUDO_MEMBERSHIP_CARD)),
|
||||
ENTRANCE(RR_GF_OUTSIDE_GATE, ctx->GetTrickOption(RT_GF_ADULT_SKIP_WASTELAND_GATE) && logic->IsAdult && logic->CanUse(RG_HOVER_BOOTS) && logic->CanJumpslash()),
|
||||
});
|
||||
|
||||
areaTable[RR_GF_JAIL_WINDOW] = Region("GF Jail Window", SCENE_GERUDOS_FORTRESS, {}, {}, {
|
||||
|
|
@ -245,6 +246,7 @@ void RegionTable_Init_GerudoFortress() {
|
|||
LOCATION(RC_GF_SOUTH_TARGET_EAST_CRATE, logic->CanBreakCrates()),
|
||||
LOCATION(RC_GF_SOUTH_TARGET_WEST_CRATE, logic->CanBreakCrates()),
|
||||
LOCATION(RC_GF_HBA_RECTANGLE_SIGN, logic->IsAdult && logic->CanRead()),
|
||||
LOCATION(RC_GF_WONDER_ARCHERY_SIGN, logic->CanUse(RG_HOOKSHOT)),
|
||||
}, {
|
||||
//Exits
|
||||
ENTRANCE(RR_GF_OUTSIDE_GTG, logic->IsChild || logic->HasItem(RG_GERUDO_MEMBERSHIP_CARD)),
|
||||
|
|
|
|||
|
|
@ -40,6 +40,8 @@ void RegionTable_Init_GerudoValley() {
|
|||
LOCATION(RC_GV_GOSSIP_STONE_FAIRY_BIG, logic->CanUse(RG_SONG_OF_STORMS)),
|
||||
LOCATION(RC_GV_GOSSIP_STONE, true),
|
||||
LOCATION(RC_GV_NEAR_COW_CRATE, logic->IsChild && logic->CanBreakCrates()),
|
||||
LOCATION(RC_GV_WONDER_LOWER_WATERFALL, logic->IsAdult),
|
||||
LOCATION(RC_GV_WONDER_UPPER_WATERFALL, logic->IsAdult && CanPlantBean(RR_GV_UPPER_STREAM, RG_GERUDO_VALLEY_BEAN_SOUL)),
|
||||
}, {
|
||||
//Exits
|
||||
ENTRANCE(RR_GV_UPPER_STREAM_WATER, true),
|
||||
|
|
@ -62,6 +64,7 @@ void RegionTable_Init_GerudoValley() {
|
|||
areaTable[RR_GV_WATERFALL_ALCOVE] = Region("GV Waterfall Alcove", SCENE_GERUDO_VALLEY, {}, {
|
||||
//Locations
|
||||
LOCATION(RC_GV_WATERFALL_FREESTANDING_POH, true),
|
||||
LOCATION(RC_GV_WONDER_UPPER_WATERFALL, logic->IsAdult),
|
||||
}, {
|
||||
//Exits
|
||||
ENTRANCE(RR_GV_UPPER_STREAM, logic->IsAdult && logic->CanUse(RG_HOVER_BOOTS)),
|
||||
|
|
|
|||
|
|
@ -112,6 +112,21 @@ void RegionTable_Init_Graveyard() {
|
|||
LOCATION(RC_GRAVEYARD_DAMPE_RACE_RUPEE_6, true),
|
||||
LOCATION(RC_GRAVEYARD_DAMPE_RACE_RUPEE_7, true),
|
||||
LOCATION(RC_GRAVEYARD_DAMPE_RACE_RUPEE_8, true),
|
||||
LOCATION(RC_GY_WONDER_DAMPE_RACE_1, true),
|
||||
LOCATION(RC_GY_WONDER_DAMPE_RACE_2, true),
|
||||
LOCATION(RC_GY_WONDER_DAMPE_RACE_3, true),
|
||||
LOCATION(RC_GY_WONDER_DAMPE_RACE_4, true),
|
||||
LOCATION(RC_GY_WONDER_DAMPE_RACE_5, true),
|
||||
LOCATION(RC_GY_WONDER_DAMPE_RACE_6, true),
|
||||
LOCATION(RC_GY_WONDER_DAMPE_RACE_7, true),
|
||||
LOCATION(RC_GY_WONDER_DAMPE_RACE_8, true),
|
||||
LOCATION(RC_GY_WONDER_DAMPE_RACE_9, true),
|
||||
LOCATION(RC_GY_WONDER_DAMPE_RACE_10, true),
|
||||
LOCATION(RC_GY_WONDER_DAMPE_RACE_11, true),
|
||||
LOCATION(RC_GY_WONDER_DAMPE_RACE_12, true),
|
||||
LOCATION(RC_GY_WONDER_DAMPE_RACE_13, true),
|
||||
LOCATION(RC_GY_WONDER_DAMPE_RACE_14, true),
|
||||
LOCATION(RC_GY_WONDER_DAMPE_RACE_15, true),
|
||||
}, {
|
||||
//Exits
|
||||
ENTRANCE(RR_THE_GRAVEYARD, true),
|
||||
|
|
|
|||
|
|
@ -175,6 +175,9 @@ void RegionTable_Init_HyruleField() {
|
|||
LOCATION(RC_HF_CENTER_EXIT_ARROW_SIGN, logic->CanRead()),
|
||||
LOCATION(RC_HF_RIVER_EXIT_ARROW_SIGN, logic->CanRead()),
|
||||
LOCATION(RC_HF_STAIRS_EXIT_ARROW_SIGN, logic->CanRead()),
|
||||
LOCATION(RC_HF_WONDER_BRIDGE_1, logic->IsChild),
|
||||
LOCATION(RC_HF_WONDER_BRIDGE_2, logic->IsChild),
|
||||
LOCATION(RC_HF_WONDER_BRIDGE_3, logic->IsChild),
|
||||
}, {
|
||||
//Exits
|
||||
ENTRANCE(RR_LW_BRIDGE, true),
|
||||
|
|
|
|||
|
|
@ -64,6 +64,7 @@ void RegionTable_Init_Kakariko() {
|
|||
LOCATION(RC_KAK_WELL_RECTANGLE_SIGN, logic->IsChild && logic->CanRead()),
|
||||
LOCATION(RC_KAK_SOUTHEAST_EXIT_ARROW_SIGN, logic->CanRead()),
|
||||
LOCATION(RC_KAK_FRONT_GATE_ARROW_SIGN, logic->CanRead()),
|
||||
LOCATION(RC_KAK_WONDER_UNDER_CONSTRUCTION, logic->IsChild),
|
||||
}, {
|
||||
//Exits
|
||||
ENTRANCE(RR_HYRULE_FIELD, true),
|
||||
|
|
@ -166,7 +167,8 @@ void RegionTable_Init_Kakariko() {
|
|||
|
||||
areaTable[RR_KAK_IMPAS_HOUSE] = Region("Kak Impas House", SCENE_IMPAS_HOUSE, {}, {
|
||||
//Locations
|
||||
LOCATION(RC_KAK_IMPAS_HOUSE_COW, logic->CanUse(RG_EPONAS_SONG)),
|
||||
LOCATION(RC_KAK_IMPAS_HOUSE_COW, logic->CanUse(RG_EPONAS_SONG)),
|
||||
LOCATION(RC_KAK_WONDER_ABOVE_COW, true),
|
||||
}, {
|
||||
//Exits
|
||||
ENTRANCE(RR_KAKARIKO_VILLAGE, true),
|
||||
|
|
|
|||
|
|
@ -82,6 +82,12 @@ void RegionTable_Init_KokiriForest() {
|
|||
LOCATION(RC_KF_TRAINING_CENTER_ENTRANCE_ARROW_SIGN, logic->IsChild && logic->CanRead()),
|
||||
LOCATION(RC_KF_INNER_TRAINING_CENTER_ARROW_SIGN, logic->IsChild && logic->CanRead()),
|
||||
LOCATION(RC_KF_KNOW_IT_ALL_BROTHERS_HOUSE_ARROW_SIGN, logic->CanRead()),
|
||||
LOCATION(RC_KF_WONDER_TRAINING_1, logic->IsChild),
|
||||
LOCATION(RC_KF_WONDER_TRAINING_2, logic->IsChild),
|
||||
LOCATION(RC_KF_WONDER_TRAINING_3, logic->IsChild),
|
||||
LOCATION(RC_KF_WONDER_SIGN, logic->IsChild && logic->CanJumpslashExceptHammer()),
|
||||
LOCATION(RC_KF_WONDER_PLATFORMS_1, logic->IsChild),
|
||||
LOCATION(RC_KF_WONDER_PLATFORMS_2, logic->IsChild),
|
||||
}, {
|
||||
//Exits
|
||||
ENTRANCE(RR_KF_BOULDER_LOOP, logic->CanUse(RG_CRAWL)),
|
||||
|
|
@ -108,6 +114,8 @@ void RegionTable_Init_KokiriForest() {
|
|||
LOCATION(RC_KF_CHILD_GRASS_MAZE_2, logic->IsChild && logic->CanCutShrubs()),
|
||||
LOCATION(RC_KF_CHILD_GRASS_MAZE_3, logic->IsChild && logic->CanCutShrubs()),
|
||||
LOCATION(RC_KF_AFTER_CRAWLSPACE_RECTANGLE_SIGN, logic->IsChild && logic->CanRead()),
|
||||
LOCATION(RC_KF_WONDER_CRAWL_GRASS_1, logic->IsChild),
|
||||
LOCATION(RC_KF_WONDER_CRAWL_GRASS_2, logic->IsChild),
|
||||
}, {
|
||||
//Exits
|
||||
ENTRANCE(RR_KOKIRI_FOREST, logic->CanUse(RG_CRAWL)),
|
||||
|
|
@ -198,6 +206,7 @@ void RegionTable_Init_KokiriForest() {
|
|||
LOCATION(RC_KF_SHOP_ITEM_6, logic->HasItem(RG_SPEAK_KOKIRI) && GetCheckPrice() <= GetWalletCapacity()),
|
||||
LOCATION(RC_KF_SHOP_ITEM_7, logic->HasItem(RG_SPEAK_KOKIRI) && GetCheckPrice() <= GetWalletCapacity()),
|
||||
LOCATION(RC_KF_SHOP_ITEM_8, logic->HasItem(RG_SPEAK_KOKIRI) && GetCheckPrice() <= GetWalletCapacity()),
|
||||
LOCATION(RC_KF_WONDER_SHOP, true),
|
||||
}, {
|
||||
//Exits
|
||||
ENTRANCE(RR_KOKIRI_FOREST, true),
|
||||
|
|
|
|||
|
|
@ -11,20 +11,22 @@ void RegionTable_Init_LonLonRanch() {
|
|||
EVENT_ACCESS(LOGIC_LINKS_COW, logic->HasItem(RG_CHILD_WALLET) && logic->HasItem(RG_SPEAK_HYLIAN) && logic->CanUse(RG_EPONAS_SONG) && logic->IsAdult && logic->AtDay),
|
||||
}, {
|
||||
//Locations
|
||||
LOCATION(RC_SONG_FROM_MALON, logic->IsChild && logic->HasItem(RG_ZELDAS_LETTER) && logic->HasItem(RG_SPEAK_HYLIAN) && logic->HasItem(RG_FAIRY_OCARINA) && logic->AtDay),
|
||||
LOCATION(RC_LLR_GS_TREE, logic->IsChild && logic->CanBonkTrees() && (logic->HasItem(RG_POWER_BRACELET) || logic->CanKillEnemy(RE_GOLD_SKULLTULA))),
|
||||
LOCATION(RC_LLR_GS_RAIN_SHED, logic->IsChild && logic->CanGetNightTimeGS() && (logic->HasItem(RG_POWER_BRACELET) || logic->CanKillEnemy(RE_GOLD_SKULLTULA))),
|
||||
LOCATION(RC_LLR_GS_HOUSE_WINDOW, logic->IsChild && logic->HookshotOrBoomerang() && logic->CanGetNightTimeGS()),
|
||||
LOCATION(RC_LLR_GS_BACK_WALL, logic->IsChild && logic->HookshotOrBoomerang() && logic->CanGetNightTimeGS()),
|
||||
LOCATION(RC_LLR_FRONT_POT_1, logic->IsChild && logic->CanBreakPots()),
|
||||
LOCATION(RC_LLR_FRONT_POT_2, logic->IsChild && logic->CanBreakPots()),
|
||||
LOCATION(RC_LLR_FRONT_POT_3, logic->IsChild && logic->CanBreakPots()),
|
||||
LOCATION(RC_LLR_FRONT_POT_4, logic->IsChild && logic->CanBreakPots()),
|
||||
LOCATION(RC_LLR_RAIN_SHED_POT_1, logic->IsChild && logic->CanBreakPots()),
|
||||
LOCATION(RC_LLR_RAIN_SHED_POT_2, logic->IsChild && logic->CanBreakPots()),
|
||||
LOCATION(RC_LLR_RAIN_SHED_POT_3, logic->IsChild && logic->CanBreakPots()),
|
||||
LOCATION(RC_LLR_NEAR_TREE_CRATE, logic->IsChild && logic->CanBreakCrates()),
|
||||
LOCATION(RC_LLR_TREE, logic->IsChild && logic->CanBonkTrees()),
|
||||
LOCATION(RC_SONG_FROM_MALON, logic->IsChild && logic->HasItem(RG_ZELDAS_LETTER) && logic->HasItem(RG_SPEAK_HYLIAN) && logic->HasItem(RG_FAIRY_OCARINA) && logic->AtDay),
|
||||
LOCATION(RC_LLR_GS_TREE, logic->IsChild && logic->CanBonkTrees() && (logic->HasItem(RG_POWER_BRACELET) || logic->CanKillEnemy(RE_GOLD_SKULLTULA))),
|
||||
LOCATION(RC_LLR_GS_RAIN_SHED, logic->IsChild && logic->CanGetNightTimeGS() && (logic->HasItem(RG_POWER_BRACELET) || logic->CanKillEnemy(RE_GOLD_SKULLTULA))),
|
||||
LOCATION(RC_LLR_GS_HOUSE_WINDOW, logic->IsChild && logic->HookshotOrBoomerang() && logic->CanGetNightTimeGS()),
|
||||
LOCATION(RC_LLR_GS_BACK_WALL, logic->IsChild && logic->HookshotOrBoomerang() && logic->CanGetNightTimeGS()),
|
||||
LOCATION(RC_LLR_FRONT_POT_1, logic->IsChild && logic->CanBreakPots()),
|
||||
LOCATION(RC_LLR_FRONT_POT_2, logic->IsChild && logic->CanBreakPots()),
|
||||
LOCATION(RC_LLR_FRONT_POT_3, logic->IsChild && logic->CanBreakPots()),
|
||||
LOCATION(RC_LLR_FRONT_POT_4, logic->IsChild && logic->CanBreakPots()),
|
||||
LOCATION(RC_LLR_RAIN_SHED_POT_1, logic->IsChild && logic->CanBreakPots()),
|
||||
LOCATION(RC_LLR_RAIN_SHED_POT_2, logic->IsChild && logic->CanBreakPots()),
|
||||
LOCATION(RC_LLR_RAIN_SHED_POT_3, logic->IsChild && logic->CanBreakPots()),
|
||||
LOCATION(RC_LLR_NEAR_TREE_CRATE, logic->IsChild && logic->CanBreakCrates()),
|
||||
LOCATION(RC_LLR_TREE, logic->IsChild && logic->CanBonkTrees()),
|
||||
LOCATION(RC_LLR_WONDER_BIG_FENCE, logic->IsAdult && logic->CanUse(RG_EPONAS_SONG) && (logic->HasItem(RG_CHILD_WALLET) || logic->Get(LOGIC_FREED_EPONA))),
|
||||
LOCATION(RC_LLR_WONDER_SMALL_FENCE, logic->IsAdult && logic->CanUse(RG_EPONAS_SONG) && (logic->HasItem(RG_CHILD_WALLET) || logic->Get(LOGIC_FREED_EPONA))),
|
||||
}, {
|
||||
//Exits
|
||||
ENTRANCE(RR_HYRULE_FIELD, true),
|
||||
|
|
|
|||
|
|
@ -48,6 +48,9 @@ void RegionTable_Init_LostWoods() {
|
|||
LOCATION(RC_LW_GRASS_1, logic->CanCutShrubs()),
|
||||
LOCATION(RC_LW_GRASS_2, logic->CanCutShrubs()),
|
||||
LOCATION(RC_LW_GRASS_3, logic->CanCutShrubs()),
|
||||
LOCATION(RC_LW_WONDER_BACK_SKULL_KIDS_GRASS_1, logic->IsChild),
|
||||
LOCATION(RC_LW_WONDER_BACK_SKULL_KIDS_GRASS_2, logic->IsChild),
|
||||
LOCATION(RC_LW_WONDER_FRONT_SKULL_KIDS_GRASS, logic->IsChild),
|
||||
}, {
|
||||
//Exits
|
||||
ENTRANCE(RR_LW_FOREST_EXIT, true),
|
||||
|
|
|
|||
|
|
@ -28,6 +28,13 @@ void RegionTable_Init_Market() {
|
|||
LOCATION(RC_MK_SHOOTING_GALLERY_CRATE_1, logic->IsChild /*&& logic->CanRoll()*/),
|
||||
LOCATION(RC_MK_SHOOTING_GALLERY_CRATE_2, logic->IsChild /*&& logic->CanRoll()*/),
|
||||
LOCATION(RC_MARKET_TREE, logic->IsChild && logic->CanBonkTrees()),
|
||||
LOCATION(RC_MKT_WONDER_DAY_1, logic->IsChild && logic->AtDay),
|
||||
LOCATION(RC_MKT_WONDER_DAY_2, logic->IsChild && logic->AtDay),
|
||||
LOCATION(RC_MKT_WONDER_DAY_3, logic->IsChild && logic->AtDay),
|
||||
LOCATION(RC_MKT_WONDER_DAY_4, logic->IsChild && logic->AtDay),
|
||||
LOCATION(RC_MKT_WONDER_DAY_5, logic->IsChild && logic->AtDay),
|
||||
LOCATION(RC_MKT_WONDER_NIGHT_1, logic->IsChild && logic->AtNight),
|
||||
LOCATION(RC_MKT_WONDER_NIGHT_2, logic->IsChild && logic->AtNight),
|
||||
}, {
|
||||
//Exits
|
||||
ENTRANCE(RR_MARKET_ENTRANCE, true),
|
||||
|
|
|
|||
|
|
@ -5,7 +5,10 @@ using namespace Rando;
|
|||
|
||||
void RegionTable_Init_SacredForestMeadow() {
|
||||
// clang-format off
|
||||
areaTable[RR_SFM_ENTRYWAY] = Region("SFM Entryway", SCENE_SACRED_FOREST_MEADOW, {}, {}, {
|
||||
areaTable[RR_SFM_ENTRYWAY] = Region("SFM Entryway", SCENE_SACRED_FOREST_MEADOW, {}, {
|
||||
//Locations
|
||||
LOCATION(RC_SFM_WONDER_ENTRANCE, true),
|
||||
}, {
|
||||
//Exits
|
||||
ENTRANCE(RR_LW_BEYOND_MIDO, true),
|
||||
ENTRANCE(RR_SACRED_FOREST_MEADOW, logic->IsAdult || logic->CanKillEnemy(RE_WOLFOS)),
|
||||
|
|
@ -41,6 +44,11 @@ void RegionTable_Init_SacredForestMeadow() {
|
|||
LOCATION(RC_SFM_SARIA_GOSSIP_STONE_FAIRY, logic->CallGossipFairyExceptSuns()),
|
||||
LOCATION(RC_SFM_SARIA_GOSSIP_STONE_FAIRY_BIG, logic->CanUse(RG_SONG_OF_STORMS)),
|
||||
LOCATION(RC_SFM_SARIA_GOSSIP_STONE, true),
|
||||
LOCATION(RC_SFM_WONDER_MAZE_1, true),
|
||||
LOCATION(RC_SFM_WONDER_MAZE_2, true),
|
||||
LOCATION(RC_SFM_WONDER_MAZE_3, true),
|
||||
LOCATION(RC_SFM_WONDER_MAZE_4, true),
|
||||
LOCATION(RC_SFM_WONDER_MAZE_5, true),
|
||||
}, {
|
||||
//Exits
|
||||
ENTRANCE(RR_FOREST_TEMPLE_ENTRYWAY, logic->CanUse(RG_HOOKSHOT)),
|
||||
|
|
|
|||
|
|
@ -17,6 +17,8 @@ void RegionTable_Init_ThievesHideout() {
|
|||
LOCATION(RC_TH_1_TORCH_CELL_MID_POT, logic->CanBreakPots()),
|
||||
LOCATION(RC_TH_1_TORCH_CELL_LEFT_POT, logic->CanBreakPots()),
|
||||
LOCATION(RC_TH_1_TORCH_CELL_CRATE, logic->CanBreakCrates()),
|
||||
LOCATION(RC_TH_WONDER_1_TORCH_1, logic->CanUse(RG_FAIRY_BOW)),
|
||||
LOCATION(RC_TH_WONDER_1_TORCH_2, logic->CanUse(RG_FAIRY_BOW)),
|
||||
LOCATION(RC_TH_FREED_CARPENTERS, logic->Get(LOGIC_TH_RESCUED_ALL_CARPENTERS)),
|
||||
}, {
|
||||
//Exits
|
||||
|
|
@ -30,17 +32,19 @@ void RegionTable_Init_ThievesHideout() {
|
|||
EVENT_ACCESS(LOGIC_TH_RESCUED_ALL_CARPENTERS, logic->SmallKeys(SCENE_THIEVES_HIDEOUT, ctx->GetOption(RSK_GERUDO_FORTRESS).Is(RO_GF_CARPENTERS_NORMAL) ? 4 : 1) && logic->Get(LOGIC_TH_COULD_FREE_1_TORCH_CARPENTER) && logic->Get(LOGIC_TH_COULD_FREE_DOUBLE_CELL_CARPENTER) && logic->Get(LOGIC_TH_COULD_FREE_DEAD_END_CARPENTER) && logic->Get(LOGIC_TH_COULD_FREE_SLOPE_CARPENTER)),
|
||||
}, {
|
||||
//Locations
|
||||
LOCATION(RC_TH_DOUBLE_CELL_CARPENTER, logic->CanKillEnemy(RE_GERUDO_WARRIOR)),
|
||||
LOCATION(RC_TH_NEAR_DOUBLE_CELL_RIGHT_POT, logic->CanBreakPots()),
|
||||
LOCATION(RC_TH_NEAR_DOUBLE_CELL_MID_POT, logic->CanBreakPots()),
|
||||
LOCATION(RC_TH_NEAR_DOUBLE_CELL_LEFT_POT, logic->CanBreakPots()),
|
||||
LOCATION(RC_TH_RIGHTMOST_JAILED_POT, logic->CanBreakPots()),
|
||||
LOCATION(RC_TH_RIGHT_MIDDLE_JAILED_POT, logic->CanBreakPots()),
|
||||
LOCATION(RC_TH_LEFT_MIDDLE_JAILED_POT, logic->CanBreakPots()),
|
||||
LOCATION(RC_TH_LEFTMOST_JAILED_POT, logic->CanBreakPots()),
|
||||
LOCATION(RC_TH_DOUBLE_CELL_LEFT_CRATE, logic->CanBreakCrates()),
|
||||
LOCATION(RC_TH_DOUBLE_CELL_RIGHT_CRATE, logic->CanBreakCrates()),
|
||||
LOCATION(RC_TH_FREED_CARPENTERS, logic->Get(LOGIC_TH_RESCUED_ALL_CARPENTERS)),
|
||||
LOCATION(RC_TH_DOUBLE_CELL_CARPENTER, logic->CanKillEnemy(RE_GERUDO_WARRIOR)),
|
||||
LOCATION(RC_TH_NEAR_DOUBLE_CELL_RIGHT_POT, logic->CanBreakPots()),
|
||||
LOCATION(RC_TH_NEAR_DOUBLE_CELL_MID_POT, logic->CanBreakPots()),
|
||||
LOCATION(RC_TH_NEAR_DOUBLE_CELL_LEFT_POT, logic->CanBreakPots()),
|
||||
LOCATION(RC_TH_RIGHTMOST_JAILED_POT, logic->CanBreakPots()),
|
||||
LOCATION(RC_TH_RIGHT_MIDDLE_JAILED_POT, logic->CanBreakPots()),
|
||||
LOCATION(RC_TH_LEFT_MIDDLE_JAILED_POT, logic->CanBreakPots()),
|
||||
LOCATION(RC_TH_LEFTMOST_JAILED_POT, logic->CanBreakPots()),
|
||||
LOCATION(RC_TH_DOUBLE_CELL_LEFT_CRATE, logic->CanBreakCrates()),
|
||||
LOCATION(RC_TH_DOUBLE_CELL_RIGHT_CRATE, logic->CanBreakCrates()),
|
||||
LOCATION(RC_TH_WONDER_DOUBLE_JAIL_LOWER_EXIT, logic->CanUse(RG_FAIRY_BOW)),
|
||||
LOCATION(RC_TH_WONDER_DOUBLE_JAIL_UPPER_EXIT, logic->CanUse(RG_FAIRY_BOW)),
|
||||
LOCATION(RC_TH_FREED_CARPENTERS, logic->Get(LOGIC_TH_RESCUED_ALL_CARPENTERS)),
|
||||
}, {
|
||||
//Exits
|
||||
ENTRANCE(RR_GF_OUTSKIRTS, true),
|
||||
|
|
@ -54,9 +58,11 @@ void RegionTable_Init_ThievesHideout() {
|
|||
EVENT_ACCESS(LOGIC_TH_RESCUED_ALL_CARPENTERS, logic->SmallKeys(SCENE_THIEVES_HIDEOUT, ctx->GetOption(RSK_GERUDO_FORTRESS).Is(RO_GF_CARPENTERS_NORMAL) ? 4 : 1) && logic->Get(LOGIC_TH_COULD_FREE_1_TORCH_CARPENTER) && logic->Get(LOGIC_TH_COULD_FREE_DOUBLE_CELL_CARPENTER) && logic->Get(LOGIC_TH_COULD_FREE_DEAD_END_CARPENTER) && logic->Get(LOGIC_TH_COULD_FREE_SLOPE_CARPENTER)),
|
||||
}, {
|
||||
//Locations
|
||||
LOCATION(RC_TH_DEAD_END_CARPENTER, logic->CanKillEnemy(RE_GERUDO_WARRIOR)),
|
||||
LOCATION(RC_TH_DEAD_END_CELL_CRATE, logic->CanBreakCrates()),
|
||||
LOCATION(RC_TH_FREED_CARPENTERS, logic->Get(LOGIC_TH_RESCUED_ALL_CARPENTERS)),
|
||||
LOCATION(RC_TH_DEAD_END_CARPENTER, logic->CanKillEnemy(RE_GERUDO_WARRIOR)),
|
||||
LOCATION(RC_TH_DEAD_END_CELL_CRATE, logic->CanBreakCrates()),
|
||||
LOCATION(RC_TH_WONDER_DEAD_END_SKULL_ENTRANCE, logic->CanUse(RG_FAIRY_BOW)),
|
||||
LOCATION(RC_TH_WONDER_DEAD_END_SKULL_NEAR_JAIL, logic->CanUse(RG_FAIRY_BOW)),
|
||||
LOCATION(RC_TH_FREED_CARPENTERS, logic->Get(LOGIC_TH_RESCUED_ALL_CARPENTERS)),
|
||||
}, {
|
||||
//Exits
|
||||
ENTRANCE(RR_GF_BELOW_GS, true),
|
||||
|
|
@ -68,10 +74,12 @@ void RegionTable_Init_ThievesHideout() {
|
|||
EVENT_ACCESS(LOGIC_TH_RESCUED_ALL_CARPENTERS, logic->SmallKeys(SCENE_THIEVES_HIDEOUT, ctx->GetOption(RSK_GERUDO_FORTRESS).Is(RO_GF_CARPENTERS_NORMAL) ? 4 : 1) && logic->Get(LOGIC_TH_COULD_FREE_1_TORCH_CARPENTER) && logic->Get(LOGIC_TH_COULD_FREE_DOUBLE_CELL_CARPENTER) && logic->Get(LOGIC_TH_COULD_FREE_DEAD_END_CARPENTER) && logic->Get(LOGIC_TH_COULD_FREE_SLOPE_CARPENTER)),
|
||||
}, {
|
||||
//Locations
|
||||
LOCATION(RC_TH_STEEP_SLOPE_CARPENTER, logic->CanKillEnemy(RE_GERUDO_WARRIOR)),
|
||||
LOCATION(RC_TH_STEEP_SLOPE_RIGHT_POT, logic->CanBreakPots()),
|
||||
LOCATION(RC_TH_STEEP_SLOPE_LEFT_POT, logic->CanBreakPots()),
|
||||
LOCATION(RC_TH_FREED_CARPENTERS, logic->Get(LOGIC_TH_RESCUED_ALL_CARPENTERS)),
|
||||
LOCATION(RC_TH_STEEP_SLOPE_CARPENTER, logic->CanKillEnemy(RE_GERUDO_WARRIOR)),
|
||||
LOCATION(RC_TH_STEEP_SLOPE_RIGHT_POT, logic->CanBreakPots()),
|
||||
LOCATION(RC_TH_STEEP_SLOPE_LEFT_POT, logic->CanBreakPots()),
|
||||
LOCATION(RC_TH_WONDER_STEEP_SLOPE_LOWER_EXIT, logic->CanUse(RG_FAIRY_BOW)),
|
||||
LOCATION(RC_TH_WONDER_STEEP_SLOPE_UPPER_EXIT, logic->CanUse(RG_FAIRY_BOW)),
|
||||
LOCATION(RC_TH_FREED_CARPENTERS, logic->Get(LOGIC_TH_RESCUED_ALL_CARPENTERS)),
|
||||
}, {
|
||||
//Exits
|
||||
ENTRANCE(RR_GF_BOTTOM_OF_LOWER_VINES, true),
|
||||
|
|
@ -93,10 +101,12 @@ void RegionTable_Init_ThievesHideout() {
|
|||
|
||||
areaTable[RR_TH_KITCHEN_MAIN] = Region("Thieves Hideout Kitchen Bottom", SCENE_THIEVES_HIDEOUT, {}, {
|
||||
//Locations
|
||||
LOCATION(RC_TH_KITCHEN_POT_1, logic->CanBreakPots() && logic->CanPassEnemy(RE_GERUDO_GUARD)),
|
||||
LOCATION(RC_TH_KITCHEN_POT_2, logic->CanBreakPots() && logic->CanPassEnemy(RE_GERUDO_GUARD)),
|
||||
LOCATION(RC_TH_KITCHEN_CRATE, logic->CanBreakCrates() && logic->CanPassEnemy(RE_GERUDO_GUARD)),
|
||||
LOCATION(RC_TH_KITCHEN_SUN_FAIRY, logic->CanPassEnemy(RE_GERUDO_GUARD) && logic->CanUse(RG_SUNS_SONG)),
|
||||
LOCATION(RC_TH_KITCHEN_POT_1, logic->CanBreakPots() && logic->CanPassEnemy(RE_GERUDO_GUARD)),
|
||||
LOCATION(RC_TH_KITCHEN_POT_2, logic->CanBreakPots() && logic->CanPassEnemy(RE_GERUDO_GUARD)),
|
||||
LOCATION(RC_TH_KITCHEN_CRATE, logic->CanBreakCrates() && logic->CanPassEnemy(RE_GERUDO_GUARD)),
|
||||
LOCATION(RC_TH_KITCHEN_SUN_FAIRY, logic->CanPassEnemy(RE_GERUDO_GUARD) && logic->CanUse(RG_SUNS_SONG)),
|
||||
LOCATION(RC_TH_WONDER_KITCHEN_SKULL, logic->CanUse(RG_FAIRY_BOW)),
|
||||
LOCATION(RC_TH_WONDER_KITCHEN_SOUP, (logic->TakeDamage() || logic->IsAdult || logic->CanUse(RG_GORON_TUNIC)) && logic->CanPassEnemy(RE_GERUDO_GUARD)),
|
||||
}, {
|
||||
//Exits
|
||||
ENTRANCE(RR_TH_KITCHEN_CORRIDOR, logic->CanPassEnemy(RE_GERUDO_GUARD)),
|
||||
|
|
@ -142,14 +152,25 @@ void RegionTable_Init_ThievesHideout() {
|
|||
(logic->CanPassEnemy(RE_GERUDO_GUARD) && logic->HasExplosives() && logic->CanUse(RG_BOOMERANG))),
|
||||
}, {
|
||||
//Exits
|
||||
ENTRANCE(RR_GF_BELOW_CHEST, logic->CanPassEnemy(RE_GERUDO_GUARD)),
|
||||
//Implies logic->CanPassEnemy(RE_GERUDO_GUARD)
|
||||
ENTRANCE(RR_TH_BREAK_ROOM_CORRIDOR, logic->CanUse(RG_HOOKSHOT)),
|
||||
ENTRANCE(RR_GF_BELOW_CHEST, logic->CanPassEnemy(RE_GERUDO_GUARD)),
|
||||
ENTRANCE(RR_TH_BREAK_ROOM_LOWER_CORRIDOR, logic->CanPassEnemy(RE_GERUDO_GUARD)),
|
||||
});
|
||||
|
||||
areaTable[RR_TH_BREAK_ROOM_CORRIDOR] = Region("Thieves Hideout Break Room", SCENE_THIEVES_HIDEOUT, {}, {}, {
|
||||
areaTable[RR_TH_BREAK_ROOM_LOWER_CORRIDOR] = Region("Thieves Hideout Break Room", SCENE_THIEVES_HIDEOUT, {}, {
|
||||
//Locations
|
||||
LOCATION(RC_TH_WONDER_BREAK_ROOM_BOTTOM_SKULL, logic->CanUse(RG_FAIRY_BOW)),
|
||||
}, {
|
||||
//Exits
|
||||
ENTRANCE(RR_TH_BREAK_ROOM, logic->CanPassEnemy(RE_GERUDO_GUARD)),
|
||||
ENTRANCE(RR_TH_BREAK_ROOM_UPPER_CORRIDOR, logic->CanUse(RG_HOOKSHOT)),
|
||||
});
|
||||
|
||||
areaTable[RR_TH_BREAK_ROOM_UPPER_CORRIDOR] = Region("Thieves Hideout Break Room", SCENE_THIEVES_HIDEOUT, {}, {
|
||||
//Locations
|
||||
LOCATION(RC_TH_WONDER_BREAK_ROOM_TOP_SKULL, logic->CanUse(RG_FAIRY_BOW)),
|
||||
}, {
|
||||
//Exits
|
||||
ENTRANCE(RR_TH_BREAK_ROOM, logic->CanUse(RG_HOOKSHOT)),
|
||||
ENTRANCE(RR_TH_BREAK_ROOM_LOWER_CORRIDOR, logic->CanUse(RG_HOOKSHOT)),
|
||||
ENTRANCE(RR_GF_ABOVE_JAIL, true),
|
||||
});
|
||||
}
|
||||
|
|
|
|||
|
|
@ -32,6 +32,7 @@ void RegionTable_Init_ZorasFountain() {
|
|||
LOCATION(RC_ZF_LOG_BUTTERFLY_FAIRY, logic->IsChild && logic->AtDay && logic->CanUse(RG_STICKS)),
|
||||
LOCATION(RC_ZF_JABU_JABU_PLATFORM_RECTANGLE_SIGN, logic->IsChild && logic->CanRead()),
|
||||
LOCATION(RC_ZF_ENTRANCE_ARROW_SIGN, logic->CanRead()),
|
||||
LOCATION(RC_ZF_WONDER_ROCK, logic->IsAdult && logic->ReachScarecrow()),
|
||||
}, {
|
||||
//Exits
|
||||
ENTRANCE(RR_ZD_BEHIND_KING_ZORA, true),
|
||||
|
|
|
|||
|
|
@ -7,20 +7,25 @@ void RegionTable_Init_ZoraRiver() {
|
|||
// clang-format off
|
||||
areaTable[RR_ZR_FRONT] = Region("ZR Front", SCENE_ZORAS_RIVER, {}, {
|
||||
//Locations
|
||||
LOCATION(RC_ZR_GS_TREE, logic->IsChild && logic->CanKillEnemy(RE_GOLD_SKULLTULA, ED_CLOSE) && logic->CanBonkTrees()),
|
||||
LOCATION(RC_ZR_GRASS_1, logic->CanCutShrubs()),
|
||||
LOCATION(RC_ZR_GRASS_2, logic->CanCutShrubs()),
|
||||
LOCATION(RC_ZR_GRASS_3, logic->CanCutShrubs()),
|
||||
LOCATION(RC_ZR_GRASS_4, logic->CanCutShrubs()),
|
||||
LOCATION(RC_ZR_GRASS_5, logic->CanCutShrubs()),
|
||||
LOCATION(RC_ZR_GRASS_6, logic->CanCutShrubs()),
|
||||
LOCATION(RC_ZR_GRASS_7, logic->CanCutShrubs()),
|
||||
LOCATION(RC_ZR_GRASS_8, logic->CanCutShrubs()),
|
||||
LOCATION(RC_ZR_GRASS_9, logic->CanCutShrubs()),
|
||||
LOCATION(RC_ZR_GRASS_10, logic->CanCutShrubs()),
|
||||
LOCATION(RC_ZR_GRASS_11, logic->CanCutShrubs()),
|
||||
LOCATION(RC_ZR_GRASS_12, logic->CanCutShrubs()),
|
||||
LOCATION(RC_ZR_TREE, logic->IsChild && logic->CanBonkTrees()),
|
||||
LOCATION(RC_ZR_GS_TREE, logic->IsChild && logic->CanKillEnemy(RE_GOLD_SKULLTULA, ED_CLOSE) && logic->CanBonkTrees()),
|
||||
LOCATION(RC_ZR_GRASS_1, logic->CanCutShrubs()),
|
||||
LOCATION(RC_ZR_GRASS_2, logic->CanCutShrubs()),
|
||||
LOCATION(RC_ZR_GRASS_3, logic->CanCutShrubs()),
|
||||
LOCATION(RC_ZR_GRASS_4, logic->CanCutShrubs()),
|
||||
LOCATION(RC_ZR_GRASS_5, logic->CanCutShrubs()),
|
||||
LOCATION(RC_ZR_GRASS_6, logic->CanCutShrubs()),
|
||||
LOCATION(RC_ZR_GRASS_7, logic->CanCutShrubs()),
|
||||
LOCATION(RC_ZR_GRASS_8, logic->CanCutShrubs()),
|
||||
LOCATION(RC_ZR_GRASS_9, logic->CanCutShrubs()),
|
||||
LOCATION(RC_ZR_GRASS_10, logic->CanCutShrubs()),
|
||||
LOCATION(RC_ZR_GRASS_11, logic->CanCutShrubs()),
|
||||
LOCATION(RC_ZR_GRASS_12, logic->CanCutShrubs()),
|
||||
LOCATION(RC_ZR_TREE, logic->IsChild && logic->CanBonkTrees()),
|
||||
// Require backflip with Iron Boots
|
||||
LOCATION(RC_ZR_WONDER_LOWER_RIVER_1, logic->IsChild && (logic->HasItem(RG_BRONZE_SCALE) || logic->CanUse(RG_IRON_BOOTS))),
|
||||
LOCATION(RC_ZR_WONDER_LOWER_RIVER_2, logic->IsChild && (logic->HasItem(RG_BRONZE_SCALE) || logic->CanUse(RG_IRON_BOOTS))),
|
||||
LOCATION(RC_ZR_WONDER_LOWER_RIVER_3, logic->IsChild && (logic->HasItem(RG_BRONZE_SCALE) || logic->CanUse(RG_IRON_BOOTS))),
|
||||
LOCATION(RC_ZR_WONDER_LOWER_RIVER_4, logic->IsChild && (logic->HasItem(RG_BRONZE_SCALE) || logic->CanUse(RG_IRON_BOOTS))),
|
||||
}, {
|
||||
//Exits
|
||||
ENTRANCE(RR_ZORAS_RIVER, logic->IsAdult || logic->BlastOrSmash() || logic->CanUse(RG_HOVER_BOOTS)),
|
||||
|
|
@ -59,6 +64,33 @@ void RegionTable_Init_ZoraRiver() {
|
|||
LOCATION(RC_ZR_NEAR_ROCK_CIRCLE_BUTTERFLY_FAIRY, logic->IsChild && logic->CanUse(RG_STICKS)),
|
||||
LOCATION(RC_ZR_WATERFALL_BUTTERFLY_FAIRY, logic->IsChild && logic->CanUse(RG_STICKS)),
|
||||
LOCATION(RC_ZR_SLEEPLESS_WATERFALL_PLAQUE, logic->CanRead()),
|
||||
LOCATION(RC_ZR_WONDER_NEAR_DOMAIN_1, logic->IsChild && (logic->HasItem(RG_BRONZE_SCALE) || logic->CanUse(RG_IRON_BOOTS))), // RANDOTODO: Add trick for swimless
|
||||
LOCATION(RC_ZR_WONDER_NEAR_DOMAIN_2, logic->IsChild && (logic->HasItem(RG_BRONZE_SCALE) || logic->CanUse(RG_IRON_BOOTS))),
|
||||
LOCATION(RC_ZR_WONDER_NEAR_DOMAIN_3, logic->IsChild && (logic->HasItem(RG_BRONZE_SCALE) || logic->CanUse(RG_IRON_BOOTS))),
|
||||
LOCATION(RC_ZR_WONDER_NEAR_DOMAIN_4, logic->IsChild && (logic->HasItem(RG_BRONZE_SCALE) || logic->CanUse(RG_IRON_BOOTS))),
|
||||
LOCATION(RC_ZR_WONDER_BEFORE_LADDER_1, logic->IsChild && (logic->HasItem(RG_BRONZE_SCALE) || logic->CanUse(RG_IRON_BOOTS))),
|
||||
LOCATION(RC_ZR_WONDER_BEFORE_LADDER_2, logic->IsChild && (logic->HasItem(RG_BRONZE_SCALE) || logic->CanUse(RG_IRON_BOOTS))),
|
||||
LOCATION(RC_ZR_WONDER_BEFORE_LADDER_3, logic->IsChild && (logic->HasItem(RG_BRONZE_SCALE) || logic->CanUse(RG_IRON_BOOTS))),
|
||||
LOCATION(RC_ZR_WONDER_BEFORE_LADDER_4, logic->IsChild && (logic->HasItem(RG_BRONZE_SCALE) || logic->CanUse(RG_IRON_BOOTS))),
|
||||
LOCATION(RC_ZR_WONDER_BEFORE_LADDER_5, logic->IsChild && (logic->HasItem(RG_BRONZE_SCALE) || logic->CanUse(RG_IRON_BOOTS))),
|
||||
LOCATION(RC_ZR_WONDER_BEFORE_LADDER_6, logic->IsChild && (logic->HasItem(RG_BRONZE_SCALE) || logic->CanUse(RG_IRON_BOOTS))),
|
||||
LOCATION(RC_ZR_WONDER_AFTER_LADDER_1, logic->IsChild && (logic->HasItem(RG_BRONZE_SCALE) || logic->CanUse(RG_IRON_BOOTS))),
|
||||
LOCATION(RC_ZR_WONDER_AFTER_LADDER_2, logic->IsChild && (logic->HasItem(RG_BRONZE_SCALE) || logic->CanUse(RG_IRON_BOOTS))),
|
||||
LOCATION(RC_ZR_WONDER_AFTER_LADDER_3, logic->IsChild && (logic->HasItem(RG_BRONZE_SCALE) || logic->CanUse(RG_IRON_BOOTS))),
|
||||
LOCATION(RC_ZR_WONDER_FROG_BRIDGE_1, logic->IsChild && (logic->HasItem(RG_BRONZE_SCALE) || logic->CanUse(RG_IRON_BOOTS))),
|
||||
LOCATION(RC_ZR_WONDER_FROG_BRIDGE_2, logic->IsChild && (logic->HasItem(RG_BRONZE_SCALE) || logic->CanUse(RG_IRON_BOOTS))),
|
||||
LOCATION(RC_ZR_WONDER_FROG_BRIDGE_3, logic->IsChild && (logic->HasItem(RG_BRONZE_SCALE) || logic->CanUse(RG_IRON_BOOTS))),
|
||||
LOCATION(RC_ZR_WONDER_PILLARS_1, logic->IsChild && (logic->HasItem(RG_BRONZE_SCALE) || logic->CanUse(RG_IRON_BOOTS))),
|
||||
LOCATION(RC_ZR_WONDER_PILLARS_2, logic->IsChild && (logic->HasItem(RG_BRONZE_SCALE) || logic->CanUse(RG_IRON_BOOTS))),
|
||||
LOCATION(RC_ZR_WONDER_PILLARS_3, logic->IsChild && (logic->HasItem(RG_BRONZE_SCALE) || logic->CanUse(RG_IRON_BOOTS))),
|
||||
LOCATION(RC_ZR_WONDER_PILLARS_4, logic->IsChild && (logic->HasItem(RG_BRONZE_SCALE) || logic->CanUse(RG_IRON_BOOTS))),
|
||||
LOCATION(RC_ZR_WONDER_LOWER_LAND_BRIDGE_1, logic->IsChild && (logic->HasItem(RG_BRONZE_SCALE) || logic->CanUse(RG_IRON_BOOTS))), // Requires backflip with Iron Boots
|
||||
LOCATION(RC_ZR_WONDER_LOWER_LAND_BRIDGE_2, logic->IsChild && (logic->HasItem(RG_BRONZE_SCALE) || logic->CanUse(RG_IRON_BOOTS))),
|
||||
LOCATION(RC_ZR_WONDER_LOWER_LAND_BRIDGE_3, logic->IsChild && (logic->HasItem(RG_BRONZE_SCALE) || logic->CanUse(RG_IRON_BOOTS))),
|
||||
LOCATION(RC_ZR_WONDER_LOWER_LAND_BRIDGE_4, logic->IsChild && (logic->HasItem(RG_BRONZE_SCALE) || logic->CanUse(RG_IRON_BOOTS))),
|
||||
LOCATION(RC_ZR_WONDER_NEAR_CUCCO_1, logic->IsChild && (logic->HasItem(RG_BRONZE_SCALE) || logic->CanUse(RG_IRON_BOOTS))), // Requires backflip with Iron Boots
|
||||
LOCATION(RC_ZR_WONDER_NEAR_CUCCO_2, logic->IsChild && (logic->HasItem(RG_BRONZE_SCALE) || logic->CanUse(RG_IRON_BOOTS))), // Requires backflip with Iron Boots
|
||||
LOCATION(RC_ZR_WONDER_NEAR_CUCCO_3, logic->IsChild && (logic->HasItem(RG_BRONZE_SCALE) || logic->CanUse(RG_IRON_BOOTS))),
|
||||
}, {
|
||||
//Exits
|
||||
ENTRANCE(RR_ZR_FRONT, logic->IsAdult || logic->HasItem(RG_BRONZE_SCALE) || logic->HasItem(RG_POWER_BRACELET) || logic->BlastOrSmash() || logic->HasItem(RG_HOVER_BOOTS)),
|
||||
|
|
|
|||
|
|
@ -323,6 +323,17 @@ void Settings::CreateOptionDescriptions() {
|
|||
"Overworld - Only shuffle signs that are outside of dungeons.\n"
|
||||
"\n"
|
||||
"All Signs - Shuffle all signs.";
|
||||
mOptionDescriptions[RSK_SHUFFLE_WONDER_ITEMS] =
|
||||
"Wonder items will drop a randomized item the first time they're collected. "
|
||||
"Wonder items will be marked with swirling particles.\n"
|
||||
"\n"
|
||||
"Off - Wonder items will not be shuffled.\n"
|
||||
"\n"
|
||||
"Dungeons - Only shuffle wonder items that are within dungeons.\n"
|
||||
"\n"
|
||||
"Overworld - Only shuffle wonder items that are outside of dungeons.\n"
|
||||
"\n"
|
||||
"All Wonder Items - Shuffle all wonder items.";
|
||||
mOptionDescriptions[RSK_SHUFFLE_FISHING_POLE] = "Shuffles the fishing pole into the item pool.\n"
|
||||
"\n"
|
||||
"The fishing pole is required to play the fishing pond minigame.";
|
||||
|
|
|
|||
47
soh/soh/Enhancements/randomizer/particle_cmc.cpp
Normal file
47
soh/soh/Enhancements/randomizer/particle_cmc.cpp
Normal file
|
|
@ -0,0 +1,47 @@
|
|||
#include "particle_cmc.h"
|
||||
|
||||
// Color of the circle for the particles
|
||||
static Color_RGBA8 mainColors[7] = {
|
||||
{ 255, 255, 255, 255 }, // Junk
|
||||
{ 170, 50, 0, 255 }, // Lesser
|
||||
{ 250, 0, 0, 255 }, // Health
|
||||
{ 255, 255, 0, 255 }, // Boss Key
|
||||
{ 180, 180, 180, 255 }, // Small Key
|
||||
{ 0, 0, 0, 255 }, // Skulltula Token
|
||||
{ 250, 185, 40, 255 }, // Major
|
||||
};
|
||||
|
||||
// Secondary color of the circle for the particles
|
||||
static Color_RGBA8 secColors[7] = {
|
||||
{ 255, 255, 255, 255 }, // Junk
|
||||
{ 250, 75, 0, 255 }, // Lesser
|
||||
{ 0, 0, 255, 255 }, // Health
|
||||
{ 0, 200, 255, 255 }, // Boss Key
|
||||
{ 130, 130, 130, 255 }, // Small Key
|
||||
{ 255, 250, 190, 255 }, // Skulltula Token
|
||||
{ 255, 220, 135, 255 }, // Major
|
||||
};
|
||||
|
||||
// Color of the faded flares stretching off the particles
|
||||
static Color_RGBA8 flareColors[7] = {
|
||||
{ 135, 135, 135, 255 }, // Junk
|
||||
{ 255, 160, 100, 255 }, // Lesser
|
||||
{ 255, 125, 125, 255 }, // Health
|
||||
{ 0, 200, 255, 255 }, // Boss Key
|
||||
{ 100, 100, 100, 255 }, // Small Key
|
||||
{ 255, 255, 255, 255 }, // Skulltula Token
|
||||
{ 250, 220, 180, 255 }, // Major
|
||||
};
|
||||
|
||||
Color_RGBA8 Randomizer_GetParticleCMCColor(GetItemCategory colorIndex, ParticleCMCColorType colorType) {
|
||||
switch (colorType) {
|
||||
case COLOR_PRIMARY:
|
||||
return mainColors[colorIndex];
|
||||
case COLOR_SECONDARY:
|
||||
return secColors[colorIndex];
|
||||
case COLOR_FLARE:
|
||||
return flareColors[colorIndex];
|
||||
default:
|
||||
return mainColors[colorIndex];
|
||||
}
|
||||
}
|
||||
24
soh/soh/Enhancements/randomizer/particle_cmc.h
Normal file
24
soh/soh/Enhancements/randomizer/particle_cmc.h
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
#pragma once
|
||||
|
||||
#include "soh/OTRGlobals.h"
|
||||
|
||||
#ifndef PARTICLE_CMC_H
|
||||
#define PARTICLE_CMC_H
|
||||
|
||||
typedef enum {
|
||||
COLOR_PRIMARY,
|
||||
COLOR_SECONDARY,
|
||||
COLOR_FLARE,
|
||||
} ParticleCMCColorType;
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
Color_RGBA8 Randomizer_GetParticleCMCColor(GetItemCategory colorIndex, ParticleCMCColorType colorType);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
|
@ -3054,6 +3054,222 @@ std::map<RandomizerCheck, RandomizerInf> rcToRandomizerInf = {
|
|||
{ RC_DODONGOS_CAVERN_TOP_FLOOR_PEDESTAL, RAND_INF_DODONGOS_CAVERN_TOP_FLOOR_PEDESTAL },
|
||||
{ RC_SHADOW_TEMPLE_TRUTHSPINNER_RECTANGLE_SIGN, RAND_INF_SHADOW_TEMPLE_TRUTHSPINNER_RECTANGLE_SIGN },
|
||||
{ RC_SHADOW_TEMPLE_MQ_LOWER_PIT_RECTANGLE_SIGN, RAND_INF_SHADOW_TEMPLE_MQ_LOWER_PIT_RECTANGLE_SIGN },
|
||||
// Wonder Items
|
||||
{ RC_KF_WONDER_TRAINING_1, RAND_INF_KF_WONDER_TRAINING_1 },
|
||||
{ RC_KF_WONDER_TRAINING_2, RAND_INF_KF_WONDER_TRAINING_2 },
|
||||
{ RC_KF_WONDER_TRAINING_3, RAND_INF_KF_WONDER_TRAINING_3 },
|
||||
{ RC_KF_WONDER_SHOP, RAND_INF_KF_WONDER_SHOP },
|
||||
{ RC_KF_WONDER_SIGN, RAND_INF_KF_WONDER_SIGN },
|
||||
{ RC_KF_WONDER_PLATFORMS_1, RAND_INF_KF_WONDER_PLATFORMS_1 },
|
||||
{ RC_KF_WONDER_PLATFORMS_2, RAND_INF_KF_WONDER_PLATFORMS_2 },
|
||||
{ RC_KF_WONDER_CRAWL_GRASS_1, RAND_INF_KF_WONDER_CRAWL_GRASS_1 },
|
||||
{ RC_KF_WONDER_CRAWL_GRASS_2, RAND_INF_KF_WONDER_CRAWL_GRASS_2 },
|
||||
{ RC_HF_WONDER_BRIDGE_1, RAND_INF_HF_WONDER_BRIDGE_1 },
|
||||
{ RC_HF_WONDER_BRIDGE_2, RAND_INF_HF_WONDER_BRIDGE_2 },
|
||||
{ RC_HF_WONDER_BRIDGE_3, RAND_INF_HF_WONDER_BRIDGE_3 },
|
||||
{ RC_MKT_WONDER_DAY_1, RAND_INF_MKT_WONDER_DAY_1 },
|
||||
{ RC_MKT_WONDER_DAY_2, RAND_INF_MKT_WONDER_DAY_2 },
|
||||
{ RC_MKT_WONDER_DAY_3, RAND_INF_MKT_WONDER_DAY_3 },
|
||||
{ RC_MKT_WONDER_DAY_4, RAND_INF_MKT_WONDER_DAY_4 },
|
||||
{ RC_MKT_WONDER_DAY_5, RAND_INF_MKT_WONDER_DAY_5 },
|
||||
{ RC_MKT_WONDER_NIGHT_1, RAND_INF_MKT_WONDER_NIGHT_1 },
|
||||
{ RC_MKT_WONDER_NIGHT_2, RAND_INF_MKT_WONDER_NIGHT_2 },
|
||||
{ RC_LLR_WONDER_BIG_FENCE, RAND_INF_LLR_WONDER_BIG_FENCE },
|
||||
{ RC_LLR_WONDER_SMALL_FENCE, RAND_INF_LLR_WONDER_SMALL_FENCE },
|
||||
{ RC_HC_WONDER_LEFT_TORCH, RAND_INF_HC_WONDER_LEFT_TORCH },
|
||||
{ RC_HC_WONDER_RIGHT_TORCH, RAND_INF_HC_WONDER_RIGHT_TORCH },
|
||||
{ RC_HC_WONDER_MOAT_1, RAND_INF_HC_WONDER_MOAT_1 },
|
||||
{ RC_HC_WONDER_MOAT_2, RAND_INF_HC_WONDER_MOAT_2 },
|
||||
{ RC_HC_WONDER_MOAT_3, RAND_INF_HC_WONDER_MOAT_3 },
|
||||
{ RC_HC_WONDER_MOAT_4, RAND_INF_HC_WONDER_MOAT_4 },
|
||||
{ RC_HC_WONDER_MOAT_5, RAND_INF_HC_WONDER_MOAT_5 },
|
||||
{ RC_HC_WONDER_MOAT_6, RAND_INF_HC_WONDER_MOAT_6 },
|
||||
{ RC_HC_WONDER_MOAT_7, RAND_INF_HC_WONDER_MOAT_7 },
|
||||
{ RC_HC_WONDER_MOAT_8, RAND_INF_HC_WONDER_MOAT_8 },
|
||||
{ RC_HC_WONDER_MOAT_9, RAND_INF_HC_WONDER_MOAT_9 },
|
||||
{ RC_HC_WONDER_MOAT_10, RAND_INF_HC_WONDER_MOAT_10 },
|
||||
{ RC_HC_WONDER_COURTYARD_RIGHT_WINDOW, RAND_INF_HC_WONDER_COURTYARD_RIGHT_WINDOW },
|
||||
{ RC_HC_WONDER_COURTYARD_LEFT_WINDOW, RAND_INF_HC_WONDER_COURTYARD_LEFT_WINDOW },
|
||||
{ RC_LW_WONDER_BACK_SKULL_KIDS_GRASS_1, RAND_INF_LW_WONDER_BACK_SKULL_KIDS_GRASS_1 },
|
||||
{ RC_LW_WONDER_BACK_SKULL_KIDS_GRASS_2, RAND_INF_LW_WONDER_BACK_SKULL_KIDS_GRASS_2 },
|
||||
{ RC_LW_WONDER_FRONT_SKULL_KIDS_GRASS, RAND_INF_LW_WONDER_FRONT_SKULL_KIDS_GRASS },
|
||||
{ RC_SFM_WONDER_ENTRANCE, RAND_INF_SFM_WONDER_ENTRANCE },
|
||||
{ RC_SFM_WONDER_MAZE_1, RAND_INF_SFM_WONDER_MAZE_1 },
|
||||
{ RC_SFM_WONDER_MAZE_2, RAND_INF_SFM_WONDER_MAZE_2 },
|
||||
{ RC_SFM_WONDER_MAZE_3, RAND_INF_SFM_WONDER_MAZE_3 },
|
||||
{ RC_SFM_WONDER_MAZE_4, RAND_INF_SFM_WONDER_MAZE_4 },
|
||||
{ RC_SFM_WONDER_MAZE_5, RAND_INF_SFM_WONDER_MAZE_5 },
|
||||
{ RC_KAK_WONDER_UNDER_CONSTRUCTION, RAND_INF_KAK_WONDER_UNDER_CONSTRUCTION },
|
||||
{ RC_KAK_WONDER_ABOVE_COW, RAND_INF_KAK_WONDER_ABOVE_COW },
|
||||
{ RC_GY_WONDER_DAMPE_RACE_1, RAND_INF_GY_WONDER_DAMPE_RACE_1 },
|
||||
{ RC_GY_WONDER_DAMPE_RACE_2, RAND_INF_GY_WONDER_DAMPE_RACE_2 },
|
||||
{ RC_GY_WONDER_DAMPE_RACE_3, RAND_INF_GY_WONDER_DAMPE_RACE_3 },
|
||||
{ RC_GY_WONDER_DAMPE_RACE_4, RAND_INF_GY_WONDER_DAMPE_RACE_4 },
|
||||
{ RC_GY_WONDER_DAMPE_RACE_5, RAND_INF_GY_WONDER_DAMPE_RACE_5 },
|
||||
{ RC_GY_WONDER_DAMPE_RACE_6, RAND_INF_GY_WONDER_DAMPE_RACE_6 },
|
||||
{ RC_GY_WONDER_DAMPE_RACE_7, RAND_INF_GY_WONDER_DAMPE_RACE_7 },
|
||||
{ RC_GY_WONDER_DAMPE_RACE_8, RAND_INF_GY_WONDER_DAMPE_RACE_8 },
|
||||
{ RC_GY_WONDER_DAMPE_RACE_9, RAND_INF_GY_WONDER_DAMPE_RACE_9 },
|
||||
{ RC_GY_WONDER_DAMPE_RACE_10, RAND_INF_GY_WONDER_DAMPE_RACE_10 },
|
||||
{ RC_GY_WONDER_DAMPE_RACE_11, RAND_INF_GY_WONDER_DAMPE_RACE_11 },
|
||||
{ RC_GY_WONDER_DAMPE_RACE_12, RAND_INF_GY_WONDER_DAMPE_RACE_12 },
|
||||
{ RC_GY_WONDER_DAMPE_RACE_13, RAND_INF_GY_WONDER_DAMPE_RACE_13 },
|
||||
{ RC_GY_WONDER_DAMPE_RACE_14, RAND_INF_GY_WONDER_DAMPE_RACE_14 },
|
||||
{ RC_GY_WONDER_DAMPE_RACE_15, RAND_INF_GY_WONDER_DAMPE_RACE_15 },
|
||||
{ RC_DMC_WONDER_BENEATH_BRIDGE_PLATFORM, RAND_INF_DMC_WONDER_BENEATH_BRIDGE_PLATFORM },
|
||||
{ RC_ZR_WONDER_NEAR_DOMAIN_1, RAND_INF_ZR_WONDER_NEAR_DOMAIN_1 },
|
||||
{ RC_ZR_WONDER_NEAR_DOMAIN_2, RAND_INF_ZR_WONDER_NEAR_DOMAIN_2 },
|
||||
{ RC_ZR_WONDER_NEAR_DOMAIN_3, RAND_INF_ZR_WONDER_NEAR_DOMAIN_3 },
|
||||
{ RC_ZR_WONDER_NEAR_DOMAIN_4, RAND_INF_ZR_WONDER_NEAR_DOMAIN_4 },
|
||||
{ RC_ZR_WONDER_BEFORE_LADDER_1, RAND_INF_ZR_WONDER_BEFORE_LADDER_1 },
|
||||
{ RC_ZR_WONDER_BEFORE_LADDER_2, RAND_INF_ZR_WONDER_BEFORE_LADDER_2 },
|
||||
{ RC_ZR_WONDER_BEFORE_LADDER_3, RAND_INF_ZR_WONDER_BEFORE_LADDER_3 },
|
||||
{ RC_ZR_WONDER_BEFORE_LADDER_4, RAND_INF_ZR_WONDER_BEFORE_LADDER_4 },
|
||||
{ RC_ZR_WONDER_BEFORE_LADDER_5, RAND_INF_ZR_WONDER_BEFORE_LADDER_5 },
|
||||
{ RC_ZR_WONDER_BEFORE_LADDER_6, RAND_INF_ZR_WONDER_BEFORE_LADDER_6 },
|
||||
{ RC_ZR_WONDER_AFTER_LADDER_1, RAND_INF_ZR_WONDER_AFTER_LADDER_1 },
|
||||
{ RC_ZR_WONDER_AFTER_LADDER_2, RAND_INF_ZR_WONDER_AFTER_LADDER_2 },
|
||||
{ RC_ZR_WONDER_AFTER_LADDER_3, RAND_INF_ZR_WONDER_AFTER_LADDER_3 },
|
||||
{ RC_ZR_WONDER_FROG_BRIDGE_1, RAND_INF_ZR_WONDER_FROG_BRIDGE_1 },
|
||||
{ RC_ZR_WONDER_FROG_BRIDGE_2, RAND_INF_ZR_WONDER_FROG_BRIDGE_2 },
|
||||
{ RC_ZR_WONDER_FROG_BRIDGE_3, RAND_INF_ZR_WONDER_FROG_BRIDGE_3 },
|
||||
{ RC_ZR_WONDER_PILLARS_1, RAND_INF_ZR_WONDER_PILLARS_1 },
|
||||
{ RC_ZR_WONDER_PILLARS_2, RAND_INF_ZR_WONDER_PILLARS_2 },
|
||||
{ RC_ZR_WONDER_PILLARS_3, RAND_INF_ZR_WONDER_PILLARS_3 },
|
||||
{ RC_ZR_WONDER_PILLARS_4, RAND_INF_ZR_WONDER_PILLARS_4 },
|
||||
{ RC_ZR_WONDER_LOWER_LAND_BRIDGE_1, RAND_INF_ZR_WONDER_LOWER_LAND_BRIDGE_1 },
|
||||
{ RC_ZR_WONDER_LOWER_LAND_BRIDGE_2, RAND_INF_ZR_WONDER_LOWER_LAND_BRIDGE_2 },
|
||||
{ RC_ZR_WONDER_LOWER_LAND_BRIDGE_3, RAND_INF_ZR_WONDER_LOWER_LAND_BRIDGE_3 },
|
||||
{ RC_ZR_WONDER_LOWER_LAND_BRIDGE_4, RAND_INF_ZR_WONDER_LOWER_LAND_BRIDGE_4 },
|
||||
{ RC_ZR_WONDER_NEAR_CUCCO_1, RAND_INF_ZR_WONDER_NEAR_CUCCO_1 },
|
||||
{ RC_ZR_WONDER_NEAR_CUCCO_2, RAND_INF_ZR_WONDER_NEAR_CUCCO_2 },
|
||||
{ RC_ZR_WONDER_NEAR_CUCCO_3, RAND_INF_ZR_WONDER_NEAR_CUCCO_3 },
|
||||
{ RC_ZR_WONDER_LOWER_RIVER_1, RAND_INF_ZR_WONDER_LOWER_RIVER_1 },
|
||||
{ RC_ZR_WONDER_LOWER_RIVER_2, RAND_INF_ZR_WONDER_LOWER_RIVER_2 },
|
||||
{ RC_ZR_WONDER_LOWER_RIVER_3, RAND_INF_ZR_WONDER_LOWER_RIVER_3 },
|
||||
{ RC_ZR_WONDER_LOWER_RIVER_4, RAND_INF_ZR_WONDER_LOWER_RIVER_4 },
|
||||
{ RC_ZF_WONDER_ROCK, RAND_INF_ZF_WONDER_ROCK },
|
||||
{ RC_GV_WONDER_LOWER_WATERFALL, RAND_INF_GV_WONDER_LOWER_WATERFALL },
|
||||
{ RC_GV_WONDER_UPPER_WATERFALL, RAND_INF_GV_WONDER_UPPER_WATERFALL },
|
||||
{ RC_GF_WONDER_ENTRANCE_SIGN, RAND_INF_GF_WONDER_ENTRANCE_SIGN },
|
||||
{ RC_GF_WONDER_ARCHERY_SIGN, RAND_INF_GF_WONDER_ARCHERY_SIGN },
|
||||
{ RC_TH_WONDER_1_TORCH_1, RAND_INF_TH_WONDER_1_TORCH_1 },
|
||||
{ RC_TH_WONDER_1_TORCH_2, RAND_INF_TH_WONDER_1_TORCH_2 },
|
||||
{ RC_TH_WONDER_STEEP_SLOPE_LOWER_EXIT, RAND_INF_TH_WONDER_STEEP_SLOPE_LOWER_EXIT },
|
||||
{ RC_TH_WONDER_STEEP_SLOPE_UPPER_EXIT, RAND_INF_TH_WONDER_STEEP_SLOPE_UPPER_EXIT },
|
||||
{ RC_TH_WONDER_DOUBLE_JAIL_LOWER_EXIT, RAND_INF_TH_WONDER_DOUBLE_JAIL_LOWER_EXIT },
|
||||
{ RC_TH_WONDER_DOUBLE_JAIL_UPPER_EXIT, RAND_INF_TH_WONDER_DOUBLE_JAIL_UPPER_EXIT },
|
||||
{ RC_TH_WONDER_KITCHEN_SKULL, RAND_INF_TH_WONDER_KITCHEN_SKULL },
|
||||
{ RC_TH_WONDER_KITCHEN_SOUP, RAND_INF_TH_WONDER_KITCHEN_SOUP },
|
||||
{ RC_TH_WONDER_DEAD_END_SKULL_ENTRANCE, RAND_INF_TH_WONDER_DEAD_END_SKULL_ENTRANCE },
|
||||
{ RC_TH_WONDER_DEAD_END_SKULL_NEAR_JAIL, RAND_INF_TH_WONDER_DEAD_END_SKULL_NEAR_JAIL },
|
||||
{ RC_TH_WONDER_BREAK_ROOM_BOTTOM_SKULL, RAND_INF_TH_WONDER_BREAK_ROOM_BOTTOM_SKULL },
|
||||
{ RC_TH_WONDER_BREAK_ROOM_TOP_SKULL, RAND_INF_TH_WONDER_BREAK_ROOM_TOP_SKULL },
|
||||
{ RC_COLOSSUS_WONDER_OASIS_TREE_1, RAND_INF_COLOSSUS_WONDER_OASIS_TREE_1 },
|
||||
{ RC_COLOSSUS_WONDER_OASIS_TREE_2, RAND_INF_COLOSSUS_WONDER_OASIS_TREE_2 },
|
||||
{ RC_COLOSSUS_WONDER_OASIS_CHILD_TREE, RAND_INF_COLOSSUS_WONDER_OASIS_CHILD_TREE },
|
||||
{ RC_COLOSSUS_WONDER_GF_TREE_1, RAND_INF_COLOSSUS_WONDER_GF_TREE_1 },
|
||||
{ RC_COLOSSUS_WONDER_GF_TREE_2, RAND_INF_COLOSSUS_WONDER_GF_TREE_2 },
|
||||
{ RC_SHADOW_TEMPLE_WONDER_THREE_POTS, RAND_INF_SHADOW_TEMPLE_WONDER_THREE_POTS },
|
||||
{ RC_GERUDO_TRAINING_GROUND_WONDER_BEAMOS_ROOM, RAND_INF_GERUDO_TRAINING_GROUND_WONDER_BEAMOS_ROOM },
|
||||
{ RC_GERUDO_TRAINING_GROUND_WONDER_EYE_STATUE_ROOM, RAND_INF_GERUDO_TRAINING_GROUND_WONDER_EYE_STATUE_ROOM },
|
||||
{ RC_GERUDO_TRAINING_GROUND_WONDER_TORCH_SLUGS_ROOM, RAND_INF_GERUDO_TRAINING_GROUND_WONDER_TORCH_SLUGS_ROOM },
|
||||
{ RC_DEKU_TREE_MQ_WONDER_BASEMENT_GRAVE_1, RAND_INF_DEKU_TREE_MQ_WONDER_BASEMENT_GRAVE_1 },
|
||||
{ RC_DEKU_TREE_MQ_WONDER_BASEMENT_GRAVE_2, RAND_INF_DEKU_TREE_MQ_WONDER_BASEMENT_GRAVE_2 },
|
||||
{ RC_DEKU_TREE_MQ_WONDER_BASEMENT_GRAVE_3, RAND_INF_DEKU_TREE_MQ_WONDER_BASEMENT_GRAVE_3 },
|
||||
{ RC_DEKU_TREE_MQ_WONDER_BASEMENT_GRAVE_4, RAND_INF_DEKU_TREE_MQ_WONDER_BASEMENT_GRAVE_4 },
|
||||
{ RC_JABU_JABUS_BELLY_MQ_WONDER_ENTRANCE_LEFT_COW, RAND_INF_JABU_JABUS_BELLY_MQ_WONDER_ENTRANCE_LEFT_COW },
|
||||
{ RC_JABU_JABUS_BELLY_MQ_WONDER_ENTRANCE_RIGHT_COW, RAND_INF_JABU_JABUS_BELLY_MQ_WONDER_ENTRANCE_RIGHT_COW },
|
||||
{ RC_JABU_JABUS_BELLY_MQ_WONDER_ELEVATOR_COW, RAND_INF_JABU_JABUS_BELLY_MQ_WONDER_ELEVATOR_COW },
|
||||
{ RC_JABU_JABUS_BELLY_MQ_HOLES_COW, RAND_INF_JABU_JABUS_BELLY_MQ_HOLES_COW },
|
||||
{ RC_JABU_JABUS_BELLY_MQ_WONDER_BASEMENT_RIGHT_COW_1, RAND_INF_JABU_JABUS_BELLY_MQ_WONDER_BASEMENT_RIGHT_COW_1 },
|
||||
{ RC_JABU_JABUS_BELLY_MQ_WONDER_BASEMENT_RIGHT_COW_2, RAND_INF_JABU_JABUS_BELLY_MQ_WONDER_BASEMENT_RIGHT_COW_2 },
|
||||
{ RC_JABU_JABUS_BELLY_MQ_WONDER_BASEMENT_RIGHT_COW_3, RAND_INF_JABU_JABUS_BELLY_MQ_WONDER_BASEMENT_RIGHT_COW_3 },
|
||||
{ RC_JABU_JABUS_BELLY_MQ_WONDER_BASEMENT_LEFT_COW_1, RAND_INF_JABU_JABUS_BELLY_MQ_WONDER_BASEMENT_LEFT_COW_1 },
|
||||
{ RC_JABU_JABUS_BELLY_MQ_WONDER_BASEMENT_LEFT_COW_2, RAND_INF_JABU_JABUS_BELLY_MQ_WONDER_BASEMENT_LEFT_COW_2 },
|
||||
{ RC_JABU_JABUS_BELLY_MQ_WONDER_BASEMENT_LEFT_COW_3, RAND_INF_JABU_JABUS_BELLY_MQ_WONDER_BASEMENT_LEFT_COW_3 },
|
||||
{ RC_JABU_JABUS_BELLY_MQ_WONDER_AFTER_BIG_OCTO, RAND_INF_JABU_JABUS_BELLY_MQ_WONDER_AFTER_BIG_OCTO },
|
||||
{ RC_JABU_JABUS_BELLY_MQ_WONDER_JIGGLIES_COW, RAND_INF_JABU_JABUS_BELLY_MQ_WONDER_JIGGLIES_COW },
|
||||
{ RC_JABU_JABUS_BELLY_MQ_WONDER_FALLING_LIKE_LIKES_COW_RIGHT_1,
|
||||
RAND_INF_JABU_JABUS_BELLY_MQ_WONDER_FALLING_LIKE_LIKES_COW_RIGHT_1 },
|
||||
{ RC_JABU_JABUS_BELLY_MQ_WONDER_FALLING_LIKE_LIKES_COW_RIGHT_2,
|
||||
RAND_INF_JABU_JABUS_BELLY_MQ_WONDER_FALLING_LIKE_LIKES_COW_RIGHT_2 },
|
||||
{ RC_JABU_JABUS_BELLY_MQ_WONDER_FALLING_LIKE_LIKES_COW_RIGHT_3,
|
||||
RAND_INF_JABU_JABUS_BELLY_MQ_WONDER_FALLING_LIKE_LIKES_COW_RIGHT_3 },
|
||||
{ RC_JABU_JABUS_BELLY_MQ_WONDER_FALLING_LIKE_LIKES_COW_LEFT_1,
|
||||
RAND_INF_JABU_JABUS_BELLY_MQ_WONDER_FALLING_LIKE_LIKES_COW_LEFT_1 },
|
||||
{ RC_JABU_JABUS_BELLY_MQ_WONDER_FALLING_LIKE_LIKES_COW_LEFT_2,
|
||||
RAND_INF_JABU_JABUS_BELLY_MQ_WONDER_FALLING_LIKE_LIKES_COW_LEFT_2 },
|
||||
{ RC_JABU_JABUS_BELLY_MQ_WONDER_FALLING_LIKE_LIKES_COW_LEFT_3,
|
||||
RAND_INF_JABU_JABUS_BELLY_MQ_WONDER_FALLING_LIKE_LIKES_COW_LEFT_3 },
|
||||
{ RC_JABU_JABUS_BELLY_MQ_WONDER_FALLING_LIKE_LIKES_EXPLOSION_1,
|
||||
RAND_INF_JABU_JABUS_BELLY_MQ_WONDER_FALLING_LIKE_LIKES_EXPLOSION_1 },
|
||||
{ RC_JABU_JABUS_BELLY_MQ_WONDER_FALLING_LIKE_LIKES_EXPLOSION_2,
|
||||
RAND_INF_JABU_JABUS_BELLY_MQ_WONDER_FALLING_LIKE_LIKES_EXPLOSION_2 },
|
||||
{ RC_JABU_JABUS_BELLY_MQ_WONDER_FALLING_LIKE_LIKES_EXPLOSION_3,
|
||||
RAND_INF_JABU_JABUS_BELLY_MQ_WONDER_FALLING_LIKE_LIKES_EXPLOSION_3 },
|
||||
{ RC_JABU_JABUS_BELLY_MQ_WONDER_BEFORE_BOSS_LEFT_COW, RAND_INF_JABU_JABUS_BELLY_MQ_WONDER_BEFORE_BOSS_LEFT_COW },
|
||||
{ RC_JABU_JABUS_BELLY_MQ_WONDER_BEFORE_BOSS_RIGHT_COW_1,
|
||||
RAND_INF_JABU_JABUS_BELLY_MQ_WONDER_BEFORE_BOSS_RIGHT_COW_1 },
|
||||
{ RC_JABU_JABUS_BELLY_MQ_WONDER_BEFORE_BOSS_RIGHT_COW_2,
|
||||
RAND_INF_JABU_JABUS_BELLY_MQ_WONDER_BEFORE_BOSS_RIGHT_COW_2 },
|
||||
{ RC_FIRE_TEMPLE_MQ_WONDER_SHORTCUT_ROOM_1, RAND_INF_FIRE_TEMPLE_MQ_WONDER_SHORTCUT_ROOM_1 },
|
||||
{ RC_FIRE_TEMPLE_MQ_WONDER_SHORTCUT_ROOM_2, RAND_INF_FIRE_TEMPLE_MQ_WONDER_SHORTCUT_ROOM_2 },
|
||||
{ RC_FIRE_TEMPLE_MQ_WONDER_SHORTCUT_ROOM_3, RAND_INF_FIRE_TEMPLE_MQ_WONDER_SHORTCUT_ROOM_3 },
|
||||
{ RC_FIRE_TEMPLE_MQ_WONDER_BOSS_KEY_ROOM_HOOKSHOT, RAND_INF_FIRE_TEMPLE_MQ_WONDER_BOSS_KEY_ROOM_HOOKSHOT },
|
||||
{ RC_FIRE_TEMPLE_MQ_WONDER_BOSS_KEY_ROOM_BOW, RAND_INF_FIRE_TEMPLE_MQ_WONDER_BOSS_KEY_ROOM_BOW },
|
||||
{ RC_FIRE_TEMPLE_MQ_WONDER_LIZALFOS_MAZE, RAND_INF_FIRE_TEMPLE_MQ_WONDER_LIZALFOS_MAZE },
|
||||
{ RC_FIRE_TEMPLE_MQ_WONDER_EAST_TOWER_LARGE_FACE_1, RAND_INF_FIRE_TEMPLE_MQ_WONDER_EAST_TOWER_LARGE_FACE_1 },
|
||||
{ RC_FIRE_TEMPLE_MQ_WONDER_EAST_TOWER_LARGE_FACE_2, RAND_INF_FIRE_TEMPLE_MQ_WONDER_EAST_TOWER_LARGE_FACE_2 },
|
||||
{ RC_FIRE_TEMPLE_MQ_WONDER_EAST_TOWER_SMALL_FACE_1, RAND_INF_FIRE_TEMPLE_MQ_WONDER_EAST_TOWER_SMALL_FACE_1 },
|
||||
{ RC_FIRE_TEMPLE_MQ_WONDER_EAST_TOWER_SMALL_FACE_2, RAND_INF_FIRE_TEMPLE_MQ_WONDER_EAST_TOWER_SMALL_FACE_2 },
|
||||
{ RC_FIRE_TEMPLE_MQ_WONDER_TORCH_ROOM, RAND_INF_FIRE_TEMPLE_MQ_WONDER_TORCH_ROOM },
|
||||
{ RC_FIRE_TEMPLE_MQ_WONDER_FIRE_MAZE, RAND_INF_FIRE_TEMPLE_MQ_WONDER_FIRE_MAZE },
|
||||
{ RC_FIRE_TEMPLE_MQ_WONDER_AFTER_FLARE_DANCER, RAND_INF_FIRE_TEMPLE_MQ_WONDER_AFTER_FLARE_DANCER },
|
||||
{ RC_FIRE_TEMPLE_MQ_WONDER_STAIRCASE, RAND_INF_FIRE_TEMPLE_MQ_WONDER_STAIRCASE },
|
||||
{ RC_WATER_TEMPLE_MQ_WONDER_LIZALFOS_ROOM, RAND_INF_WATER_TEMPLE_MQ_WONDER_LIZALFOS_ROOM },
|
||||
{ RC_WATER_TEMPLE_MQ_WONDER_LONGSHOT_ROOM, RAND_INF_WATER_TEMPLE_MQ_WONDER_LONGSHOT_ROOM },
|
||||
{ RC_WATER_TEMPLE_MQ_WONDER_STALFOS_ROOM, RAND_INF_WATER_TEMPLE_MQ_WONDER_STALFOS_ROOM },
|
||||
{ RC_WATER_TEMPLE_MQ_WONDER_HOOKSHOT_STAIRCASE_RIGHT_1,
|
||||
RAND_INF_WATER_TEMPLE_MQ_WONDER_HOOKSHOT_STAIRCASE_RIGHT_1 },
|
||||
{ RC_WATER_TEMPLE_MQ_WONDER_HOOKSHOT_STAIRCASE_RIGHT_2,
|
||||
RAND_INF_WATER_TEMPLE_MQ_WONDER_HOOKSHOT_STAIRCASE_RIGHT_2 },
|
||||
{ RC_WATER_TEMPLE_MQ_WONDER_HOOKSHOT_STAIRCASE_RIGHT_3,
|
||||
RAND_INF_WATER_TEMPLE_MQ_WONDER_HOOKSHOT_STAIRCASE_RIGHT_3 },
|
||||
{ RC_WATER_TEMPLE_MQ_WONDER_HOOKSHOT_STAIRCASE_LEFT_1, RAND_INF_WATER_TEMPLE_MQ_WONDER_HOOKSHOT_STAIRCASE_LEFT_1 },
|
||||
{ RC_WATER_TEMPLE_MQ_WONDER_HOOKSHOT_STAIRCASE_LEFT_2, RAND_INF_WATER_TEMPLE_MQ_WONDER_HOOKSHOT_STAIRCASE_LEFT_2 },
|
||||
{ RC_WATER_TEMPLE_MQ_WONDER_HOOKSHOT_STAIRCASE_LEFT_3, RAND_INF_WATER_TEMPLE_MQ_WONDER_HOOKSHOT_STAIRCASE_LEFT_3 },
|
||||
{ RC_WATER_TEMPLE_MQ_WONDER_AFTER_DARK_LINK, RAND_INF_WATER_TEMPLE_MQ_WONDER_AFTER_DARK_LINK },
|
||||
{ RC_WATER_TEMPLE_MQ_WONDER_DRAGON_ROOM_LEFT_EYE, RAND_INF_WATER_TEMPLE_MQ_WONDER_DRAGON_ROOM_LEFT_EYE },
|
||||
{ RC_WATER_TEMPLE_MQ_WONDER_DRAGON_ROOM_RIGHT_EYE, RAND_INF_WATER_TEMPLE_MQ_WONDER_DRAGON_ROOM_RIGHT_EYE },
|
||||
{ RC_WATER_TEMPLE_MQ_WONDER_DRAGON_ROOM_PORTRAIT, RAND_INF_WATER_TEMPLE_MQ_WONDER_DRAGON_ROOM_PORTRAIT },
|
||||
{ RC_WATER_TEMPLE_MQ_WONDER_TRIPLE_TORCHES, RAND_INF_WATER_TEMPLE_MQ_WONDER_TRIPLE_TORCHES },
|
||||
{ RC_WATER_TEMPLE_MQ_WONDER_WATER_SPROUTS_1, RAND_INF_WATER_TEMPLE_MQ_WONDER_WATER_SPROUTS_1 },
|
||||
{ RC_WATER_TEMPLE_MQ_WONDER_WATER_SPROUTS_2, RAND_INF_WATER_TEMPLE_MQ_WONDER_WATER_SPROUTS_2 },
|
||||
{ RC_WATER_TEMPLE_MQ_WONDER_FREESTANDING_ROOM, RAND_INF_WATER_TEMPLE_MQ_WONDER_FREESTANDING_ROOM },
|
||||
{ RC_WATER_TEMPLE_MQ_WONDER_BEFORE_BOSS_1, RAND_INF_WATER_TEMPLE_MQ_WONDER_BEFORE_BOSS_1 },
|
||||
{ RC_WATER_TEMPLE_MQ_WONDER_BEFORE_BOSS_2, RAND_INF_WATER_TEMPLE_MQ_WONDER_BEFORE_BOSS_2 },
|
||||
{ RC_WATER_TEMPLE_MQ_WONDER_UNDER_PILLAR_ROOM, RAND_INF_WATER_TEMPLE_MQ_WONDER_UNDER_PILLAR_ROOM },
|
||||
{ RC_WATER_TEMPLE_MQ_WONDER_LIZALFOS_HALLWAY, RAND_INF_WATER_TEMPLE_MQ_WONDER_LIZALFOS_HALLWAY },
|
||||
{ RC_WATER_TEMPLE_MQ_WONDER_GS_STORAGE_ROOM, RAND_INF_WATER_TEMPLE_MQ_WONDER_GS_STORAGE_ROOM },
|
||||
{ RC_SPIRIT_TEMPLE_MQ_WONDER_CHEST_HAMMER, RAND_INF_SPIRIT_TEMPLE_MQ_WONDER_CHEST_HAMMER },
|
||||
{ RC_SPIRIT_TEMPLE_MQ_WONDER_CHEST_SLASH, RAND_INF_SPIRIT_TEMPLE_MQ_WONDER_CHEST_SLASH },
|
||||
{ RC_SHADOW_TEMPLE_MQ_WONDER_THREE_POTS, RAND_INF_SHADOW_TEMPLE_MQ_WONDER_THREE_POTS },
|
||||
{ RC_BOTTOM_OF_THE_WELL_MQ_WONDER_MAIN_ROOM_LEFT_1, RAND_INF_BOTTOM_OF_THE_WELL_MQ_WONDER_MAIN_ROOM_LEFT_1 },
|
||||
{ RC_BOTTOM_OF_THE_WELL_MQ_WONDER_MAIN_ROOM_LEFT_2, RAND_INF_BOTTOM_OF_THE_WELL_MQ_WONDER_MAIN_ROOM_LEFT_2 },
|
||||
{ RC_BOTTOM_OF_THE_WELL_MQ_WONDER_MAIN_ROOM_LEFT_3, RAND_INF_BOTTOM_OF_THE_WELL_MQ_WONDER_MAIN_ROOM_LEFT_3 },
|
||||
{ RC_BOTTOM_OF_THE_WELL_MQ_WONDER_MAIN_ROOM_LEFT_4, RAND_INF_BOTTOM_OF_THE_WELL_MQ_WONDER_MAIN_ROOM_LEFT_4 },
|
||||
{ RC_BOTTOM_OF_THE_WELL_MQ_WONDER_MAIN_ROOM_RIGHT_1, RAND_INF_BOTTOM_OF_THE_WELL_MQ_WONDER_MAIN_ROOM_RIGHT_1 },
|
||||
{ RC_BOTTOM_OF_THE_WELL_MQ_WONDER_MAIN_ROOM_RIGHT_2, RAND_INF_BOTTOM_OF_THE_WELL_MQ_WONDER_MAIN_ROOM_RIGHT_2 },
|
||||
{ RC_BOTTOM_OF_THE_WELL_MQ_WONDER_MAIN_ROOM_RIGHT_3, RAND_INF_BOTTOM_OF_THE_WELL_MQ_WONDER_MAIN_ROOM_RIGHT_3 },
|
||||
{ RC_BOTTOM_OF_THE_WELL_MQ_WONDER_MAIN_ROOM_RIGHT_4, RAND_INF_BOTTOM_OF_THE_WELL_MQ_WONDER_MAIN_ROOM_RIGHT_4 },
|
||||
{ RC_BOTTOM_OF_THE_WELL_MQ_WONDER_SIDE_ROOM_1, RAND_INF_BOTTOM_OF_THE_WELL_MQ_WONDER_SIDE_ROOM_1 },
|
||||
{ RC_BOTTOM_OF_THE_WELL_MQ_WONDER_SIDE_ROOM_2, RAND_INF_BOTTOM_OF_THE_WELL_MQ_WONDER_SIDE_ROOM_2 },
|
||||
{ RC_BOTTOM_OF_THE_WELL_MQ_WONDER_SIDE_ROOM_3, RAND_INF_BOTTOM_OF_THE_WELL_MQ_WONDER_SIDE_ROOM_3 },
|
||||
{ RC_BOTTOM_OF_THE_WELL_MQ_WONDER_SIDE_ROOM_4, RAND_INF_BOTTOM_OF_THE_WELL_MQ_WONDER_SIDE_ROOM_4 },
|
||||
{ RC_GERUDO_TRAINING_GROUND_MQ_WONDER_DINOLFOS_ROOM, RAND_INF_GERUDO_TRAINING_GROUND_MQ_WONDER_DINOLFOS_ROOM },
|
||||
{ RC_GERUDO_TRAINING_GROUND_MQ_WONDER_EYE_STATUE, RAND_INF_GERUDO_TRAINING_GROUND_MQ_WONDER_EYE_STATUE },
|
||||
{ RC_GANONS_CASTLE_MQ_WONDER_SHADOW_TRIAL, RAND_INF_GANONS_CASTLE_MQ_WONDER_SHADOW_TRIAL },
|
||||
};
|
||||
|
||||
CheckIdentity Randomizer::IdentifyBeehive(s32 sceneNum, s16 xPosition, s32 respawnData) {
|
||||
|
|
@ -3567,6 +3783,38 @@ CheckIdentity Randomizer::IdentifySign(s32 sceneNum, s32 posX, s32 posZ, s32 id)
|
|||
return signIdentity;
|
||||
}
|
||||
|
||||
CheckIdentity Randomizer::IdentifyWonderItem(s32 sceneNum, s32 par1, s32 par2) {
|
||||
struct CheckIdentity wonderIdentity;
|
||||
uint32_t wonderSceneNum = sceneNum;
|
||||
|
||||
// align oasis trees in colossus between child/adult
|
||||
if (sceneNum == SCENE_DESERT_COLOSSUS && LINK_IS_ADULT) {
|
||||
if (par1 == 1157 && par2 == 2388) {
|
||||
par1 = 1161;
|
||||
par2 = 2383;
|
||||
} else if (par1 == 1114 && par2 == 2580) {
|
||||
par1 = 1113;
|
||||
par2 = 2581;
|
||||
}
|
||||
}
|
||||
|
||||
wonderIdentity.randomizerInf = RAND_INF_MAX;
|
||||
wonderIdentity.randomizerCheck = RC_UNKNOWN_CHECK;
|
||||
|
||||
s32 actorParams = TWO_ACTOR_PARAMS(par1, par2);
|
||||
|
||||
Rando::Location* location = GetCheckObjectFromActor(ACTOR_EN_WONDER_ITEM, wonderSceneNum, actorParams);
|
||||
|
||||
if (location->GetRandomizerCheck() == RC_UNKNOWN_CHECK) {
|
||||
LUSLOG_WARN("IdentifyWonderItem did not receive a valid RC value (%d).", location->GetRandomizerCheck());
|
||||
} else {
|
||||
wonderIdentity.randomizerInf = rcToRandomizerInf[location->GetRandomizerCheck()];
|
||||
wonderIdentity.randomizerCheck = location->GetRandomizerCheck();
|
||||
}
|
||||
|
||||
return wonderIdentity;
|
||||
}
|
||||
|
||||
u8 Randomizer::GetRandoSettingValue(RandomizerSettingKey randoSettingKey) {
|
||||
return Rando::Context::GetInstance()->GetOption(randoSettingKey).Get();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -44,6 +44,7 @@ class Randomizer {
|
|||
CheckIdentity IdentifySmallCrate(s32 sceneNum, s32 posX, s32 posZ);
|
||||
CheckIdentity IdentifyTree(s32 sceneNum, s32 posX, s32 posZ);
|
||||
CheckIdentity IdentifySign(s32 sceneNum, s32 posX, s32 posZ, s32 id);
|
||||
CheckIdentity IdentifyWonderItem(s32 sceneNum, s32 par1, s32 par2);
|
||||
GetItemEntry GetItemFromKnownCheck(RandomizerCheck randomizerCheck, GetItemID ogItemId,
|
||||
bool checkObtainability = true);
|
||||
GetItemEntry GetItemFromActor(s16 actorId, s16 sceneNum, s16 actorParams, GetItemID ogItemId,
|
||||
|
|
|
|||
|
|
@ -1998,6 +1998,213 @@ RANDO_ENUM_ITEM(RC_BOTTOM_OF_THE_WELL_MQ_BASEMENT_HALLWAY_RIGHT_HEART)
|
|||
RANDO_ENUM_ITEM(RC_GANONS_CASTLE_MQ_WATER_TRIAL_HEART)
|
||||
RANDO_ENUM_ITEM(RC_GANONS_CASTLE_MQ_LIGHT_TRIAL_RIGHT_HEART)
|
||||
RANDO_ENUM_ITEM(RC_GANONS_CASTLE_MQ_LIGHT_TRIAL_LEFT_HEART)
|
||||
|
||||
// Overworld Wonder Items
|
||||
RANDO_ENUM_ITEM(RC_KF_WONDER_TRAINING_1)
|
||||
RANDO_ENUM_ITEM(RC_KF_WONDER_TRAINING_2)
|
||||
RANDO_ENUM_ITEM(RC_KF_WONDER_TRAINING_3)
|
||||
RANDO_ENUM_ITEM(RC_KF_WONDER_SHOP)
|
||||
RANDO_ENUM_ITEM(RC_KF_WONDER_SIGN)
|
||||
RANDO_ENUM_ITEM(RC_KF_WONDER_PLATFORMS_1)
|
||||
RANDO_ENUM_ITEM(RC_KF_WONDER_PLATFORMS_2)
|
||||
RANDO_ENUM_ITEM(RC_KF_WONDER_CRAWL_GRASS_1)
|
||||
RANDO_ENUM_ITEM(RC_KF_WONDER_CRAWL_GRASS_2)
|
||||
RANDO_ENUM_ITEM(RC_HF_WONDER_BRIDGE_1)
|
||||
RANDO_ENUM_ITEM(RC_HF_WONDER_BRIDGE_2)
|
||||
RANDO_ENUM_ITEM(RC_HF_WONDER_BRIDGE_3)
|
||||
RANDO_ENUM_ITEM(RC_MKT_WONDER_DAY_1)
|
||||
RANDO_ENUM_ITEM(RC_MKT_WONDER_DAY_2)
|
||||
RANDO_ENUM_ITEM(RC_MKT_WONDER_DAY_3)
|
||||
RANDO_ENUM_ITEM(RC_MKT_WONDER_DAY_4)
|
||||
RANDO_ENUM_ITEM(RC_MKT_WONDER_DAY_5)
|
||||
RANDO_ENUM_ITEM(RC_MKT_WONDER_NIGHT_1)
|
||||
RANDO_ENUM_ITEM(RC_MKT_WONDER_NIGHT_2)
|
||||
RANDO_ENUM_ITEM(RC_LLR_WONDER_BIG_FENCE)
|
||||
RANDO_ENUM_ITEM(RC_LLR_WONDER_SMALL_FENCE)
|
||||
RANDO_ENUM_ITEM(RC_HC_WONDER_LEFT_TORCH)
|
||||
RANDO_ENUM_ITEM(RC_HC_WONDER_RIGHT_TORCH)
|
||||
RANDO_ENUM_ITEM(RC_HC_WONDER_MOAT_1)
|
||||
RANDO_ENUM_ITEM(RC_HC_WONDER_MOAT_2)
|
||||
RANDO_ENUM_ITEM(RC_HC_WONDER_MOAT_3)
|
||||
RANDO_ENUM_ITEM(RC_HC_WONDER_MOAT_4)
|
||||
RANDO_ENUM_ITEM(RC_HC_WONDER_MOAT_5)
|
||||
RANDO_ENUM_ITEM(RC_HC_WONDER_MOAT_6)
|
||||
RANDO_ENUM_ITEM(RC_HC_WONDER_MOAT_7)
|
||||
RANDO_ENUM_ITEM(RC_HC_WONDER_MOAT_8)
|
||||
RANDO_ENUM_ITEM(RC_HC_WONDER_MOAT_9)
|
||||
RANDO_ENUM_ITEM(RC_HC_WONDER_MOAT_10)
|
||||
RANDO_ENUM_ITEM(RC_HC_WONDER_COURTYARD_RIGHT_WINDOW)
|
||||
RANDO_ENUM_ITEM(RC_HC_WONDER_COURTYARD_LEFT_WINDOW)
|
||||
RANDO_ENUM_ITEM(RC_LW_WONDER_BACK_SKULL_KIDS_GRASS_1)
|
||||
RANDO_ENUM_ITEM(RC_LW_WONDER_BACK_SKULL_KIDS_GRASS_2)
|
||||
RANDO_ENUM_ITEM(RC_LW_WONDER_FRONT_SKULL_KIDS_GRASS)
|
||||
RANDO_ENUM_ITEM(RC_SFM_WONDER_ENTRANCE)
|
||||
RANDO_ENUM_ITEM(RC_SFM_WONDER_MAZE_1)
|
||||
RANDO_ENUM_ITEM(RC_SFM_WONDER_MAZE_2)
|
||||
RANDO_ENUM_ITEM(RC_SFM_WONDER_MAZE_3)
|
||||
RANDO_ENUM_ITEM(RC_SFM_WONDER_MAZE_4)
|
||||
RANDO_ENUM_ITEM(RC_SFM_WONDER_MAZE_5)
|
||||
RANDO_ENUM_ITEM(RC_KAK_WONDER_UNDER_CONSTRUCTION)
|
||||
RANDO_ENUM_ITEM(RC_KAK_WONDER_ABOVE_COW)
|
||||
RANDO_ENUM_ITEM(RC_GY_WONDER_DAMPE_RACE_1)
|
||||
RANDO_ENUM_ITEM(RC_GY_WONDER_DAMPE_RACE_2)
|
||||
RANDO_ENUM_ITEM(RC_GY_WONDER_DAMPE_RACE_3)
|
||||
RANDO_ENUM_ITEM(RC_GY_WONDER_DAMPE_RACE_4)
|
||||
RANDO_ENUM_ITEM(RC_GY_WONDER_DAMPE_RACE_5)
|
||||
RANDO_ENUM_ITEM(RC_GY_WONDER_DAMPE_RACE_6)
|
||||
RANDO_ENUM_ITEM(RC_GY_WONDER_DAMPE_RACE_7)
|
||||
RANDO_ENUM_ITEM(RC_GY_WONDER_DAMPE_RACE_8)
|
||||
RANDO_ENUM_ITEM(RC_GY_WONDER_DAMPE_RACE_9)
|
||||
RANDO_ENUM_ITEM(RC_GY_WONDER_DAMPE_RACE_10)
|
||||
RANDO_ENUM_ITEM(RC_GY_WONDER_DAMPE_RACE_11)
|
||||
RANDO_ENUM_ITEM(RC_GY_WONDER_DAMPE_RACE_12)
|
||||
RANDO_ENUM_ITEM(RC_GY_WONDER_DAMPE_RACE_13)
|
||||
RANDO_ENUM_ITEM(RC_GY_WONDER_DAMPE_RACE_14)
|
||||
RANDO_ENUM_ITEM(RC_GY_WONDER_DAMPE_RACE_15)
|
||||
RANDO_ENUM_ITEM(RC_DMC_WONDER_BENEATH_BRIDGE_PLATFORM)
|
||||
RANDO_ENUM_ITEM(RC_ZR_WONDER_NEAR_DOMAIN_1)
|
||||
RANDO_ENUM_ITEM(RC_ZR_WONDER_NEAR_DOMAIN_2)
|
||||
RANDO_ENUM_ITEM(RC_ZR_WONDER_NEAR_DOMAIN_3)
|
||||
RANDO_ENUM_ITEM(RC_ZR_WONDER_NEAR_DOMAIN_4)
|
||||
RANDO_ENUM_ITEM(RC_ZR_WONDER_BEFORE_LADDER_1)
|
||||
RANDO_ENUM_ITEM(RC_ZR_WONDER_BEFORE_LADDER_2)
|
||||
RANDO_ENUM_ITEM(RC_ZR_WONDER_BEFORE_LADDER_3)
|
||||
RANDO_ENUM_ITEM(RC_ZR_WONDER_BEFORE_LADDER_4)
|
||||
RANDO_ENUM_ITEM(RC_ZR_WONDER_BEFORE_LADDER_5)
|
||||
RANDO_ENUM_ITEM(RC_ZR_WONDER_BEFORE_LADDER_6)
|
||||
RANDO_ENUM_ITEM(RC_ZR_WONDER_AFTER_LADDER_1)
|
||||
RANDO_ENUM_ITEM(RC_ZR_WONDER_AFTER_LADDER_2)
|
||||
RANDO_ENUM_ITEM(RC_ZR_WONDER_AFTER_LADDER_3)
|
||||
RANDO_ENUM_ITEM(RC_ZR_WONDER_FROG_BRIDGE_1)
|
||||
RANDO_ENUM_ITEM(RC_ZR_WONDER_FROG_BRIDGE_2)
|
||||
RANDO_ENUM_ITEM(RC_ZR_WONDER_FROG_BRIDGE_3)
|
||||
RANDO_ENUM_ITEM(RC_ZR_WONDER_PILLARS_1)
|
||||
RANDO_ENUM_ITEM(RC_ZR_WONDER_PILLARS_2)
|
||||
RANDO_ENUM_ITEM(RC_ZR_WONDER_PILLARS_3)
|
||||
RANDO_ENUM_ITEM(RC_ZR_WONDER_PILLARS_4)
|
||||
RANDO_ENUM_ITEM(RC_ZR_WONDER_LOWER_LAND_BRIDGE_1)
|
||||
RANDO_ENUM_ITEM(RC_ZR_WONDER_LOWER_LAND_BRIDGE_2)
|
||||
RANDO_ENUM_ITEM(RC_ZR_WONDER_LOWER_LAND_BRIDGE_3)
|
||||
RANDO_ENUM_ITEM(RC_ZR_WONDER_LOWER_LAND_BRIDGE_4)
|
||||
RANDO_ENUM_ITEM(RC_ZR_WONDER_NEAR_CUCCO_1)
|
||||
RANDO_ENUM_ITEM(RC_ZR_WONDER_NEAR_CUCCO_2)
|
||||
RANDO_ENUM_ITEM(RC_ZR_WONDER_NEAR_CUCCO_3)
|
||||
RANDO_ENUM_ITEM(RC_ZR_WONDER_LOWER_RIVER_1)
|
||||
RANDO_ENUM_ITEM(RC_ZR_WONDER_LOWER_RIVER_2)
|
||||
RANDO_ENUM_ITEM(RC_ZR_WONDER_LOWER_RIVER_3)
|
||||
RANDO_ENUM_ITEM(RC_ZR_WONDER_LOWER_RIVER_4)
|
||||
RANDO_ENUM_ITEM(RC_ZF_WONDER_ROCK)
|
||||
RANDO_ENUM_ITEM(RC_GV_WONDER_LOWER_WATERFALL)
|
||||
RANDO_ENUM_ITEM(RC_GV_WONDER_UPPER_WATERFALL)
|
||||
RANDO_ENUM_ITEM(RC_GF_WONDER_ENTRANCE_SIGN)
|
||||
RANDO_ENUM_ITEM(RC_GF_WONDER_ARCHERY_SIGN)
|
||||
RANDO_ENUM_ITEM(RC_TH_WONDER_1_TORCH_1)
|
||||
RANDO_ENUM_ITEM(RC_TH_WONDER_1_TORCH_2)
|
||||
RANDO_ENUM_ITEM(RC_TH_WONDER_STEEP_SLOPE_LOWER_EXIT)
|
||||
RANDO_ENUM_ITEM(RC_TH_WONDER_STEEP_SLOPE_UPPER_EXIT)
|
||||
RANDO_ENUM_ITEM(RC_TH_WONDER_DOUBLE_JAIL_LOWER_EXIT)
|
||||
RANDO_ENUM_ITEM(RC_TH_WONDER_DOUBLE_JAIL_UPPER_EXIT)
|
||||
RANDO_ENUM_ITEM(RC_TH_WONDER_KITCHEN_SKULL)
|
||||
RANDO_ENUM_ITEM(RC_TH_WONDER_KITCHEN_SOUP)
|
||||
RANDO_ENUM_ITEM(RC_TH_WONDER_DEAD_END_SKULL_ENTRANCE)
|
||||
RANDO_ENUM_ITEM(RC_TH_WONDER_DEAD_END_SKULL_NEAR_JAIL)
|
||||
RANDO_ENUM_ITEM(RC_TH_WONDER_BREAK_ROOM_BOTTOM_SKULL)
|
||||
RANDO_ENUM_ITEM(RC_TH_WONDER_BREAK_ROOM_TOP_SKULL)
|
||||
RANDO_ENUM_ITEM(RC_COLOSSUS_WONDER_OASIS_TREE_1)
|
||||
RANDO_ENUM_ITEM(RC_COLOSSUS_WONDER_OASIS_TREE_2)
|
||||
RANDO_ENUM_ITEM(RC_COLOSSUS_WONDER_OASIS_CHILD_TREE)
|
||||
RANDO_ENUM_ITEM(RC_COLOSSUS_WONDER_GF_TREE_1)
|
||||
RANDO_ENUM_ITEM(RC_COLOSSUS_WONDER_GF_TREE_2)
|
||||
// Dungeon Wonder Items
|
||||
RANDO_ENUM_ITEM(RC_SHADOW_TEMPLE_WONDER_THREE_POTS)
|
||||
RANDO_ENUM_ITEM(RC_GERUDO_TRAINING_GROUND_WONDER_BEAMOS_ROOM)
|
||||
RANDO_ENUM_ITEM(RC_GERUDO_TRAINING_GROUND_WONDER_EYE_STATUE_ROOM)
|
||||
RANDO_ENUM_ITEM(RC_GERUDO_TRAINING_GROUND_WONDER_TORCH_SLUGS_ROOM)
|
||||
// MQ Dungeon Wonder Items
|
||||
RANDO_ENUM_ITEM(RC_DEKU_TREE_MQ_WONDER_BASEMENT_GRAVE_1)
|
||||
RANDO_ENUM_ITEM(RC_DEKU_TREE_MQ_WONDER_BASEMENT_GRAVE_2)
|
||||
RANDO_ENUM_ITEM(RC_DEKU_TREE_MQ_WONDER_BASEMENT_GRAVE_3)
|
||||
RANDO_ENUM_ITEM(RC_DEKU_TREE_MQ_WONDER_BASEMENT_GRAVE_4)
|
||||
RANDO_ENUM_ITEM(RC_JABU_JABUS_BELLY_MQ_WONDER_ENTRANCE_LEFT_COW)
|
||||
RANDO_ENUM_ITEM(RC_JABU_JABUS_BELLY_MQ_WONDER_ENTRANCE_RIGHT_COW)
|
||||
RANDO_ENUM_ITEM(RC_JABU_JABUS_BELLY_MQ_WONDER_ELEVATOR_COW)
|
||||
RANDO_ENUM_ITEM(RC_JABU_JABUS_BELLY_MQ_HOLES_COW)
|
||||
RANDO_ENUM_ITEM(RC_JABU_JABUS_BELLY_MQ_WONDER_BASEMENT_RIGHT_COW_1)
|
||||
RANDO_ENUM_ITEM(RC_JABU_JABUS_BELLY_MQ_WONDER_BASEMENT_RIGHT_COW_2)
|
||||
RANDO_ENUM_ITEM(RC_JABU_JABUS_BELLY_MQ_WONDER_BASEMENT_RIGHT_COW_3)
|
||||
RANDO_ENUM_ITEM(RC_JABU_JABUS_BELLY_MQ_WONDER_BASEMENT_LEFT_COW_1)
|
||||
RANDO_ENUM_ITEM(RC_JABU_JABUS_BELLY_MQ_WONDER_BASEMENT_LEFT_COW_2)
|
||||
RANDO_ENUM_ITEM(RC_JABU_JABUS_BELLY_MQ_WONDER_BASEMENT_LEFT_COW_3)
|
||||
RANDO_ENUM_ITEM(RC_JABU_JABUS_BELLY_MQ_WONDER_AFTER_BIG_OCTO)
|
||||
RANDO_ENUM_ITEM(RC_JABU_JABUS_BELLY_MQ_WONDER_JIGGLIES_COW)
|
||||
RANDO_ENUM_ITEM(RC_JABU_JABUS_BELLY_MQ_WONDER_FALLING_LIKE_LIKES_COW_RIGHT_1)
|
||||
RANDO_ENUM_ITEM(RC_JABU_JABUS_BELLY_MQ_WONDER_FALLING_LIKE_LIKES_COW_RIGHT_2)
|
||||
RANDO_ENUM_ITEM(RC_JABU_JABUS_BELLY_MQ_WONDER_FALLING_LIKE_LIKES_COW_RIGHT_3)
|
||||
RANDO_ENUM_ITEM(RC_JABU_JABUS_BELLY_MQ_WONDER_FALLING_LIKE_LIKES_COW_LEFT_1)
|
||||
RANDO_ENUM_ITEM(RC_JABU_JABUS_BELLY_MQ_WONDER_FALLING_LIKE_LIKES_COW_LEFT_2)
|
||||
RANDO_ENUM_ITEM(RC_JABU_JABUS_BELLY_MQ_WONDER_FALLING_LIKE_LIKES_COW_LEFT_3)
|
||||
RANDO_ENUM_ITEM(RC_JABU_JABUS_BELLY_MQ_WONDER_FALLING_LIKE_LIKES_EXPLOSION_1)
|
||||
RANDO_ENUM_ITEM(RC_JABU_JABUS_BELLY_MQ_WONDER_FALLING_LIKE_LIKES_EXPLOSION_2)
|
||||
RANDO_ENUM_ITEM(RC_JABU_JABUS_BELLY_MQ_WONDER_FALLING_LIKE_LIKES_EXPLOSION_3)
|
||||
RANDO_ENUM_ITEM(RC_JABU_JABUS_BELLY_MQ_WONDER_BEFORE_BOSS_LEFT_COW)
|
||||
RANDO_ENUM_ITEM(RC_JABU_JABUS_BELLY_MQ_WONDER_BEFORE_BOSS_RIGHT_COW_1)
|
||||
RANDO_ENUM_ITEM(RC_JABU_JABUS_BELLY_MQ_WONDER_BEFORE_BOSS_RIGHT_COW_2)
|
||||
RANDO_ENUM_ITEM(RC_FIRE_TEMPLE_MQ_WONDER_SHORTCUT_ROOM_1)
|
||||
RANDO_ENUM_ITEM(RC_FIRE_TEMPLE_MQ_WONDER_SHORTCUT_ROOM_2)
|
||||
RANDO_ENUM_ITEM(RC_FIRE_TEMPLE_MQ_WONDER_SHORTCUT_ROOM_3)
|
||||
RANDO_ENUM_ITEM(RC_FIRE_TEMPLE_MQ_WONDER_BOSS_KEY_ROOM_HOOKSHOT)
|
||||
RANDO_ENUM_ITEM(RC_FIRE_TEMPLE_MQ_WONDER_BOSS_KEY_ROOM_BOW)
|
||||
RANDO_ENUM_ITEM(RC_FIRE_TEMPLE_MQ_WONDER_LIZALFOS_MAZE)
|
||||
RANDO_ENUM_ITEM(RC_FIRE_TEMPLE_MQ_WONDER_EAST_TOWER_LARGE_FACE_1)
|
||||
RANDO_ENUM_ITEM(RC_FIRE_TEMPLE_MQ_WONDER_EAST_TOWER_LARGE_FACE_2)
|
||||
RANDO_ENUM_ITEM(RC_FIRE_TEMPLE_MQ_WONDER_EAST_TOWER_SMALL_FACE_1)
|
||||
RANDO_ENUM_ITEM(RC_FIRE_TEMPLE_MQ_WONDER_EAST_TOWER_SMALL_FACE_2)
|
||||
RANDO_ENUM_ITEM(RC_FIRE_TEMPLE_MQ_WONDER_TORCH_ROOM)
|
||||
RANDO_ENUM_ITEM(RC_FIRE_TEMPLE_MQ_WONDER_FIRE_MAZE)
|
||||
RANDO_ENUM_ITEM(RC_FIRE_TEMPLE_MQ_WONDER_AFTER_FLARE_DANCER)
|
||||
RANDO_ENUM_ITEM(RC_FIRE_TEMPLE_MQ_WONDER_STAIRCASE)
|
||||
RANDO_ENUM_ITEM(RC_WATER_TEMPLE_MQ_WONDER_LIZALFOS_ROOM)
|
||||
RANDO_ENUM_ITEM(RC_WATER_TEMPLE_MQ_WONDER_LONGSHOT_ROOM)
|
||||
RANDO_ENUM_ITEM(RC_WATER_TEMPLE_MQ_WONDER_STALFOS_ROOM)
|
||||
RANDO_ENUM_ITEM(RC_WATER_TEMPLE_MQ_WONDER_HOOKSHOT_STAIRCASE_RIGHT_1)
|
||||
RANDO_ENUM_ITEM(RC_WATER_TEMPLE_MQ_WONDER_HOOKSHOT_STAIRCASE_RIGHT_2)
|
||||
RANDO_ENUM_ITEM(RC_WATER_TEMPLE_MQ_WONDER_HOOKSHOT_STAIRCASE_RIGHT_3)
|
||||
RANDO_ENUM_ITEM(RC_WATER_TEMPLE_MQ_WONDER_HOOKSHOT_STAIRCASE_LEFT_1)
|
||||
RANDO_ENUM_ITEM(RC_WATER_TEMPLE_MQ_WONDER_HOOKSHOT_STAIRCASE_LEFT_2)
|
||||
RANDO_ENUM_ITEM(RC_WATER_TEMPLE_MQ_WONDER_HOOKSHOT_STAIRCASE_LEFT_3)
|
||||
RANDO_ENUM_ITEM(RC_WATER_TEMPLE_MQ_WONDER_AFTER_DARK_LINK)
|
||||
RANDO_ENUM_ITEM(RC_WATER_TEMPLE_MQ_WONDER_DRAGON_ROOM_LEFT_EYE)
|
||||
RANDO_ENUM_ITEM(RC_WATER_TEMPLE_MQ_WONDER_DRAGON_ROOM_RIGHT_EYE)
|
||||
RANDO_ENUM_ITEM(RC_WATER_TEMPLE_MQ_WONDER_DRAGON_ROOM_PORTRAIT)
|
||||
RANDO_ENUM_ITEM(RC_WATER_TEMPLE_MQ_WONDER_TRIPLE_TORCHES)
|
||||
RANDO_ENUM_ITEM(RC_WATER_TEMPLE_MQ_WONDER_WATER_SPROUTS_1)
|
||||
RANDO_ENUM_ITEM(RC_WATER_TEMPLE_MQ_WONDER_WATER_SPROUTS_2)
|
||||
RANDO_ENUM_ITEM(RC_WATER_TEMPLE_MQ_WONDER_FREESTANDING_ROOM)
|
||||
RANDO_ENUM_ITEM(RC_WATER_TEMPLE_MQ_WONDER_BEFORE_BOSS_1)
|
||||
RANDO_ENUM_ITEM(RC_WATER_TEMPLE_MQ_WONDER_BEFORE_BOSS_2)
|
||||
RANDO_ENUM_ITEM(RC_WATER_TEMPLE_MQ_WONDER_UNDER_PILLAR_ROOM)
|
||||
RANDO_ENUM_ITEM(RC_WATER_TEMPLE_MQ_WONDER_LIZALFOS_HALLWAY)
|
||||
RANDO_ENUM_ITEM(RC_WATER_TEMPLE_MQ_WONDER_GS_STORAGE_ROOM)
|
||||
RANDO_ENUM_ITEM(RC_SPIRIT_TEMPLE_MQ_WONDER_CHEST_HAMMER)
|
||||
RANDO_ENUM_ITEM(RC_SPIRIT_TEMPLE_MQ_WONDER_CHEST_SLASH)
|
||||
RANDO_ENUM_ITEM(RC_SHADOW_TEMPLE_MQ_WONDER_THREE_POTS)
|
||||
RANDO_ENUM_ITEM(RC_BOTTOM_OF_THE_WELL_MQ_WONDER_MAIN_ROOM_LEFT_1)
|
||||
RANDO_ENUM_ITEM(RC_BOTTOM_OF_THE_WELL_MQ_WONDER_MAIN_ROOM_LEFT_2)
|
||||
RANDO_ENUM_ITEM(RC_BOTTOM_OF_THE_WELL_MQ_WONDER_MAIN_ROOM_LEFT_3)
|
||||
RANDO_ENUM_ITEM(RC_BOTTOM_OF_THE_WELL_MQ_WONDER_MAIN_ROOM_LEFT_4)
|
||||
RANDO_ENUM_ITEM(RC_BOTTOM_OF_THE_WELL_MQ_WONDER_MAIN_ROOM_RIGHT_1)
|
||||
RANDO_ENUM_ITEM(RC_BOTTOM_OF_THE_WELL_MQ_WONDER_MAIN_ROOM_RIGHT_2)
|
||||
RANDO_ENUM_ITEM(RC_BOTTOM_OF_THE_WELL_MQ_WONDER_MAIN_ROOM_RIGHT_3)
|
||||
RANDO_ENUM_ITEM(RC_BOTTOM_OF_THE_WELL_MQ_WONDER_MAIN_ROOM_RIGHT_4)
|
||||
RANDO_ENUM_ITEM(RC_BOTTOM_OF_THE_WELL_MQ_WONDER_SIDE_ROOM_1)
|
||||
RANDO_ENUM_ITEM(RC_BOTTOM_OF_THE_WELL_MQ_WONDER_SIDE_ROOM_2)
|
||||
RANDO_ENUM_ITEM(RC_BOTTOM_OF_THE_WELL_MQ_WONDER_SIDE_ROOM_3)
|
||||
RANDO_ENUM_ITEM(RC_BOTTOM_OF_THE_WELL_MQ_WONDER_SIDE_ROOM_4)
|
||||
RANDO_ENUM_ITEM(RC_GERUDO_TRAINING_GROUND_MQ_WONDER_DINOLFOS_ROOM)
|
||||
RANDO_ENUM_ITEM(RC_GERUDO_TRAINING_GROUND_MQ_WONDER_EYE_STATUE)
|
||||
RANDO_ENUM_ITEM(RC_GANONS_CASTLE_MQ_WONDER_SHADOW_TRIAL)
|
||||
// End Wonder Items
|
||||
|
||||
RANDO_ENUM_ITEM(RC_SFM_FAIRY_GROTTO_FAIRY_1)
|
||||
RANDO_ENUM_ITEM(RC_SFM_FAIRY_GROTTO_FAIRY_2)
|
||||
RANDO_ENUM_ITEM(RC_SFM_FAIRY_GROTTO_FAIRY_3)
|
||||
|
|
|
|||
|
|
@ -1368,6 +1368,33 @@ RANDO_ENUM_ITEM(RHT_TREE_LON_LON_RANCH)
|
|||
RANDO_ENUM_ITEM(RHT_TREE_KAKARIKO)
|
||||
RANDO_ENUM_ITEM(RHT_BUSH_HYRULE_FIELD)
|
||||
RANDO_ENUM_ITEM(RHT_BUSH_ZORAS_FOUNTAIN)
|
||||
// Shuffle Wonder Items
|
||||
RANDO_ENUM_ITEM(RHT_WONDER_ITEM_KOKIRI_FOREST)
|
||||
RANDO_ENUM_ITEM(RHT_WONDER_ITEM_HYRULE_FIELD)
|
||||
RANDO_ENUM_ITEM(RHT_WONDER_ITEM_MARKET)
|
||||
RANDO_ENUM_ITEM(RHT_WONDER_ITEM_LON_LON_RANCH)
|
||||
RANDO_ENUM_ITEM(RHT_WONDER_ITEM_HYRULE_CASTLE)
|
||||
RANDO_ENUM_ITEM(RHT_WONDER_ITEM_CASTLE_COURTYARD_ZELDA)
|
||||
RANDO_ENUM_ITEM(RHT_WONDER_ITEM_LOST_WOODS)
|
||||
RANDO_ENUM_ITEM(RHT_WONDER_ITEM_SACRED_FOREST_MEADOW)
|
||||
RANDO_ENUM_ITEM(RHT_WONDER_ITEM_KAKARIKO_VILLAGE)
|
||||
RANDO_ENUM_ITEM(RHT_WONDER_ITEM_DAMPES_GRAVE)
|
||||
RANDO_ENUM_ITEM(RHT_WONDER_ITEM_DEATH_MOUNTAIN_CRATER)
|
||||
RANDO_ENUM_ITEM(RHT_WONDER_ITEM_ZORAS_RIVER)
|
||||
RANDO_ENUM_ITEM(RHT_WONDER_ITEM_ZORAS_FOUNTAIN)
|
||||
RANDO_ENUM_ITEM(RHT_WONDER_ITEM_GERUDO_VALLEY)
|
||||
RANDO_ENUM_ITEM(RHT_WONDER_ITEM_GERUDOS_FORTRESS)
|
||||
RANDO_ENUM_ITEM(RHT_WONDER_ITEM_THIEVES_HIDEOUT)
|
||||
RANDO_ENUM_ITEM(RHT_WONDER_ITEM_DESERT_COLOSSUS)
|
||||
RANDO_ENUM_ITEM(RHT_WONDER_ITEM_DEKU_TREE)
|
||||
RANDO_ENUM_ITEM(RHT_WONDER_ITEM_JABU_JABU)
|
||||
RANDO_ENUM_ITEM(RHT_WONDER_ITEM_FIRE_TEMPLE)
|
||||
RANDO_ENUM_ITEM(RHT_WONDER_ITEM_WATER_TEMPLE)
|
||||
RANDO_ENUM_ITEM(RHT_WONDER_ITEM_SPIRIT_TEMPLE)
|
||||
RANDO_ENUM_ITEM(RHT_WONDER_ITEM_SHADOW_TEMPLE)
|
||||
RANDO_ENUM_ITEM(RHT_BOTTOM_OF_THE_WELL_WONDER_ITEM)
|
||||
RANDO_ENUM_ITEM(RHT_WONDER_ITEM_GERUDO_TRAINING_GROUND)
|
||||
RANDO_ENUM_ITEM(RHT_GANONS_CASTLE_WONDER_ITEM)
|
||||
// Ganon Line
|
||||
RANDO_ENUM_ITEM(RHT_GANON_JOKE01)
|
||||
RANDO_ENUM_ITEM(RHT_GANON_JOKE02)
|
||||
|
|
|
|||
|
|
@ -1484,6 +1484,212 @@ RANDO_ENUM_ITEM(RAND_INF_GANONS_CASTLE_MQ_WATER_TRIAL_HEART)
|
|||
RANDO_ENUM_ITEM(RAND_INF_GANONS_CASTLE_MQ_LIGHT_TRIAL_RIGHT_HEART)
|
||||
RANDO_ENUM_ITEM(RAND_INF_GANONS_CASTLE_MQ_LIGHT_TRIAL_LEFT_HEART)
|
||||
|
||||
// Overworld Wonder Items
|
||||
RANDO_ENUM_ITEM(RAND_INF_KF_WONDER_TRAINING_1)
|
||||
RANDO_ENUM_ITEM(RAND_INF_KF_WONDER_TRAINING_2)
|
||||
RANDO_ENUM_ITEM(RAND_INF_KF_WONDER_TRAINING_3)
|
||||
RANDO_ENUM_ITEM(RAND_INF_KF_WONDER_SHOP)
|
||||
RANDO_ENUM_ITEM(RAND_INF_KF_WONDER_SIGN)
|
||||
RANDO_ENUM_ITEM(RAND_INF_KF_WONDER_PLATFORMS_1)
|
||||
RANDO_ENUM_ITEM(RAND_INF_KF_WONDER_PLATFORMS_2)
|
||||
RANDO_ENUM_ITEM(RAND_INF_KF_WONDER_CRAWL_GRASS_1)
|
||||
RANDO_ENUM_ITEM(RAND_INF_KF_WONDER_CRAWL_GRASS_2)
|
||||
RANDO_ENUM_ITEM(RAND_INF_HF_WONDER_BRIDGE_1)
|
||||
RANDO_ENUM_ITEM(RAND_INF_HF_WONDER_BRIDGE_2)
|
||||
RANDO_ENUM_ITEM(RAND_INF_HF_WONDER_BRIDGE_3)
|
||||
RANDO_ENUM_ITEM(RAND_INF_MKT_WONDER_DAY_1)
|
||||
RANDO_ENUM_ITEM(RAND_INF_MKT_WONDER_DAY_2)
|
||||
RANDO_ENUM_ITEM(RAND_INF_MKT_WONDER_DAY_3)
|
||||
RANDO_ENUM_ITEM(RAND_INF_MKT_WONDER_DAY_4)
|
||||
RANDO_ENUM_ITEM(RAND_INF_MKT_WONDER_DAY_5)
|
||||
RANDO_ENUM_ITEM(RAND_INF_MKT_WONDER_NIGHT_1)
|
||||
RANDO_ENUM_ITEM(RAND_INF_MKT_WONDER_NIGHT_2)
|
||||
RANDO_ENUM_ITEM(RAND_INF_LLR_WONDER_BIG_FENCE)
|
||||
RANDO_ENUM_ITEM(RAND_INF_LLR_WONDER_SMALL_FENCE)
|
||||
RANDO_ENUM_ITEM(RAND_INF_HC_WONDER_LEFT_TORCH)
|
||||
RANDO_ENUM_ITEM(RAND_INF_HC_WONDER_RIGHT_TORCH)
|
||||
RANDO_ENUM_ITEM(RAND_INF_HC_WONDER_MOAT_1)
|
||||
RANDO_ENUM_ITEM(RAND_INF_HC_WONDER_MOAT_2)
|
||||
RANDO_ENUM_ITEM(RAND_INF_HC_WONDER_MOAT_3)
|
||||
RANDO_ENUM_ITEM(RAND_INF_HC_WONDER_MOAT_4)
|
||||
RANDO_ENUM_ITEM(RAND_INF_HC_WONDER_MOAT_5)
|
||||
RANDO_ENUM_ITEM(RAND_INF_HC_WONDER_MOAT_6)
|
||||
RANDO_ENUM_ITEM(RAND_INF_HC_WONDER_MOAT_7)
|
||||
RANDO_ENUM_ITEM(RAND_INF_HC_WONDER_MOAT_8)
|
||||
RANDO_ENUM_ITEM(RAND_INF_HC_WONDER_MOAT_9)
|
||||
RANDO_ENUM_ITEM(RAND_INF_HC_WONDER_MOAT_10)
|
||||
RANDO_ENUM_ITEM(RAND_INF_HC_WONDER_COURTYARD_RIGHT_WINDOW)
|
||||
RANDO_ENUM_ITEM(RAND_INF_HC_WONDER_COURTYARD_LEFT_WINDOW)
|
||||
RANDO_ENUM_ITEM(RAND_INF_LW_WONDER_BACK_SKULL_KIDS_GRASS_1)
|
||||
RANDO_ENUM_ITEM(RAND_INF_LW_WONDER_BACK_SKULL_KIDS_GRASS_2)
|
||||
RANDO_ENUM_ITEM(RAND_INF_LW_WONDER_FRONT_SKULL_KIDS_GRASS)
|
||||
RANDO_ENUM_ITEM(RAND_INF_SFM_WONDER_ENTRANCE)
|
||||
RANDO_ENUM_ITEM(RAND_INF_SFM_WONDER_MAZE_1)
|
||||
RANDO_ENUM_ITEM(RAND_INF_SFM_WONDER_MAZE_2)
|
||||
RANDO_ENUM_ITEM(RAND_INF_SFM_WONDER_MAZE_3)
|
||||
RANDO_ENUM_ITEM(RAND_INF_SFM_WONDER_MAZE_4)
|
||||
RANDO_ENUM_ITEM(RAND_INF_SFM_WONDER_MAZE_5)
|
||||
RANDO_ENUM_ITEM(RAND_INF_KAK_WONDER_UNDER_CONSTRUCTION)
|
||||
RANDO_ENUM_ITEM(RAND_INF_KAK_WONDER_ABOVE_COW)
|
||||
RANDO_ENUM_ITEM(RAND_INF_GY_WONDER_DAMPE_RACE_1)
|
||||
RANDO_ENUM_ITEM(RAND_INF_GY_WONDER_DAMPE_RACE_2)
|
||||
RANDO_ENUM_ITEM(RAND_INF_GY_WONDER_DAMPE_RACE_3)
|
||||
RANDO_ENUM_ITEM(RAND_INF_GY_WONDER_DAMPE_RACE_4)
|
||||
RANDO_ENUM_ITEM(RAND_INF_GY_WONDER_DAMPE_RACE_5)
|
||||
RANDO_ENUM_ITEM(RAND_INF_GY_WONDER_DAMPE_RACE_6)
|
||||
RANDO_ENUM_ITEM(RAND_INF_GY_WONDER_DAMPE_RACE_7)
|
||||
RANDO_ENUM_ITEM(RAND_INF_GY_WONDER_DAMPE_RACE_8)
|
||||
RANDO_ENUM_ITEM(RAND_INF_GY_WONDER_DAMPE_RACE_9)
|
||||
RANDO_ENUM_ITEM(RAND_INF_GY_WONDER_DAMPE_RACE_10)
|
||||
RANDO_ENUM_ITEM(RAND_INF_GY_WONDER_DAMPE_RACE_11)
|
||||
RANDO_ENUM_ITEM(RAND_INF_GY_WONDER_DAMPE_RACE_12)
|
||||
RANDO_ENUM_ITEM(RAND_INF_GY_WONDER_DAMPE_RACE_13)
|
||||
RANDO_ENUM_ITEM(RAND_INF_GY_WONDER_DAMPE_RACE_14)
|
||||
RANDO_ENUM_ITEM(RAND_INF_GY_WONDER_DAMPE_RACE_15)
|
||||
RANDO_ENUM_ITEM(RAND_INF_DMC_WONDER_BENEATH_BRIDGE_PLATFORM)
|
||||
RANDO_ENUM_ITEM(RAND_INF_ZR_WONDER_NEAR_DOMAIN_1)
|
||||
RANDO_ENUM_ITEM(RAND_INF_ZR_WONDER_NEAR_DOMAIN_2)
|
||||
RANDO_ENUM_ITEM(RAND_INF_ZR_WONDER_NEAR_DOMAIN_3)
|
||||
RANDO_ENUM_ITEM(RAND_INF_ZR_WONDER_NEAR_DOMAIN_4)
|
||||
RANDO_ENUM_ITEM(RAND_INF_ZR_WONDER_BEFORE_LADDER_1)
|
||||
RANDO_ENUM_ITEM(RAND_INF_ZR_WONDER_BEFORE_LADDER_2)
|
||||
RANDO_ENUM_ITEM(RAND_INF_ZR_WONDER_BEFORE_LADDER_3)
|
||||
RANDO_ENUM_ITEM(RAND_INF_ZR_WONDER_BEFORE_LADDER_4)
|
||||
RANDO_ENUM_ITEM(RAND_INF_ZR_WONDER_BEFORE_LADDER_5)
|
||||
RANDO_ENUM_ITEM(RAND_INF_ZR_WONDER_BEFORE_LADDER_6)
|
||||
RANDO_ENUM_ITEM(RAND_INF_ZR_WONDER_AFTER_LADDER_1)
|
||||
RANDO_ENUM_ITEM(RAND_INF_ZR_WONDER_AFTER_LADDER_2)
|
||||
RANDO_ENUM_ITEM(RAND_INF_ZR_WONDER_AFTER_LADDER_3)
|
||||
RANDO_ENUM_ITEM(RAND_INF_ZR_WONDER_FROG_BRIDGE_1)
|
||||
RANDO_ENUM_ITEM(RAND_INF_ZR_WONDER_FROG_BRIDGE_2)
|
||||
RANDO_ENUM_ITEM(RAND_INF_ZR_WONDER_FROG_BRIDGE_3)
|
||||
RANDO_ENUM_ITEM(RAND_INF_ZR_WONDER_PILLARS_1)
|
||||
RANDO_ENUM_ITEM(RAND_INF_ZR_WONDER_PILLARS_2)
|
||||
RANDO_ENUM_ITEM(RAND_INF_ZR_WONDER_PILLARS_3)
|
||||
RANDO_ENUM_ITEM(RAND_INF_ZR_WONDER_PILLARS_4)
|
||||
RANDO_ENUM_ITEM(RAND_INF_ZR_WONDER_LOWER_LAND_BRIDGE_1)
|
||||
RANDO_ENUM_ITEM(RAND_INF_ZR_WONDER_LOWER_LAND_BRIDGE_2)
|
||||
RANDO_ENUM_ITEM(RAND_INF_ZR_WONDER_LOWER_LAND_BRIDGE_3)
|
||||
RANDO_ENUM_ITEM(RAND_INF_ZR_WONDER_LOWER_LAND_BRIDGE_4)
|
||||
RANDO_ENUM_ITEM(RAND_INF_ZR_WONDER_NEAR_CUCCO_1)
|
||||
RANDO_ENUM_ITEM(RAND_INF_ZR_WONDER_NEAR_CUCCO_2)
|
||||
RANDO_ENUM_ITEM(RAND_INF_ZR_WONDER_NEAR_CUCCO_3)
|
||||
RANDO_ENUM_ITEM(RAND_INF_ZR_WONDER_LOWER_RIVER_1)
|
||||
RANDO_ENUM_ITEM(RAND_INF_ZR_WONDER_LOWER_RIVER_2)
|
||||
RANDO_ENUM_ITEM(RAND_INF_ZR_WONDER_LOWER_RIVER_3)
|
||||
RANDO_ENUM_ITEM(RAND_INF_ZR_WONDER_LOWER_RIVER_4)
|
||||
RANDO_ENUM_ITEM(RAND_INF_ZF_WONDER_ROCK)
|
||||
RANDO_ENUM_ITEM(RAND_INF_GV_WONDER_LOWER_WATERFALL)
|
||||
RANDO_ENUM_ITEM(RAND_INF_GV_WONDER_UPPER_WATERFALL)
|
||||
RANDO_ENUM_ITEM(RAND_INF_GF_WONDER_ENTRANCE_SIGN)
|
||||
RANDO_ENUM_ITEM(RAND_INF_GF_WONDER_ARCHERY_SIGN)
|
||||
RANDO_ENUM_ITEM(RAND_INF_TH_WONDER_1_TORCH_1)
|
||||
RANDO_ENUM_ITEM(RAND_INF_TH_WONDER_1_TORCH_2)
|
||||
RANDO_ENUM_ITEM(RAND_INF_TH_WONDER_STEEP_SLOPE_LOWER_EXIT)
|
||||
RANDO_ENUM_ITEM(RAND_INF_TH_WONDER_STEEP_SLOPE_UPPER_EXIT)
|
||||
RANDO_ENUM_ITEM(RAND_INF_TH_WONDER_DOUBLE_JAIL_LOWER_EXIT)
|
||||
RANDO_ENUM_ITEM(RAND_INF_TH_WONDER_DOUBLE_JAIL_UPPER_EXIT)
|
||||
RANDO_ENUM_ITEM(RAND_INF_TH_WONDER_KITCHEN_SKULL)
|
||||
RANDO_ENUM_ITEM(RAND_INF_TH_WONDER_KITCHEN_SOUP)
|
||||
RANDO_ENUM_ITEM(RAND_INF_TH_WONDER_DEAD_END_SKULL_ENTRANCE)
|
||||
RANDO_ENUM_ITEM(RAND_INF_TH_WONDER_DEAD_END_SKULL_NEAR_JAIL)
|
||||
RANDO_ENUM_ITEM(RAND_INF_TH_WONDER_BREAK_ROOM_BOTTOM_SKULL)
|
||||
RANDO_ENUM_ITEM(RAND_INF_TH_WONDER_BREAK_ROOM_TOP_SKULL)
|
||||
RANDO_ENUM_ITEM(RAND_INF_COLOSSUS_WONDER_OASIS_TREE_1)
|
||||
RANDO_ENUM_ITEM(RAND_INF_COLOSSUS_WONDER_OASIS_TREE_2)
|
||||
RANDO_ENUM_ITEM(RAND_INF_COLOSSUS_WONDER_OASIS_CHILD_TREE)
|
||||
RANDO_ENUM_ITEM(RAND_INF_COLOSSUS_WONDER_GF_TREE_1)
|
||||
RANDO_ENUM_ITEM(RAND_INF_COLOSSUS_WONDER_GF_TREE_2)
|
||||
// Dungeon Wonder Items
|
||||
RANDO_ENUM_ITEM(RAND_INF_SHADOW_TEMPLE_WONDER_THREE_POTS)
|
||||
RANDO_ENUM_ITEM(RAND_INF_GERUDO_TRAINING_GROUND_WONDER_BEAMOS_ROOM)
|
||||
RANDO_ENUM_ITEM(RAND_INF_GERUDO_TRAINING_GROUND_WONDER_EYE_STATUE_ROOM)
|
||||
RANDO_ENUM_ITEM(RAND_INF_GERUDO_TRAINING_GROUND_WONDER_TORCH_SLUGS_ROOM)
|
||||
// MQ Dungeon Wonder Items
|
||||
RANDO_ENUM_ITEM(RAND_INF_DEKU_TREE_MQ_WONDER_BASEMENT_GRAVE_1)
|
||||
RANDO_ENUM_ITEM(RAND_INF_DEKU_TREE_MQ_WONDER_BASEMENT_GRAVE_2)
|
||||
RANDO_ENUM_ITEM(RAND_INF_DEKU_TREE_MQ_WONDER_BASEMENT_GRAVE_3)
|
||||
RANDO_ENUM_ITEM(RAND_INF_DEKU_TREE_MQ_WONDER_BASEMENT_GRAVE_4)
|
||||
RANDO_ENUM_ITEM(RAND_INF_JABU_JABUS_BELLY_MQ_WONDER_ENTRANCE_LEFT_COW)
|
||||
RANDO_ENUM_ITEM(RAND_INF_JABU_JABUS_BELLY_MQ_WONDER_ENTRANCE_RIGHT_COW)
|
||||
RANDO_ENUM_ITEM(RAND_INF_JABU_JABUS_BELLY_MQ_WONDER_ELEVATOR_COW)
|
||||
RANDO_ENUM_ITEM(RAND_INF_JABU_JABUS_BELLY_MQ_HOLES_COW)
|
||||
RANDO_ENUM_ITEM(RAND_INF_JABU_JABUS_BELLY_MQ_WONDER_BASEMENT_RIGHT_COW_1)
|
||||
RANDO_ENUM_ITEM(RAND_INF_JABU_JABUS_BELLY_MQ_WONDER_BASEMENT_RIGHT_COW_2)
|
||||
RANDO_ENUM_ITEM(RAND_INF_JABU_JABUS_BELLY_MQ_WONDER_BASEMENT_RIGHT_COW_3)
|
||||
RANDO_ENUM_ITEM(RAND_INF_JABU_JABUS_BELLY_MQ_WONDER_BASEMENT_LEFT_COW_1)
|
||||
RANDO_ENUM_ITEM(RAND_INF_JABU_JABUS_BELLY_MQ_WONDER_BASEMENT_LEFT_COW_2)
|
||||
RANDO_ENUM_ITEM(RAND_INF_JABU_JABUS_BELLY_MQ_WONDER_BASEMENT_LEFT_COW_3)
|
||||
RANDO_ENUM_ITEM(RAND_INF_JABU_JABUS_BELLY_MQ_WONDER_AFTER_BIG_OCTO)
|
||||
RANDO_ENUM_ITEM(RAND_INF_JABU_JABUS_BELLY_MQ_WONDER_JIGGLIES_COW)
|
||||
RANDO_ENUM_ITEM(RAND_INF_JABU_JABUS_BELLY_MQ_WONDER_FALLING_LIKE_LIKES_COW_RIGHT_1)
|
||||
RANDO_ENUM_ITEM(RAND_INF_JABU_JABUS_BELLY_MQ_WONDER_FALLING_LIKE_LIKES_COW_RIGHT_2)
|
||||
RANDO_ENUM_ITEM(RAND_INF_JABU_JABUS_BELLY_MQ_WONDER_FALLING_LIKE_LIKES_COW_RIGHT_3)
|
||||
RANDO_ENUM_ITEM(RAND_INF_JABU_JABUS_BELLY_MQ_WONDER_FALLING_LIKE_LIKES_COW_LEFT_1)
|
||||
RANDO_ENUM_ITEM(RAND_INF_JABU_JABUS_BELLY_MQ_WONDER_FALLING_LIKE_LIKES_COW_LEFT_2)
|
||||
RANDO_ENUM_ITEM(RAND_INF_JABU_JABUS_BELLY_MQ_WONDER_FALLING_LIKE_LIKES_COW_LEFT_3)
|
||||
RANDO_ENUM_ITEM(RAND_INF_JABU_JABUS_BELLY_MQ_WONDER_FALLING_LIKE_LIKES_EXPLOSION_1)
|
||||
RANDO_ENUM_ITEM(RAND_INF_JABU_JABUS_BELLY_MQ_WONDER_FALLING_LIKE_LIKES_EXPLOSION_2)
|
||||
RANDO_ENUM_ITEM(RAND_INF_JABU_JABUS_BELLY_MQ_WONDER_FALLING_LIKE_LIKES_EXPLOSION_3)
|
||||
RANDO_ENUM_ITEM(RAND_INF_JABU_JABUS_BELLY_MQ_WONDER_BEFORE_BOSS_LEFT_COW)
|
||||
RANDO_ENUM_ITEM(RAND_INF_JABU_JABUS_BELLY_MQ_WONDER_BEFORE_BOSS_RIGHT_COW_1)
|
||||
RANDO_ENUM_ITEM(RAND_INF_JABU_JABUS_BELLY_MQ_WONDER_BEFORE_BOSS_RIGHT_COW_2)
|
||||
RANDO_ENUM_ITEM(RAND_INF_FIRE_TEMPLE_MQ_WONDER_SHORTCUT_ROOM_1)
|
||||
RANDO_ENUM_ITEM(RAND_INF_FIRE_TEMPLE_MQ_WONDER_SHORTCUT_ROOM_2)
|
||||
RANDO_ENUM_ITEM(RAND_INF_FIRE_TEMPLE_MQ_WONDER_SHORTCUT_ROOM_3)
|
||||
RANDO_ENUM_ITEM(RAND_INF_FIRE_TEMPLE_MQ_WONDER_BOSS_KEY_ROOM_HOOKSHOT)
|
||||
RANDO_ENUM_ITEM(RAND_INF_FIRE_TEMPLE_MQ_WONDER_BOSS_KEY_ROOM_BOW)
|
||||
RANDO_ENUM_ITEM(RAND_INF_FIRE_TEMPLE_MQ_WONDER_LIZALFOS_MAZE)
|
||||
RANDO_ENUM_ITEM(RAND_INF_FIRE_TEMPLE_MQ_WONDER_EAST_TOWER_LARGE_FACE_1)
|
||||
RANDO_ENUM_ITEM(RAND_INF_FIRE_TEMPLE_MQ_WONDER_EAST_TOWER_LARGE_FACE_2)
|
||||
RANDO_ENUM_ITEM(RAND_INF_FIRE_TEMPLE_MQ_WONDER_EAST_TOWER_SMALL_FACE_1)
|
||||
RANDO_ENUM_ITEM(RAND_INF_FIRE_TEMPLE_MQ_WONDER_EAST_TOWER_SMALL_FACE_2)
|
||||
RANDO_ENUM_ITEM(RAND_INF_FIRE_TEMPLE_MQ_WONDER_TORCH_ROOM)
|
||||
RANDO_ENUM_ITEM(RAND_INF_FIRE_TEMPLE_MQ_WONDER_FIRE_MAZE)
|
||||
RANDO_ENUM_ITEM(RAND_INF_FIRE_TEMPLE_MQ_WONDER_AFTER_FLARE_DANCER)
|
||||
RANDO_ENUM_ITEM(RAND_INF_FIRE_TEMPLE_MQ_WONDER_STAIRCASE)
|
||||
RANDO_ENUM_ITEM(RAND_INF_WATER_TEMPLE_MQ_WONDER_LIZALFOS_ROOM)
|
||||
RANDO_ENUM_ITEM(RAND_INF_WATER_TEMPLE_MQ_WONDER_LONGSHOT_ROOM)
|
||||
RANDO_ENUM_ITEM(RAND_INF_WATER_TEMPLE_MQ_WONDER_STALFOS_ROOM)
|
||||
RANDO_ENUM_ITEM(RAND_INF_WATER_TEMPLE_MQ_WONDER_HOOKSHOT_STAIRCASE_RIGHT_1)
|
||||
RANDO_ENUM_ITEM(RAND_INF_WATER_TEMPLE_MQ_WONDER_HOOKSHOT_STAIRCASE_RIGHT_2)
|
||||
RANDO_ENUM_ITEM(RAND_INF_WATER_TEMPLE_MQ_WONDER_HOOKSHOT_STAIRCASE_RIGHT_3)
|
||||
RANDO_ENUM_ITEM(RAND_INF_WATER_TEMPLE_MQ_WONDER_HOOKSHOT_STAIRCASE_LEFT_1)
|
||||
RANDO_ENUM_ITEM(RAND_INF_WATER_TEMPLE_MQ_WONDER_HOOKSHOT_STAIRCASE_LEFT_2)
|
||||
RANDO_ENUM_ITEM(RAND_INF_WATER_TEMPLE_MQ_WONDER_HOOKSHOT_STAIRCASE_LEFT_3)
|
||||
RANDO_ENUM_ITEM(RAND_INF_WATER_TEMPLE_MQ_WONDER_AFTER_DARK_LINK)
|
||||
RANDO_ENUM_ITEM(RAND_INF_WATER_TEMPLE_MQ_WONDER_DRAGON_ROOM_LEFT_EYE)
|
||||
RANDO_ENUM_ITEM(RAND_INF_WATER_TEMPLE_MQ_WONDER_DRAGON_ROOM_RIGHT_EYE)
|
||||
RANDO_ENUM_ITEM(RAND_INF_WATER_TEMPLE_MQ_WONDER_DRAGON_ROOM_PORTRAIT)
|
||||
RANDO_ENUM_ITEM(RAND_INF_WATER_TEMPLE_MQ_WONDER_TRIPLE_TORCHES)
|
||||
RANDO_ENUM_ITEM(RAND_INF_WATER_TEMPLE_MQ_WONDER_WATER_SPROUTS_1)
|
||||
RANDO_ENUM_ITEM(RAND_INF_WATER_TEMPLE_MQ_WONDER_WATER_SPROUTS_2)
|
||||
RANDO_ENUM_ITEM(RAND_INF_WATER_TEMPLE_MQ_WONDER_FREESTANDING_ROOM)
|
||||
RANDO_ENUM_ITEM(RAND_INF_WATER_TEMPLE_MQ_WONDER_BEFORE_BOSS_1)
|
||||
RANDO_ENUM_ITEM(RAND_INF_WATER_TEMPLE_MQ_WONDER_BEFORE_BOSS_2)
|
||||
RANDO_ENUM_ITEM(RAND_INF_WATER_TEMPLE_MQ_WONDER_UNDER_PILLAR_ROOM)
|
||||
RANDO_ENUM_ITEM(RAND_INF_WATER_TEMPLE_MQ_WONDER_LIZALFOS_HALLWAY)
|
||||
RANDO_ENUM_ITEM(RAND_INF_WATER_TEMPLE_MQ_WONDER_GS_STORAGE_ROOM)
|
||||
RANDO_ENUM_ITEM(RAND_INF_SPIRIT_TEMPLE_MQ_WONDER_CHEST_HAMMER)
|
||||
RANDO_ENUM_ITEM(RAND_INF_SPIRIT_TEMPLE_MQ_WONDER_CHEST_SLASH)
|
||||
RANDO_ENUM_ITEM(RAND_INF_SHADOW_TEMPLE_MQ_WONDER_THREE_POTS)
|
||||
RANDO_ENUM_ITEM(RAND_INF_BOTTOM_OF_THE_WELL_MQ_WONDER_MAIN_ROOM_LEFT_1)
|
||||
RANDO_ENUM_ITEM(RAND_INF_BOTTOM_OF_THE_WELL_MQ_WONDER_MAIN_ROOM_LEFT_2)
|
||||
RANDO_ENUM_ITEM(RAND_INF_BOTTOM_OF_THE_WELL_MQ_WONDER_MAIN_ROOM_LEFT_3)
|
||||
RANDO_ENUM_ITEM(RAND_INF_BOTTOM_OF_THE_WELL_MQ_WONDER_MAIN_ROOM_LEFT_4)
|
||||
RANDO_ENUM_ITEM(RAND_INF_BOTTOM_OF_THE_WELL_MQ_WONDER_MAIN_ROOM_RIGHT_1)
|
||||
RANDO_ENUM_ITEM(RAND_INF_BOTTOM_OF_THE_WELL_MQ_WONDER_MAIN_ROOM_RIGHT_2)
|
||||
RANDO_ENUM_ITEM(RAND_INF_BOTTOM_OF_THE_WELL_MQ_WONDER_MAIN_ROOM_RIGHT_3)
|
||||
RANDO_ENUM_ITEM(RAND_INF_BOTTOM_OF_THE_WELL_MQ_WONDER_MAIN_ROOM_RIGHT_4)
|
||||
RANDO_ENUM_ITEM(RAND_INF_BOTTOM_OF_THE_WELL_MQ_WONDER_SIDE_ROOM_1)
|
||||
RANDO_ENUM_ITEM(RAND_INF_BOTTOM_OF_THE_WELL_MQ_WONDER_SIDE_ROOM_2)
|
||||
RANDO_ENUM_ITEM(RAND_INF_BOTTOM_OF_THE_WELL_MQ_WONDER_SIDE_ROOM_3)
|
||||
RANDO_ENUM_ITEM(RAND_INF_BOTTOM_OF_THE_WELL_MQ_WONDER_SIDE_ROOM_4)
|
||||
RANDO_ENUM_ITEM(RAND_INF_GERUDO_TRAINING_GROUND_MQ_WONDER_DINOLFOS_ROOM)
|
||||
RANDO_ENUM_ITEM(RAND_INF_GERUDO_TRAINING_GROUND_MQ_WONDER_EYE_STATUE)
|
||||
RANDO_ENUM_ITEM(RAND_INF_GANONS_CASTLE_MQ_WONDER_SHADOW_TRIAL)
|
||||
// End Wonder Items
|
||||
|
||||
RANDO_ENUM_ITEM(RAND_INF_SFM_FAIRY_GROTTO_FAIRY_1)
|
||||
RANDO_ENUM_ITEM(RAND_INF_SFM_FAIRY_GROTTO_FAIRY_2)
|
||||
RANDO_ENUM_ITEM(RAND_INF_SFM_FAIRY_GROTTO_FAIRY_3)
|
||||
|
|
|
|||
|
|
@ -119,6 +119,7 @@ RANDO_ENUM_ITEM(RCTYPE_SMALL_CRATE) // Small crates
|
|||
RANDO_ENUM_ITEM(RCTYPE_TREE) // Trees
|
||||
RANDO_ENUM_ITEM(RCTYPE_NLTREE) // NL Trees
|
||||
RANDO_ENUM_ITEM(RCTYPE_BUSH) // Bushes
|
||||
RANDO_ENUM_ITEM(RCTYPE_WONDER_ITEM) // Wonder Items
|
||||
RANDO_ENUM_ITEM(RCTYPE_DUNGEON_REWARD) // Dungeon rewards (blue warps)
|
||||
RANDO_ENUM_ITEM(RCTYPE_OCARINA) // Ocarina locations
|
||||
RANDO_ENUM_ITEM(RCTYPE_BEEHIVE) // Beehives
|
||||
|
|
|
|||
|
|
@ -365,6 +365,14 @@ RANDO_ENUM_ITEM(RO_SHUFFLE_FREESTANDING_OVERWORLD)
|
|||
RANDO_ENUM_ITEM(RO_SHUFFLE_FREESTANDING_ALL)
|
||||
RANDO_ENUM_END(RandoOptionFreestanding)
|
||||
|
||||
// Wonder Items settings (off, dungeons, overworld, all)
|
||||
RANDO_ENUM_BEGIN(RandoOptionWonderItems)
|
||||
RANDO_ENUM_ITEM(RO_SHUFFLE_WONDER_ITEMS_OFF)
|
||||
RANDO_ENUM_ITEM(RO_SHUFFLE_WONDER_ITEMS_DUNGEONS)
|
||||
RANDO_ENUM_ITEM(RO_SHUFFLE_WONDER_ITEMS_OVERWORLD)
|
||||
RANDO_ENUM_ITEM(RO_SHUFFLE_WONDER_ITEMS_ALL)
|
||||
RANDO_ENUM_END(RandoOptionWonderItems)
|
||||
|
||||
// Shuffle Pots settings (off, dungeons, overworld, all)
|
||||
RANDO_ENUM_BEGIN(RandoOptionShufflePots)
|
||||
RANDO_ENUM_ITEM(RO_SHUFFLE_POTS_OFF)
|
||||
|
|
|
|||
|
|
@ -114,7 +114,8 @@ RANDO_ENUM_ITEM(RR_TH_KITCHEN_MAIN)
|
|||
RANDO_ENUM_ITEM(RR_TH_KITCHEN_BY_CORRIDOR)
|
||||
RANDO_ENUM_ITEM(RR_TH_KITCHEN_OPPOSITE_CORRIDOR)
|
||||
RANDO_ENUM_ITEM(RR_TH_BREAK_ROOM)
|
||||
RANDO_ENUM_ITEM(RR_TH_BREAK_ROOM_CORRIDOR)
|
||||
RANDO_ENUM_ITEM(RR_TH_BREAK_ROOM_LOWER_CORRIDOR)
|
||||
RANDO_ENUM_ITEM(RR_TH_BREAK_ROOM_UPPER_CORRIDOR)
|
||||
RANDO_ENUM_ITEM(RR_WASTELAND_NEAR_FORTRESS)
|
||||
RANDO_ENUM_ITEM(RR_HAUNTED_WASTELAND)
|
||||
RANDO_ENUM_ITEM(RR_WASTELAND_NEAR_COLOSSUS)
|
||||
|
|
@ -710,7 +711,8 @@ RANDO_ENUM_ITEM(RR_WATER_TEMPLE_MQ_SCARECROW_CANAL)
|
|||
RANDO_ENUM_ITEM(RR_WATER_TEMPLE_MQ_CANAL_ALCOVE)
|
||||
RANDO_ENUM_ITEM(RR_WATER_TEMPLE_MQ_BEHIND_CANAL)
|
||||
RANDO_ENUM_ITEM(RR_WATER_TEMPLE_MQ_FREESTANDING_ROOM)
|
||||
RANDO_ENUM_ITEM(RR_WATER_TEMPLE_MQ_3_JETS_ROOM)
|
||||
RANDO_ENUM_ITEM(RR_WATER_TEMPLE_MQ_3_JETS_ROOM_SWITCH_SIDE)
|
||||
RANDO_ENUM_ITEM(RR_WATER_TEMPLE_MQ_3_JETS_ROOM_NO_SWITCH_SIDE)
|
||||
RANDO_ENUM_ITEM(RR_WATER_TEMPLE_MQ_DODONGO_ROOM)
|
||||
RANDO_ENUM_ITEM(RR_WATER_TEMPLE_MQ_CRATE_VORTEX_CAGE)
|
||||
|
||||
|
|
|
|||
|
|
@ -237,6 +237,7 @@ RANDO_ENUM_ITEM(RSK_SKELETON_KEY)
|
|||
RANDO_ENUM_ITEM(RSK_SHUFFLE_DEKU_STICK_BAG)
|
||||
RANDO_ENUM_ITEM(RSK_SHUFFLE_DEKU_NUT_BAG)
|
||||
RANDO_ENUM_ITEM(RSK_SHUFFLE_FREESTANDING)
|
||||
RANDO_ENUM_ITEM(RSK_SHUFFLE_WONDER_ITEMS)
|
||||
RANDO_ENUM_ITEM(RSK_SHUFFLE_FOUNTAIN_FAIRIES)
|
||||
RANDO_ENUM_ITEM(RSK_SHUFFLE_STONE_FAIRIES)
|
||||
RANDO_ENUM_ITEM(RSK_SHUFFLE_BEAN_FAIRIES)
|
||||
|
|
|
|||
|
|
@ -199,6 +199,8 @@ void RandomizerCheckObjects::UpdateImGuiVisibility() {
|
|||
CVarGetInteger(CVAR_RANDOMIZER_SETTING("ShuffleTrees"), RO_GENERIC_NO)) &&
|
||||
(location.GetRCType() != RCTYPE_SIGN ||
|
||||
CVarGetInteger(CVAR_RANDOMIZER_SETTING("ShuffleSigns"), RO_GENERIC_NO)) &&
|
||||
(location.GetRCType() != RCTYPE_WONDER_ITEM ||
|
||||
CVarGetInteger(CVAR_RANDOMIZER_SETTING("ShuffleWonderItems"), RO_GENERIC_NO)) &&
|
||||
(location.GetRCType() != RCTYPE_FISH ||
|
||||
ctx->GetFishsanity()->GetFishLocationIncluded(&location, FSO_SOURCE_CVARS)) &&
|
||||
(location.GetRCType() != RCTYPE_ADULT_TRADE ||
|
||||
|
|
|
|||
|
|
@ -81,6 +81,8 @@ bool showTrees;
|
|||
bool showBushes;
|
||||
bool showOverworldSigns;
|
||||
bool showDungeonSigns;
|
||||
bool showOverworldWonderItems;
|
||||
bool showDungeonWonderItems;
|
||||
bool showFrogSongRupees;
|
||||
bool showFountainFairies;
|
||||
bool showStoneFairies;
|
||||
|
|
@ -1491,6 +1493,25 @@ void LoadSettings() {
|
|||
}
|
||||
showTrees = OTRGlobals::Instance->gRandomizer->GetRandoSettingValue(RSK_SHUFFLE_TREES);
|
||||
showBushes = OTRGlobals::Instance->gRandomizer->GetRandoSettingValue(RSK_SHUFFLE_BUSHES);
|
||||
|
||||
switch (OTRGlobals::Instance->gRandomizer->GetRandoSettingValue(RSK_SHUFFLE_WONDER_ITEMS)) {
|
||||
case RO_SHUFFLE_WONDER_ITEMS_ALL:
|
||||
showOverworldWonderItems = true;
|
||||
showDungeonWonderItems = true;
|
||||
break;
|
||||
case RO_SHUFFLE_WONDER_ITEMS_OVERWORLD:
|
||||
showOverworldWonderItems = true;
|
||||
showDungeonWonderItems = false;
|
||||
break;
|
||||
case RO_SHUFFLE_WONDER_ITEMS_DUNGEONS:
|
||||
showOverworldWonderItems = false;
|
||||
showDungeonWonderItems = true;
|
||||
break;
|
||||
default:
|
||||
showOverworldWonderItems = false;
|
||||
showDungeonWonderItems = false;
|
||||
break;
|
||||
}
|
||||
} else { // Vanilla
|
||||
showOverworldTokens = true;
|
||||
showDungeonTokens = true;
|
||||
|
|
@ -1504,6 +1525,8 @@ void LoadSettings() {
|
|||
showDungeonSigns = false;
|
||||
showTrees = false;
|
||||
showBushes = false;
|
||||
showOverworldWonderItems = false;
|
||||
showDungeonWonderItems = false;
|
||||
}
|
||||
|
||||
fortressFast = false;
|
||||
|
|
@ -1624,6 +1647,9 @@ bool IsCheckShuffled(RandomizerCheck rc) {
|
|||
(loc->GetRCType() != RCTYPE_SIGN ||
|
||||
(showOverworldSigns && RandomizerCheckObjects::AreaIsOverworld(loc->GetArea())) ||
|
||||
(showDungeonSigns && RandomizerCheckObjects::AreaIsDungeon(loc->GetArea()))) &&
|
||||
(loc->GetRCType() != RCTYPE_WONDER_ITEM ||
|
||||
(showOverworldWonderItems && RandomizerCheckObjects::AreaIsOverworld(loc->GetArea())) ||
|
||||
(showDungeonWonderItems && RandomizerCheckObjects::AreaIsDungeon(loc->GetArea()))) &&
|
||||
(loc->GetRCType() != RCTYPE_FISH ||
|
||||
OTRGlobals::Instance->gRandoContext->GetFishsanity()->GetFishLocationIncluded(loc)) &&
|
||||
(loc->GetRCType() != RCTYPE_FREESTANDING ||
|
||||
|
|
|
|||
|
|
@ -1039,6 +1039,7 @@ void Settings::CreateOptions() {
|
|||
}
|
||||
});
|
||||
OPT_U8(RSK_SHUFFLE_FREESTANDING, "Shuffle Freestanding Items", {"Off", "Dungeons", "Overworld", "All Items"}, OptionCategory::Setting, CVAR_RANDOMIZER_SETTING("ShuffleFreestanding"), mOptionDescriptions[RSK_SHUFFLE_FREESTANDING], WIDGET_CVAR_COMBOBOX, RO_SHUFFLE_FREESTANDING_OFF);
|
||||
OPT_U8(RSK_SHUFFLE_WONDER_ITEMS, "Shuffle Wonder Items", {"Off", "Dungeons", "Overworld", "All Items"}, OptionCategory::Setting, CVAR_RANDOMIZER_SETTING("ShuffleWonderItems"), mOptionDescriptions[RSK_SHUFFLE_WONDER_ITEMS], WIDGET_CVAR_COMBOBOX, RO_SHUFFLE_WONDER_ITEMS_OFF);
|
||||
OPT_U8(RSK_FISHSANITY, "Fishsanity", {"Off", "Shuffle only Hyrule Loach", "Shuffle Fishing Pond", "Shuffle Overworld Fish", "Shuffle Both"}, OptionCategory::Setting, CVAR_RANDOMIZER_SETTING("Fishsanity"), mOptionDescriptions[RSK_FISHSANITY], WIDGET_CVAR_COMBOBOX, RO_FISHSANITY_OFF);
|
||||
OPT_CALLBACK(RSK_FISHSANITY, {
|
||||
// Hide fishing pond settings if we aren't shuffling the fishing pond
|
||||
|
|
@ -1850,6 +1851,7 @@ void Settings::CreateOptions() {
|
|||
&mOptions[RSK_FISHSANITY_POND_COUNT],
|
||||
&mOptions[RSK_FISHSANITY_AGE_SPLIT],
|
||||
&mOptions[RSK_SHUFFLE_FREESTANDING],
|
||||
&mOptions[RSK_SHUFFLE_WONDER_ITEMS],
|
||||
&mOptions[RSK_SHUFFLE_BEEHIVES],
|
||||
&mOptions[RSK_SHUFFLE_COWS],
|
||||
&mOptions[RSK_SHUFFLE_POTS],
|
||||
|
|
@ -2172,6 +2174,7 @@ void Settings::CreateOptions() {
|
|||
&mOptions[RSK_SHUFFLE_DEKU_STICK_BAG],
|
||||
&mOptions[RSK_SHUFFLE_DEKU_NUT_BAG],
|
||||
&mOptions[RSK_SHUFFLE_FREESTANDING],
|
||||
&mOptions[RSK_SHUFFLE_WONDER_ITEMS],
|
||||
&mOptions[RSK_SHUFFLE_FOUNTAIN_FAIRIES],
|
||||
&mOptions[RSK_SHUFFLE_STONE_FAIRIES],
|
||||
&mOptions[RSK_SHUFFLE_BEAN_FAIRIES],
|
||||
|
|
|
|||
|
|
@ -63,6 +63,7 @@ class StaticData {
|
|||
static void RegisterCrateLocations();
|
||||
static void RegisterTreeLocations();
|
||||
static void RegisterSignLocations();
|
||||
static void RegisterWonderItemLocations();
|
||||
static void InitHashMaps();
|
||||
static std::array<std::pair<RandomizerCheck, RandomizerCheck>, 17> randomizerFishingPondFish;
|
||||
static std::unordered_map<int8_t, RandomizerCheck> randomizerGrottoFishMap;
|
||||
|
|
|
|||
|
|
@ -8,6 +8,7 @@
|
|||
#include "objects/object_sd/object_sd.h"
|
||||
#include "vt.h"
|
||||
#include "soh/ResourceManagerHelpers.h"
|
||||
#include "soh/Enhancements/game-interactor/GameInteractor_Hooks.h"
|
||||
|
||||
#define FLAGS ACTOR_FLAG_UPDATE_CULLING_DISABLED
|
||||
|
||||
|
|
@ -124,15 +125,21 @@ void EnHeishi1_Init(Actor* thisx, PlayState* play) {
|
|||
(Flags_GetEventChkInf(EVENTCHKINF_LEARNED_ZELDAS_LULLABY));
|
||||
|
||||
if (this->type != 5) {
|
||||
if ((gSaveContext.dayTime < 0xB888 || IS_DAY) &&
|
||||
((!IS_RANDO && !Flags_GetEventChkInf(EVENTCHKINF_ZELDA_FLED_HYRULE_CASTLE)) || (IS_RANDO && !metZelda))) {
|
||||
if (GameInteractor_Should(VB_WONDER_HEISHI_PATROLLING,
|
||||
(gSaveContext.dayTime < 0xB888 || IS_DAY) &&
|
||||
((!IS_RANDO && !Flags_GetEventChkInf(EVENTCHKINF_ZELDA_FLED_HYRULE_CASTLE)) ||
|
||||
(IS_RANDO && !metZelda)),
|
||||
this)) {
|
||||
this->actionFunc = EnHeishi1_SetupWalk;
|
||||
} else {
|
||||
Actor_Kill(&this->actor);
|
||||
}
|
||||
} else {
|
||||
if ((gSaveContext.dayTime >= 0xB889) || !IS_DAY ||
|
||||
(!IS_RANDO && Flags_GetEventChkInf(EVENTCHKINF_ZELDA_FLED_HYRULE_CASTLE)) || (IS_RANDO && metZelda)) {
|
||||
if (GameInteractor_Should(VB_WONDER_HEISHI_PATROLLING,
|
||||
(gSaveContext.dayTime >= 0xB889) || !IS_DAY ||
|
||||
(!IS_RANDO && Flags_GetEventChkInf(EVENTCHKINF_ZELDA_FLED_HYRULE_CASTLE)) ||
|
||||
(IS_RANDO && metZelda),
|
||||
this)) {
|
||||
this->actionFunc = EnHeishi1_SetupWaitNight;
|
||||
} else {
|
||||
Actor_Kill(&this->actor);
|
||||
|
|
|
|||
|
|
@ -679,10 +679,12 @@ void func_80A5455C(EnHeishi2* this, PlayState* play) {
|
|||
pos.y = Rand_CenteredFloat(20.0f) + (this->unk_274.y - 40.0f);
|
||||
pos.z = Rand_CenteredFloat(20.0f) + (this->unk_274.z - 20.0f);
|
||||
rotY = Rand_CenteredFloat(7000.0f) + this->actor.yawTowardsPlayer;
|
||||
bomb = (EnBom*)Actor_Spawn(&play->actorCtx, play, ACTOR_EN_BOM, pos.x, pos.y, pos.z, 0, rotY, 0, 0);
|
||||
if (bomb != NULL) {
|
||||
bomb->actor.speedXZ = Rand_CenteredFloat(5.0f) + 10.0f;
|
||||
bomb->actor.velocity.y = Rand_CenteredFloat(5.0f) + 10.0f;
|
||||
if (GameInteractor_Should(VB_WONDER_HEISHI_ITEM, true, &pos, rotY)) {
|
||||
bomb = (EnBom*)Actor_Spawn(&play->actorCtx, play, ACTOR_EN_BOM, pos.x, pos.y, pos.z, 0, rotY, 0, 0);
|
||||
if (bomb != NULL) {
|
||||
bomb->actor.speedXZ = Rand_CenteredFloat(5.0f) + 10.0f;
|
||||
bomb->actor.velocity.y = Rand_CenteredFloat(5.0f) + 10.0f;
|
||||
}
|
||||
}
|
||||
|
||||
// "This is down!"
|
||||
|
|
|
|||
|
|
@ -6,6 +6,7 @@
|
|||
|
||||
#include "z_en_wonder_item.h"
|
||||
#include "vt.h"
|
||||
#include "soh/Enhancements/game-interactor/GameInteractor_Hooks.h"
|
||||
|
||||
#define FLAGS 0
|
||||
|
||||
|
|
@ -54,8 +55,8 @@ const ActorInit En_Wonder_Item_InitVars = {
|
|||
NULL,
|
||||
};
|
||||
|
||||
static Vec3f sTagPointsFree[9];
|
||||
static Vec3f sTagPointsOrdered[9];
|
||||
Vec3f sTagPointsFree[9]; // SOH [Randomizer] remove static to use in ShuffleWonderItems
|
||||
Vec3f sTagPointsOrdered[9]; // SOH [Randomizer] remove static to use in ShuffleWonderItems
|
||||
|
||||
void EnWonderItem_Destroy(Actor* thisx, PlayState* play) {
|
||||
s32 pad;
|
||||
|
|
@ -75,24 +76,26 @@ void EnWonderItem_DropCollectible(EnWonderItem* this, PlayState* play, s32 autoC
|
|||
s32 i;
|
||||
s32 randomDrop;
|
||||
|
||||
Sfx_PlaySfxCentered(NA_SE_SY_GET_ITEM);
|
||||
if (GameInteractor_Should(VB_WONDER_DROP_ITEM, true, this)) {
|
||||
Sfx_PlaySfxCentered(NA_SE_SY_GET_ITEM);
|
||||
|
||||
if (this->dropCount == 0) {
|
||||
this->dropCount++;
|
||||
}
|
||||
for (i = this->dropCount; i > 0; i--) {
|
||||
if (this->itemDrop < WONDERITEM_DROP_RANDOM) {
|
||||
if ((this->itemDrop == WONDERITEM_DROP_FLEXIBLE) || !autoCollect) {
|
||||
Item_DropCollectible(play, &this->actor.world.pos, dropTable[this->itemDrop]);
|
||||
if (this->dropCount == 0) {
|
||||
this->dropCount++;
|
||||
}
|
||||
for (i = this->dropCount; i > 0; i--) {
|
||||
if (this->itemDrop < WONDERITEM_DROP_RANDOM) {
|
||||
if ((this->itemDrop == WONDERITEM_DROP_FLEXIBLE) || !autoCollect) {
|
||||
Item_DropCollectible(play, &this->actor.world.pos, dropTable[this->itemDrop]);
|
||||
} else {
|
||||
Item_DropCollectible(play, &this->actor.world.pos, dropTable[this->itemDrop] | 0x8000);
|
||||
}
|
||||
} else {
|
||||
Item_DropCollectible(play, &this->actor.world.pos, dropTable[this->itemDrop] | 0x8000);
|
||||
}
|
||||
} else {
|
||||
randomDrop = this->itemDrop - WONDERITEM_DROP_RANDOM;
|
||||
if (!autoCollect) {
|
||||
Item_DropCollectibleRandom(play, NULL, &this->actor.world.pos, randomDrop);
|
||||
} else {
|
||||
Item_DropCollectibleRandom(play, NULL, &this->actor.world.pos, randomDrop | 0x8000);
|
||||
randomDrop = this->itemDrop - WONDERITEM_DROP_RANDOM;
|
||||
if (!autoCollect) {
|
||||
Item_DropCollectibleRandom(play, NULL, &this->actor.world.pos, randomDrop);
|
||||
} else {
|
||||
Item_DropCollectibleRandom(play, NULL, &this->actor.world.pos, randomDrop | 0x8000);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -104,9 +107,10 @@ void EnWonderItem_DropCollectible(EnWonderItem* this, PlayState* play, s32 autoC
|
|||
|
||||
void EnWonderItem_Init(Actor* thisx, PlayState* play) {
|
||||
static u32 collisionTypes[] = {
|
||||
0x00000702 /* sword slash */, 0x0001F820 /* arrow */, 0x00000040 /* hammer */, 0x00000008 /* bomb */,
|
||||
0x00000004 /* slingshot */, 0x00000010 /* boomerang */, 0x00000080 /* hookshot */,
|
||||
};
|
||||
0x00000702 /* sword slash */, 0x0001F820 /* arrow */, 0x00000040 /* hammer */,
|
||||
0x00000008 /* bomb */, 0x00000004 /* slingshot */, 0x00000010 /* boomerang */,
|
||||
0x00000080 /* hookshot */, 0x0001F820 | 0x00000080 /* arrow or hookshot */
|
||||
}; // SOH [Port] add final array entry to avoid OOB behavior on Water MQ Torches room wonder item
|
||||
s32 pad;
|
||||
s16 colTypeIndex;
|
||||
EnWonderItem* this = (EnWonderItem*)thisx;
|
||||
|
|
@ -125,7 +129,7 @@ void EnWonderItem_Init(Actor* thisx, PlayState* play) {
|
|||
this->switchFlag = -1;
|
||||
}
|
||||
this->actor.targetMode = 1;
|
||||
if ((this->switchFlag >= 0) && Flags_GetSwitch(play, this->switchFlag)) {
|
||||
if (GameInteractor_Should(VB_WONDER_SPAWN, (this->switchFlag >= 0) && Flags_GetSwitch(play, this->switchFlag))) {
|
||||
osSyncPrintf(VT_FGCOL(GREEN) "☆☆☆☆☆ You are Shock! ☆☆☆☆☆ %d\n" VT_RST, this->switchFlag);
|
||||
Actor_Kill(&this->actor);
|
||||
return;
|
||||
|
|
@ -312,7 +316,7 @@ void EnWonderItem_BombSoldier(EnWonderItem* this, PlayState* play) {
|
|||
// "Careless soldier spawned"
|
||||
osSyncPrintf(VT_FGCOL(YELLOW) "☆☆☆☆☆ うっかり兵セット完了 ☆☆☆☆☆ \n" VT_RST);
|
||||
}
|
||||
if (this->switchFlag >= 0) {
|
||||
if (GameInteractor_Should(VB_WONDER_DROP_ITEM, this->switchFlag >= 0, this)) {
|
||||
Flags_SetSwitch(play, this->switchFlag);
|
||||
}
|
||||
Actor_Kill(&this->actor);
|
||||
|
|
|
|||
Loading…
Reference in a new issue